@wemake4u/form-player-se 1.0.7 → 1.0.9

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZHMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZHluYW1pYy1maWVsZHMvZHluYW1pYy1maWVsZHMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWdpc3RlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWdpc3Rlci5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUR5bmFtaWNGaWVsZHNDb21wb25lbnQge1xyXG4gIGdldFJlZ2lzdGVyKCk6IFJlZ2lzdGVyU2VydmljZTtcclxufVxyXG4iXX0=
@@ -256,12 +256,21 @@ export class DynamicFormComponent {
256
256
  return newGroup;
257
257
  };
258
258
  const resizeFormArray = this.resizeFormArray;
259
+ const addItem = function () {
260
+ let newGroup = createItem();
261
+ this.push(newGroup);
262
+ return newGroup;
263
+ };
264
+ const prepareArray = (array) => {
265
+ array.addItem = addItem;
266
+ array.resize = resize;
267
+ };
259
268
  const resize = function (size) {
260
269
  const newArray = resizeFormArray(this, size, createItem);
261
- newArray.resize = resize;
270
+ prepareArray(newArray);
262
271
  formGroup.setControl(itemComponent.path, newArray);
263
272
  };
264
- formArray.resize = resize;
273
+ prepareArray(formArray);
265
274
  return formArray;
266
275
  }
267
276
  resizeFormArray(formArray, size, createItem) {
@@ -482,4 +491,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
482
491
  }], activeNav: [{
483
492
  type: Input
484
493
  }] } });
