slick-components 17.0.12 → 17.0.14

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.
@@ -236,7 +236,7 @@ export class SlickDialogComponent {
236
236
  let footerHeight = (this.footerRef) ? this.footerRef.nativeElement.clientHeight : 0;
237
237
  this.hasFooter = footerHeight > 0;
238
238
  let documentBodyHeight = !forFullSize ? (document.body.clientHeight || window.innerHeight) : window.innerHeight;
239
- this.maxHeight = !forFullSize ? documentBodyHeight - (this.top * 2) : documentBodyHeight;
239
+ this.maxHeight = !forFullSize ? documentBodyHeight - this.top - 20 : documentBodyHeight;
240
240
  this.isBodyVisible = true;
241
241
  }
242
242
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickDialogComponent, deps: [{ token: i1.SlickDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
@@ -291,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
291
291
  type: ViewChild,
292
292
  args: ["dialogWrapper"]
293
293
  }] } });
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLWRpYWxvZy9zbGljay1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stZGlhbG9nL3NsaWNrLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBMkQsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7O0FBUS9ELE1BQU0sT0FBTyxvQkFBb0I7SUEwQzdCLFlBQTZCLGFBQWlDO1FBQWpDLGtCQUFhLEdBQWIsYUFBYSxDQUFvQjtRQXpDckQsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBRTVCLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0IsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixRQUFHLEdBQVcsRUFBRSxDQUFDO1FBQ2pCLFVBQUssR0FBVyxHQUFHLENBQUM7UUFDcEIsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUNuQixjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBR3RCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQzVCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUVqQyxZQUFPLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFRakUsYUFBUSxHQUFHLEdBQUcsRUFBRSxD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a0JBQWtCLENBQUMseWdCQ1RuQywrK0VBaUJNOzsyRkROTyxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0ksY0FBYyxhQUdiLENBQUMsa0JBQWtCLENBQUM7dUZBR3RCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUVpQixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0QsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNFLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDRSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ00sYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFNsaWNrRGlhbG9nU2VydmljZSB9IGZyb20gXCIuL3NsaWNrLWRpYWxvZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrU2xlZXBTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLXNsZWVwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tJbml0U2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1pbml0LnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbGljay1kaWFsb2cnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdzbGljay1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbXCJzbGljay1kaWFsb2cuY29tcG9uZW50LmNzc1wiXSxcclxuICAgIHByb3ZpZGVyczogW1NsaWNrRGlhbG9nU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNsaWNrRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBkcmFnZ2FibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgcmVzaXphYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIG1pbmltaXphYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGhlYWRlcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgc2hvd0hlYWRlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBub1BhZGRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHRvcDogbnVtYmVyID0gODA7XHJcbiAgICBASW5wdXQoKSB3aWR0aDogbnVtYmVyID0gNjAwO1xyXG4gICAgQElucHV0KCkgaGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gICAgQElucHV0KCkgbWF4SGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gICAgQElucHV0KCkgY3NzQ2xhc3M6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGtleTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgc2hvd092ZXJsYXk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZVNjcm9sbGJhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBPdXRwdXQoKSBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG5cdEBWaWV3Q2hpbGQoXCJjb250YWluZXJSZWZcIikgY29udGFpbmVyUmVmOiBFbGVtZW50UmVmO1xyXG5cdEBWaWV3Q2hpbGQoXCJkaWFsb2dSZWZcIikgZGlhbG9nUmVmOiBFbGVtZW50UmVmO1xyXG5cdEBWaWV3Q2hpbGQoXCJoZWFkZXJSZWZcIikgaGVhZGVyUmVmOiBFbGVtZW50UmVmO1xyXG5cdEBWaWV3Q2hpbGQoXCJmb290ZXJSZWZcIikgZm9vdGVyUmVmOiBFbGVtZW50UmVmO1xyXG5cdEBWaWV3Q2hpbGQoXCJkaWFsb2dXcmFwcGVyXCIpIGRpYWxvZ1dyYXBwZXI6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgZm5SZXNpemUgPSAoKSA9PiB0aGlzLnJlc2l6ZSgpO1xyXG5cclxuICAgIHByaXZhdGUgb3ZlcmxheUVsOiBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgICBzaG93RGlhbG9nX2ludGVybmFsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpc0RpYWxvZ1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlzQm9keVZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGhhc0Zvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgekluZGV4OiBudW1iZXIgPSAwO1xyXG4gICAgaW5Cb3VuZHM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgaXNNYXhpbWl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlzTWluaW1pemVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcG9zaXRpb25YT2Zmc2V0OiBudW1iZXIgPSAwO1xyXG4gICAgcG9zaXRpb25ZT2Zmc2V0OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIHBvc2l0aW9uOiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlOiBTbGlja0RpYWxvZ1NlcnZpY2UpIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkUG9zaXRpb25BbmRTaXplKCk7XHJcbiAgICB9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuXHRcdGlmIChjaGFuZ2VzLmRyYWdnYWJsZSkgXHJcblx0XHRcdHRoaXMuZHJhZ2dhYmxlID0gKHRoaXMuZHJhZ2dhYmxlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykgPyBmYWxzZSA6IHRydWU7XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMucmVzaXphYmxlKVxyXG5cdFx0XHR0aGlzLnJlc2l6YWJsZSA9ICh0aGlzLnJlc2l6YWJsZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdmYWxzZScpID8gZmFsc2UgOiB0cnVlO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLm1pbmltaXphYmxlKVxyXG5cdFx0XHR0aGlzLm1pbmltaXphYmxlID0gKHRoaXMubWluaW1pemFibGUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnZmFsc2UnKSA/IGZhbHNlIDogdHJ1ZTtcclxuXHJcblx0XHRpZiAoY2hhbmdlcy5zaG93SGVhZGVyKVxyXG5cdFx0XHR0aGlzLnNob3dIZWFkZXIgPSAodGhpcy5zaG93SGVhZGVyLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykgPyBmYWxzZSA6IHRydWU7XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzLm5vUGFkZGluZylcclxuICAgICAgICAgICAgdGhpcy5ub1BhZGRpbmcgPSAodGhpcy5ub1BhZGRpbmcudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLnRvcClcclxuXHRcdFx0dGhpcy50b3AgPSBwYXJzZUludCh0aGlzLnRvcC50b1N0cmluZygpKTtcclxuXHJcblx0XHRpZiAoY2hhbmdlcy53aWR0aClcclxuXHRcdFx0dGhpcy53aWR0aCA9IHBhcnNlSW50KHRoaXMud2lkdGgudG9TdHJpbmcoKSk7XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuaGVpZ2h0KVxyXG5cdFx0XHR0aGlzLmhlaWdodCA9IHBhcnNlSW50KHRoaXMuaGVpZ2h0LnRvU3RyaW5nKCkpO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLm1heEhlaWdodClcclxuXHRcdFx0dGhpcy5tYXhIZWlnaHQgPSBwYXJzZUludCh0aGlzLm1heEhlaWdodC50b1N0cmluZygpKTtcclxuXHJcblx0XHRpZiAoY2hhbmdlcy5zaG93T3ZlcmxheSlcclxuXHRcdFx0dGhpcy5zaG93T3ZlcmxheSA9ICh0aGlzLnNob3dPdmVybGF5LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykgPyBmYWxzZSA6IHRydWU7XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuZGlzYWJsZVNjcm9sbGJhcilcclxuXHRcdFx0dGhpcy5kaXNhYmxlU2Nyb2xsYmFyID0gKHRoaXMuZGlzYWJsZVNjcm9sbGJhci50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJykgPyB0cnVlIDogZmFsc2U7XHJcblx0fVxyXG5cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmZuUmVzaXplLCB0cnVlKTtcclxuXHJcbiAgICAgICAgLy8gSXQncyBmaW5lIGlmIHRoaXMgZmFpbHMuICBJdCBqdXN0IG1lYW5zIHRoZXkgd2VyZSBhbHJlYWR5IHJlbW92ZWRcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMub3ZlcmxheUVsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggeyB9XHJcblxyXG4gICAgICAgIHRoaXMub3ZlcmxheUVsID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBvbk1vdmVFbmQoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9uWE9mZnNldCA9IGV2ZW50Lng7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbllPZmZzZXQgPSBldmVudC55O1xyXG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25BbmRTaXplKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25SZXNpemVTdG9wKGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy53aWR0aCA9IGV2ZW50LnNpemUud2lkdGg7XHJcbiAgICAgICAgdGhpcy5oZWlnaHQgPSBldmVudC5zaXplLmhlaWdodDtcclxuICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uQW5kU2l6ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVBvc2l0aW9uQW5kU2l6ZSgpIHtcclxuICAgICAgICBjb25zdCBzdGF0ZSA9IHtcclxuICAgICAgICAgICAgcG9zaXRpb25YT2Zmc2V0OiB0aGlzLnBvc2l0aW9uWE9mZnNldCxcclxuICAgICAgICAgICAgcG9zaXRpb25ZT2Zmc2V0OiB0aGlzLnBvc2l0aW9uWU9mZnNldCxcclxuICAgICAgICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXHJcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHRcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnBvc2l0aW9uID0ge1xyXG4gICAgICAgICAgICB4OiB0aGlzLnBvc2l0aW9uWE9mZnNldCxcclxuICAgICAgICAgICAgeTogdGhpcy5wb3NpdGlvbllPZmZzZXRcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5rZXkpIHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oYERJQUxPR19TVEFURV8ke3RoaXMua2V5fWAsIEpTT04uc3RyaW5naWZ5KHN0YXRlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxvYWRQb3NpdGlvbkFuZFNpemUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmtleSAmJiBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmVycm9yTG9nID09PSBcInZlcmJvc2VcIikge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiU3RvcmFnZSBLZXkgKFtrZXldIHBhcmFtZXRlcikgaXMgbm90IHByb3ZpZGVkIGZvciBTbGljayBEaWFsb2cuIFBlcnNpc3Rpbmcgc3RhdGUgaXMgZGlzYWJsZWQuXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBzdGF0ZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oYERJQUxPR19TVEFURV8ke3RoaXMua2V5fWApKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvblhPZmZzZXQgPSBzdGF0ZS5wb3NpdGlvblhPZmZzZXQ7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25ZT2Zmc2V0ID0gc3RhdGUucG9zaXRpb25ZT2Zmc2V0O1xyXG4gICAgICAgICAgICB0aGlzLndpZHRoID0gc3RhdGUud2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gc3RhdGUuaGVpZ2h0O1xyXG5cclxuICAgICAgICAgICAgLy8gU29tZXRpbWVzIHRoaXMgZ29lcyBhYm92ZSB0aGUgdG9wIG9mIHRoZSBzY3JlZW4uICBJZiBpdCBkb2VzLCByZXNldCBpdFxyXG4gICAgICAgICAgICBpZiAodGhpcy5wb3NpdGlvbllPZmZzZXQgPCAwICYmIHRoaXMucG9zaXRpb25ZT2Zmc2V0IDwgKHRoaXMudG9wICogLTEpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uWU9mZnNldCA9IHRoaXMudG9wICogLTE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uQW5kU2l6ZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0ge1xyXG4gICAgICAgICAgICAgICAgeDogdGhpcy5wb3NpdGlvblhPZmZzZXQsXHJcbiAgICAgICAgICAgICAgICB5OiB0aGlzLnBvc2l0aW9uWU9mZnNldFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblx0YXN5bmMgc2hvd0RpYWxvZygpIHtcclxuXHRcdHRoaXMuc2hvd0RpYWxvZ19pbnRlcm5hbCA9IHRydWU7XHJcblxyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICB0aGlzLm92ZXJsYXlFbCA9IHRoaXMuZGlhbG9nU2VydmljZS5jcmVhdGVPdmVybGF5KCk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNNaW5pbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTWF4aW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZURpYWxvZ0Zyb21NaW5pbWl6ZWQodGhpcy5kaWFsb2dXcmFwcGVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnBvc2l0aW9uQXRDZW50ZXIodGhpcy5kaWFsb2dXcmFwcGVyLCB0aGlzLnRvcCwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQsIHRoaXMucG9zaXRpb25YT2Zmc2V0LCB0aGlzLnBvc2l0aW9uWU9mZnNldCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMud2lkdGggKyBcInB4XCI7XHJcblxyXG4gICAgICAgIHRoaXMuekluZGV4ID0gKChTbGlja0RpYWxvZ1NlcnZpY2Uub3ZlcmxheUNvdW50ICogMTAwKSArIDEpO1xyXG4gICAgICAgIGlmICh0aGlzLnNob3dPdmVybGF5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93T3ZlcmxheSh0aGlzLm92ZXJsYXlFbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNEaWFsb2dWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJjb2xsYXBzZS1kaWFsb2dcIik7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZXhwYW5kLWRpYWxvZ1wiKTtcclxuXHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5mblJlc2l6ZSwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25EaWFsb2dDbG9zZShldmVudDogRXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgICAgICBhd2FpdCB0aGlzLmhpZGVEaWFsb2coKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub25DbG9zZSlcclxuICAgICAgICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBoaWRlRGlhbG9nKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRGlhbG9nVmlzaWJsZSA9PT0gZmFsc2UpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5pc01heGltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnNob3dPdmVybGF5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5oaWRlT3ZlcmxheSh0aGlzLm92ZXJsYXlFbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImV4cGFuZC1kaWFsb2dcIik7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiY29sbGFwc2UtZGlhbG9nXCIpO1xyXG4gICAgICAgIGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKDM1MCk7XHJcbiAgICAgICAgdGhpcy5pc0JvZHlWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0RpYWxvZ1Zpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNNaW5pbWl6ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZURpYWxvZ0Zyb21NaW5pbWl6ZWQodGhpcy5kaWFsb2dXcmFwcGVyKTtcclxuICAgICAgICAgICAgdGhpcy5pc01pbmltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5mblJlc2l6ZSwgdHJ1ZSk7XHJcblxyXG4gICAgICAgIC8vIEl0J3MgZmluZSBpZiB0aGlzIGZhaWxzLiAgSXQganVzdCBtZWFucyB0aGV5IHdlcmUgYWxyZWFkeSByZW1vdmVkXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLm92ZXJsYXlFbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIHsgfVxyXG5cclxuICAgICAgICB0aGlzLm92ZXJsYXlFbCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zaG93RGlhbG9nX2ludGVybmFsID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgb25EaWFsb2dNaW5pbWl6ZShldmVudDogRXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuaXNNYXhpbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTWluaW1pemVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IFwiaW5pdGlhbFwiO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zaG93T3ZlcmxheSkge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuaGlkZU92ZXJsYXkodGhpcy5vdmVybGF5RWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UubWluaW1pemUodGhpcy5kaWFsb2dXcmFwcGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRpYWxvZ01heGltaXplKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5tYXhpbWl6ZSh0aGlzLmRpYWxvZ1dyYXBwZXIsIHRoaXMudG9wLCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodCwgdGhpcy5wb3NpdGlvblhPZmZzZXQsIHRoaXMucG9zaXRpb25ZT2Zmc2V0KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd092ZXJsYXkpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dPdmVybGF5KHRoaXMub3ZlcmxheUVsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuekluZGV4ID0gcGFyc2VJbnQodGhpcy5vdmVybGF5RWwuc3R5bGUuekluZGV4KSArIDE7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNNaW5pbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBcIjEwMCVcIjtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMud2lkdGggKyBcInB4XCI7XHJcbiAgICAgICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICAgICAgfSwgMzAwKTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVGdWxsU2l6ZShldmVudDogRXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICghdGhpcy5pc01heGltaXplZCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1dyYXBwZXIubmF0aXZlRWxlbWVudC5zdHlsZS50b3AgPSBcIjBweFwiO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1dyYXBwZXIubmF0aXZlRWxlbWVudC5zdHlsZS5yaWdodCA9IFwiMHB4XCI7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nV3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSBcIjBweFwiO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCArIFwicHhcIjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCArIFwicHhcIjtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCArIFwicHhcIjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gXCJpbml0aWFsXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nV3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IFwidHJhbnNsYXRlKDAlKVwiO1xyXG4gICAgICAgICAgICB0aGlzLmlzTWF4aW1pemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZXNpemUodHJ1ZSk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nV3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9IHRoaXMudG9wICsgXCJweFwiO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1dyYXBwZXIubmF0aXZlRWxlbWVudC5zdHlsZS5yaWdodCA9IFwiY2FsYyg1MCUgLSBcIiArICh0aGlzLndpZHRoIC8gMikgKyBcInB4KVwiO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1dyYXBwZXIubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gXCJjYWxjKDUwJSAtIFwiICsgKHRoaXMud2lkdGggLyAyKSArIFwicHgpXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nV3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IFwidHJhbnNsYXRlKFwiICsgdGhpcy5wb3NpdGlvblhPZmZzZXQgKyBcInB4LCBcIiArIHRoaXMucG9zaXRpb25ZT2Zmc2V0ICsgXCJweClcIjtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmhlaWdodCA9PT0gMCA/IFwiaW5pdGlhbFwiIDogdGhpcy5oZWlnaHQgKyBcInB4XCI7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy53aWR0aCArIFwicHhcIjtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLndpZHRoICsgXCJweFwiO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSB0aGlzLm1heEhlaWdodCArIFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuaXNNYXhpbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZXNpemUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIHJlc2l6ZShmb3JGdWxsU2l6ZTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzTWF4aW1pemVkKVxyXG4gICAgICAgICAgICBmb3JGdWxsU2l6ZSA9IHRydWU7XHJcblxyXG4gICAgICAgIGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKDUwKTtcclxuICAgICAgICBsZXQgaGVhZGVySGVpZ2h0ID0gKHRoaXMuaGVhZGVyUmVmKSA/IHRoaXMuaGVhZGVyUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IDogMDtcclxuICAgICAgICBsZXQgZm9vdGVySGVpZ2h0ID0gKHRoaXMuZm9vdGVyUmVmKSA/IHRoaXMuZm9vdGVyUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IDogMDtcclxuICAgICAgICB0aGlzLmhhc0Zvb3RlciA9IGZvb3RlckhlaWdodCA+IDA7XHJcblxyXG4gICAgICAgIGxldCBkb2N1bWVudEJvZHlIZWlnaHQgPSAhZm9yRnVsbFNpemUgPyAoZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgfHwgd2luZG93LmlubmVySGVpZ2h0KSA6IHdpbmRvdy5pbm5lckhlaWdodDtcclxuICAgICAgICB0aGlzLm1heEhlaWdodCA9ICFmb3JGdWxsU2l6ZSA/IGRvY3VtZW50Qm9keUhlaWdodCAtICh0aGlzLnRvcCAqIDIpIDogZG9jdW1lbnRCb2R5SGVpZ2h0O1xyXG4gICAgICAgIHRoaXMuaXNCb2R5VmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbn0iLCI8ZGl2ICNjb250YWluZXJSZWYgY2xhc3M9XCJzbGljay1kaWFsb2ctY29udGFpbmVyIG1vZGFsXCIgKm5nSWY9XCJzaG93RGlhbG9nX2ludGVybmFsID09PSB0cnVlXCIgW2hpZGRlbl09XCIhaXNEaWFsb2dWaXNpYmxlXCIgW3N0eWxlLnpJbmRleF09XCJ6SW5kZXhcIiAjYm91bmRzPlxyXG4gICAgPGRpdiAjZGlhbG9nV3JhcHBlciBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHNsaWNrLWRpYWxvZy16LWluZGV4IGQtaW5saW5lLWJsb2NrXCIgW25nQ2xhc3NdPVwieydpc01pbmltaXplZCcgOiBpc01pbmltaXplZCB9XCIgKGVuZE9mZnNldCk9XCJvbk1vdmVFbmQoJGV2ZW50KVwiIFtwb3NpdGlvbl09XCJwb3NpdGlvblwiIFtuZ0RyYWdnYWJsZV09XCJkcmFnZ2FibGUgJiYgIWlzTWluaW1pemVkXCIgW2JvdW5kc109XCJib3VuZHNcIiBbaGFuZGxlXT1cImRyYWdnaW5nSGFuZGxlXCIgW2luQm91bmRzXT1cImluQm91bmRzXCIgW3N0eWxlLnRvcC5weF09XCJ0b3BcIj5cclxuICAgICAgICA8ZGl2ICNkaWFsb2dSZWYgKHJ6U3RvcCk9XCJvblJlc2l6ZVN0b3AoJGV2ZW50KVwiIFtuZ1Jlc2l6YWJsZV09XCJyZXNpemFibGUgJiYgIWlzTWluaW1pemVkXCIgY2xhc3M9XCJzbGljay1kaWFsb2cgbW9kYWwtY29udGVudCBkLWZsZXggZmxleC1jb2x1bW4gZHJhZy1ibG9jay1oYW5kbGUge3tjc3NDbGFzc319XCIgW3N0eWxlLmhlaWdodF09XCJoZWlnaHQgPT09IDAgPyAnMTAwJScgOiBoZWlnaHQgKyAncHgnXCIgW3N0eWxlLndpZHRoLnB4XT1cIndpZHRoXCIgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwibWF4SGVpZ2h0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgW2NsYXNzLnNsaWNrLWRpYWxvZy1kcmFnZ2luZ0hhbmdsZV09XCJkcmFnZ2FibGUgJiYgIWlzTWluaW1pemVkXCIgI2RyYWdnaW5nSGFuZGxlPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAjaGVhZGVyUmVmIGNsYXNzPVwic2xpY2stZGlhbG9nX2hlYWRlciBtb2RhbC1oZWFkZXIgcHktMFwiICpuZ0lmPVwic2hvd0hlYWRlciA9PT0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItbGVmdFwiPnt7aGVhZGVyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJpZ2h0XCIgKm5nSWY9XCJtaW5pbWl6YWJsZSAmJiAhaXNNaW5pbWl6ZWRcIiAobW91c2Vkb3duKT1cIm9uRGlhbG9nTWluaW1pemUoJGV2ZW50KVwiIHN0eWxlPVwid2lkdGg6IDI4cHg7XCI+PGkgY2xhc3M9XCJmYXIgZmEtd2luZG93LW1pbmltaXplXCI+PC9pPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcmlnaHRcIiAqbmdJZj1cIm1pbmltaXphYmxlICYmICFpc01pbmltaXplZFwiIChtb3VzZWRvd24pPVwidG9nZ2xlRnVsbFNpemUoJGV2ZW50KVwiIHN0eWxlPVwid2lkdGg6IDI4cHg7XCI+PGkgKm5nSWY9XCIhaXNNYXhpbWl6ZWRcIiBjbGFzcz1cImZhciBmYS13aW5kb3ctbWF4aW1pemVcIj48L2k+PGkgKm5nSWY9XCJpc01heGltaXplZFwiIGNsYXNzPVwiZmFyIGZhLXdpbmRvdy1yZXN0b3JlXCI+PC9pPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcmlnaHRcIiAqbmdJZj1cIm1pbmltaXphYmxlICYmIGlzTWluaW1pemVkXCIgKG1vdXNlZG93bik9XCJvbkRpYWxvZ01heGltaXplKCRldmVudClcIiBzdHlsZT1cIndpZHRoOiAyOHB4O1wiPjxpIGNsYXNzPVwiZmFyIGZhLXdpbmRvdy1yZXN0b3JlXCI+PC9pPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcmlnaHRcIiAqbmdJZj1cIiFpc01pbmltaXplZFwiIChtb3VzZWRvd24pPVwib25EaWFsb2dDbG9zZSgkZXZlbnQpXCIgc3R5bGU9XCJ3aWR0aDogMjhweDtcIj48aSBjbGFzcz1cImZhciBmYS10aW1lc1wiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc01pbmltaXplZFwiIFtzdHlsZS52aXNpYmlsaXR5XT1cIihpc0JvZHlWaXNpYmxlID09PSB0cnVlKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCIgc3R5bGU9XCJvdmVyZmxvdy15OiBhdXRvXCIgY2xhc3M9XCJzbGljay1kaWFsb2dfYm9keSBtb2RhbC1ib2R5IGZsZXgtZmlsbFwiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZV9zY3JvbGxiYXInIDogZGlzYWJsZVNjcm9sbGJhciA9PT0gdHJ1ZSwgJ3AtMCc6IG5vUGFkZGluZyA9PT0gdHJ1ZSB9XCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICNmb290ZXJSZWYgW25nQ2xhc3NdPVwieydzbGljay1kaWFsb2dfZm9vdGVyIG1vZGFsLWZvb3Rlcic6IGhhc0Zvb3RlciA9PT0gdHJ1ZSB9XCIgKm5nSWY9XCIhaXNNaW5pbWl6ZWRcIj48bmctY29udGVudCBzZWxlY3Q9XCJzbGljay1kaWFsb2ctZm9vdGVyXCI+PC9uZy1jb250ZW50PjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj4iXX0=
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLWRpYWxvZy9zbGljay1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stZGlhbG9nL3NsaWNrLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBMkQsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7O0FBUS9ELE1BQU0sT0FBTyxvQkFBb0I7SUEwQzdCLFlBQTZCLGFBQWlDO1FBQWpDLGtCQUFhLEdBQWIsYUFBYSxDQUFvQjtRQXpDckQsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBRTVCLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0IsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixRQUFHLEdBQVcsRUFBRSxDQUFDO1FBQ2pCLFVBQUssR0FBVyxHQUFHLENBQUM7UUFDcEIsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUNuQixjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBR3RCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQzVCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUVqQyxZQUFPLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFRakUsYUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUkvQix3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0IsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFN0Isb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFDNUIsb0JBQWUsR0FBVyxDQUFDLENBQUM7SUFJcUMsQ0FBQztJQUVsRSxRQUFRO1FBQ0osSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUNqQyxJQUFJLE9BQU8sQ0FBQyxTQUFTO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUV2RixJQUFJLE9BQU8sQ0FBQyxTQUFTO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUV2RixJQUFJLE9BQU8sQ0FBQyxXQUFXO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUUzRixJQUFJLE9BQU8sQ0FBQyxVQUFVO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVuRixJQUFJLE9BQU8sQ0FBQyxTQUFTO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUUvRixJQUFJLE9BQU8sQ0FBQyxHQUFHO1lBQ2QsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRTFDLElBQUksT0FBTyxDQUFDLEtBQUs7WUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRTlDLElBQUksT0FBTyxDQUFDLE1BQU07WUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRWhELElBQUksT0FBTyxDQUFDLFNBQVM7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXRELElBQUksT0FBTyxDQUFDLFdBQVc7WUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTNGLElBQUksT0FBTyxDQUFDLGdCQUFnQjtZQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JHLENBQUM7SUFHRSxXQUFXO1FBQ1AsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTFELG9FQUFvRTtRQUNwRSxJQUFJLENBQUM7WUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUVULElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBSztRQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFLO1FBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxxQkFBcUI7UUFDakIsTUFBTSxLQUFLLEdBQUc7WUFDVixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDckMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDdEIsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDWixDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDdkIsQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlO1NBQzFCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNYLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkUsT0FBTyxDQUFDLEtBQUssQ0FBQywrRkFBK0YsQ0FBQyxDQUFDO1lBQy9HLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTNFLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDN0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO1lBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFFM0IseUVBQXlFO1lBQ3pFLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNyRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2pDLENBQUM7WUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHO2dCQUNaLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDdkIsQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlO2FBQzFCLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUVKLEtBQUssQ0FBQyxVQUFVO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUVoQyxNQUFNLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTFCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXBELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWpFLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2SSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRTdELElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1RCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVkLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFZO1FBQzVCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFakMsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsT0FBTztZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ1osSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLEtBQUs7WUFDOUIsT0FBTztRQUVYLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUQsTUFBTSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFFN0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDN0IsQ0FBQztRQUVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUxRCxvRUFBb0U7UUFDcEUsSUFBSSxDQUFDO1lBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMzRCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFVCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFZO1FBQ3pCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFFdEQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVk7UUFDekIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUVqQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRS9ILElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQzdELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVk7UUFDdkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUVqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1lBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFFdEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUNwRSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRXhFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQ3pELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDO1lBQ25FLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEIsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQzdELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDeEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN2RixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUMvSCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBRS9GLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDN0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUVqRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ25FLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQXVCLEtBQUs7UUFFN0MsSUFBSSxJQUFJLENBQUMsV0FBVztZQUNoQixXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRXZCLE1BQU0saUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRixJQUFJLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRWxDLElBQUksa0JBQWtCLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ2hILElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztRQUN4RixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO2lJQXBUUSxvQkFBb0I7cUhBQXBCLG9CQUFvQiw4WUFGbEIsQ0FBQyxrQkFBa0IsQ0FBQyx5Z0JDVG5DLCsrRUFpQk07OzJGRE5PLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDSSxjQUFjLGFBR2IsQ0FBQyxrQkFBa0IsQ0FBQzt1RkFHdEIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBRWlCLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDRCxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0UsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNFLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDTSxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU2xpY2tEaWFsb2dTZXJ2aWNlIH0gZnJvbSBcIi4vc2xpY2stZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tTbGVlcFNlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2stc2xlZXAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTbGlja0luaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLWluaXQuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NsaWNrLWRpYWxvZycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJ3NsaWNrLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFtcInNsaWNrLWRpYWxvZy5jb21wb25lbnQuY3NzXCJdLFxyXG4gICAgcHJvdmlkZXJzOiBbU2xpY2tEaWFsb2dTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpY2tEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIGRyYWdnYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSByZXNpemFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgbWluaW1pemFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzaG93SGVhZGVyOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIG5vUGFkZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgdG9wOiBudW1iZXIgPSA4MDtcclxuICAgIEBJbnB1dCgpIHdpZHRoOiBudW1iZXIgPSA2MDA7XHJcbiAgICBASW5wdXQoKSBoZWlnaHQ6IG51bWJlciA9IDA7XHJcbiAgICBASW5wdXQoKSBtYXhIZWlnaHQ6IG51bWJlciA9IDA7XHJcbiAgICBASW5wdXQoKSBjc3NDbGFzczogc3RyaW5nO1xyXG4gICAgQElucHV0KCkga2V5OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzaG93T3ZlcmxheTogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlU2Nyb2xsYmFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQE91dHB1dCgpIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcblx0QFZpZXdDaGlsZChcImNvbnRhaW5lclJlZlwiKSBjb250YWluZXJSZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcImRpYWxvZ1JlZlwiKSBkaWFsb2dSZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcImhlYWRlclJlZlwiKSBoZWFkZXJSZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcImZvb3RlclJlZlwiKSBmb290ZXJSZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcImRpYWxvZ1dyYXBwZXJcIikgZGlhbG9nV3JhcHBlcjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBmblJlc2l6ZSA9ICgpID0+IHRoaXMucmVzaXplKCk7XHJcblxyXG4gICAgcHJpdmF0ZSBvdmVybGF5RWw6IEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICAgIHNob3dEaWFsb2dfaW50ZXJuYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlzRGlhbG9nVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaXNCb2R5VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaGFzRm9vdGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICB6SW5kZXg6IG51bWJlciA9IDA7XHJcbiAgICBpbkJvdW5kczogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBpc01heGltaXplZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaXNNaW5pbWl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwb3NpdGlvblhPZmZzZXQ6IG51bWJlciA9IDA7XHJcbiAgICBwb3NpdGlvbllPZmZzZXQ6IG51bWJlciA9IDA7XHJcblxyXG4gICAgcG9zaXRpb246IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2U6IFNsaWNrRGlhbG9nU2VydmljZSkge31cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmxvYWRQb3NpdGlvbkFuZFNpemUoKTtcclxuICAgIH1cclxuXHJcblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG5cdFx0aWYgKGNoYW5nZXMuZHJhZ2dhYmxlKSBcclxuXHRcdFx0dGhpcy5kcmFnZ2FibGUgPSAodGhpcy5kcmFnZ2FibGUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnZmFsc2UnKSA/IGZhbHNlIDogdHJ1ZTtcclxuXHJcblx0XHRpZiAoY2hhbmdlcy5yZXNpemFibGUpXHJcblx0XHRcdHRoaXMucmVzaXphYmxlID0gKHRoaXMucmVzaXphYmxlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykgPyBmYWxzZSA6IHRydWU7XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMubWluaW1pemFibGUpXHJcblx0XHRcdHRoaXMubWluaW1pemFibGUgPSAodGhpcy5taW5pbWl6YWJsZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdmYWxzZScpID8gZmFsc2UgOiB0cnVlO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLnNob3dIZWFkZXIpXHJcblx0XHRcdHRoaXMuc2hvd0hlYWRlciA9ICh0aGlzLnNob3dIZWFkZXIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnZmFsc2UnKSA/IGZhbHNlIDogdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXMubm9QYWRkaW5nKVxyXG4gICAgICAgICAgICB0aGlzLm5vUGFkZGluZyA9ICh0aGlzLm5vUGFkZGluZy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJykgPyB0cnVlIDogZmFsc2U7XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMudG9wKVxyXG5cdFx0XHR0aGlzLnRvcCA9IHBhcnNlSW50KHRoaXMudG9wLnRvU3RyaW5nKCkpO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLndpZHRoKVxyXG5cdFx0XHR0aGlzLndpZHRoID0gcGFyc2VJbnQodGhpcy53aWR0aC50b1N0cmluZygpKTtcclxuXHJcblx0XHRpZiAoY2hhbmdlcy5oZWlnaHQpXHJcblx0XHRcdHRoaXMuaGVpZ2h0ID0gcGFyc2VJbnQodGhpcy5oZWlnaHQudG9TdHJpbmcoKSk7XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMubWF4SGVpZ2h0KVxyXG5cdFx0XHR0aGlzLm1heEhlaWdodCA9IHBhcnNlSW50KHRoaXMubWF4SGVpZ2h0LnRvU3RyaW5nKCkpO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLnNob3dPdmVybGF5KVxyXG5cdFx0XHR0aGlzLnNob3dPdmVybGF5ID0gKHRoaXMuc2hvd092ZXJsYXkudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnZmFsc2UnKSA/IGZhbHNlIDogdHJ1ZTtcclxuXHJcblx0XHRpZiAoY2hhbmdlcy5kaXNhYmxlU2Nyb2xsYmFyKVxyXG5cdFx0XHR0aGlzLmRpc2FibGVTY3JvbGxiYXIgPSAodGhpcy5kaXNhYmxlU2Nyb2xsYmFyLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKSA/IHRydWUgOiBmYWxzZTtcclxuXHR9XHJcblxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuZm5SZXNpemUsIHRydWUpO1xyXG5cclxuICAgICAgICAvLyBJdCdzIGZpbmUgaWYgdGhpcyBmYWlscy4gIEl0IGp1c3QgbWVhbnMgdGhleSB3ZXJlIGFscmVhZHkgcmVtb3ZlZFxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5vdmVybGF5RWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCB7IH1cclxuXHJcbiAgICAgICAgdGhpcy5vdmVybGF5RWwgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTW92ZUVuZChldmVudCkge1xyXG4gICAgICAgIHRoaXMucG9zaXRpb25YT2Zmc2V0ID0gZXZlbnQueDtcclxuICAgICAgICB0aGlzLnBvc2l0aW9uWU9mZnNldCA9IGV2ZW50Lnk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbkFuZFNpemUoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblJlc2l6ZVN0b3AoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLndpZHRoID0gZXZlbnQuc2l6ZS53aWR0aDtcclxuICAgICAgICB0aGlzLmhlaWdodCA9IGV2ZW50LnNpemUuaGVpZ2h0O1xyXG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25BbmRTaXplKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUG9zaXRpb25BbmRTaXplKCkge1xyXG4gICAgICAgIGNvbnN0IHN0YXRlID0ge1xyXG4gICAgICAgICAgICBwb3NpdGlvblhPZmZzZXQ6IHRoaXMucG9zaXRpb25YT2Zmc2V0LFxyXG4gICAgICAgICAgICBwb3NpdGlvbllPZmZzZXQ6IHRoaXMucG9zaXRpb25ZT2Zmc2V0LFxyXG4gICAgICAgICAgICB3aWR0aDogdGhpcy53aWR0aCxcclxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMucG9zaXRpb24gPSB7XHJcbiAgICAgICAgICAgIHg6IHRoaXMucG9zaXRpb25YT2Zmc2V0LFxyXG4gICAgICAgICAgICB5OiB0aGlzLnBvc2l0aW9uWU9mZnNldFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmtleSkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShgRElBTE9HX1NUQVRFXyR7dGhpcy5rZXl9YCwgSlNPTi5zdHJpbmdpZnkoc3RhdGUpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZFBvc2l0aW9uQW5kU2l6ZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMua2V5ICYmIFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuZXJyb3JMb2cgPT09IFwidmVyYm9zZVwiKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJTdG9yYWdlIEtleSAoW2tleV0gcGFyYW1ldGVyKSBpcyBub3QgcHJvdmlkZWQgZm9yIFNsaWNrIERpYWxvZy4gUGVyc2lzdGluZyBzdGF0ZSBpcyBkaXNhYmxlZC5cIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHN0YXRlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgRElBTE9HX1NUQVRFXyR7dGhpcy5rZXl9YCkpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uWE9mZnNldCA9IHN0YXRlLnBvc2l0aW9uWE9mZnNldDtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbllPZmZzZXQgPSBzdGF0ZS5wb3NpdGlvbllPZmZzZXQ7XHJcbiAgICAgICAgICAgIHRoaXMud2lkdGggPSBzdGF0ZS53aWR0aDtcclxuICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSBzdGF0ZS5oZWlnaHQ7XHJcblxyXG4gICAgICAgICAgICAvLyBTb21ldGltZXMgdGhpcyBnb2VzIGFib3ZlIHRoZSB0b3Agb2YgdGhlIHNjcmVlbi4gIElmIGl0IGRvZXMsIHJlc2V0IGl0XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBvc2l0aW9uWU9mZnNldCA8IDAgJiYgdGhpcy5wb3NpdGlvbllPZmZzZXQgPCAodGhpcy50b3AgKiAtMSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25ZT2Zmc2V0ID0gdGhpcy50b3AgKiAtMTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25BbmRTaXplKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgICB4OiB0aGlzLnBvc2l0aW9uWE9mZnNldCxcclxuICAgICAgICAgICAgICAgIHk6IHRoaXMucG9zaXRpb25ZT2Zmc2V0XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHRhc3luYyBzaG93RGlhbG9nKCkge1xyXG5cdFx0dGhpcy5zaG93RGlhbG9nX2ludGVybmFsID0gdHJ1ZTtcclxuXHJcblx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIHRoaXMub3ZlcmxheUVsID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmNyZWF0ZU92ZXJsYXkoKTtcclxuXHJcbiAgICAgICAgdGhpcy5pc01pbmltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNYXhpbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVtb3ZlRGlhbG9nRnJvbU1pbmltaXplZCh0aGlzLmRpYWxvZ1dyYXBwZXIpO1xyXG5cclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucG9zaXRpb25BdENlbnRlcih0aGlzLmRpYWxvZ1dyYXBwZXIsIHRoaXMudG9wLCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodCwgdGhpcy5wb3NpdGlvblhPZmZzZXQsIHRoaXMucG9zaXRpb25ZT2Zmc2V0KTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy53aWR0aCArIFwicHhcIjtcclxuXHJcbiAgICAgICAgdGhpcy56SW5kZXggPSAoKFNsaWNrRGlhbG9nU2VydmljZS5vdmVybGF5Q291bnQgKiAxMDApICsgMSk7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd092ZXJsYXkpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dPdmVybGF5KHRoaXMub3ZlcmxheUVsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc0RpYWxvZ1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzaXplKCk7XHJcblxyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImNvbGxhcHNlLWRpYWxvZ1wiKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJleHBhbmQtZGlhbG9nXCIpO1xyXG5cclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmZuUmVzaXplLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvbkRpYWxvZ0Nsb3NlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICAgIGF3YWl0IHRoaXMuaGlkZURpYWxvZygpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5vbkNsb3NlKVxyXG4gICAgICAgICAgICB0aGlzLm9uQ2xvc2UuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGhpZGVEaWFsb2coKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNEaWFsb2dWaXNpYmxlID09PSBmYWxzZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmlzTWF4aW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd092ZXJsYXkpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmhpZGVPdmVybGF5KHRoaXMub3ZlcmxheUVsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiZXhwYW5kLWRpYWxvZ1wiKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJjb2xsYXBzZS1kaWFsb2dcIik7XHJcbiAgICAgICAgYXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoMzUwKTtcclxuICAgICAgICB0aGlzLmlzQm9keVZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc01pbmltaXplZCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVtb3ZlRGlhbG9nRnJvbU1pbmltaXplZCh0aGlzLmRpYWxvZ1dyYXBwZXIpO1xyXG4gICAgICAgICAgICB0aGlzLmlzTWluaW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmZuUmVzaXplLCB0cnVlKTtcclxuXHJcbiAgICAgICAgLy8gSXQncyBmaW5lIGlmIHRoaXMgZmFpbHMuICBJdCBqdXN0IG1lYW5zIHRoZXkgd2VyZSBhbHJlYWR5IHJlbW92ZWRcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMub3ZlcmxheUVsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggeyB9XHJcblxyXG4gICAgICAgIHRoaXMub3ZlcmxheUVsID0gbnVsbDtcclxuICAgICAgICB0aGlzLnNob3dEaWFsb2dfaW50ZXJuYWwgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRpYWxvZ01pbmltaXplKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5pc01heGltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNaW5pbWl6ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gXCJpbml0aWFsXCI7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNob3dPdmVybGF5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5oaWRlT3ZlcmxheSh0aGlzLm92ZXJsYXlFbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5taW5pbWl6ZSh0aGlzLmRpYWxvZ1dyYXBwZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRGlhbG9nTWF4aW1pemUoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm1heGltaXplKHRoaXMuZGlhbG9nV3JhcHBlciwgdGhpcy50b3AsIHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0LCB0aGlzLnBvc2l0aW9uWE9mZnNldCwgdGhpcy5wb3NpdGlvbllPZmZzZXQpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zaG93T3ZlcmxheSkge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd092ZXJsYXkodGhpcy5vdmVybGF5RWwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy56SW5kZXggPSBwYXJzZUludCh0aGlzLm92ZXJsYXlFbC5zdHlsZS56SW5kZXgpICsgMTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc01pbmltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy53aWR0aCArIFwicHhcIjtcclxuICAgICAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgICB9LCAzMDApO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZUZ1bGxTaXplKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzTWF4aW1pemVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nV3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9IFwiMHB4XCI7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nV3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLnJpZ2h0ID0gXCIwcHhcIjtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IFwiMHB4XCI7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0ICsgXCJweFwiO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoICsgXCJweFwiO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1dyYXBwZXIubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoICsgXCJweFwiO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSBcImluaXRpYWxcIjtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gXCJ0cmFuc2xhdGUoMCUpXCI7XHJcbiAgICAgICAgICAgIHRoaXMuaXNNYXhpbWl6ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2l6ZSh0cnVlKTtcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gdGhpcy50b3AgKyBcInB4XCI7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nV3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLnJpZ2h0ID0gXCJjYWxjKDUwJSAtIFwiICsgKHRoaXMud2lkdGggLyAyKSArIFwicHgpXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nV3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSBcImNhbGMoNTAlIC0gXCIgKyAodGhpcy53aWR0aCAvIDIpICsgXCJweClcIjtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gXCJ0cmFuc2xhdGUoXCIgKyB0aGlzLnBvc2l0aW9uWE9mZnNldCArIFwicHgsIFwiICsgdGhpcy5wb3NpdGlvbllPZmZzZXQgKyBcInB4KVwiO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuaGVpZ2h0ID09PSAwID8gXCJpbml0aWFsXCIgOiB0aGlzLmhlaWdodCArIFwicHhcIjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLndpZHRoICsgXCJweFwiO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1dyYXBwZXIubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMud2lkdGggKyBcInB4XCI7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLm1heEhlaWdodCA9IHRoaXMubWF4SGVpZ2h0ICsgXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5pc01heGltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2l6ZShmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgcmVzaXplKGZvckZ1bGxTaXplOiBib29sZWFuID0gZmFsc2UpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNNYXhpbWl6ZWQpXHJcbiAgICAgICAgICAgIGZvckZ1bGxTaXplID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgYXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoNTApO1xyXG4gICAgICAgIGxldCBoZWFkZXJIZWlnaHQgPSAodGhpcy5oZWFkZXJSZWYpID8gdGhpcy5oZWFkZXJSZWYubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgOiAwO1xyXG4gICAgICAgIGxldCBmb290ZXJIZWlnaHQgPSAodGhpcy5mb290ZXJSZWYpID8gdGhpcy5mb290ZXJSZWYubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgOiAwO1xyXG4gICAgICAgIHRoaXMuaGFzRm9vdGVyID0gZm9vdGVySGVpZ2h0ID4gMDtcclxuXHJcbiAgICAgICAgbGV0IGRvY3VtZW50Qm9keUhlaWdodCA9ICFmb3JGdWxsU2l6ZSA/IChkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCB8fCB3aW5kb3cuaW5uZXJIZWlnaHQpIDogd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gIWZvckZ1bGxTaXplID8gZG9jdW1lbnRCb2R5SGVpZ2h0IC0gdGhpcy50b3AgLSAyMCA6IGRvY3VtZW50Qm9keUhlaWdodDtcclxuICAgICAgICB0aGlzLmlzQm9keVZpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG59IiwiPGRpdiAjY29udGFpbmVyUmVmIGNsYXNzPVwic2xpY2stZGlhbG9nLWNvbnRhaW5lciBtb2RhbFwiICpuZ0lmPVwic2hvd0RpYWxvZ19pbnRlcm5hbCA9PT0gdHJ1ZVwiIFtoaWRkZW5dPVwiIWlzRGlhbG9nVmlzaWJsZVwiIFtzdHlsZS56SW5kZXhdPVwiekluZGV4XCIgI2JvdW5kcz5cclxuICAgIDxkaXYgI2RpYWxvZ1dyYXBwZXIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBzbGljay1kaWFsb2ctei1pbmRleCBkLWlubGluZS1ibG9ja1wiIFtuZ0NsYXNzXT1cInsnaXNNaW5pbWl6ZWQnIDogaXNNaW5pbWl6ZWQgfVwiIChlbmRPZmZzZXQpPVwib25Nb3ZlRW5kKCRldmVudClcIiBbcG9zaXRpb25dPVwicG9zaXRpb25cIiBbbmdEcmFnZ2FibGVdPVwiZHJhZ2dhYmxlICYmICFpc01pbmltaXplZFwiIFtib3VuZHNdPVwiYm91bmRzXCIgW2hhbmRsZV09XCJkcmFnZ2luZ0hhbmRsZVwiIFtpbkJvdW5kc109XCJpbkJvdW5kc1wiIFtzdHlsZS50b3AucHhdPVwidG9wXCI+XHJcbiAgICAgICAgPGRpdiAjZGlhbG9nUmVmIChyelN0b3ApPVwib25SZXNpemVTdG9wKCRldmVudClcIiBbbmdSZXNpemFibGVdPVwicmVzaXphYmxlICYmICFpc01pbmltaXplZFwiIGNsYXNzPVwic2xpY2stZGlhbG9nIG1vZGFsLWNvbnRlbnQgZC1mbGV4IGZsZXgtY29sdW1uIGRyYWctYmxvY2staGFuZGxlIHt7Y3NzQ2xhc3N9fVwiIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0ID09PSAwID8gJzEwMCUnIDogaGVpZ2h0ICsgJ3B4J1wiIFtzdHlsZS53aWR0aC5weF09XCJ3aWR0aFwiIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cIm1heEhlaWdodFwiPlxyXG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5zbGljay1kaWFsb2ctZHJhZ2dpbmdIYW5nbGVdPVwiZHJhZ2dhYmxlICYmICFpc01pbmltaXplZFwiICNkcmFnZ2luZ0hhbmRsZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgI2hlYWRlclJlZiBjbGFzcz1cInNsaWNrLWRpYWxvZ19oZWFkZXIgbW9kYWwtaGVhZGVyIHB5LTBcIiAqbmdJZj1cInNob3dIZWFkZXIgPT09IHRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWxlZnRcIj57e2hlYWRlcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yaWdodFwiICpuZ0lmPVwibWluaW1pemFibGUgJiYgIWlzTWluaW1pemVkXCIgKG1vdXNlZG93bik9XCJvbkRpYWxvZ01pbmltaXplKCRldmVudClcIiBzdHlsZT1cIndpZHRoOiAyOHB4O1wiPjxpIGNsYXNzPVwiZmFyIGZhLXdpbmRvdy1taW5pbWl6ZVwiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJpZ2h0XCIgKm5nSWY9XCJtaW5pbWl6YWJsZSAmJiAhaXNNaW5pbWl6ZWRcIiAobW91c2Vkb3duKT1cInRvZ2dsZUZ1bGxTaXplKCRldmVudClcIiBzdHlsZT1cIndpZHRoOiAyOHB4O1wiPjxpICpuZ0lmPVwiIWlzTWF4aW1pemVkXCIgY2xhc3M9XCJmYXIgZmEtd2luZG93LW1heGltaXplXCI+PC9pPjxpICpuZ0lmPVwiaXNNYXhpbWl6ZWRcIiBjbGFzcz1cImZhciBmYS13aW5kb3ctcmVzdG9yZVwiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJpZ2h0XCIgKm5nSWY9XCJtaW5pbWl6YWJsZSAmJiBpc01pbmltaXplZFwiIChtb3VzZWRvd24pPVwib25EaWFsb2dNYXhpbWl6ZSgkZXZlbnQpXCIgc3R5bGU9XCJ3aWR0aDogMjhweDtcIj48aSBjbGFzcz1cImZhciBmYS13aW5kb3ctcmVzdG9yZVwiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJpZ2h0XCIgKm5nSWY9XCIhaXNNaW5pbWl6ZWRcIiAobW91c2Vkb3duKT1cIm9uRGlhbG9nQ2xvc2UoJGV2ZW50KVwiIHN0eWxlPVwid2lkdGg6IDI4cHg7XCI+PGkgY2xhc3M9XCJmYXIgZmEtdGltZXNcIj48L2k+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNNaW5pbWl6ZWRcIiBbc3R5bGUudmlzaWJpbGl0eV09XCIoaXNCb2R5VmlzaWJsZSA9PT0gdHJ1ZSkgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiIHN0eWxlPVwib3ZlcmZsb3cteTogYXV0b1wiIGNsYXNzPVwic2xpY2stZGlhbG9nX2JvZHkgbW9kYWwtYm9keSBmbGV4LWZpbGxcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVfc2Nyb2xsYmFyJyA6IGRpc2FibGVTY3JvbGxiYXIgPT09IHRydWUsICdwLTAnOiBub1BhZGRpbmcgPT09IHRydWUgfVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAjZm9vdGVyUmVmIFtuZ0NsYXNzXT1cInsnc2xpY2stZGlhbG9nX2Zvb3RlciBtb2RhbC1mb290ZXInOiBoYXNGb290ZXIgPT09IHRydWUgfVwiICpuZ0lmPVwiIWlzTWluaW1pemVkXCI+PG5nLWNvbnRlbnQgc2VsZWN0PVwic2xpY2stZGlhbG9nLWZvb3RlclwiPjwvbmctY29udGVudD48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+Il19
@@ -39,6 +39,9 @@ export class SlickMultiSelectComponent {
39
39
  this.propagateChange = (_) => { };
40
40
  this.uuid = SlickUtilsService.newGuid();
41
41
  }
