@arsedizioni/ars-utils 18.4.48 → 18.4.49
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.
|
@@ -65,7 +65,7 @@ export class FilterBarComponent {
|
|
|
65
65
|
initializeFilters() {
|
|
66
66
|
if (!this.filters())
|
|
67
67
|
return;
|
|
68
|
-
this.filters()
|
|
68
|
+
this.filters()?.forEach((n) => {
|
|
69
69
|
switch (n.group) {
|
|
70
70
|
case Filters.FLT_1:
|
|
71
71
|
this.flt1 = n;
|
|
@@ -266,7 +266,7 @@ export class FilterBarComponent {
|
|
|
266
266
|
* @param id : the filter id
|
|
267
267
|
*/
|
|
268
268
|
getFilterGroup(id) {
|
|
269
|
-
return this.filters()
|
|
269
|
+
return this.filters()?.find((n) => n.group === id);
|
|
270
270
|
}
|
|
271
271
|
/**
|
|
272
272
|
* Update filter bar using current search params
|
|
@@ -353,4 +353,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
353
353
|
}], ctorParameters: () => [], propDecorators: { changed: [{
|
|
354
354
|
type: Output
|
|
355
355
|
}] } });
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvY29tcG9uZW50cy9maWx0ZXItYmFyL2ZpbHRlci1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uL3VpL2NvbXBvbmVudHMvZmlsdGVyLWJhci9maWx0ZXItYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFB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YyxFQUFFLFdBQVc7d0JBQzNGLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFlBQVksQ0FBQzt3REFHeEYsT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIE5nU3R5bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0LCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcclxuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyXCI7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IEN1cnJlbnRGaWx0ZXIsIEN1cnJlbnRGaWx0ZXJDaGFuZ2VkLCBGaWx0ZXJHcm91cCwgRmlsdGVySXRlbSwgRmlsdGVycyB9IGZyb20gJy4uLy4uL2ZpbHRlcnMnO1xyXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0JztcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiZmlsdGVyLWJhclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZmlsdGVyLWJhci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9maWx0ZXItYmFyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaW1wb3J0czogW05nQ2xhc3MsIE5nU3R5bGUsIEZsZXhMYXlvdXRNb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRNZW51TW9kdWxlLCBNYXREaXZpZGVyTW9kdWxlLCBTYWZlSHRtbFBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBPdXRwdXQoKSBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXJyZW50RmlsdGVyQ2hhbmdlZD4oKTtcclxuICBwcml2YXRlIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgZmlsdGVycyA9IGlucHV0PGFueT4oKTtcclxuICBjYW5GaWx0ZXJCeUZsdDEgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGNhbkZpbHRlckJ5Rmx0MiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgY2FuRmlsdGVyQnlGbHQzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBjYW5GaWx0ZXJCeUZsdDQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGNhbkZpbHRlckJ5Rmx0NSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgY2FuRmlsdGVyQnlUZXh0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGNhbkZpbHRlckJ5VGV4dDIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgY2FuRmlsdGVyQnlUZXh0MyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBpbml0aWFsVGV4dCA9IGlucHV0PHN0cmluZz4obnVsbCk7XHJcbiAgaW5pdGlhbFRleHQyID0gaW5wdXQ8c3RyaW5nPihudWxsKTtcclxuICBpbml0aWFsVGV4dDMgPSBpbnB1dDxzdHJpbmc+KG51bGwpO1xyXG4gIHRleHROYW1lID0gaW5wdXQ8c3RyaW5nPihcInRlc3RvXCIpO1xyXG4gIHRleHQyTmFtZSA9IGlucHV0PHN0cmluZz4oXCIuLi5cIik7XHJcbiAgdGV4dDNOYW1lID0gaW5wdXQ8c3RyaW5nPihcIi4uLlwiKTtcclxuICB0ZXh0TGVuZ3RoID0gaW5wdXQ8c3RyaW5nPigpO1xyXG4gIHRleHQyTGVuZ3RoID0gaW5wdXQ8c3RyaW5nPigpO1xyXG4gIHRleHQzTGVuZ3RoID0gaW5wdXQ8c3RyaW5nPigpO1xyXG4gIHNob3dUZXh0U2VhcmNoQnV0dG9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGFwcGVhcmFuY2UgPSBpbnB1dDwnZmlsbCcgfCAnb3V0bGluZScgfCBudWxsPignb3V0bGluZScpO1xyXG5cclxuXHJcbiAgcHJvdGVjdGVkIHRleHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHByb3RlY3RlZCB0ZXh0Mjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIHRleHQzOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgZmx0MTogRmlsdGVyR3JvdXA7XHJcbiAgcHJvdGVjdGVkIGZsdDI6IEZpbHRlckdyb3VwO1xyXG4gIHByb3RlY3RlZCBmbHQzOiBGaWx0ZXJHcm91cDtcclxuICBwcm90ZWN0ZWQgZmx0NDogRmlsdGVyR3JvdXA7XHJcbiAgcHJvdGVjdGVkIGZsdDU6IEZpbHRlckdyb3VwO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudEZpbHRlcjogQ3VycmVudEZpbHRlciA9IG5ldyBDdXJyZW50RmlsdGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgdGhpcy50ZXh0ID0gdGhpcy5pbml0aWFsVGV4dCgpO1xyXG4gICAgICB0aGlzLnRleHQyID0gdGhpcy5pbml0aWFsVGV4dDIoKTtcclxuICAgICAgdGhpcy50ZXh0MyA9IHRoaXMuaW5pdGlhbFRleHQzKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVGaWx0ZXJzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSBmaWx0ZXJzXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZUZpbHRlcnMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZmlsdGVycygpKSByZXR1cm47XHJcbiAgICB0aGlzLmZpbHRlcnMoKS5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgc3dpdGNoIChuLmdyb3VwKSB7XHJcbiAgICAgICAgY2FzZSBGaWx0ZXJzLkZMVF8xOlxyXG4gICAgICAgICAgdGhpcy5mbHQxID0gbjtcclxuICAgICAgICAgIHRoaXMuY2FuRmlsdGVyQnlGbHQxLnNldChuLmFjdGlvbiB8fCAobi5pdGVtcyAmJiBuLml0ZW1zLmxlbmd0aCA+IDApKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmlsdGVycy5GTFRfMjpcclxuICAgICAgICAgIHRoaXMuZmx0MiA9IG47XHJcbiAgICAgICAgICB0aGlzLmNhbkZpbHRlckJ5Rmx0Mi5zZXQobi5hY3Rpb24gfHwgKG4uaXRlbXMgJiYgbi5pdGVtcy5sZW5ndGggPiAwKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpbHRlcnMuRkxUXzM6XHJcbiAgICAgICAgICB0aGlzLmZsdDMgPSBuO1xyXG4gICAgICAgICAgdGhpcy5jYW5GaWx0ZXJCeUZsdDMuc2V0KG4uYWN0aW9uIHx8IChuLml0ZW1zICYmIG4uaXRlbXMubGVuZ3RoID4gMCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWx0ZXJzLkZMVF80OlxyXG4gICAgICAgICAgdGhpcy5mbHQ0ID0gbjtcclxuICAgICAgICAgIHRoaXMuY2FuRmlsdGVyQnlGbHQ0LnNldChuLmFjdGlvbiB8fCAobi5pdGVtcyAmJiBuLml0ZW1zLmxlbmd0aCA+IDApKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmlsdGVycy5GTFRfNTpcclxuICAgICAgICAgIHRoaXMuZmx0NSA9IG47XHJcbiAgICAgICAgICB0aGlzLmNhbkZpbHRlckJ5Rmx0NS5zZXQobi5hY3Rpb24gfHwgKG4uaXRlbXMgJiYgbi5pdGVtcy5sZW5ndGggPiAwKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBhIGZpbHRlclxyXG4gICAqIEBwYXJhbSBmaWx0ZXIgOiB0aGUgZmlsdGVyIHRvIGFwcGx5XHJcbiAgICovXHJcbiAgYXBwbHlGaWx0ZXIoZmlsdGVyOiBGaWx0ZXJJdGVtKSB7XHJcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgc3dpdGNoIChmaWx0ZXIuZ3JvdXApIHtcclxuICAgICAgY2FzZSBGaWx0ZXJzLkZMVF8xOlxyXG4gICAgICAgIGNoYW5nZWQgPSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MSAhPSBmaWx0ZXIudmFsdWU7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQxID0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDFOYW1lID0gZmlsdGVyLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzI6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQyICE9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDIgPSBmaWx0ZXIudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0Mk5hbWUgPSBmaWx0ZXIudGl0bGVTZWxlY3RlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmlsdGVycy5GTFRfMzpcclxuICAgICAgICBjaGFuZ2VkID0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDMgIT0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MyA9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQzTmFtZSA9IGZpbHRlci50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWx0ZXJzLkZMVF80OlxyXG4gICAgICAgIGNoYW5nZWQgPSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NCAhPSBmaWx0ZXIudmFsdWU7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0ID0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDROYW1lID0gZmlsdGVyLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzU6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQ1ICE9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDUgPSBmaWx0ZXIudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NU5hbWUgPSBmaWx0ZXIudGl0bGVTZWxlY3RlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoeyBmaWx0ZXI6IHRoaXMuY3VycmVudEZpbHRlciwgZ3JvdXA6IGZpbHRlci5ncm91cCB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbHkgYSBmaWx0ZXIgYWN0aW9uXHJcbiAgICogQHBhcmFtIGZpbHRlciA6IHRoZSBmaWx0ZXIgdG8gYXBwbHlcclxuICAgKiBAcGFyYW0gY2xlYXIgOiB0cnVlIGlmIHRoZSBmaWx0ZXIgbXVzIGJlIHJlbW92ZWRcclxuICAgKiBAcGFyYW0gZXZlbnQgOiB0aGUgY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICBhcHBseUZpbHRlckFjdGlvbihncm91cDogbnVtYmVyLCBjbGVhcjogYm9vbGVhbiA9IGZhbHNlLCBldmVudDogYW55ID0gbnVsbCkge1xyXG4gICAgaWYgKCFjbGVhcikge1xyXG4gICAgICBjb25zdCBnID0gdGhpcy5nZXRGaWx0ZXJHcm91cChncm91cCk7XHJcbiAgICAgIGlmIChnLmFjdGlvbikge1xyXG4gICAgICAgIGcuYWN0aW9uKHRoaXMsIGcsIGV2ZW50KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbGVhckZpbHRlcihncm91cCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSB0ZXh0IGZpbHRlclxyXG4gICAqL1xyXG4gIGFwcGx5VGV4dEZpbHRlcigpIHtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci50ZXh0ID0gdGhpcy50ZXh0O1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLnRleHQyID0gdGhpcy50ZXh0MjtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci50ZXh0MyA9IHRoaXMudGV4dDM7XHJcbiAgICB0aGlzLmNoYW5nZWQuZW1pdCh7XHJcbiAgICAgIGZpbHRlcjogdGhpcy5jdXJyZW50RmlsdGVyLFxyXG4gICAgICBncm91cDogRmlsdGVycy5GTFRfVEVYVFxyXG4gICAgfSk7XHJcbiAgICBcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBhIGZpbHRlclxyXG4gICAqIEBwYXJhbSBncm91cCA6IHRoZSBmaWx0ZXIgZ3JvdXBcclxuICAgKi9cclxuICBjbGVhckZpbHRlcihncm91cDogbnVtYmVyKSB7XHJcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgc3dpdGNoIChncm91cCkge1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzE6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQxICE9IG51bGw7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQxID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQxTmFtZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzI6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQyICE9IG51bGw7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQyID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQyTmFtZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzM6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQzICE9IG51bGw7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQzID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQzTmFtZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzQ6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQ0ICE9IG51bGw7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0ID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0TmFtZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzU6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQ1ICE9IG51bGw7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ1ID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ1TmFtZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoeyBmaWx0ZXI6IHRoaXMuY3VycmVudEZpbHRlciwgZ3JvdXA6IGdyb3VwIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgYWxsIGZpbHRlcnNcclxuICAgKi9cclxuICBjbGVhckFsbEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MSA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MU5hbWUgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDIgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDJOYW1lID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQzID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQzTmFtZSA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NCA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NE5hbWUgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDUgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDVOYW1lID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci50ZXh0ID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci50ZXh0MiA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIudGV4dDMgPSBudWxsO1xyXG4gICAgdGhpcy50ZXh0ID0gbnVsbDtcclxuICAgIHRoaXMudGV4dDIgPSBudWxsO1xyXG4gICAgdGhpcy50ZXh0MyA9IG51bGw7XHJcbiAgICB0aGlzLmNoYW5nZWQuZW1pdCh7IGZpbHRlcjogdGhpcy5jdXJyZW50RmlsdGVyLCBncm91cDogLTEgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBjYW4gY2xlYXIgYWxsIGZpbHRlcnMgYnV0dG9uIGNhYiBiZSBzaG93ZWRcclxuICAgKi9cclxuICBjYW5DbGVhckFsbEZpbHRlcnMoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgaWYgKHRoaXMuY2FuRmlsdGVyQnlUZXh0KSBjb3VudCsrO1xyXG4gICAgaWYgKHRoaXMuY2FuRmlsdGVyQnlUZXh0MikgY291bnQrKztcclxuICAgIGlmICh0aGlzLmNhbkZpbHRlckJ5VGV4dDMpIGNvdW50Kys7XHJcbiAgICBpZiAodGhpcy5jYW5GaWx0ZXJCeUZsdDEpIGNvdW50Kys7XHJcbiAgICBpZiAodGhpcy5jYW5GaWx0ZXJCeUZsdDIpIGNvdW50Kys7XHJcbiAgICBpZiAodGhpcy5jYW5GaWx0ZXJCeUZsdDMpIGNvdW50Kys7XHJcbiAgICBpZiAodGhpcy5jYW5GaWx0ZXJCeUZsdDQpIGNvdW50Kys7XHJcbiAgICBpZiAodGhpcy5jYW5GaWx0ZXJCeUZsdDUpIGNvdW50Kys7XHJcbiAgICByZXR1cm4gY291bnQgPiAxO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBmaWx0ZXIgZ3JvdXBcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgZmlsdGVyIGlkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRGaWx0ZXJHcm91cChpZDogbnVtYmVyKTogRmlsdGVyR3JvdXAge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVycygpLmZpbmQoKG46IGFueSkgPT4gbi5ncm91cCA9PT0gaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGZpbHRlciBiYXIgdXNpbmcgY3VycmVudCBzZWFyY2ggcGFyYW1zXHJcbiAgICogQHBhcmFtIHBhcmFtcyA6IHNlYXJjaCBwYXJhbXNcclxuICAgKi9cclxuICBzeW5jRmlsdGVyKCkge1xyXG4gICAgbGV0IGcgPSB0aGlzLmdldEZpbHRlckdyb3VwKEZpbHRlcnMuRkxUXzEpO1xyXG4gICAgaWYgKGcpIHtcclxuICAgICAgaWYgKGcuaXRlbXMpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MU5hbWUgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MSkge1xyXG4gICAgICAgICAgY29uc3QgZ2kgPSBnLml0ZW1zLmZpbmQobiA9PiBuLnZhbHVlID09PSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MSk7XHJcbiAgICAgICAgICBpZiAoZ2kpIHRoaXMuY3VycmVudEZpbHRlci5mbHQxTmFtZSA9IGdpLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgICBlbHNlIHRoaXMuY3VycmVudEZpbHRlci5mbHQxID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnID0gdGhpcy5nZXRGaWx0ZXJHcm91cChGaWx0ZXJzLkZMVF8yKTtcclxuICAgIGlmIChnKSB7XHJcbiAgICAgIGlmIChnLml0ZW1zKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDJOYW1lID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmZsdDIpIHtcclxuICAgICAgICAgIGNvbnN0IGdpID0gZy5pdGVtcy5maW5kKG4gPT4gbi52YWx1ZSA9PT0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDIpO1xyXG4gICAgICAgICAgaWYgKGdpKSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0Mk5hbWUgPSBnaS50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgICAgZWxzZSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZyA9IHRoaXMuZ2V0RmlsdGVyR3JvdXAoRmlsdGVycy5GTFRfMyk7XHJcbiAgICBpZiAoZykge1xyXG4gICAgICBpZiAoZy5pdGVtcykge1xyXG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQzTmFtZSA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5mbHQzKSB7XHJcbiAgICAgICAgICBjb25zdCBnaSA9IGcuaXRlbXMuZmluZChuID0+IG4udmFsdWUgPT09IHRoaXMuY3VycmVudEZpbHRlci5mbHQzKTtcclxuICAgICAgICAgIGlmIChnaSkgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDNOYW1lID0gZ2kudGl0bGVTZWxlY3RlZDtcclxuICAgICAgICAgIGVsc2UgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGcgPSB0aGlzLmdldEZpbHRlckdyb3VwKEZpbHRlcnMuRkxUXzQpO1xyXG4gICAgaWYgKGcpIHtcclxuICAgICAgaWYgKGcuaXRlbXMpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NE5hbWUgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NCkge1xyXG4gICAgICAgICAgY29uc3QgZ2kgPSBnLml0ZW1zLmZpbmQobiA9PiBuLnZhbHVlID09PSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NCk7XHJcbiAgICAgICAgICBpZiAoZ2kpIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0TmFtZSA9IGdpLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgICBlbHNlIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0ID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnID0gdGhpcy5nZXRGaWx0ZXJHcm91cChGaWx0ZXJzLkZMVF81KTtcclxuICAgIGlmIChnKSB7XHJcbiAgICAgIGlmIChnLml0ZW1zKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDVOYW1lID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmZsdDUpIHtcclxuICAgICAgICAgIGNvbnN0IGdpID0gZy5pdGVtcy5maW5kKG4gPT4gbi52YWx1ZSA9PT0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDUpO1xyXG4gICAgICAgICAgaWYgKGdpKSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NU5hbWUgPSBnaS50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgICAgZWxzZSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50ZXh0ID0gdGhpcy5jdXJyZW50RmlsdGVyLnRleHQ7XHJcbiAgICB0aGlzLnRleHQyID0gdGhpcy5jdXJyZW50RmlsdGVyLnRleHQyO1xyXG4gICAgdGhpcy50ZXh0MyA9IHRoaXMuY3VycmVudEZpbHRlci50ZXh0MztcclxuXHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGZ4TGF5b3V0PVwicm93XCIgIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiAgY2xhc3M9XCJmaWx0ZXJib3hcIlxyXG5bbmdDbGFzc109XCJ7J2ZpbHRlcmJveC1maWx0ZXJlZCc6IGN1cnJlbnRGaWx0ZXIuZmlsdGVyZWQoKX1cIj5cclxuICA8ZGl2IGZ4RmxleD1cIjEwMFwiIGZ4TGF5b3V0PVwicm93IHdyYXBcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlblwiPlxyXG4gICAgQGlmIChjYW5GaWx0ZXJCeVRleHQoKSB8fCBjYW5GaWx0ZXJCeVRleHQyKCkgfHwgY2FuRmlsdGVyQnlUZXh0MygpKSB7XHJcbiAgICA8ZGl2IGZ4RmxleC5sdC1zbT1cIjEwMFwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGwgc3R5bGU9XCJwYWRkaW5nOjRweDtcIj5cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5VGV4dCgpKSB7XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiB0ZXh0TGVuZ3RoKCkgPz8gJzEwMCUnfVwiIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+Q2VyY2EgcGVyIHt7dGV4dE5hbWUoKX19Li4uPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgbmFtZT1cIl90ZXh0XCIgWyhuZ01vZGVsKV09XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiMTAwXCIgI190ZXh0PVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgIChrZXl1cC5FbnRlcik9XCJhcHBseVRleHRGaWx0ZXIoKVwiIG1hdFRvb2x0aXA9XCJQcmVtaSBJTlZJTyBwZXIgYXZ2aWFyZSBsYSByaWNlcmNhXCI+XHJcbiAgICAgICAgICBAaWYgKHRleHQpIHtcclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiLTFcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJQdWxpc2NpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRleHQgPSAnJzsgYXBwbHlUZXh0RmlsdGVyKCk7XCIgbWF0VG9vbHRpcD1cIkF6emVyYVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKHNob3dUZXh0U2VhcmNoQnV0dG9uKCkpIHtcclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlRyb3ZhXCIgKGNsaWNrKT1cImFwcGx5VGV4dEZpbHRlcigpO1wiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJUcm92YVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlUZXh0MigpKSB7XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiB0ZXh0Mkxlbmd0aCgpID8/ICcxMDAlJ31cIiBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPkNlcmNhIHBlciB7e3RleHQyTmFtZSgpfX0uLi48L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBuYW1lPVwiX3RleHQyXCIgWyhuZ01vZGVsKV09XCJ0ZXh0MlwiIG1heGxlbmd0aD1cIjEwMFwiICNfdGV4dDI9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgKGtleXVwLkVudGVyKT1cImFwcGx5VGV4dEZpbHRlcigpXCIgbWF0VG9vbHRpcD1cIlByZW1pIElOVklPIHBlciBhdnZpYXJlIGxhIHJpY2VyY2FcIj5cclxuICAgICAgICAgIEBpZiAodGV4dDIpIHtcclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiLTFcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJQdWxpc2NpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRleHQyID0gJyc7IGFwcGx5VGV4dEZpbHRlcigpO1wiIG1hdFRvb2x0aXA9XCJBenplcmFcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlUZXh0MygpKSB7XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiB0ZXh0M0xlbmd0aCgpID8/ICcxMDAlJ31cIiBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPkNlcmNhIHBlciB7e3RleHQzTmFtZSgpfX0uLi48L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBuYW1lPVwiX3RleHQzXCIgWyhuZ01vZGVsKV09XCJ0ZXh0M1wiIG1heGxlbmd0aD1cIjEwMFwiICNfdGV4dDM9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgKGtleXVwLkVudGVyKT1cImFwcGx5VGV4dEZpbHRlcigpXCIgbWF0VG9vbHRpcD1cIlByZW1pIElOVklPIHBlciBhdnZpYXJlIGxhIHJpY2VyY2FcIj5cclxuICAgICAgICAgIEBpZiAodGV4dDMpIHtcclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiLTFcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJQdWxpc2NpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRleHQzID0gJyc7IGFwcGx5VGV4dEZpbHRlcigpO1wiIG1hdFRvb2x0aXA9XCJBenplcmFcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgPGRpdiBmeEZsZXgubHQtc209XCIxMDBcIj5cclxuICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbCA+XHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeUZsdDEoKSAmJiBmbHQxICYmIGZsdDEuYWN0aW9uKSB7XHJcbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImZsdDEudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0MS50aXRsZVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0MS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQxLnRpdGxlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVyQWN0aW9uKDEsIGZhbHNlKVwiIHN0eWxlPVwiaGVpZ2h0OjU2cHg7XCI+XHJcbiAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICBAaWYgKCFjdXJyZW50RmlsdGVyLmZsdDEpIHtcclxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDEudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwiY3VycmVudEZpbHRlci5mbHQxTmFtZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIEBpZiAoY3VycmVudEZpbHRlci5mbHQxKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAgbWF0VG9vbHRpcD1cIkF6emVyYVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCInQXp6ZXJhJ1wiIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbigxLCB0cnVlKTtcIiBjbGFzcz1cInNtYWxsLWljb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9IEBlbHNlIGlmIChjYW5GaWx0ZXJCeUZsdDEoKSAmJiBmbHQxICYmIGZsdDEuaXRlbXMpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW21hdFRvb2x0aXBdPVwiZmx0MS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQxLnRpdGxlXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0MS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQxLnRpdGxlXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVBcHBseUZpbHRlckZsdDFcIlxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIiA+XHJcbiAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgIEBpZiAoIWN1cnJlbnRGaWx0ZXIuZmx0MSkge1xyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDEudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJjdXJyZW50RmlsdGVyLmZsdDFOYW1lIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICB9ICAgICAgICAgIFxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1tZW51LWRyb3AtZG93blwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudUFwcGx5RmlsdGVyRmx0MT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgQGZvciAoZiBvZiBmbHQxLml0ZW1zOyB0cmFjayBmKSB7XHJcblxyXG4gICAgICAgICAgICBAaWYgKGYuZGl2aWRlcikge1xyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFwcGx5RmlsdGVyKGYpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJtaW4td2lkdGg6IDIwMHB4XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmLnRpdGxlIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBtaW4td2lkdGg6IDIwMHB4OyBwYWRkaW5nOiA0cHggNHB4IDAgNHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoZmx0MS5pdGVtc1swXS5ncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJBenplcmFcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOjE4cHg7IGhlaWdodDogMThweDsgd2lkdGg6MThweDtcIj5jbGVhcjwvbWF0LWljb24+IEF6emVyYVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQyKCkgJiYgZmx0MiAmJiBmbHQyLmFjdGlvbikge1xyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmbHQyLnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDIudGl0bGVcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDIudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0Mi50aXRsZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbigyLCBmYWxzZSlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiPlxyXG4gICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQyKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50XCI+e3tmbHQyLnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0Mk5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICBAaWYgKGN1cnJlbnRGaWx0ZXIuZmx0Mikge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gIG1hdFRvb2x0aXA9XCJBenplcmFcIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJ0F6emVyYSdcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXJBY3Rpb24oMiwgdHJ1ZSk7XCIgY2xhc3M9XCJzbWFsbC1pY29uLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQyKCkgJiYgZmx0MiAmJiBmbHQyLml0ZW1zKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIFttYXRUb29sdGlwXT1cImZsdDIudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0Mi50aXRsZVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDIudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0Mi50aXRsZVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51QXBwbHlGaWx0ZXJGbHQyXCJcclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwiaGVpZ2h0OjU2cHg7XCI+XHJcbiAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgIEBpZiAoIWN1cnJlbnRGaWx0ZXIuZmx0Mikge1xyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDIudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJjdXJyZW50RmlsdGVyLmZsdDJOYW1lIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLW1lbnUtZHJvcC1kb3duXCI+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51QXBwbHlGaWx0ZXJGbHQyPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICBAZm9yIChmIG9mIGZsdDIuaXRlbXM7IHRyYWNrIGYpIHtcclxuXHJcbiAgICAgICAgICAgIEBpZiAoZi5kaXZpZGVyKSB7XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYXBwbHlGaWx0ZXIoZilcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImYuZGVzY3JpcHRpb25cIiBzdHlsZT1cIm1pbi13aWR0aDogMjAwcHhcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImYudGl0bGUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IG1pbi13aWR0aDogMjAwcHg7IHBhZGRpbmc6IDRweCA0cHggMCA0cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjbGVhckZpbHRlcihmbHQyLml0ZW1zWzBdLmdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cIkF6emVyYVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJmb250LXNpemU6MThweDsgaGVpZ2h0OiAxOHB4OyB3aWR0aDoxOHB4O1wiPmNsZWFyPC9tYXQtaWNvbj4gQXp6ZXJhXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeUZsdDMoKSAmJiBmbHQzICYmIGZsdDMuYWN0aW9uKSB7XHJcbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImZsdDMudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0My50aXRsZVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0My50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQzLnRpdGxlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVyQWN0aW9uKDMsIGZhbHNlKVwiIHN0eWxlPVwiaGVpZ2h0OjU2cHg7XCI+XHJcbiAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICBAaWYgKCFjdXJyZW50RmlsdGVyLmZsdDMpIHtcclxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDMudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwiY3VycmVudEZpbHRlci5mbHQzTmFtZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIEBpZiAoY3VycmVudEZpbHRlci5mbHQzKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAgbWF0VG9vbHRpcD1cIkF6emVyYVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCInQXp6ZXJhJ1wiIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbigzLCB0cnVlKTtcIiBjbGFzcz1cInNtYWxsLWljb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeUZsdDMoKSAmJiBmbHQzICYmIGZsdDMuaXRlbXMpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW21hdFRvb2x0aXBdPVwiZmx0My50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQzLnRpdGxlXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0My50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQzLnRpdGxlXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVBcHBseUZpbHRlckZsdDNcIlxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIj5cclxuICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQzKSB7XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiAyMDAgIWltcG9ydGFudFwiPnt7Zmx0My50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0M05hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tbWVudS1kcm9wLWRvd25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI21lbnVBcHBseUZpbHRlckZsdDM9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGYgb2YgZmx0My5pdGVtczsgdHJhY2sgZikge1xyXG5cclxuICAgICAgICAgICAgQGlmIChmLmRpdmlkZXIpIHtcclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhcHBseUZpbHRlcihmKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZi5kZXNjcmlwdGlvblwiIHN0eWxlPVwibWluLXdpZHRoOiAyMDBweFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZi50aXRsZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgbWluLXdpZHRoOiAyMDBweDsgcGFkZGluZzogNHB4IDRweCAwIDRweDtcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyKGZsdDMuaXRlbXNbMF0uZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiQXp6ZXJhXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZToxOHB4OyBoZWlnaHQ6IDE4cHg7IHdpZHRoOjE4cHg7XCI+Y2xlYXI8L21hdC1pY29uPiBBenplcmFcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5Rmx0NCgpICYmIGZsdDQgJiYgZmx0NC5hY3Rpb24pIHtcclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b25cclxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZmx0NC50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQ0LnRpdGxlXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmbHQ0LnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDQudGl0bGVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlGaWx0ZXJBY3Rpb24oNCwgZmFsc2UpXCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIj5cclxuICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgIEBpZiAoIWN1cnJlbnRGaWx0ZXIuZmx0NCkge1xyXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiAyMDAgIWltcG9ydGFudFwiPnt7Zmx0NC50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJjdXJyZW50RmlsdGVyLmZsdDROYW1lIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgQGlmIChjdXJyZW50RmlsdGVyLmZsdDQpIHtcclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICBtYXRUb29sdGlwPVwiQXp6ZXJhXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIidBenplcmEnXCIgKGNsaWNrKT1cImFwcGx5RmlsdGVyQWN0aW9uKDQsIHRydWUpO1wiIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5Rmx0NCgpICYmIGZsdDQgJiYgZmx0NC5pdGVtcykge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBbbWF0VG9vbHRpcF09XCJmbHQ0LnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDQudGl0bGVcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmbHQ0LnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDQudGl0bGVcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUFwcGx5RmlsdGVyRmx0NFwiXHJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiPlxyXG4gICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICBAaWYgKCFjdXJyZW50RmlsdGVyLmZsdDQpIHtcclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50XCI+e3tmbHQ0LnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwiY3VycmVudEZpbHRlci5mbHQ0TmFtZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1tZW51LWRyb3AtZG93blwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudUFwcGx5RmlsdGVyRmx0ND1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgQGZvciAoZiBvZiBmbHQ0Lml0ZW1zOyB0cmFjayBmKSB7XHJcblxyXG4gICAgICAgICAgICBAaWYgKGYuZGl2aWRlcikge1xyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFwcGx5RmlsdGVyKGYpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJtaW4td2lkdGg6IDIwMHB4XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmLnRpdGxlIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBtaW4td2lkdGg6IDIwMHB4OyBwYWRkaW5nOiA0cHggNHB4IDAgNHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoZmx0NC5pdGVtc1swXS5ncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJBenplcmFcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOjE4cHg7IGhlaWdodDogMThweDsgd2lkdGg6MThweDtcIj5jbGVhcjwvbWF0LWljb24+IEF6emVyYVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQ1KCkgJiYgZmx0NSAmJiBmbHQ1LmFjdGlvbikge1xyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmbHQ1LnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDUudGl0bGVcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDUudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0NS50aXRsZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbig1LCBmYWxzZSlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiPlxyXG4gICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQ1KSB7XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50XCI+e3tmbHQ1LnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0NU5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICBAaWYgKGN1cnJlbnRGaWx0ZXIuZmx0NSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gIG1hdFRvb2x0aXA9XCJBenplcmFcIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJ0F6emVyYSdcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXJBY3Rpb24oNSwgdHJ1ZSk7XCIgY2xhc3M9XCJzbWFsbC1pY29uLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQ1KCkgJiYgZmx0NSAmJiBmbHQ1Lml0ZW1zKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIFttYXRUb29sdGlwXT1cImZsdDUudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0NS50aXRsZVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDUudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0NS50aXRsZVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51QXBwbHlGaWx0ZXJGbHQ1XCJcclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwiaGVpZ2h0OjU2cHg7XCI+XHJcbiAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgIEBpZiAoIWN1cnJlbnRGaWx0ZXIuZmx0NSkge1xyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDUudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJjdXJyZW50RmlsdGVyLmZsdDVOYW1lIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLW1lbnUtZHJvcC1kb3duXCI+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51QXBwbHlGaWx0ZXJGbHQ1PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICBAZm9yIChmIG9mIGZsdDUuaXRlbXM7IHRyYWNrIGYpIHtcclxuXHJcbiAgICAgICAgICAgIEBpZiAoZi5kaXZpZGVyKSB7XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYXBwbHlGaWx0ZXIoZilcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImYuZGVzY3JpcHRpb25cIiBzdHlsZT1cIm1pbi13aWR0aDogMjAwcHhcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImYudGl0bGUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IG1pbi13aWR0aDogMjAwcHg7IHBhZGRpbmc6IDRweCA0cHggMCA0cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjbGVhckZpbHRlcihmbHQ1Lml0ZW1zWzBdLmdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cIkF6emVyYVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJmb250LXNpemU6MThweDsgaGVpZ2h0OiAxOHB4OyB3aWR0aDoxOHB4O1wiPmNsZWFyPC9tYXQtaWNvbj4gQXp6ZXJhXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdj5cclxuICAgIEBpZiAoY3VycmVudEZpbHRlci5maWx0ZXJlZCgpICYmIGNhbkNsZWFyQWxsRmlsdGVycygpKSB7XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkF6emVyYSB0dXR0aSBpIGZpbHRyaVwiIGF0dHIuYXJpYS1sYWJlbD1cIkF6emVyYSB0dXR0aSBpIGZpbHRyaVwiXHJcbiAgICAgICAoY2xpY2spPVwiY2xlYXJBbGxGaWx0ZXJzKClcIj5cclxuICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvY29tcG9uZW50cy9maWx0ZXItYmFyL2ZpbHRlci1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uL3VpL2NvbXBvbmVudHMvZmlsdGVyLWJhci9maWx0ZXItYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFpRCxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7OztBQWF6RCxNQUFNLE9BQU8sa0JBQWtCO0lBcUM3QjtRQXBDVSxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFDckQsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVuRCxZQUFPLEdBQUcsS0FBSyxFQUFPLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDekMsb0JBQWUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDekMsb0JBQWUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDekMsb0JBQWUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDekMsb0JBQWUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDekMsb0JBQWUsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDeEMscUJBQWdCLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLHFCQUFnQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN6QyxnQkFBVyxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUNsQyxpQkFBWSxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUNuQyxpQkFBWSxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUNuQyxhQUFRLEdBQUcsS0FBSyxDQUFTLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxLQUFLLENBQVMsS0FBSyxDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLEtBQUssQ0FBUyxLQUFLLENBQUMsQ0FBQztRQUNqQyxlQUFVLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDN0IsZ0JBQVcsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUM5QixnQkFBVyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQzlCLHlCQUFvQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM3QyxlQUFVLEdBQUcsS0FBSyxDQUE0QixTQUFTLENBQUMsQ0FBQztRQUcvQyxTQUFJLEdBQWtCLElBQUksQ0FBQztRQUMzQixVQUFLLEdBQWtCLElBQUksQ0FBQztRQUM1QixVQUFLLEdBQWtCLElBQUksQ0FBQztRQU90QixrQkFBYSxHQUFrQixJQUFJLGFBQWEsRUFBRSxDQUFDO1FBR2pFLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUdEOztPQUVHO0lBQ0gsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFBRSxPQUFPO1FBQzVCLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUNqQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDaEIsS0FBSyxPQUFPLENBQUMsS0FBSztvQkFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7b0JBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdEUsTUFBTTtnQkFDUixLQUFLLE9BQU8sQ0FBQyxLQUFLO29CQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztvQkFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN0RSxNQUFNO2dCQUNSLEtBQUssT0FBTyxDQUFDLEtBQUs7b0JBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO29CQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3RFLE1BQU07Z0JBQ1IsS0FBSyxPQUFPLENBQUMsS0FBSztvQkFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7b0JBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdEUsTUFBTTtnQkFDUixLQUFLLE9BQU8sQ0FBQyxLQUFLO29CQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztvQkFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN0RSxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxNQUFrQjtRQUM1QixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDcEIsUUFBUSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsS0FBSyxPQUFPLENBQUMsS0FBSztnQkFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ2xELElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDckQsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxPQUFPLENBQUMsS0FBSztnQkFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ2xELElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDckQsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxPQUFPLENBQUMsS0FBSztnQkFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ2xELElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDckQsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxPQUFPLENBQUMsS0FBSztnQkFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ2xELElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDckQsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxPQUFPLENBQUMsS0FBSztnQkFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ2xELElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDckQsQ0FBQztnQkFDRCxNQUFNO1FBQ1YsQ0FBQztRQUVELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsUUFBaUIsS0FBSyxFQUFFLFFBQWEsSUFBSTtRQUN4RSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNiLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQixNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDMUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRO1NBQ3hCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNwQixRQUFRLEtBQUssRUFBRSxDQUFDO1lBQ2QsS0FBSyxPQUFPLENBQUMsS0FBSztnQkFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztnQkFDMUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7b0JBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckMsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxPQUFPLENBQUMsS0FBSztnQkFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztnQkFDMUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7b0JBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckMsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxPQUFPLENBQUMsS0FBSztnQkFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztnQkFDMUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7b0JBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckMsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxPQUFPLENBQUMsS0FBSztnQkFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztnQkFDMUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7b0JBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckMsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxPQUFPLENBQUMsS0FBSztnQkFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztnQkFDMUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7b0JBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckMsQ0FBQztnQkFDRCxNQUFNO1FBQ1YsQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0I7UUFDaEIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsZUFBZTtZQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2xDLElBQUksSUFBSSxDQUFDLGdCQUFnQjtZQUFFLEtBQUssRUFBRSxDQUFDO1FBQ25DLElBQUksSUFBSSxDQUFDLGdCQUFnQjtZQUFFLEtBQUssRUFBRSxDQUFDO1FBQ25DLElBQUksSUFBSSxDQUFDLGVBQWU7WUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxlQUFlO1lBQUUsS0FBSyxFQUFFLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsZUFBZTtZQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2xDLElBQUksSUFBSSxDQUFDLGVBQWU7WUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxlQUFlO1lBQUUsS0FBSyxFQUFFLENBQUM7UUFDbEMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7O09BR0c7SUFDSyxjQUFjLENBQUMsRUFBVTtRQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVU7UUFDUixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ04sSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNuQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzVCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsRSxJQUFJLEVBQUU7d0JBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQzs7d0JBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDdEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDTixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ25DLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xFLElBQUksRUFBRTt3QkFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDOzt3QkFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUN0QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNOLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDbkMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUM1QixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbEUsSUFBSSxFQUFFO3dCQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUM7O3dCQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ3RDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ04sSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNuQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzVCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsRSxJQUFJLEVBQUU7d0JBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQzs7d0JBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDdEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDTixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ25DLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xFLElBQUksRUFBRTt3QkFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDOzt3QkFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUN0QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUV0QyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7OEdBM1VVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDZxRUN6Qi9CLHF6aUJBMFZNLDBoSURwVU0sT0FBTyxvRkFBRSxPQUFPLDBFQUFFLGdCQUFnQixzaUlBQUUsa0JBQWtCLDJhQUFFLGNBQWMsMFdBQUUsV0FBVyxpeEJBQzNGLGdCQUFnQiw0VEFBRSxlQUFlLHdVQUFFLGFBQWEsbUxBQUUsYUFBYSw2dkJBQUUsZ0JBQWdCLCtIQUFFLFlBQVk7OzJGQUV0RixrQkFBa0I7a0JBVDlCLFNBQVM7K0JBQ0UsWUFBWSxjQUdWLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFdBQVc7d0JBQzNGLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFlBQVksQ0FBQzt3REFHeEYsT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIE5nU3R5bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0LCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcclxuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyXCI7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IEN1cnJlbnRGaWx0ZXIsIEN1cnJlbnRGaWx0ZXJDaGFuZ2VkLCBGaWx0ZXJHcm91cCwgRmlsdGVySXRlbSwgRmlsdGVycyB9IGZyb20gJy4uLy4uL2ZpbHRlcnMnO1xyXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0JztcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiZmlsdGVyLWJhclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZmlsdGVyLWJhci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9maWx0ZXItYmFyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaW1wb3J0czogW05nQ2xhc3MsIE5nU3R5bGUsIEZsZXhMYXlvdXRNb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRNZW51TW9kdWxlLCBNYXREaXZpZGVyTW9kdWxlLCBTYWZlSHRtbFBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBPdXRwdXQoKSBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDdXJyZW50RmlsdGVyQ2hhbmdlZD4oKTtcclxuICBwcml2YXRlIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgZmlsdGVycyA9IGlucHV0PGFueT4oKTtcclxuICBjYW5GaWx0ZXJCeUZsdDEgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGNhbkZpbHRlckJ5Rmx0MiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgY2FuRmlsdGVyQnlGbHQzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBjYW5GaWx0ZXJCeUZsdDQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGNhbkZpbHRlckJ5Rmx0NSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgY2FuRmlsdGVyQnlUZXh0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGNhbkZpbHRlckJ5VGV4dDIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgY2FuRmlsdGVyQnlUZXh0MyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBpbml0aWFsVGV4dCA9IGlucHV0PHN0cmluZz4obnVsbCk7XHJcbiAgaW5pdGlhbFRleHQyID0gaW5wdXQ8c3RyaW5nPihudWxsKTtcclxuICBpbml0aWFsVGV4dDMgPSBpbnB1dDxzdHJpbmc+KG51bGwpO1xyXG4gIHRleHROYW1lID0gaW5wdXQ8c3RyaW5nPihcInRlc3RvXCIpO1xyXG4gIHRleHQyTmFtZSA9IGlucHV0PHN0cmluZz4oXCIuLi5cIik7XHJcbiAgdGV4dDNOYW1lID0gaW5wdXQ8c3RyaW5nPihcIi4uLlwiKTtcclxuICB0ZXh0TGVuZ3RoID0gaW5wdXQ8c3RyaW5nPigpO1xyXG4gIHRleHQyTGVuZ3RoID0gaW5wdXQ8c3RyaW5nPigpO1xyXG4gIHRleHQzTGVuZ3RoID0gaW5wdXQ8c3RyaW5nPigpO1xyXG4gIHNob3dUZXh0U2VhcmNoQnV0dG9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGFwcGVhcmFuY2UgPSBpbnB1dDwnZmlsbCcgfCAnb3V0bGluZScgfCBudWxsPignb3V0bGluZScpO1xyXG5cclxuXHJcbiAgcHJvdGVjdGVkIHRleHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHByb3RlY3RlZCB0ZXh0Mjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIHRleHQzOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgZmx0MTogRmlsdGVyR3JvdXA7XHJcbiAgcHJvdGVjdGVkIGZsdDI6IEZpbHRlckdyb3VwO1xyXG4gIHByb3RlY3RlZCBmbHQzOiBGaWx0ZXJHcm91cDtcclxuICBwcm90ZWN0ZWQgZmx0NDogRmlsdGVyR3JvdXA7XHJcbiAgcHJvdGVjdGVkIGZsdDU6IEZpbHRlckdyb3VwO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudEZpbHRlcjogQ3VycmVudEZpbHRlciA9IG5ldyBDdXJyZW50RmlsdGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgdGhpcy50ZXh0ID0gdGhpcy5pbml0aWFsVGV4dCgpO1xyXG4gICAgICB0aGlzLnRleHQyID0gdGhpcy5pbml0aWFsVGV4dDIoKTtcclxuICAgICAgdGhpcy50ZXh0MyA9IHRoaXMuaW5pdGlhbFRleHQzKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVGaWx0ZXJzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSBmaWx0ZXJzXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZUZpbHRlcnMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZmlsdGVycygpKSByZXR1cm47XHJcbiAgICB0aGlzLmZpbHRlcnMoKT8uZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgIHN3aXRjaCAobi5ncm91cCkge1xyXG4gICAgICAgIGNhc2UgRmlsdGVycy5GTFRfMTpcclxuICAgICAgICAgIHRoaXMuZmx0MSA9IG47XHJcbiAgICAgICAgICB0aGlzLmNhbkZpbHRlckJ5Rmx0MS5zZXQobi5hY3Rpb24gfHwgKG4uaXRlbXMgJiYgbi5pdGVtcy5sZW5ndGggPiAwKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpbHRlcnMuRkxUXzI6XHJcbiAgICAgICAgICB0aGlzLmZsdDIgPSBuO1xyXG4gICAgICAgICAgdGhpcy5jYW5GaWx0ZXJCeUZsdDIuc2V0KG4uYWN0aW9uIHx8IChuLml0ZW1zICYmIG4uaXRlbXMubGVuZ3RoID4gMCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWx0ZXJzLkZMVF8zOlxyXG4gICAgICAgICAgdGhpcy5mbHQzID0gbjtcclxuICAgICAgICAgIHRoaXMuY2FuRmlsdGVyQnlGbHQzLnNldChuLmFjdGlvbiB8fCAobi5pdGVtcyAmJiBuLml0ZW1zLmxlbmd0aCA+IDApKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmlsdGVycy5GTFRfNDpcclxuICAgICAgICAgIHRoaXMuZmx0NCA9IG47XHJcbiAgICAgICAgICB0aGlzLmNhbkZpbHRlckJ5Rmx0NC5zZXQobi5hY3Rpb24gfHwgKG4uaXRlbXMgJiYgbi5pdGVtcy5sZW5ndGggPiAwKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpbHRlcnMuRkxUXzU6XHJcbiAgICAgICAgICB0aGlzLmZsdDUgPSBuO1xyXG4gICAgICAgICAgdGhpcy5jYW5GaWx0ZXJCeUZsdDUuc2V0KG4uYWN0aW9uIHx8IChuLml0ZW1zICYmIG4uaXRlbXMubGVuZ3RoID4gMCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbHkgYSBmaWx0ZXJcclxuICAgKiBAcGFyYW0gZmlsdGVyIDogdGhlIGZpbHRlciB0byBhcHBseVxyXG4gICAqL1xyXG4gIGFwcGx5RmlsdGVyKGZpbHRlcjogRmlsdGVySXRlbSkge1xyXG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcclxuICAgIHN3aXRjaCAoZmlsdGVyLmdyb3VwKSB7XHJcbiAgICAgIGNhc2UgRmlsdGVycy5GTFRfMTpcclxuICAgICAgICBjaGFuZ2VkID0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDEgIT0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MSA9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQxTmFtZSA9IGZpbHRlci50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWx0ZXJzLkZMVF8yOlxyXG4gICAgICAgIGNoYW5nZWQgPSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MiAhPSBmaWx0ZXIudmFsdWU7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQyID0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDJOYW1lID0gZmlsdGVyLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzM6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQzICE9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDMgPSBmaWx0ZXIudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0M05hbWUgPSBmaWx0ZXIudGl0bGVTZWxlY3RlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmlsdGVycy5GTFRfNDpcclxuICAgICAgICBjaGFuZ2VkID0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDQgIT0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NCA9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0TmFtZSA9IGZpbHRlci50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWx0ZXJzLkZMVF81OlxyXG4gICAgICAgIGNoYW5nZWQgPSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NSAhPSBmaWx0ZXIudmFsdWU7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ1ID0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDVOYW1lID0gZmlsdGVyLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KHsgZmlsdGVyOiB0aGlzLmN1cnJlbnRGaWx0ZXIsIGdyb3VwOiBmaWx0ZXIuZ3JvdXAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGx5IGEgZmlsdGVyIGFjdGlvblxyXG4gICAqIEBwYXJhbSBmaWx0ZXIgOiB0aGUgZmlsdGVyIHRvIGFwcGx5XHJcbiAgICogQHBhcmFtIGNsZWFyIDogdHJ1ZSBpZiB0aGUgZmlsdGVyIG11cyBiZSByZW1vdmVkXHJcbiAgICogQHBhcmFtIGV2ZW50IDogdGhlIGNsaWNrIGV2ZW50XHJcbiAgICovXHJcbiAgYXBwbHlGaWx0ZXJBY3Rpb24oZ3JvdXA6IG51bWJlciwgY2xlYXI6IGJvb2xlYW4gPSBmYWxzZSwgZXZlbnQ6IGFueSA9IG51bGwpIHtcclxuICAgIGlmICghY2xlYXIpIHtcclxuICAgICAgY29uc3QgZyA9IHRoaXMuZ2V0RmlsdGVyR3JvdXAoZ3JvdXApO1xyXG4gICAgICBpZiAoZy5hY3Rpb24pIHtcclxuICAgICAgICBnLmFjdGlvbih0aGlzLCBnLCBldmVudCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xlYXJGaWx0ZXIoZ3JvdXApO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbHkgdGV4dCBmaWx0ZXJcclxuICAgKi9cclxuICBhcHBseVRleHRGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIudGV4dCA9IHRoaXMudGV4dDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci50ZXh0MiA9IHRoaXMudGV4dDI7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIudGV4dDMgPSB0aGlzLnRleHQzO1xyXG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoe1xyXG4gICAgICBmaWx0ZXI6IHRoaXMuY3VycmVudEZpbHRlcixcclxuICAgICAgZ3JvdXA6IEZpbHRlcnMuRkxUX1RFWFRcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgYSBmaWx0ZXJcclxuICAgKiBAcGFyYW0gZ3JvdXAgOiB0aGUgZmlsdGVyIGdyb3VwXHJcbiAgICovXHJcbiAgY2xlYXJGaWx0ZXIoZ3JvdXA6IG51bWJlcikge1xyXG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcclxuICAgIHN3aXRjaCAoZ3JvdXApIHtcclxuICAgICAgY2FzZSBGaWx0ZXJzLkZMVF8xOlxyXG4gICAgICAgIGNoYW5nZWQgPSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MSAhPSBudWxsO1xyXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MU5hbWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWx0ZXJzLkZMVF8yOlxyXG4gICAgICAgIGNoYW5nZWQgPSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MiAhPSBudWxsO1xyXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MiA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0Mk5hbWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWx0ZXJzLkZMVF8zOlxyXG4gICAgICAgIGNoYW5nZWQgPSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MyAhPSBudWxsO1xyXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0M05hbWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWx0ZXJzLkZMVF80OlxyXG4gICAgICAgIGNoYW5nZWQgPSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NCAhPSBudWxsO1xyXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NCA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NE5hbWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWx0ZXJzLkZMVF81OlxyXG4gICAgICAgIGNoYW5nZWQgPSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NSAhPSBudWxsO1xyXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NU5hbWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KHsgZmlsdGVyOiB0aGlzLmN1cnJlbnRGaWx0ZXIsIGdyb3VwOiBncm91cCB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGFsbCBmaWx0ZXJzXHJcbiAgICovXHJcbiAgY2xlYXJBbGxGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDEgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDFOYW1lID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQyID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQyTmFtZSA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MyA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0M05hbWUgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDQgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDROYW1lID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ1ID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ1TmFtZSA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIudGV4dCA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIudGV4dDIgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLnRleHQzID0gbnVsbDtcclxuICAgIHRoaXMudGV4dCA9IG51bGw7XHJcbiAgICB0aGlzLnRleHQyID0gbnVsbDtcclxuICAgIHRoaXMudGV4dDMgPSBudWxsO1xyXG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoeyBmaWx0ZXI6IHRoaXMuY3VycmVudEZpbHRlciwgZ3JvdXA6IC0xIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY2FuIGNsZWFyIGFsbCBmaWx0ZXJzIGJ1dHRvbiBjYWIgYmUgc2hvd2VkXHJcbiAgICovXHJcbiAgY2FuQ2xlYXJBbGxGaWx0ZXJzKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuICAgIGlmICh0aGlzLmNhbkZpbHRlckJ5VGV4dCkgY291bnQrKztcclxuICAgIGlmICh0aGlzLmNhbkZpbHRlckJ5VGV4dDIpIGNvdW50Kys7XHJcbiAgICBpZiAodGhpcy5jYW5GaWx0ZXJCeVRleHQzKSBjb3VudCsrO1xyXG4gICAgaWYgKHRoaXMuY2FuRmlsdGVyQnlGbHQxKSBjb3VudCsrO1xyXG4gICAgaWYgKHRoaXMuY2FuRmlsdGVyQnlGbHQyKSBjb3VudCsrO1xyXG4gICAgaWYgKHRoaXMuY2FuRmlsdGVyQnlGbHQzKSBjb3VudCsrO1xyXG4gICAgaWYgKHRoaXMuY2FuRmlsdGVyQnlGbHQ0KSBjb3VudCsrO1xyXG4gICAgaWYgKHRoaXMuY2FuRmlsdGVyQnlGbHQ1KSBjb3VudCsrO1xyXG4gICAgcmV0dXJuIGNvdW50ID4gMTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZmlsdGVyIGdyb3VwXHJcbiAgICogQHBhcmFtIGlkIDogdGhlIGZpbHRlciBpZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0RmlsdGVyR3JvdXAoaWQ6IG51bWJlcik6IEZpbHRlckdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcnMoKT8uZmluZCgobjogYW55KSA9PiBuLmdyb3VwID09PSBpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgZmlsdGVyIGJhciB1c2luZyBjdXJyZW50IHNlYXJjaCBwYXJhbXNcclxuICAgKiBAcGFyYW0gcGFyYW1zIDogc2VhcmNoIHBhcmFtc1xyXG4gICAqL1xyXG4gIHN5bmNGaWx0ZXIoKSB7XHJcbiAgICBsZXQgZyA9IHRoaXMuZ2V0RmlsdGVyR3JvdXAoRmlsdGVycy5GTFRfMSk7XHJcbiAgICBpZiAoZykge1xyXG4gICAgICBpZiAoZy5pdGVtcykge1xyXG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQxTmFtZSA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5mbHQxKSB7XHJcbiAgICAgICAgICBjb25zdCBnaSA9IGcuaXRlbXMuZmluZChuID0+IG4udmFsdWUgPT09IHRoaXMuY3VycmVudEZpbHRlci5mbHQxKTtcclxuICAgICAgICAgIGlmIChnaSkgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDFOYW1lID0gZ2kudGl0bGVTZWxlY3RlZDtcclxuICAgICAgICAgIGVsc2UgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDEgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGcgPSB0aGlzLmdldEZpbHRlckdyb3VwKEZpbHRlcnMuRkxUXzIpO1xyXG4gICAgaWYgKGcpIHtcclxuICAgICAgaWYgKGcuaXRlbXMpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0Mk5hbWUgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0Mikge1xyXG4gICAgICAgICAgY29uc3QgZ2kgPSBnLml0ZW1zLmZpbmQobiA9PiBuLnZhbHVlID09PSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0Mik7XHJcbiAgICAgICAgICBpZiAoZ2kpIHRoaXMuY3VycmVudEZpbHRlci5mbHQyTmFtZSA9IGdpLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgICBlbHNlIHRoaXMuY3VycmVudEZpbHRlci5mbHQyID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnID0gdGhpcy5nZXRGaWx0ZXJHcm91cChGaWx0ZXJzLkZMVF8zKTtcclxuICAgIGlmIChnKSB7XHJcbiAgICAgIGlmIChnLml0ZW1zKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDNOYW1lID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmZsdDMpIHtcclxuICAgICAgICAgIGNvbnN0IGdpID0gZy5pdGVtcy5maW5kKG4gPT4gbi52YWx1ZSA9PT0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDMpO1xyXG4gICAgICAgICAgaWYgKGdpKSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0M05hbWUgPSBnaS50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgICAgZWxzZSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZyA9IHRoaXMuZ2V0RmlsdGVyR3JvdXAoRmlsdGVycy5GTFRfNCk7XHJcbiAgICBpZiAoZykge1xyXG4gICAgICBpZiAoZy5pdGVtcykge1xyXG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0TmFtZSA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5mbHQ0KSB7XHJcbiAgICAgICAgICBjb25zdCBnaSA9IGcuaXRlbXMuZmluZChuID0+IG4udmFsdWUgPT09IHRoaXMuY3VycmVudEZpbHRlci5mbHQ0KTtcclxuICAgICAgICAgIGlmIChnaSkgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDROYW1lID0gZ2kudGl0bGVTZWxlY3RlZDtcclxuICAgICAgICAgIGVsc2UgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGcgPSB0aGlzLmdldEZpbHRlckdyb3VwKEZpbHRlcnMuRkxUXzUpO1xyXG4gICAgaWYgKGcpIHtcclxuICAgICAgaWYgKGcuaXRlbXMpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NU5hbWUgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NSkge1xyXG4gICAgICAgICAgY29uc3QgZ2kgPSBnLml0ZW1zLmZpbmQobiA9PiBuLnZhbHVlID09PSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NSk7XHJcbiAgICAgICAgICBpZiAoZ2kpIHRoaXMuY3VycmVudEZpbHRlci5mbHQ1TmFtZSA9IGdpLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgICBlbHNlIHRoaXMuY3VycmVudEZpbHRlci5mbHQ1ID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRleHQgPSB0aGlzLmN1cnJlbnRGaWx0ZXIudGV4dDtcclxuICAgIHRoaXMudGV4dDIgPSB0aGlzLmN1cnJlbnRGaWx0ZXIudGV4dDI7XHJcbiAgICB0aGlzLnRleHQzID0gdGhpcy5jdXJyZW50RmlsdGVyLnRleHQzO1xyXG5cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgZnhMYXlvdXQ9XCJyb3dcIiAgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiICBjbGFzcz1cImZpbHRlcmJveFwiXHJcbltuZ0NsYXNzXT1cInsnZmlsdGVyYm94LWZpbHRlcmVkJzogY3VycmVudEZpbHRlci5maWx0ZXJlZCgpfVwiPlxyXG4gIDxkaXYgZnhGbGV4PVwiMTAwXCIgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuXCI+XHJcbiAgICBAaWYgKGNhbkZpbHRlckJ5VGV4dCgpIHx8IGNhbkZpbHRlckJ5VGV4dDIoKSB8fCBjYW5GaWx0ZXJCeVRleHQzKCkpIHtcclxuICAgIDxkaXYgZnhGbGV4Lmx0LXNtPVwiMTAwXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbCBzdHlsZT1cInBhZGRpbmc6NHB4O1wiPlxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlUZXh0KCkpIHtcclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgW25nU3R5bGVdPVwieyd3aWR0aCc6IHRleHRMZW5ndGgoKSA/PyAnMTAwJSd9XCIgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZSgpXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5DZXJjYSBwZXIge3t0ZXh0TmFtZSgpfX0uLi48L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBuYW1lPVwiX3RleHRcIiBbKG5nTW9kZWwpXT1cInRleHRcIiBtYXhsZW5ndGg9XCIxMDBcIiAjX3RleHQ9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgKGtleXVwLkVudGVyKT1cImFwcGx5VGV4dEZpbHRlcigpXCIgbWF0VG9vbHRpcD1cIlByZW1pIElOVklPIHBlciBhdnZpYXJlIGxhIHJpY2VyY2FcIj5cclxuICAgICAgICAgIEBpZiAodGV4dCkge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlB1bGlzY2lcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidGV4dCA9ICcnOyBhcHBseVRleHRGaWx0ZXIoKTtcIiBtYXRUb29sdGlwPVwiQXp6ZXJhXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoc2hvd1RleHRTZWFyY2hCdXR0b24oKSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiVHJvdmFcIiAoY2xpY2spPVwiYXBwbHlUZXh0RmlsdGVyKCk7XCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlRyb3ZhXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeVRleHQyKCkpIHtcclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgW25nU3R5bGVdPVwieyd3aWR0aCc6IHRleHQyTGVuZ3RoKCkgPz8gJzEwMCUnfVwiIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+Q2VyY2EgcGVyIHt7dGV4dDJOYW1lKCl9fS4uLjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IG5hbWU9XCJfdGV4dDJcIiBbKG5nTW9kZWwpXT1cInRleHQyXCIgbWF4bGVuZ3RoPVwiMTAwXCIgI190ZXh0Mj1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAoa2V5dXAuRW50ZXIpPVwiYXBwbHlUZXh0RmlsdGVyKClcIiBtYXRUb29sdGlwPVwiUHJlbWkgSU5WSU8gcGVyIGF2dmlhcmUgbGEgcmljZXJjYVwiPlxyXG4gICAgICAgICAgQGlmICh0ZXh0Mikge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlB1bGlzY2lcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidGV4dDIgPSAnJzsgYXBwbHlUZXh0RmlsdGVyKCk7XCIgbWF0VG9vbHRpcD1cIkF6emVyYVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeVRleHQzKCkpIHtcclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgW25nU3R5bGVdPVwieyd3aWR0aCc6IHRleHQzTGVuZ3RoKCkgPz8gJzEwMCUnfVwiIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+Q2VyY2EgcGVyIHt7dGV4dDNOYW1lKCl9fS4uLjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IG5hbWU9XCJfdGV4dDNcIiBbKG5nTW9kZWwpXT1cInRleHQzXCIgbWF4bGVuZ3RoPVwiMTAwXCIgI190ZXh0Mz1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAoa2V5dXAuRW50ZXIpPVwiYXBwbHlUZXh0RmlsdGVyKClcIiBtYXRUb29sdGlwPVwiUHJlbWkgSU5WSU8gcGVyIGF2dmlhcmUgbGEgcmljZXJjYVwiPlxyXG4gICAgICAgICAgQGlmICh0ZXh0Mykge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlB1bGlzY2lcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidGV4dDMgPSAnJzsgYXBwbHlUZXh0RmlsdGVyKCk7XCIgbWF0VG9vbHRpcD1cIkF6emVyYVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICA8ZGl2IGZ4RmxleC5sdC1zbT1cIjEwMFwiPlxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsID5cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5Rmx0MSgpICYmIGZsdDEgJiYgZmx0MS5hY3Rpb24pIHtcclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b25cclxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZmx0MS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQxLnRpdGxlXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmbHQxLnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDEudGl0bGVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlGaWx0ZXJBY3Rpb24oMSwgZmFsc2UpXCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIj5cclxuICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgIEBpZiAoIWN1cnJlbnRGaWx0ZXIuZmx0MSkge1xyXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiAyMDAgIWltcG9ydGFudFwiPnt7Zmx0MS50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJjdXJyZW50RmlsdGVyLmZsdDFOYW1lIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgQGlmIChjdXJyZW50RmlsdGVyLmZsdDEpIHtcclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICBtYXRUb29sdGlwPVwiQXp6ZXJhXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIidBenplcmEnXCIgKGNsaWNrKT1cImFwcGx5RmlsdGVyQWN0aW9uKDEsIHRydWUpO1wiIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH0gQGVsc2UgaWYgKGNhbkZpbHRlckJ5Rmx0MSgpICYmIGZsdDEgJiYgZmx0MS5pdGVtcykge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBbbWF0VG9vbHRpcF09XCJmbHQxLnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDEudGl0bGVcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmbHQxLnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDEudGl0bGVcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUFwcGx5RmlsdGVyRmx0MVwiXHJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiID5cclxuICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQxKSB7XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiAyMDAgIWltcG9ydGFudFwiPnt7Zmx0MS50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0MU5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgIH0gICAgICAgICAgXHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLW1lbnUtZHJvcC1kb3duXCI+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51QXBwbHlGaWx0ZXJGbHQxPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICBAZm9yIChmIG9mIGZsdDEuaXRlbXM7IHRyYWNrIGYpIHtcclxuXHJcbiAgICAgICAgICAgIEBpZiAoZi5kaXZpZGVyKSB7XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYXBwbHlGaWx0ZXIoZilcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImYuZGVzY3JpcHRpb25cIiBzdHlsZT1cIm1pbi13aWR0aDogMjAwcHhcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImYudGl0bGUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IG1pbi13aWR0aDogMjAwcHg7IHBhZGRpbmc6IDRweCA0cHggMCA0cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjbGVhckZpbHRlcihmbHQxLml0ZW1zWzBdLmdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cIkF6emVyYVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJmb250LXNpemU6MThweDsgaGVpZ2h0OiAxOHB4OyB3aWR0aDoxOHB4O1wiPmNsZWFyPC9tYXQtaWNvbj4gQXp6ZXJhXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeUZsdDIoKSAmJiBmbHQyICYmIGZsdDIuYWN0aW9uKSB7XHJcbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImZsdDIudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0Mi50aXRsZVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0Mi50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQyLnRpdGxlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVyQWN0aW9uKDIsIGZhbHNlKVwiIHN0eWxlPVwiaGVpZ2h0OjU2cHg7XCI+XHJcbiAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICBAaWYgKCFjdXJyZW50RmlsdGVyLmZsdDIpIHtcclxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDIudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwiY3VycmVudEZpbHRlci5mbHQyTmFtZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIEBpZiAoY3VycmVudEZpbHRlci5mbHQyKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAgbWF0VG9vbHRpcD1cIkF6emVyYVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCInQXp6ZXJhJ1wiIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbigyLCB0cnVlKTtcIiBjbGFzcz1cInNtYWxsLWljb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeUZsdDIoKSAmJiBmbHQyICYmIGZsdDIuaXRlbXMpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW21hdFRvb2x0aXBdPVwiZmx0Mi50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQyLnRpdGxlXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0Mi50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQyLnRpdGxlXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVBcHBseUZpbHRlckZsdDJcIlxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIj5cclxuICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQyKSB7XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiAyMDAgIWltcG9ydGFudFwiPnt7Zmx0Mi50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0Mk5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tbWVudS1kcm9wLWRvd25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI21lbnVBcHBseUZpbHRlckZsdDI9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGYgb2YgZmx0Mi5pdGVtczsgdHJhY2sgZikge1xyXG5cclxuICAgICAgICAgICAgQGlmIChmLmRpdmlkZXIpIHtcclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhcHBseUZpbHRlcihmKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZi5kZXNjcmlwdGlvblwiIHN0eWxlPVwibWluLXdpZHRoOiAyMDBweFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZi50aXRsZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgbWluLXdpZHRoOiAyMDBweDsgcGFkZGluZzogNHB4IDRweCAwIDRweDtcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyKGZsdDIuaXRlbXNbMF0uZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiQXp6ZXJhXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZToxOHB4OyBoZWlnaHQ6IDE4cHg7IHdpZHRoOjE4cHg7XCI+Y2xlYXI8L21hdC1pY29uPiBBenplcmFcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5Rmx0MygpICYmIGZsdDMgJiYgZmx0My5hY3Rpb24pIHtcclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b25cclxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZmx0My50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQzLnRpdGxlXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmbHQzLnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDMudGl0bGVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlGaWx0ZXJBY3Rpb24oMywgZmFsc2UpXCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIj5cclxuICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgIEBpZiAoIWN1cnJlbnRGaWx0ZXIuZmx0Mykge1xyXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiAyMDAgIWltcG9ydGFudFwiPnt7Zmx0My50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJjdXJyZW50RmlsdGVyLmZsdDNOYW1lIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgQGlmIChjdXJyZW50RmlsdGVyLmZsdDMpIHtcclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICBtYXRUb29sdGlwPVwiQXp6ZXJhXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIidBenplcmEnXCIgKGNsaWNrKT1cImFwcGx5RmlsdGVyQWN0aW9uKDMsIHRydWUpO1wiIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5Rmx0MygpICYmIGZsdDMgJiYgZmx0My5pdGVtcykge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBbbWF0VG9vbHRpcF09XCJmbHQzLnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDMudGl0bGVcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmbHQzLnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDMudGl0bGVcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUFwcGx5RmlsdGVyRmx0M1wiXHJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiPlxyXG4gICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICBAaWYgKCFjdXJyZW50RmlsdGVyLmZsdDMpIHtcclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50XCI+e3tmbHQzLnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwiY3VycmVudEZpbHRlci5mbHQzTmFtZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1tZW51LWRyb3AtZG93blwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudUFwcGx5RmlsdGVyRmx0Mz1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgQGZvciAoZiBvZiBmbHQzLml0ZW1zOyB0cmFjayBmKSB7XHJcblxyXG4gICAgICAgICAgICBAaWYgKGYuZGl2aWRlcikge1xyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFwcGx5RmlsdGVyKGYpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJtaW4td2lkdGg6IDIwMHB4XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmLnRpdGxlIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBtaW4td2lkdGg6IDIwMHB4OyBwYWRkaW5nOiA0cHggNHB4IDAgNHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoZmx0My5pdGVtc1swXS5ncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJBenplcmFcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOjE4cHg7IGhlaWdodDogMThweDsgd2lkdGg6MThweDtcIj5jbGVhcjwvbWF0LWljb24+IEF6emVyYVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQ0KCkgJiYgZmx0NCAmJiBmbHQ0LmFjdGlvbikge1xyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmbHQ0LnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDQudGl0bGVcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDQudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0NC50aXRsZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbig0LCBmYWxzZSlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiPlxyXG4gICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQ0KSB7XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50XCI+e3tmbHQ0LnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0NE5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICBAaWYgKGN1cnJlbnRGaWx0ZXIuZmx0NCkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gIG1hdFRvb2x0aXA9XCJBenplcmFcIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJ0F6emVyYSdcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXJBY3Rpb24oNCwgdHJ1ZSk7XCIgY2xhc3M9XCJzbWFsbC1pY29uLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQ0KCkgJiYgZmx0NCAmJiBmbHQ0Lml0ZW1zKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIFttYXRUb29sdGlwXT1cImZsdDQudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0NC50aXRsZVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDQudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0NC50aXRsZVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51QXBwbHlGaWx0ZXJGbHQ0XCJcclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwiaGVpZ2h0OjU2cHg7XCI+XHJcbiAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgIEBpZiAoIWN1cnJlbnRGaWx0ZXIuZmx0NCkge1xyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDQudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJjdXJyZW50RmlsdGVyLmZsdDROYW1lIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLW1lbnUtZHJvcC1kb3duXCI+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51QXBwbHlGaWx0ZXJGbHQ0PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICBAZm9yIChmIG9mIGZsdDQuaXRlbXM7IHRyYWNrIGYpIHtcclxuXHJcbiAgICAgICAgICAgIEBpZiAoZi5kaXZpZGVyKSB7XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYXBwbHlGaWx0ZXIoZilcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImYuZGVzY3JpcHRpb25cIiBzdHlsZT1cIm1pbi13aWR0aDogMjAwcHhcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImYudGl0bGUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IG1pbi13aWR0aDogMjAwcHg7IHBhZGRpbmc6IDRweCA0cHggMCA0cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjbGVhckZpbHRlcihmbHQ0Lml0ZW1zWzBdLmdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cIkF6emVyYVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJmb250LXNpemU6MThweDsgaGVpZ2h0OiAxOHB4OyB3aWR0aDoxOHB4O1wiPmNsZWFyPC9tYXQtaWNvbj4gQXp6ZXJhXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeUZsdDUoKSAmJiBmbHQ1ICYmIGZsdDUuYWN0aW9uKSB7XHJcbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImZsdDUudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0NS50aXRsZVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0NS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQ1LnRpdGxlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVyQWN0aW9uKDUsIGZhbHNlKVwiIHN0eWxlPVwiaGVpZ2h0OjU2cHg7XCI+XHJcbiAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICBAaWYgKCFjdXJyZW50RmlsdGVyLmZsdDUpIHtcclxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDUudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwiY3VycmVudEZpbHRlci5mbHQ1TmFtZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIEBpZiAoY3VycmVudEZpbHRlci5mbHQ1KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAgbWF0VG9vbHRpcD1cIkF6emVyYVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCInQXp6ZXJhJ1wiIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbig1LCB0cnVlKTtcIiBjbGFzcz1cInNtYWxsLWljb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeUZsdDUoKSAmJiBmbHQ1ICYmIGZsdDUuaXRlbXMpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW21hdFRvb2x0aXBdPVwiZmx0NS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQ1LnRpdGxlXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0NS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQ1LnRpdGxlXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVBcHBseUZpbHRlckZsdDVcIlxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIj5cclxuICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQ1KSB7XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiAyMDAgIWltcG9ydGFudFwiPnt7Zmx0NS50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0NU5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tbWVudS1kcm9wLWRvd25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI21lbnVBcHBseUZpbHRlckZsdDU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGYgb2YgZmx0NS5pdGVtczsgdHJhY2sgZikge1xyXG5cclxuICAgICAgICAgICAgQGlmIChmLmRpdmlkZXIpIHtcclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhcHBseUZpbHRlcihmKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZi5kZXNjcmlwdGlvblwiIHN0eWxlPVwibWluLXdpZHRoOiAyMDBweFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZi50aXRsZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgbWluLXdpZHRoOiAyMDBweDsgcGFkZGluZzogNHB4IDRweCAwIDRweDtcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyKGZsdDUuaXRlbXNbMF0uZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiQXp6ZXJhXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZToxOHB4OyBoZWlnaHQ6IDE4cHg7IHdpZHRoOjE4cHg7XCI+Y2xlYXI8L21hdC1pY29uPiBBenplcmFcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2PlxyXG4gICAgQGlmIChjdXJyZW50RmlsdGVyLmZpbHRlcmVkKCkgJiYgY2FuQ2xlYXJBbGxGaWx0ZXJzKCkpIHtcclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQXp6ZXJhIHR1dHRpIGkgZmlsdHJpXCIgYXR0ci5hcmlhLWxhYmVsPVwiQXp6ZXJhIHR1dHRpIGkgZmlsdHJpXCJcclxuICAgICAgIChjbGljayk9XCJjbGVhckFsbEZpbHRlcnMoKVwiPlxyXG4gICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -1722,7 +1722,7 @@ class FilterBarComponent {
|
|
|
1722
1722
|
initializeFilters() {
|
|
1723
1723
|
if (!this.filters())
|
|
1724
1724
|
return;
|
|
1725
|
-
this.filters()
|
|
1725
|
+
this.filters()?.forEach((n) => {
|
|
1726
1726
|
switch (n.group) {
|
|
1727
1727
|
case Filters.FLT_1:
|
|
1728
1728
|
this.flt1 = n;
|
|
@@ -1923,7 +1923,7 @@ class FilterBarComponent {
|
|
|
1923
1923
|
* @param id : the filter id
|
|
1924
1924
|
*/
|
|
1925
1925
|
getFilterGroup(id) {
|
|
1926
|
-
return this.filters()
|
|
1926
|
+
return this.filters()?.find((n) => n.group === id);
|
|
1927
1927
|
}
|
|
1928
1928
|
/**
|
|
1929
1929
|
* Update filter bar using current search params
|