485
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFFOUMsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUNQLGlCQUFpQixFQUFFLFlBQVksRUFDakQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDUSxTQUFTLEVBQ1AsVUFBVSxFQUN6QixTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFDTCwyQkFBMkIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFDM0Usb0JBQW9CLEVBQUUsZ0NBQWdDLEVBQUUsaUNBQWlDLEVBRTVGLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxl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QixFQUFFLHFCQUFxQixFQUFFLHlCQUF5Qjt3QkFDN0Usb0JBQW9CLEVBQUUsZ0NBQWdDLEVBQUUsaUNBQWlDO3dCQUN6RixzQkFBc0IsQ0FBQyxhQUNoQjt3QkFDVCxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLGVBQWU7cUJBQ3ZFLGlCQUNjLGlCQUFpQixDQUFDLElBQUk7NE1BRzVCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFvR0gsU0FBUztzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL3R5cGVzL3R5cGluZ3MuZC50c1wiIC8+XHJcblxyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kgXHJcbiAgLCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiwgRXZlbnRFbWl0dGVyXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2xPcHRpb25zLCBBYnN0cmFjdENvbnRyb2xcclxuICAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzLCBWYWxpZGF0aW9uRXJyb3JzLFxyXG4gIEZvcm1BcnJheVxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFByb2dyYW1tYWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IHBhdGNoRm9ybSB9IGZyb20gJy4uL3V0aWxzL3BhdGNoRm9ybSc7XHJcbmltcG9ydCB7IGdyb3VwQnlSb3cgfSBmcm9tICcuLi91dGlscy9ncm91cEJ5Um93JztcclxuaW1wb3J0IHsgQ29tbWFuZEV2ZW50LCBFdmVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWV0YWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IER5bmFtaWNGaWVsZHNDb21wb25lbnQgfSBmcm9tICcuLi9keW5hbWljLWZpZWxkcy9keW5hbWljLWZpZWxkcy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIFNpcmlvU2lkZW5hdk1vYmlsZUNvbXBvbmVudCwgU2lyaW9TaWRlbmF2Q29tcG9uZW50LCBTaXJpb1NpZGVuYXZJdGVtQ29tcG9uZW50XHJcbiAgLCBTaXJpb0J1dHRvbkNvbXBvbmVudCwgU2lyaW9TdGVwcGVyUHJvZ3Jlc3NCYXJDb21wb25lbnQsIFNpcmlvU3RlcHBlclByb2dyZXNzSXRlbUNvbXBvbmVudFxyXG4gICwgU2lyaW9TdGVwcGVyUHJvZ3Jlc3NTdGF0dXNcclxufSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgUmVnaXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVnaXN0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9yZWdpc3Rlci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEaXNhYmxlRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZGlzYWJsZWZvcm0uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udHJvbCB9IGZyb20gJy4uL2NvbnRyb2xzL2NvbnRyb2wnOyBcclxuXHJcbmltcG9ydCB7IFRleHRzIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsZS1pdCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1keW5hbWljLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW1xyXG4gICAgJy4uL3NoYXJlZC9ib290c3RyYXAtZ3JpZC5zY3NzJyxcclxuICAgICcuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuY3NzJ1xyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXHJcbiAgICAsIFJlZ2lzdGVyRGlyZWN0aXZlLCBEaXNhYmxlRm9ybURpcmVjdGl2ZVxyXG4gICAgLCBTaXJpb1NpZGVuYXZNb2JpbGVDb21wb25lbnQsIFNpcmlvU2lkZW5hdkNvbXBvbmVudCwgU2lyaW9TaWRlbmF2SXRlbUNvbXBvbmVudFxyXG4gICAgLCBTaXJpb0J1dHRvbkNvbXBvbmVudCwgU2lyaW9TdGVwcGVyUHJvZ3Jlc3NCYXJDb21wb25lbnQsIFNpcmlvU3RlcHBlclByb2dyZXNzSXRlbUNvbXBvbmVudFxyXG4gICAgLCBEeW5hbWljRmllbGRzQ29tcG9uZW50XSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIEV2ZW50U2VydmljZSwgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSwgUmVnaXN0ZXJTZXJ2aWNlLCBNZXRhZGF0YVNlcnZpY2VcclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHNjaGVtYTogYW55O1xyXG4gIEBJbnB1dCgpIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSB2YWx1ZTogYW55ID0ge307XHJcbiAgQElucHV0KCkgc2hvd05hdjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd05hdkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1Byb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHJvZ3Jlc3NTdGF0dXM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBpbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybUdyb3VwPigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvbW1hbmQgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1hbmRFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgYWN0aXZlTmF2Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyXHJcbiAgICAsIHByaXZhdGUgcHJvZ3JhbW1hYmlsaXR5OiBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZXZlbnRzOiBFdmVudFNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSByZWdpc3RlclNlcnZpY2U6IFJlZ2lzdGVyU2VydmljZVxyXG4gICAgLCBwcml2YXRlIG1ldGFkYXRhOiBNZXRhZGF0YVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBUZXh0cyA9IFRleHRzO1xyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXJIYW5kbGVycygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbnRlcm5hbENoYW5nZSA9IGZhbHNlO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snc2NoZW1hJ10pIHtcclxuICAgICAgaWYgKCF0aGlzLmZvcm1Hcm91cCkge1xyXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY2xlYXJDb250cm9scygpO1xyXG5cclxuICAgICAgdGhpcy5jbGVhckhhbmRsZXJzKCk7XHJcblxyXG4gICAgICBjb25zdCBzY2hlbWEgPSBjaGFuZ2VzWydzY2hlbWEnXS5jdXJyZW50VmFsdWU7XHJcblxyXG4gICAgICBjb25zdCBhbGxGb3JtcyA9IGdyb3VwQnlSb3coc2NoZW1hLmZvcm1zID8/IFtdKTtcclxuXHJcbiAgICAgIHRoaXMubWV0YWRhdGEuc2V0U2NoZW1hKHNjaGVtYSk7XHJcblxyXG4gICAgICB0aGlzLm1ldGFkYXRhLnNldEZvcm1zKGFsbEZvcm1zKTtcclxuXHJcbiAgICAgIHRoaXMuX2Zvcm1zID0gYWxsRm9ybXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1RlbXBsYXRlICE9PSB0cnVlKTs7XHJcblxyXG4gICAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG5cclxuICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB0aGlzLmZvcm1Hcm91cC52YWx1ZTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgcGF0Y2hGb3JtKHRoaXMuZm9ybUdyb3VwLCB0aGlzLnZhbHVlKTsgICAgICAgIFxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5pbml0aWFsaXplZClcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVkLmVtaXQodGhpcy5mb3JtR3JvdXApO1xyXG5cclxuICAgICAgdGhpcy5yZWdpc3RlckhhbmRsZXJzKCk7ICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ3ZhbHVlJ10pIHtcclxuICAgICAgaWYgKHRoaXMuaW50ZXJuYWxDaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLmludGVybmFsQ2hhbmdlID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAucmVzZXQodGhpcy5kZWZhdWx0VmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICBwYXRjaEZvcm0odGhpcy5mb3JtR3JvdXAsIHRoaXMudmFsdWUsIHtcclxuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGZvcm1zKCk6IEFycmF5PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1zO1xyXG4gIH1cclxuXHJcbiAgY2FuUHJldmlvdXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRQcmV2aW91cygpICE9IC0xOyBcclxuICB9XHJcblxyXG4gIGdvUHJldmlvdXMoKSB7XHJcbiAgICBpZiAodGhpcy5jYW5QcmV2aW91cygpKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlTmF2ID0gdGhpcy5nZXRQcmV2aW91cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuTmV4dCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldE5leHQoKSAhPSAtMTsgICAgXHJcbiAgfVxyXG5cclxuICBnb05leHQoKSB7XHJcbiAgICBpZiAodGhpcy5jYW5OZXh0KCkpIHsgXHJcbiAgICAgIHRoaXMuYWN0aXZlTmF2ID0gdGhpcy5nZXROZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9scygpOiBDb250cm9sW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXJTZXJ2aWNlLmdldENvbnRyb2xzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9sKG5hbWU6IHN0cmluZyk6IENvbnRyb2wgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXJTZXJ2aWNlLmdldENvbnRyb2wobmFtZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZlTmF2KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlTmF2O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgYWN0aXZlTmF2KHZhbHVlOiBudW1iZXIpIHtcclxuICAgIGlmICh2YWx1ZSA+PSAwICYmIHZhbHVlIDwgdGhpcy5nZXRNYXhOYXYoKSkge1xyXG4gICAgICB0aGlzLl9hY3RpdmVOYXYgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmFjdGl2ZU5hdkNoYW5nZS5lbWl0KHRoaXMuX2FjdGl2ZU5hdik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEZvcm1Hcm91cChwYXRoOiBzdHJpbmcgfCBudWxsKTogRm9ybUdyb3VwIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSBwYXRoID8gdGhpcy5mb3JtR3JvdXAuZ2V0KHBhdGgpIDogdGhpcy5mb3JtR3JvdXA7XHJcbiAgICBpZiAoIShjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRyb2wgaXMgbm90IGEgRm9ybUdyb3VwJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldEZvcm1TdGF0dXMoZm9ybTogYW55LCBpbmRleDogbnVtYmVyKTogU2lyaW9TdGVwcGVyUHJvZ3Jlc3NTdGF0dXMge1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnQgPSBpbmRleCA9PSB0aGlzLmFjdGl2ZU5hdjtcclxuXHJcbiAgICBpZiAodGhpcy5wcm9ncmVzc1N0YXR1cyAmJiAhY3VycmVudCAmJiB0aGlzLmhhc1ZhbHVlKGZvcm0ucGF0aCkpIHtcclxuICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5nZXRGb3JtR3JvdXAoZm9ybS5wYXRoKTtcclxuICAgICAgcmV0dXJuIGZvcm1Hcm91cC52YWxpZCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBcImFjdGl2ZVwiO1xyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlRm9ybSh0aXRsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9ybXMuZmluZEluZGV4KGZvcm0gPT4gZm9ybS50aXRsZSA9PT0gdGl0bGUpO1xyXG4gICAgaWYgKGluZGV4ICE9IC0xKVxyXG4gICAgICB0aGlzLmFjdGl2ZU5hdiA9IGluZGV4O1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVCb29sZWFuKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZUJvb2xlYW4odGhpcy5mb3JtR3JvdXAsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIG9uQ29tbWFuZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgX2Zvcm1zOiBBcnJheTxhbnk+ID0gW107XHJcblxyXG4gIHByaXZhdGUgX2FjdGl2ZU5hdjogbnVtYmVyID0gMDtcclxuXHJcbiAgcHJpdmF0ZSBkZWZhdWx0VmFsdWU6IGFueSA9IHsgfTtcclxuXHJcbiAgcHJpdmF0ZSBnZXROZXh0KCk6IG51bWJlciB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmFjdGl2ZU5hdiArIDE7XHJcbiAgICBjb25zdCBtYXggPSB0aGlzLmdldE1heE5hdigpO1xyXG5cclxuICAgIHdoaWxlIChpbmRleCA8IG1heCkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZChpbmRleCkpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXg7XHJcbiAgICAgIH1cclxuICAgICAgaW5kZXgrKztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFByZXZpb3VzKCk6IG51bWJlciB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmFjdGl2ZU5hdiAtIDE7XHJcblxyXG4gICAgd2hpbGUgKGluZGV4ID49IDApIHtcclxuICAgICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQoaW5kZXgpKSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4O1xyXG4gICAgICB9XHJcbiAgICAgIGluZGV4LS07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRNYXhOYXYoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3Jtcy5sZW5ndGggPz8gMDsgICAgXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBpc0Rpc2FibGVkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHZhciBmb3JtID0gdGhpcy5fZm9ybXNbaW5kZXhdO1xyXG5cclxuICAgIGlmICghZm9ybSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmV2YWx1YXRlQm9vbGVhbihmb3JtLmRpc2FibGVkKSA/PyBmYWxzZTtcclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSBjbGVhckNvbnRyb2xzKCk6IHZvaWQge1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAucmVtb3ZlQ29udHJvbChrZXkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZ2lzdGVySGFuZGxlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWxDaGFuZ2UgPSB0cnVlO1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vbkNvbW1hbmRTdWJzY3JpcHRpb24gPSB0aGlzLmV2ZW50cy5vbkNvbW1hbmQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm9uQ29tbWFuZClcclxuICAgICAgICB0aGlzLm9uQ29tbWFuZC5lbWl0KGRhdGEpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBjbGVhckhhbmRsZXJzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub25Db21tYW5kU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMub25Db21tYW5kU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkRm9ybSgpIHtcclxuICAgIHRoaXMuZm9ybXMuZm9yRWFjaCgoZm9ybTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IHRoaXMuYXBwbHlQYXRoKHRoaXMuZmIsIHRoaXMuZm9ybUdyb3VwLCBmb3JtLnBhdGgpO1xyXG4gICAgICBmb3JtLnJvd3M/LmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5hZGRDb250cm9scyh0aGlzLmZiLCBjdXJyZW50R3JvdXAsIHJvdy5jb21wb25lbnRzKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQ29udHJvbHMoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29tcG9uZW50czogQXJyYXk8YW55Pikge1xyXG4gICAgbGV0IGZvcm1Db21wb25lbnQgPSB0aGlzO1xyXG5cclxuICAgIGNvbXBvbmVudHM/LmZvckVhY2goKGNvbXBvbmVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzRm9ybUNvbXBvbmVudChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKGNvbXBvbmVudCk7XHJcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuZ2V0VmFsaWRhdG9ycyhmb3JtR3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uczogRm9ybUNvbnRyb2xPcHRpb25zID0ge1xyXG4gICAgICAgICAgdmFsaWRhdG9yczogdmFsaWRhdG9ycyB8fCBbXSxcclxuICAgICAgICAgIHVwZGF0ZU9uOiB0aGlzLmdldFVwZGF0ZU9uKGNvbXBvbmVudCkgfHwgXCJjaGFuZ2VcIlxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1CdWlsZGVyLmNvbnRyb2woZGVmYXVsdFZhbHVlLCBvcHRpb25zKTtcclxuICAgICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChjb21wb25lbnQua2V5LCBjb250cm9sKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmlzQ29udGFpbmVyQ29tcG9uZW50KGNvbXBvbmVudCkpIHtcclxuICAgICAgICBjb25zdCBjb250YWluZXJzID0gdGhpcy5nZXRDb250YWluZXJzKGNvbXBvbmVudCk7XHJcbiAgICAgICAgY29udGFpbmVycz8uZm9yRWFjaCgoY29udGFpbmVyOiB7IHBhdGg6IGFueTsgcm93czogYW55IH0pID0+IHtcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IHRoaXMuYXBwbHlQYXRoKGZvcm1CdWlsZGVyLCBmb3JtR3JvdXAsIGNvbnRhaW5lci5wYXRoKTtcclxuICAgICAgICAgIGNvbnRhaW5lci5yb3dzPy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBmb3JtQ29tcG9uZW50LmFkZENvbnRyb2xzKGZvcm1CdWlsZGVyLCBjdXJyZW50R3JvdXAsIHJvdy5jb21wb25lbnRzKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNBcnJheUNvbXBvbmVudChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbUNvbXBvbmVudCA9IHRoaXMuZ2V0QXJyYXlJdGVtKGNvbXBvbmVudCk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtQ29tcG9uZW50LnBhdGgpIHtcclxuICAgICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuY3JlYXRlRm9ybUFycmF5KGZvcm1CdWlsZGVyLCBmb3JtR3JvdXAsIGl0ZW1Db21wb25lbnQpO1xyXG4gICAgICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woaXRlbUNvbXBvbmVudC5wYXRoLCBmb3JtQXJyYXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZvcm1BcnJheShmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBpdGVtQ29tcG9uZW50OiBhbnkpOiBGb3JtQXJyYXkge1xyXG4gICAgY29uc3QgZm9ybUNvbXBvbmVudCA9IHRoaXM7XHJcblxyXG4gICAgY29uc3QgZm9ybUFycmF5ID0gZm9ybUJ1aWxkZXIuYXJyYXk8Rm9ybUdyb3VwPihbXSk7XHJcblxyXG4gICAgZm9ybUdyb3VwLmFkZENvbnRyb2woaXRlbUNvbXBvbmVudC5wYXRoLCBmb3JtQXJyYXkpO1xyXG5cclxuICAgIGNvbnN0IGNyZWF0ZUl0ZW0gPSBmdW5jdGlvbiAoKTogRm9ybUdyb3VwIHtcclxuICAgICAgbGV0IG5ld0dyb3VwID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe30pO1xyXG4gICAgICBpdGVtQ29tcG9uZW50LnJvd3M/LmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgZm9ybUNvbXBvbmVudC5hZGRDb250cm9scyhmb3JtQnVpbGRlciwgbmV3R3JvdXAsIHJvdy5jb21wb25lbnRzKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBuZXdHcm91cDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcmVzaXplRm9ybUFycmF5ID0gdGhpcy5yZXNpemVGb3JtQXJyYXk7XHJcblxyXG4gICAgY29uc3QgcmVzaXplID0gZnVuY3Rpb24gKHRoaXM6IEZvcm1BcnJheSwgc2l6ZTogbnVtYmVyKSB7XHJcbiAgICAgIGNvbnN0IG5ld0FycmF5ID0gcmVzaXplRm9ybUFycmF5KHRoaXMsIHNpemUsIGNyZWF0ZUl0ZW0pO1xyXG4gICAgICAobmV3QXJyYXkgYXMgYW55KS5yZXNpemUgPSByZXNpemU7XHJcbiAgICAgIGZvcm1Hcm91cC5zZXRDb250cm9sKGl0ZW1Db21wb25lbnQucGF0aCwgbmV3QXJyYXkpO1xyXG4gICAgfTtcclxuXHJcbiAgICAoZm9ybUFycmF5IGFzIGFueSkucmVzaXplID0gcmVzaXplO1xyXG5cclxuICAgIHJldHVybiBmb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2l6ZUZvcm1BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSwgc2l6ZTogbnVtYmVyLCBjcmVhdGVJdGVtOiAoKSA9PiBGb3JtR3JvdXApIDogRm9ybUFycmF5IHtcclxuICAgIGlmIChmb3JtQXJyYXkubGVuZ3RoIDwgc2l6ZSkge1xyXG4gICAgICBjb25zdCBuZXdBcnJheSA9IG5ldyBGb3JtQXJyYXkoZm9ybUFycmF5LmNvbnRyb2xzKTtcclxuICAgICAgd2hpbGUgKGZvcm1BcnJheS5sZW5ndGggPCBzaXplKSB7XHJcbiAgICAgICAgbmV3QXJyYXkucHVzaChjcmVhdGVJdGVtKCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdBcnJheTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZvcm1BcnJheS5sZW5ndGggPiBzaXplKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRm9ybUFycmF5KGZvcm1BcnJheS5jb250cm9scy5zbGljZSgwLCBzaXplKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZvcm1BcnJheTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlQYXRoKGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHBhdGg6IHN0cmluZykge1xyXG4gICAgaWYgKCFwYXRoKSB7XHJcbiAgICAgIHJldHVybiBmb3JtR3JvdXA7XHJcbiAgICB9XHJcbiAgICBsZXQgY3VycmVudEdyb3VwOiBGb3JtR3JvdXAgPSBmb3JtR3JvdXA7XHJcbiAgICB0aGlzLnNwbGl0UGF0aChwYXRoKS5mb3JFYWNoKChzZWdtZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGV4aXN0R3JvdXAgPSBjdXJyZW50R3JvdXAuZ2V0KHNlZ21lbnQpO1xyXG4gICAgICBpZiAoZXhpc3RHcm91cCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgIGN1cnJlbnRHcm91cCA9IGV4aXN0R3JvdXA7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGV4aXN0R3JvdXApIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjcmVhdGUgZm9ybSBncm91cCBiZWNhdXNlIGFuIGVsZW1lbnQgd2l0aCBwYXRoICR7c2VnbWVudH0gYWxyZWFkeSBleGlzdHNgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBzZWdtZW50R3JvdXAgPSBmb3JtQnVpbGRlci5ncm91cCh7fSk7XHJcbiAgICAgICAgY3VycmVudEdyb3VwLmFkZENvbnRyb2woc2VnbWVudCwgc2VnbWVudEdyb3VwKTtcclxuICAgICAgICBjdXJyZW50R3JvdXAgPSBzZWdtZW50R3JvdXA7XHJcbiAgICAgIH0gXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjdXJyZW50R3JvdXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFZhbGlkYXRvcnMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbXBvbmVudDogYW55KTogVmFsaWRhdG9yRm5bXSB8IG51bGwge1xyXG5cclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgICBpZiAoY29tcG9uZW50Py52YWxpZGF0ZT8ucmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghQXJyYXkuaXNBcnJheShjb21wb25lbnQudmFsaWRhdGlvbnMpKSB7XHJcbiAgICAgIGlmICh2YWxpZGF0b3JzLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnQudmFsaWRhdGlvbnM/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucHJvZ3JhbW1hYmlsaXR5LmlzRXhwcmVzc2lvbihpdGVtLmV4cHJlc3Npb24pKVxyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IFwidmFsaWRhdGVcIikge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLnZhbGlkYXRlRm4oZm9ybUdyb3VwLCBpdGVtKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoaXRlbS50eXBlID09PSBcImludmFsaWRhdGVcIikge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLmludmFsaWRhdGVGbihmb3JtR3JvdXAsIGl0ZW0pKTtcclxuICAgICAgfSAgICAgIFxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHZhbGlkYXRvcnMubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIHJldHVybiB2YWxpZGF0b3JzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZUZuKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBpdGVtOiBhbnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuXHJcbiAgICAgIC8vaWYgKCFjb250cm9sLnRvdWNoZWQpXHJcbiAgICAgIC8vICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIHZhciB2YWxpZCA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlVW5hcnkoZm9ybUdyb3VwLCBpdGVtLmV4cHJlc3Npb24sIGNvbnRyb2wudmFsdWUpO1xyXG5cclxuICAgICAgaWYgKCF2YWxpZCkge1xyXG4gICAgICAgIHJldHVybiB7IGVycm9yOiB0cnVlLCBtZXNzYWdlOiBpdGVtLm1lc3NhZ2UgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGludmFsaWRhdGVGbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgaXRlbTogYW55KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcblxyXG4gICAgICAvL2lmICghY29udHJvbC50b3VjaGVkKVxyXG4gICAgICAvLyAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICB2YXIgaW52YWxpZCA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlVW5hcnkoZm9ybUdyb3VwLCBpdGVtLmV4cHJlc3Npb24sIGNvbnRyb2wudmFsdWUpO1xyXG5cclxuICAgICAgaWYgKGludmFsaWQpIHtcclxuICAgICAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogaXRlbS5tZXNzYWdlIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0Zvcm1Db21wb25lbnQoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcImNoZWNrYm94XCI6XHJcbiAgICAgIGNhc2UgXCJjaGVja2xpc3RcIjpcclxuICAgICAgY2FzZSBcImRhdGV0aW1lXCI6XHJcbiAgICAgIGNhc2UgXCJmaWxlcGlja2VyXCI6XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgY2FzZSBcInJhZGlvXCI6XHJcbiAgICAgIGNhc2UgXCJzZWxlY3RcIjpcclxuICAgICAgY2FzZSBcInRhZ2xpc3RcIjpcclxuICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0ZmllbGRcIjpcclxuICAgICAgY2FzZSBcInJhbmdlXCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0NvbnRhaW5lckNvbXBvbmVudChjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwiZ3JvdXBcIjpcclxuICAgICAgY2FzZSBcInRhYlwiOlxyXG4gICAgICBjYXNlIFwiYWNjb3JkaW9uXCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0FycmF5Q29tcG9uZW50KGNvbXBvbmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJkeW5hbWljbGlzdFwiOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSBnZXRBcnJheUl0ZW0oY29tcG9uZW50OiBhbnkpOiB7IHBhdGg6IGFueTsgcm93czogYW55IH0ge1xyXG4gICAgaWYgKGNvbXBvbmVudC50eXBlID09PSAnZHluYW1pY2xpc3QnKSB7XHJcbiAgICAgIHJldHVybiB7IHBhdGg6IGNvbXBvbmVudC5wYXRoLCByb3dzOiBjb21wb25lbnQucm93cyB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IHBhdGg6IG51bGwsIHJvd3M6IFtdIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbnRhaW5lcnMoY29tcG9uZW50OiBhbnkpOiB7IHBhdGg6IGFueTsgcm93czogYW55IH1bXSB7XHJcbiAgICBpZiAoY29tcG9uZW50LnR5cGUgPT09ICdncm91cCcpIHtcclxuICAgICAgcmV0dXJuIFt7IHBhdGg6IGNvbXBvbmVudC5wYXRoLCByb3dzOiBjb21wb25lbnQucm93cyB9XTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbXBvbmVudC50eXBlID09PSAndGFiJ1xyXG4gICAgICB8fCBjb21wb25lbnQudHlwZSA9PT0gJ2FjY29yZGlvbicpIHtcclxuICAgICAgcmV0dXJuIGNvbXBvbmVudC5wYW5lbHMubWFwKChwYW5lbDogYW55KSA9PiAoe1xyXG4gICAgICAgIHBhdGg6IHBhbmVsLnBhdGgsXHJcbiAgICAgICAgcm93czogdGhpcy5tZXRhZGF0YS5nZXRGb3JtQnlOYW1lKHBhbmVsLnRlbXBsYXRlKT8ucm93cyA/PyBbXVxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRVcGRhdGVPbihjb21wb25lbnQ6IGFueSk6IGFueSB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0ZmllbGRcIjpcclxuICAgICAgICByZXR1cm4gXCJibHVyXCI7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERlZmF1bHRWYWx1ZShjb21wb25lbnQ6IGFueSk6IGFueSB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgIGNhc2UgXCJyYWRpb1wiOlxyXG4gICAgICBjYXNlIFwic2VsZWN0XCI6XHJcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5kZWZhdWx0VmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5kZWZhdWx0VmFsdWUgYXMgbnVtYmVyO1xyXG4gICAgICBjYXNlIFwiY2hlY2tib3hcIjpcclxuICAgICAgICByZXR1cm4gY29tcG9uZW50LmRlZmF1bHRWYWx1ZSBhcyBib29sZWFuO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzcGxpdFBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgaWYgKCFwYXRoKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXRoXHJcbiAgICAgIC5zcGxpdCgnLicpXHJcbiAgICAgIC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LnRyaW0oKSlcclxuICAgICAgLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQubGVuZ3RoID4gMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1ZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMDtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBjbGFzcz1cIm5nc1wiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICA8IS0tICNyZWdpb24gcHJvZ3Jlc3MgLS0+XHJcbiAgICAgIDxuZ3gtc2lyaW8tc3RlcHBlci1wcm9ncmVzcy1iYXIgKm5nSWY9XCJzaG93UHJvZ3Jlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudENsaWNrKT1cImFjdGl2YXRlRm9ybSgkZXZlbnQuZGF0YS5sYWJlbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYXNEcm9wZG93bl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZHJvcERvd25MYWJlbF09XCJUZXh0cy5TaG93XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9ybSBvZiBmb3JtcywgbGV0IGZvcm1JbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8bmd4LXNpcmlvLXN0ZXBwZXItcHJvZ3Jlc3MtaXRlbSAqbmdJZj1cIiFldmFsdWF0ZUJvb2xlYW4oZm9ybS5kaXNhYmxlZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hhc05hdmlnYXRpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cImdldEZvcm1TdGF0dXMoZm9ybSxmb3JtSW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJmb3JtLnRpdGxlXCIgLz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZ3gtc2lyaW8tc3RlcHBlci1wcm9ncmVzcy1iYXI+XHJcbiAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgIDwhLS0gI3JlZ2lvbiBmb3JtIGRpc2FibGUgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvcm0gb2YgZm9ybXNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpkaXNhYmxlRm9ybT1cIntcclxuICAgICAgICAgICAgZGlzYWJsZWQ6IGV2YWx1YXRlQm9vbGVhbihmb3JtLmRpc2FibGVkKSxcclxuICAgICAgICAgICAgZm9ybUdyb3VwOiBmb3JtR3JvdXAsXHJcbiAgICAgICAgICAgIHBhdGg6IGZvcm0ucGF0aFxyXG4gICAgICAgICAgfVwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dOYXZcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcblxyXG4gICAgICAgICAgPCEtLSAjcmVnaW9uIHNpZGVuYXYgLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpZGVuYXZUZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2PlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvcm0gb2YgZm9ybXMsIGxldCBzZWN0aW9uSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFldmFsdWF0ZUJvb2xlYW4oZm9ybS5kaXNhYmxlZClcIj5cclxuICAgICAgICAgICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2LWl0ZW0gW2lzQWN0aXZlXT1cImFjdGl2ZU5hdiA9PSBzZWN0aW9uSW5kZXhcIiAoY2xpY2spPVwiYWN0aXZlTmF2ID0gc2VjdGlvbkluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZm9ybS50aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L25neC1zaXJpby1zaWRlbmF2LWl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZ3gtc2lyaW8tc2lkZW5hdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2LW1vYmlsZSBjbGFzcz1cImQtYmxvY2sgZC1sZy1ub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Blbk1lbnVMYWJlbD1cIkFwcmkgTWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5NZW51QXJpYUxhYmVsPVwiQXByaSBNZW51XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VNZW51TGFiZWw9XCJDaGl1ZGkgTWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlTWVudUFyaWFMYWJlbD1cIkNoaXVkaSBNZW51XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlbmF2VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmd4LXNpcmlvLXNpZGVuYXYtbW9iaWxlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZSBkLWxnLWJsb2NrXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlbmF2VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yLWhvcml6b250YWxcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZWxlbWVudC1mb3JtXCIgW25nQ2xhc3NdPVwic2hvd05hdiA/ICdjb2wtbWQtMTEnIDogJ2NvbC1tZC0xNidcIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9ybSBvZiBmb3JtcywgbGV0IHNlY3Rpb25JbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlTmF2ID09IHNlY3Rpb25JbmRleCAmJiAhZXZhbHVhdGVCb29sZWFuKGZvcm0uZGlzYWJsZWQpXCJcclxuICAgICAgICAgICAgICAgI2RlZmF1bHRcclxuICAgICAgICAgICAgICAgW3JlZ2lzdGVyXT1cImZvcm1cIlxyXG4gICAgICAgICAgICAgICBbY29tcG9uZW50UmVmXT1cImRlZmF1bHRcIj5cclxuICAgICAgICAgICAgPGFwcC1keW5hbWljLWZpZWxkcyBbZm9ybUdyb3VwXT1cImdldEZvcm1Hcm91cChmb3JtLnBhdGgpXCIgW3Jvd3NdPVwiZm9ybS5yb3dzXCI+PC9hcHAtZHluYW1pYy1maWVsZHM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dOYXZCdXR0b25cIj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHNlY3Rpb24tbmF2c1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggY29sLW1kLThcIj5cclxuICAgICAgICAgICAgICA8bmd4LXNpcmlvLWJ1dHRvbiBbY29sb3JdPVwibnVsbFwiIFtkaXNhYmxlZF09XCIhY2FuTmV4dCgpXCIgKGNsaWNrKT1cImdvTmV4dCgpXCIgY2xhc3M9XCJuZXh0U2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAge3sgVGV4dHMuTmV4dFNlY3Rpb24gfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi1yaWdodFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9uZ3gtc2lyaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGNvbC1tZC04XCI+XHJcbiAgICAgICAgICAgICAgPG5neC1zaXJpby1idXR0b24gW2NvbG9yXT1cIm51bGxcIiBbZGlzYWJsZWRdPVwiIWNhblByZXZpb3VzKClcIiAoY2xpY2spPVwiZ29QcmV2aW91cygpXCIgY2xhc3M9XCJwcmV2U2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYS1zb2xpZCBmYS1jaGV2cm9uLWxlZnRcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTBweFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIHt7IFRleHRzLlByZXZpb3VzU2VjdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbmd4LXNpcmlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZm9ybT5cclxuXHJcblxyXG5cclxuIl19
494
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFFOUMsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUNQLGlCQUFpQixFQUFFLFlBQVksRUFDakQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDUSxTQUFTLEVBQ1AsVUFBVSxFQUN6QixTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFDTCwyQkFBMkIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFDM0Usb0JBQW9CLEVBQUUsZ0NBQWdDLEVBQUUsaUNBQWlDLEVBRTVGLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxl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Z0JBQUUsbUJBQW1CLHFiQUN2QyxpQkFBaUIsNkZBQUUsb0JBQW9CLG1GQUN2QywyQkFBMkIsNFRBQUUscUJBQXFCLHFHQUFFLHlCQUF5QiwrYUFDN0Usb0JBQW9CLHFaQUFFLGdDQUFnQywyS0FBRSxpQ0FBaUMsOElBQ3pGLHNCQUFzQjs7NEZBTWYsb0JBQW9CO2tCQWxCaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FNaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQjt3QkFDdkMsaUJBQWlCLEVBQUUsb0JBQW9CO3dCQUN2QywyQkFBMkIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUI7d0JBQzdFLG9CQUFvQixFQUFFLGdDQUFnQyxFQUFFLGlDQUFpQzt3QkFDekYsc0JBQXNCLENBQUMsYUFDaEI7d0JBQ1QsWUFBWSxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxlQUFlO3FCQUN2RSxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzRNQUc1QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBb0dILFNBQVM7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi90eXBlcy90eXBpbmdzLmQudHNcIiAvPlxyXG5cclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IFxyXG4gICwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24sIEV2ZW50RW1pdHRlclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1Db250cm9sT3B0aW9ucywgQWJzdHJhY3RDb250cm9sXHJcbiAgLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycywgVmFsaWRhdGlvbkVycm9ycyxcclxuICBGb3JtQXJyYXlcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBwYXRjaEZvcm0gfSBmcm9tICcuLi91dGlscy9wYXRjaEZvcm0nO1xyXG5pbXBvcnQgeyBncm91cEJ5Um93IH0gZnJvbSAnLi4vdXRpbHMvZ3JvdXBCeVJvdyc7XHJcbmltcG9ydCB7IENvbW1hbmRFdmVudCwgRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21ldGFkYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEeW5hbWljRmllbGRzQ29tcG9uZW50IH0gZnJvbSAnLi4vZHluYW1pYy1maWVsZHMvZHluYW1pYy1maWVsZHMuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBTaXJpb1NpZGVuYXZNb2JpbGVDb21wb25lbnQsIFNpcmlvU2lkZW5hdkNvbXBvbmVudCwgU2lyaW9TaWRlbmF2SXRlbUNvbXBvbmVudFxyXG4gICwgU2lyaW9CdXR0b25Db21wb25lbnQsIFNpcmlvU3RlcHBlclByb2dyZXNzQmFyQ29tcG9uZW50LCBTaXJpb1N0ZXBwZXJQcm9ncmVzc0l0ZW1Db21wb25lbnRcclxuICAsIFNpcmlvU3RlcHBlclByb2dyZXNzU3RhdHVzXHJcbn0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcbmltcG9ydCB7IFJlZ2lzdGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlZ2lzdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWdpc3RlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvcmVnaXN0ZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRGlzYWJsZUZvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Rpc2FibGVmb3JtLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRyb2wgfSBmcm9tICcuLi9jb250cm9scy9jb250cm9sJzsgXHJcblxyXG5pbXBvcnQgeyBUZXh0cyB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGUtaXQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZHluYW1pYy1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFtcclxuICAgICcuLi9zaGFyZWQvYm9vdHN0cmFwLWdyaWQuc2NzcycsXHJcbiAgICAnLi9keW5hbWljLWZvcm0uY29tcG9uZW50LmNzcydcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZVxyXG4gICAgLCBSZWdpc3RlckRpcmVjdGl2ZSwgRGlzYWJsZUZvcm1EaXJlY3RpdmVcclxuICAgICwgU2lyaW9TaWRlbmF2TW9iaWxlQ29tcG9uZW50LCBTaXJpb1NpZGVuYXZDb21wb25lbnQsIFNpcmlvU2lkZW5hdkl0ZW1Db21wb25lbnRcclxuICAgICwgU2lyaW9CdXR0b25Db21wb25lbnQsIFNpcmlvU3RlcHBlclByb2dyZXNzQmFyQ29tcG9uZW50LCBTaXJpb1N0ZXBwZXJQcm9ncmVzc0l0ZW1Db21wb25lbnRcclxuICAgICwgRHluYW1pY0ZpZWxkc0NvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBFdmVudFNlcnZpY2UsIFByb2dyYW1tYWJpbGl0eVNlcnZpY2UsIFJlZ2lzdGVyU2VydmljZSwgTWV0YWRhdGFTZXJ2aWNlXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBzY2hlbWE6IGFueTtcclxuICBASW5wdXQoKSBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgdmFsdWU6IGFueSA9IHt9O1xyXG4gIEBJbnB1dCgpIHNob3dOYXY6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dOYXZCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHByb2dyZXNzU3RhdHVzOiBib29sZWFuID0gdHJ1ZTtcclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgaW5pdGlhbGl6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4oKTtcclxuICBAT3V0cHV0KCkgb25Db21tYW5kID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tYW5kRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIGFjdGl2ZU5hdkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlclxyXG4gICAgLCBwcml2YXRlIHByb2dyYW1tYWJpbGl0eTogUHJvZ3JhbW1hYmlsaXR5U2VydmljZVxyXG4gICAgLCBwcml2YXRlIGV2ZW50czogRXZlbnRTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgcmVnaXN0ZXJTZXJ2aWNlOiBSZWdpc3RlclNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBtZXRhZGF0YTogTWV0YWRhdGFTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgVGV4dHMgPSBUZXh0cztcclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFySGFuZGxlcnMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW50ZXJuYWxDaGFuZ2UgPSBmYWxzZTtcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3NjaGVtYSddKSB7XHJcbiAgICAgIGlmICghdGhpcy5mb3JtR3JvdXApIHtcclxuICAgICAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNsZWFyQ29udHJvbHMoKTtcclxuXHJcbiAgICAgIHRoaXMuY2xlYXJIYW5kbGVycygpO1xyXG5cclxuICAgICAgY29uc3Qgc2NoZW1hID0gY2hhbmdlc1snc2NoZW1hJ10uY3VycmVudFZhbHVlO1xyXG5cclxuICAgICAgY29uc3QgYWxsRm9ybXMgPSBncm91cEJ5Um93KHNjaGVtYS5mb3JtcyA/PyBbXSk7XHJcblxyXG4gICAgICB0aGlzLm1ldGFkYXRhLnNldFNjaGVtYShzY2hlbWEpO1xyXG5cclxuICAgICAgdGhpcy5tZXRhZGF0YS5zZXRGb3JtcyhhbGxGb3Jtcyk7XHJcblxyXG4gICAgICB0aGlzLl9mb3JtcyA9IGFsbEZvcm1zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNUZW1wbGF0ZSAhPT0gdHJ1ZSk7O1xyXG5cclxuICAgICAgdGhpcy5idWlsZEZvcm0oKTtcclxuXHJcbiAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gdGhpcy5mb3JtR3JvdXAudmFsdWU7XHJcblxyXG4gICAgICBpZiAodGhpcy52YWx1ZSkge1xyXG4gICAgICAgIHBhdGNoRm9ybSh0aGlzLmZvcm1Hcm91cCwgdGhpcy52YWx1ZSk7ICAgICAgICBcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpXHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZC5lbWl0KHRoaXMuZm9ybUdyb3VwKTtcclxuXHJcbiAgICAgIHRoaXMucmVnaXN0ZXJIYW5kbGVycygpOyAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWyd2YWx1ZSddKSB7XHJcbiAgICAgIGlmICh0aGlzLmludGVybmFsQ2hhbmdlKSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbENoYW5nZSA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KHRoaXMuZGVmYXVsdFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgcGF0Y2hGb3JtKHRoaXMuZm9ybUdyb3VwLCB0aGlzLnZhbHVlLCB7XHJcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBmb3JtcygpOiBBcnJheTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtcztcclxuICB9XHJcblxyXG4gIGNhblByZXZpb3VzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJldmlvdXMoKSAhPSAtMTsgXHJcbiAgfVxyXG5cclxuICBnb1ByZXZpb3VzKCkge1xyXG4gICAgaWYgKHRoaXMuY2FuUHJldmlvdXMoKSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZU5hdiA9IHRoaXMuZ2V0UHJldmlvdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbk5leHQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXROZXh0KCkgIT0gLTE7ICAgIFxyXG4gIH1cclxuXHJcbiAgZ29OZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuY2FuTmV4dCgpKSB7IFxyXG4gICAgICB0aGlzLmFjdGl2ZU5hdiA9IHRoaXMuZ2V0TmV4dCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbHMoKTogQ29udHJvbFtdIHtcclxuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyU2VydmljZS5nZXRDb250cm9scygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbChuYW1lOiBzdHJpbmcpOiBDb250cm9sIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyU2VydmljZS5nZXRDb250cm9sKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjdGl2ZU5hdigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZU5hdjtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGFjdGl2ZU5hdih2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsdWUgPj0gMCAmJiB2YWx1ZSA8IHRoaXMuZ2V0TWF4TmF2KCkpIHtcclxuICAgICAgdGhpcy5fYWN0aXZlTmF2ID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hY3RpdmVOYXZDaGFuZ2UuZW1pdCh0aGlzLl9hY3RpdmVOYXYpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtR3JvdXAocGF0aDogc3RyaW5nIHwgbnVsbCk6IEZvcm1Hcm91cCB7XHJcbiAgICBjb25zdCBjb250cm9sID0gcGF0aCA/IHRoaXMuZm9ybUdyb3VwLmdldChwYXRoKSA6IHRoaXMuZm9ybUdyb3VwO1xyXG4gICAgaWYgKCEoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb250cm9sIGlzIG5vdCBhIEZvcm1Hcm91cCcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtU3RhdHVzKGZvcm06IGFueSwgaW5kZXg6IG51bWJlcik6IFNpcmlvU3RlcHBlclByb2dyZXNzU3RhdHVzIHtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50ID0gaW5kZXggPT0gdGhpcy5hY3RpdmVOYXY7XHJcblxyXG4gICAgaWYgKHRoaXMucHJvZ3Jlc3NTdGF0dXMgJiYgIWN1cnJlbnQgJiYgdGhpcy5oYXNWYWx1ZShmb3JtLnBhdGgpKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuZ2V0Rm9ybUdyb3VwKGZvcm0ucGF0aCk7XHJcbiAgICAgIHJldHVybiBmb3JtR3JvdXAudmFsaWQgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gXCJhY3RpdmVcIjtcclxuICAgIH0gICAgXHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZUZvcm0odGl0bGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZvcm1zLmZpbmRJbmRleChmb3JtID0+IGZvcm0udGl0bGUgPT09IHRpdGxlKTtcclxuICAgIGlmIChpbmRleCAhPSAtMSlcclxuICAgICAgdGhpcy5hY3RpdmVOYXYgPSBpbmRleDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlQm9vbGVhbih2YWx1ZTogYm9vbGVhbiB8IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGVCb29sZWFuKHRoaXMuZm9ybUdyb3VwLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBvbkNvbW1hbmRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF9mb3JtczogQXJyYXk8YW55PiA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9hY3RpdmVOYXY6IG51bWJlciA9IDA7XHJcblxyXG4gIHByaXZhdGUgZGVmYXVsdFZhbHVlOiBhbnkgPSB7IH07XHJcblxyXG4gIHByaXZhdGUgZ2V0TmV4dCgpOiBudW1iZXIge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5hY3RpdmVOYXYgKyAxO1xyXG4gICAgY29uc3QgbWF4ID0gdGhpcy5nZXRNYXhOYXYoKTtcclxuXHJcbiAgICB3aGlsZSAoaW5kZXggPCBtYXgpIHtcclxuICAgICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQoaW5kZXgpKSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4O1xyXG4gICAgICB9XHJcbiAgICAgIGluZGV4Kys7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aW91cygpOiBudW1iZXIge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5hY3RpdmVOYXYgLSAxO1xyXG5cclxuICAgIHdoaWxlIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKGluZGV4KSkge1xyXG4gICAgICAgIHJldHVybiBpbmRleDtcclxuICAgICAgfVxyXG4gICAgICBpbmRleC0tO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TWF4TmF2KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybXMubGVuZ3RoID8/IDA7ICAgIFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgaXNEaXNhYmxlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICB2YXIgZm9ybSA9IHRoaXMuX2Zvcm1zW2luZGV4XTtcclxuXHJcbiAgICBpZiAoIWZvcm0pXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5ldmFsdWF0ZUJvb2xlYW4oZm9ybS5kaXNhYmxlZCkgPz8gZmFsc2U7XHJcbiAgfVxyXG4gIFxyXG4gIHByaXZhdGUgY2xlYXJDb250cm9scygpOiB2b2lkIHtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woa2V5KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWdpc3RlckhhbmRsZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmludGVybmFsQ2hhbmdlID0gdHJ1ZTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25Db21tYW5kU3Vic2NyaXB0aW9uID0gdGhpcy5ldmVudHMub25Db21tYW5kLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5vbkNvbW1hbmQpXHJcbiAgICAgICAgdGhpcy5vbkNvbW1hbmQuZW1pdChkYXRhKTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgY2xlYXJIYW5kbGVycygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9uQ29tbWFuZFN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLm9uQ29tbWFuZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEZvcm0oKSB7XHJcbiAgICB0aGlzLmZvcm1zLmZvckVhY2goKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBjdXJyZW50R3JvdXAgPSB0aGlzLmFwcGx5UGF0aCh0aGlzLmZiLCB0aGlzLmZvcm1Hcm91cCwgZm9ybS5wYXRoKTtcclxuICAgICAgZm9ybS5yb3dzPy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRkQ29udHJvbHModGhpcy5mYiwgY3VycmVudEdyb3VwLCByb3cuY29tcG9uZW50cyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZENvbnRyb2xzKGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbXBvbmVudHM6IEFycmF5PGFueT4pIHtcclxuICAgIGxldCBmb3JtQ29tcG9uZW50ID0gdGhpcztcclxuXHJcbiAgICBjb21wb25lbnRzPy5mb3JFYWNoKChjb21wb25lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0Zvcm1Db21wb25lbnQoY29tcG9uZW50KSkge1xyXG4gICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSB0aGlzLmdldERlZmF1bHRWYWx1ZShjb21wb25lbnQpO1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLmdldFZhbGlkYXRvcnMoZm9ybUdyb3VwLCBjb21wb25lbnQpO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IEZvcm1Db250cm9sT3B0aW9ucyA9IHtcclxuICAgICAgICAgIHZhbGlkYXRvcnM6IHZhbGlkYXRvcnMgfHwgW10sXHJcbiAgICAgICAgICB1cGRhdGVPbjogdGhpcy5nZXRVcGRhdGVPbihjb21wb25lbnQpIHx8IFwiY2hhbmdlXCJcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtQnVpbGRlci5jb250cm9sKGRlZmF1bHRWYWx1ZSwgb3B0aW9ucyk7XHJcbiAgICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woY29tcG9uZW50LmtleSwgY29udHJvbCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5pc0NvbnRhaW5lckNvbXBvbmVudChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVycyA9IHRoaXMuZ2V0Q29udGFpbmVycyhjb21wb25lbnQpO1xyXG4gICAgICAgIGNvbnRhaW5lcnM/LmZvckVhY2goKGNvbnRhaW5lcjogeyBwYXRoOiBhbnk7IHJvd3M6IGFueSB9KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50R3JvdXAgPSB0aGlzLmFwcGx5UGF0aChmb3JtQnVpbGRlciwgZm9ybUdyb3VwLCBjb250YWluZXIucGF0aCk7XHJcbiAgICAgICAgICBjb250YWluZXIucm93cz8uZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZm9ybUNvbXBvbmVudC5hZGRDb250cm9scyhmb3JtQnVpbGRlciwgY3VycmVudEdyb3VwLCByb3cuY29tcG9uZW50cyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmlzQXJyYXlDb21wb25lbnQoY29tcG9uZW50KSkge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Db21wb25lbnQgPSB0aGlzLmdldEFycmF5SXRlbShjb21wb25lbnQpO1xyXG5cclxuICAgICAgICBpZiAoaXRlbUNvbXBvbmVudC5wYXRoKSB7XHJcbiAgICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmNyZWF0ZUZvcm1BcnJheShmb3JtQnVpbGRlciwgZm9ybUdyb3VwLCBpdGVtQ29tcG9uZW50KTtcclxuICAgICAgICAgIGZvcm1Hcm91cC5hZGRDb250cm9sKGl0ZW1Db21wb25lbnQucGF0aCwgZm9ybUFycmF5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVGb3JtQXJyYXkoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgaXRlbUNvbXBvbmVudDogYW55KTogRm9ybUFycmF5IHtcclxuICAgIGNvbnN0IGZvcm1Db21wb25lbnQgPSB0aGlzO1xyXG5cclxuICAgIGNvbnN0IGZvcm1BcnJheSA9IGZvcm1CdWlsZGVyLmFycmF5PEZvcm1Hcm91cD4oW10pO1xyXG5cclxuICAgIGZvcm1Hcm91cC5hZGRDb250cm9sKGl0ZW1Db21wb25lbnQucGF0aCwgZm9ybUFycmF5KTtcclxuXHJcbiAgICBjb25zdCBjcmVhdGVJdGVtID0gZnVuY3Rpb24gKCk6IEZvcm1Hcm91cCB7XHJcbiAgICAgIGxldCBuZXdHcm91cCA9IGZvcm1CdWlsZGVyLmdyb3VwKHt9KTtcclxuICAgICAgaXRlbUNvbXBvbmVudC5yb3dzPy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgIGZvcm1Db21wb25lbnQuYWRkQ29udHJvbHMoZm9ybUJ1aWxkZXIsIG5ld0dyb3VwLCByb3cuY29tcG9uZW50cyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gbmV3R3JvdXA7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlc2l6ZUZvcm1BcnJheSA9IHRoaXMucmVzaXplRm9ybUFycmF5O1xyXG5cclxuICAgIGNvbnN0IGFkZEl0ZW0gPSBmdW5jdGlvbiAodGhpczogRm9ybUFycmF5KSB7XHJcbiAgICAgIGxldCBuZXdHcm91cCA9IGNyZWF0ZUl0ZW0oKTtcclxuICAgICAgdGhpcy5wdXNoKG5ld0dyb3VwKTtcclxuICAgICAgcmV0dXJuIG5ld0dyb3VwO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBwcmVwYXJlQXJyYXkgPSAoYXJyYXk6IGFueSkgPT4ge1xyXG4gICAgICBhcnJheS5hZGRJdGVtID0gYWRkSXRlbTtcclxuICAgICAgYXJyYXkucmVzaXplID0gcmVzaXplO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlc2l6ZSA9IGZ1bmN0aW9uICh0aGlzOiBGb3JtQXJyYXksIHNpemU6IG51bWJlcikge1xyXG4gICAgICBjb25zdCBuZXdBcnJheSA9IHJlc2l6ZUZvcm1BcnJheSh0aGlzLCBzaXplLCBjcmVhdGVJdGVtKTtcclxuICAgICAgcHJlcGFyZUFycmF5KG5ld0FycmF5KTtcclxuICAgICAgZm9ybUdyb3VwLnNldENvbnRyb2woaXRlbUNvbXBvbmVudC5wYXRoLCBuZXdBcnJheSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHByZXBhcmVBcnJheShmb3JtQXJyYXkpO1xyXG5cclxuICAgIHJldHVybiBmb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2l6ZUZvcm1BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSwgc2l6ZTogbnVtYmVyLCBjcmVhdGVJdGVtOiAoKSA9PiBGb3JtR3JvdXApIDogRm9ybUFycmF5IHtcclxuICAgIGlmIChmb3JtQXJyYXkubGVuZ3RoIDwgc2l6ZSkge1xyXG4gICAgICBjb25zdCBuZXdBcnJheSA9IG5ldyBGb3JtQXJyYXkoZm9ybUFycmF5LmNvbnRyb2xzKTtcclxuICAgICAgd2hpbGUgKGZvcm1BcnJheS5sZW5ndGggPCBzaXplKSB7XHJcbiAgICAgICAgbmV3QXJyYXkucHVzaChjcmVhdGVJdGVtKCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdBcnJheTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZvcm1BcnJheS5sZW5ndGggPiBzaXplKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRm9ybUFycmF5KGZvcm1BcnJheS5jb250cm9scy5zbGljZSgwLCBzaXplKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZvcm1BcnJheTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlQYXRoKGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHBhdGg6IHN0cmluZykge1xyXG4gICAgaWYgKCFwYXRoKSB7XHJcbiAgICAgIHJldHVybiBmb3JtR3JvdXA7XHJcbiAgICB9XHJcbiAgICBsZXQgY3VycmVudEdyb3VwOiBGb3JtR3JvdXAgPSBmb3JtR3JvdXA7XHJcbiAgICB0aGlzLnNwbGl0UGF0aChwYXRoKS5mb3JFYWNoKChzZWdtZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGV4aXN0R3JvdXAgPSBjdXJyZW50R3JvdXAuZ2V0KHNlZ21lbnQpO1xyXG4gICAgICBpZiAoZXhpc3RHcm91cCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgIGN1cnJlbnRHcm91cCA9IGV4aXN0R3JvdXA7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGV4aXN0R3JvdXApIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjcmVhdGUgZm9ybSBncm91cCBiZWNhdXNlIGFuIGVsZW1lbnQgd2l0aCBwYXRoICR7c2VnbWVudH0gYWxyZWFkeSBleGlzdHNgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBzZWdtZW50R3JvdXAgPSBmb3JtQnVpbGRlci5ncm91cCh7fSk7XHJcbiAgICAgICAgY3VycmVudEdyb3VwLmFkZENvbnRyb2woc2VnbWVudCwgc2VnbWVudEdyb3VwKTtcclxuICAgICAgICBjdXJyZW50R3JvdXAgPSBzZWdtZW50R3JvdXA7XHJcbiAgICAgIH0gXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjdXJyZW50R3JvdXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFZhbGlkYXRvcnMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbXBvbmVudDogYW55KTogVmFsaWRhdG9yRm5bXSB8IG51bGwge1xyXG5cclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgICBpZiAoY29tcG9uZW50Py52YWxpZGF0ZT8ucmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghQXJyYXkuaXNBcnJheShjb21wb25lbnQudmFsaWRhdGlvbnMpKSB7XHJcbiAgICAgIGlmICh2YWxpZGF0b3JzLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnQudmFsaWRhdGlvbnM/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucHJvZ3JhbW1hYmlsaXR5LmlzRXhwcmVzc2lvbihpdGVtLmV4cHJlc3Npb24pKVxyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IFwidmFsaWRhdGVcIikge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLnZhbGlkYXRlRm4oZm9ybUdyb3VwLCBpdGVtKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoaXRlbS50eXBlID09PSBcImludmFsaWRhdGVcIikge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLmludmFsaWRhdGVGbihmb3JtR3JvdXAsIGl0ZW0pKTtcclxuICAgICAgfSAgICAgIFxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHZhbGlkYXRvcnMubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIHJldHVybiB2YWxpZGF0b3JzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZUZuKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBpdGVtOiBhbnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuXHJcbiAgICAgIC8vaWYgKCFjb250cm9sLnRvdWNoZWQpXHJcbiAgICAgIC8vICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIHZhciB2YWxpZCA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlVW5hcnkoZm9ybUdyb3VwLCBpdGVtLmV4cHJlc3Npb24sIGNvbnRyb2wudmFsdWUpO1xyXG5cclxuICAgICAgaWYgKCF2YWxpZCkge1xyXG4gICAgICAgIHJldHVybiB7IGVycm9yOiB0cnVlLCBtZXNzYWdlOiBpdGVtLm1lc3NhZ2UgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGludmFsaWRhdGVGbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgaXRlbTogYW55KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcblxyXG4gICAgICAvL2lmICghY29udHJvbC50b3VjaGVkKVxyXG4gICAgICAvLyAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICB2YXIgaW52YWxpZCA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlVW5hcnkoZm9ybUdyb3VwLCBpdGVtLmV4cHJlc3Npb24sIGNvbnRyb2wudmFsdWUpO1xyXG5cclxuICAgICAgaWYgKGludmFsaWQpIHtcclxuICAgICAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogaXRlbS5tZXNzYWdlIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0Zvcm1Db21wb25lbnQoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcImNoZWNrYm94XCI6XHJcbiAgICAgIGNhc2UgXCJjaGVja2xpc3RcIjpcclxuICAgICAgY2FzZSBcImRhdGV0aW1lXCI6XHJcbiAgICAgIGNhc2UgXCJmaWxlcGlja2VyXCI6XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgY2FzZSBcInJhZGlvXCI6XHJcbiAgICAgIGNhc2UgXCJzZWxlY3RcIjpcclxuICAgICAgY2FzZSBcInRhZ2xpc3RcIjpcclxuICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0ZmllbGRcIjpcclxuICAgICAgY2FzZSBcInJhbmdlXCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0NvbnRhaW5lckNvbXBvbmVudChjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwiZ3JvdXBcIjpcclxuICAgICAgY2FzZSBcInRhYlwiOlxyXG4gICAgICBjYXNlIFwiYWNjb3JkaW9uXCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0FycmF5Q29tcG9uZW50KGNvbXBvbmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJkeW5hbWljbGlzdFwiOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSBnZXRBcnJheUl0ZW0oY29tcG9uZW50OiBhbnkpOiB7IHBhdGg6IGFueTsgcm93czogYW55IH0ge1xyXG4gICAgaWYgKGNvbXBvbmVudC50eXBlID09PSAnZHluYW1pY2xpc3QnKSB7XHJcbiAgICAgIHJldHVybiB7IHBhdGg6IGNvbXBvbmVudC5wYXRoLCByb3dzOiBjb21wb25lbnQucm93cyB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IHBhdGg6IG51bGwsIHJvd3M6IFtdIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbnRhaW5lcnMoY29tcG9uZW50OiBhbnkpOiB7IHBhdGg6IGFueTsgcm93czogYW55IH1bXSB7XHJcbiAgICBpZiAoY29tcG9uZW50LnR5cGUgPT09ICdncm91cCcpIHtcclxuICAgICAgcmV0dXJuIFt7IHBhdGg6IGNvbXBvbmVudC5wYXRoLCByb3dzOiBjb21wb25lbnQucm93cyB9XTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbXBvbmVudC50eXBlID09PSAndGFiJ1xyXG4gICAgICB8fCBjb21wb25lbnQudHlwZSA9PT0gJ2FjY29yZGlvbicpIHtcclxuICAgICAgcmV0dXJuIGNvbXBvbmVudC5wYW5lbHMubWFwKChwYW5lbDogYW55KSA9PiAoe1xyXG4gICAgICAgIHBhdGg6IHBhbmVsLnBhdGgsXHJcbiAgICAgICAgcm93czogdGhpcy5tZXRhZGF0YS5nZXRGb3JtQnlOYW1lKHBhbmVsLnRlbXBsYXRlKT8ucm93cyA/PyBbXVxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRVcGRhdGVPbihjb21wb25lbnQ6IGFueSk6IGFueSB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0ZmllbGRcIjpcclxuICAgICAgICByZXR1cm4gXCJibHVyXCI7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERlZmF1bHRWYWx1ZShjb21wb25lbnQ6IGFueSk6IGFueSB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgIGNhc2UgXCJyYWRpb1wiOlxyXG4gICAgICBjYXNlIFwic2VsZWN0XCI6XHJcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5kZWZhdWx0VmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5kZWZhdWx0VmFsdWUgYXMgbnVtYmVyO1xyXG4gICAgICBjYXNlIFwiY2hlY2tib3hcIjpcclxuICAgICAgICByZXR1cm4gY29tcG9uZW50LmRlZmF1bHRWYWx1ZSBhcyBib29sZWFuO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzcGxpdFBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgaWYgKCFwYXRoKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXRoXHJcbiAgICAgIC5zcGxpdCgnLicpXHJcbiAgICAgIC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LnRyaW0oKSlcclxuICAgICAgLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQubGVuZ3RoID4gMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1ZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMDtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBjbGFzcz1cIm5nc1wiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICA8IS0tICNyZWdpb24gcHJvZ3Jlc3MgLS0+XHJcbiAgICAgIDxuZ3gtc2lyaW8tc3RlcHBlci1wcm9ncmVzcy1iYXIgKm5nSWY9XCJzaG93UHJvZ3Jlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudENsaWNrKT1cImFjdGl2YXRlRm9ybSgkZXZlbnQuZGF0YS5sYWJlbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYXNEcm9wZG93bl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZHJvcERvd25MYWJlbF09XCJUZXh0cy5TaG93XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9ybSBvZiBmb3JtcywgbGV0IGZvcm1JbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8bmd4LXNpcmlvLXN0ZXBwZXItcHJvZ3Jlc3MtaXRlbSAqbmdJZj1cIiFldmFsdWF0ZUJvb2xlYW4oZm9ybS5kaXNhYmxlZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hhc05hdmlnYXRpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cImdldEZvcm1TdGF0dXMoZm9ybSxmb3JtSW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJmb3JtLnRpdGxlXCIgLz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZ3gtc2lyaW8tc3RlcHBlci1wcm9ncmVzcy1iYXI+XHJcbiAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgIDwhLS0gI3JlZ2lvbiBmb3JtIGRpc2FibGUgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvcm0gb2YgZm9ybXNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpkaXNhYmxlRm9ybT1cIntcclxuICAgICAgICAgICAgZGlzYWJsZWQ6IGV2YWx1YXRlQm9vbGVhbihmb3JtLmRpc2FibGVkKSxcclxuICAgICAgICAgICAgZm9ybUdyb3VwOiBmb3JtR3JvdXAsXHJcbiAgICAgICAgICAgIHBhdGg6IGZvcm0ucGF0aFxyXG4gICAgICAgICAgfVwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dOYXZcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcblxyXG4gICAgICAgICAgPCEtLSAjcmVnaW9uIHNpZGVuYXYgLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpZGVuYXZUZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2PlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvcm0gb2YgZm9ybXMsIGxldCBzZWN0aW9uSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFldmFsdWF0ZUJvb2xlYW4oZm9ybS5kaXNhYmxlZClcIj5cclxuICAgICAgICAgICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2LWl0ZW0gW2lzQWN0aXZlXT1cImFjdGl2ZU5hdiA9PSBzZWN0aW9uSW5kZXhcIiAoY2xpY2spPVwiYWN0aXZlTmF2ID0gc2VjdGlvbkluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZm9ybS50aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L25neC1zaXJpby1zaWRlbmF2LWl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZ3gtc2lyaW8tc2lkZW5hdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2LW1vYmlsZSBjbGFzcz1cImQtYmxvY2sgZC1sZy1ub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Blbk1lbnVMYWJlbD1cIkFwcmkgTWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5NZW51QXJpYUxhYmVsPVwiQXByaSBNZW51XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VNZW51TGFiZWw9XCJDaGl1ZGkgTWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlTWVudUFyaWFMYWJlbD1cIkNoaXVkaSBNZW51XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlbmF2VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmd4LXNpcmlvLXNpZGVuYXYtbW9iaWxlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZSBkLWxnLWJsb2NrXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlbmF2VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yLWhvcml6b250YWxcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZWxlbWVudC1mb3JtXCIgW25nQ2xhc3NdPVwic2hvd05hdiA/ICdjb2wtbWQtMTEnIDogJ2NvbC1tZC0xNidcIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9ybSBvZiBmb3JtcywgbGV0IHNlY3Rpb25JbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlTmF2ID09IHNlY3Rpb25JbmRleCAmJiAhZXZhbHVhdGVCb29sZWFuKGZvcm0uZGlzYWJsZWQpXCJcclxuICAgICAgICAgICAgICAgI2RlZmF1bHRcclxuICAgICAgICAgICAgICAgW3JlZ2lzdGVyXT1cImZvcm1cIlxyXG4gICAgICAgICAgICAgICBbY29tcG9uZW50UmVmXT1cImRlZmF1bHRcIj5cclxuICAgICAgICAgICAgPGFwcC1keW5hbWljLWZpZWxkcyBbZm9ybUdyb3VwXT1cImdldEZvcm1Hcm91cChmb3JtLnBhdGgpXCIgW3Jvd3NdPVwiZm9ybS5yb3dzXCI+PC9hcHAtZHluYW1pYy1maWVsZHM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dOYXZCdXR0b25cIj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHNlY3Rpb24tbmF2c1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggY29sLW1kLThcIj5cclxuICAgICAgICAgICAgICA8bmd4LXNpcmlvLWJ1dHRvbiBbY29sb3JdPVwibnVsbFwiIFtkaXNhYmxlZF09XCIhY2FuTmV4dCgpXCIgKGNsaWNrKT1cImdvTmV4dCgpXCIgY2xhc3M9XCJuZXh0U2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAge3sgVGV4dHMuTmV4dFNlY3Rpb24gfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi1yaWdodFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9uZ3gtc2lyaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGNvbC1tZC04XCI+XHJcbiAgICAgICAgICAgICAgPG5neC1zaXJpby1idXR0b24gW2NvbG9yXT1cIm51bGxcIiBbZGlzYWJsZWRdPVwiIWNhblByZXZpb3VzKClcIiAoY2xpY2spPVwiZ29QcmV2aW91cygpXCIgY2xhc3M9XCJwcmV2U2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYS1zb2xpZCBmYS1jaGV2cm9uLWxlZnRcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTBweFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIHt7IFRleHRzLlByZXZpb3VzU2VjdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbmd4LXNpcmlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZm9ybT5cclxuXHJcblxyXG5cclxuIl19
@@ -138,7 +138,7 @@ export class ProgrammabilityService {
138
138
  }