42
+ async ngOnInit() {
43
+ this.attachTo = this.attachTo || SlickInitService.getParams().attachTo || 'body';
44
+ }
42
45
  async ngAfterViewInit() {
43
46
  // Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom
44
47
  // of a div when it expands beyond the bottom.
@@ -94,6 +97,7 @@ export class SlickMultiSelectComponent {
94
97
  return;
95
98
  this.reposition();
96
99
  await SlickSleepService.sleep();
100
+ SlickUtilsService.attachElement(this.multiSelectList.nativeElement, this.attachTo);
97
101
  this.multiSelectList.nativeElement.style.display = "inline-block";
98
102
  let selectedItems = this.multiSelectList.nativeElement.getElementsByClassName("selected");
99
103
  if (selectedItems && selectedItems.length > 0)
@@ -118,11 +122,12 @@ export class SlickMultiSelectComponent {
118
122
  }
119
123
  async reposition() {
120
124
  await SlickSleepService.sleep();
121
- let rect = this.containerDiv.nativeElement.getBoundingClientRect();
122
- let containerLeft = rect.left;
123
- let containerTop = rect.top;
125
+ const multiSelectRect = this.containerDiv.nativeElement.getBoundingClientRect();
126
+ const parentRect = (this.attachTo === 'body') ? null : document.body.querySelector(this.attachTo).getBoundingClientRect();
127
+ const containerLeft = (this.attachTo === 'body') ? multiSelectRect.left : (multiSelectRect.left - parentRect.left);
128
+ const containerTop = (this.attachTo === 'body') ? multiSelectRect.top : (multiSelectRect.top - parentRect.top);
124
129
  let containerHeight = this.containerDiv.nativeElement.offsetHeight;
125
- let containerWidth = rect.width;
130
+ let containerWidth = multiSelectRect.width;
126
131
  this.width = containerWidth;
127
132
  if (this.listWidth === '100%')
128
133
  this.listGroupWidth = this.width;
@@ -350,7 +355,7 @@ export class SlickMultiSelectComponent {
350
355
  this.propagateChange(this.selectedIds);
351
356
  }
352
357
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickMultiSelectComponent, deps: [{ token: i1.SlickMultiSelectService }], target: i0.ɵɵFactoryTarget.Component }); }
353
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: SlickMultiSelectComponent, selector: "slick-multi-select", inputs: { placeholder: "placeholder", items: "items", idFieldName: "idFieldName", textFieldName: "textFieldName", disabled: "disabled", allowEmpty: "allowEmpty", singleSelect: "singleSelect", width: "width", listWidth: "listWidth", height: "height", showLoadingMessage: "showLoadingMessage", showDebug: "showDebug", tabindex: "tabindex", searchType: "searchType" }, outputs: { onExpand: "onExpand", onCollapse: "onCollapse", onSelect: "onSelect" }, providers: [SlickMultiSelectService,
358
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: SlickMultiSelectComponent, selector: "slick-multi-select", inputs: { placeholder: "placeholder", items: "items", idFieldName: "idFieldName", textFieldName: "textFieldName", disabled: "disabled", allowEmpty: "allowEmpty", singleSelect: "singleSelect", width: "width", listWidth: "listWidth", height: "height", showLoadingMessage: "showLoadingMessage", showDebug: "showDebug", tabindex: "tabindex", attachTo: "attachTo", searchType: "searchType" }, outputs: { onExpand: "onExpand", onCollapse: "onCollapse", onSelect: "onSelect" }, providers: [SlickMultiSelectService,
354
359
  {
355
360
  provide: NG_VALUE_ACCESSOR,
356
361
  useExisting: forwardRef((() => SlickMultiSelectComponent)),
@@ -391,6 +396,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
391
396
  type: Input
392
397
  }], tabindex: [{
393
398
  type: Input
399
+ }], attachTo: [{
400
+ type: Input
394
401
  }], searchType: [{
395
402
  type: Input
396
403
  }], onExpand: [{
@@ -412,4 +419,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
412
419
  type: ViewChild,
413
420
  args: ["filterTextInputRef"]
414
421
  }] } });
