ngx-render-material-forms 2.1.1 → 2.1.2

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.
@@ -454,13 +454,6 @@ export class AddOnProductsComponent {
454
454
  const levelTwoId = this.levelTwoId ? this.levelTwoId : 0;
455
455
  const levelThreeId = this.levelThreeId ? this.levelThreeId : 0;
456
456
  const levelFourId = this.levelFourId ? this.levelFourId : 0;
457
- console.log('pageNumber=>', this.pageNumber);
458
- console.log('pageSize=>', this.pageSize);
459
- console.log('levelOneId=>', levelOneId);
460
- console.log('levelTwoId=>', levelTwoId);
461
- console.log('levelThreeId=>', levelThreeId);
462
- console.log('levelFourId=>', levelFourId);
463
- debugger;
464
457
  this.commonSevice.loadProducts(this.pageNumber, this.pageSize, search, true, false, levelOneId, levelTwoId, levelThreeId, levelFourId).subscribe(response => {
465
458
  this.spinnerFlag = false;
466
459
  if (response && response.code === 200) {
@@ -659,4 +652,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
659
652
  type: ViewChild,
660
653
  args: ['firstscrollableDiv']
661
654
  }] } });
662
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW9uLXByb2R1Y3RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZW5kZXItbWF0ZXJpYWwtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1vbi1wcm9kdWN0cy9hZGQtb24tcHJvZHVjdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlbmRlci1tYXRlcmlhbC1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvYWRkLW9uLXByb2R1Y3RzL2FkZC1vbi1wcm9kdWN0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFpQixTQUFTLEVBQWMsTUFBTSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQWUsU0FBUyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQTJCLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUVuRyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBOEJqRixNQUFNLE9BQU8sc0JBQXNCO0lBNkRqQyxZQUNTLFlBQWtELEVBQ2hDLElBQVMsRUFDMUIsRUFBZSxFQUNmLE1BQWlCLEVBQ2pCLFlBQTJCO1FBSjVCLGlCQUFZLEdBQVosWUFBWSxDQUFzQztR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QUFDOzZCQUN6QixDQUFDO3lCQUNILENBQUM7cUJBQ0g7OzBCQWlFRSxNQUFNOzJCQUFDLGVBQWU7MEhBNUJRLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQXJyYXksIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3Qge1xyXG4gIHByb2R1Y3ROYW1lOiBzdHJpbmc7XHJcbiAgcHJvZHVjdERlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgcXVhbnRpdHk6IGFueSxcclxuICBwcmljZTogYW55LFxyXG4gIHRleHQ6IGFueSxcclxuICBpZDogYW55LFxyXG4gIHZhbHVlOiBhbnksXHJcbiAgc2t1TnVtYmVyOiBhbnlcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtbWF0LWFkZC1vbi1wcm9kdWN0cycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1vbi1wcm9kdWN0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWRkLW9uLXByb2R1Y3RzLmNvbXBvbmVudC5jc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdzbGlkZURvd24nLCBbXHJcbiAgICAgIHN0YXRlKCdoaWRkZW4nLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG9wYWNpdHk6IDAsIG92ZXJmbG93OiAnaGlkZGVuJyB9KSksXHJcbiAgICAgIHN0YXRlKCd2aXNpYmxlJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3BhY2l0eTogMSB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2hpZGRlbiA9PiB2aXNpYmxlJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0JylcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3Zpc2libGUgPT4gaGlkZGVuJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nKVxyXG4gICAgICBdKVxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRPblByb2R1Y3RzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgZHJvcGRvd25PbmU6IHN0cmluZ1tdID0gW107XHJcbiAgZHJvcGRvd25Ud286IHN0cmluZ1tdID0gW107XHJcbiAgZHJvcGRvd25UaHJlZTogc3RyaW5nW10gPSBbXTtcclxuICBkcm9wZG93bkZvdXI6IHN0cmluZ1tdID0gW107XHJcbiAgZmlsdGVyZWREcm9wZG93bk9uZTogc3RyaW5nW10gPSBbXTtcclxuICBmaWx0ZXJlZERyb3Bkb3duVHdvOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbHRlcmVkRHJvcGRvd25UaHJlZTogc3RyaW5nW10gPSBbXTtcclxuICBmaWx0ZXJlZERyb3Bkb3duRm91cjogc3RyaW5nW10gPSBbXTtcclxuICBhZGRQcm9kdWN0c0NvbHVtbnM6IHN0cmluZ1tdID0gWydzZWxlY3QnLCAncHJvZHVjdE5hbWUnLCAnc2t1TnVtYmVyJ107XHJcbiAgc2hvd0FsbHByb2R1Y3RzQ29sdW1uczogc3RyaW5nW10gPSBbJ2RlbGV0ZScsICdwcm9kdWN0TmFtZScsICdjYXRlZ29yeU5hbWUnLCAnc3ViQ2F0ZWdvcnknLCAnUXVhbnRpdHknLCAncHJpY2UnLCAnc2t1TnVtYmVyJ107XHJcbiAgcXVhbnRpdHlMaXN0OiBudW1iZXJbXSA9IFs1LCAxMCwgMTUsIDIwLCAyNV07XHJcbiAgRUxFTUVOVF9EQVRBOiBQcm9kdWN0W10gPSBbXTtcclxuICBkYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxQcm9kdWN0PigpO1xyXG4gIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRydWUsIFtdKTtcclxuICBzZWxlY3RlZERhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPFByb2R1Y3Q+KFtdKTtcclxuICBzZWxlY3RlZENhdGVnb3J5OiBhbnkgPSBudWxsO1xyXG4gIHNlbGVjdGVkU3ViQ2F0ZWdvcnk6IGFueSA9IG51bGw7XHJcbiAgc2hvd0NhdGVnb3J5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd1N1YmNhdGVnb3J5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd1ByaWNlOiBib29sZWFuID0gdHJ1ZTtcclxuICBzaG93UXVhbnRpdHk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHNob3dTa3VOdW1iZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93TmV3UHJvZHVjdFBpY2tlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgc2V0Q2F0ZWdvcnk6IHN0cmluZyA9ICcnO1xyXG4gIHNldFN1YkNhdGVnb3J5OiBzdHJpbmcgPSAnJztcclxuICBsb2FkaW5nRmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBhZ2VOdW1iZXIgPSAxO1xyXG4gIHBhZ2VTaXplID0gMjA7XHJcbiAgdG90YWxQYWdlcyA9IDA7XHJcbiAgc2VhcmNoUXVlcnkgPSAnJztcclxuICBpdGVtTGlzdDogYW55W10gPSBbXTtcclxuICB0cmFja0hlaWdodDogYW55O1xyXG4gIHByZXZTY3JvbGxQb3NpdGlvbiA9IDA7IC8vIFRyYWNrIHRoZSBwcmV2aW91cyBzY3JvbGwgcG9zaXRpb25cclxuICBAVmlld0NoaWxkKCdmaXJzdHNjcm9sbGFibGVEaXYnKSBmaXJzdHNjcm9sbGFibGVEaXY6IEVsZW1lbnRSZWY7XHJcbiAgc3Bpbm5lckZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkcm9wZG93bkwxOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHJvcGRvd25MMjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRyb3Bkb3duTDM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkcm9wZG93bkw0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHJvcGRvd25MMUxhYmVsOiBzdHJpbmcgPSAnJztcclxuICBkcm9wZG93bkwyTGFiZWw6IHN0cmluZyA9ICcnO1xyXG4gIGRyb3Bkb3duTDNMYWJlbDogc3RyaW5nID0gJyc7XHJcbiAgZHJvcGRvd25MNExhYmVsOiBzdHJpbmcgPSAnJztcclxuICBkcm9wRG93bkNvdW50OiBudW1iZXIgPSAwO1xyXG4gIGxldmVsT25lSWQ6IGFueSA9ICcnO1xyXG4gIGxldmVsVHdvSWQ6IGFueSA9ICcnO1xyXG4gIGxldmVsVGhyZWVJZDogYW55ID0gJyc7XHJcbiAgbGV2ZWxGb3VySWQ6IGFueSA9ICcnO1xyXG4gIGRpc2FibGVQcmljZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgY2hlY2tTdWJtaXNzaW9uU3RhdHVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVudFBhZ2U6IHN0cmluZyA9ICdzZWxlY3QtcHJvZHVjdHMnO1xyXG4gIGlzVmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNEaXNhYmxlZDI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGlzRGlzYWJsZWQzOiBib29sZWFuID0gdHJ1ZTtcclxuICBpc0Rpc2FibGVkNDogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNQcmljZURpc2FibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGFjdGl2ZUZpbHRlcnNDb3VudDogbnVtYmVyID0gMDtcclxuICBlbXB0eUltYWdlOiBzdHJpbmcgPSAnL2kvdGFibGUtZ3JpZC1lbXB0eS1zdGF0ZS5zdmcnO1xyXG4gIGdldFRvdGFsUmVjb3JkczogbnVtYmVyID0gMDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBtYXREaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxBZGRPblByb2R1Y3RzQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBkYXRhOiBhbnksXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGNvbW1vblNldmljZTogQ29tbW9uU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5zaG93Q2F0ZWdvcnkgPSBkYXRhLmRyb3Bkb3duc0ZsYWcuc2hvd0RpYWxvZ0NhdGVnb3J5O1xyXG4gICAgdGhpcy5zaG93U3ViY2F0ZWdvcnkgPSBkYXRhLmRyb3Bkb3duc0ZsYWcuc2hvd0RpYWxvZ1N1YkNhdGVnb3J5O1xyXG4gICAgdGhpcy5zaG93UHJpY2UgPSBkYXRhLmRyb3Bkb3duc0ZsYWcuc2hvd0RpYWxvZ1ByaWNlO1xyXG4gICAgdGhpcy5zaG93UXVhbnRpdHkgPSBkYXRhLmRyb3Bkb3duc0ZsYWcuc2hvd0RpYWxvZ1F1YW50aXR5O1xyXG4gICAgdGhpcy5zaG93U2t1TnVtYmVyID0gZGF0YS5kcm9wZG93bnNGbGFnLnNob3dEaWFsb2dTa3VOdW1iZXI7XHJcbiAgICB0aGlzLnNob3dOZXdQcm9kdWN0UGlja2VyID0gZGF0YS5kcm9wZG93bnNGbGFnLnNob3dOZXdQcm9kdWN0UGlja2VyO1xyXG4gICAgdGhpcy5kcm9wZG93bkwxID0gZGF0YS5kcm9wZG93bnNGbGFnLmRyb3Bkb3duTDE7XHJcbiAgICB0aGlzLmRyb3Bkb3duTDIgPSBkYXRhLmRyb3Bkb3duc0ZsYWcuZHJvcGRvd25MMjtcclxuICAgIHRoaXMuZHJvcGRvd25MMyA9IGRhdGEuZHJvcGRvd25zRmxhZy5kcm9wZG93bkwzO1xyXG4gICAgdGhpcy5kcm9wZG93bkw0ID0gZGF0YS5kcm9wZG93bnNGbGFnLmRyb3Bkb3duTDQ7XHJcbiAgICB0aGlzLmRyb3Bkb3duTDFMYWJlbCA9IGRhdGEuZHJvcGRvd25zRmxhZy5kcm9wZG93bkwxTGFiZWw7XHJcbiAgICB0aGlzLmRyb3Bkb3duTDJMYWJlbCA9IGRhdGEuZHJvcGRvd25zRmxhZy5kcm9wZG93bkwyTGFiZWw7XHJcbiAgICB0aGlzLmRyb3Bkb3duTDNMYWJlbCA9IGRhdGEuZHJvcGRvd25zRmxhZy5kcm9wZG93bkwzTGFiZWw7XHJcbiAgICB0aGlzLmRyb3Bkb3duTDRMYWJlbCA9IGRhdGEuZHJvcGRvd25zRmxhZy5kcm9wZG93bkw0TGFiZWw7XHJcbiAgICB0aGlzLmNoZWNrU3VibWlzc2lvblN0YXR1cyA9IGRhdGEuZHJvcGRvd25zRmxhZy5jaGVja1N1Ym1pc3Npb25TdGF0dXM7XHJcbiAgICB0aGlzLmRyb3BEb3duQ291bnQgPSB0aGlzLmNvdW50VHJ1ZURyb3Bkb3ducyhkYXRhLmRyb3Bkb3duc0ZsYWcpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8UHJvZHVjdD4odHJ1ZSwgZGF0YS5zZWxlY3RlZFByb2R1Y3RzIHx8IFtdKTtcclxuICAgIHRoaXMuaXNQcmljZURpc2FibGUgPSBkYXRhLmRyb3Bkb3duc0ZsYWcucHJpY2VEaXNhYmxlO1xyXG4gICAgaWYgKCF0aGlzLnNob3dDYXRlZ29yeSkge1xyXG4gICAgICB0aGlzLnJlbW92ZUNvbHVtbignY2F0ZWdvcnlOYW1lJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc2hvd1ByaWNlKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQ29sdW1uKCdwcmljZScpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnNob3dTdWJjYXRlZ29yeSkge1xyXG4gICAgICB0aGlzLnJlbW92ZUNvbHVtbignc3ViQ2F0ZWdvcnknKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zaG93UXVhbnRpdHkpIHtcclxuICAgICAgdGhpcy5yZW1vdmVDb2x1bW4oJ1F1YW50aXR5Jyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc2hvd1NrdU51bWJlcikge1xyXG4gICAgICB0aGlzLnJlbW92ZUNvbHVtbignc2t1TnVtYmVyJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVDb2x1bW4oY29sdW1uTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNob3dBbGxwcm9kdWN0c0NvbHVtbnMgPSB0aGlzLnNob3dBbGxwcm9kdWN0c0NvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4gIT09IGNvbHVtbk5hbWUpO1xyXG4gICAgdGhpcy5hZGRQcm9kdWN0c0NvbHVtbnMgPSB0aGlzLmFkZFByb2R1Y3RzQ29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbiAhPT0gY29sdW1uTmFtZSk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplRm9ybUFycmF5KCkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRQcm9kdWN0c0FycmF5ID0gdGhpcy5mb3JtLmdldCgnc2VsZWN0ZWRQcm9kdWN0cycpIGFzIEZvcm1BcnJheTtcclxuICAgIGlmICghc2VsZWN0ZWRQcm9kdWN0c0FycmF5KSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ3NlbGVjdGVkUHJvZHVjdHMgRm9ybUFycmF5IG5vdCBpbml0aWFsaXplZC4nKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmZvckVhY2gocHJvZHVjdCA9PiB7XHJcbiAgICAgIHNlbGVjdGVkUHJvZHVjdHNBcnJheS5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgIHByaWNlOiBbcHJvZHVjdD8ucHJpY2UgfHwgJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIHRleHQ6IFtwcm9kdWN0Py50ZXh0IHx8ICcnXSxcclxuICAgICAgICBxdWFudGl0eTogW3Byb2R1Y3QucXVhbnRpdHkgfHwgJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGNhdGVnb3J5OiBbcHJvZHVjdD8uY2F0ZWdvcnkgfHwgJyddLFxyXG4gICAgICAgIHN1YkNhdGVnb3J5OiBbcHJvZHVjdD8uc3ViQ2F0ZWdvcnkgfHwgJyddLFxyXG4gICAgICAgIHZhbHVlOiBbcHJvZHVjdD8udmFsdWUgfHwgJyddLFxyXG4gICAgICAgIHNrdU51bWJlcjogW3Byb2R1Y3Q/LnNrdU51bWJlciB8fCAnJ11cclxuICAgICAgfSkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgc2VsZWN0ZWRQcm9kdWN0c0FycmF5LmNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XHJcbiAgICAgIHRoaXMuaXNQcmljZURpc2FibGUgPyBjb250cm9sLmdldCgncHJpY2UnKT8uZGlzYWJsZSgpIDogY29udHJvbC5nZXQoJ3ByaWNlJyk/LmVuYWJsZSgpO1xyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlLmRhdGEgPSBbLi4udGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRdO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZURhdGFTb3VyY2VzKCkge1xyXG4gICAgLy8gRGVidWdnaW5nIGxvZ3MgdG8gdHJhY2UgaXNzdWVzXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGlvbj8uc2VsZWN0ZWQpICYmIEFycmF5LmlzQXJyYXkodGhpcy5kYXRhU291cmNlPy5kYXRhKSAmJiB0aGlzLnNlbGVjdGlvbj8uc2VsZWN0ZWQ/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbj8uc2VsZWN0ZWQ/LmZvckVhY2goc2VsZWN0ZWRQcm9kdWN0ID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbmRJbmRleChwcm9kdWN0ID0+IHByb2R1Y3QudmFsdWUgPT09IHNlbGVjdGVkUHJvZHVjdC52YWx1ZSk7XHJcbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhW2luZGV4XSA9IHNlbGVjdGVkUHJvZHVjdDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZS5kYXRhID0gWy4uLnRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignTm8gc2VsZWN0ZWQgcHJvZHVjdHMgZm91bmQuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgZHJvcGRvd25MZXZlbDE6IFt7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IGZhbHNlIH1dLFxyXG4gICAgICBkcm9wZG93bkxldmVsMjogW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9XSxcclxuICAgICAgZHJvcGRvd25MZXZlbDM6IFt7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWUgfV0sXHJcbiAgICAgIGRyb3Bkb3duTGV2ZWw0OiBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH1dLFxyXG4gICAgICBzZWFyY2hQcm9kdWN0TmFtZTogWycnXSxcclxuICAgICAgc2VsZWN0ZWRQcm9kdWN0czogdGhpcy5mYi5hcnJheShbXSlcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pbml0aWFsaXplRm9ybUFycmF5KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZHJvcGRvd25MMSkge1xyXG4gICAgICB0aGlzLmxvYWREcm9wZG93bkwxKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtLmdldCgnZHJvcGRvd25MZXZlbDEnKS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3RhcnRXaXRoKCcnKSxcclxuICAgICAgICBtYXAodmFsdWUgPT5cclxuICAgICAgICAgIHRoaXMuZmlsdGVyUHJvZHVjdHModmFsdWUsICdjYXRlZ29yeTEnKSlcclxuICAgICAgKS5zdWJzY3JpYmUobDEgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWREcm9wZG93bk9uZSA9IGwxO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWwyJykudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN0YXJ0V2l0aCgnJyksXHJcbiAgICAgICAgbWFwKHZhbHVlID0+IHRoaXMuZmlsdGVyUHJvZHVjdHModmFsdWUsICdjYXRlZ29yeTInKSlcclxuICAgICAgKS5zdWJzY3JpYmUobDIgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWREcm9wZG93blR3byA9IGwyO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWwzJykudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN0YXJ0V2l0aCgnJyksXHJcbiAgICAgICAgbWFwKHZhbHVlID0+IHRoaXMuZmlsdGVyUHJvZHVjdHModmFsdWUsICdjYXRlZ29yeTMnKSlcclxuICAgICAgKS5zdWJzY3JpYmUobDMgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWREcm9wZG93blRocmVlID0gbDM7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnZHJvcGRvd25MZXZlbDQnKS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3RhcnRXaXRoKCcnKSxcclxuICAgICAgICBtYXAodmFsdWUgPT4gdGhpcy5maWx0ZXJQcm9kdWN0cyh2YWx1ZSwgJ2NhdGVnb3J5NCcpKVxyXG4gICAgICApLnN1YnNjcmliZShsNCA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZERyb3Bkb3duRm91ciA9IGw0O1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZURyb3Bkb3duRmlsdGVyKCkge1xyXG4gICAgY29uc3Qgc2VhcmNoUXVlcnkgPSB0aGlzLmZvcm0uY29udHJvbHMuc2VhcmNoUHJvZHVjdE5hbWU/LnZhbHVlPy50cmltKCk7IC8vIFRyaW0gdG8gcmVtb3ZlIGJsYW5rIHNwYWNlc1xyXG4gICAgY29uc3QgbGV2ZWxPbmVJZCA9IHRoaXMuZm9ybS5jb250cm9scy5kcm9wZG93bkxldmVsMT8udmFsdWU/LmlkO1xyXG4gICAgdGhpcy5sb2FkaW5nRmxhZyA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuZmlyc3RzY3JvbGxhYmxlRGl2KSB7XHJcbiAgICAgIHRoaXMuZmlyc3RzY3JvbGxhYmxlRGl2Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICAgIH1cclxuICAgIGlmICgoc2VhcmNoUXVlcnkgJiYgc2VhcmNoUXVlcnkgIT09ICcnKSB8fCAobGV2ZWxPbmVJZCAmJiBsZXZlbE9uZUlkICE9PSBudWxsICYmIGxldmVsT25lSWQgIT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgdGhpcy5zZWFyY2hRdWVyeSA9IHRoaXMuZm9ybS5jb250cm9scy5zZWFyY2hQcm9kdWN0TmFtZT8udmFsdWU7XHJcbiAgICAgIHRoaXMubGV2ZWxPbmVJZCA9IHRoaXMuZm9ybS5jb250cm9scy5kcm9wZG93bkxldmVsMS52YWx1ZT8uaWQ7XHJcbiAgICAgIHRoaXMubGV2ZWxUd29JZCA9IHRoaXMuZm9ybS5jb250cm9scy5kcm9wZG93bkxldmVsMi52YWx1ZT8uaWQ7XHJcbiAgICAgIHRoaXMubGV2ZWxUaHJlZUlkID0gdGhpcy5mb3JtLmNvbnRyb2xzLmRyb3Bkb3duTGV2ZWwzLnZhbHVlPy5pZDtcclxuICAgICAgdGhpcy5sZXZlbEZvdXJJZCA9IHRoaXMuZm9ybS5jb250cm9scy5kcm9wZG93bkxldmVsNC52YWx1ZT8uaWQ7XHJcbiAgICAgIHRoaXMucGFnZU51bWJlciA9IDE7XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSAyMDtcclxuICAgICAgdGhpcy5nZXRQcm9kdWN0cyhmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZUFjdGl2ZUZpbHRlcnNDb3VudCgpO1xyXG4gIH1cclxuXHJcbiAgbG9hZERyb3Bkb3duTDEoKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJGbGFnID0gdHJ1ZTtcclxuICAgIHRoaXMuY29tbW9uU2V2aWNlLnByb2R1Y3RMZXZlbE9uZSgpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lckZsYWcgPSBmYWxzZVxyXG4gICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5kcm9wZG93bk9uZSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZERyb3Bkb3duT25lID0gdGhpcy5maWx0ZXJQcm9kdWN0cygnJywgJ2NhdGVnb3J5MScpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWREcm9wZG93bkwyKGxldmVsT25lSWQ6IGFueSkge1xyXG4gICAgdGhpcy5zcGlubmVyRmxhZyA9IHRydWU7XHJcbiAgICB0aGlzLmNvbW1vblNldmljZS5wcm9kdWN0TGV2ZWxUd28obGV2ZWxPbmVJZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyRmxhZyA9IGZhbHNlXHJcbiAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5jb2RlID09PSAyMDApIHtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duVHdvID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25Ud28gPSB0aGlzLmZpbHRlclByb2R1Y3RzKCcnLCAnY2F0ZWdvcnkyJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZERyb3Bkb3duTDMobGV2ZWxPbmVJZDogYW55LCBsZXZlbFR3b0lkOiBhbnkpIHtcclxuICAgIHRoaXMuc3Bpbm5lckZsYWcgPSB0cnVlO1xyXG4gICAgdGhpcy5jb21tb25TZXZpY2UucHJvZHVjdExldmVsVGhyZWUobGV2ZWxPbmVJZCwgbGV2ZWxUd29JZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyRmxhZyA9IGZhbHNlXHJcbiAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5jb2RlID09PSAyMDApIHtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duVGhyZWUgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWREcm9wZG93blRocmVlID0gdGhpcy5maWx0ZXJQcm9kdWN0cygnJywgJ2NhdGVnb3J5MycpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWREcm9wZG93bkw0KGxldmVsT25lSWQ6IGFueSwgbGV2ZWxUd29JZDogYW55LCBsZXZlbFRocmVlSWQ6IGFueSkge1xyXG4gICAgdGhpcy5zcGlubmVyRmxhZyA9IHRydWU7XHJcbiAgICB0aGlzLmNvbW1vblNldmljZS5wcm9kdWN0TGV2ZWxGb3VyKGxldmVsT25lSWQsIGxldmVsVHdvSWQsIGxldmVsVGhyZWVJZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyRmxhZyA9IGZhbHNlXHJcbiAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5jb2RlID09PSAyMDApIHtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duRm91ciA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZERyb3Bkb3duRm91ciA9IHRoaXMuZmlsdGVyUHJvZHVjdHMoJycsICdjYXRlZ29yeTQnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZmlsdGVyUHJvZHVjdHModmFsdWU6IHN0cmluZywgY2F0OiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZT8udG9Mb3dlckNhc2UoKSA6IHZhbHVlO1xyXG4gICAgbGV0IGRhdGE6IHN0cmluZ1tdO1xyXG5cclxuICAgIC8qRHluYW1pY2FsbHkgYXNzaWduIHRoZSBkYXRhIGFycmF5IGJhc2VkIG9uIHRoZSBjYXRlZ29yeSovXHJcbiAgICBzd2l0Y2ggKGNhdCkge1xyXG4gICAgICBjYXNlICdjYXRlZ29yeTEnOlxyXG4gICAgICAgIGRhdGEgPSB0aGlzLmRyb3Bkb3duT25lO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYXRlZ29yeTInOlxyXG4gICAgICAgIGRhdGEgPSB0aGlzLmRyb3Bkb3duVHdvO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYXRlZ29yeTMnOlxyXG4gICAgICAgIGRhdGEgPSB0aGlzLmRyb3Bkb3duVGhyZWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5NCc6XHJcbiAgICAgICAgZGF0YSA9IHRoaXMuZHJvcGRvd25Gb3VyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGRhdGEgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWZpbHRlclZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGRhdGE/LmZpbHRlcihvcHRpb24gPT4gb3B0aW9uWyduYW1lJ10/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcclxuICAgICAgdGhpcy5tYXREaWFsb2dSZWYuY2xvc2Uoe1xyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIHN0YXR1czogdHJ1ZSxcclxuICAgICAgICAgIGl0ZW1zOiB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xyXG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aDtcclxuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcclxuICB9XHJcblxyXG4gIGlzSW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xyXG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aDtcclxuICAgIHJldHVybiBudW1TZWxlY3RlZCA+IDAgJiYgbnVtU2VsZWN0ZWQgPCBudW1Sb3dzO1xyXG4gIH1cclxuXHJcbiAgbWFzdGVyVG9nZ2xlKCkge1xyXG4gICAgdGhpcy5pc0FsbFNlbGVjdGVkKClcclxuICAgICAgPyB0aGlzLnNlbGVjdGlvbi5jbGVhcigpXHJcbiAgICAgIDogdGhpcy5kYXRhU291cmNlLmRhdGEuZm9yRWFjaChyb3cgPT4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHJvdykpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZFByb2R1Y3RzKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVTZWxlY3Rpb24ocm93OiBQcm9kdWN0KSB7XHJcbiAgICAvLyBDaGVjayBpZiB0aGUgcHJvZHVjdCBpcyBhbHJlYWR5IHNlbGVjdGVkXHJcbiAgICBjb25zdCBhbHJlYWR5U2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5zb21lKHNlbGVjdGVkID0+IHNlbGVjdGVkLnZhbHVlID09PSByb3cudmFsdWUpO1xyXG4gICAgaWYgKGFscmVhZHlTZWxlY3RlZCkge1xyXG4gICAgICAvLyBJZiB0aGUgcHJvZHVjdCBpcyBhbHJlYWR5IHNlbGVjdGVkLCBkZXNlbGVjdCBpdFxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5kZXNlbGVjdChyb3cpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gSWYgbm90IGFscmVhZHkgc2VsZWN0ZWQsIHNlbGVjdCBpdFxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Qocm93KTtcclxuICAgIH1cclxuICAgIC8vIFVwZGF0ZSBzZWxlY3RlZCBwcm9kdWN0cyB0byBlbnN1cmUgbm8gZHVwbGljYXRlc1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZFByb2R1Y3RzKCk7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIC8vIEdldHRlciBmb3IgdGhlIEZvcm1BcnJheVxyXG4gIGdldCBzZWxlY3RlZFByb2R1Y3RzKCk6IEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnc2VsZWN0ZWRQcm9kdWN0cycpIGFzIEZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVNlbGVjdGVkUHJvZHVjdHMoKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCkpIHtcclxuICAgICAgLy8gRGVkdXBsaWNhdGUgc2VsZWN0ZWQgcHJvZHVjdHNcclxuICAgICAgY29uc3QgdW5pcXVlUHJvZHVjdHMgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgIG5ldyBNYXAodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQubWFwKHByb2R1Y3QgPT4gW3Byb2R1Y3QudmFsdWUsIHByb2R1Y3RdKSkudmFsdWVzKClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgICAgdW5pcXVlUHJvZHVjdHMuZm9yRWFjaChwcm9kdWN0ID0+IHRoaXMuc2VsZWN0aW9uLnNlbGVjdChwcm9kdWN0KSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZS5kYXRhID0gWy4uLnRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkXTtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRQcm9kdWN0c0FycmF5ID0gdGhpcy5zZWxlY3RlZFByb2R1Y3RzO1xyXG4gICAgICBzZWxlY3RlZFByb2R1Y3RzQXJyYXkuY2xlYXIoKTtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24/LnNlbGVjdGVkPy5mb3JFYWNoKChwcm9kdWN0LCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmICghcHJvZHVjdD8udmFsdWUpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Byb2R1Y3QgdmFsdWUgKFNLVSkgaXMgbWlzc2luZyBhdCBpbmRleDonLCBpbmRleCwgcHJvZHVjdCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHByb2R1Y3RGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgIHByaWNlOiBbcHJvZHVjdD8ucHJpY2UgPz8gJycsIHRoaXMuc2hvd1ByaWNlID8gVmFsaWRhdG9ycy5yZXF1aXJlZCA6IFtdXSxcclxuICAgICAgICAgIHRleHQ6IFtwcm9kdWN0Py50ZXh0IHx8ICcnXSxcclxuICAgICAgICAgIHF1YW50aXR5OiBbcHJvZHVjdD8ucXVhbnRpdHkgPz8gJycsIHRoaXMuc2hvd1F1YW50aXR5ID8gVmFsaWRhdG9ycy5yZXF1aXJlZCA6IFtdXSxcclxuICAgICAgICAgIGNhdGVnb3J5OiBbcHJvZHVjdD8uY2F0ZWdvcnkgfHwgJyddLFxyXG4gICAgICAgICAgc3ViQ2F0ZWdvcnk6IFtwcm9kdWN0Py5zdWJDYXRlZ29yeSB8fCAnJ10sXHJcbiAgICAgICAgICB2YWx1ZTogW3Byb2R1Y3Q/LnZhbHVlIHx8ICcnXSxcclxuICAgICAgICAgIHNrdU51bWJlcjogW3Byb2R1Y3Q/LnNrdU51bWJlciB8fCAnJ11cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAocHJvZHVjdEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgc2VsZWN0ZWRQcm9kdWN0c0FycmF5LnB1c2gocHJvZHVjdEZvcm1Hcm91cCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgRm9ybUdyb3VwIGZvciBwcm9kdWN0IGF0IGluZGV4ICR7aW5kZXh9LmApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHNlbGVjdGVkUHJvZHVjdHNBcnJheS5jb250cm9scy5mb3JFYWNoKChjb250cm9sLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgICBjb25zdCBwcmljZUNvbnRyb2wgPSBjb250cm9sLmdldCgncHJpY2UnKTtcclxuICAgICAgICAgIGlmIChwcmljZUNvbnRyb2wpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1ByaWNlRGlzYWJsZSA/IHByaWNlQ29udHJvbC5kaXNhYmxlKCkgOiBwcmljZUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBQcmljZSBjb250cm9sIGlzIG1pc3NpbmcgaW4gRm9ybUdyb3VwIGF0IGluZGV4ICR7aW5kZXh9LmApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBVbmV4cGVjdGVkIGNvbnRyb2wgdHlwZSBhdCBpbmRleCAke2luZGV4fTpgLCBjb250cm9sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignU2VsZWN0aW9uLnNlbGVjdGVkIGlzIG5vdCBhbiBhcnJheTonLCB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0VG90YWxSb3dzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBvbk9wdGlvblNlbGVjdGVkKGV2ZW50OiBhbnksIGNhdGVnb3J5OiBzdHJpbmcpIHtcclxuICAgIGxldCBzZWxlY3RlZFZhbHVlO1xyXG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50Lm9wdGlvbiAmJiBldmVudC5vcHRpb24udmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBzZWxlY3RlZFZhbHVlID0gZXZlbnQub3B0aW9uLnZhbHVlLmlkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0ZWRWYWx1ZSA9IGV2ZW50O1xyXG4gICAgfVxyXG4gICAgaWYgKGNhdGVnb3J5ID09PSAnY2F0ZWdvcnkxJykge1xyXG4gICAgICB0aGlzLmxldmVsT25lSWQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsMicpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsMycpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsNCcpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25Ud28gPSBbXTtcclxuICAgICAgdGhpcy5maWx0ZXJlZERyb3Bkb3duVGhyZWUgPSBbXTtcclxuICAgICAgdGhpcy5maWx0ZXJlZERyb3Bkb3duRm91ciA9IFtdO1xyXG4gICAgICBpZiAodGhpcy5kcm9wZG93bkwyICYmIHRoaXMubGV2ZWxPbmVJZCkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWwyJyk/LmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWwzJyk/LmRpc2FibGUoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsNCcpPy5kaXNhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkMiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubG9hZERyb3Bkb3duTDIodGhpcy5sZXZlbE9uZUlkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsMicpPy5kaXNhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZHJvcGRvd25MZXZlbDMnKT8uZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWw0Jyk/LmRpc2FibGUoKTtcclxuICAgICAgICB0aGlzLmlzRGlzYWJsZWQyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzRGlzYWJsZWQzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzRGlzYWJsZWQ0ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNhdGVnb3J5ID09PSAnY2F0ZWdvcnkyJykge1xyXG4gICAgICB0aGlzLmxldmVsVHdvSWQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsMycpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsNCcpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25UaHJlZSA9IFtdO1xyXG4gICAgICBpZiAodGhpcy5kcm9wZG93bkwzICYmIHRoaXMubGV2ZWxPbmVJZCAmJiB0aGlzLmxldmVsVHdvSWQpIHtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsMycpPy5lbmFibGUoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsNCcpPy5kaXNhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkMyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubG9hZERyb3Bkb3duTDModGhpcy5sZXZlbE9uZUlkLCB0aGlzLmxldmVsVHdvSWQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWwzJyk/LmRpc2FibGUoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsNCcpPy5kaXNhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkMyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkNCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChjYXRlZ29yeSA9PT0gJ2NhdGVnb3J5MycpIHtcclxuICAgICAgdGhpcy5sZXZlbFRocmVlSWQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsNCcpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25Gb3VyID0gW107XHJcbiAgICAgIGlmICh0aGlzLmRyb3Bkb3duTDQgJiYgdGhpcy5sZXZlbE9uZUlkICYmIHRoaXMubGV2ZWxUd29JZCAmJiB0aGlzLmxldmVsVGhyZWVJZCkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWw0Jyk/LmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZDQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxvYWREcm9wZG93bkw0KHRoaXMubGV2ZWxPbmVJZCwgdGhpcy5sZXZlbFR3b0lkLCB0aGlzLmxldmVsVGhyZWVJZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZHJvcGRvd25MZXZlbDQnKT8uZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZDQgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKGNhdGVnb3J5ID09PSAnY2F0ZWdvcnk0Jykge1xyXG4gICAgICB0aGlzLmxldmVsRm91cklkID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3RzKGZsYWc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc3Bpbm5lckZsYWcgPSB0cnVlO1xyXG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2hRdWVyeTtcclxuICAgIGNvbnN0IGxldmVsT25lSWQgPSB0aGlzLmxldmVsT25lSWQgPyB0aGlzLmxldmVsT25lSWQgOiAwO1xyXG4gICAgY29uc3QgbGV2ZWxUd29JZCA9IHRoaXMubGV2ZWxUd29JZCA/IHRoaXMubGV2ZWxUd29JZCA6IDA7XHJcbiAgICBjb25zdCBsZXZlbFRocmVlSWQgPSB0aGlzLmxldmVsVGhyZWVJZCA/IHRoaXMubGV2ZWxUaHJlZUlkIDogMDtcclxuICAgIGNvbnN0IGxldmVsRm91cklkID0gdGhpcy5sZXZlbEZvdXJJZCA/IHRoaXMubGV2ZWxGb3VySWQgOiAwO1xyXG4gICAgY29uc29sZS5sb2coJ3BhZ2VOdW1iZXI9PicsIHRoaXMucGFnZU51bWJlcik7XHJcbiAgICBjb25zb2xlLmxvZygncGFnZVNpemU9PicsIHRoaXMucGFnZVNpemUpO1xyXG4gICAgY29uc29sZS5sb2coJ2xldmVsT25lSWQ9PicsIGxldmVsT25lSWQpO1xyXG4gICAgY29uc29sZS5sb2coJ2xldmVsVHdvSWQ9PicsIGxldmVsVHdvSWQpO1xyXG4gICAgY29uc29sZS5sb2coJ2xldmVsVGhyZWVJZD0+JywgbGV2ZWxUaHJlZUlkKTtcclxuICAgIGNvbnNvbGUubG9nKCdsZXZlbEZvdXJJZD0+JywgbGV2ZWxGb3VySWQpO1xyXG4gICAgZGVidWdnZXJcclxuICAgIHRoaXMuY29tbW9uU2V2aWNlLmxvYWRQcm9kdWN0cyh0aGlzLnBhZ2VOdW1iZXIsIHRoaXMucGFnZVNpemUsIHNlYXJjaCwgdHJ1ZSwgZmFsc2UsIGxldmVsT25lSWQsIGxldmVsVHdvSWQsIGxldmVsVGhyZWVJZCwgbGV2ZWxGb3VySWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lckZsYWcgPSBmYWxzZTtcclxuICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgIHRoaXMudG90YWxQYWdlcyA9IHJlc3BvbnNlPy5kYXRhPy50b3RhbFBhZ2VzO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgdGhpcy5nZXRUb3RhbFJlY29yZHMgPSByZXNwb25zZS5kYXRhLnRvdGFsUmVjb3Jkc1xyXG4gICAgICAgIC8vIFN5bmMgc2VsZWN0aW9uIHN0YXRlIHdpdGggbmV3IGRhdGFcclxuICAgICAgICBkYXRhLmZvckVhY2gocHJvZHVjdCA9PiB7XHJcbiAgICAgICAgICBjb25zdCBleGlzdGluZ1Byb2R1Y3QgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5maW5kKHAgPT4gcC52YWx1ZSA9PT0gcHJvZHVjdC52YWx1ZSk7XHJcbiAgICAgICAgICBpZiAoZXhpc3RpbmdQcm9kdWN0KSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocHJvZHVjdCwgZXhpc3RpbmdQcm9kdWN0KTsgLy8gUmVwbGFjZSBwcm9kdWN0IHdpdGggZXhpc3RpbmcgcmVmZXJlbmNlXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdChwcm9kdWN0KTsgLy8gTWFyayBhcyBzZWxlY3RlZFxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkUHJvZHVjdHMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gQXZvaWQgZHVwbGljYXRlcyBpbiB0aGUgZGF0YVNvdXJjZVxyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUHJvZHVjdFZhbHVlcyA9IG5ldyBTZXQodGhpcy5kYXRhU291cmNlLmRhdGEubWFwKHByb2R1Y3QgPT4gcHJvZHVjdC52YWx1ZSkpO1xyXG4gICAgICAgIGNvbnN0IHVuaXF1ZU5ld0RhdGEgPSBkYXRhLmZpbHRlcihwcm9kdWN0ID0+ICFleGlzdGluZ1Byb2R1Y3RWYWx1ZXMuaGFzKHByb2R1Y3QudmFsdWUpKTtcclxuICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoID4gMCAmJiBmbGFnKSB7XHJcbiAgICAgICAgICAvLyBkYXRhLmZvckVhY2goaXRlbSA9PiB0aGlzLmRhdGFTb3VyY2UuZGF0YS5wdXNoKGl0ZW0pKTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gWy4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhLCAuLi51bmlxdWVOZXdEYXRhXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nRmxhZyA9IHRydWU7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBtaWRkbGVQb3NpdGlvbiA9IHRoaXMudHJhY2tIZWlnaHQgLyAyIC0gNTA7XHJcbiAgICAgICAgICBpZiAodGhpcy5maXJzdHNjcm9sbGFibGVEaXYgJiYgdGhpcy5maXJzdHNjcm9sbGFibGVEaXYubmF0aXZlRWxlbWVudCAmJiBmbGFnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyc3RzY3JvbGxhYmxlRGl2Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG8oeyB0b3A6IG1pZGRsZVBvc2l0aW9uLCBiZWhhdmlvcjogJ2F1dG8nIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDI1MCk7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRGF0YVNvdXJjZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVSb3coZXZlbnQ6IEV2ZW50LCBlbGVtZW50OiBQcm9kdWN0KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBsZXQgbWVzc2FnZSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgcHJvZHVjdD8nO1xyXG4gICAgbGV0IHNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZS5kYXRhLmluZGV4T2YoZWxlbWVudCk7XHJcbiAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGFTb3VyY2UuZGF0YS5sZW5ndGggPT09IDEgJiYgIXRoaXMuY2hlY2tTdWJtaXNzaW9uU3RhdHVzKSB7XHJcbiAgICAgICAgbWVzc2FnZSA9ICdQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwcm9kdWN0Lic7XHJcbiAgICAgICAgc2hvd0J1dHRvbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgIHdpZHRoOiAnOTAlJyxcclxuICAgICAgICBtYXhXaWR0aDogJzQwMHB4JyxcclxuICAgICAgICBkYXRhOiB7IG1lc3NhZ2U6IG1lc3NhZ2UsIGJ1dHRvblN0YXR1czogc2hvd0J1dHRvbiB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZS5kYXRhLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZS5fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5kZXNlbGVjdChlbGVtZW50KTtcclxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUHJvZHVjdHNBcnJheSA9IHRoaXMuZm9ybS5nZXQoJ3NlbGVjdGVkUHJvZHVjdHMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgICBjb25zdCBwcm9kdWN0SW5kZXggPSBzZWxlY3RlZFByb2R1Y3RzQXJyYXkuY29udHJvbHMuZmluZEluZGV4KGNvbnRyb2wgPT4gY29udHJvbC52YWx1ZS52YWx1ZSA9PT0gZWxlbWVudC52YWx1ZSk7XHJcbiAgICAgICAgICBpZiAocHJvZHVjdEluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRQcm9kdWN0c0FycmF5LnJlbW92ZUF0KHByb2R1Y3RJbmRleCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudHJhY2tIZWlnaHQgPSBldmVudC50YXJnZXQuc2Nyb2xsSGVpZ2h0IC0gZXZlbnQudGFyZ2V0Lm9mZnNldEhlaWdodDtcclxuICAgIGlmICh0aGlzLmxvYWRpbmdGbGFnICYmIChNYXRoLmZsb29yKGV2ZW50LnRhcmdldC5zY3JvbGxUb3AgLyB0aGlzLnRyYWNrSGVpZ2h0ICogMTAwKSA+IDUwKSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdGbGFnID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLnBhZ2VOdW1iZXIgPCB0aGlzLnRvdGFsUGFnZXMpIHtcclxuICAgICAgICB0aGlzLnBhZ2VOdW1iZXIgPSB0aGlzLnBhZ2VOdW1iZXIgKyAxO1xyXG4gICAgICAgIHRoaXMuZ2V0UHJvZHVjdHModHJ1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nRmxhZyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucHJldlNjcm9sbFBvc2l0aW9uID0gZXZlbnQudGFyZ2V0LnNjcm9sbFRvcDtcclxuICB9XHJcblxyXG4gIGNvdW50VHJ1ZURyb3Bkb3ducyhvYmopIHtcclxuICAgIC8vIER5bmFtaWNhbGx5IGZpbmQgYWxsIGtleXMgdGhhdCBzdGFydCB3aXRoICdkcm9wZG93bkwnIGFuZCBhcmUgYm9vbGVhbiAodHJ1ZS9mYWxzZSlcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopXHJcbiAgICAgIC5maWx0ZXIoa2V5ID0+IGtleS5zdGFydHNXaXRoKCdkcm9wZG93bkwnKSAmJiB0eXBlb2Ygb2JqW2tleV0gPT09ICdib29sZWFuJyAmJiBvYmpba2V5XSA9PT0gdHJ1ZSlcclxuICAgICAgLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8qIFVzZSB0aGUgcHJvcGVydHkgdGhhdCBzaG91bGQgZGlzcGxheSBpbiB0aGUgaW5wdXQgZmllbGQgKi9cclxuICBkaXNwbGF5Rm4ob3B0aW9uKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBvcHRpb24gPyBvcHRpb24ubmFtZSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgb25RdWFudGl0eUNoYW5nZShldmVudDogYW55LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIGNvbnN0IHF1YW50aXR5Q29udHJvbCA9IHRoaXMuc2VsZWN0ZWRQcm9kdWN0cy5hdChpbmRleCkuZ2V0KCdxdWFudGl0eScpO1xyXG5cclxuICAgIGlmICghcXVhbnRpdHlDb250cm9sKSByZXR1cm47XHJcblxyXG4gICAgLy8gQ2xlYXIgYW55IHByZXZpb3VzIGVycm9yc1xyXG4gICAgcXVhbnRpdHlDb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuXHJcbiAgICAvLyBJZiB0aGUgdmFsdWUgaXMgZW1wdHksIHNldCAncmVxdWlyZWQnIGVycm9yXHJcbiAgICBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgIHF1YW50aXR5Q29udHJvbC5zZXRFcnJvcnMoeyAncmVxdWlyZWQnOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gICAgLy8gSWYgdGhlIHZhbHVlIGlzIGxlc3MgdGhhbiAxLCBzZXQgJ21pbicgZXJyb3JcclxuICAgIGVsc2UgaWYgKE51bWJlcih2YWx1ZSkgPCAxKSB7XHJcbiAgICAgIHF1YW50aXR5Q29udHJvbC5zZXRFcnJvcnMoeyAnbWluJzogdHJ1ZSB9KTtcclxuICAgIH1cclxuICAgIC8vIElmIHRoZSB2YWx1ZSBpcyBub3QgYW4gaW50ZWdlciwgc2V0ICdwYXR0ZXJuJyBlcnJvclxyXG4gICAgZWxzZSBpZiAoIS9eXFxkKyQvLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgIHF1YW50aXR5Q29udHJvbC5zZXRFcnJvcnMoeyAncGF0dGVybic6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb1RvTmV4dFBhZ2UoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gJ2VkaXQtc2F2ZSc7XHJcbiAgfVxyXG5cclxuICBnb1RvUHJldmlvdXNQYWdlKCkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9ICdzZWxlY3QtcHJvZHVjdHMnO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2VjdGlvbigpIHtcclxuICAgIHRoaXMuaXNWaXNpYmxlID0gIXRoaXMuaXNWaXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJGaWVsZChmaWVsZDogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkKT8uc2V0VmFsdWUobnVsbCk7XHJcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICdjYXRlZ29yeTEnKSB7XHJcbiAgICAgIHRoaXMub25PcHRpb25TZWxlY3RlZChudWxsLCAnY2F0ZWdvcnkxJyk7XHJcbiAgICB9IGVsc2UgaWYgKGNhdGVnb3J5ID09PSAnY2F0ZWdvcnkyJykge1xyXG4gICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0ZWQobnVsbCwgJ2NhdGVnb3J5MicpO1xyXG4gICAgfSBlbHNlIGlmIChjYXRlZ29yeSA9PT0gJ2NhdGVnb3J5MycpIHtcclxuICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdGVkKG51bGwsICdjYXRlZ29yeTMnKTtcclxuICAgIH0gZWxzZSBpZiAoY2F0ZWdvcnkgPT09ICdjYXRlZ29yeTQnKSB7XHJcbiAgICAgIHRoaXMubGV2ZWxGb3VySWQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVBY3RpdmVGaWx0ZXJzQ291bnQoKTtcclxuICB9XHJcblxyXG4gIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IEV2ZW50LCBjYXRlZ29yeTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuXHJcbiAgICBpZiAoIWlucHV0VmFsdWUpIHtcclxuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlcmUgaW5wdXQgaXMgY2xlYXJlZFxyXG4gICAgICB0aGlzLmNsZWFyRmllbGQoYGRyb3Bkb3duTGV2ZWwke3RoaXMuZ2V0RHJvcGRvd25MZXZlbChjYXRlZ29yeSl9YCwgY2F0ZWdvcnkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RHJvcGRvd25MZXZlbChjYXRlZ29yeTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIHN3aXRjaCAoY2F0ZWdvcnkpIHtcclxuICAgICAgY2FzZSAnY2F0ZWdvcnkxJzogcmV0dXJuIDE7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5Mic6IHJldHVybiAyO1xyXG4gICAgICBjYXNlICdjYXRlZ29yeTMnOiByZXR1cm4gMztcclxuICAgICAgY2FzZSAnY2F0ZWdvcnk0JzogcmV0dXJuIDQ7XHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQWN0aXZlRmlsdGVyc0NvdW50KCkge1xyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJzQ291bnQgPSAwO1xyXG4gICAgaWYgKHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWwxJykudmFsdWUpIHRoaXMuYWN0aXZlRmlsdGVyc0NvdW50Kys7XHJcbiAgICBpZiAodGhpcy5mb3JtLmdldCgnZHJvcGRvd25MZXZlbDInKS52YWx1ZSkgdGhpcy5hY3RpdmVGaWx0ZXJzQ291bnQrKztcclxuICAgIGlmICh0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsMycpLnZhbHVlKSB0aGlzLmFjdGl2ZUZpbHRlcnNDb3VudCsrO1xyXG4gICAgaWYgKHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWw0JykudmFsdWUpIHRoaXMuYWN0aXZlRmlsdGVyc0NvdW50Kys7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwic3Bpbm5lckZsYWdcIiBjbGFzcz1cIk92ZXJsYXlEaXZcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJPdmVybGF5RGl2Q29udGVudFwiPlxyXG4gICAgICAgIDxtYXQtc3Bpbm5lcj48L21hdC1zcGlubmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwibWF0LWRpYWxvZy1oZWFkaW5nXCI+XHJcbiAgICA8aDEgbWF0LWRpYWxvZy10aXRsZT5BZGQgUHJvZHVjdHM8L2gxPlxyXG48L2Rpdj5cclxuXHJcbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWF0LWRpYWxvZy1jb250ZW50XCI+XHJcbiAgICAgICAgPCEtLVNlYXJjaCBTdGFydC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYXNpYy1zZWFyY2hcIiBbaGlkZGVuXT1cImN1cnJlbnRQYWdlICE9PSAnc2VsZWN0LXByb2R1Y3RzJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgdmlld0JveD1cIjAgMCAyNCAyNVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoMCAwIDApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuMjUgMi43NUM2LjE0MTU0IDIuNzUgMiA2Ljg5MDI5IDIgMTEuOTk4QzIgMTcuMTA1NiA2LjE0MTU0IDIxLjI0NTkgMTEuMjUgMjEuMjQ1OUMxMy41MzM1IDIxLjI0NTkgMTUuNjIzOCAyMC40MTg3IDE3LjIzNzMgMTkuMDQ3NUwyMC43MTgyIDIyLjUyODdDMjEuMDExIDIyLjgyMTYgMjEuNDg1OSAyMi44MjE3IDIxLjc3ODggMjIuNTI4OEMyMi4wNzE3IDIyLjIzNTkgMjIuMDcxOCAyMS43NjEgMjEuNzc4OSAyMS40NjgxTDE4LjI5ODMgMTcuOTg3MkMxOS42NzE0IDE2LjM3MzYgMjAuNSAxNC4yODI2IDIwLjUgMTEuOTk4QzIwLjUgNi44OTAyOSAxNi4zNTg1IDIuNzUgMTEuMjUgMi43NVpNMy41IDExLjk5OEMzLjUgNy43MTkwNSA2Ljk2OTYyIDQuMjUgMTEuMjUgNC4yNUMxNS41MzA0IDQuMjUgMTkgNy43MTkwNSAxOSAxMS45OThDMTkgMTYuMjc2OSAxNS41MzA0IDE5Ljc0NTkgMTEuMjUgMTkuNzQ1OUM2Ljk2OTYyIDE5Ljc0NTkgMy41IDE2LjI3NjkgMy41IDExLjk5OFpcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVEcm9wZG93bkZpbHRlcigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiB0eXBlPVwidGV4dFwiIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiU2VhcmNoIFByb2R1Y3RcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hQcm9kdWN0TmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYWR2ZmlsdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkdlwiIChjbGljayk9XCJ0b2dnbGVTZWN0aW9uKCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1yb3VuZFwiIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInR1bmVcIj50dW5lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYWN0aXZlRmlsdGVyc0NvdW50ID4gMFwiIGNsYXNzPVwiY3VzdG9tLWJhZGdlXCI+e3sgYWN0aXZlRmlsdGVyc0NvdW50IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1idG5cIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlRHJvcGRvd25GaWx0ZXIoKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+U2VhcmNoPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1TZWFyY2ggRW5kLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3Qtc2VsZWN0b3JcIj5cclxuICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cImN1cnJlbnRQYWdlICE9PSAnc2VsZWN0LXByb2R1Y3RzJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3Qtc2VsZWN0aW9uLWNvbnRhaW5lclwiICpuZ0lmPVwiaXNWaXNpYmxlICYmIGRyb3Bkb3duTDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXNlbGVjdGlvblwiICpuZ0lmPVwiZHJvcGRvd25MMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJkcm9wRG93bkNvdW50ID09PSAxID8gJ25vLWNoaWxkJzogJ2NoaWxkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNT5BZHZhbmNlZCBGaWx0ZXJzPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImRyb3Bkb3duTDFcIiBjbGFzcz1cImV4YW1wbGUtZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZHJvcGRvd25MMUxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZHJvcGRvd25MZXZlbDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQsICdjYXRlZ29yeTEnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCIgI2F1dG8zPVwibWF0QXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudCwgJ2NhdGVnb3J5MScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkRHJvcGRvd25PbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIj57e29wdGlvbi5uYW1lfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeCAqbmdJZj1cImZvcm0uZ2V0KCdkcm9wZG93bkxldmVsMScpLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckZpZWxkKCdkcm9wZG93bkxldmVsMScsICdjYXRlZ29yeTEnKVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeD5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImRyb3Bkb3duTDJcIiBjbGFzcz1cImV4YW1wbGUtZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZHJvcGRvd25MMkxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZHJvcGRvd25MZXZlbDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQsICdjYXRlZ29yeTInKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCIgI2F1dG80PVwibWF0QXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudCwgJ2NhdGVnb3J5MicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkRHJvcGRvd25Ud29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIj57e29wdGlvbi5uYW1lfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeCAqbmdJZj1cImZvcm0uZ2V0KCdkcm9wZG93bkxldmVsMicpLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckZpZWxkKCdkcm9wZG93bkxldmVsMicsICdjYXRlZ29yeTInKVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZC1pY29uJzogaXNEaXNhYmxlZDJ9XCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiZHJvcGRvd25MM1wiIGNsYXNzPVwiZXhhbXBsZS1mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tkcm9wZG93bkwzTGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkcm9wZG93bkxldmVsM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG8zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudCwgJ2NhdGVnb3J5MycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIiAjYXV0bzM9XCJtYXRBdXRvY29tcGxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cIm9uT3B0aW9uU2VsZWN0ZWQoJGV2ZW50LCAnY2F0ZWdvcnkzJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWREcm9wZG93blRocmVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uXCI+e3tvcHRpb24ubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXggKm5nSWY9XCJmb3JtLmdldCgnZHJvcGRvd25MZXZlbDMnKS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGaWVsZCgnZHJvcGRvd25MZXZlbDMnLCAnY2F0ZWdvcnkzJylcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZS1pY29uJzogaXNEaXNhYmxlZDN9XCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJkcm9wZG93bkw0XCIgY2xhc3M9XCJleGFtcGxlLWZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2Ryb3Bkb3duTDRMYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImRyb3Bkb3duTGV2ZWw0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0bzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50LCAnY2F0ZWdvcnk0JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGblwiICNhdXRvND1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25PcHRpb25TZWxlY3RlZCgkZXZlbnQsICdjYXRlZ29yeTQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZERyb3Bkb3duRm91clwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiPnt7b3B0aW9uLm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0U3VmZml4ICpuZ0lmPVwiZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWw0JykudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRmllbGQoJ2Ryb3Bkb3duTGV2ZWw0JywgJ2NhdGVnb3J5NCcpXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0U3VmZml4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGUtaWNvbic6IGlzRGlzYWJsZWQ0fVwiPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICNmaXJzdHNjcm9sbGFibGVEaXYgaWQ9XCJmaXJzdHNjcm9sbGFibGVEaXZcIiBjbGFzcz1cIm5ldy1jbGFzcyBmaXJzdC1kaXZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2Nyb2xsKT1cIm9uU2Nyb2xsKCRldmVudClcIiBbbmdDbGFzc109XCJkYXRhU291cmNlPy5kYXRhPy5sZW5ndGggPiAxMCA/ICd0YmwtcmVjb3JkLWZvdW5kJzogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgY2xhc3M9XCJtYXQtdGFibGUgYWJjXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0YVNvdXJjZSAmJiBkYXRhU291cmNlPy5kYXRhPy5sZW5ndGggPiAwOyBlbHNlIG5vRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyB0b2dnbGVTZWxlY3Rpb24ocm93KSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiPjwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicHJvZHVjdE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBQcm9kdWN0IE5hbWUgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPiB7e2VsZW1lbnQ/LnRleHR9fSA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNrdU51bWJlclwiICpuZ0lmPVwic2hvd1NrdU51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IFNLVSBOdW1iZXIgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPiB7e2VsZW1lbnQ/LnNrdU51bWJlcn19IDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiYWRkUHJvZHVjdHNDb2x1bW5zXCI+PC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBhZGRQcm9kdWN0c0NvbHVtbnM7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO3RvZ2dsZVNlbGVjdGlvbihyb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiPjwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vLWRhdGEtbWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1ObyBkYXRhIGZvdW5kLi0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHAtZW1wdHktc3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1lbXB0eS1zdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImVtcHR5SW1hZ2VcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5ObyByZWNvcmRzIHRvIHNob3cgYXQgdGhlIG1vbWVudDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlBsZWFzZSBtb2RpZnkgeW91ciBzZWFyY2ggY3JpdGVyaWEgdG8gZmluZCB0aGUgZGVzaXJlZCByZXN1bHQ8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1zdW1tYXJ5XCIgKm5nSWY9XCJkYXRhU291cmNlICYmIGRhdGFTb3VyY2U/LmRhdGE/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5TZWxlY3RlZDogPHN0cm9uZz57eyBnZXRTZWxlY3RlZFJvd3NDb3VudCgpIH19PC9zdHJvbmc+IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlRvdGFsIFJlY29yZHM6IDxzdHJvbmc+e3sgZ2V0VG90YWxSZWNvcmRzIH19PC9zdHJvbmc+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cImN1cnJlbnRQYWdlICE9PSAnZWRpdC1zYXZlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ldy1jbGFzcyBhZGRlZC1wcm9kdWN0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInNlbGVjdGVkRGF0YVNvdXJjZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkRGF0YVNvdXJjZSAmJiBzZWxlY3RlZERhdGFTb3VyY2UuZGF0YS5sZW5ndGggPiAwOyBlbHNlIHNob3dCbGFua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkZWxldGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRlbGV0ZS1idG4tcGlja2VyXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtyZW1vdmVSb3coJGV2ZW50LCBlbGVtZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGFyaWEtaGlkZGVuPVwiZmFsc2VcIiBhcmlhLWxhYmVsPVwiUmVtb3ZlIHJvd1wiPmRlbGV0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicHJvZHVjdE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBQcm9kdWN0IE5hbWUgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPiB7e2VsZW1lbnQudGV4dH19IDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiY2F0ZWdvcnlOYW1lXCIgKm5nSWY9XCJzaG93Q2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBDYXRlZ29yeSBOYW1lIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50LmNhdGVnb3J5fX0gPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdWJDYXRlZ29yeVwiICpuZ0lmPVwic2hvd1N1YmNhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5TdWIgQ2F0ZWdvcnkgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPiB7e2VsZW1lbnQuc3ViQ2F0ZWdvcnl9fSA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInByaWNlXCIgKm5nSWY9XCJzaG93UHJpY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlByaWNlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJleGFtcGxlLWZ1bGwtd2lkdGggc2VsZWN0LXByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlByaWNlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInNlbGVjdGVkUHJvZHVjdHMuYXQoaSkuZ2V0KCdwcmljZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBsZWFzZSBlbnRlciBwcmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInNlbGVjdGVkUHJvZHVjdHMuYXQoaSkuZ2V0KCdwcmljZScpLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpY2UgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiUXVhbnRpdHlcIiAqbmdJZj1cInNob3dRdWFudGl0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IFF1YW50aXR5IDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZXhhbXBsZS1mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlF1YW50aXR5PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInNlbGVjdGVkUHJvZHVjdHMuYXQoaSkuZ2V0KCdxdWFudGl0eScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgbWluPVwiMVwiIHN0ZXA9XCIxXCIgKGlucHV0KT1cIm9uUXVhbnRpdHlDaGFuZ2UoJGV2ZW50LCBpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInNlbGVjdGVkUHJvZHVjdHMuYXQoaSkuZ2V0KCdxdWFudGl0eScpLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWVsZCBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwic2VsZWN0ZWRQcm9kdWN0cy5hdChpKS5nZXQoJ3F1YW50aXR5JykuaGFzRXJyb3IoJ21pbicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgY2FuIG5vdCBiZSBsZXNzIHRoYW4gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwic2VsZWN0ZWRQcm9kdWN0cy5hdChpKS5nZXQoJ3F1YW50aXR5JykuaGFzRXJyb3IoJ3BhdHRlcm4nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWxzIG5vdCBhbGxvd2VkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNrdU51bWJlclwiICpuZ0lmPVwic2hvd1NrdU51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IFNLVSBOdW1iZXIgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7ZWxlbWVudD8uc2t1TnVtYmVyfX0gPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJzaG93QWxscHJvZHVjdHNDb2x1bW5zXCI+PC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBzaG93QWxscHJvZHVjdHNDb2x1bW5zO1wiPjwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0JsYW5rPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vLWRhdGEtbWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIGRhdGEgZm91bmQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcblxyXG48bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gICAgPGRpdiBjbGFzcz1cInRhYnMtYWN0aW9uLXN0ZXAtb25lXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PT0gJ3NlbGVjdC1wcm9kdWN0cydcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImdvVG9OZXh0UGFnZSgpXCIgW2Rpc2FibGVkXT1cInNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggPyBmYWxzZSA6IHRydWVcIlxyXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBtYXQtcmFpc2VkLWJ1dHRvbj5OZXh0PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cImZhbHNlXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJzLWFjdGlvblwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT09ICdlZGl0LXNhdmUnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1hY3Rpb24td3JwXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCI+QmFjazwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cInN1Ym1pdFwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJvblN1Ym1pdCgpXCI+QWRkPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+Il19
655
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW9uLXByb2R1Y3RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZW5kZXItbWF0ZXJpYWwtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1vbi1wcm9kdWN0cy9hZGQtb24tcHJvZHVjdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlbmRlci1tYXRlcmlhbC1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvYWRkLW9uLXByb2R1Y3RzL2FkZC1vbi1wcm9kdWN0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFpQixTQUFTLEVBQWMsTUFBTSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQWUsU0FBUyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQTJCLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUVuRyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBOEJqRixNQUFNLE9BQU8sc0JBQXNCO0lBNkRqQyxZQUNTLFlBQWtELEVBQ2hDLElBQVMsRUFDMUIsRUFBZSxFQUNmLE1BQWlCLEVBQ2pCLFlBQTJCO1FBSjVCLGlCQUFZLEdBQVosWUFBWSxDQUFzQztR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QUUsQ0FBQyxDQUFDO1lBQ3BELFVBQVUsQ0FBQyxtQkFBbUIsRUFBRTtnQkFDOUIsT0FBTyxDQUFDLGdCQUFnQixDQUFDO2FBQzFCLENBQUM7WUFDRixVQUFVLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzlCLE9BQU8sQ0FBQyxlQUFlLENBQUM7YUFDekIsQ0FBQztTQUNILENBQUM7S0FDSDsyRkFFVSxzQkFBc0I7a0JBakJsQyxTQUFTOytCQUNFLHlCQUF5QixjQUd2Qjt3QkFDVixPQUFPLENBQUMsV0FBVyxFQUFFOzRCQUNuQixLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQzs0QkFDekUsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNwRCxVQUFVLENBQUMsbUJBQW1CLEVBQUU7Z0NBQzlCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQzs2QkFDMUIsQ0FBQzs0QkFDRixVQUFVLENBQUMsbUJBQW1CLEVBQUU7Z0NBQzlCLE9BQU8sQ0FBQyxlQUFlLENBQUM7NkJBQ3pCLENBQUM7eUJBQ0gsQ0FBQztxQkFDSDs7MEJBaUVFLE1BQU07MkJBQUMsZUFBZTswSEE1QlEsa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1BcnJheSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdCB7XHJcbiAgcHJvZHVjdE5hbWU6IHN0cmluZztcclxuICBwcm9kdWN0RGVzY3JpcHRpb246IHN0cmluZztcclxuICBxdWFudGl0eTogYW55LFxyXG4gIHByaWNlOiBhbnksXHJcbiAgdGV4dDogYW55LFxyXG4gIGlkOiBhbnksXHJcbiAgdmFsdWU6IGFueSxcclxuICBza3VOdW1iZXI6IGFueVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1tYXQtYWRkLW9uLXByb2R1Y3RzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLW9uLXByb2R1Y3RzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hZGQtb24tcHJvZHVjdHMuY29tcG9uZW50LmNzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ3NsaWRlRG93bicsIFtcclxuICAgICAgc3RhdGUoJ2hpZGRlbicsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3BhY2l0eTogMCwgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pKSxcclxuICAgICAgc3RhdGUoJ3Zpc2libGUnLCBzdHlsZSh7IGhlaWdodDogJyonLCBvcGFjaXR5OiAxIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignaGlkZGVuID0+IHZpc2libGUnLCBbXHJcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1vdXQnKVxyXG4gICAgICBdKSxcclxuICAgICAgdHJhbnNpdGlvbigndmlzaWJsZSA9PiBoaWRkZW4nLCBbXHJcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicpXHJcbiAgICAgIF0pXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZE9uUHJvZHVjdHNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuICBkcm9wZG93bk9uZTogc3RyaW5nW10gPSBbXTtcclxuICBkcm9wZG93blR3bzogc3RyaW5nW10gPSBbXTtcclxuICBkcm9wZG93blRocmVlOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGRyb3Bkb3duRm91cjogc3RyaW5nW10gPSBbXTtcclxuICBmaWx0ZXJlZERyb3Bkb3duT25lOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbHRlcmVkRHJvcGRvd25Ud286IHN0cmluZ1tdID0gW107XHJcbiAgZmlsdGVyZWREcm9wZG93blRocmVlOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbHRlcmVkRHJvcGRvd25Gb3VyOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGFkZFByb2R1Y3RzQ29sdW1uczogc3RyaW5nW10gPSBbJ3NlbGVjdCcsICdwcm9kdWN0TmFtZScsICdza3VOdW1iZXInXTtcclxuICBzaG93QWxscHJvZHVjdHNDb2x1bW5zOiBzdHJpbmdbXSA9IFsnZGVsZXRlJywgJ3Byb2R1Y3ROYW1lJywgJ2NhdGVnb3J5TmFtZScsICdzdWJDYXRlZ29yeScsICdRdWFudGl0eScsICdwcmljZScsICdza3VOdW1iZXInXTtcclxuICBxdWFudGl0eUxpc3Q6IG51bWJlcltdID0gWzUsIDEwLCAxNSwgMjAsIDI1XTtcclxuICBFTEVNRU5UX0RBVEE6IFByb2R1Y3RbXSA9IFtdO1xyXG4gIGRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPFByb2R1Y3Q+KCk7XHJcbiAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10pO1xyXG4gIHNlbGVjdGVkRGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8UHJvZHVjdD4oW10pO1xyXG4gIHNlbGVjdGVkQ2F0ZWdvcnk6IGFueSA9IG51bGw7XHJcbiAgc2VsZWN0ZWRTdWJDYXRlZ29yeTogYW55ID0gbnVsbDtcclxuICBzaG93Q2F0ZWdvcnk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93U3ViY2F0ZWdvcnk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93UHJpY2U6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHNob3dRdWFudGl0eTogYm9vbGVhbiA9IHRydWU7XHJcbiAgc2hvd1NrdU51bWJlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dOZXdQcm9kdWN0UGlja2VyOiBib29sZWFuID0gdHJ1ZTtcclxuICBzZXRDYXRlZ29yeTogc3RyaW5nID0gJyc7XHJcbiAgc2V0U3ViQ2F0ZWdvcnk6IHN0cmluZyA9ICcnO1xyXG4gIGxvYWRpbmdGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFnZU51bWJlciA9IDE7XHJcbiAgcGFnZVNpemUgPSAyMDtcclxuICB0b3RhbFBhZ2VzID0gMDtcclxuICBzZWFyY2hRdWVyeSA9ICcnO1xyXG4gIGl0ZW1MaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHRyYWNrSGVpZ2h0OiBhbnk7XHJcbiAgcHJldlNjcm9sbFBvc2l0aW9uID0gMDsgLy8gVHJhY2sgdGhlIHByZXZpb3VzIHNjcm9sbCBwb3NpdGlvblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpcnN0c2Nyb2xsYWJsZURpdicpIGZpcnN0c2Nyb2xsYWJsZURpdjogRWxlbWVudFJlZjtcclxuICBzcGlubmVyRmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRyb3Bkb3duTDE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkcm9wZG93bkwyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHJvcGRvd25MMzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRyb3Bkb3duTDQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkcm9wZG93bkwxTGFiZWw6IHN0cmluZyA9ICcnO1xyXG4gIGRyb3Bkb3duTDJMYWJlbDogc3RyaW5nID0gJyc7XHJcbiAgZHJvcGRvd25MM0xhYmVsOiBzdHJpbmcgPSAnJztcclxuICBkcm9wZG93bkw0TGFiZWw6IHN0cmluZyA9ICcnO1xyXG4gIGRyb3BEb3duQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgbGV2ZWxPbmVJZDogYW55ID0gJyc7XHJcbiAgbGV2ZWxUd29JZDogYW55ID0gJyc7XHJcbiAgbGV2ZWxUaHJlZUlkOiBhbnkgPSAnJztcclxuICBsZXZlbEZvdXJJZDogYW55ID0gJyc7XHJcbiAgZGlzYWJsZVByaWNlOiBib29sZWFuID0gdHJ1ZTtcclxuICBjaGVja1N1Ym1pc3Npb25TdGF0dXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjdXJyZW50UGFnZTogc3RyaW5nID0gJ3NlbGVjdC1wcm9kdWN0cyc7XHJcbiAgaXNWaXNpYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBpc0Rpc2FibGVkMjogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNEaXNhYmxlZDM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGlzRGlzYWJsZWQ0OiBib29sZWFuID0gdHJ1ZTtcclxuICBpc1ByaWNlRGlzYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgYWN0aXZlRmlsdGVyc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIGVtcHR5SW1hZ2U6IHN0cmluZyA9ICcvaS90YWJsZS1ncmlkLWVtcHR5LXN0YXRlLnN2Zyc7XHJcbiAgZ2V0VG90YWxSZWNvcmRzOiBudW1iZXIgPSAwO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG1hdERpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEFkZE9uUHJvZHVjdHNDb21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGRhdGE6IGFueSxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgY29tbW9uU2V2aWNlOiBDb21tb25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNob3dDYXRlZ29yeSA9IGRhdGEuZHJvcGRvd25zRmxhZy5zaG93RGlhbG9nQ2F0ZWdvcnk7XHJcbiAgICB0aGlzLnNob3dTdWJjYXRlZ29yeSA9IGRhdGEuZHJvcGRvd25zRmxhZy5zaG93RGlhbG9nU3ViQ2F0ZWdvcnk7XHJcbiAgICB0aGlzLnNob3dQcmljZSA9IGRhdGEuZHJvcGRvd25zRmxhZy5zaG93RGlhbG9nUHJpY2U7XHJcbiAgICB0aGlzLnNob3dRdWFudGl0eSA9IGRhdGEuZHJvcGRvd25zRmxhZy5zaG93RGlhbG9nUXVhbnRpdHk7XHJcbiAgICB0aGlzLnNob3dTa3VOdW1iZXIgPSBkYXRhLmRyb3Bkb3duc0ZsYWcuc2hvd0RpYWxvZ1NrdU51bWJlcjtcclxuICAgIHRoaXMuc2hvd05ld1Byb2R1Y3RQaWNrZXIgPSBkYXRhLmRyb3Bkb3duc0ZsYWcuc2hvd05ld1Byb2R1Y3RQaWNrZXI7XHJcbiAgICB0aGlzLmRyb3Bkb3duTDEgPSBkYXRhLmRyb3Bkb3duc0ZsYWcuZHJvcGRvd25MMTtcclxuICAgIHRoaXMuZHJvcGRvd25MMiA9IGRhdGEuZHJvcGRvd25zRmxhZy5kcm9wZG93bkwyO1xyXG4gICAgdGhpcy5kcm9wZG93bkwzID0gZGF0YS5kcm9wZG93bnNGbGFnLmRyb3Bkb3duTDM7XHJcbiAgICB0aGlzLmRyb3Bkb3duTDQgPSBkYXRhLmRyb3Bkb3duc0ZsYWcuZHJvcGRvd25MNDtcclxuICAgIHRoaXMuZHJvcGRvd25MMUxhYmVsID0gZGF0YS5kcm9wZG93bnNGbGFnLmRyb3Bkb3duTDFMYWJlbDtcclxuICAgIHRoaXMuZHJvcGRvd25MMkxhYmVsID0gZGF0YS5kcm9wZG93bnNGbGFnLmRyb3Bkb3duTDJMYWJlbDtcclxuICAgIHRoaXMuZHJvcGRvd25MM0xhYmVsID0gZGF0YS5kcm9wZG93bnNGbGFnLmRyb3Bkb3duTDNMYWJlbDtcclxuICAgIHRoaXMuZHJvcGRvd25MNExhYmVsID0gZGF0YS5kcm9wZG93bnNGbGFnLmRyb3Bkb3duTDRMYWJlbDtcclxuICAgIHRoaXMuY2hlY2tTdWJtaXNzaW9uU3RhdHVzID0gZGF0YS5kcm9wZG93bnNGbGFnLmNoZWNrU3VibWlzc2lvblN0YXR1cztcclxuICAgIHRoaXMuZHJvcERvd25Db3VudCA9IHRoaXMuY291bnRUcnVlRHJvcGRvd25zKGRhdGEuZHJvcGRvd25zRmxhZyk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxQcm9kdWN0Pih0cnVlLCBkYXRhLnNlbGVjdGVkUHJvZHVjdHMgfHwgW10pO1xyXG4gICAgdGhpcy5pc1ByaWNlRGlzYWJsZSA9IGRhdGEuZHJvcGRvd25zRmxhZy5wcmljZURpc2FibGU7XHJcbiAgICBpZiAoIXRoaXMuc2hvd0NhdGVnb3J5KSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQ29sdW1uKCdjYXRlZ29yeU5hbWUnKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zaG93UHJpY2UpIHtcclxuICAgICAgdGhpcy5yZW1vdmVDb2x1bW4oJ3ByaWNlJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc2hvd1N1YmNhdGVnb3J5KSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQ29sdW1uKCdzdWJDYXRlZ29yeScpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnNob3dRdWFudGl0eSkge1xyXG4gICAgICB0aGlzLnJlbW92ZUNvbHVtbignUXVhbnRpdHknKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zaG93U2t1TnVtYmVyKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQ29sdW1uKCdza3VOdW1iZXInKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUNvbHVtbihjb2x1bW5OYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2hvd0FsbHByb2R1Y3RzQ29sdW1ucyA9IHRoaXMuc2hvd0FsbHByb2R1Y3RzQ29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbiAhPT0gY29sdW1uTmFtZSk7XHJcbiAgICB0aGlzLmFkZFByb2R1Y3RzQ29sdW1ucyA9IHRoaXMuYWRkUHJvZHVjdHNDb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uICE9PSBjb2x1bW5OYW1lKTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVGb3JtQXJyYXkoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFByb2R1Y3RzQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KCdzZWxlY3RlZFByb2R1Y3RzJykgYXMgRm9ybUFycmF5O1xyXG4gICAgaWYgKCFzZWxlY3RlZFByb2R1Y3RzQXJyYXkpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignc2VsZWN0ZWRQcm9kdWN0cyBGb3JtQXJyYXkgbm90IGluaXRpYWxpemVkLicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQuZm9yRWFjaChwcm9kdWN0ID0+IHtcclxuICAgICAgc2VsZWN0ZWRQcm9kdWN0c0FycmF5LnB1c2godGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgcHJpY2U6IFtwcm9kdWN0Py5wcmljZSB8fCAnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgdGV4dDogW3Byb2R1Y3Q/LnRleHQgfHwgJyddLFxyXG4gICAgICAgIHF1YW50aXR5OiBbcHJvZHVjdC5xdWFudGl0eSB8fCAnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgY2F0ZWdvcnk6IFtwcm9kdWN0Py5jYXRlZ29yeSB8fCAnJ10sXHJcbiAgICAgICAgc3ViQ2F0ZWdvcnk6IFtwcm9kdWN0Py5zdWJDYXRlZ29yeSB8fCAnJ10sXHJcbiAgICAgICAgdmFsdWU6IFtwcm9kdWN0Py52YWx1ZSB8fCAnJ10sXHJcbiAgICAgICAgc2t1TnVtYmVyOiBbcHJvZHVjdD8uc2t1TnVtYmVyIHx8ICcnXVxyXG4gICAgICB9KSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBzZWxlY3RlZFByb2R1Y3RzQXJyYXkuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgdGhpcy5pc1ByaWNlRGlzYWJsZSA/IGNvbnRyb2wuZ2V0KCdwcmljZScpPy5kaXNhYmxlKCkgOiBjb250cm9sLmdldCgncHJpY2UnKT8uZW5hYmxlKCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZERhdGFTb3VyY2UuZGF0YSA9IFsuLi50aGlzLnNlbGVjdGlvbi5zZWxlY3RlZF07XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplRGF0YVNvdXJjZXMoKSB7XHJcbiAgICAvLyBEZWJ1Z2dpbmcgbG9ncyB0byB0cmFjZSBpc3N1ZXNcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0aW9uPy5zZWxlY3RlZCkgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmRhdGFTb3VyY2U/LmRhdGEpICYmIHRoaXMuc2VsZWN0aW9uPy5zZWxlY3RlZD8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uPy5zZWxlY3RlZD8uZm9yRWFjaChzZWxlY3RlZFByb2R1Y3QgPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kYXRhU291cmNlLmRhdGEuZmluZEluZGV4KHByb2R1Y3QgPT4gcHJvZHVjdC52YWx1ZSA9PT0gc2VsZWN0ZWRQcm9kdWN0LnZhbHVlKTtcclxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGFbaW5kZXhdID0gc2VsZWN0ZWRQcm9kdWN0O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlLmRhdGEgPSBbLi4udGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS53YXJuKCdObyBzZWxlY3RlZCBwcm9kdWN0cyBmb3VuZC4nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBkcm9wZG93bkxldmVsMTogW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogZmFsc2UgfV0sXHJcbiAgICAgIGRyb3Bkb3duTGV2ZWwyOiBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH1dLFxyXG4gICAgICBkcm9wZG93bkxldmVsMzogW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9XSxcclxuICAgICAgZHJvcGRvd25MZXZlbDQ6IFt7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWUgfV0sXHJcbiAgICAgIHNlYXJjaFByb2R1Y3ROYW1lOiBbJyddLFxyXG4gICAgICBzZWxlY3RlZFByb2R1Y3RzOiB0aGlzLmZiLmFycmF5KFtdKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVGb3JtQXJyYXkoKTtcclxuXHJcbiAgICBpZiAodGhpcy5kcm9wZG93bkwxKSB7XHJcbiAgICAgIHRoaXMubG9hZERyb3Bkb3duTDEoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsMScpLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAucGlwZShcclxuICAgICAgICBzdGFydFdpdGgoJycpLFxyXG4gICAgICAgIG1hcCh2YWx1ZSA9PlxyXG4gICAgICAgICAgdGhpcy5maWx0ZXJQcm9kdWN0cyh2YWx1ZSwgJ2NhdGVnb3J5MScpKVxyXG4gICAgICApLnN1YnNjcmliZShsMSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZERyb3Bkb3duT25lID0gbDE7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnZHJvcGRvd25MZXZlbDInKS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3RhcnRXaXRoKCcnKSxcclxuICAgICAgICBtYXAodmFsdWUgPT4gdGhpcy5maWx0ZXJQcm9kdWN0cyh2YWx1ZSwgJ2NhdGVnb3J5MicpKVxyXG4gICAgICApLnN1YnNjcmliZShsMiA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZERyb3Bkb3duVHdvID0gbDI7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnZHJvcGRvd25MZXZlbDMnKS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3RhcnRXaXRoKCcnKSxcclxuICAgICAgICBtYXAodmFsdWUgPT4gdGhpcy5maWx0ZXJQcm9kdWN0cyh2YWx1ZSwgJ2NhdGVnb3J5MycpKVxyXG4gICAgICApLnN1YnNjcmliZShsMyA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZERyb3Bkb3duVGhyZWUgPSBsMztcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsNCcpLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAucGlwZShcclxuICAgICAgICBzdGFydFdpdGgoJycpLFxyXG4gICAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLmZpbHRlclByb2R1Y3RzKHZhbHVlLCAnY2F0ZWdvcnk0JykpXHJcbiAgICAgICkuc3Vic2NyaWJlKGw0ID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25Gb3VyID0gbDQ7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRHJvcGRvd25GaWx0ZXIoKSB7XHJcbiAgICBjb25zdCBzZWFyY2hRdWVyeSA9IHRoaXMuZm9ybS5jb250cm9scy5zZWFyY2hQcm9kdWN0TmFtZT8udmFsdWU/LnRyaW0oKTsgLy8gVHJpbSB0byByZW1vdmUgYmxhbmsgc3BhY2VzXHJcbiAgICBjb25zdCBsZXZlbE9uZUlkID0gdGhpcy5mb3JtLmNvbnRyb2xzLmRyb3Bkb3duTGV2ZWwxPy52YWx1ZT8uaWQ7XHJcbiAgICB0aGlzLmxvYWRpbmdGbGFnID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5maXJzdHNjcm9sbGFibGVEaXYpIHtcclxuICAgICAgdGhpcy5maXJzdHNjcm9sbGFibGVEaXYubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgfVxyXG4gICAgaWYgKChzZWFyY2hRdWVyeSAmJiBzZWFyY2hRdWVyeSAhPT0gJycpIHx8IChsZXZlbE9uZUlkICYmIGxldmVsT25lSWQgIT09IG51bGwgJiYgbGV2ZWxPbmVJZCAhPT0gdW5kZWZpbmVkKSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFF1ZXJ5ID0gdGhpcy5mb3JtLmNvbnRyb2xzLnNlYXJjaFByb2R1Y3ROYW1lPy52YWx1ZTtcclxuICAgICAgdGhpcy5sZXZlbE9uZUlkID0gdGhpcy5mb3JtLmNvbnRyb2xzLmRyb3Bkb3duTGV2ZWwxLnZhbHVlPy5pZDtcclxuICAgICAgdGhpcy5sZXZlbFR3b0lkID0gdGhpcy5mb3JtLmNvbnRyb2xzLmRyb3Bkb3duTGV2ZWwyLnZhbHVlPy5pZDtcclxuICAgICAgdGhpcy5sZXZlbFRocmVlSWQgPSB0aGlzLmZvcm0uY29udHJvbHMuZHJvcGRvd25MZXZlbDMudmFsdWU/LmlkO1xyXG4gICAgICB0aGlzLmxldmVsRm91cklkID0gdGhpcy5mb3JtLmNvbnRyb2xzLmRyb3Bkb3duTGV2ZWw0LnZhbHVlPy5pZDtcclxuICAgICAgdGhpcy5wYWdlTnVtYmVyID0gMTtcclxuICAgICAgdGhpcy5wYWdlU2l6ZSA9IDIwO1xyXG4gICAgICB0aGlzLmdldFByb2R1Y3RzKGZhbHNlKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlQWN0aXZlRmlsdGVyc0NvdW50KCk7XHJcbiAgfVxyXG5cclxuICBsb2FkRHJvcGRvd25MMSgpIHtcclxuICAgIHRoaXMuc3Bpbm5lckZsYWcgPSB0cnVlO1xyXG4gICAgdGhpcy5jb21tb25TZXZpY2UucHJvZHVjdExldmVsT25lKCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyRmxhZyA9IGZhbHNlXHJcbiAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5jb2RlID09PSAyMDApIHtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duT25lID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25PbmUgPSB0aGlzLmZpbHRlclByb2R1Y3RzKCcnLCAnY2F0ZWdvcnkxJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZERyb3Bkb3duTDIobGV2ZWxPbmVJZDogYW55KSB7XHJcbiAgICB0aGlzLnNwaW5uZXJGbGFnID0gdHJ1ZTtcclxuICAgIHRoaXMuY29tbW9uU2V2aWNlLnByb2R1Y3RMZXZlbFR3byhsZXZlbE9uZUlkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJGbGFnID0gZmFsc2VcclxuICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd25Ud28gPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWREcm9wZG93blR3byA9IHRoaXMuZmlsdGVyUHJvZHVjdHMoJycsICdjYXRlZ29yeTInKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkRHJvcGRvd25MMyhsZXZlbE9uZUlkOiBhbnksIGxldmVsVHdvSWQ6IGFueSkge1xyXG4gICAgdGhpcy5zcGlubmVyRmxhZyA9IHRydWU7XHJcbiAgICB0aGlzLmNvbW1vblNldmljZS5wcm9kdWN0TGV2ZWxUaHJlZShsZXZlbE9uZUlkLCBsZXZlbFR3b0lkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJGbGFnID0gZmFsc2VcclxuICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd25UaHJlZSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZERyb3Bkb3duVGhyZWUgPSB0aGlzLmZpbHRlclByb2R1Y3RzKCcnLCAnY2F0ZWdvcnkzJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZERyb3Bkb3duTDQobGV2ZWxPbmVJZDogYW55LCBsZXZlbFR3b0lkOiBhbnksIGxldmVsVGhyZWVJZDogYW55KSB7XHJcbiAgICB0aGlzLnNwaW5uZXJGbGFnID0gdHJ1ZTtcclxuICAgIHRoaXMuY29tbW9uU2V2aWNlLnByb2R1Y3RMZXZlbEZvdXIobGV2ZWxPbmVJZCwgbGV2ZWxUd29JZCwgbGV2ZWxUaHJlZUlkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJGbGFnID0gZmFsc2VcclxuICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd25Gb3VyID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25Gb3VyID0gdGhpcy5maWx0ZXJQcm9kdWN0cygnJywgJ2NhdGVnb3J5NCcpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBmaWx0ZXJQcm9kdWN0cyh2YWx1ZTogc3RyaW5nLCBjYXQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlPy50b0xvd2VyQ2FzZSgpIDogdmFsdWU7XHJcbiAgICBsZXQgZGF0YTogc3RyaW5nW107XHJcblxyXG4gICAgLypEeW5hbWljYWxseSBhc3NpZ24gdGhlIGRhdGEgYXJyYXkgYmFzZWQgb24gdGhlIGNhdGVnb3J5Ki9cclxuICAgIHN3aXRjaCAoY2F0KSB7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5MSc6XHJcbiAgICAgICAgZGF0YSA9IHRoaXMuZHJvcGRvd25PbmU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5Mic6XHJcbiAgICAgICAgZGF0YSA9IHRoaXMuZHJvcGRvd25Ud287XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5Myc6XHJcbiAgICAgICAgZGF0YSA9IHRoaXMuZHJvcGRvd25UaHJlZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2F0ZWdvcnk0JzpcclxuICAgICAgICBkYXRhID0gdGhpcy5kcm9wZG93bkZvdXI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgZGF0YSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghZmlsdGVyVmFsdWUpIHtcclxuICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZGF0YT8uZmlsdGVyKG9wdGlvbiA9PiBvcHRpb25bJ25hbWUnXT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLm1hdERpYWxvZ1JlZi5jbG9zZSh7XHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgc3RhdHVzOiB0cnVlLFxyXG4gICAgICAgICAgaXRlbXM6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XHJcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoO1xyXG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xyXG4gIH1cclxuXHJcbiAgaXNJbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XHJcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoO1xyXG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID4gMCAmJiBudW1TZWxlY3RlZCA8IG51bVJvd3M7XHJcbiAgfVxyXG5cclxuICBtYXN0ZXJUb2dnbGUoKSB7XHJcbiAgICB0aGlzLmlzQWxsU2VsZWN0ZWQoKVxyXG4gICAgICA/IHRoaXMuc2VsZWN0aW9uLmNsZWFyKClcclxuICAgICAgOiB0aGlzLmRhdGFTb3VyY2UuZGF0YS5mb3JFYWNoKHJvdyA9PiB0aGlzLnNlbGVjdGlvbi5zZWxlY3Qocm93KSk7XHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkUHJvZHVjdHMoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVNlbGVjdGlvbihyb3c6IFByb2R1Y3QpIHtcclxuICAgIC8vIENoZWNrIGlmIHRoZSBwcm9kdWN0IGlzIGFscmVhZHkgc2VsZWN0ZWRcclxuICAgIGNvbnN0IGFscmVhZHlTZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLnNvbWUoc2VsZWN0ZWQgPT4gc2VsZWN0ZWQudmFsdWUgPT09IHJvdy52YWx1ZSk7XHJcbiAgICBpZiAoYWxyZWFkeVNlbGVjdGVkKSB7XHJcbiAgICAgIC8vIElmIHRoZSBwcm9kdWN0IGlzIGFscmVhZHkgc2VsZWN0ZWQsIGRlc2VsZWN0IGl0XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmRlc2VsZWN0KHJvdyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBJZiBub3QgYWxyZWFkeSBzZWxlY3RlZCwgc2VsZWN0IGl0XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdChyb3cpO1xyXG4gICAgfVxyXG4gICAgLy8gVXBkYXRlIHNlbGVjdGVkIHByb2R1Y3RzIHRvIGVuc3VyZSBubyBkdXBsaWNhdGVzXHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkUHJvZHVjdHMoKTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gR2V0dGVyIGZvciB0aGUgRm9ybUFycmF5XHJcbiAgZ2V0IHNlbGVjdGVkUHJvZHVjdHMoKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdzZWxlY3RlZFByb2R1Y3RzJykgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU2VsZWN0ZWRQcm9kdWN0cygpIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKSkge1xyXG4gICAgICAvLyBEZWR1cGxpY2F0ZSBzZWxlY3RlZCBwcm9kdWN0c1xyXG4gICAgICBjb25zdCB1bmlxdWVQcm9kdWN0cyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAgbmV3IE1hcCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5tYXAocHJvZHVjdCA9PiBbcHJvZHVjdC52YWx1ZSwgcHJvZHVjdF0pKS52YWx1ZXMoKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICB1bmlxdWVQcm9kdWN0cy5mb3JFYWNoKHByb2R1Y3QgPT4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHByb2R1Y3QpKTtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlLmRhdGEgPSBbLi4udGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRdO1xyXG4gICAgICBjb25zdCBzZWxlY3RlZFByb2R1Y3RzQXJyYXkgPSB0aGlzLnNlbGVjdGVkUHJvZHVjdHM7XHJcbiAgICAgIHNlbGVjdGVkUHJvZHVjdHNBcnJheS5jbGVhcigpO1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbj8uc2VsZWN0ZWQ/LmZvckVhY2goKHByb2R1Y3QsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKCFwcm9kdWN0Py52YWx1ZSkge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignUHJvZHVjdCB2YWx1ZSAoU0tVKSBpcyBtaXNzaW5nIGF0IGluZGV4OicsIGluZGV4LCBwcm9kdWN0KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcHJvZHVjdEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgcHJpY2U6IFtwcm9kdWN0Py5wcmljZSA/PyAnJywgdGhpcy5zaG93UHJpY2UgPyBWYWxpZGF0b3JzLnJlcXVpcmVkIDogW11dLFxyXG4gICAgICAgICAgdGV4dDogW3Byb2R1Y3Q/LnRleHQgfHwgJyddLFxyXG4gICAgICAgICAgcXVhbnRpdHk6IFtwcm9kdWN0Py5xdWFudGl0eSA/PyAnJywgdGhpcy5zaG93UXVhbnRpdHkgPyBWYWxpZGF0b3JzLnJlcXVpcmVkIDogW11dLFxyXG4gICAgICAgICAgY2F0ZWdvcnk6IFtwcm9kdWN0Py5jYXRlZ29yeSB8fCAnJ10sXHJcbiAgICAgICAgICBzdWJDYXRlZ29yeTogW3Byb2R1Y3Q/LnN1YkNhdGVnb3J5IHx8ICcnXSxcclxuICAgICAgICAgIHZhbHVlOiBbcHJvZHVjdD8udmFsdWUgfHwgJyddLFxyXG4gICAgICAgICAgc2t1TnVtYmVyOiBbcHJvZHVjdD8uc2t1TnVtYmVyIHx8ICcnXVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChwcm9kdWN0Rm9ybUdyb3VwKSB7XHJcbiAgICAgICAgICBzZWxlY3RlZFByb2R1Y3RzQXJyYXkucHVzaChwcm9kdWN0Rm9ybUdyb3VwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGNyZWF0ZSBGb3JtR3JvdXAgZm9yIHByb2R1Y3QgYXQgaW5kZXggJHtpbmRleH0uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgc2VsZWN0ZWRQcm9kdWN0c0FycmF5LmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICAgIGNvbnN0IHByaWNlQ29udHJvbCA9IGNvbnRyb2wuZ2V0KCdwcmljZScpO1xyXG4gICAgICAgICAgaWYgKHByaWNlQ29udHJvbCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzUHJpY2VEaXNhYmxlID8gcHJpY2VDb250cm9sLmRpc2FibGUoKSA6IHByaWNlQ29udHJvbC5lbmFibGUoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFByaWNlIGNvbnRyb2wgaXMgbWlzc2luZyBpbiBGb3JtR3JvdXAgYXQgaW5kZXggJHtpbmRleH0uYCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFVuZXhwZWN0ZWQgY29udHJvbCB0eXBlIGF0IGluZGV4ICR7aW5kZXh9OmAsIGNvbnRyb2wpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdTZWxlY3Rpb24uc2VsZWN0ZWQgaXMgbm90IGFuIGFycmF5OicsIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBnZXRUb3RhbFJvd3MoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZFJvd3NDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIG9uT3B0aW9uU2VsZWN0ZWQoZXZlbnQ6IGFueSwgY2F0ZWdvcnk6IHN0cmluZykge1xyXG4gICAgbGV0IHNlbGVjdGVkVmFsdWU7XHJcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQub3B0aW9uICYmIGV2ZW50Lm9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHNlbGVjdGVkVmFsdWUgPSBldmVudC5vcHRpb24udmFsdWUuaWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZWxlY3RlZFZhbHVlID0gZXZlbnQ7XHJcbiAgICB9XHJcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICdjYXRlZ29yeTEnKSB7XHJcbiAgICAgIHRoaXMubGV2ZWxPbmVJZCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWwyJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWwzJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWw0Jykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWREcm9wZG93blR3byA9IFtdO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25UaHJlZSA9IFtdO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25Gb3VyID0gW107XHJcbiAgICAgIGlmICh0aGlzLmRyb3Bkb3duTDIgJiYgdGhpcy5sZXZlbE9uZUlkKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZHJvcGRvd25MZXZlbDInKT8uZW5hYmxlKCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZHJvcGRvd25MZXZlbDMnKT8uZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWw0Jyk/LmRpc2FibGUoKTtcclxuICAgICAgICB0aGlzLmlzRGlzYWJsZWQyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5sb2FkRHJvcGRvd25MMih0aGlzLmxldmVsT25lSWQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWwyJyk/LmRpc2FibGUoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsMycpPy5kaXNhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZHJvcGRvd25MZXZlbDQnKT8uZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZDIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZDMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZDQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICdjYXRlZ29yeTInKSB7XHJcbiAgICAgIHRoaXMubGV2ZWxUd29JZCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWwzJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWw0Jykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWREcm9wZG93blRocmVlID0gW107XHJcbiAgICAgIGlmICh0aGlzLmRyb3Bkb3duTDMgJiYgdGhpcy5sZXZlbE9uZUlkICYmIHRoaXMubGV2ZWxUd29JZCkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWwzJyk/LmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWw0Jyk/LmRpc2FibGUoKTtcclxuICAgICAgICB0aGlzLmlzRGlzYWJsZWQzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5sb2FkRHJvcGRvd25MMyh0aGlzLmxldmVsT25lSWQsIHRoaXMubGV2ZWxUd29JZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZHJvcGRvd25MZXZlbDMnKT8uZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWw0Jyk/LmRpc2FibGUoKTtcclxuICAgICAgICB0aGlzLmlzRGlzYWJsZWQzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzRGlzYWJsZWQ0ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNhdGVnb3J5ID09PSAnY2F0ZWdvcnkzJykge1xyXG4gICAgICB0aGlzLmxldmVsVGhyZWVJZCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWw0Jykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWREcm9wZG93bkZvdXIgPSBbXTtcclxuICAgICAgaWYgKHRoaXMuZHJvcGRvd25MNCAmJiB0aGlzLmxldmVsT25lSWQgJiYgdGhpcy5sZXZlbFR3b0lkICYmIHRoaXMubGV2ZWxUaHJlZUlkKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZHJvcGRvd25MZXZlbDQnKT8uZW5hYmxlKCk7XHJcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkNCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubG9hZERyb3Bkb3duTDQodGhpcy5sZXZlbE9uZUlkLCB0aGlzLmxldmVsVHdvSWQsIHRoaXMubGV2ZWxUaHJlZUlkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsNCcpPy5kaXNhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkNCA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICdjYXRlZ29yeTQnKSB7XHJcbiAgICAgIHRoaXMubGV2ZWxGb3VySWQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UHJvZHVjdHMoZmxhZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zcGlubmVyRmxhZyA9IHRydWU7XHJcbiAgICBjb25zdCBzZWFyY2ggPSB0aGlzLnNlYXJjaFF1ZXJ5O1xyXG4gICAgY29uc3QgbGV2ZWxPbmVJZCA9IHRoaXMubGV2ZWxPbmVJZCA/IHRoaXMubGV2ZWxPbmVJZCA6IDA7XHJcbiAgICBjb25zdCBsZXZlbFR3b0lkID0gdGhpcy5sZXZlbFR3b0lkID8gdGhpcy5sZXZlbFR3b0lkIDogMDtcclxuICAgIGNvbnN0IGxldmVsVGhyZWVJZCA9IHRoaXMubGV2ZWxUaHJlZUlkID8gdGhpcy5sZXZlbFRocmVlSWQgOiAwO1xyXG4gICAgY29uc3QgbGV2ZWxGb3VySWQgPSB0aGlzLmxldmVsRm91cklkID8gdGhpcy5sZXZlbEZvdXJJZCA6IDA7XHJcbiAgICB0aGlzLmNvbW1vblNldmljZS5sb2FkUHJvZHVjdHModGhpcy5wYWdlTnVtYmVyLCB0aGlzLnBhZ2VTaXplLCBzZWFyY2gsIHRydWUsIGZhbHNlLCBsZXZlbE9uZUlkLCBsZXZlbFR3b0lkLCBsZXZlbFRocmVlSWQsIGxldmVsRm91cklkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJGbGFnID0gZmFsc2U7XHJcbiAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5jb2RlID09PSAyMDApIHtcclxuICAgICAgICB0aGlzLnRvdGFsUGFnZXMgPSByZXNwb25zZT8uZGF0YT8udG90YWxQYWdlcztcclxuICAgICAgICBjb25zdCBkYXRhID0gcmVzcG9uc2UuZGF0YS5kYXRhU291cmNlO1xyXG4gICAgICAgIHRoaXMuZ2V0VG90YWxSZWNvcmRzID0gcmVzcG9uc2UuZGF0YS50b3RhbFJlY29yZHNcclxuICAgICAgICAvLyBTeW5jIHNlbGVjdGlvbiBzdGF0ZSB3aXRoIG5ldyBkYXRhXHJcbiAgICAgICAgZGF0YS5mb3JFYWNoKHByb2R1Y3QgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdQcm9kdWN0ID0gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQuZmluZChwID0+IHAudmFsdWUgPT09IHByb2R1Y3QudmFsdWUpO1xyXG4gICAgICAgICAgaWYgKGV4aXN0aW5nUHJvZHVjdCkge1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHByb2R1Y3QsIGV4aXN0aW5nUHJvZHVjdCk7IC8vIFJlcGxhY2UgcHJvZHVjdCB3aXRoIGV4aXN0aW5nIHJlZmVyZW5jZVxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QocHJvZHVjdCk7IC8vIE1hcmsgYXMgc2VsZWN0ZWRcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFByb2R1Y3RzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIEF2b2lkIGR1cGxpY2F0ZXMgaW4gdGhlIGRhdGFTb3VyY2VcclxuICAgICAgICBjb25zdCBleGlzdGluZ1Byb2R1Y3RWYWx1ZXMgPSBuZXcgU2V0KHRoaXMuZGF0YVNvdXJjZS5kYXRhLm1hcChwcm9kdWN0ID0+IHByb2R1Y3QudmFsdWUpKTtcclxuICAgICAgICBjb25zdCB1bmlxdWVOZXdEYXRhID0gZGF0YS5maWx0ZXIocHJvZHVjdCA9PiAhZXhpc3RpbmdQcm9kdWN0VmFsdWVzLmhhcyhwcm9kdWN0LnZhbHVlKSk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA+IDAgJiYgZmxhZykge1xyXG4gICAgICAgICAgLy8gZGF0YS5mb3JFYWNoKGl0ZW0gPT4gdGhpcy5kYXRhU291cmNlLmRhdGEucHVzaChpdGVtKSk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IFsuLi50aGlzLmRhdGFTb3VyY2UuZGF0YSwgLi4udW5pcXVlTmV3RGF0YV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9hZGluZ0ZsYWcgPSB0cnVlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbWlkZGxlUG9zaXRpb24gPSB0aGlzLnRyYWNrSGVpZ2h0IC8gMiAtIDUwO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZmlyc3RzY3JvbGxhYmxlRGl2ICYmIHRoaXMuZmlyc3RzY3JvbGxhYmxlRGl2Lm5hdGl2ZUVsZW1lbnQgJiYgZmxhZykge1xyXG4gICAgICAgICAgICB0aGlzLmZpcnN0c2Nyb2xsYWJsZURpdi5uYXRpdmVFbGVtZW50LnNjcm9sbFRvKHsgdG9wOiBtaWRkbGVQb3NpdGlvbiwgYmVoYXZpb3I6ICdhdXRvJyB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCAyNTApO1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZURhdGFTb3VyY2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUm93KGV2ZW50OiBFdmVudCwgZWxlbWVudDogUHJvZHVjdCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgbGV0IG1lc3NhZ2UgPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByb2R1Y3Q/JztcclxuICAgIGxldCBzaG93QnV0dG9uID0gdHJ1ZTtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZERhdGFTb3VyY2UuZGF0YS5pbmRleE9mKGVsZW1lbnQpO1xyXG4gICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRhU291cmNlLmRhdGEubGVuZ3RoID09PSAxICYmICF0aGlzLmNoZWNrU3VibWlzc2lvblN0YXR1cykge1xyXG4gICAgICAgIG1lc3NhZ2UgPSAnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcHJvZHVjdC4nO1xyXG4gICAgICAgIHNob3dCdXR0b24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICB3aWR0aDogJzkwJScsXHJcbiAgICAgICAgbWF4V2lkdGg6ICc0MDBweCcsXHJcbiAgICAgICAgZGF0YTogeyBtZXNzYWdlOiBtZXNzYWdlLCBidXR0b25TdGF0dXM6IHNob3dCdXR0b24gfVxyXG4gICAgICB9KTtcclxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGFTb3VyY2UuZGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGFTb3VyY2UuX3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb24uZGVzZWxlY3QoZWxlbWVudCk7XHJcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZFByb2R1Y3RzQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KCdzZWxlY3RlZFByb2R1Y3RzJykgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgICAgY29uc3QgcHJvZHVjdEluZGV4ID0gc2VsZWN0ZWRQcm9kdWN0c0FycmF5LmNvbnRyb2xzLmZpbmRJbmRleChjb250cm9sID0+IGNvbnRyb2wudmFsdWUudmFsdWUgPT09IGVsZW1lbnQudmFsdWUpO1xyXG4gICAgICAgICAgaWYgKHByb2R1Y3RJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkUHJvZHVjdHNBcnJheS5yZW1vdmVBdChwcm9kdWN0SW5kZXgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNjcm9sbChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRyYWNrSGVpZ2h0ID0gZXZlbnQudGFyZ2V0LnNjcm9sbEhlaWdodCAtIGV2ZW50LnRhcmdldC5vZmZzZXRIZWlnaHQ7XHJcbiAgICBpZiAodGhpcy5sb2FkaW5nRmxhZyAmJiAoTWF0aC5mbG9vcihldmVudC50YXJnZXQuc2Nyb2xsVG9wIC8gdGhpcy50cmFja0hlaWdodCAqIDEwMCkgPiA1MCkpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nRmxhZyA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5wYWdlTnVtYmVyIDwgdGhpcy50b3RhbFBhZ2VzKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlTnVtYmVyID0gdGhpcy5wYWdlTnVtYmVyICsgMTtcclxuICAgICAgICB0aGlzLmdldFByb2R1Y3RzKHRydWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ0ZsYWcgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnByZXZTY3JvbGxQb3NpdGlvbiA9IGV2ZW50LnRhcmdldC5zY3JvbGxUb3A7XHJcbiAgfVxyXG5cclxuICBjb3VudFRydWVEcm9wZG93bnMob2JqKSB7XHJcbiAgICAvLyBEeW5hbWljYWxseSBmaW5kIGFsbCBrZXlzIHRoYXQgc3RhcnQgd2l0aCAnZHJvcGRvd25MJyBhbmQgYXJlIGJvb2xlYW4gKHRydWUvZmFsc2UpXHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxyXG4gICAgICAuZmlsdGVyKGtleSA9PiBrZXkuc3RhcnRzV2l0aCgnZHJvcGRvd25MJykgJiYgdHlwZW9mIG9ialtrZXldID09PSAnYm9vbGVhbicgJiYgb2JqW2tleV0gPT09IHRydWUpXHJcbiAgICAgIC5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICAvKiBVc2UgdGhlIHByb3BlcnR5IHRoYXQgc2hvdWxkIGRpc3BsYXkgaW4gdGhlIGlucHV0IGZpZWxkICovXHJcbiAgZGlzcGxheUZuKG9wdGlvbik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gb3B0aW9uID8gb3B0aW9uLm5hbWUgOiAnJztcclxuICB9XHJcblxyXG4gIG9uUXVhbnRpdHlDaGFuZ2UoZXZlbnQ6IGFueSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICBjb25zdCBxdWFudGl0eUNvbnRyb2wgPSB0aGlzLnNlbGVjdGVkUHJvZHVjdHMuYXQoaW5kZXgpLmdldCgncXVhbnRpdHknKTtcclxuXHJcbiAgICBpZiAoIXF1YW50aXR5Q29udHJvbCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIENsZWFyIGFueSBwcmV2aW91cyBlcnJvcnNcclxuICAgIHF1YW50aXR5Q29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcblxyXG4gICAgLy8gSWYgdGhlIHZhbHVlIGlzIGVtcHR5LCBzZXQgJ3JlcXVpcmVkJyBlcnJvclxyXG4gICAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICBxdWFudGl0eUNvbnRyb2wuc2V0RXJyb3JzKHsgJ3JlcXVpcmVkJzogdHJ1ZSB9KTtcclxuICAgIH1cclxuICAgIC8vIElmIHRoZSB2YWx1ZSBpcyBsZXNzIHRoYW4gMSwgc2V0ICdtaW4nIGVycm9yXHJcbiAgICBlbHNlIGlmIChOdW1iZXIodmFsdWUpIDwgMSkge1xyXG4gICAgICBxdWFudGl0eUNvbnRyb2wuc2V0RXJyb3JzKHsgJ21pbic6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgICAvLyBJZiB0aGUgdmFsdWUgaXMgbm90IGFuIGludGVnZXIsIHNldCAncGF0dGVybicgZXJyb3JcclxuICAgIGVsc2UgaWYgKCEvXlxcZCskLy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICBxdWFudGl0eUNvbnRyb2wuc2V0RXJyb3JzKHsgJ3BhdHRlcm4nOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29Ub05leHRQYWdlKCkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9ICdlZGl0LXNhdmUnO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1ByZXZpb3VzUGFnZSgpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAnc2VsZWN0LXByb2R1Y3RzJztcclxuICB9XHJcblxyXG4gIHRvZ2dsZVNlY3Rpb24oKSB7XHJcbiAgICB0aGlzLmlzVmlzaWJsZSA9ICF0aGlzLmlzVmlzaWJsZTtcclxuICB9XHJcblxyXG4gIGNsZWFyRmllbGQoZmllbGQ6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZykge1xyXG4gICAgdGhpcy5mb3JtLmdldChmaWVsZCk/LnNldFZhbHVlKG51bGwpO1xyXG4gICAgaWYgKGNhdGVnb3J5ID09PSAnY2F0ZWdvcnkxJykge1xyXG4gICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0ZWQobnVsbCwgJ2NhdGVnb3J5MScpO1xyXG4gICAgfSBlbHNlIGlmIChjYXRlZ29yeSA9PT0gJ2NhdGVnb3J5MicpIHtcclxuICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdGVkKG51bGwsICdjYXRlZ29yeTInKTtcclxuICAgIH0gZWxzZSBpZiAoY2F0ZWdvcnkgPT09ICdjYXRlZ29yeTMnKSB7XHJcbiAgICAgIHRoaXMub25PcHRpb25TZWxlY3RlZChudWxsLCAnY2F0ZWdvcnkzJyk7XHJcbiAgICB9IGVsc2UgaWYgKGNhdGVnb3J5ID09PSAnY2F0ZWdvcnk0Jykge1xyXG4gICAgICB0aGlzLmxldmVsRm91cklkID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlQWN0aXZlRmlsdGVyc0NvdW50KCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCwgY2F0ZWdvcnk6IHN0cmluZykge1xyXG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcblxyXG4gICAgaWYgKCFpbnB1dFZhbHVlKSB7XHJcbiAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZXJlIGlucHV0IGlzIGNsZWFyZWRcclxuICAgICAgdGhpcy5jbGVhckZpZWxkKGBkcm9wZG93bkxldmVsJHt0aGlzLmdldERyb3Bkb3duTGV2ZWwoY2F0ZWdvcnkpfWAsIGNhdGVnb3J5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERyb3Bkb3duTGV2ZWwoY2F0ZWdvcnk6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBzd2l0Y2ggKGNhdGVnb3J5KSB7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5MSc6IHJldHVybiAxO1xyXG4gICAgICBjYXNlICdjYXRlZ29yeTInOiByZXR1cm4gMjtcclxuICAgICAgY2FzZSAnY2F0ZWdvcnkzJzogcmV0dXJuIDM7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5NCc6IHJldHVybiA0O1xyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUFjdGl2ZUZpbHRlcnNDb3VudCgpIHtcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyc0NvdW50ID0gMDtcclxuICAgIGlmICh0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsMScpLnZhbHVlKSB0aGlzLmFjdGl2ZUZpbHRlcnNDb3VudCsrO1xyXG4gICAgaWYgKHRoaXMuZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWwyJykudmFsdWUpIHRoaXMuYWN0aXZlRmlsdGVyc0NvdW50Kys7XHJcbiAgICBpZiAodGhpcy5mb3JtLmdldCgnZHJvcGRvd25MZXZlbDMnKS52YWx1ZSkgdGhpcy5hY3RpdmVGaWx0ZXJzQ291bnQrKztcclxuICAgIGlmICh0aGlzLmZvcm0uZ2V0KCdkcm9wZG93bkxldmVsNCcpLnZhbHVlKSB0aGlzLmFjdGl2ZUZpbHRlcnNDb3VudCsrO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cInNwaW5uZXJGbGFnXCIgY2xhc3M9XCJPdmVybGF5RGl2XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiT3ZlcmxheURpdkNvbnRlbnRcIj5cclxuICAgICAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cIm1hdC1kaWFsb2ctaGVhZGluZ1wiPlxyXG4gICAgPGgxIG1hdC1kaWFsb2ctdGl0bGU+QWRkIFByb2R1Y3RzPC9oMT5cclxuPC9kaXY+XHJcblxyXG48bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1hdC1kaWFsb2ctY29udGVudFwiPlxyXG4gICAgICAgIDwhLS1TZWFyY2ggU3RhcnQtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFzaWMtc2VhcmNoXCIgW2hpZGRlbl09XCJjdXJyZW50UGFnZSAhPT0gJ3NlbGVjdC1wcm9kdWN0cydcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHZpZXdCb3g9XCIwIDAgMjQgMjVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDAgMCAwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjI1IDIuNzVDNi4xNDE1NCAyLjc1IDIgNi44OTAyOSAyIDExLjk5OEMyIDE3LjEwNTYgNi4xNDE1NCAyMS4yNDU5IDExLjI1IDIxLjI0NTlDMTMuNTMzNSAyMS4yNDU5IDE1LjYyMzggMjAuNDE4NyAxNy4yMzczIDE5LjA0NzVMMjAuNzE4MiAyMi41Mjg3QzIxLjAxMSAyMi44MjE2IDIxLjQ4NTkgMjIuODIxNyAyMS43Nzg4IDIyLjUyODhDMjIuMDcxNyAyMi4yMzU5IDIyLjA3MTggMjEuNzYxIDIxLjc3ODkgMjEuNDY4MUwxOC4yOTgzIDE3Ljk4NzJDMTkuNjcxNCAxNi4zNzM2IDIwLjUgMTQuMjgyNiAyMC41IDExLjk5OEMyMC41IDYuODkwMjkgMTYuMzU4NSAyLjc1IDExLjI1IDIuNzVaTTMuNSAxMS45OThDMy41IDcuNzE5MDUgNi45Njk2MiA0LjI1IDExLjI1IDQuMjVDMTUuNTMwNCA0LjI1IDE5IDcuNzE5MDUgMTkgMTEuOTk4QzE5IDE2LjI3NjkgMTUuNTMwNCAxOS43NDU5IDExLjI1IDE5Ljc0NTlDNi45Njk2MiAxOS43NDU5IDMuNSAxNi4yNzY5IDMuNSAxMS45OThaXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwiaGFuZGxlRHJvcGRvd25GaWx0ZXIoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBQcm9kdWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoUHJvZHVjdE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImFkdmZpbHRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhZHZcIiAoY2xpY2spPVwidG9nZ2xlU2VjdGlvbigpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtcm91bmRcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0dW5lXCI+dHVuZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImFjdGl2ZUZpbHRlcnNDb3VudCA+IDBcIiBjbGFzcz1cImN1c3RvbS1iYWRnZVwiPnt7IGFjdGl2ZUZpbHRlcnNDb3VudCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYnRuXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZURyb3Bkb3duRmlsdGVyKCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlNlYXJjaDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tU2VhcmNoIEVuZC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LXNlbGVjdG9yXCI+XHJcbiAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCJjdXJyZW50UGFnZSAhPT0gJ3NlbGVjdC1wcm9kdWN0cydcIj5cclxuICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LXNlbGVjdGlvbi1jb250YWluZXJcIiAqbmdJZj1cImlzVmlzaWJsZSAmJiBkcm9wZG93bkwxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1zZWxlY3Rpb25cIiAqbmdJZj1cImRyb3Bkb3duTDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZHJvcERvd25Db3VudCA9PT0gMSA/ICduby1jaGlsZCc6ICdjaGlsZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDU+QWR2YW5jZWQgRmlsdGVyczwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJkcm9wZG93bkwxXCIgY2xhc3M9XCJleGFtcGxlLWZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2Ryb3Bkb3duTDFMYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImRyb3Bkb3duTGV2ZWwxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0bzNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50LCAnY2F0ZWdvcnkxJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGblwiICNhdXRvMz1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25PcHRpb25TZWxlY3RlZCgkZXZlbnQsICdjYXRlZ29yeTEnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZERyb3Bkb3duT25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uXCI+e3tvcHRpb24ubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXggKm5nSWY9XCJmb3JtLmdldCgnZHJvcGRvd25MZXZlbDEnKS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGaWVsZCgnZHJvcGRvd25MZXZlbDEnLCAnY2F0ZWdvcnkxJylcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXg+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJkcm9wZG93bkwyXCIgY2xhc3M9XCJleGFtcGxlLWZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2Ryb3Bkb3duTDJMYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImRyb3Bkb3duTGV2ZWwyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0bzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50LCAnY2F0ZWdvcnkyJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGblwiICNhdXRvND1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25PcHRpb25TZWxlY3RlZCgkZXZlbnQsICdjYXRlZ29yeTInKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZERyb3Bkb3duVHdvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uXCI+e3tvcHRpb24ubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXggKm5nSWY9XCJmb3JtLmdldCgnZHJvcGRvd25MZXZlbDInKS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGaWVsZCgnZHJvcGRvd25MZXZlbDInLCAnY2F0ZWdvcnkyJylcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQtaWNvbic6IGlzRGlzYWJsZWQyfVwiPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImRyb3Bkb3duTDNcIiBjbGFzcz1cImV4YW1wbGUtZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZHJvcGRvd25MM0xhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZHJvcGRvd25MZXZlbDNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQsICdjYXRlZ29yeTMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCIgI2F1dG8zPVwibWF0QXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudCwgJ2NhdGVnb3J5MycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkRHJvcGRvd25UaHJlZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiPnt7b3B0aW9uLm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0U3VmZml4ICpuZ0lmPVwiZm9ybS5nZXQoJ2Ryb3Bkb3duTGV2ZWwzJykudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRmllbGQoJ2Ryb3Bkb3duTGV2ZWwzJywgJ2NhdGVnb3J5MycpXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0U3VmZml4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGUtaWNvbic6IGlzRGlzYWJsZWQzfVwiPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiZHJvcGRvd25MNFwiIGNsYXNzPVwiZXhhbXBsZS1mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tkcm9wZG93bkw0TGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkcm9wZG93bkxldmVsNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG80XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudCwgJ2NhdGVnb3J5NCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIiAjYXV0bzQ9XCJtYXRBdXRvY29tcGxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cIm9uT3B0aW9uU2VsZWN0ZWQoJGV2ZW50LCAnY2F0ZWdvcnk0JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWREcm9wZG93bkZvdXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIj57e29wdGlvbi5uYW1lfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeCAqbmdJZj1cImZvcm0uZ2V0KCdkcm9wZG93bkxldmVsNCcpLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckZpZWxkKCdkcm9wZG93bkxldmVsNCcsICdjYXRlZ29yeTQnKVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlLWljb24nOiBpc0Rpc2FibGVkNH1cIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAjZmlyc3RzY3JvbGxhYmxlRGl2IGlkPVwiZmlyc3RzY3JvbGxhYmxlRGl2XCIgY2xhc3M9XCJuZXctY2xhc3MgZmlyc3QtZGl2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCIgW25nQ2xhc3NdPVwiZGF0YVNvdXJjZT8uZGF0YT8ubGVuZ3RoID4gMTAgPyAndGJsLXJlY29yZC1mb3VuZCc6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIGNsYXNzPVwibWF0LXRhYmxlIGFiY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGFTb3VyY2UgJiYgZGF0YVNvdXJjZT8uZGF0YT8ubGVuZ3RoID4gMDsgZWxzZSBub0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gdG9nZ2xlU2VsZWN0aW9uKHJvdykgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIj48L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInByb2R1Y3ROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gUHJvZHVjdCBOYW1lIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50Py50ZXh0fX0gPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJza3VOdW1iZXJcIiAqbmdJZj1cInNob3dTa3VOdW1iZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBTS1UgTnVtYmVyIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50Py5za3VOdW1iZXJ9fSA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImFkZFByb2R1Y3RzQ29sdW1uc1wiPjwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogYWRkUHJvZHVjdHNDb2x1bW5zO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTt0b2dnbGVTZWxlY3Rpb24ocm93KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIj48L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1kYXRhLW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tTm8gZGF0YSBmb3VuZC4tLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBwLWVtcHR5LXN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZW1wdHktc3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJlbXB0eUltYWdlXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+Tm8gcmVjb3JkcyB0byBzaG93IGF0IHRoZSBtb21lbnQ8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5QbGVhc2UgbW9kaWZ5IHlvdXIgc2VhcmNoIGNyaXRlcmlhIHRvIGZpbmQgdGhlIGRlc2lyZWQgcmVzdWx0PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctc3VtbWFyeVwiICpuZ0lmPVwiZGF0YVNvdXJjZSAmJiBkYXRhU291cmNlPy5kYXRhPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+U2VsZWN0ZWQ6IDxzdHJvbmc+e3sgZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKSB9fTwvc3Ryb25nPiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5Ub3RhbCBSZWNvcmRzOiA8c3Ryb25nPnt7IGdldFRvdGFsUmVjb3JkcyB9fTwvc3Ryb25nPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCJjdXJyZW50UGFnZSAhPT0gJ2VkaXQtc2F2ZSdcIj5cclxuICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXctY2xhc3MgYWRkZWQtcHJvZHVjdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJzZWxlY3RlZERhdGFTb3VyY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZERhdGFTb3VyY2UgJiYgc2VsZWN0ZWREYXRhU291cmNlLmRhdGEubGVuZ3RoID4gMDsgZWxzZSBzaG93QmxhbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGVsZXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkZWxldGUtYnRuLXBpY2tlclwiIG1hdC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7cmVtb3ZlUm93KCRldmVudCwgZWxlbWVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgYXJpYS1sYWJlbD1cIlJlbW92ZSByb3dcIj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInByb2R1Y3ROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gUHJvZHVjdCBOYW1lIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50LnRleHR9fSA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImNhdGVnb3J5TmFtZVwiICpuZ0lmPVwic2hvd0NhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gQ2F0ZWdvcnkgTmFtZSA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+IHt7ZWxlbWVudC5jYXRlZ29yeX19IDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3ViQ2F0ZWdvcnlcIiAqbmdJZj1cInNob3dTdWJjYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+U3ViIENhdGVnb3J5IDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50LnN1YkNhdGVnb3J5fX0gPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJwcmljZVwiICpuZ0lmPVwic2hvd1ByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5QcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZXhhbXBsZS1mdWxsLXdpZHRoIHNlbGVjdC1wcmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5QcmljZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJzZWxlY3RlZFByb2R1Y3RzLmF0KGkpLmdldCgncHJpY2UnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQbGVhc2UgZW50ZXIgcHJpY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJzZWxlY3RlZFByb2R1Y3RzLmF0KGkpLmdldCgncHJpY2UnKS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaWNlIGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIlF1YW50aXR5XCIgKm5nSWY9XCJzaG93UXVhbnRpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBRdWFudGl0eSA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImV4YW1wbGUtZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5RdWFudGl0eTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJzZWxlY3RlZFByb2R1Y3RzLmF0KGkpLmdldCgncXVhbnRpdHknKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiIG1pbj1cIjFcIiBzdGVwPVwiMVwiIChpbnB1dCk9XCJvblF1YW50aXR5Q2hhbmdlKCRldmVudCwgaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJzZWxlY3RlZFByb2R1Y3RzLmF0KGkpLmdldCgncXVhbnRpdHknKS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmllbGQgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInNlbGVjdGVkUHJvZHVjdHMuYXQoaSkuZ2V0KCdxdWFudGl0eScpLmhhc0Vycm9yKCdtaW4nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YW50aXR5IGNhbiBub3QgYmUgbGVzcyB0aGFuIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInNlbGVjdGVkUHJvZHVjdHMuYXQoaSkuZ2V0KCdxdWFudGl0eScpLmhhc0Vycm9yKCdwYXR0ZXJuJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFscyBub3QgYWxsb3dlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJza3VOdW1iZXJcIiAqbmdJZj1cInNob3dTa3VOdW1iZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBTS1UgTnVtYmVyIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57e2VsZW1lbnQ/LnNrdU51bWJlcn19IDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwic2hvd0FsbHByb2R1Y3RzQ29sdW1uc1wiPjwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogc2hvd0FsbHByb2R1Y3RzQ29sdW1ucztcIj48L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Nob3dCbGFuaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1kYXRhLW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyBkYXRhIGZvdW5kLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJzLWFjdGlvbi1zdGVwLW9uZVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT09ICdzZWxlY3QtcHJvZHVjdHMnXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJnb1RvTmV4dFBhZ2UoKVwiIFtkaXNhYmxlZF09XCJzZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoID8gZmFsc2UgOiB0cnVlXCJcclxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgbWF0LXJhaXNlZC1idXR0b24+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJmYWxzZVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFicy1hY3Rpb25cIiAqbmdJZj1cImN1cnJlbnRQYWdlID09PSAnZWRpdC1zYXZlJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItYWN0aW9uLXdycFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImdvVG9QcmV2aW91c1BhZ2UoKVwiPkJhY2s8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwib25TdWJtaXQoKVwiPkFkZDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbWF0LWRpYWxvZy1hY3Rpb25zPiJdfQ==
@@ -3853,13 +3853,6 @@ class AddOnProductsComponent {
3853
3853
  const levelTwoId = this.levelTwoId ? this.levelTwoId : 0;
3854
3854
  const levelThreeId = this.levelThreeId ? this.levelThreeId : 0;
3855
3855
  const levelFourId = this.levelFourId ? this.levelFourId : 0;
3856
- console.log('pageNumber=>', this.pageNumber);
3857
- console.log('pageSize=>', this.pageSize);
3858
- console.log('levelOneId=>', levelOneId);
3859
- console.log('levelTwoId=>', levelTwoId);
3860
- console.log('levelThreeId=>', levelThreeId);
3861
- console.log('levelFourId=>', levelFourId);
3862
- debugger;
3863
3856
  this.commonSevice.loadProducts(this.pageNumber, this.pageSize, search, true, false, levelOneId, levelTwoId, levelThreeId, levelFourId).subscribe(response => {
3864
3857
  var _a;
3865
3858
  this.spinnerFlag = false;