139
139
  const options = new ProxyOptions();
140
140
  options.extend = {
141
- parent: this.getParent(formGroup),
141
+ parent: this.getParentContext(formGroup),
142
142
  getFormGroup: () => this.proxyService.getProxy(formGroup),
143
143
  getScope: () => this.scope ? this.scope.proxy() : null,
144
144
  controls: () => this.register ? this.register.proxy() : null,
@@ -151,6 +151,17 @@ export class ProgrammabilityService {
151
151
  proxyFn(options);
152
152
  return this.proxyService.getProxy(formGroup.value, options);
153
153
  }
154
+ getParentContext(formGroup) {
155
+ const parent = this.getParent(formGroup);
156
+ if (!parent) {
157
+ return null;
158
+ }
159
+ const options = new ProxyOptions();
160
+ options.extend = {
161
+ parent: this.getParentContext(parent)
162
+ };
163
+ return this.proxyService.getProxy(parent.value, options);
164
+ }
154
165
  getParent(formGroup) {
155
166
  let parent = formGroup.parent;
156
167
  while (parent instanceof FormArray) {
@@ -215,4 +226,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
215
226
  }] }, { type: i6.ScopeService, decorators: [{
216
227
  type: Optional
217
228
  }] }] });
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFNBQVMsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZFLE9BQU8sRUFBZ0IsWUFBWSxFQUFpQixNQUFNLDJCQUEyQixDQUFDO0FBSXRGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQUcxQyxNQUFNLE9BQU8sc0JBQXNCO0lBRWI7SUFDUjtJQUNBO0lBQ0E7SUFDWTtJQUNBO0lBTHhCLFlBQW9CLFdBQXdCLEVBQ2hDLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFlBQTBCLEVBQ2QsUUFBeUIsRUFDekIsS0FBbUI7UUFMdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixVQUFLLEdBQUwsS0FBSyxDQUFjO0lBQ3ZDLENBQUM7SUFFRyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV2QyxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBbUI7UUFDOUIsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENB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QUksV0FBVyxHQUFHLFVBQVUsQ0FBQztnQkFFN0IsT0FBTyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQy9ELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTTt3QkFDcEIsTUFBTTtvQkFDUixVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztvQkFDL0IsV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7Z0JBRUQsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDekMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDNUMsSUFBSSxPQUFPLEVBQUUsQ0FBQzt3QkFDWixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3JCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzt3R0F0T1Usc0JBQXNCOzRHQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQU9KLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZlZWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmVlbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2NvcGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2NvcGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb3h5U2VydmljZSwgUHJveHlPcHRpb25zLCBQcm94eUNvbmZpZ0ZuIH0gZnJvbSAnLi4vc2VydmljZXMvcHJveHkuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlZ2lzdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2Vha1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy93ZWFrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmVlbFNlcnZpY2U6IEZlZWxTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgd2Vha1NlcnZpY2U6IFdlYWtTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgcHJveHlTZXJ2aWNlOiBQcm94eVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZVxyXG4gICAgLCBAT3B0aW9uYWwoKSBwcml2YXRlIHJlZ2lzdGVyOiBSZWdpc3RlclNlcnZpY2VcclxuICAgICwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzY29wZTogU2NvcGVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBpc0V4cHJlc3Npb24odGV4dDogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRleHQgIT0gbnVsbCAmJiB0ZXh0LnN0YXJ0c1dpdGgoXCI9XCIpO1xyXG4gIH07XHJcblxyXG4gIGdldEV4cHJlc3Npb24odGV4dDogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odGV4dCkpXHJcbiAgICAgIHJldHVybiB0ZXh0IS5zdWJzdHJpbmcoMSk7XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9O1xyXG5cclxuICBldmFsdWF0ZVN0cmluZyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSkpIGFzIHN0cmluZztcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZSA/PyBcIlwiO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVCb29sZWFuKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgY29uc3Qgc3RyVmFsdWU6IHN0cmluZyA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24oc3RyVmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24oc3RyVmFsdWUpLCBvcHRpb25zKSBhcyBib29sZWFuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlTnVtYmVyKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBzdHJWYWx1ZTogc3RyaW5nID0gdmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbihzdHJWYWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbihzdHJWYWx1ZSkpIGFzIG51bWJlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHsgfSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlVGVtcGxhdGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogYW55IHtcclxuXHJcbiAgICBsZXQgdGVtcGxhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgdGVtcGxhdGUgPSB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSkgYXMgc3RyaW5nO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRlbXBsYXRlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZXZhbFRlbXBsYXRlKGZvcm1Hcm91cCwgdGVtcGxhdGUgPz8gXCJcIik7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVVuYXJ5KGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCwgaW5wdXQ6IGFueSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxVbmFyeVRlc3QoZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpLCBpbnB1dCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FjaGVhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBldmFsVW5hcnlUZXN0KGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIGlucHV0OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZlZWxTZXJ2aWNlLmV2YWxVbmFyeVRlc3QoZXhwcmVzc2lvblxyXG4gICAgICAgICwgdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cClcclxuICAgICAgICAsIGlucHV0KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5sb2coZXhwcmVzc2lvbiwgZSk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBldmFsRXhwcmVzc2lvbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IGFueSB7XHJcbiAgICBjb25zdCBldmFsdWF0ZSA9ICgpID0+IHtcclxuICAgICAgdHJ5IHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmVlbFNlcnZpY2UuZXZhbEV4cHJlc3Npb24oZXhwcmVzc2lvblxyXG4gICAgICAgICAgLCB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwLCBvcHRpb25zKSlcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGV4cHJlc3Npb24sIGUpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNhY2hlYWJsZSA9IG9wdGlvbnMuY2FjaGVhYmxlID8/IHRoaXMuY2FjaGVhYmxlO1xyXG5cclxuICAgIGlmIChjYWNoZWFibGUpIHtcclxuICAgICAgY29uc3Qgd2F0Y2hLZXkgPSBgOndhdGNoKCR7ZXhwcmVzc2lvbn0pYDtcclxuXHJcbiAgICAgIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCB3YXRjaEtleSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMud2F0Y2hFeHByZXNzaW9uKGZvcm1Hcm91cCwgZXhwcmVzc2lvblxyXG4gICAgICAgICAgLCAoKSA9PiB0aGlzLndlYWtTZXJ2aWNlLmludmFsaWRhdGUodGhpcywgZXhwcmVzc2lvbikpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLndlYWtTZXJ2aWNlLmNhbGwodGhpcywgZXhwcmVzc2lvbiwgZXZhbHVhdGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBldmFsdWF0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBldmFsVGVtcGxhdGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZyk6IGFueSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mZWVsU2VydmljZS5ldmFsVGVtcGxhdGUoZXhwcmVzc2lvblxyXG4gICAgICAgICwgdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCkpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUHJveHkoZm9ybUdyb3VwOiBGb3JtR3JvdXAgfCBudWxsXHJcbiAgICAsIHByb3h5Rm46ICgob3B0aW9uczogUHJveHlPcHRpb25zKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsKTogYW55IHtcclxuXHJcbiAgICBpZiAoIWZvcm1Hcm91cCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvcHRpb25zID0gbmV3IFByb3h5T3B0aW9ucygpO1xyXG5cclxuICAgIG9wdGlvbnMuZXh0ZW5kID0ge1xyXG4gICAgICBwYXJlbnQ6IHRoaXMuZ2V0UGFyZW50KGZvcm1Hcm91cCksXHJcbiAgICAgIGdldEZvcm1Hcm91cDogKCkgPT4gdGhpcy5wcm94eVNlcnZpY2UuZ2V0UHJveHkoZm9ybUdyb3VwKSxcclxuICAgICAgZ2V0U2NvcGU6ICgpID0+IHRoaXMuc2NvcGUgPyB0aGlzLnNjb3BlLnByb3h5KCkgOiBudWxsLFxyXG4gICAgICBjb250cm9sczogKCkgPT4gdGhpcy5yZWdpc3RlciA/IHRoaXMucmVnaXN0ZXIucHJveHkoKSA6IG51bGwsXHJcbiAgICAgIG5vdGlmeUluZm86IChtZXNzYWdlOiBzdHJpbmcsIGRlbGF5PzogbnVtYmVyKSA9PiB0aGlzLnRvYXN0U2VydmljZS5ub3RpZnlJbmZvKG1lc3NhZ2UsIGRlbGF5KSxcclxuICAgICAgbm90aWZ5U3VjY2VzczogKG1lc3NhZ2U6IHN0cmluZywgZGVsYXk/OiBudW1iZXIpID0+IHRoaXMudG9hc3RTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3MobWVzc2FnZSwgZGVsYXkpLFxyXG4gICAgICBub3RpZnlXYXJuaW5nOiAobWVzc2FnZTogc3RyaW5nLCBkZWxheT86IG51bWJlcikgPT4gdGhpcy50b2FzdFNlcnZpY2Uubm90aWZ5V2FybmluZyhtZXNzYWdlLCBkZWxheSksXHJcbiAgICAgIG5vdGlmeUVycm9yOiAobWVzc2FnZTogc3RyaW5nLCBkZWxheT86IG51bWJlcikgPT4gdGhpcy50b2FzdFNlcnZpY2Uubm90aWZ5RXJyb3IobWVzc2FnZSwgZGVsYXkpXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChwcm94eUZuKVxyXG4gICAgICBwcm94eUZuKG9wdGlvbnMpO1xyXG4gICAgXHJcbiAgICByZXR1cm4gdGhpcy5wcm94eVNlcnZpY2UuZ2V0UHJveHkoZm9ybUdyb3VwLnZhbHVlLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyZW50KGZvcm1Hcm91cDogRm9ybUdyb3VwKSA6IEZvcm1Hcm91cCB8IG51bGwge1xyXG4gICAgbGV0IHBhcmVudCA9IGZvcm1Hcm91cC5wYXJlbnQ7XHJcblxyXG4gICAgd2hpbGUgKHBhcmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICBwYXJlbnQgPSBwYXJlbnQ/LnBhcmVudDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGFyZW50IGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbnRleHQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG5cclxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRyb2wgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICAgIFxyXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY3JlYXRlUHJveHkoZm9ybUdyb3VwLCBvcHRpb25zLnByb3h5Rm4pIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XHJcblxyXG4gICAgcmV0dXJuIGNvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhdGNoRXhwcmVzc2lvbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApO1xyXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gdGhpcy5mZWVsU2VydmljZS5nZXREZXBlbmRlbmNpZXMoZXhwcmVzc2lvbiwgY29udGV4dCk7XHJcbiAgICB0aGlzLndhdGNoRGVwZW5kZW5jaWVzKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCBjYWxsYmFjayk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSB3YXRjaERlcGVuZGVuY2llcyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzOiAoc3RyaW5nIHwgc3RyaW5nW10pW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXJlbnROYW1lOiBzdHJpbmcgPSBcInBhcmVudFwiO1xyXG5cclxuICAgIGNvbnN0IHN1YnNjcmliZSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgY29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgZGVwZW5kZW5jZSBvZiBkZXBlbmRlbmNpZXMpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jZSkpIHtcclxuICAgICAgICBsZXQgdGFyZ2V0Rm9ybTogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IGZvcm1Hcm91cDtcclxuICAgICAgICBsZXQgY29udHJvbFBhdGggPSBkZXBlbmRlbmNlO1xyXG5cclxuICAgICAgICB3aGlsZSAoY29udHJvbFBhdGgubGVuZ3RoID4gMCAmJiBjb250cm9sUGF0aFswXSA9PT0gcGFyZW50TmFtZSkge1xyXG4gICAgICAgICAgaWYgKCF0YXJnZXRGb3JtLnBhcmVudClcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB0YXJnZXRGb3JtID0gdGFyZ2V0Rm9ybS5wYXJlbnQ7XHJcbiAgICAgICAgICBjb250cm9sUGF0aCA9IGNvbnRyb2xQYXRoLnNsaWNlKDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNvbnRyb2xQYXRoLmxlbmd0aCA+IDAgJiYgdGFyZ2V0Rm9ybSkge1xyXG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IHRhcmdldEZvcm0uZ2V0KGNvbnRyb2xQYXRoKTtcclxuICAgICAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgICAgIHN1YnNjcmliZShjb250cm9sKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZGVwZW5kZW5jZSk7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICAgIHN1YnNjcmliZShjb250cm9sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gICAgXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlT3B0aW9ucyB7XHJcbiAgY2FjaGVhYmxlPzogYm9vbGVhbjtcclxuICBwcm94eUZuPzogUHJveHlDb25maWdGbjtcclxufVxyXG4iXX0=
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFNBQVMsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZFLE9BQU8sRUFBZ0IsWUFBWSxFQUFpQixNQUFNLDJCQUEyQixDQUFDO0FBSXRGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQUcxQyxNQUFNLE9BQU8sc0JBQXNCO0lBRWI7SUFDUjtJQUNBO0lBQ0E7SUFDWTtJQUNBO0lBTHhCLFlBQW9CLFdBQXdCLEVBQ2hDLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFlBQTBCLEVBQ2QsUUFBeUIsRUFDekIsS0FBbUI7UUFMdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixVQUFLLEdBQUwsS0FBSyxDQUFjO0lBQ3ZDLENBQUM7SUFFRyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV2QyxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBbUI7UUFDOUIsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENB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QkFDWixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7d0dBdlBVLHNCQUFzQjs0R0FBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVOzswQkFPSixRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGZWVsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZlZWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFNjb3BlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Njb3BlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm94eVNlcnZpY2UsIFByb3h5T3B0aW9ucywgUHJveHlDb25maWdGbiB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb3h5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWdpc3RlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWdpc3Rlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IFdlYWtTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvd2Vhay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFByb2dyYW1tYWJpbGl0eVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZlZWxTZXJ2aWNlOiBGZWVsU2VydmljZVxyXG4gICAgLCBwcml2YXRlIHdlYWtTZXJ2aWNlOiBXZWFrU2VydmljZVxyXG4gICAgLCBwcml2YXRlIHByb3h5U2VydmljZTogUHJveHlTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2VcclxuICAgICwgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWdpc3RlcjogUmVnaXN0ZXJTZXJ2aWNlXHJcbiAgICAsIEBPcHRpb25hbCgpIHByaXZhdGUgc2NvcGU6IFNjb3BlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgaXNFeHByZXNzaW9uKHRleHQ6IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0ZXh0ICE9IG51bGwgJiYgdGV4dC5zdGFydHNXaXRoKFwiPVwiKTtcclxuICB9O1xyXG5cclxuICBnZXRFeHByZXNzaW9uKHRleHQ6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHRleHQpKVxyXG4gICAgICByZXR1cm4gdGV4dCEuc3Vic3RyaW5nKDEpO1xyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfTtcclxuXHJcbiAgZXZhbHVhdGVTdHJpbmcoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpKSBhcyBzdHJpbmc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWUgPz8gXCJcIjtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlQm9vbGVhbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGNvbnN0IHN0clZhbHVlOiBzdHJpbmcgPSB2YWx1ZTtcclxuICAgICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHN0clZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHN0clZhbHVlKSwgb3B0aW9ucykgYXMgYm9vbGVhbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZU51bWJlcihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGwpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgY29uc3Qgc3RyVmFsdWU6IHN0cmluZyA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24oc3RyVmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24oc3RyVmFsdWUpKSBhcyBudW1iZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7IH0pOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIG9wdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVRlbXBsYXRlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IGFueSB7XHJcblxyXG4gICAgbGV0IHRlbXBsYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHRlbXBsYXRlID0gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSkpIGFzIHN0cmluZztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0ZW1wbGF0ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmV2YWxUZW1wbGF0ZShmb3JtR3JvdXAsIHRlbXBsYXRlID8/IFwiXCIpO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVVbmFyeShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIGlucHV0OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsVW5hcnlUZXN0KGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgaW5wdXQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhY2hlYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHByaXZhdGUgZXZhbFVuYXJ5VGVzdChmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBpbnB1dDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mZWVsU2VydmljZS5ldmFsVW5hcnlUZXN0KGV4cHJlc3Npb25cclxuICAgICAgICAsIHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApXHJcbiAgICAgICAgLCBpbnB1dCk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGV4cHJlc3Npb24sIGUpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBhbnkge1xyXG4gICAgY29uc3QgZXZhbHVhdGUgPSAoKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmZlZWxTZXJ2aWNlLmV2YWxFeHByZXNzaW9uKGV4cHJlc3Npb25cclxuICAgICAgICAgICwgdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCwgb3B0aW9ucykpXHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhleHByZXNzaW9uLCBlKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjYWNoZWFibGUgPSBvcHRpb25zLmNhY2hlYWJsZSA/PyB0aGlzLmNhY2hlYWJsZTtcclxuXHJcbiAgICBpZiAoY2FjaGVhYmxlKSB7XHJcbiAgICAgIGNvbnN0IHdhdGNoS2V5ID0gYDp3YXRjaCgke2V4cHJlc3Npb259KWA7XHJcblxyXG4gICAgICB0aGlzLndlYWtTZXJ2aWNlLmNhbGwodGhpcywgd2F0Y2hLZXksICgpID0+IHtcclxuICAgICAgICB0aGlzLndhdGNoRXhwcmVzc2lvbihmb3JtR3JvdXAsIGV4cHJlc3Npb25cclxuICAgICAgICAgICwgKCkgPT4gdGhpcy53ZWFrU2VydmljZS5pbnZhbGlkYXRlKHRoaXMsIGV4cHJlc3Npb24pKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy53ZWFrU2VydmljZS5jYWxsKHRoaXMsIGV4cHJlc3Npb24sIGV2YWx1YXRlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gZXZhbHVhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXZhbFRlbXBsYXRlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmVlbFNlcnZpY2UuZXZhbFRlbXBsYXRlKGV4cHJlc3Npb25cclxuICAgICAgICAsIHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVByb3h5KGZvcm1Hcm91cDogRm9ybUdyb3VwIHwgbnVsbFxyXG4gICAgLCBwcm94eUZuOiAoKG9wdGlvbnM6IFByb3h5T3B0aW9ucykgPT4gdm9pZCkgfCBudWxsID0gbnVsbCk6IGFueSB7XHJcblxyXG4gICAgaWYgKCFmb3JtR3JvdXApIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb3B0aW9ucyA9IG5ldyBQcm94eU9wdGlvbnMoKTtcclxuXHJcbiAgICBvcHRpb25zLmV4dGVuZCA9IHtcclxuICAgICAgcGFyZW50OiB0aGlzLmdldFBhcmVudENvbnRleHQoZm9ybUdyb3VwKSxcclxuICAgICAgZ2V0Rm9ybUdyb3VwOiAoKSA9PiB0aGlzLnByb3h5U2VydmljZS5nZXRQcm94eShmb3JtR3JvdXApLFxyXG4gICAgICBnZXRTY29wZTogKCkgPT4gdGhpcy5zY29wZSA/IHRoaXMuc2NvcGUucHJveHkoKSA6IG51bGwsXHJcbiAgICAgIGNvbnRyb2xzOiAoKSA9PiB0aGlzLnJlZ2lzdGVyID8gdGhpcy5yZWdpc3Rlci5wcm94eSgpIDogbnVsbCxcclxuICAgICAgbm90aWZ5SW5mbzogKG1lc3NhZ2U6IHN0cmluZywgZGVsYXk/OiBudW1iZXIpID0+IHRoaXMudG9hc3RTZXJ2aWNlLm5vdGlmeUluZm8obWVzc2FnZSwgZGVsYXkpLFxyXG4gICAgICBub3RpZnlTdWNjZXNzOiAobWVzc2FnZTogc3RyaW5nLCBkZWxheT86IG51bWJlcikgPT4gdGhpcy50b2FzdFNlcnZpY2Uubm90aWZ5U3VjY2VzcyhtZXNzYWdlLCBkZWxheSksXHJcbiAgICAgIG5vdGlmeVdhcm5pbmc6IChtZXNzYWdlOiBzdHJpbmcsIGRlbGF5PzogbnVtYmVyKSA9PiB0aGlzLnRvYXN0U2VydmljZS5ub3RpZnlXYXJuaW5nKG1lc3NhZ2UsIGRlbGF5KSxcclxuICAgICAgbm90aWZ5RXJyb3I6IChtZXNzYWdlOiBzdHJpbmcsIGRlbGF5PzogbnVtYmVyKSA9PiB0aGlzLnRvYXN0U2VydmljZS5ub3RpZnlFcnJvcihtZXNzYWdlLCBkZWxheSlcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHByb3h5Rm4pXHJcbiAgICAgIHByb3h5Rm4ob3B0aW9ucyk7XHJcbiAgICBcclxuICAgIHJldHVybiB0aGlzLnByb3h5U2VydmljZS5nZXRQcm94eShmb3JtR3JvdXAudmFsdWUsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXJlbnRDb250ZXh0KGZvcm1Hcm91cDogRm9ybUdyb3VwKTogYW55IHtcclxuXHJcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChmb3JtR3JvdXApO1xyXG5cclxuICAgIGlmICghcGFyZW50KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9wdGlvbnMgPSBuZXcgUHJveHlPcHRpb25zKCk7XHJcblxyXG4gICAgb3B0aW9ucy5leHRlbmQgPSB7XHJcbiAgICAgIHBhcmVudDogdGhpcy5nZXRQYXJlbnRDb250ZXh0KHBhcmVudClcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucHJveHlTZXJ2aWNlLmdldFByb3h5KHBhcmVudC52YWx1ZSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhcmVudChmb3JtR3JvdXA6IEZvcm1Hcm91cCkgOiBGb3JtR3JvdXAgfCBudWxsIHtcclxuICAgIGxldCBwYXJlbnQgPSBmb3JtR3JvdXAucGFyZW50O1xyXG5cclxuICAgIHdoaWxlIChwYXJlbnQgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgcGFyZW50ID0gcGFyZW50Py5wYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhcmVudCBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb250ZXh0KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuXHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sIGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgICBcclxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNyZWF0ZVByb3h5KGZvcm1Hcm91cCwgb3B0aW9ucy5wcm94eUZuKSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cclxuICAgIHJldHVybiBjb250ZXh0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YXRjaEV4cHJlc3Npb24oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwKTtcclxuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRoaXMuZmVlbFNlcnZpY2UuZ2V0RGVwZW5kZW5jaWVzKGV4cHJlc3Npb24sIGNvbnRleHQpO1xyXG4gICAgdGhpcy53YXRjaERlcGVuZGVuY2llcyhmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgY2FsbGJhY2spO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hEZXBlbmRlbmNpZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGRlcGVuZGVuY2llczogKHN0cmluZyB8IHN0cmluZ1tdKVtdLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGFyZW50TmFtZTogc3RyaW5nID0gXCJwYXJlbnRcIjtcclxuXHJcbiAgICBjb25zdCBzdWJzY3JpYmUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgIGNvbnRyb2wudmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY2Ugb2YgZGVwZW5kZW5jaWVzKSB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlcGVuZGVuY2UpKSB7XHJcbiAgICAgICAgbGV0IHRhcmdldEZvcm06IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBmb3JtR3JvdXA7XHJcbiAgICAgICAgbGV0IGNvbnRyb2xQYXRoID0gZGVwZW5kZW5jZTtcclxuXHJcbiAgICAgICAgd2hpbGUgKGNvbnRyb2xQYXRoLmxlbmd0aCA+IDAgJiYgY29udHJvbFBhdGhbMF0gPT09IHBhcmVudE5hbWUpIHtcclxuICAgICAgICAgIGlmICghdGFyZ2V0Rm9ybS5wYXJlbnQpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgdGFyZ2V0Rm9ybSA9IHRhcmdldEZvcm0ucGFyZW50O1xyXG4gICAgICAgICAgY29udHJvbFBhdGggPSBjb250cm9sUGF0aC5zbGljZSgxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb250cm9sUGF0aC5sZW5ndGggPiAwICYmIHRhcmdldEZvcm0pIHtcclxuICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0YXJnZXRGb3JtLmdldChjb250cm9sUGF0aCk7XHJcbiAgICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgICBzdWJzY3JpYmUoY29udHJvbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGRlcGVuZGVuY2UpO1xyXG4gICAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgICBzdWJzY3JpYmUoY29udHJvbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9ICAgIFxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0ZU9wdGlvbnMge1xyXG4gIGNhY2hlYWJsZT86IGJvb2xlYW47XHJcbiAgcHJveHlGbj86IFByb3h5Q29uZmlnRm47XHJcbn1cclxuIl19
@@ -43,7 +43,7 @@ export function patchForm(control, value, options) {
43
43
  }