415
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stbXVsdGktc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLW11bHRpLXNlbGVjdC9zbGljay1tdWx0aS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stbXVsdGktc2VsZWN0L3NsaWNrLW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFrRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlKLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUUvRCxNQUFNLENBQU4sSUFBWSwyQkFBeUQ7QUFBckUsV0FBWSwyQkFBMkI7SUFBRyx5RkFBVSxDQUFBO0lBQUUscUZBQVEsQ0FBQTtJQUFFLDJFQUFHLENBQUE7QUFBQyxDQUFDLEVBQXpELDJCQUEyQixLQUEzQiwyQkFBMkIsUUFBOEI7QUFZckUsTUFBTSxPQUFPLHlCQUF5QjtJQTBDckMsWUFBb0IsdUJBQWdEO1FBQWhELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUF6QzNELGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRXpCLGdCQUFXLEdBQVcsSUFBSSxDQUFDO1FBQzNCLGtCQUFhLEdBQVcsTUFBTSxDQUFDO1FB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QVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFFb0IsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUNLLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNNLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBQ0Msa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBmb3J3YXJkUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UgfSBmcm9tIFwiLi9zbGljay1tdWx0aS1zZWxlY3Quc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU2xpY2tTbGVlcFNlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2stc2xlZXAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTbGlja1V0aWxzU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay11dGlscy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrSW5pdFNlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2staW5pdC5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQgZW51bSBTbGlja011bHRpU2VsZWN0U2VhcmNoVHlwZXMgeyBzdGFydHNXaXRoLCBlYWNoV29yZCwgYW55IH1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnc2xpY2stbXVsdGktc2VsZWN0JyxcclxuXHR0ZW1wbGF0ZVVybDogJ3NsaWNrLW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcblx0cHJvdmlkZXJzOiBbU2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UsXHJcblx0XHR7XHJcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG5cdFx0XHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbGlja011bHRpU2VsZWN0Q29tcG9uZW50KSxcclxuXHRcdFx0bXVsdGk6IHRydWUsXHJcblx0XHR9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpY2tNdWx0aVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblx0QElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG5cdEBJbnB1dCgpIGl0ZW1zOiBhbnlbXTtcclxuXHRASW5wdXQoKSBpZEZpZWxkTmFtZTogc3RyaW5nID0gXCJpZFwiO1xyXG5cdEBJbnB1dCgpIHRleHRGaWVsZE5hbWU6IHN0cmluZyA9IFwidGV4dFwiO1xyXG5cdEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgYWxsb3dFbXB0eTogc3RyaW5nID0gJ3RydWUnO1xyXG5cdEBJbnB1dCgpIHNpbmdsZVNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XHJcblx0QElucHV0KCkgbGlzdFdpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XHJcblx0QElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnMzAwcHgnO1xyXG5cdEBJbnB1dCgpIHNob3dMb2FkaW5nTWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHNob3dEZWJ1ZzogYm9vbGVhbjtcclxuXHRASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyO1xyXG5cdEBJbnB1dCgpIHNlYXJjaFR5cGU6IFNsaWNrTXVsdGlTZWxlY3RTZWFyY2hUeXBlcyA9IFNsaWNrTXVsdGlTZWxlY3RTZWFyY2hUeXBlcy5lYWNoV29yZDtcclxuXHJcblx0QE91dHB1dCgpIG9uRXhwYW5kOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblx0QE91dHB1dCgpIG9uQ29sbGFwc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHRAT3V0cHV0KCkgb25TZWxlY3Q6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG5cdEBWaWV3Q2hpbGQoXCJjb250YWluZXJEaXZcIikgY29udGFpbmVyRGl2OiBFbGVtZW50UmVmO1xyXG5cdEBWaWV3Q2hpbGQoXCJtdWx0aVNlbGVjdExpc3RcIikgbXVsdGlTZWxlY3RMaXN0OiBFbGVtZW50UmVmO1xyXG5cdEBWaWV3Q2hpbGQoXCJwbGFjZWhvbGRlcklucHV0UmVmXCIpIHBsYWNlaG9sZGVySW5wdXRSZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcImZpbHRlclRleHRJbnB1dFJlZlwiKSBmaWx0ZXJUZXh0SW5wdXRSZWY6IEVsZW1lbnRSZWY7XHJcblxyXG5cdC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHNvIHRoYXQgdGhlIHNjcm9sbCBhbmQgcmVzaXplIGV2ZW50cyBjYW4gYWRkIGFuZCByZW1vdmUgdGhlIGV2ZW50IHByb3Blcmx5LFxyXG5cdC8vIGFzIHdlbGwgYXMgZ2V0dGluZyB0aGUgY29ycmVjdCBFUzYgZnVuY3Rpb25cclxuXHRwcml2YXRlIGZuRG9jdW1lbnRDbGljayA9IChlKSA9PiB0aGlzLmRvY3VtZW50Q2xpY2soZSk7XHJcblxyXG5cdHV1aWQ6IHN0cmluZztcclxuXHRzZWxlY3RlZElkczogc3RyaW5nW107XHJcblx0c2VsZWN0ZWRUZXh0OiBzdHJpbmc7XHJcblx0ZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRmaWx0ZXJUZXh0OiBzdHJpbmcgPSAnJztcclxuXHRzZWxlY3RlZEluZGV4OiBudW1iZXI7XHJcblx0c2VsZWN0ZWRJdGVtczogYW55W107XHJcblx0dmlzaWJsZUl0ZW1zOiBhbnlbXTtcclxuXHRsZWZ0OiBzdHJpbmc7XHJcblx0dG9wOiBzdHJpbmc7XHJcblx0bGlzdEdyb3VwV2lkdGg6IHN0cmluZztcclxuXHRpc0FuZHJvaWQ6IGJvb2xlYW4gPSAoKFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGxhdGZvcm0oKSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2FuZHJvaWQnKTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBzbGlja011bHRpU2VsZWN0U2VydmljZTogU2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UpIHtcclxuXHRcdHRoaXMudXVpZCA9IFNsaWNrVXRpbHNTZXJ2aWNlLm5ld0d1aWQoKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHRcdC8vIFJlbW92ZSB0aGlzIGZyb20gdGhlIGlubGluZSB2ZXJzaW9uIGFuZCBwdXQgaXQgb24gdGhlIGJvZHkgc28gdGhhdCBpdCBkb2Vzbid0IGhpZGUgYmVoaW5kIHRoZSBib3R0b21cclxuXHRcdC8vIG9mIGEgZGl2IHdoZW4gaXQgZXhwYW5kcyBiZXlvbmQgdGhlIGJvdHRvbS5cclxuXHRcdHRoaXMubXVsdGlTZWxlY3RMaXN0Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlKHRoaXMubXVsdGlTZWxlY3RMaXN0KTtcclxuXHRcdGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudCk7XHJcblx0fVxyXG5cclxuXHRwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcblxyXG5cdC8vIHRoaXMgaXMgdGhlIGluaXRpYWwgdmFsdWUgc2V0IHRvIHRoZSBjb21wb25lbnRcclxuXHRwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IGFueSkge1xyXG5cdFx0aWYgKG9iailcclxuXHRcdFx0dGhpcy5zZWxlY3RlZElkcyA9IG9iajtcclxuXHRcdGVsc2VcclxuXHRcdFx0dGhpcy5zZWxlY3RlZElkcyA9IG51bGw7XHJcblxyXG5cdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0fVxyXG5cclxuXHQvLyByZWdpc3RlcnMgJ2ZuJyB0aGF0IHdpbGwgYmUgZmlyZWQgd2hlbiBjaGFuZ2VzIGFyZSBtYWRlXHJcblx0Ly8gdGhpcyBpcyBob3cgd2UgZW1pdCB0aGUgY2hhbmdlcyBiYWNrIHRvIHRoZSBmb3JtXHJcblx0cHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuXHR9XHJcblxyXG5cdC8vIG5vdCB1c2VkLCB1c2VkIGZvciB0b3VjaCBpbnB1dFxyXG5cdHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCgpIHsgfVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRpZiAoY2hhbmdlcy5zaW5nbGVTZWxlY3QpIHtcclxuXHRcdFx0dGhpcy5zaW5nbGVTZWxlY3QgPSAodGhpcy5zaW5nbGVTZWxlY3QudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLnNlYXJjaFR5cGUpIHtcclxuXHRcdFx0aWYgKGNoYW5nZXMuc2VhcmNoVHlwZS5jdXJyZW50VmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnc3RhcnRzd2l0aCcpXHJcblx0XHRcdFx0dGhpcy5zZWFyY2hUeXBlID0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzLnN0YXJ0c1dpdGg7XHJcblx0XHRcdGVsc2UgaWYgKGNoYW5nZXMuc2VhcmNoVHlwZS5jdXJyZW50VmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnYW55JylcclxuXHRcdFx0XHR0aGlzLnNlYXJjaFR5cGUgPSBTbGlja011bHRpU2VsZWN0U2VhcmNoVHlwZXMuYW55O1xyXG5cdFx0XHRlbHNlXHJcblx0XHRcdFx0dGhpcy5zZWFyY2hUeXBlID0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzLmVhY2hXb3JkO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLml0ZW1zKSB7XHJcblx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclRleHRJbnB1dFJlZiAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IHRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpXHJcblx0XHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHJcblx0XHQvLyBpdCdzIG9rYXkgaWYgdGhpcyBmYWlscy4gIEl0IHdhcyBhbHJlYWR5IHJlbW92ZWRcclxuXHRcdHRyeSB7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudCk7XHJcblx0XHR9XHJcblx0XHRjYXRjaCB7IH1cclxuXHJcblx0fVxyXG5cclxuXHRhc3luYyBleHBhbmQoKSB7XHJcblx0XHRpZiAodGhpcy5kaXNhYmxlZClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdHRoaXMucmVwb3NpdGlvbigpO1xyXG5cclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHR0aGlzLm11bHRpU2VsZWN0TGlzdC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xyXG5cclxuXHRcdGxldCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwic2VsZWN0ZWRcIik7XHJcblx0XHRpZiAoc2VsZWN0ZWRJdGVtcyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApXHJcblx0XHRcdCg8SFRNTEVsZW1lbnQ+c2VsZWN0ZWRJdGVtc1swXSkuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pO1xyXG5cclxuXHRcdHRoaXMuZXhwYW5kZWQgPSB0cnVlO1xyXG5cclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblxyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XHJcblxyXG5cdFx0Ly8gVGhpcyBpcyBuZWNlc3NhcnksIG90aGVyd2lzZSBgdGhpc2AgaW4gdGhlIHJlcG9zaXRpb24gZnVuY3Rpb24gd2lsbCBiZSB3aW5kb3dcclxuXHRcdC8vIGFuZCBub3QgdGhlIGNvbXBvbmVudC5cclxuXHRcdC8vIFNpbmNlIGFuZ3VsYXIgaGFzIG5vIHdheSB0byB1c2UgdGhlIHRoaXJkIHBhcmFtZXRlciwgSSdtIGRvaW5nIHRoaXMgaW4gcmF3IGpzXHJcblx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5mbkRvY3VtZW50Q2xpY2ssIHRydWUpO1xyXG5cclxuXHRcdGlmICh0aGlzLm9uRXhwYW5kKVxyXG5cdFx0XHR0aGlzLm9uRXhwYW5kLmVtaXQoKTtcclxuXHR9XHJcblxyXG5cdGNvbGxhcHNlKCkge1xyXG5cdFx0dGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcblx0XHQvLyBTaW5jZSBhbmd1bGFyIGhhcyBubyB3YXkgdG8gdXNlIHRoZSB0aGlyZCBwYXJhbWV0ZXIsIEknbSBkb2luZyB0aGlzIGluIHJhdyBqc1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHJcblx0XHRpZiAodGhpcy5vbkNvbGxhcHNlKVxyXG5cdFx0XHR0aGlzLm9uQ29sbGFwc2UuZW1pdCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgcmVwb3NpdGlvbigpIHtcclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRsZXQgcmVjdCA9IHRoaXMuY29udGFpbmVyRGl2Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblx0XHRsZXQgY29udGFpbmVyTGVmdCA9IHJlY3QubGVmdDtcclxuXHRcdGxldCBjb250YWluZXJUb3AgPSByZWN0LnRvcDtcclxuXHRcdGxldCBjb250YWluZXJIZWlnaHQgPSB0aGlzLmNvbnRhaW5lckRpdi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuXHRcdGxldCBjb250YWluZXJXaWR0aCA9IHJlY3Qud2lkdGg7XHJcblxyXG5cdFx0dGhpcy53aWR0aCA9IGNvbnRhaW5lcldpZHRoO1xyXG5cdFx0aWYgKHRoaXMubGlzdFdpZHRoID09PSAnMTAwJScpXHJcblx0XHRcdHRoaXMubGlzdEdyb3VwV2lkdGggPSB0aGlzLndpZHRoO1xyXG5cdFx0ZWxzZSBpZiAodGhpcy5saXN0V2lkdGggPT09ICdhdXRvJylcclxuXHRcdFx0dGhpcy5saXN0R3JvdXBXaWR0aCA9IFwiYXV0b1wiO1xyXG5cdFx0ZWxzZVxyXG5cdFx0XHR0aGlzLmxpc3RHcm91cFdpZHRoID0gdGhpcy5saXN0V2lkdGg7XHJcblx0XHR0aGlzLnRvcCA9IChjb250YWluZXJUb3AgKyBjb250YWluZXJIZWlnaHQpO1xyXG5cdFx0dGhpcy5sZWZ0ID0gY29udGFpbmVyTGVmdDtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZG9jdW1lbnRDbGljayhlOiBNb3VzZUV2ZW50KSB7XHJcblx0XHRpZiAoIXRoaXMuZXhwYW5kZWQgfHwgIWUudGFyZ2V0KVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0Ly8gSWYgdGhleSBjbGlja2VkIG9uIHRoZSBrZXlib2FyZCBpY29uLCBkb24ndCBkbyBhbnl0aGluZ1xyXG5cdFx0aWYgKFNsaWNrVXRpbHNTZXJ2aWNlLmNoZWNrUGFyZW50Q2xhc3NFeGlzdHMoPEhUTUxFbGVtZW50PmUudGFyZ2V0LCBcInNsaWNrLW11bHRpLXNlbGVjdF9tb2JpbGUtY29udGFpbmVyXCIpICYmXHJcblx0XHRcdFNsaWNrVXRpbHNTZXJ2aWNlLmNoZWNrUGFyZW50SWRFeGlzdHMoPEhUTUxFbGVtZW50PmUudGFyZ2V0LCBcInNsaWNrLW11bHRpLXNlbGVjdF9cIiArIHRoaXMudXVpZCkpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHRjb25zdCBjbGlja2VkSW5zaWRlID0gU2xpY2tVdGlsc1NlcnZpY2UuY2hlY2tQYXJlbnRDbGFzc0V4aXN0cyg8SFRNTEVsZW1lbnQ+ZS50YXJnZXQsIFwic2xpY2stbXVsdGktc2VsZWN0X2xpc3QtaXRlbVwiKTtcclxuXHRcdGlmICghY2xpY2tlZEluc2lkZSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9ICcnO1xyXG5cdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJztcclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzZWxlY3RJdGVtKGlkOiBzdHJpbmcpIHtcclxuXHRcdGxldCBpdGVtID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW0odGhpcy52aXNpYmxlSXRlbXMsIGlkKTtcclxuXHJcblx0XHRpZiAoaXRlbSkge1xyXG5cclxuXHRcdFx0aWYgKHRoaXMub25TZWxlY3QpXHJcblx0XHRcdFx0dGhpcy5vblNlbGVjdC5lbWl0KGl0ZW0pO1xyXG5cclxuXHRcdFx0aWYgKCF0aGlzLnNlbGVjdGVkSWRzKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcclxuXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJZHMucHVzaChpZCk7XHJcblx0XHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuc2VsZWN0ZWRJZHMpO1xyXG5cclxuXHRcdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHJcblx0XHRcdHRoaXMucmVwb3NpdGlvbigpO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMuc2luZ2xlU2VsZWN0ID09PSB0cnVlKVxyXG5cdFx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9ICcnO1xyXG5cdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblxyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnZhbHVlID0gJyc7XHJcblx0fVxyXG5cclxuXHRzZXRGb2N1cygpIHtcclxuXHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBvbkZvY3VzKCkge1xyXG5cdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblxyXG5cdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgZXhwYW5kT25LZXlVcChlOiBLZXlib2FyZEV2ZW50KSB7XHJcblxyXG5cdFx0aWYgKGUua2V5Lmxlbmd0aCA9PSAxIHx8IChlLmtleS5sZW5ndGggPiAxICYmIC9bXmEtekEtWjAtOV0vLnRlc3QoZS5rZXkpKSkge1xyXG5cdFx0XHR0aGlzLmV4cGFuZCgpO1x0XHRcdFxyXG5cdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5wbGFjZWhvbGRlcklucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnZhbHVlID0gJyc7XHJcblxyXG5cdFx0XHR0aGlzLm9uS2V5RG93bihlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KSB7XHJcblx0XHRpZiAoZS5rZXkgIT09ICdUYWInICYmXHJcblx0XHRcdGUua2V5ICE9PSAnRW50ZXInICYmXHJcblx0XHRcdGUua2V5ICE9PSAnRXNjYXBlJyAmJlxyXG5cdFx0XHRlLmtleSAhPT0gJ0JhY2tzcGFjZScgJiZcclxuXHRcdFx0ZS5rZXkgIT09ICdBcnJvd1VwJyAmJlxyXG5cdFx0XHRlLmtleSAhPT0gJ0Fycm93RG93bidcclxuXHRcdCkge1xyXG5cdFx0XHQvLyBJZiBGMSBpcyBwcmVzc2VkLCBrZXkgbGVuZ3RoIHdpbGwgYmUgMlxyXG5cdFx0XHRpZiAoZS5rZXkubGVuZ3RoID4gMSB8fCBlLmN0cmxLZXkgfHwgZS5hbHRLZXkpIHtcclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvL2Uuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHQvL2UucHJldmVudERlZmF1bHQoKTtcclxuXHJcblx0XHQvLyBJZiB0aGlzIGlzIGFuZHJvaWQsIGl0IHdvbid0IHBhc3MgdXMgYW55IGtleSBkYXRhIHNvIGp1c3QgcmVhZCB0aGUgZW50aXJlIGlucHV0IGVsZW1lbnRcclxuXHRcdGlmICh0aGlzLmlzQW5kcm9pZCA9PT0gdHJ1ZSkge1xyXG5cdFx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ID0gKDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnZhbHVlO1xyXG5cdFx0XHR0aGlzLmZpbHRlclNlYXJjaCgpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gVGFiL2VudGVyXHJcblx0XHRpZiAoZS5rZXkgPT09ICdUYWInKSB7XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclRleHQgJiYgdGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0SXRlbSh0aGlzLnZpc2libGVJdGVtc1swXS5pZCk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHJcblx0XHRcdHRoaXMuZmlsdGVyVGV4dCA9ICcnO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9ICcnO1xyXG5cdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJztcclxuXHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gbnVsbDtcclxuXHJcblx0XHRcdGNvbnN0IGN1cnJlbnROb2RlID0gPEhUTUxFbGVtZW50Pih0aGlzLnBsYWNlaG9sZGVySW5wdXRSZWYubmF0aXZlRWxlbWVudCk7XHJcblx0XHRcdC8vZmluZCBhbGwgdGFiLWFibGUgZWxlbWVudHNcclxuXHRcdFx0Y29uc3QgYWxsRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCwgYnV0dG9uLCBhLCBhcmVhLCBvYmplY3QsIHNlbGVjdCwgdGV4dGFyZWEsIFtjb250ZW50ZWRpdGFibGVdJyk7XHJcblxyXG5cdFx0XHQvL0ZpbmQgdGhlIGN1cnJlbnQgdGFiIGluZGV4LlxyXG5cdFx0XHRjb25zdCBjdXJyZW50SW5kZXggPSBBcnJheS5mcm9tKGFsbEVsZW1lbnRzKS5maW5kSW5kZXgoZWwgPT4gY3VycmVudE5vZGUuaXNFcXVhbE5vZGUoZWwpKVxyXG5cclxuXHRcdFx0Ly9mb2N1cyB0aGUgZm9sbG93aW5nIGVsZW1lbnRcclxuXHRcdFx0Y29uc3QgdGFyZ2V0SW5kZXggPSAoY3VycmVudEluZGV4ICsgMSkgJSBhbGxFbGVtZW50cy5sZW5ndGg7XHJcblx0XHRcdCg8SFRNTEVsZW1lbnQ+YWxsRWxlbWVudHNbdGFyZ2V0SW5kZXhdKS5mb2N1cygpO1xyXG5cclxuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChlLmtleSA9PT0gJ0VudGVyJykge1xyXG5cdFx0XHRpZiAodGhpcy5maWx0ZXJUZXh0ICYmIHRoaXMuc2VsZWN0ZWRJbmRleCAhPT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkSW5kZXggIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0SXRlbSh0aGlzLnZpc2libGVJdGVtc1t0aGlzLnNlbGVjdGVkSW5kZXhdLmlkKTtcclxuXHRcdFx0XHR0aGlzLmZpbHRlclRleHQgPSAnJztcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gJyc7XHJcblx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gRXNjXHJcblx0XHRpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyVGV4dCA9ICcnO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9ICcnO1xyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblxyXG5cdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJztcclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEJhY2tzcGFjZVxyXG5cdFx0aWYgKGUua2V5ID09PSAnQmFja3NwYWNlJyAmJiB0aGlzLmZpbHRlclRleHQpIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ID0gdGhpcy5maWx0ZXJUZXh0LnN1YnN0cmluZygwLCB0aGlzLmZpbHRlclRleHQubGVuZ3RoIC0gMSk7XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclRleHQubGVuZ3RoID09PSAwKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSAnJztcclxuXHRcdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJztcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cdFx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlXHJcblx0XHRcdFx0dGhpcy5maWx0ZXJTZWFyY2goKTtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEFycm93dXBcclxuXHRcdGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPT09IG51bGwgfHwgdGhpcy5zZWxlY3RlZEluZGV4ID09PSB1bmRlZmluZWQpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcclxuXHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPiAwKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleC0tO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEFycm93ZG93blxyXG5cdFx0aWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ID09PSBudWxsIHx8IHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG5cclxuXHRcdFx0aWYgKCF0aGlzLmV4cGFuZGVkIHx8ICF0aGlzLnZpc2libGVJdGVtcylcclxuXHRcdFx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA8IHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCAtIDEpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4Kys7XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gSWYgRjEgaXMgcHJlc3NlZCwga2V5IGxlbmd0aCB3aWxsIGJlIDJcclxuXHRcdGlmIChlLmtleS5sZW5ndGggPiAxIHx8IGUuY3RybEtleSB8fCBlLmFsdEtleSlcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdGlmIChlLmtleSA+PSAnICcgJiYgZS5rZXkgPD0gJ34nKSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyVGV4dCArPSBlLmtleTtcclxuXHJcblx0XHRcdHRoaXMuZmlsdGVyU2VhcmNoKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFzeW5jIGZpbHRlclNlYXJjaCgpIHtcclxuXHRcdGlmICghdGhpcy5leHBhbmRlZClcclxuXHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblxyXG5cdFx0aWYgKHRoaXMuc2VhcmNoVHlwZSA9PT0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzLnN0YXJ0c1dpdGgpIHtcclxuXHRcdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnZpc2libGVJdGVtcy5maWx0ZXIoeCA9PiAoeC50ZXh0ID8/IFwiXCIpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLmZpbHRlclRleHQudG9Mb3dlckNhc2UoKSkgPT09IDApO1xyXG5cdFx0XHRpZiAodGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSB0aGlzLnZpc2libGVJdGVtc1swXS50ZXh0O1xyXG5cdFx0XHRcdGlmICh0aGlzLmlzQW5kcm9pZCA9PT0gZmFsc2UpIHtcclxuXHRcdFx0XHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRcdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSB0aGlzLnNlbGVjdGVkVGV4dDtcclxuXHRcdFx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLmZpbHRlclRleHQubGVuZ3RoLCB0aGlzLnNlbGVjdGVkVGV4dC5sZW5ndGgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cdFx0XHRcdGlmICh0aGlzLmlzQW5kcm9pZCA9PT0gZmFsc2UpIHtcclxuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gdGhpcy5maWx0ZXJUZXh0O1xyXG5cdFx0XHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnZhbHVlID0gdGhpcy5zZWxlY3RlZFRleHQ7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0ZWxzZSBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBTbGlja011bHRpU2VsZWN0U2VhcmNoVHlwZXMuZWFjaFdvcmQpIHtcclxuXHJcblx0XHRcdC8vIEdldCB0aGUgd29yZHMgd2hlcmUgdGhlIGJlZ2lubmluZyBtYXRjaGVzIHRoZSBzZWFyY2ggZmlyc3RcclxuXHRcdFx0Y29uc3Qgc3RhcnRzV2l0aEl0ZW1zID0gdGhpcy52aXNpYmxlSXRlbXMuZmlsdGVyKHggPT4gKHgudGV4dCA/PyBcIlwiKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5maWx0ZXJUZXh0LnRvTG93ZXJDYXNlKCkpID09PSAwKTtcclxuXHRcdFx0Y29uc3QgZWFjaFdvcmRJdGVtcyA9IHRoaXMudmlzaWJsZUl0ZW1zLmZpbHRlcih4ID0+IChcIiBcIiArICh4LnRleHQgPz8gXCJcIikudG9Mb3dlckNhc2UoKSkuaW5kZXhPZihcIiBcIiArIHRoaXMuZmlsdGVyVGV4dC50b0xvd2VyQ2FzZSgpKSA+IDApO1xyXG5cclxuXHRcdFx0dGhpcy52aXNpYmxlSXRlbXMgPSBbLi4uc3RhcnRzV2l0aEl0ZW1zLCAuLi5lYWNoV29yZEl0ZW1zXTtcclxuXHJcblx0XHRcdGlmICh0aGlzLnZpc2libGVJdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IHRoaXMudmlzaWJsZUl0ZW1zWzBdLnRleHQ7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNBbmRyb2lkID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHRcdFx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9IHRoaXMuc2VsZWN0ZWRUZXh0O1xyXG5cdFx0XHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnNldFNlbGVjdGlvblJhbmdlKHRoaXMuZmlsdGVyVGV4dC5sZW5ndGgsIHRoaXMuc2VsZWN0ZWRUZXh0Lmxlbmd0aCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gdGhpcy5maWx0ZXJUZXh0O1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdH1cclxuXHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5yZXBvc2l0aW9uKCk7XHJcblx0fVxyXG5cclxuXHRvbk11bHRpU2VsZWN0Q2xpY2tlZCgpIHtcclxuXHRcdGlmICh0aGlzLmV4cGFuZGVkID09PSBmYWxzZSlcclxuXHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdGVsc2VcclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdH1cclxuXHJcblx0b25JdGVtQ2xpY2soaXRlbTogYW55KSB7XHJcblx0XHR0aGlzLnNlbGVjdEl0ZW0oaXRlbS5pZCk7XHJcblxyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XHJcblx0fVxyXG5cclxuXHRvblJlbW92ZUl0ZW0oaXRlbTogYW55KSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkSWRzID0gdGhpcy5zZWxlY3RlZElkcy5maWx0ZXIoaWQgPT4gaWQgIT09IGl0ZW0uaWQpO1xyXG5cdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblxyXG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZElkcyk7XHJcblx0fVxyXG59IiwiPGRpdiAjY29udGFpbmVyRGl2IGlkPVwic2xpY2stbXVsdGktc2VsZWN0X3t7dXVpZH19XCIgYXR0ci5kYXRhLXV1aWQ9XCJ7e3V1aWR9fVwiIGNsYXNzPVwic2xpY2stbXVsdGktc2VsZWN0IGZvcm0tY29udHJvbFwiIFtjbGFzcy5vcGVuXT1cImV4cGFuZGVkXCIgIFtjbGFzcy5leHBhbmRlZC1ib3JkZXJdPVwiZXhwYW5kZWRcIj5cclxuXHQ8ZGl2IGNsYXNzPVwic2xpY2stbXVsdGktc2VsZWN0X2lucHV0LWNvbnRhaW5lclwiID5cclxuXHRcdDxkaXYgKm5nSWY9XCJkaXNhYmxlZCA9PT0gZmFsc2VcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50OyBmbGV4LWdyb3c6IDE7XCIgKGNsaWNrKT1cIm9uTXVsdGlTZWxlY3RDbGlja2VkKClcIj5cclxuXHRcdFx0PGRpdiAqbmdGb3I9XCJsZXQgc2VsZWN0ZWRJdGVtIG9mIHNlbGVjdGVkSXRlbXNcIiBjbGFzcz1cInNsaWNrLW11bHRpLXNlbGVjdF9zZWxlY3RlZC1pdGVtIGJhZGdlIGJnLXByaW1hcnlcIj48ZGl2IGNsYXNzPVwic2xpY2stbXVsdGktc2VsZWN0X3JlbW92ZVwiIChjbGljayk9XCJvblJlbW92ZUl0ZW0oc2VsZWN0ZWRJdGVtKVwiPjxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzLWNpcmNsZSBiZy13aGl0ZSB0ZXh0LWRhbmdlclwiPjwvaT48L2Rpdj57e3NlbGVjdGVkSXRlbS50ZXh0fX08L2Rpdj5cclxuXHRcdFx0PGlucHV0ICNwbGFjZWhvbGRlcklucHV0UmVmIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCIgW3BsYWNlaG9sZGVyXT0ncGxhY2Vob2xkZXInIChrZXl1cCk9XCJleHBhbmRPbktleVVwKCRldmVudClcIiAvPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXYgKm5nSWY9XCJkaXNhYmxlZCA9PT0gdHJ1ZVwiIGNsYXNzPSdpbnB1dC1ncm91cCc+XHJcblx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBzZWxlY3RlZEl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiIGNsYXNzPVwic2xpY2stbXVsdGktc2VsZWN0X3NlbGVjdGVkLWl0ZW0gYmFkZ2UgYmctcHJpbWFyeVwiPnt7c2VsZWN0ZWRJdGVtLnRleHR9fTwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8dWwgI211bHRpU2VsZWN0TGlzdCBpZD1cInNsaWNrLW11bHRpLXNlbGVjdC1saXN0X3t7dXVpZH19XCIgY2xhc3M9J3NsaWNrLW11bHRpLXNlbGVjdC1saXN0LWdyb3VwIGRyb3Bkb3duLW1lbnUnIFtzdHlsZS53aWR0aF09XCJsaXN0R3JvdXBXaWR0aFwiIFtzdHlsZS52aXNpYmlsaXR5XT1cIihleHBhbmRlZCA9PT0gdHJ1ZSkgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiIFtzdHlsZS5vcGFjaXR5XT1cIihleHBhbmRlZCA9PT0gdHJ1ZSkgPyAnMScgOiAnMCdcIiBbc3R5bGUubWF4LWhlaWdodF09XCJoZWlnaHRcIiBbc3R5bGUud2lkdGgucHhdPVwibGlzdEdyb3VwV2lkdGhcIiBbc3R5bGUubGVmdC5weF09XCJsZWZ0XCIgW3N0eWxlLnRvcC5weF09XCJ0b3BcIj5cclxuXHRcdDxsaSBjbGFzcz1cInB4LTNcIj5cclxuXHRcdFx0PGlucHV0ICNmaWx0ZXJUZXh0SW5wdXRSZWYgdHlwZT1cInRleHRcIiB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJzbGljay1tdWx0aS1zZWxlY3RfbGlzdC1pdGVtIGZvcm0tY29udHJvbCBiZy10cmFuc3BhcmVudCB0ZXh0LWJvZHkgYm9yZGVyLWJvdHRvbVwiIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCIgLz5cclxuXHRcdDwvbGk+XHJcblx0XHQ8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmlzaWJsZUl0ZW1zOyBsZXQgaW5kZXggPSBpbmRleDtcIiAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gc2xpY2stbXVsdGktc2VsZWN0X2xpc3QtaXRlbSBweC0zXCI+e3tpdGVtPy50ZXh0fX08L2xpPlxyXG5cdDwvdWw+XHJcbjwvZGl2PiJdfQ==
422
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stbXVsdGktc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLW11bHRpLXNlbGVjdC9zbGljay1tdWx0aS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stbXVsdGktc2VsZWN0L3NsaWNrLW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFrRSxTQUFTLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3RLLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUUvRCxNQUFNLENBQU4sSUFBWSwyQkFBeUQ7QUFBckUsV0FBWSwyQkFBMkI7SUFBRyx5RkFBVSxDQUFBO0lBQUUscUZBQVEsQ0FBQTtJQUFFLDJFQUFHLENBQUE7QUFBQyxDQUFDLEVBQXpELDJCQUEyQixLQUEzQiwyQkFBMkIsUUFBOEI7QUFZckUsTUFBTSxPQUFPLHlCQUF5QjtJQTJDckMsWUFBb0IsdUJBQWdEO1FBQWhELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUExQzNELGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRXpCLGdCQUFXLEdBQVcsSUFBSSxDQUFDO1FBQzNCLGtCQUFhLEdBQVcsTUFBTSxDQUFDO1FB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ZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ00sbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFDQyxrQkFBa0I7c0JBQWxELFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIGZvcndhcmRSZWYsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlIH0gZnJvbSBcIi4vc2xpY2stbXVsdGktc2VsZWN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFNsaWNrU2xlZXBTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLXNsZWVwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tVdGlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2stdXRpbHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTbGlja0luaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLWluaXQuc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IGVudW0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzIHsgc3RhcnRzV2l0aCwgZWFjaFdvcmQsIGFueSB9XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3NsaWNrLW11bHRpLXNlbGVjdCcsXHJcblx0dGVtcGxhdGVVcmw6ICdzbGljay1tdWx0aS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHByb3ZpZGVyczogW1NsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLFxyXG5cdFx0e1xyXG5cdFx0XHRwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuXHRcdFx0dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2xpY2tNdWx0aVNlbGVjdENvbXBvbmVudCksXHJcblx0XHRcdG11bHRpOiB0cnVlLFxyXG5cdFx0fV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNsaWNrTXVsdGlTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblx0QElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG5cdEBJbnB1dCgpIGl0ZW1zOiBhbnlbXTtcclxuXHRASW5wdXQoKSBpZEZpZWxkTmFtZTogc3RyaW5nID0gXCJpZFwiO1xyXG5cdEBJbnB1dCgpIHRleHRGaWVsZE5hbWU6IHN0cmluZyA9IFwidGV4dFwiO1xyXG5cdEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgYWxsb3dFbXB0eTogc3RyaW5nID0gJ3RydWUnO1xyXG5cdEBJbnB1dCgpIHNpbmdsZVNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XHJcblx0QElucHV0KCkgbGlzdFdpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XHJcblx0QElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnMzAwcHgnO1xyXG5cdEBJbnB1dCgpIHNob3dMb2FkaW5nTWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHNob3dEZWJ1ZzogYm9vbGVhbjtcclxuXHRASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyO1xyXG5cdEBJbnB1dCgpIGF0dGFjaFRvOiBzdHJpbmc7XHJcblx0QElucHV0KCkgc2VhcmNoVHlwZTogU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzID0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzLmVhY2hXb3JkO1xyXG5cclxuXHRAT3V0cHV0KCkgb25FeHBhbmQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHRAT3V0cHV0KCkgb25Db2xsYXBzZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cdEBPdXRwdXQoKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcblx0QFZpZXdDaGlsZChcImNvbnRhaW5lckRpdlwiKSBjb250YWluZXJEaXY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcIm11bHRpU2VsZWN0TGlzdFwiKSBtdWx0aVNlbGVjdExpc3Q6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcInBsYWNlaG9sZGVySW5wdXRSZWZcIikgcGxhY2Vob2xkZXJJbnB1dFJlZjogRWxlbWVudFJlZjtcclxuXHRAVmlld0NoaWxkKFwiZmlsdGVyVGV4dElucHV0UmVmXCIpIGZpbHRlclRleHRJbnB1dFJlZjogRWxlbWVudFJlZjtcclxuXHJcblx0Ly8gVGhpcyBpcyBuZWNlc3Nhcnkgc28gdGhhdCB0aGUgc2Nyb2xsIGFuZCByZXNpemUgZXZlbnRzIGNhbiBhZGQgYW5kIHJlbW92ZSB0aGUgZXZlbnQgcHJvcGVybHksXHJcblx0Ly8gYXMgd2VsbCBhcyBnZXR0aW5nIHRoZSBjb3JyZWN0IEVTNiBmdW5jdGlvblxyXG5cdHByaXZhdGUgZm5Eb2N1bWVudENsaWNrID0gKGUpID0+IHRoaXMuZG9jdW1lbnRDbGljayhlKTtcclxuXHJcblx0dXVpZDogc3RyaW5nO1xyXG5cdHNlbGVjdGVkSWRzOiBzdHJpbmdbXTtcclxuXHRzZWxlY3RlZFRleHQ6IHN0cmluZztcclxuXHRleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGZpbHRlclRleHQ6IHN0cmluZyA9ICcnO1xyXG5cdHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcclxuXHRzZWxlY3RlZEl0ZW1zOiBhbnlbXTtcclxuXHR2aXNpYmxlSXRlbXM6IGFueVtdO1xyXG5cdGxlZnQ6IHN0cmluZztcclxuXHR0b3A6IHN0cmluZztcclxuXHRsaXN0R3JvdXBXaWR0aDogc3RyaW5nO1xyXG5cdGlzQW5kcm9pZDogYm9vbGVhbiA9ICgoU2xpY2tJbml0U2VydmljZS5nZXRQbGF0Zm9ybSgpIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnYW5kcm9pZCcpO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlOiBTbGlja011bHRpU2VsZWN0U2VydmljZSkge1xyXG5cdFx0dGhpcy51dWlkID0gU2xpY2tVdGlsc1NlcnZpY2UubmV3R3VpZCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgbmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmF0dGFjaFRvID0gdGhpcy5hdHRhY2hUbyB8fCBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmF0dGFjaFRvIHx8ICdib2R5JztcclxuXHR9XHJcblxyXG5cdGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHRcdC8vIFJlbW92ZSB0aGlzIGZyb20gdGhlIGlubGluZSB2ZXJzaW9uIGFuZCBwdXQgaXQgb24gdGhlIGJvZHkgc28gdGhhdCBpdCBkb2Vzbid0IGhpZGUgYmVoaW5kIHRoZSBib3R0b21cclxuXHRcdC8vIG9mIGEgZGl2IHdoZW4gaXQgZXhwYW5kcyBiZXlvbmQgdGhlIGJvdHRvbS5cclxuXHRcdHRoaXMubXVsdGlTZWxlY3RMaXN0Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlKHRoaXMubXVsdGlTZWxlY3RMaXN0KTtcclxuXHRcdGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudCk7XHJcblx0fVxyXG5cclxuXHRwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcblxyXG5cdC8vIHRoaXMgaXMgdGhlIGluaXRpYWwgdmFsdWUgc2V0IHRvIHRoZSBjb21wb25lbnRcclxuXHRwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IGFueSkge1xyXG5cdFx0aWYgKG9iailcclxuXHRcdFx0dGhpcy5zZWxlY3RlZElkcyA9IG9iajtcclxuXHRcdGVsc2VcclxuXHRcdFx0dGhpcy5zZWxlY3RlZElkcyA9IG51bGw7XHJcblxyXG5cdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0fVxyXG5cclxuXHQvLyByZWdpc3RlcnMgJ2ZuJyB0aGF0IHdpbGwgYmUgZmlyZWQgd2hlbiBjaGFuZ2VzIGFyZSBtYWRlXHJcblx0Ly8gdGhpcyBpcyBob3cgd2UgZW1pdCB0aGUgY2hhbmdlcyBiYWNrIHRvIHRoZSBmb3JtXHJcblx0cHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuXHR9XHJcblxyXG5cdC8vIG5vdCB1c2VkLCB1c2VkIGZvciB0b3VjaCBpbnB1dFxyXG5cdHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCgpIHsgfVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRpZiAoY2hhbmdlcy5zaW5nbGVTZWxlY3QpIHtcclxuXHRcdFx0dGhpcy5zaW5nbGVTZWxlY3QgPSAodGhpcy5zaW5nbGVTZWxlY3QudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLnNlYXJjaFR5cGUpIHtcclxuXHRcdFx0aWYgKGNoYW5nZXMuc2VhcmNoVHlwZS5jdXJyZW50VmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnc3RhcnRzd2l0aCcpXHJcblx0XHRcdFx0dGhpcy5zZWFyY2hUeXBlID0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzLnN0YXJ0c1dpdGg7XHJcblx0XHRcdGVsc2UgaWYgKGNoYW5nZXMuc2VhcmNoVHlwZS5jdXJyZW50VmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnYW55JylcclxuXHRcdFx0XHR0aGlzLnNlYXJjaFR5cGUgPSBTbGlja011bHRpU2VsZWN0U2VhcmNoVHlwZXMuYW55O1xyXG5cdFx0XHRlbHNlXHJcblx0XHRcdFx0dGhpcy5zZWFyY2hUeXBlID0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzLmVhY2hXb3JkO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLml0ZW1zKSB7XHJcblx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclRleHRJbnB1dFJlZiAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IHRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpXHJcblx0XHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHJcblx0XHQvLyBpdCdzIG9rYXkgaWYgdGhpcyBmYWlscy4gIEl0IHdhcyBhbHJlYWR5IHJlbW92ZWRcclxuXHRcdHRyeSB7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudCk7XHJcblx0XHR9XHJcblx0XHRjYXRjaCB7IH1cclxuXHJcblx0fVxyXG5cclxuXHRhc3luYyBleHBhbmQoKSB7XHJcblx0XHRpZiAodGhpcy5kaXNhYmxlZClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdHRoaXMucmVwb3NpdGlvbigpO1xyXG5cclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRTbGlja1V0aWxzU2VydmljZS5hdHRhY2hFbGVtZW50KHRoaXMubXVsdGlTZWxlY3RMaXN0Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuYXR0YWNoVG8pXHJcblx0XHR0aGlzLm11bHRpU2VsZWN0TGlzdC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xyXG5cclxuXHRcdGxldCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwic2VsZWN0ZWRcIik7XHJcblx0XHRpZiAoc2VsZWN0ZWRJdGVtcyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApXHJcblx0XHRcdCg8SFRNTEVsZW1lbnQ+c2VsZWN0ZWRJdGVtc1swXSkuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pO1xyXG5cclxuXHRcdHRoaXMuZXhwYW5kZWQgPSB0cnVlO1xyXG5cclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblxyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XHJcblxyXG5cdFx0Ly8gVGhpcyBpcyBuZWNlc3NhcnksIG90aGVyd2lzZSBgdGhpc2AgaW4gdGhlIHJlcG9zaXRpb24gZnVuY3Rpb24gd2lsbCBiZSB3aW5kb3dcclxuXHRcdC8vIGFuZCBub3QgdGhlIGNvbXBvbmVudC5cclxuXHRcdC8vIFNpbmNlIGFuZ3VsYXIgaGFzIG5vIHdheSB0byB1c2UgdGhlIHRoaXJkIHBhcmFtZXRlciwgSSdtIGRvaW5nIHRoaXMgaW4gcmF3IGpzXHJcblx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5mbkRvY3VtZW50Q2xpY2ssIHRydWUpO1xyXG5cclxuXHRcdGlmICh0aGlzLm9uRXhwYW5kKVxyXG5cdFx0XHR0aGlzLm9uRXhwYW5kLmVtaXQoKTtcclxuXHR9XHJcblxyXG5cdGNvbGxhcHNlKCkge1xyXG5cdFx0dGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcblx0XHQvLyBTaW5jZSBhbmd1bGFyIGhhcyBubyB3YXkgdG8gdXNlIHRoZSB0aGlyZCBwYXJhbWV0ZXIsIEknbSBkb2luZyB0aGlzIGluIHJhdyBqc1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHJcblx0XHRpZiAodGhpcy5vbkNvbGxhcHNlKVxyXG5cdFx0XHR0aGlzLm9uQ29sbGFwc2UuZW1pdCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgcmVwb3NpdGlvbigpIHtcclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRjb25zdCBtdWx0aVNlbGVjdFJlY3QgPSB0aGlzLmNvbnRhaW5lckRpdi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cdFx0Y29uc3QgcGFyZW50UmVjdCA9ICh0aGlzLmF0dGFjaFRvID09PSAnYm9keScpID8gbnVsbCA6IGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3Rvcih0aGlzLmF0dGFjaFRvKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcblx0XHRjb25zdCBjb250YWluZXJMZWZ0ID0gKHRoaXMuYXR0YWNoVG8gPT09ICdib2R5JykgPyBtdWx0aVNlbGVjdFJlY3QubGVmdCA6IChtdWx0aVNlbGVjdFJlY3QubGVmdCAtIHBhcmVudFJlY3QubGVmdCk7XHJcblx0XHRjb25zdCBjb250YWluZXJUb3AgPSAodGhpcy5hdHRhY2hUbyA9PT0gJ2JvZHknKSA/IG11bHRpU2VsZWN0UmVjdC50b3AgOiAobXVsdGlTZWxlY3RSZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wKTtcclxuXHRcdGxldCBjb250YWluZXJIZWlnaHQgPSB0aGlzLmNvbnRhaW5lckRpdi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuXHRcdGxldCBjb250YWluZXJXaWR0aCA9IG11bHRpU2VsZWN0UmVjdC53aWR0aDtcclxuXHJcblx0XHR0aGlzLndpZHRoID0gY29udGFpbmVyV2lkdGg7XHJcblx0XHRpZiAodGhpcy5saXN0V2lkdGggPT09ICcxMDAlJylcclxuXHRcdFx0dGhpcy5saXN0R3JvdXBXaWR0aCA9IHRoaXMud2lkdGg7XHJcblx0XHRlbHNlIGlmICh0aGlzLmxpc3RXaWR0aCA9PT0gJ2F1dG8nKVxyXG5cdFx0XHR0aGlzLmxpc3RHcm91cFdpZHRoID0gXCJhdXRvXCI7XHJcblx0XHRlbHNlXHJcblx0XHRcdHRoaXMubGlzdEdyb3VwV2lkdGggPSB0aGlzLmxpc3RXaWR0aDtcclxuXHRcdHRoaXMudG9wID0gKGNvbnRhaW5lclRvcCArIGNvbnRhaW5lckhlaWdodCk7XHJcblx0XHR0aGlzLmxlZnQgPSBjb250YWluZXJMZWZ0O1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBkb2N1bWVudENsaWNrKGU6IE1vdXNlRXZlbnQpIHtcclxuXHRcdGlmICghdGhpcy5leHBhbmRlZCB8fCAhZS50YXJnZXQpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHQvLyBJZiB0aGV5IGNsaWNrZWQgb24gdGhlIGtleWJvYXJkIGljb24sIGRvbid0IGRvIGFueXRoaW5nXHJcblx0XHRpZiAoU2xpY2tVdGlsc1NlcnZpY2UuY2hlY2tQYXJlbnRDbGFzc0V4aXN0cyg8SFRNTEVsZW1lbnQ+ZS50YXJnZXQsIFwic2xpY2stbXVsdGktc2VsZWN0X21vYmlsZS1jb250YWluZXJcIikgJiZcclxuXHRcdFx0U2xpY2tVdGlsc1NlcnZpY2UuY2hlY2tQYXJlbnRJZEV4aXN0cyg8SFRNTEVsZW1lbnQ+ZS50YXJnZXQsIFwic2xpY2stbXVsdGktc2VsZWN0X1wiICsgdGhpcy51dWlkKSlcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IGNsaWNrZWRJbnNpZGUgPSBTbGlja1V0aWxzU2VydmljZS5jaGVja1BhcmVudENsYXNzRXhpc3RzKDxIVE1MRWxlbWVudD5lLnRhcmdldCwgXCJzbGljay1tdWx0aS1zZWxlY3RfbGlzdC1pdGVtXCIpO1xyXG5cdFx0aWYgKCFjbGlja2VkSW5zaWRlKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gJyc7XHJcblx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnO1xyXG5cdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNlbGVjdEl0ZW0oaWQ6IHN0cmluZykge1xyXG5cdFx0bGV0IGl0ZW0gPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbSh0aGlzLnZpc2libGVJdGVtcywgaWQpO1xyXG5cclxuXHRcdGlmIChpdGVtKSB7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5vblNlbGVjdClcclxuXHRcdFx0XHR0aGlzLm9uU2VsZWN0LmVtaXQoaXRlbSk7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMuc2VsZWN0ZWRJZHMpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZElkcyA9IFtdO1xyXG5cclxuXHRcdFx0dGhpcy5zZWxlY3RlZElkcy5wdXNoKGlkKTtcclxuXHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZElkcyk7XHJcblxyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0U2VsZWN0ZWRJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cclxuXHRcdFx0dGhpcy5yZXBvc2l0aW9uKCk7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5zaW5nbGVTZWxlY3QgPT09IHRydWUpXHJcblx0XHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gJyc7XHJcblx0XHR0aGlzLmZpbHRlclRleHQgPSAnJztcclxuXHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHJcblx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJztcclxuXHR9XHJcblxyXG5cdHNldEZvY3VzKCkge1xyXG5cdFx0dGhpcy5leHBhbmQoKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uRm9jdXMoKSB7XHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHR0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHJcblx0XHR0aGlzLmZpbHRlclRleHQgPSAnJztcclxuXHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBleHBhbmRPbktleVVwKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuXHJcblx0XHRpZiAoZS5rZXkubGVuZ3RoID09IDEgfHwgKGUua2V5Lmxlbmd0aCA+IDEgJiYgL1teYS16QS1aMC05XS8udGVzdChlLmtleSkpKSB7XHJcblx0XHRcdHRoaXMuZXhwYW5kKCk7XHRcdFx0XHJcblx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLnBsYWNlaG9sZGVySW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJztcclxuXHJcblx0XHRcdHRoaXMub25LZXlEb3duKGUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YXN5bmMgb25LZXlEb3duKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuXHRcdGlmIChlLmtleSAhPT0gJ1RhYicgJiZcclxuXHRcdFx0ZS5rZXkgIT09ICdFbnRlcicgJiZcclxuXHRcdFx0ZS5rZXkgIT09ICdFc2NhcGUnICYmXHJcblx0XHRcdGUua2V5ICE9PSAnQmFja3NwYWNlJyAmJlxyXG5cdFx0XHRlLmtleSAhPT0gJ0Fycm93VXAnICYmXHJcblx0XHRcdGUua2V5ICE9PSAnQXJyb3dEb3duJ1xyXG5cdFx0KSB7XHJcblx0XHRcdC8vIElmIEYxIGlzIHByZXNzZWQsIGtleSBsZW5ndGggd2lsbCBiZSAyXHJcblx0XHRcdGlmIChlLmtleS5sZW5ndGggPiAxIHx8IGUuY3RybEtleSB8fCBlLmFsdEtleSkge1xyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdC8vZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuXHRcdC8vIElmIHRoaXMgaXMgYW5kcm9pZCwgaXQgd29uJ3QgcGFzcyB1cyBhbnkga2V5IGRhdGEgc28ganVzdCByZWFkIHRoZSBlbnRpcmUgaW5wdXQgZWxlbWVudFxyXG5cdFx0aWYgKHRoaXMuaXNBbmRyb2lkID09PSB0cnVlKSB7XHJcblx0XHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblxyXG5cdFx0XHR0aGlzLmZpbHRlclRleHQgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWU7XHJcblx0XHRcdHRoaXMuZmlsdGVyU2VhcmNoKCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBUYWIvZW50ZXJcclxuXHRcdGlmIChlLmtleSA9PT0gJ1RhYicpIHtcclxuXHRcdFx0aWYgKHRoaXMuZmlsdGVyVGV4dCAmJiB0aGlzLnZpc2libGVJdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMudmlzaWJsZUl0ZW1zWzBdLmlkKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gJyc7XHJcblx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cclxuXHRcdFx0Y29uc3QgY3VycmVudE5vZGUgPSA8SFRNTEVsZW1lbnQ+KHRoaXMucGxhY2Vob2xkZXJJbnB1dFJlZi5uYXRpdmVFbGVtZW50KTtcclxuXHRcdFx0Ly9maW5kIGFsbCB0YWItYWJsZSBlbGVtZW50c1xyXG5cdFx0XHRjb25zdCBhbGxFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LCBidXR0b24sIGEsIGFyZWEsIG9iamVjdCwgc2VsZWN0LCB0ZXh0YXJlYSwgW2NvbnRlbnRlZGl0YWJsZV0nKTtcclxuXHJcblx0XHRcdC8vRmluZCB0aGUgY3VycmVudCB0YWIgaW5kZXguXHJcblx0XHRcdGNvbnN0IGN1cnJlbnRJbmRleCA9IEFycmF5LmZyb20oYWxsRWxlbWVudHMpLmZpbmRJbmRleChlbCA9PiBjdXJyZW50Tm9kZS5pc0VxdWFsTm9kZShlbCkpXHJcblxyXG5cdFx0XHQvL2ZvY3VzIHRoZSBmb2xsb3dpbmcgZWxlbWVudFxyXG5cdFx0XHRjb25zdCB0YXJnZXRJbmRleCA9IChjdXJyZW50SW5kZXggKyAxKSAlIGFsbEVsZW1lbnRzLmxlbmd0aDtcclxuXHRcdFx0KDxIVE1MRWxlbWVudD5hbGxFbGVtZW50c1t0YXJnZXRJbmRleF0pLmZvY3VzKCk7XHJcblxyXG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGUua2V5ID09PSAnRW50ZXInKSB7XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclRleHQgJiYgdGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsICYmIHRoaXMuc2VsZWN0ZWRJbmRleCAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuc2VsZWN0ZWRJbmRleF0uaWQpO1xyXG5cdFx0XHRcdHRoaXMuZmlsdGVyVGV4dCA9ICcnO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblxyXG5cdFx0XHR0aGlzLmZpbHRlclRleHQgPSAnJztcclxuXHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSAnJztcclxuXHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnZhbHVlID0gJyc7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblxyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBFc2NcclxuXHRcdGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gJyc7XHJcblx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHJcblx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnO1xyXG5cdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQmFja3NwYWNlXHJcblx0XHRpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnICYmIHRoaXMuZmlsdGVyVGV4dCkge1xyXG5cdFx0XHR0aGlzLmZpbHRlclRleHQgPSB0aGlzLmZpbHRlclRleHQuc3Vic3RyaW5nKDAsIHRoaXMuZmlsdGVyVGV4dC5sZW5ndGggLSAxKTtcclxuXHRcdFx0aWYgKHRoaXMuZmlsdGVyVGV4dC5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9ICcnO1xyXG5cdFx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0U2VsZWN0ZWRJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2VcclxuXHRcdFx0XHR0aGlzLmZpbHRlclNlYXJjaCgpO1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQXJyb3d1cFxyXG5cdFx0aWYgKGUua2V5ID09PSAnQXJyb3dVcCcpIHtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gbnVsbCB8fCB0aGlzLnNlbGVjdGVkSW5kZXggPT09IHVuZGVmaW5lZClcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA+IDApXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4LS07XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQXJyb3dkb3duXHJcblx0XHRpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPT09IG51bGwgfHwgdGhpcy5zZWxlY3RlZEluZGV4ID09PSB1bmRlZmluZWQpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gLTE7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMuZXhwYW5kZWQgfHwgIXRoaXMudmlzaWJsZUl0ZW1zKVxyXG5cdFx0XHRcdHRoaXMuZXhwYW5kKCk7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4IDwgdGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoIC0gMSlcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXgrKztcclxuXHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBJZiBGMSBpcyBwcmVzc2VkLCBrZXkgbGVuZ3RoIHdpbGwgYmUgMlxyXG5cdFx0aWYgKGUua2V5Lmxlbmd0aCA+IDEgfHwgZS5jdHJsS2V5IHx8IGUuYWx0S2V5KVxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0aWYgKGUua2V5ID49ICcgJyAmJiBlLmtleSA8PSAnficpIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ICs9IGUua2V5O1xyXG5cclxuXHRcdFx0dGhpcy5maWx0ZXJTZWFyY2goKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYXN5bmMgZmlsdGVyU2VhcmNoKCkge1xyXG5cdFx0aWYgKCF0aGlzLmV4cGFuZGVkKVxyXG5cdFx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cclxuXHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHJcblx0XHRpZiAodGhpcy5zZWFyY2hUeXBlID09PSBTbGlja011bHRpU2VsZWN0U2VhcmNoVHlwZXMuc3RhcnRzV2l0aCkge1xyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMudmlzaWJsZUl0ZW1zLmZpbHRlcih4ID0+ICh4LnRleHQgPz8gXCJcIikudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuZmlsdGVyVGV4dC50b0xvd2VyQ2FzZSgpKSA9PT0gMCk7XHJcblx0XHRcdGlmICh0aGlzLnZpc2libGVJdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IHRoaXMudmlzaWJsZUl0ZW1zWzBdLnRleHQ7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNBbmRyb2lkID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHRcdFx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9IHRoaXMuc2VsZWN0ZWRUZXh0O1xyXG5cdFx0XHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnNldFNlbGVjdGlvblJhbmdlKHRoaXMuZmlsdGVyVGV4dC5sZW5ndGgsIHRoaXMuc2VsZWN0ZWRUZXh0Lmxlbmd0aCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNBbmRyb2lkID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSB0aGlzLmZpbHRlclRleHQ7XHJcblx0XHRcdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSB0aGlzLnNlbGVjdGVkVGV4dDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IFNsaWNrTXVsdGlTZWxlY3RTZWFyY2hUeXBlcy5lYWNoV29yZCkge1xyXG5cclxuXHRcdFx0Ly8gR2V0IHRoZSB3b3JkcyB3aGVyZSB0aGUgYmVnaW5uaW5nIG1hdGNoZXMgdGhlIHNlYXJjaCBmaXJzdFxyXG5cdFx0XHRjb25zdCBzdGFydHNXaXRoSXRlbXMgPSB0aGlzLnZpc2libGVJdGVtcy5maWx0ZXIoeCA9PiAoeC50ZXh0ID8/IFwiXCIpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLmZpbHRlclRleHQudG9Mb3dlckNhc2UoKSkgPT09IDApO1xyXG5cdFx0XHRjb25zdCBlYWNoV29yZEl0ZW1zID0gdGhpcy52aXNpYmxlSXRlbXMuZmlsdGVyKHggPT4gKFwiIFwiICsgKHgudGV4dCA/PyBcIlwiKS50b0xvd2VyQ2FzZSgpKS5pbmRleE9mKFwiIFwiICsgdGhpcy5maWx0ZXJUZXh0LnRvTG93ZXJDYXNlKCkpID4gMCk7XHJcblxyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IFsuLi5zdGFydHNXaXRoSXRlbXMsIC4uLmVhY2hXb3JkSXRlbXNdO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gdGhpcy52aXNpYmxlSXRlbXNbMF0udGV4dDtcclxuXHRcdFx0XHRpZiAodGhpcy5pc0FuZHJvaWQgPT09IGZhbHNlKSB7XHJcblx0XHRcdFx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cdFx0XHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnZhbHVlID0gdGhpcy5zZWxlY3RlZFRleHQ7XHJcblx0XHRcdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5maWx0ZXJUZXh0Lmxlbmd0aCwgdGhpcy5zZWxlY3RlZFRleHQubGVuZ3RoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSB0aGlzLmZpbHRlclRleHQ7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gbnVsbDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnJlcG9zaXRpb24oKTtcclxuXHR9XHJcblxyXG5cdG9uTXVsdGlTZWxlY3RDbGlja2VkKCkge1xyXG5cdFx0aWYgKHRoaXMuZXhwYW5kZWQgPT09IGZhbHNlKVxyXG5cdFx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cdFx0ZWxzZVxyXG5cdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0fVxyXG5cclxuXHRvbkl0ZW1DbGljayhpdGVtOiBhbnkpIHtcclxuXHRcdHRoaXMuc2VsZWN0SXRlbShpdGVtLmlkKTtcclxuXHJcblx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuZm9jdXMoKTtcclxuXHR9XHJcblxyXG5cdG9uUmVtb3ZlSXRlbShpdGVtOiBhbnkpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRJZHMgPSB0aGlzLnNlbGVjdGVkSWRzLmZpbHRlcihpZCA9PiBpZCAhPT0gaXRlbS5pZCk7XHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHR0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHJcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkSWRzKTtcclxuXHR9XHJcbn0iLCI8ZGl2ICNjb250YWluZXJEaXYgaWQ9XCJzbGljay1tdWx0aS1zZWxlY3Rfe3t1dWlkfX1cIiBhdHRyLmRhdGEtdXVpZD1cInt7dXVpZH19XCIgY2xhc3M9XCJzbGljay1tdWx0aS1zZWxlY3QgZm9ybS1jb250cm9sXCIgW2NsYXNzLm9wZW5dPVwiZXhwYW5kZWRcIiAgW2NsYXNzLmV4cGFuZGVkLWJvcmRlcl09XCJleHBhbmRlZFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJzbGljay1tdWx0aS1zZWxlY3RfaW5wdXQtY29udGFpbmVyXCIgPlxyXG5cdFx0PGRpdiAqbmdJZj1cImRpc2FibGVkID09PSBmYWxzZVwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7IGZsZXgtZ3JvdzogMTtcIiAoY2xpY2spPVwib25NdWx0aVNlbGVjdENsaWNrZWQoKVwiPlxyXG5cdFx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBzZWxlY3RlZEl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiIGNsYXNzPVwic2xpY2stbXVsdGktc2VsZWN0X3NlbGVjdGVkLWl0ZW0gYmFkZ2UgYmctcHJpbWFyeVwiPjxkaXYgY2xhc3M9XCJzbGljay1tdWx0aS1zZWxlY3RfcmVtb3ZlXCIgKGNsaWNrKT1cIm9uUmVtb3ZlSXRlbShzZWxlY3RlZEl0ZW0pXCI+PGkgY2xhc3M9XCJmYXMgZmEtdGltZXMtY2lyY2xlIGJnLXdoaXRlIHRleHQtZGFuZ2VyXCI+PC9pPjwvZGl2Pnt7c2VsZWN0ZWRJdGVtLnRleHR9fTwvZGl2PlxyXG5cdFx0XHQ8aW5wdXQgI3BsYWNlaG9sZGVySW5wdXRSZWYgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbcGxhY2Vob2xkZXJdPSdwbGFjZWhvbGRlcicgKGtleXVwKT1cImV4cGFuZE9uS2V5VXAoJGV2ZW50KVwiIC8+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHJcblx0PGRpdiAqbmdJZj1cImRpc2FibGVkID09PSB0cnVlXCIgY2xhc3M9J2lucHV0LWdyb3VwJz5cclxuXHRcdDxkaXYgKm5nRm9yPVwibGV0IHNlbGVjdGVkSXRlbSBvZiBzZWxlY3RlZEl0ZW1zXCIgY2xhc3M9XCJzbGljay1tdWx0aS1zZWxlY3Rfc2VsZWN0ZWQtaXRlbSBiYWRnZSBiZy1wcmltYXJ5XCI+e3tzZWxlY3RlZEl0ZW0udGV4dH19PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDx1bCAjbXVsdGlTZWxlY3RMaXN0IGlkPVwic2xpY2stbXVsdGktc2VsZWN0LWxpc3Rfe3t1dWlkfX1cIiBjbGFzcz0nc2xpY2stbXVsdGktc2VsZWN0LWxpc3QtZ3JvdXAgZHJvcGRvd24tbWVudScgW3N0eWxlLndpZHRoXT1cImxpc3RHcm91cFdpZHRoXCIgW3N0eWxlLnZpc2liaWxpdHldPVwiKGV4cGFuZGVkID09PSB0cnVlKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCIgW3N0eWxlLm9wYWNpdHldPVwiKGV4cGFuZGVkID09PSB0cnVlKSA/ICcxJyA6ICcwJ1wiIFtzdHlsZS5tYXgtaGVpZ2h0XT1cImhlaWdodFwiIFtzdHlsZS53aWR0aC5weF09XCJsaXN0R3JvdXBXaWR0aFwiIFtzdHlsZS5sZWZ0LnB4XT1cImxlZnRcIiBbc3R5bGUudG9wLnB4XT1cInRvcFwiPlxyXG5cdFx0PGxpIGNsYXNzPVwicHgtM1wiPlxyXG5cdFx0XHQ8aW5wdXQgI2ZpbHRlclRleHRJbnB1dFJlZiB0eXBlPVwidGV4dFwiIHRhYmluZGV4PVwiLTFcIiBjbGFzcz1cInNsaWNrLW11bHRpLXNlbGVjdF9saXN0LWl0ZW0gZm9ybS1jb250cm9sIGJnLXRyYW5zcGFyZW50IHRleHQtYm9keSBib3JkZXItYm90dG9tXCIgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIiAvPlxyXG5cdFx0PC9saT5cclxuXHRcdDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aXNpYmxlSXRlbXM7IGxldCBpbmRleCA9IGluZGV4O1wiIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtKVwiIGNsYXNzPVwiZHJvcGRvd24taXRlbSBzbGljay1tdWx0aS1zZWxlY3RfbGlzdC1pdGVtIHB4LTNcIj57e2l0ZW0/LnRleHR9fTwvbGk+XHJcblx0PC91bD5cclxuPC9kaXY+Il19
@@ -6,7 +6,7 @@ export class SlickInitParams {
6
6
  }