44
44
  else {
45
45
  warn(`Index ${index} not found in the FormArray. Adding dynamically...`);
46
- const newControl = control.addNewItem();
46
+ const newControl = control.addItem();
47
47
  patchForm(newControl, item, options);
48
48
  }
49
49
  });
@@ -52,4 +52,4 @@ export function patchForm(control, value, options) {
52
52
  error('Unsupported AbstractControl type.');
53
53
  }
54
54
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2hGb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvdXRpbHMvcGF0Y2hGb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRixNQUFNLFVBQVUsU0FBUyxDQUN2QixPQUF3QixFQUN4QixLQUFVLEVBQ1YsT0FBdUg7SUFHdkgsTUFBTSxjQUFjLEdBQUc7UUFDckIsU0FBUyxFQUFFLElBQUk7UUFDZixZQUFZLEVBQUUsS0FBSztRQUNuQixhQUFhLEVBQUUsSUFBSTtLQUNwQixDQUFDO0lBRUYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtRQUMvQixJQUFJLE9BQU8sRUFBRSxRQUFRO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzFDLENBQUMsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7UUFDaEMsSUFBSSxPQUFPLEVBQUUsU0FBUztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUMsQ0FBQztJQUVGLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxHQUM1QyxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFFdEMsSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxZQUFZLElBQUksT0FBTyxLQUFLLEtBQUssT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGlDQUFpQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLGtCQUFrQixPQUFPLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFNUYsSUFBSSxhQUFhLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDakQsT0FBTztZQUNULENBQUM7WUFDRCxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUM1RCxPQUFPO1FBQ1QsQ0FBQztRQUNELE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO1NBQ0ksSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFLENBQUM7UUFDdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN4RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRywrQkFBK0IsQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7U0FDSSxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUUsQ0FBQztRQUN0QyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDakQsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFNBQVMsS0FBSyxvREFBb0QsQ0FBQyxDQUFDO2dCQUN6RSxNQUFNLFVBQVUsR0FBSSxPQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2pELFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7U0FDSSxDQUFDO1FBQ0osS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXRjaEZvcm0oXHJcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxyXG4gIHZhbHVlOiBhbnksXHJcbiAgb3B0aW9ucz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbjsgZW1pdEVycm9yPzogYm9vbGVhbjsgZW1pdFdhcm4/OiBib29sZWFuOyB2YWxpZGF0ZVR5cGU/OiBib29sZWFuOyBmYWxsYmFja1ZhbHVlPzogYW55IH1cclxuKTogdm9pZCB7XHJcblxyXG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xyXG4gICAgZW1pdEV2ZW50OiB0cnVlLFxyXG4gICAgdmFsaWRhdGVUeXBlOiBmYWxzZSxcclxuICAgIGZhbGxiYWNrVmFsdWU6IG51bGxcclxuICB9O1xyXG5cclxuICBjb25zdCB3YXJuID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKG9wdGlvbnM/LmVtaXRXYXJuKVxyXG4gICAgICBjb25zb2xlLndhcm4oYFtwYXRjaEZvcm1dICR7bWVzc2FnZX1gKVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IGVycm9yID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKG9wdGlvbnM/LmVtaXRFcnJvcilcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHsgZW1pdEV2ZW50LCB2YWxpZGF0ZVR5cGUsIGZhbGxiYWNrVmFsdWUgfVxyXG4gICAgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zIH07XHJcblxyXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcclxuICAgIGlmICh2YWxpZGF0ZVR5cGUgJiYgdHlwZW9mIHZhbHVlICE9PSB0eXBlb2YgY29udHJvbC52YWx1ZSkge1xyXG4gICAgICB3YXJuKGBWYWx1ZSB0eXBlIG1pc21hdGNoOiBleHBlY3RlZCAke3R5cGVvZiBjb250cm9sLnZhbHVlfSwgYnV0IHJlY2VpdmVkICR7dHlwZW9mIHZhbHVlfWApO1xyXG5cclxuICAgICAgaWYgKGZhbGxiYWNrVmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUoZmFsbGJhY2tWYWx1ZSwgeyBlbWl0RXZlbnQgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVycm9yKCdJbnZhbGlkIHZhbHVlIHR5cGUgYW5kIG5vIGZhbGxiYWNrIHZhbHVlIHByb3ZpZGVkLicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50IH0pO1xyXG4gIH1cclxuICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICBPYmplY3Qua2V5cyh2YWx1ZSB8fCB7fSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIGlmIChjb250cm9sLmNvbnRyb2xzW2tleV0pIHtcclxuICAgICAgICBwYXRjaEZvcm0oY29udHJvbC5jb250cm9sc1trZXldLCB2YWx1ZVtrZXldLCBvcHRpb25zKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB3YXJuKGBLZXkgXCIke2tleX1cIiBub3QgZm91bmQgaW4gdGhlIEZvcm1Hcm91cC5gKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICh2YWx1ZSB8fCBbXSkuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmIChjb250cm9sLmF0KGluZGV4KSkge1xyXG4gICAgICAgIHBhdGNoRm9ybShjb250cm9sLmF0KGluZGV4KSwgaXRlbSwgb3B0aW9ucyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2FybihgSW5kZXggJHtpbmRleH0gbm90IGZvdW5kIGluIHRoZSBGb3JtQXJyYXkuIEFkZGluZyBkeW5hbWljYWxseS4uLmApO1xyXG4gICAgICAgIGNvbnN0IG5ld0NvbnRyb2wgPSAoY29udHJvbCBhcyBhbnkpLmFkZE5ld0l0ZW0oKTtcclxuICAgICAgICBwYXRjaEZvcm0obmV3Q29udHJvbCwgaXRlbSwgb3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIGVycm9yKCdVbnN1cHBvcnRlZCBBYnN0cmFjdENvbnRyb2wgdHlwZS4nKTtcclxuICB9XHJcbn1cclxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2hGb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvdXRpbHMvcGF0Y2hGb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRixNQUFNLFVBQVUsU0FBUyxDQUN2QixPQUF3QixFQUN4QixLQUFVLEVBQ1YsT0FBdUg7SUFHdkgsTUFBTSxjQUFjLEdBQUc7UUFDckIsU0FBUyxFQUFFLElBQUk7UUFDZixZQUFZLEVBQUUsS0FBSztRQUNuQixhQUFhLEVBQUUsSUFBSTtLQUNwQixDQUFDO0lBRUYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtRQUMvQixJQUFJLE9BQU8sRUFBRSxRQUFRO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzFDLENBQUMsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7UUFDaEMsSUFBSSxPQUFPLEVBQUUsU0FBUztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUMsQ0FBQztJQUVGLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxHQUM1QyxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFFdEMsSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxZQUFZLElBQUksT0FBTyxLQUFLLEtBQUssT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGlDQUFpQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLGtCQUFrQixPQUFPLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFNUYsSUFBSSxhQUFhLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDakQsT0FBTztZQUNULENBQUM7WUFDRCxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUM1RCxPQUFPO1FBQ1QsQ0FBQztRQUNELE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO1NBQ0ksSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFLENBQUM7UUFDdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN4RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRywrQkFBK0IsQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7U0FDSSxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUUsQ0FBQztRQUN0QyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDakQsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFNBQVMsS0FBSyxvREFBb0QsQ0FBQyxDQUFDO2dCQUN6RSxNQUFNLFVBQVUsR0FBSSxPQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzlDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7U0FDSSxDQUFDO1FBQ0osS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXRjaEZvcm0oXHJcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxyXG4gIHZhbHVlOiBhbnksXHJcbiAgb3B0aW9ucz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbjsgZW1pdEVycm9yPzogYm9vbGVhbjsgZW1pdFdhcm4/OiBib29sZWFuOyB2YWxpZGF0ZVR5cGU/OiBib29sZWFuOyBmYWxsYmFja1ZhbHVlPzogYW55IH1cclxuKTogdm9pZCB7XHJcblxyXG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xyXG4gICAgZW1pdEV2ZW50OiB0cnVlLFxyXG4gICAgdmFsaWRhdGVUeXBlOiBmYWxzZSxcclxuICAgIGZhbGxiYWNrVmFsdWU6IG51bGxcclxuICB9O1xyXG5cclxuICBjb25zdCB3YXJuID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKG9wdGlvbnM/LmVtaXRXYXJuKVxyXG4gICAgICBjb25zb2xlLndhcm4oYFtwYXRjaEZvcm1dICR7bWVzc2FnZX1gKVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IGVycm9yID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKG9wdGlvbnM/LmVtaXRFcnJvcilcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHsgZW1pdEV2ZW50LCB2YWxpZGF0ZVR5cGUsIGZhbGxiYWNrVmFsdWUgfVxyXG4gICAgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zIH07XHJcblxyXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcclxuICAgIGlmICh2YWxpZGF0ZVR5cGUgJiYgdHlwZW9mIHZhbHVlICE9PSB0eXBlb2YgY29udHJvbC52YWx1ZSkge1xyXG4gICAgICB3YXJuKGBWYWx1ZSB0eXBlIG1pc21hdGNoOiBleHBlY3RlZCAke3R5cGVvZiBjb250cm9sLnZhbHVlfSwgYnV0IHJlY2VpdmVkICR7dHlwZW9mIHZhbHVlfWApO1xyXG5cclxuICAgICAgaWYgKGZhbGxiYWNrVmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUoZmFsbGJhY2tWYWx1ZSwgeyBlbWl0RXZlbnQgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVycm9yKCdJbnZhbGlkIHZhbHVlIHR5cGUgYW5kIG5vIGZhbGxiYWNrIHZhbHVlIHByb3ZpZGVkLicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50IH0pO1xyXG4gIH1cclxuICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICBPYmplY3Qua2V5cyh2YWx1ZSB8fCB7fSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIGlmIChjb250cm9sLmNvbnRyb2xzW2tleV0pIHtcclxuICAgICAgICBwYXRjaEZvcm0oY29udHJvbC5jb250cm9sc1trZXldLCB2YWx1ZVtrZXldLCBvcHRpb25zKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB3YXJuKGBLZXkgXCIke2tleX1cIiBub3QgZm91bmQgaW4gdGhlIEZvcm1Hcm91cC5gKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICh2YWx1ZSB8fCBbXSkuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmIChjb250cm9sLmF0KGluZGV4KSkge1xyXG4gICAgICAgIHBhdGNoRm9ybShjb250cm9sLmF0KGluZGV4KSwgaXRlbSwgb3B0aW9ucyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2FybihgSW5kZXggJHtpbmRleH0gbm90IGZvdW5kIGluIHRoZSBGb3JtQXJyYXkuIEFkZGluZyBkeW5hbWljYWxseS4uLmApO1xyXG4gICAgICAgIGNvbnN0IG5ld0NvbnRyb2wgPSAoY29udHJvbCBhcyBhbnkpLmFkZEl0ZW0oKTtcclxuICAgICAgICBwYXRjaEZvcm0obmV3Q29udHJvbCwgaXRlbSwgb3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIGVycm9yKCdVbnN1cHBvcnRlZCBBYnN0cmFjdENvbnRyb2wgdHlwZS4nKTtcclxuICB9XHJcbn1cclxuIl19