7
7
  }
8
8
  export class SlickInitService {
9
- static { this.version = "17.0.12"; }
9
+ static { this.version = "17.0.14"; }
10
10
  constructor() { }
11
11
  static init(initParams) {
12
12
  console.info(`Slick Components Version ${SlickInitService.version}`);
@@ -46,4 +46,4 @@ export class SlickInitService {
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickInitService, decorators: [{
47
47
  type: Injectable
48
48
  }], ctorParameters: () => [] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2staW5pdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvdXRpbHMvc2xpY2staW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBR0MsYUFBUSxHQUFXLFNBQVMsQ0FBQztJQUc5QixDQUFDO0NBQUE7QUFHRCxNQUFNLE9BQU8sZ0JBQWdCO2FBQ3JCLFlBQU8sR0FBRyxTQUFTLEFBQVosQ0FBYTtJQUUzQixnQkFBZ0IsQ0FBQztJQUdqQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQTJCO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDckUsVUFBVSxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDeEMsTUFBTyxDQUFDLHFCQUFxQixHQUFHLFVBQVUsQ0FBQztRQUVqRCxPQUFhLE1BQU8sQ0FBQyxxQkFBcUIsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVM7UUFDZixJQUFJLENBQU8sTUFBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDMUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUM1QyxhQUFhLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUMxQixNQUFPLENBQUMscUJBQXFCLEdBQUcsYUFBYSxDQUFDO1FBQ3JELENBQUM7UUFFRCxPQUE4QixNQUFPLENBQUMscUJBQXFCLENBQUM7SUFDN0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXO1FBQ2pCLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLGVBQXVCO1FBQ3pDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXO1FBQ2pCLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2xDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDbEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXO1FBQ2pCLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2xDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDbEQsQ0FBQztpSUE5Q1csZ0JBQWdCO3FJQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTbGlja0luaXRQYXJhbXMge1xyXG5cdGF0dGFjaFRvOiBzdHJpbmc7XHJcblx0cGxhdGZvcm06IHN0cmluZztcclxuXHRlcnJvckxvZzogc3RyaW5nID0gXCJtaW5pbWFsXCI7XHJcblx0dmVyc2lvbjogc3RyaW5nO1xyXG5cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2xpY2tJbml0U2VydmljZSB7XHRcclxuXHRzdGF0aWMgdmVyc2lvbiA9IFwiMTcuMC4xMlwiO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuXHJcblx0c3RhdGljIGluaXQoaW5pdFBhcmFtczogU2xpY2tJbml0UGFyYW1zKTogU2xpY2tJbml0UGFyYW1zIHtcclxuXHRcdGNvbnNvbGUuaW5mbyhgU2xpY2sgQ29tcG9uZW50cyBWZXJzaW9uICR7U2xpY2tJbml0U2VydmljZS52ZXJzaW9ufWApO1xyXG5cdFx0aW5pdFBhcmFtcy52ZXJzaW9uID0gU2xpY2tJbml0U2VydmljZS52ZXJzaW9uO1xyXG5cdFx0KDxhbnk+d2luZG93KS5zbGlja0NvbXBvbmVudHNQYXJhbXMgPSBpbml0UGFyYW1zO1xyXG5cclxuXHRcdHJldHVybiAoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcztcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRQYXJhbXMoKTogU2xpY2tJbml0UGFyYW1zIHtcclxuXHRcdGlmICghKDxhbnk+d2luZG93KS5zbGlja0NvbXBvbmVudHNQYXJhbXMpIHtcclxuXHRcdFx0Y29uc3QgZGVmYXVsdFBhcmFtcyA9IG5ldyBTbGlja0luaXRQYXJhbXMoKTtcclxuXHRcdFx0ZGVmYXVsdFBhcmFtcy5hdHRhY2hUbyA9IFwiYm9keVwiO1xyXG5cdFx0XHQoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcyA9IGRlZmF1bHRQYXJhbXM7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIDxTbGlja0luaXRQYXJhbXM+KDxhbnk+d2luZG93KS5zbGlja0NvbXBvbmVudHNQYXJhbXM7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0QXR0YWNoVG8oKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmF0dGFjaFRvO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHNldEF0dGFjaFRvKGF0dGFjaFRvRWxlbWVudDogc3RyaW5nKSB7XHJcblx0XHRTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmF0dGFjaFRvID0gYXR0YWNoVG9FbGVtZW50O1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldFBsYXRmb3JtKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gU2xpY2tJbml0U2VydmljZS5nZXRQYXJhbXMoKS5wbGF0Zm9ybTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBzZXRQbGF0Zm9ybShwbGF0Zm9ybTogc3RyaW5nKSB7XHJcblx0XHRTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLnBsYXRmb3JtID0gcGxhdGZvcm07XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0RXJyb3JMb2coKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmVycm9yTG9nO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHNldEVycm9yTG9nKGVycm9yTG9nOiBzdHJpbmcpIHtcclxuXHRcdFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuZXJyb3JMb2cgPSBlcnJvckxvZztcclxuXHR9XHJcbn1cclxuXHJcbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2staW5pdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvdXRpbHMvc2xpY2staW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBR0MsYUFBUSxHQUFXLFNBQVMsQ0FBQztJQUc5QixDQUFDO0NBQUE7QUFHRCxNQUFNLE9BQU8sZ0JBQWdCO2FBQ3JCLFlBQU8sR0FBRyxTQUFTLEFBQVosQ0FBYTtJQUUzQixnQkFBZ0IsQ0FBQztJQUdqQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQTJCO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDckUsVUFBVSxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDeEMsTUFBTyxDQUFDLHFCQUFxQixHQUFHLFVBQVUsQ0FBQztRQUVqRCxPQUFhLE1BQU8sQ0FBQyxxQkFBcUIsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVM7UUFDZixJQUFJLENBQU8sTUFBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDMUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUM1QyxhQUFhLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUMxQixNQUFPLENBQUMscUJBQXFCLEdBQUcsYUFBYSxDQUFDO1FBQ3JELENBQUM7UUFFRCxPQUE4QixNQUFPLENBQUMscUJBQXFCLENBQUM7SUFDN0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXO1FBQ2pCLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLGVBQXVCO1FBQ3pDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXO1FBQ2pCLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2xDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDbEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXO1FBQ2pCLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2xDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDbEQsQ0FBQztpSUE5Q1csZ0JBQWdCO3FJQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTbGlja0luaXRQYXJhbXMge1xyXG5cdGF0dGFjaFRvOiBzdHJpbmc7XHJcblx0cGxhdGZvcm06IHN0cmluZztcclxuXHRlcnJvckxvZzogc3RyaW5nID0gXCJtaW5pbWFsXCI7XHJcblx0dmVyc2lvbjogc3RyaW5nO1xyXG5cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2xpY2tJbml0U2VydmljZSB7XHRcclxuXHRzdGF0aWMgdmVyc2lvbiA9IFwiMTcuMC4xNFwiO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuXHJcblx0c3RhdGljIGluaXQoaW5pdFBhcmFtczogU2xpY2tJbml0UGFyYW1zKTogU2xpY2tJbml0UGFyYW1zIHtcclxuXHRcdGNvbnNvbGUuaW5mbyhgU2xpY2sgQ29tcG9uZW50cyBWZXJzaW9uICR7U2xpY2tJbml0U2VydmljZS52ZXJzaW9ufWApO1xyXG5cdFx0aW5pdFBhcmFtcy52ZXJzaW9uID0gU2xpY2tJbml0U2VydmljZS52ZXJzaW9uO1xyXG5cdFx0KDxhbnk+d2luZG93KS5zbGlja0NvbXBvbmVudHNQYXJhbXMgPSBpbml0UGFyYW1zO1xyXG5cclxuXHRcdHJldHVybiAoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcztcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRQYXJhbXMoKTogU2xpY2tJbml0UGFyYW1zIHtcclxuXHRcdGlmICghKDxhbnk+d2luZG93KS5zbGlja0NvbXBvbmVudHNQYXJhbXMpIHtcclxuXHRcdFx0Y29uc3QgZGVmYXVsdFBhcmFtcyA9IG5ldyBTbGlja0luaXRQYXJhbXMoKTtcclxuXHRcdFx0ZGVmYXVsdFBhcmFtcy5hdHRhY2hUbyA9IFwiYm9keVwiO1xyXG5cdFx0XHQoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcyA9IGRlZmF1bHRQYXJhbXM7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIDxTbGlja0luaXRQYXJhbXM+KDxhbnk+d2luZG93KS5zbGlja0NvbXBvbmVudHNQYXJhbXM7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0QXR0YWNoVG8oKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmF0dGFjaFRvO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHNldEF0dGFjaFRvKGF0dGFjaFRvRWxlbWVudDogc3RyaW5nKSB7XHJcblx0XHRTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmF0dGFjaFRvID0gYXR0YWNoVG9FbGVtZW50O1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldFBsYXRmb3JtKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gU2xpY2tJbml0U2VydmljZS5nZXRQYXJhbXMoKS5wbGF0Zm9ybTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBzZXRQbGF0Zm9ybShwbGF0Zm9ybTogc3RyaW5nKSB7XHJcblx0XHRTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLnBsYXRmb3JtID0gcGxhdGZvcm07XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0RXJyb3JMb2coKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmVycm9yTG9nO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHNldEVycm9yTG9nKGVycm9yTG9nOiBzdHJpbmcpIHtcclxuXHRcdFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuZXJyb3JMb2cgPSBlcnJvckxvZztcclxuXHR9XHJcbn1cclxuXHJcbiJdfQ==
@@ -22,7 +22,7 @@ class SlickInitParams {
22
22
  }
23
23
  }
24
24
  class SlickInitService {
25
- static { this.version = "17.0.12"; }
25
+ static { this.version = "17.0.14"; }
26
26
  constructor() { }
27
27
  static init(initParams) {
28
28
  console.info(`Slick Components Version ${SlickInitService.version}`);
@@ -1940,7 +1940,7 @@ class SlickDialogComponent {
1940
1940
  let footerHeight = (this.footerRef) ? this.footerRef.nativeElement.clientHeight : 0;
1941
1941
  this.hasFooter = footerHeight > 0;
1942
1942
  let documentBodyHeight = !forFullSize ? (document.body.clientHeight || window.innerHeight) : window.innerHeight;
1943
- this.maxHeight = !forFullSize ? documentBodyHeight - (this.top * 2) : documentBodyHeight;
1943
+ this.maxHeight = !forFullSize ? documentBodyHeight - this.top - 20 : documentBodyHeight;
1944
1944
  this.isBodyVisible = true;
1945
1945
  }
1946
1946
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickDialogComponent, deps: [{ token: SlickDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
@@ -6773,6 +6773,9 @@ class SlickMultiSelectComponent {
6773
6773
  this.propagateChange = (_) => { };
6774
6774
  this.uuid = SlickUtilsService.newGuid();
6775
6775
  }
6776
+ async ngOnInit() {
6777
+ this.attachTo = this.attachTo || SlickInitService.getParams().attachTo || 'body';
6778
+ }
6776
6779
  async ngAfterViewInit() {
6777
6780
  // Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom
6778
6781
  // of a div when it expands beyond the bottom.
@@ -6828,6 +6831,7 @@ class SlickMultiSelectComponent {
6828
6831
  return;
6829
6832
  this.reposition();
6830
6833
  await SlickSleepService.sleep();
6834
+ SlickUtilsService.attachElement(this.multiSelectList.nativeElement, this.attachTo);
6831
6835
  this.multiSelectList.nativeElement.style.display = "inline-block";
6832
6836
  let selectedItems = this.multiSelectList.nativeElement.getElementsByClassName("selected");
6833
6837
  if (selectedItems && selectedItems.length > 0)
@@ -6852,11 +6856,12 @@ class SlickMultiSelectComponent {
6852
6856
  }
6853
6857
  async reposition() {
6854
6858
  await SlickSleepService.sleep();
6855
- let rect = this.containerDiv.nativeElement.getBoundingClientRect();
6856
- let containerLeft = rect.left;
6857
- let containerTop = rect.top;
6859
+ const multiSelectRect = this.containerDiv.nativeElement.getBoundingClientRect();
6860
+ const parentRect = (this.attachTo === 'body') ? null : document.body.querySelector(this.attachTo).getBoundingClientRect();
6861
+ const containerLeft = (this.attachTo === 'body') ? multiSelectRect.left : (multiSelectRect.left - parentRect.left);
6862
+ const containerTop = (this.attachTo === 'body') ? multiSelectRect.top : (multiSelectRect.top - parentRect.top);
6858
6863
  let containerHeight = this.containerDiv.nativeElement.offsetHeight;
6859
- let containerWidth = rect.width;
6864
+ let containerWidth = multiSelectRect.width;
6860
6865
  this.width = containerWidth;
6861
6866
  if (this.listWidth === '100%')
6862
6867
  this.listGroupWidth = this.width;
@@ -7084,7 +7089,7 @@ class SlickMultiSelectComponent {
7084
7089
  this.propagateChange(this.selectedIds);
7085
7090
  }
7086
7091
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickMultiSelectComponent, deps: [{ token: SlickMultiSelectService }], target: i0.ɵɵFactoryTarget.Component }); }
7087
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: SlickMultiSelectComponent, selector: "slick-multi-select", inputs: { placeholder: "placeholder", items: "items", idFieldName: "idFieldName", textFieldName: "textFieldName", disabled: "disabled", allowEmpty: "allowEmpty", singleSelect: "singleSelect", width: "width", listWidth: "listWidth", height: "height", showLoadingMessage: "showLoadingMessage", showDebug: "showDebug", tabindex: "tabindex", searchType: "searchType" }, outputs: { onExpand: "onExpand", onCollapse: "onCollapse", onSelect: "onSelect" }, providers: [SlickMultiSelectService,
7092
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: SlickMultiSelectComponent, selector: "slick-multi-select", inputs: { placeholder: "placeholder", items: "items", idFieldName: "idFieldName", textFieldName: "textFieldName", disabled: "disabled", allowEmpty: "allowEmpty", singleSelect: "singleSelect", width: "width", listWidth: "listWidth", height: "height", showLoadingMessage: "showLoadingMessage", showDebug: "showDebug", tabindex: "tabindex", attachTo: "attachTo", searchType: "searchType" }, outputs: { onExpand: "onExpand", onCollapse: "onCollapse", onSelect: "onSelect" }, providers: [SlickMultiSelectService,
7088
7093
  {
7089
7094
  provide: NG_VALUE_ACCESSOR,
7090
7095
  useExisting: forwardRef((() => SlickMultiSelectComponent)),
@@ -7125,6 +7130,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
7125
7130
  type: Input
7126
7131
  }], tabindex: [{
7127
7132
  type: Input
7133
+ }], attachTo: [{
7134
+ type: Input
7128
7135
  }], searchType: [{
7129
7136
  type: Input
7130
7137
  }], onExpand: [{