@ohioepa/oepa-ui-lib 1.4.2 → 1.4.4
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.
- package/esm2022/lib/oepa-reference/oepa-reference.service.mjs +2 -2
- package/esm2022/lib/table/p-table/p-table.component.mjs +2 -2
- package/esm2022/lib/table/table.component.mjs +2 -2
- package/fesm2022/ohioepa-oepa-ui-lib.mjs +3 -3
- package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -1
- package/ohioepa-oepa-ui-lib-1.4.4.tgz +0 -0
- package/package.json +1 -1
- package/ohioepa-oepa-ui-lib-1.4.2.tgz +0 -0
|
@@ -652,7 +652,7 @@ export class TableComponent {
|
|
|
652
652
|
toggleRowSelection(row) {
|
|
653
653
|
const selectedRows = [];
|
|
654
654
|
row.selected = !row.selected;
|
|
655
|
-
this.
|
|
655
|
+
this.rows.forEach((dr) => {
|
|
656
656
|
if (row.privateId === dr.privateId) {
|
|
657
657
|
dr.selected = row.selected;
|
|
658
658
|
}
|
|
@@ -802,4 +802,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
802
802
|
}], totalRow: [{
|
|
803
803
|
type: Input
|
|
804
804
|
}] } });
|
|
805
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkIvRSxNQUFNLE9BQU8sY0FBYztJQTJJRTtJQUNqQjtJQUNBO0lBQ0E7SUE3SUgsYUFBYSxHQUFZLEtBQUssQ0FBQztJQUMvQixVQUFVLEdBQTJCLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEdBQXdCLEVBQUUsQ0FBQztJQUMvQixrQkFBa0IsR0FBRyxDQUFDLENBQUM7SUFDdkIsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUNuQixpQkFBaUIsR0FBd0IsS0FBSyxDQUFDO0lBRS9DLFdBQVcsR0FBMkIsRUFBRSxDQUFDO0lBQ3pDLGFBQWEsR0FBMkIsRUFBRSxDQUFDO0lBQzNDLGFBQWEsR0FBa0IsRUFBRSxDQUFDO0lBQ2xDLEtBQUssR0FBd0IsRUFBRSxDQUFDO0lBQy9CLE9BQU8sR0FBb0IsRUFBRSxDQUFDO0lBQzlCLGNBQWMsR0FBMkIsQ0FBQztZQUNoRCxZQUFZLEVBQUUsRUFBRTtZQUNoQixRQUFRLEVBQUUsU0FBUztTQUNwQixDQUFDLENBQUM7SUFFSSxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFFdkIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUV4QixRQUFRLEdBQXNCO1FBQ25DLElBQUksRUFBRSxDQUFDO1FBQ1AsWUFBWSxFQUFFLEVBQUU7UUFDaEIsT0FBTyxFQUFFLENB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O3NCQUE3QixNQUFNO2dCQUNVLFdBQVc7c0JBQTNCLE1BQU07Z0JBQ1UsZ0JBQWdCO3NCQUFoQyxNQUFNO2dCQTZCSSxJQUFJO3NCQURkLEtBQUs7Z0JBdUJHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IE9lcGFUYWJsZSB9IGZyb20gJy4vb2VwYS10YWJsZSc7XG5pbXBvcnQgeyBPZXBhVGFibGVDb25maWcgfSBmcm9tICcuL29lcGEtdGFibGUtY29uZmlnJztcbmltcG9ydCB7IE9lcGFUYWJsZUhlYWRlciB9IGZyb20gJy4vb2VwYS10YWJsZS1oZWFkZXInO1xuaW1wb3J0IHsgT2VwYVRhYmxlQ29sdW1uIH0gZnJvbSAnLi9vZXBhLXRhYmxlLWNvbHVtbic7XG5pbXBvcnQgeyBPZXBhVGFibGVSb3cgfSBmcm9tICcuL29lcGEtdGFibGUtcm93JztcbmltcG9ydCB7IE9lcGFUYWJsZUNlbGwgfSBmcm9tICcuL29lcGEtdGFibGUtY2VsbCc7XG5pbXBvcnQgeyBPZXBhVGFibGVGaWx0ZXIgfSBmcm9tICcuL29lcGEtdGFibGUtZmlsdGVyJztcbmltcG9ydCB7IE9lcGFUYWJsZVBhZ2VJbmZvIH0gZnJvbSAnLi9vZXBhLXRhYmxlLXBhZ2UtaW5mbyc7XG5pbXBvcnQgeyBPZXBhVGFibGVDZWxsQ2xpY2tFdmVudCB9IGZyb20gJy4vb2VwYS10YWJsZS1jZWxsLWNsaWNrLWV2ZW50JztcblxuaW1wb3J0IHsgT2VwYUFjdGlvbkV2ZW50IH0gZnJvbSAnLi4vYWN0aW9uLWJ0bi9vZXBhLWFjdGlvbi1ldmVudCc7XG5cbmltcG9ydCB7IFRhYmxlRXhwb3J0U2VydmljZSB9IGZyb20gJy4vdGFibGUtZXhwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT2VwYVRlbXBsYXRlSW5mbyB9IGZyb20gJ0BvaGlvZXBhL29lcGEtY29tbW9uLWxpYic7XG5pbXBvcnQgeyBUYWJsZVNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2VwYVRhYmxlU29ydENyaXRlcmlvbiB9IGZyb20gJy4vb2VwYS10YWJsZS1zb3J0LWNyaXRlcmlvbic7XG5pbXBvcnQgeyBQYWdlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wYWdpbmF0aW9uJztcbmltcG9ydCB7IE9lcGFGaWxlVXRpbFNlcnZpY2UgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWNvbW1vbi1saWInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIHNob3dGaWx0ZXJSb3c6IEJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGhlYWRlclJvd3M6IEFycmF5PE9lcGFUYWJsZUhlYWRlcj4gPSBbXTtcbiAgcHVibGljIHJvd3M6IEFycmF5PE9lcGFUYWJsZVJvdz4gPSBbXTtcbiAgcHVibGljIHZpc2libGVDb2x1bW5Db3VudCA9IDA7XG4gIHB1YmxpYyBhbGxDb2x1bW5Db3VudCA9IDA7XG4gIHB1YmxpYyBleHBvcnRWaXNpYmxlT25seTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBkYXRhQ29sdW1uczogQXJyYXk8T2VwYVRhYmxlQ29sdW1uPiA9IFtdO1xuICBwdWJsaWMgaGlkZGVuQ29sdW1uczogQXJyYXk8T2VwYVRhYmxlQ29sdW1uPiA9IFtdO1xuICBwdWJsaWMgY29sdW1uSGVhZGVyczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBwdWJsaWMgX2RhdGE6IEFycmF5PE9lcGFUYWJsZVJvdz4gPSBbXTtcbiAgcHJpdmF0ZSBfY29uZmlnOiBPZXBhVGFibGVDb25maWcgPSB7fTtcbiAgcHJpdmF0ZSBjdXJyZW50RmlsdGVyczogQXJyYXk8T2VwYVRhYmxlRmlsdGVyPiA9IFt7XG4gICAgZmlsdGVyU3RyaW5nOiAnJyxcbiAgICBjb2x1bW5JZDogdW5kZWZpbmVkXG4gIH1dO1xuXG4gIHB1YmxpYyBkYXRhSGFzRGV0YWlscyA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd0FsbERldGFpbHMgPSBmYWxzZTtcblxuICBwdWJsaWMgYWxsUm93c1NlbGVjdGVkID0gZmFsc2U7XG5cbiAgcHVibGljIHBhZ2VJbmZvOiBPZXBhVGFibGVQYWdlSW5mbyA9IHtcbiAgICBwYWdlOiAxLFxuICAgIGl0ZW1zUGVyUGFnZTogMTAsXG4gICAgbWF4U2l6ZTogNSxcbiAgICBudW1QYWdlczogMSxcbiAgICBsZW5ndGg6IDBcbiAgfTtcbiAgcHVibGljIGN1cnJlbnRQYWdlID0gMTtcbiAgcHVibGljIHBhZ2luYXRpb25PbiA9IHRydWU7XG5cbiAgQElucHV0KCkgdGFibGVJZCA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY29uZmlnKGNvbmY6IE9lcGFUYWJsZUNvbmZpZykge1xuICAgIGlmICghY29uZi5jbGFzc05hbWUpIHtcbiAgICAgIGNvbmYuY2xhc3NOYW1lID0gJ3RhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWQnO1xuICAgIH1cbiAgICBpZiAoY29uZi5jbGFzc05hbWVzKSB7XG4gICAgICBjb25mLmNsYXNzTmFtZSA9IGNvbmYuY2xhc3NOYW1lcy5qb2luKCcgJyk7XG4gICAgfVxuICAgIGlmIChjb25mLnJvd3NQZXJQYWdlKSB7XG4gICAgICB0aGlzLnBhZ2VJbmZvLml0ZW1zUGVyUGFnZSA9IGNvbmYucm93c1BlclBhZ2U7XG4gICAgfVxuICAgIHRoaXMuZXhwb3J0VmlzaWJsZU9ubHkgPSBjb25mLmV4cG9ydFZpc2libGVPbmx5O1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmY7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBPZXBhVGFibGVDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNvbXBsZXhIZWFkZXIoaGRyczogQXJyYXk8T2VwYVRhYmxlSGVhZGVyPikge1xuICAgIHRoaXMucmVzZXRIZWFkZXJzKCk7XG4gICAgaWYgKGhkcnMgJiYgaGRycy5sZW5ndGgpIHtcbiAgICAgIGhkcnMuZm9yRWFjaCgoaGRyOiBPZXBhVGFibGVIZWFkZXIpID0+IHtcbiAgICAgICAgdGhpcy5oZWFkZXJSb3dzLnB1c2godGhpcy5leHRyYWN0SW5uZXJDb2x1bW5zKGhkci5jb2x1bW5zKSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29sdW1uSGVhZGVycyA9IHRoaXMuZXh0cmFjdENvbHVtbkhlYWRlcnModGhpcy5oZWFkZXJSb3dzKTtcbiAgICAgIHRoaXMuZGF0YUNvbHVtbnMgPSB0aGlzLmV4dHJhY3REYXRhQ29sdW1ucyh0aGlzLmhlYWRlclJvd3MpO1xuICAgICAgdGhpcy5pbml0aWFsaXplSGlkZGVuQ29sdW1ucyh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGhlYWRlcihoZHI6IE9lcGFUYWJsZUhlYWRlcikge1xuICAgIHRoaXMucmVzZXRIZWFkZXJzKCk7XG4gICAgaWYgKGhkci5jb2x1bW5zICYmIGhkci5jb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaGVhZGVyUm93cy5wdXNoKHRoaXMuZXh0cmFjdElubmVyQ29sdW1ucyhoZHIuY29sdW1ucykpO1xuICAgIH1cbiAgICB0aGlzLmNvbHVtbkhlYWRlcnMgPSB0aGlzLmV4dHJhY3RDb2x1bW5IZWFkZXJzKHRoaXMuaGVhZGVyUm93cyk7XG4gICAgdGhpcy5kYXRhQ29sdW1ucyA9IHRoaXMuZXh0cmFjdERhdGFDb2x1bW5zKHRoaXMuaGVhZGVyUm93cyk7XG4gICAgdGhpcy5pbml0aWFsaXplSGlkZGVuQ29sdW1ucyhmYWxzZSk7XG4gIH1cblxuICBASW5wdXQoKSBjdXN0b21CdG5MYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBASW5wdXQoKSBjdXN0b21CdG5WaXNpYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGN1c3RvbUJ0bkVuYWJsZWQgPSBmYWxzZTtcblxuICAvLyBPdXRwdXRzIChFdmVudHMpXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2VsbENsaWNrZWQ6IEV2ZW50RW1pdHRlcjxPZXBhVGFibGVDZWxsQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgYWN0aW9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPE9lcGFBY3Rpb25FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcm93U2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxBcnJheTxPZXBhVGFibGVSb3c+PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjdXN0b21CdG5DbGlja2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSByZXNldEhlYWRlcnMoKSB7XG4gICAgdGhpcy5oZWFkZXJSb3dzID0gW107XG4gICAgdGhpcy5jb2x1bW5IZWFkZXJzID0gW107XG4gICAgdGhpcy5kYXRhQ29sdW1ucyA9IFtdO1xuICAgIHRoaXMuaGlkZGVuQ29sdW1ucyA9IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplSGlkZGVuQ29sdW1ucyhjb21wbGV4SGVhZGVyOiBib29sZWFuKSB7XG4gICAgdGhpcy52aXNpYmxlQ29sdW1uQ291bnQgPSAwO1xuICAgIHRoaXMuYWxsQ29sdW1uQ291bnQgPSAwO1xuICAgIHRoaXMuZGF0YUNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICBpZiAoY29tcGxleEhlYWRlciAmJiAoY29sdW1uPy5oaWRkZW4gPT09IHRydWUgfHwgY29sdW1uPy5oaWRkZW4gPT09IGZhbHNlKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdkaXNhYmxpbmcgaGlkZGVuIGF0dHJpYnV0ZSBmb3IgY29sdW1uOiAnICsgY29sdW1uLmlkICtcbiAgICAgICAgICAnLiBIaWRkZW4gY29sdW1ucyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgY29tcGxleCBoZWFkZXJzICh5ZXQpLicpO1xuICAgICAgICBjb2x1bW4uaGlkZGVuID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnZpc2libGVDb2x1bW5Db3VudCsrO1xuICAgICAgfSBlbHNlIGlmIChjb2x1bW4/LmhpZGRlbiA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmhpZGRlbkNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52aXNpYmxlQ29sdW1uQ291bnQrKztcbiAgICAgIH1cbiAgICAgIHRoaXMuYWxsQ29sdW1uQ291bnQrKztcbiAgICB9KTtcbiAgICAvLyBjb25zb2xlLmxvZygndmlzaWJsZUNvbHVtbkNvdW50ID0gJyArIHRoaXMudmlzaWJsZUNvbHVtbkNvdW50KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0YSh2YWx1ZXM6IEFycmF5PE9lcGFUYWJsZVJvdz4pIHtcbiAgICBpZiAoIXRoaXMuX2RhdGEgfHwgdGhpcy5fZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLnRhYmxlU2VydmljZS5nZXREYXRhKHRoaXMudGFibGVJZCkgfHwgW107XG4gICAgfVxuICAgIGlmICh2YWx1ZXMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhbHVlc1tpXS5wcml2YXRlSWQgPSBpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2RhdGEgJiYgdGhpcy5fZGF0YS5sZW5ndGggIT09IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy50YWJsZVNlcnZpY2UuY2xlYXJQYWdlSW5mbyh0aGlzLnRhYmxlSWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZXM7XG4gICAgdGhpcy50YWJsZVNlcnZpY2Uuc2V0RGF0YSh0aGlzLnRhYmxlSWQsIHRoaXMuX2RhdGEpO1xuICAgIHRoaXMudXBkYXRlVGFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBBcnJheTxPZXBhVGFibGVSb3c+IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5tYXAoeCA9PiBPYmplY3QuYXNzaWduKHt9LCB4KSk7XG4gIH1cblxuICBASW5wdXQoKSB0b3RhbFJvdzogT2VwYVRhYmxlUm93IHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgdGFibGVTZXJ2aWNlOiBUYWJsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YWJsZUV4cG9ydFNlcnZpY2U6IFRhYmxlRXhwb3J0U2VydmljZSxcbiAgICBwcml2YXRlIGZpbGVVdGlsU2VydmljZTogT2VwYUZpbGVVdGlsU2VydmljZSkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wYWdpbmF0aW9uT24gPSAhdGhpcy5fY29uZmlnLmRpc2FibGVQYWdpbmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0SW5uZXJDb2x1bW5zKGlubmVyOiBBcnJheTxPZXBhVGFibGVDb2x1bW4+KTogT2VwYVRhYmxlSGVhZGVyIHtcbiAgICBjb25zdCBoZWFkZXI6IE9lcGFUYWJsZUhlYWRlciA9IHsgY29sdW1uczogW10gfTtcbiAgICBpbm5lci5mb3JFYWNoKCh2YWx1ZTogT2VwYVRhYmxlQ29sdW1uKSA9PiB7XG4gICAgICBjb25zdCBjb2x1bW4gPSBoZWFkZXIuY29sdW1ucy5maW5kKChjb2w6IE9lcGFUYWJsZUNvbHVtbikgPT4gY29sLmlkID09PSB2YWx1ZS5pZCk7XG4gICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgIC8vIG92ZXJ3cml0ZSByZXBlYXRlZCBjb2x1bW5cbiAgICAgICAgT2JqZWN0LmFzc2lnbihjb2x1bW4sIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmICghY29sdW1uKSB7XG4gICAgICAgIGhlYWRlci5jb2x1bW5zLnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBoZWFkZXI7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RDb2x1bW5IZWFkZXJzKGhlYWRlclJvd3M6IEFycmF5PE9lcGFUYWJsZUhlYWRlcj4pOiBBcnJheTxzdHJpbmc+IHtcbiAgICBjb25zdCBoZWFkZXJzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgbGV0IHJvd0luZGV4ID0gMDtcbiAgICBjb25zdCBjaGlsZENvbHVtbnM6IGFueSA9IHt9O1xuICAgIGhlYWRlclJvd3MuZm9yRWFjaCgoaGRyOiBPZXBhVGFibGVIZWFkZXIpID0+IHtcbiAgICAgIGxldCBjb2xJbmRleCA9IDA7XG4gICAgICBoZHIuY29sdW1ucy5mb3JFYWNoKChjb2x1bW46IE9lcGFUYWJsZUNvbHVtbikgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygncm93SW5kZXg9JyArIHJvd0luZGV4ICsgJywgY29sSW5kZXg9JyArIGNvbEluZGV4ICsgJywgY29sdW1uPScgKyBKU09OLnN0cmluZ2lmeShjb2x1bW4pKTtcbiAgICAgICAgaWYgKHJvd0luZGV4ID09PSAwKSB7XG4gICAgICAgICAgaGVhZGVycy5wdXNoKGNvbHVtbi50aXRsZSk7XG4gICAgICAgICAgaWYgKGNvbHVtbi5jb2xzcGFuKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBjb3VudCA9IDE7IGNvdW50IDwgY29sdW1uLmNvbHNwYW47IGNvdW50KyspIHtcbiAgICAgICAgICAgICAgaGVhZGVycy5wdXNoKCcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNvbHVtbi5yb3dzcGFuKSB7XG4gICAgICAgICAgICBjaGlsZENvbHVtbnNbY29sSW5kZXhdID0gY29sdW1uLnJvd3NwYW4gLSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3aGlsZSAoY2hpbGRDb2x1bW5zW2NvbEluZGV4XSAmJiBjaGlsZENvbHVtbnNbY29sSW5kZXhdID4gMCkge1xuICAgICAgICAgICAgY2hpbGRDb2x1bW5zW2NvbEluZGV4XS0tO1xuICAgICAgICAgICAgY29sSW5kZXgrKztcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVhZGVyc1tjb2xJbmRleF0gKz0gJyAnICsgY29sdW1uLnRpdGxlO1xuICAgICAgICAgIGlmIChjb2x1bW4uY29sc3Bhbikge1xuICAgICAgICAgICAgZm9yIChsZXQgY291bnQgPSAxOyBjb3VudCA8IGNvbHVtbi5jb2xzcGFuOyBjb3VudCsrKSB7XG4gICAgICAgICAgICAgIGNvbEluZGV4Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbEluZGV4Kys7XG4gICAgICB9KTtcbiAgICAgIHJvd0luZGV4Kys7XG4gICAgfSk7XG4gICAgLy8gY29uc29sZS5sb2coJ2hlYWRlcnMgPSAnICsgSlNPTi5zdHJpbmdpZnkoaGVhZGVycykpO1xuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cblxuICBwcml2YXRlIGV4dHJhY3REYXRhQ29sdW1ucyhoZWFkZXJSb3dzOiBBcnJheTxPZXBhVGFibGVIZWFkZXI+KTogQXJyYXk8T2VwYVRhYmxlQ29sdW1uPiB7XG4gICAgY29uc3QgZGF0YUNvbHVtbnM6IEFycmF5PE9lcGFUYWJsZUNvbHVtbj4gPSBbXTtcbiAgICBsZXQgcm93SW5kZXggPSAwO1xuICAgIGNvbnN0IGNoaWxkQ29sdW1uczphbnkgPSB7fTtcbiAgICBoZWFkZXJSb3dzLmZvckVhY2goKGhkcjogT2VwYVRhYmxlSGVhZGVyKSA9PiB7XG4gICAgICBsZXQgY29sSW5kZXggPSAwO1xuICAgICAgaGRyLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBPZXBhVGFibGVDb2x1bW4pID0+IHtcbiAgICAgICAgaWYgKHJvd0luZGV4ID09PSAwKSB7XG4gICAgICAgICAgaWYgKGNvbHVtbi5jb2xzcGFuICYmIGNvbHVtbi5jb2xzcGFuID4gMSkge1xuICAgICAgICAgICAgZm9yIChsZXQgY291bnQgPSAwOyBjb3VudCA8IGNvbHVtbi5jb2xzcGFuOyBjb3VudCsrKSB7XG4gICAgICAgICAgICAgIGRhdGFDb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogJydcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb2xJbmRleCArPSAoY29sdW1uLmNvbHNwYW4gLSAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0YUNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5yb3dzcGFuKSB7XG4gICAgICAgICAgICAgIGNoaWxkQ29sdW1uc1tjb2xJbmRleF0gPSBjb2x1bW4ucm93c3BhbiAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdoaWxlIChjaGlsZENvbHVtbnNbY29sSW5kZXhdICYmIGNoaWxkQ29sdW1uc1tjb2xJbmRleF0gPiAwKSB7XG4gICAgICAgICAgICBjaGlsZENvbHVtbnNbY29sSW5kZXhdLS07XG4gICAgICAgICAgICBjb2xJbmRleCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY29sdW1uLmNvbHNwYW4gJiYgY29sdW1uLmNvbHNwYW4gPiAxKSB7XG4gICAgICAgICAgICBjb2xJbmRleCArPSAoY29sdW1uLmNvbHNwYW4gLSAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0YUNvbHVtbnNbY29sSW5kZXhdID0gY29sdW1uO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb2xJbmRleCsrO1xuICAgICAgfSk7XG4gICAgICByb3dJbmRleCsrO1xuICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKCdkYXRhQ29sdW1ucyA9ICcgKyBKU09OLnN0cmluZ2lmeShkYXRhQ29sdW1ucykpO1xuICAgIHJldHVybiBkYXRhQ29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBzYW5pdGl6ZShodG1sOiBzdHJpbmcpOiBTYWZlSHRtbCB7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRvIHNlZSBpZiBhbnkgZmlsdGVycyBhcmUgc2V0XG4gICAqL1xuICBwdWJsaWMgbm9GaWx0ZXJzKCk6IGJvb2xlYW4ge1xuICAgIGxldCBub0ZpbHRlcnMgPSB0cnVlO1xuICAgIHRoaXMuY3VycmVudEZpbHRlcnMuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgaWYgKGZpbHRlci5maWx0ZXJTdHJpbmcgJiYgZmlsdGVyLmZpbHRlclN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG5vRmlsdGVycyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBub0ZpbHRlcnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIGdsb2JhbCBmaWx0ZXIgc3RyaW5nIChpZiBhbnkpIGFzIGEgUmVnRXhwXG4gICAqL1xuICBwcml2YXRlIGdldEdsb2JhbEZpbHRlcigpOiBSZWdFeHAgfCB1bmRlZmluZWQge1xuICAgIGxldCByZWdFeHA6IFJlZ0V4cCB8IHVuZGVmaW5lZDtcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXJzLmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAgIGlmICghZmlsdGVyLmNvbHVtbklkICYmIGZpbHRlci5maWx0ZXJTdHJpbmcgJiYgZmlsdGVyLmZpbHRlclN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlZ0V4cCA9IG5ldyBSZWdFeHAoZmlsdGVyLmZpbHRlclN0cmluZywgJ2knKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVnRXhwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBmaWx0ZXIgZm9yIHRoZSBzcGVjaWZpZWQgY29sdW1uIChpZiBhbnkpIGFzIGEgUmVnRXhwLlxuICAgKiBAcGFyYW0gY29sdW1uSWRcbiAgICovXG4gIHByaXZhdGUgZ2V0RmlsdGVyRm9yQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpOiBSZWdFeHAgfCB1bmRlZmluZWQge1xuICAgIGxldCByZWdFeHA6IFJlZ0V4cCB8IHVuZGVmaW5lZDtcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXJzLmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAgIGlmIChmaWx0ZXIuY29sdW1uSWQgPT09IGNvbHVtbklkICYmIGZpbHRlci5maWx0ZXJTdHJpbmcgJiYgZmlsdGVyLmZpbHRlclN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlZ0V4cCA9IG5ldyBSZWdFeHAoZmlsdGVyLmZpbHRlclN0cmluZywgJ2knKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVnRXhwO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlciB0aGUgdGFibGUgZGF0YSBwcm92aWRlZCBieSB0aGUgZ2xvYmFsIG9yIGNvbHVtbi1zcGVjaWZpY1xuICAgKiBmaWx0ZXJzIHNldCBpbiB0aGUgVUkuXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBwcml2YXRlIGZpbHRlckRhdGEoZGF0YTogQXJyYXk8T2VwYVRhYmxlUm93Pik6IEFycmF5PE9lcGFUYWJsZVJvdz4ge1xuICAgIC8vIGRvbid0IGF0dGVtcHQgZmlsdGVyaW5nIGlmIHRoZXJlIGFyZSBubyBmaWx0ZXJzIHNldFxuICAgIGlmICh0aGlzLm5vRmlsdGVycygpKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgbGV0IGZpbHRlcmVkRGF0YTogQXJyYXk8T2VwYVRhYmxlUm93PiA9IGRhdGE7XG4gICAgY29uc3QgdGVtcEFycmF5OiBBcnJheTxPZXBhVGFibGVSb3c+ID0gW107XG4gICAgZmlsdGVyZWREYXRhLmZvckVhY2goKHJvdzogT2VwYVRhYmxlUm93KSA9PiB7XG4gICAgICBsZXQgZmxhZyA9IHRoaXMuZmlsdGVyQnlDb2x1bW5GaWx0ZXJzKHJvdyk7XG4gICAgICBpZiAoZmxhZykge1xuICAgICAgICBmbGFnID0gdGhpcy5maWx0ZXJCeUdsb2JhbEZpbHRlcihyb3cpO1xuICAgICAgfVxuICAgICAgaWYgKGZsYWcgfHwgcm93LmlzRGl2aWRlcikge1xuICAgICAgICB0ZW1wQXJyYXkucHVzaChyb3cpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZpbHRlcmVkRGF0YSA9IHRlbXBBcnJheTtcbiAgICByZXR1cm4gZmlsdGVyZWREYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlc3QgaWYgcm93IG1hdGNoZXMgYW55IG9mIHRoZSBjb2x1bW5uIGZpbHRlcnMgdGhhdCBtYXkgYmUgc2V0LlxuICAgKiBAcGFyYW0gcm93XG4gICAqL1xuICBwcml2YXRlIGZpbHRlckJ5Q29sdW1uRmlsdGVycyhyb3c6IE9lcGFUYWJsZVJvdyk6IGJvb2xlYW4ge1xuICAgIGxldCBmbGFnID0gdHJ1ZTtcbiAgICByb3cuY2VsbHMuZm9yRWFjaCgoY2VsbDogT2VwYVRhYmxlQ2VsbCkgPT4ge1xuICAgICAgY29uc3QgcmVnRXhwID0gdGhpcy5nZXRGaWx0ZXJGb3JDb2x1bW4oY2VsbC5pZCk7XG4gICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IGNlbGwuZmlsdGVyVmFsdWUgfHwgY2VsbC52YWx1ZSB8fCAnJztcbiAgICAgIGlmIChyZWdFeHAgJiYgZmlsdGVyVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmaWx0ZXJWYWx1ZS50b1N0cmluZygpLm1hdGNoKHJlZ0V4cCk7XG4gICAgICAgIGZsYWcgPSBmbGFnICYmIChyZXN1bHQgIT09IG51bGwpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmbGFnO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlc3QgaWYgcm93IG1hdGNoZXMgdGhlIGdsb2JhbCBmaWx0ZXJcbiAgICogQHBhcmFtIHJvd1xuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJCeUdsb2JhbEZpbHRlcihyb3c6IE9lcGFUYWJsZVJvdyk6IGJvb2xlYW4ge1xuICAgIGxldCBmbGFnID0gdHJ1ZTtcbiAgICBjb25zdCByZWdFeHAgPSB0aGlzLmdldEdsb2JhbEZpbHRlcigpO1xuICAgIGlmIChyZWdFeHApIHtcbiAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgIHJvdy5jZWxscy5mb3JFYWNoKChjZWxsOiBPZXBhVGFibGVDZWxsKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gY2VsbC5maWx0ZXJWYWx1ZSB8fCBjZWxsLnZhbHVlO1xuICAgICAgICBpZiAoZmlsdGVyVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGZpbHRlclZhbHVlLnRvU3RyaW5nKCkubWF0Y2gocmVnRXhwKTtcbiAgICAgICAgICBmbGFnID0gZmxhZyB8fCAocmVzdWx0ICE9PSBudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBmbGFnO1xuICB9XG5cbiAgcHVibGljIGhpZGVDb2x1bW4oY29sdW1uOiBPZXBhVGFibGVDb2x1bW4pIHtcbiAgICB0aGlzLmhpZGRlbkNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgIGNvbHVtbi5oaWRkZW4gPSB0cnVlO1xuICAgIHRoaXMudmlzaWJsZUNvbHVtbkNvdW50LS07XG4gIH1cblxuICBwdWJsaWMgdW5oaWRlQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoaWRkZW5Db2xzOiBBcnJheTxPZXBhVGFibGVDb2x1bW4+ID0gW107XG4gICAgdGhpcy5oaWRkZW5Db2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgaWYgKGNvbC5pZCAhPT0gY29sdW1uSWQpIHtcbiAgICAgICAgaGlkZGVuQ29scy5wdXNoKGNvbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2wuaGlkZGVuID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5oaWRkZW5Db2x1bW5zID0gaGlkZGVuQ29scztcbiAgICB0aGlzLnZpc2libGVDb2x1bW5Db3VudCsrO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0RGF0YShkYXRhOiBBcnJheTxPZXBhVGFibGVSb3c+KTogQXJyYXk8T2VwYVRhYmxlUm93PiB7XG4gICAgbGV0IHNvcnRDcml0ZXJpYTogYW55ID0gdGhpcy50YWJsZVNlcnZpY2UuZ2V0U29ydENyaXRlcmlhKHRoaXMudGFibGVJZCkgfHwgW107XG4gICAgaWYgKHNvcnRDcml0ZXJpYS5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNldENvbHVtblNvcnRJbmRleGVzKHNvcnRDcml0ZXJpYSk7XG5cbiAgICByZXR1cm4gZGF0YS5zb3J0KChwcmV2aW91czogT2VwYVRhYmxlUm93LCBjdXJyZW50OiBPZXBhVGFibGVSb3cpID0+IHtcbiAgICAgIGxldCBzb3J0SW5kZXggPSAwO1xuICAgICAgbGV0IHNvcnRSZXN1bHQgPSAwO1xuICAgICAgd2hpbGUgKHNvcnRJbmRleCA8IHNvcnRDcml0ZXJpYS5sZW5ndGggJiYgc29ydFJlc3VsdCA9PT0gMCkge1xuICAgICAgICBsZXQgcHJldiA9IHRoaXMuZ2V0Um93U29ydFZhbHVlKHByZXZpb3VzLCBzb3J0Q3JpdGVyaWFbc29ydEluZGV4XS5jb2x1bW5JZCk7XG4gICAgICAgIGxldCBjdXJyID0gdGhpcy5nZXRSb3dTb3J0VmFsdWUoY3VycmVudCwgc29ydENyaXRlcmlhW3NvcnRJbmRleF0uY29sdW1uSWQpO1xuICAgICAgICBpZiAocHJldiA+IGN1cnIpIHtcbiAgICAgICAgICBzb3J0UmVzdWx0ID0gIChzb3J0Q3JpdGVyaWFbc29ydEluZGV4XS5zb3J0ID09PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgICAgICB9IGVsc2UgaWYgKHByZXYgPCBjdXJyKSB7XG4gICAgICAgICAgc29ydFJlc3VsdCA9ICAoc29ydENyaXRlcmlhW3NvcnRJbmRleF0uc29ydCA9PT0gJ2FzYycgPyAtMSA6IDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNvcnRSZXN1bHQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHNvcnRJbmRleCsrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNvcnRSZXN1bHQ7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRDb2x1bW5Tb3J0SW5kZXhlcyhzb3J0Q3JpdGVyaWE6IE9lcGFUYWJsZVNvcnRDcml0ZXJpb25bXSkge1xuICAgIGlmIChzb3J0Q3JpdGVyaWEgJiYgc29ydENyaXRlcmlhLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAobGV0IGk9MDsgaTxzb3J0Q3JpdGVyaWEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy5kYXRhQ29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgaWYgKGNvbHVtbj8uaWQgPT09IHNvcnRDcml0ZXJpYVtpXS5jb2x1bW5JZCkge1xuICAgICAgICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICAgICAgICBjb2x1bW4uc29ydEluZGV4ID0gaSArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBkaXNwbGF5IHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgY2VsbC5cbiAgICogQHBhcmFtIHJvd1xuICAgKiBAcGFyYW0gY29sdW1uSWRcbiAgICovXG4gIHB1YmxpYyBnZXRSb3dWYWx1ZShyb3c6IE9lcGFUYWJsZVJvdywgY29sdW1uSWQ6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IHZhbHVlOiBhbnk7XG4gICAgcm93LmNlbGxzLmZvckVhY2goKGNlbGw6IE9lcGFUYWJsZUNlbGwpID0+IHtcbiAgICAgIGlmIChjZWxsLmlkID09PSBjb2x1bW5JZCkge1xuICAgICAgICB2YWx1ZSA9IGNlbGwudmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSByb3cgUmV0cmlldmUgdGhlIHNvcnQgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBjZWxsICh3aWxsIGRlZmF1bHQgdG8gZGlzcGxheSB2YWx1ZSBpZiBzb3J0XG4gICAqIHZhbHVlIGlzIG5vdCBzcGVjaWZpZWQpLlxuICAgKiBAcGFyYW0gY29sdW1uSWRcbiAgICovXG4gIHB1YmxpYyBnZXRSb3dTb3J0VmFsdWUocm93OiBPZXBhVGFibGVSb3csIGNvbHVtbklkOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCB2YWx1ZTogYW55O1xuICAgIHJvdy5jZWxscy5mb3JFYWNoKChjZWxsOiBPZXBhVGFibGVDZWxsKSA9PiB7XG4gICAgICBpZiAoY2VsbC5pZCA9PT0gY29sdW1uSWQpIHtcbiAgICAgICAgaWYgKGNlbGwuc29ydFZhbHVlICE9PSB1bmRlZmluZWQgJiYgY2VsbC5zb3J0VmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICB2YWx1ZSA9IGNlbGwuc29ydFZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlID0gY2VsbC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VQYWdlKGRhdGE6IEFycmF5PE9lcGFUYWJsZVJvdz4gPSB0aGlzLmRhdGEpOiBBcnJheTxPZXBhVGFibGVSb3c+IHtcbiAgICBpZiAoIXRoaXMucGFnaW5hdGlvbk9uKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVQYWdlKCk7XG4gICAgY29uc3Qgc3RhcnQgPSAodGhpcy5wYWdlSW5mby5wYWdlIC0gMSkgKiB0aGlzLnBhZ2VJbmZvLml0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCBlbmQgPSB0aGlzLnBhZ2VJbmZvLml0ZW1zUGVyUGFnZSA+IC0xID8gKHN0YXJ0ICsgdGhpcy5wYWdlSW5mby5pdGVtc1BlclBhZ2UpIDogZGF0YS5sZW5ndGg7XG4gICAgLy8gbm90IHN1cmUgd2h5LCBidXQgbWF4U2l6ZSB3YXMgZ2V0dGluZyBsb3N0LiBSZXNldCBpdCBoZXJlIHRvIHByZXZlbnQgd2VpcmRuZXNzLlxuICAgIHRoaXMucGFnZUluZm8ubWF4U2l6ZSA9IDU7XG4gICAgcmV0dXJuIGRhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUGFnaW5nYXRpb24oKSB7XG4gICAgdGhpcy5wYWdpbmF0aW9uT24gPSAhdGhpcy5wYWdpbmF0aW9uT247XG4gICAgdGhpcy51cGRhdGVUYWJsZSgpO1xuICB9XG5cbiAgcHVibGljIG9uRmlsdGVyQ2hhbmdlZChmaWx0ZXI6IE9lcGFUYWJsZUZpbHRlcikge1xuICAgIGNvbnN0IG1hdGNoRmlsdGVyID0gdGhpcy5jdXJyZW50RmlsdGVycy5maW5kKChmKSA9PiB7XG4gICAgICByZXR1cm4gZi5jb2x1bW5JZCA9PT0gZmlsdGVyLmNvbHVtbklkO1xuICAgIH0pO1xuICAgIGlmICghbWF0Y2hGaWx0ZXIpIHtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXRjaEZpbHRlci5maWx0ZXJTdHJpbmcgPSBmaWx0ZXIuZmlsdGVyU3RyaW5nO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVRhYmxlKHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uU29ydENoYW5nZWQoY29sdW1uOiBPZXBhVGFibGVDb2x1bW4pIHtcbiAgICB0aGlzLnRhYmxlU2VydmljZS5zZXRTb3J0KHRoaXMudGFibGVJZCwgY29sdW1uKTtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgb25QYWdlQ2hhbmdlZChwYWdlRXZlbnQ6IFBhZ2VDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLnBhZ2VJbmZvID0ge1xuICAgICAgcGFnZTogcGFnZUV2ZW50LnBhZ2UsXG4gICAgICBpdGVtc1BlclBhZ2U6IHBhZ2VFdmVudC5pdGVtc1BlclBhZ2UsXG4gICAgICBtYXhTaXplOiB0aGlzLnBhZ2VJbmZvLm1heFNpemUsXG4gICAgICBsZW5ndGg6IHRoaXMucGFnZUluZm8ubGVuZ3RoLFxuICAgICAgbnVtUGFnZXM6IHRoaXMucGFnZUluZm8ubnVtUGFnZXNcbiAgICB9XG4gICAgdGhpcy50YWJsZVNlcnZpY2Uuc2V0UGFnZSh0aGlzLnRhYmxlSWQsIHBhZ2VFdmVudC5wYWdlKTtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYmxlKGNsZWFyU2VsY3RlZFJvd3M6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZmlsdGVyRGF0YSh0aGlzLmRhdGEpO1xuICAgIGNvbnN0IHNvcnRlZERhdGEgPSB0aGlzLnNvcnREYXRhKGZpbHRlcmVkRGF0YSk7XG4gICAgdGhpcy5yb3dzID0gdGhpcy5jaGFuZ2VQYWdlKHNvcnRlZERhdGEpO1xuICAgIHRoaXMucGFnZUluZm8ubGVuZ3RoID0gc29ydGVkRGF0YS5sZW5ndGg7XG4gICAgdGhpcy5hbGxSb3dzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICBpZiAoY2xlYXJTZWxjdGVkUm93cykge1xuICAgICAgdGhpcy5yb3dTZWxlY3RlZC5lbWl0KFtdKTtcbiAgICB9XG4gICAgdGhpcy5kYXRhSGFzRGV0YWlscyA9IHRoaXMuY2hlY2tGb3JEZXRhaWxzKHRoaXMucm93cyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBhZ2UoKSB7XG4gICAgY29uc3Qgc2F2ZWRQYWdlTnVtYmVyID0gdGhpcy50YWJsZVNlcnZpY2UuZ2V0UGFnZSh0aGlzLnRhYmxlSWQpO1xuICAgIGlmIChzYXZlZFBhZ2VOdW1iZXIgJiYgdGhpcy5wYWdlSW5mby5wYWdlICE9PSBzYXZlZFBhZ2VOdW1iZXIpIHtcbiAgICAgIHRoaXMucGFnZUluZm8ucGFnZSA9IHNhdmVkUGFnZU51bWJlcjtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VJbmZvLnBhZ2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZvckRldGFpbHMoZGF0YTogQXJyYXk8T2VwYVRhYmxlUm93Pik6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNEZXRhaWxzID0gZmFsc2U7XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGgpIHtcbiAgICAgIGRhdGEuZm9yRWFjaCgocm93OiBPZXBhVGFibGVSb3cpID0+IHtcbiAgICAgICAgaWYgKHJvdy5zaG93RGV0YWlsID09PSB0cnVlIHx8IHJvdy5zaG93RGV0YWlsID09PSBmYWxzZSkge1xuICAgICAgICAgIGhhc0RldGFpbHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0RldGFpbHM7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQWxsRGV0YWlscygpIHtcbiAgICAvLyBjb25zb2xlLmxvZygndG9nZ2xlQWxsRGV0YWlscy4uLicpO1xuICAgIHRoaXMuc2hvd0FsbERldGFpbHMgPSAhdGhpcy5zaG93QWxsRGV0YWlscztcbiAgICAvLyBjb25zb2xlLmxvZygnc2hvd0FsbERldGFpbHMgPSAnICsgdGhpcy5zaG93QWxsRGV0YWlscyk7XG4gICAgaWYgKHRoaXMuX2RhdGEgJiYgdGhpcy5fZGF0YS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2RhdGEuZm9yRWFjaCgocm93OiBPZXBhVGFibGVSb3cpID0+IHtcbiAgICAgICAgaWYgKHJvdy5zaG93RGV0YWlsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByb3cuc2hvd0RldGFpbCA9IHRoaXMuc2hvd0FsbERldGFpbHM7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ3NldHRpbmcgZGV0YWlscyBmb3Igcm93IHRvICcgKyB0aGlzLnNob3dBbGxEZXRhaWxzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlVGFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVSb3dEZXRhaWwodG9nZ2xlUm93OiBPZXBhVGFibGVSb3cpIHtcbiAgICBpZiAodG9nZ2xlUm93ICYmIHRoaXMuX2RhdGEgJiYgdGhpcy5fZGF0YS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2RhdGEuZm9yRWFjaCgocm93OiBPZXBhVGFibGVSb3cpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ1RFU1Q6ICcgKyBKU09OLnN0cmluZ2lmeShyb3cuZGF0YVNvdXJjZSkgKyAnID09PSAnICsgSlNPTi5zdHJpbmdpZnkodG9nZ2xlUm93LmRhdGFTb3VyY2UpKTtcbiAgICAgICAgaWYgKHJvdy5kYXRhU291cmNlID09PSB0b2dnbGVSb3cuZGF0YVNvdXJjZSkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCchISEgTUFUQ0ggISEhJyk7XG4gICAgICAgICAgcm93LnNob3dEZXRhaWwgPSAhdG9nZ2xlUm93LnNob3dEZXRhaWw7XG4gICAgICAgICAgdG9nZ2xlUm93LnNob3dEZXRhaWwgPSByb3cuc2hvd0RldGFpbDtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnc2hvdyBkZXRhaWwgPSAnICsgcm93LnNob3dEZXRhaWwgKyAnIGZvciByb3c6ICcgKyBKU09OLnN0cmluZ2lmeShyb3cuZGF0YVNvdXJjZSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIHRoaXMuX2RhdGEgPSB0aGlzLl9kYXRhLnNwbGljZSgwKTtcbiAgICB9XG4gICAgLy8gY29uc29sZS5sb2coJ3RvZ2dsZVJvd0RldGFpbC4uLicpO1xuICAgIC8vIHRoaXMuZHVtcERldGFpbFJvd3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0FjdGlvbkNvbHVtbihjb2x1bW5JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gY29uc29sZS5sb2coJ2lzQWN0aW9uQ29sdW1uICcgKyBjb2x1bW5JZCk7XG4gICAgbGV0IGFjdGlvbkNvbHVtbiA9IGZhbHNlO1xuICAgIHRoaXMuaGVhZGVyUm93cy5mb3JFYWNoKChoZHI6IE9lcGFUYWJsZUhlYWRlcikgPT4ge1xuICAgICAgaGRyLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBPZXBhVGFibGVDb2x1bW4pID0+IHtcbiAgICAgICAgaWYgKGNvbHVtbi5pZCA9PT0gY29sdW1uSWQpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygndGVzdCBhY3Rpb24gY29sdW1uOiAnICsgY29sdW1uLmlkICsgJyAtICcgKyBjb2x1bW4uYWN0aW9uQ29sdW1uKTtcbiAgICAgICAgICBhY3Rpb25Db2x1bW4gPSBjb2x1bW4uYWN0aW9uQ29sdW1uIHx8IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWN0aW9uQ29sdW1uO1xuICB9XG5cbiAgcHVibGljIGlzQ29sdW1uSGlkZGVuKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBjb25zb2xlLmxvZygnaXNDb2x1bW5IaWRkZW4gJyArIGNvbHVtbklkKTtcbiAgICBsZXQgaGlkZGVuID0gZmFsc2U7XG4gICAgdGhpcy5oZWFkZXJSb3dzLmZvckVhY2goKGhkcjogT2VwYVRhYmxlSGVhZGVyKSA9PiB7XG4gICAgICBoZHIuY29sdW1ucy5mb3JFYWNoKChjb2x1bW46IE9lcGFUYWJsZUNvbHVtbikgPT4ge1xuICAgICAgICBpZiAoY29sdW1uLmlkID09PSBjb2x1bW5JZCkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd0ZXN0IGhpZGRlbiBjb2x1bW46ICcgKyBjb2x1bW4uaWQgKyAnIC0gJyArIGNvbHVtbi5oaWRkZW4pO1xuICAgICAgICAgIGhpZGRlbiA9IGNvbHVtbi5oaWRkZW4gfHwgZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBoaWRkZW47XG4gIH1cblxuICBwdWJsaWMgZ2V0SGlkZGVuQ29sdW1ucygpOiBBcnJheTxPZXBhVGFibGVDb2x1bW4+IHtcbiAgICBjb25zdCBjb2x1bW5zOiBBcnJheTxPZXBhVGFibGVDb2x1bW4+ID0gW107XG4gICAgdGhpcy5oZWFkZXJSb3dzLmZvckVhY2goKGhkcjogT2VwYVRhYmxlSGVhZGVyKSA9PiB7XG4gICAgICBoZHIuY29sdW1ucy5mb3JFYWNoKChjb2x1bW46IE9lcGFUYWJsZUNvbHVtbikgPT4ge1xuICAgICAgICBpZiAoY29sdW1uLmhpZGRlbikge1xuICAgICAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gY29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDZWxsQ2xhc3NOYW1lKHJvdzogT2VwYVRhYmxlUm93LCBjb2x1bW5JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgICByb3cuY2VsbHMuZm9yRWFjaCgoY2VsbDogT2VwYVRhYmxlQ2VsbCkgPT4ge1xuICAgICAgaWYgKGNlbGwuaWQgPT09IGNvbHVtbklkKSB7XG4gICAgICAgIHJlc3VsdCA9IGNlbGwuY2xhc3NOYW1lO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2VsbENvbFNwYW4ocm93OiBPZXBhVGFibGVSb3csIGNvbHVtbklkOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCByZXN1bHQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE7XG4gICAgcm93LmNlbGxzLmZvckVhY2goKGNlbGw6IE9lcGFUYWJsZUNlbGwpID0+IHtcbiAgICAgIGlmIChjZWxsLmlkID09PSBjb2x1bW5JZCkge1xuICAgICAgICByZXN1bHQgPSBjZWxsLmNvbFNwYW4gfHwgMCA+PTAgPyBjZWxsLmNvbFNwYW4gOiAxO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2VsbEljb25DbGFzc05hbWUocm93OiBPZXBhVGFibGVSb3csIGNvbHVtbklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuICAgIHJvdy5jZWxscy5mb3JFYWNoKChjZWxsOiBPZXBhVGFibGVDZWxsKSA9PiB7XG4gICAgICBpZiAoY2VsbC5pZCA9PT0gY29sdW1uSWQpIHtcbiAgICAgICAgcmVzdWx0ID0gY2VsbC5pY29uQ2xhc3NOYW1lO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2VsbEltZ1NyYyhyb3c6IE9lcGFUYWJsZVJvdywgY29sdW1uSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XG4gICAgcm93LmNlbGxzLmZvckVhY2goKGNlbGw6IE9lcGFUYWJsZUNlbGwpID0+IHtcbiAgICAgIGlmIChjZWxsLmlkID09PSBjb2x1bW5JZCkge1xuICAgICAgICByZXN1bHQgPSBjZWxsLmltZ1NyYztcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldENlbGxJbm5lckhUTUwocm93OiBPZXBhVGFibGVSb3csIGNvbHVtbklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuICAgIHJvdy5jZWxscy5mb3JFYWNoKChjZWxsOiBPZXBhVGFibGVDZWxsKSA9PiB7XG4gICAgICBpZiAoY2VsbC5pZCA9PT0gY29sdW1uSWQpIHtcbiAgICAgICAgcmVzdWx0ID0gY2VsbC5pbm5lckhUTUw7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBjZWxsQ2xpY2socm93OiBPZXBhVGFibGVSb3csIGNvbHVtbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0Um93VmFsdWUocm93LCBjb2x1bW5JZCk7XG4gICAgdGhpcy5jZWxsQ2xpY2tlZC5lbWl0KHsgcm93LCBjb2x1bW5JZCwgdmFsdWUgfSk7XG4gIH1cblxuICBwdWJsaWMgb25BY3Rpb25DbGljayhldmVudDogT2VwYUFjdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb25DbGlja2VkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUFsbFJvd3NTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dzOiBBcnJheTxPZXBhVGFibGVSb3c+ID0gW107XG4gICAgdGhpcy5hbGxSb3dzU2VsZWN0ZWQgPSAhdGhpcy5hbGxSb3dzU2VsZWN0ZWQ7XG4gICAgLy8gZGVzZWxlY3QgYWxsIHJvd3NcbiAgICB0aGlzLl9kYXRhLmZvckVhY2goKHI6IE9lcGFUYWJsZVJvdykgPT4ge1xuICAgICAgci5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIH0pO1xuICAgIC8vIHNlbGVjdCBvbmx5IHZpc2libGUgcm93c1xuICAgIHRoaXMucm93cy5mb3JFYWNoKChyOiBPZXBhVGFibGVSb3cpID0+IHtcbiAgICAgIGlmIChyLnNlbGVjdGFibGUpIHtcbiAgICAgICAgci5zZWxlY3RlZCA9IHRoaXMuYWxsUm93c1NlbGVjdGVkO1xuICAgICAgfVxuICAgICAgaWYgKHIuc2VsZWN0ZWQpIHtcbiAgICAgICAgc2VsZWN0ZWRSb3dzLnB1c2gocik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5yb3dzLnNsaWNlKCk7XG4gICAgLy8gdGhpcy51cGRhdGVUYWJsZSgpO1xuICAgIHRoaXMucm93U2VsZWN0ZWQuZW1pdChzZWxlY3RlZFJvd3MpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVJvd1NlbGVjdGlvbihyb3c6IE9lcGFUYWJsZVJvdyk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkUm93czogQXJyYXk8T2VwYVRhYmxlUm93PiA9IFtdO1xuICAgIHJvdy5zZWxlY3RlZCA9ICFyb3cuc2VsZWN0ZWQ7XG4gICAgdGhpcy5fZGF0YS5mb3JFYWNoKChkcjogT2VwYVRhYmxlUm93KSA9PiB7XG4gICAgICBpZiAocm93LnByaXZhdGVJZCA9PT0gZHIucHJpdmF0ZUlkKSB7XG4gICAgICAgIGRyLnNlbGVjdGVkID0gcm93LnNlbGVjdGVkO1xuICAgICAgfVxuICAgICAgaWYgKGRyLnNlbGVjdGVkKSB7XG4gICAgICAgIHNlbGVjdGVkUm93cy5wdXNoKGRyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWxsUm93c1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5yb3dzLnNsaWNlKCk7XG4gICAgLy8gdGhpcy51cGRhdGVUYWJsZSgpO1xuICAgIHRoaXMucm93U2VsZWN0ZWQuZW1pdChzZWxlY3RlZFJvd3MpO1xuICB9XG5cbiAgcHVibGljIHNpbmdsZVJvd1NlbGVjdGlvbihyb3c6IE9lcGFUYWJsZVJvdyk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkUm93czogQXJyYXk8T2VwYVRhYmxlUm93PiA9IFtdO1xuICAgIHJvdy5zZWxlY3RlZCA9ICFyb3cuc2VsZWN0ZWQ7XG4gICAgLy8gYWRkIHJvdyB0byBzZWxlY3RlZCByb3dzIGlmIGl0IGlzIHNlbGVjdGVkXG4gICAgaWYgKHJvdy5zZWxlY3RlZCkge1xuICAgICAgc2VsZWN0ZWRSb3dzLnB1c2gocm93KTtcbiAgICB9XG4gICAgLy8gdW5zZWxlY3QgYW55IG90aGVyIHJvdyB0aGF0IG1heSBiZSBzZWxlY3RlZFxuICAgIHRoaXMuX2RhdGEuZm9yRWFjaCgoZHI6IE9lcGFUYWJsZVJvdykgPT4ge1xuICAgICAgaWYgKHJvdy5wcml2YXRlSWQgPT09IGRyLnByaXZhdGVJZCkge1xuICAgICAgICBkci5zZWxlY3RlZCA9IHJvdy5zZWxlY3RlZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRyLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5yb3dzLnNsaWNlKCk7XG4gICAgdGhpcy51cGRhdGVUYWJsZSgpO1xuICAgIHRoaXMucm93U2VsZWN0ZWQuZW1pdChzZWxlY3RlZFJvd3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlUm93c0ZvckV4cG9ydChyb3dzOiBBcnJheTxPZXBhVGFibGVSb3c+KTogQXJyYXk8T2VwYVRhYmxlUm93PiB7XG4gICAgY29uc3QgcmVzdWx0OiBBcnJheTxPZXBhVGFibGVSb3c+ID0gW107XG4gICAgLy8gY29uc29sZS5sb2coJ3ByZXBhcmVSb3dzRm9yRXhwb3J0Li4uJyk7XG4gICAgLy8gdGhpcy5kdW1wRGV0YWlsUm93cygpO1xuICAgIGlmIChyb3dzICYmIHJvd3MubGVuZ3RoKSB7XG4gICAgICByb3dzLmZvckVhY2goKHJvdzogT2VwYVRhYmxlUm93KSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdzaG93RGV0YWlsID0gJyArIHJvdy5zaG93RGV0YWlsICsgJyAnICsgSlNPTi5zdHJpbmdpZnkocm93LmNlbGxzKSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICBjZWxsczogcm93LmNlbGxzLFxuICAgICAgICAgIGFjdGlvbnM6IHJvdy5hY3Rpb25zLFxuICAgICAgICAgIHNob3dEZXRhaWw6IHJvdy5zaG93RGV0YWlsLFxuICAgICAgICAgIHN1YlRhYmxlOiByb3cuZGV0YWlsID8gdGhpcy5jb252ZXJ0VG9UYWJsZShyb3cuZGV0YWlsKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBpc0RpdmlkZXI6IHJvdy5pc0RpdmlkZXIsXG4gICAgICAgICAgZGl2aWRlckNsYXNzTmFtZTogcm93LmRpdmlkZXJDbGFzc05hbWVcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBnYXRoZXJUYWJsZURhdGEocm93czogT2VwYVRhYmxlUm93W10pOiBPZXBhVGFibGUge1xuICAgIC8vIGNvbnNvbGUubG9nKCdnYXRoZXJUYWJsZURhdGEuLi4nKTtcbiAgICAvLyB0aGlzLmR1bXBEZXRhaWxSb3dzKCk7XG4gICAgY29uc3Qgb2VwYVRhYmxlOiBPZXBhVGFibGUgPSB7fTtcbiAgICBvZXBhVGFibGUuaGVhZGVyUm93cyA9IHRoaXMuaGVhZGVyUm93cztcbiAgICBvZXBhVGFibGUuYWxsRGF0YVJvd3MgPSB0aGlzLnByZXBhcmVSb3dzRm9yRXhwb3J0KHJvd3MpO1xuICAgIG9lcGFUYWJsZS5zaG93QWxsRGV0YWlscyA9IHRoaXMuc2hvd0FsbERldGFpbHM7XG4gICAgb2VwYVRhYmxlLmNsYXNzTmFtZSA9IHRoaXMuX2NvbmZpZy5jbGFzc05hbWU7XG4gICAgb2VwYVRhYmxlLnZpc2libGVDb2x1bW5Db3VudCA9IHRoaXMudmlzaWJsZUNvbHVtbkNvdW50O1xuICAgIG9lcGFUYWJsZS5hbGxDb2x1bW5Db3VudCA9IHRoaXMuYWxsQ29sdW1uQ291bnQ7XG4gICAgcmV0dXJuIG9lcGFUYWJsZTtcbiAgfVxuXG4gIHByaXZhdGUgZHVtcERldGFpbFJvd3MoKSB7XG4gICAgY29uc29sZS5sb2coJ2R1bXBEZXRhaWxSb3dzIC0gVG90YWwgcm93czogJyArIHRoaXMuX2RhdGEubGVuZ3RoKTtcbiAgICB0aGlzLl9kYXRhLmZvckVhY2goKHJvdzogT2VwYVRhYmxlUm93KSA9PiB7XG4gICAgICBpZiAocm93LnNob3dEZXRhaWwpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1NIT1cgREVUQUlMOiAnICsgSlNPTi5zdHJpbmdpZnkocm93LmRhdGFTb3VyY2UpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjb252ZXJ0VG9UYWJsZSh0ZW1wbGF0ZTogT2VwYVRlbXBsYXRlSW5mbyk6IE9lcGFUYWJsZSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IG9lcGFUYWJsZTogT2VwYVRhYmxlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZS5jb21wb25lbnQgPT09IFRhYmxlQ29tcG9uZW50KSB7XG4gICAgICBjb25zdCB0YWJsZTogVGFibGVDb21wb25lbnQgPSBuZXcgVGFibGVDb21wb25lbnQodGhpcy5zYW5pdGl6ZXIsIHRoaXMudGFibGVTZXJ2aWNlLCB0aGlzLnRhYmxlRXhwb3J0U2VydmljZSwgdGhpcy5maWxlVXRpbFNlcnZpY2UpO1xuICAgICAgaWYgKHRlbXBsYXRlLmlucHV0cyAmJiB0ZW1wbGF0ZS5pbnB1dHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0ZW1wbGF0ZS5pbnB1dHMuZm9yRWFjaCgoaW5wdXQpID0+IHtcbiAgICAgICAgICBpZiAoaW5wdXQubmFtZSA9PT0gJ2NvbmZpZycpIHtcbiAgICAgICAgICAgIHRhYmxlLmNvbmZpZyA9IGlucHV0LnZhbHVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQubmFtZSA9PT0gJ2NvbXBsZXhIZWFkZXInKSB7XG4gICAgICAgICAgICB0YWJsZS5jb21wbGV4SGVhZGVyID0gaW5wdXQudmFsdWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5uYW1lID09PSAnaGVhZGVyJykge1xuICAgICAgICAgICAgdGFibGUuaGVhZGVyID0gaW5wdXQudmFsdWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5uYW1lID09PSAnZGF0YScpIHtcbiAgICAgICAgICAgIHRhYmxlLmRhdGEgPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBvZXBhVGFibGUgPSB0YWJsZS5nYXRoZXJUYWJsZURhdGEodGFibGUuZGF0YSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvZXBhVGFibGU7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlRXhwb3J0VmlzaWJsZU9ubHkoKSB7XG4gICAgdGhpcy5leHBvcnRWaXNpYmxlT25seSA9ICF0aGlzLmV4cG9ydFZpc2libGVPbmx5O1xuICB9XG5cbiAgcHVibGljIGV4cG9ydFRvRXhjZWwoKSB7XG4gICAgY29uc3QgZXhwb3J0VGFibGU6IE9lcGFUYWJsZSA9IHRoaXMuZ2F0aGVyVGFibGVEYXRhKHRoaXMuZXhwb3J0VmlzaWJsZU9ubHkgPyB0aGlzLnJvd3MgOiB0aGlzLl9kYXRhKTtcblxuICAgIHRoaXMudGFibGVFeHBvcnRTZXJ2aWNlLmRvd25sb2FkRXhjZWwoZXhwb3J0VGFibGUsIHRoaXMuX2NvbmZpZykuc3Vic2NyaWJlKFxuICAgICAgZGF0YSA9PiB7XG4gICAgICAgIHRoaXMuZmlsZVV0aWxTZXJ2aWNlLmRvd25sb2FkRmlsZShkYXRhLCAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4gY29uc29sZS5sb2coZXJyb3IpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBleHBvcnRUb0hUTUwoKSB7XG4gICAgY29uc3QgZXhwb3J0VGFibGU6IE9lcGFUYWJsZSA9IHRoaXMuZ2F0aGVyVGFibGVEYXRhKHRoaXMuZXhwb3J0VmlzaWJsZU9ubHkgPyB0aGlzLnJvd3MgOiB0aGlzLl9kYXRhKTtcblxuICAgIC8vIGZvciBub3csIGFsd2F5cyBlbWJlZCBzdWItdGFibGVzICBpbiBIVE1MIHZpZXcuXG4gICAgdGhpcy50YWJsZUV4cG9ydFNlcnZpY2UuZG93bmxvYWRIVE1MKGV4cG9ydFRhYmxlLCB0aGlzLl9jb25maWcpLnN1YnNjcmliZShcbiAgICAgIGRhdGEgPT4ge1xuICAgICAgICB0aGlzLmZpbGVVdGlsU2VydmljZS5kb3dubG9hZEZpbGUoZGF0YSwgJ3RleHQvaHRtbCcpO1xuICAgICAgfSxcbiAgICAgIGVycm9yID0+IGNvbnNvbGUubG9nKGVycm9yKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb25DdXN0b21CdG5DbGljaygpIHtcbiAgICB0aGlzLmN1c3RvbUJ0bkNsaWNrZWQuZW1pdCgpO1xuICB9XG5cbn1cbiIsIjwhLS0gVW5oaWRlIHNlbGVjdCBpbnB1dCAtIG9ubHkgdmlzaWJsZSBpZiBvbmUgb3IgbW9yZSBjb2x1bW5zIGFyZSBoaWRkZW4gLS0+XG5cbjxmb3JtICpuZ0lmPVwiaGlkZGVuQ29sdW1ucy5sZW5ndGggPiAwXCI+XG4gIDxkaXYgY2xhc3M9XCJyb3cgbWItMlwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1zbS0yIGNvbC1mb3JtLWxhYmVsXCI+U2hvdyBIaWRkZW4gQ29sdW1uczo8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxuICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgKGNoYW5nZSk9XCJ1bmhpZGVDb2x1bW4oJGFueSgkZXZlbnQpLnRhcmdldC52YWx1ZSlcIiBbaWRdPVwidGFibGVJZCsnX1VuaGlkZUNvbHVtblNlbGVjdCdcIj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPkNob29zZSBhIGNvbHVtbjwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjb2wgb2YgaGlkZGVuQ29sdW1uc1wiIFt2YWx1ZV09XCJjb2wuaWRcIj57e2NvbC50aXRsZX19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+XG48IS0tIFRoaXMgaXMgdGhlIHRhYmxlIC0tPlxuPGRpdiBuZ0NsYXNzPVwie3tjb25maWcuZGl2Q2xhc3NOYW1lIHx8ICcnfX1cIiA+XG48dGFibGUgKm5nSWY9XCIhY29uZmlnLmhpZGVUYWJsZVwiIGNsYXNzPVwidGFibGUgZGF0YVRhYmxlXCIgbmdDbGFzcz1cInt7Y29uZmlnLmNsYXNzTmFtZSB8fCAnJ319XCIgcm9sZT1cImdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxuXG48IS0tIFRoaXMgaXMgdGhlIHRhYmxlIGhlYWRlciAtLT5cbjx0aGVhZD5cbiAgPCEtLSBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgaGVhZGVyIHJvd3MgLS0+XG4gIDx0ciAqbmdGb3I9XCJsZXQgaGRyIG9mIGhlYWRlclJvd3M7IGxldCBocj1pbmRleDtcIiByb2xlPVwicm93XCI+XG4gICAgPCEtLSBEZXRhaWxzIGluZGljYXRvciBjb2x1bW4gKGlmIGRhdGEgaGFzIGRldGFpbHMpIC0tPlxuICAgIDx0aCAqbmdJZj1cImRhdGFIYXNEZXRhaWxzICYmIGhyID09PSAwXCIgW3Jvd1NwYW5dPVwiaGVhZGVyUm93cy5sZW5ndGhcIiBjbGFzcz1cImRldGFpbC1pbmRpY2F0b3ItY29sXCI+XG4gICAgICA8c3Bhbj5cbiAgICAgICAgPGkgKGNsaWNrKT1cInRvZ2dsZUFsbERldGFpbHMoKVwiIFtpZF09XCJ0YWJsZUlkKydfU2hvd0FsbERldGFpbHNMaW5rJ1wiIGNsYXNzPVwiYmlcIiBbbmdDbGFzc109XCJ7J2JpLWNoZXZyb24tZG93bic6IHNob3dBbGxEZXRhaWxzLCAnYmktY2hldnJvbi1yaWdodCc6ICFzaG93QWxsRGV0YWlsc31cIlxuICAgICAgICAgIFt0b29sdGlwXT1cIihzaG93QWxsRGV0YWlscyA/ICdIaWRlJyA6ICdTaG93JykgKyAnIGRldGFpbHMgZm9yIGFsbCByb3dzJ1wiIHBsYWNlbWVudD1cInJpZ2h0XCI+XG4gICAgICAgIDwvaT5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3RoPlxuICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtY29sdW1uIFtuZ0Zvck9mXT1cImhkci5jb2x1bW5zXCIgbGV0LWM9XCJpbmRleFwiPlxuICAgICAgPCEtLSBIZWFkZXIgY2VsbCAtLT5cbiAgICAgIDx0aCAqbmdJZj1cIiFjb2x1bW4uaGlkZGVuXCIgbmdDbGFzcz1cInt7Y29sdW1uLmNsYXNzTmFtZSB8fCAnJ319XCIgW2NvbFNwYW5dPVwiY29sdW1uLmNvbHNwYW4gfHwgMVwiIFtyb3dTcGFuXT1cImNvbHVtbi5yb3dzcGFuIHx8IDFcIj5cbiAgICAgICAgPCEtLSBTZWxlY3QgYWxsIFJvd3MgQ2hlY2tib3ggLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxpbnB1dCAqbmdJZj1cImNvbHVtbi5zZWxlY3RDb2x1bW5cIiB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJhbGxSb3dzU2VsZWN0ZWRcIiAoY2hhbmdlKT1cInRvZ2dsZUFsbFJvd3NTZWxlY3Rpb24oKVwiPlxuXG4gICAgICAgICAgPCEtLSBIZWFkZXIgY2VsbCB0ZXh0IHdpdGggc29ydCBjYXBhYmlsaXR5IChpZiBzcGVjaWZpZWQpIC0tPlxuICAgICAgICAgIDxzcGFuIFtvZXBhVGFibGVTb3J0aW5nXT1cInRydWVcIiBbY29sdW1uXT1cImNvbHVtblwiIFt0YWJsZUlkXT1cInRhYmxlSWRcIiAoc29ydENoYW5nZWQpPVwib25Tb3J0Q2hhbmdlZCgkZXZlbnQpXCIgW2lkXT1cInRhYmxlSWQrJ19Tb3J0Q29sdW1uTGlua18nK2NvbHVtbi5pZFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb2x1bW4uc29ydFwiPjxpIGNsYXNzPVwicHVsbC1sZWZ0IGJpXCIgW25nQ2xhc3NdPVwieydiaS1jaGV2cm9uLWRvd24nOiBjb2x1bW4uc29ydCA9PT0gJ2Rlc2MnLCAnYmktY2hldnJvbi11cCc6IGNvbHVtbi5zb3J0ID09PSAnYXNjJ31cIj48L2k+XG4gICAgICAgICAgICA8c3VwICpuZ0lmPVwiY29sdW1uPy5zb3J0SW5kZXggfHwgMCA+IDFcIj57e2NvbHVtbi5zb3J0SW5kZXh9fTwvc3VwPjwvc3Bhbj5cbiAgICAgICAgICAgIHt7Y29sdW1uLnRpdGxlfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPCEtLSBidXR0b24gdG8gYWxsb3cgY29sdW1uIHRvIGJlIGhpZGRlbiAoaWYgc3BlY2lmaWVkKSAtLT5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29sdW1uLmhpZGRlbiA9PT0gZmFsc2VcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2UgZmxvYXQtZW5kXCIgYXJpYS1sYWJlbD1cIkhpZGVcIiAoY2xpY2spPVwiaGlkZUNvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgIFtpZF09XCJ0YWJsZUlkKydfSGlkZUNvbHVtbkxpbmsnKydfJytjb2x1bW4uaWRcIj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBjb2x1bW4gZmlsdGVyIChpZiBzcGVjaWZpZWQpIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKChyb3dzICYmIHJvd3MubGVuZ3RoID4gMCkgfHwgIW5vRmlsdGVycygpKSAmJiBjb2x1bW4uZmlsdGVyYWJsZVwiID5cbiAgICAgICAgICA8aW5wdXQgW29lcGFUYWJsZUZpbHRlcmluZ109XCJ7IGZpbHRlclN0cmluZzogJycsIGNvbHVtbklkOiBjb2x1bW4uaWQgfVwiIFt0YWJsZUlkXT1cInRhYmxlSWRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBpbnB1dC1zbVwiICh0YWJsZUNoYW5nZWQpPVwib25GaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgW2lkXT1cInRhYmxlSWQrJ19GaWx0ZXJDb2x1bW5fJytjb2x1bW4uaWRcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGg+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC90cj5cbjwvdGhlYWQ+XG5cbjwhLS0gVGhpcyBpcyB0aGUgdGFibGUgYm9keSAtLT5cbjx0Ym9keT5cbiAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1yb3cgW25nRm9yT2ZdPVwicm93c1wiIGxldC1yPVwiaW5kZXhcIj5cbiAgICA8IS0tIERhdGEgUm93IC0tPlxuICAgIDx0cj5cbiAgICAgIDx0ZCAqbmdJZj1cImRhdGFIYXNEZXRhaWxzXCI+XG4gICAgICAgIDwhLS0gRGV0YWlsIGljb24gKGlmIHNwZWNpZmllZCkgLS0+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwicm93LnNob3dEZXRhaWwgPT09IHRydWUgfHwgcm93LnNob3dEZXRhaWwgPT09IGZhbHNlXCI+XG4gICAgICAgICAgPGkgKm5nSWY9XCJyb3cuZGV0YWlsSWNvbkNsYXNzTmFtZVwiIFtuZ0NsYXNzXT1cInJvdy5kZXRhaWxJY29uQ2xhc3NOYW1lXCI+PC9pPlxuICAgICAgICAgIDxpIChjbGljayk9XCJ0b2dnbGVSb3dEZXRhaWwocm93KVwiIFtpZF09XCJ0YWJsZUlkKydfU2hvd0RldGFpbExpbmtfJytyXCIgY2xhc3M9XCJiaVwiIFtuZ0NsYXNzXT1cInsnYmktY2hldnJvbi1kb3duJzogcm93LnNob3dEZXRhaWwsICdiaS1jaGV2cm9uLXJpZ2h0JzogIXJvdy5zaG93RGV0YWlsfVwiXG4gICAgICAgICAgICBbdG9vbHRpcF09XCIocm93LnNob3dEZXRhaWwgPyAnSGlkZScgOiAnU2hvdycpICsgJyBkZXRhaWxzIGZvciB0aGlzIHJvdydcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPlxuICAgICAgICAgIDwvaT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC90ZD5cbiAgICAgIDwhLS0gSWYgcm93IGlzIGEgZGl2aWRlciwgaXQgc3BhbnMgdGhlIHdob2xlIHRhYmxlIC0tPlxuICAgICAgPCEtLSA8dGQgKm5nSWY9XCJyb3cuaXNEaXZpZGVyXCIgW2NvbFNwYW5dPVwidmlzaWJsZUNvbHVtbkNvdW50ICsgKGRhdGFIYXNEZXRhaWxzID8gMSA6IDApXCIgW25nQ2xhc3NdPVwicm93LmRpdmlkZXJDbGFzc05hbWUgfHwgJ29lcGEtdGFibGUtZ3JheSdcIj4mbmJzcDs8L3RkPiAtLT5cbiAgICAgIDwhLS0gRGF0YSBSb3dzIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiIXJvdy5pc0RpdmlkZXJcIiBuZ0ZvciBsZXQtY29sIFtuZ0Zvck9mXT1cImRhdGFDb2x1bW5zXCIgbGV0LWk9XCJpbmRleFwiPlxuICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmhpZGRlbiAmJiAocm93fGNlbGxDb2xzcGFuOmNvbCkgPiAwXCIgbmdDbGFzcz1cInt7cm93fGNlbGxDbGFzc25hbWU6Y29sIHx8ICcnfX1cIiBbY29sU3Bhbl09XCJyb3d8Y2VsbENvbHNwYW46Y29sXCI+XG4gICAgICAgICAgPCEtLSBEYXRhIENlbGwgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFjb2wuYWN0aW9uQ29sdW1uICYmICFjb2wuc2VsZWN0Q29sdW1uICYmICFjb2wuc2luZ2xlU2VsZWN0Q29sdW1uXCI+XG4gICAgICAgICAgICA8IS0tIFRlbXBsYXRlIGZvciBwb3BvdmVyIDEgLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BvcG92ZXJUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJvdy5wb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPGNtbC10ZW1wbGF0ZSBbdGVtcGxhdGVJbmZvXT1cInJvdy5wb3BvdmVyLmNvbnRlbnRcIj48L2NtbC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPCEtLSBQb3BvdmVyIDEgaWNvbiAoaWYgc3BlY2lmaWVkKSAtLT5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LnBvcG92ZXIgJiYgaSA9PT0gKHJvdy5wb3BvdmVyQ29sdW1uSW5kZXggfHwgMCkgJiYgcm93LnBvcG92ZXJcIiB0YWJpbmRleD1cIjBcIiBbcG9wb3ZlclRpdGxlXT1cInJvdy5wb3BvdmVyLnRpdGxlXCIgW3BvcG92ZXJdPVwicG9wb3ZlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW2NvbnRhaW5lckNsYXNzXT1cInJvdy5wb3BvdmVyLmNvbnRhaW5lckNsYXNzXCIgcGxhY2VtZW50PVwicmlnaHRcIiBbdHJpZ2dlcnNdPVwicm93LnBvcG92ZXIudHJpZ2dlciB8fCAnbW91c2VlbnRlcjptb3VzZWxlYXZlJ1wiPlxuICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJyb3cucG9wb3Zlci5jbGFzc05hbWVcIiBbaWRdPVwidGFibGVJZCsnX1BvcG92ZXJMaW5rXycrclwiPjwvaT5cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgPCEtLSBUZW1wbGF0ZSBmb3IgcG9wb3ZlciAyIC0tPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwb3BvdmVyMlRlbXBsYXRlPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93LnBvcG92ZXIyXCI+XG4gICAgICAgICAgICAgICAgPGNtbC10ZW1wbGF0ZSBbdGVtcGxhdGVJbmZvXT1cInJvdy5wb3BvdmVyMi5jb250ZW50XCI+PC9jbWwtdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwhLS0gUG9wb3ZlciAyIGljb24gKGlmIHNwZWNpZmllZCkgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImkgPT09IChyb3cucG9wb3ZlcjJDb2x1bW5JbmRleCB8fCAwKSAmJiByb3cucG9wb3ZlcjJcIiB0YWJpbmRleD1cIjBcIiBbcG9wb3ZlclRpdGxlXT1cInJvdy5wb3BvdmVyMi50aXRsZVwiIFtwb3BvdmVyXT1cInBvcG92ZXIyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbY29udGFpbmVyQ2xhc3NdPVwicm93LnBvcG92ZXIyLmNvbnRhaW5lckNsYXNzXCIgcGxhY2VtZW50PVwicmlnaHRcIiBbdHJpZ2dlcnNdPVwicm93LnBvcG92ZXIyLnRyaWdnZXIgfHwgJ21vdXNlZW50ZXI6bW91c2VsZWF2ZSdcIj5cbiAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwicm93LnBvcG92ZXIyLmNsYXNzTmFtZVwiIFtpZF09XCJ0YWJsZUlkKydfUG9wb3ZlcjJMaW5rXycrclwiPjwvaT5cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgPCEtLSBUZW1wbGF0ZSBmb3IgcG9wb3ZlciAzIC0tPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwb3BvdmVyM1RlbXBsYXRlPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93LnBvcG92ZXIzXCI+XG4gICAgICAgICAgICAgICAgPGNtbC10ZW1wbGF0ZSBbdGVtcGxhdGVJbmZvXT1cInJvdy5wb3BvdmVyMy5jb250ZW50XCI+PC9jbWwtdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwhLS0gUG9wb3ZlciAzIGljb24gKGlmIHNwZWNpZmllZCkgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImkgPT09IChyb3cucG9wb3ZlcjNDb2x1bW5JbmRleCB8fCAwKSAmJiByb3cucG9wb3ZlcjNcIiB0YWJpbmRleD1cIjBcIiBbcG9wb3ZlclRpdGxlXT1cInJvdy5wb3BvdmVyMy50aXRsZVwiIFtwb3BvdmVyXT1cInBvcG92ZXIzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbY29udGFpbmVyQ2xhc3NdPVwicm93LnBvcG92ZXIzLmNvbnRhaW5lckNsYXNzXCIgcGxhY2VtZW50PVwicmlnaHRcIiBbdHJpZ2dlcnNdPVwicm93LnBvcG92ZXIzLnRyaWdnZXIgfHwgJ21vdXNlZW50ZXI6bW91c2VsZWF2ZSdcIj5cbiAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwicm93LnBvcG92ZXIzLmNsYXNzTmFtZVwiIFtpZF09XCJ0YWJsZUlkKydfUG9wb3ZlcjNMaW5rXycrclwiPjwvaT5cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJyb3d8Y2VsbElubmVySFRNTDpjb2xcIiBbaW5uZXJIVE1MXT1cInJvd3xjZWxsSW5uZXJIVE1MOmNvbFwiPjwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhKHJvd3xjZWxsSW5uZXJIVE1MOmNvbClcIj57e3Jvd3xjZWxsVmFsdWU6Y29sfX08L3NwYW4+IC0tPlxuXG4gICAgICAgICAgICA8IS0tIElmIGNvbCBpcyBoeXBlcmxpbmssIGRpc3BsYXkgZGF0YSBhcyBhIGh5cGVybGluayAtLT5cbiAgICAgICAgICAgIDxhICpuZ0lmPVwiY29sLmh5cGVybGlua1wiICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJjZWxsQ2xpY2socm93LCBjb2wuaWQpXCIgW2lkXT1cInRhYmxlSWQrJ19DZWxsQ2xpY2tfJytyKydfJytpXCI+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIShyb3d8Y2VsbElubmVySFRNTDpjb2wpXCI+XG4gICAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwicm93fGNlbGxJY29uQ2xhc3NuYW1lOmNvbFwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd3xjZWxsSW1nU3JjOmNvbFwiPjxpbWcgW3NyY109XCJyb3d8Y2VsbEltZ1NyYzpjb2xcIi8+PC9zcGFuPlxuICAgICAgICAgICAgICAgIHt7cm93fGNlbGxWYWx1ZTpjb2x9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3d8Y2VsbElubmVySFRNTDpjb2xcIiBbaW5uZXJIVE1MXT1cInJvd3xjZWxsSW5uZXJIVE1MOmNvbFwiPjwvZGl2PlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPCEtLSBJZiBjb2wgaXMgTk9UIGh5cGVybGluaywganVzdCBkaXNwbGF5IGRhdGEgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb2wuaHlwZXJsaW5rXCI+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIShyb3d8Y2VsbElubmVySFRNTDpjb2wpXCI+XG4gICAgICAgICAgICAgICAgPGkgbmdDbGFzcz1cInt7cm93fGNlbGxJY29uQ2xhc3NuYW1lOmNvbCB8fCAnJ319XCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93fGNlbGxJbWdTcmM6Y29sXCI+PGltZyBbc3JjXT1cInJvd3xjZWxsSW1nU3JjOmNvbFwiLz48L3NwYW4+XG4gICAgICAgICAgICAgICAge3tyb3d8Y2VsbFZhbHVlOmNvbH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJvd3xjZWxsSW5uZXJIVE1MOmNvbFwiIFtpbm5lckhUTUxdPVwicm93fGNlbGxJbm5lckhUTUw6Y29sXCI+PC9kaXY+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBTZWxlY3QgQ2VsbCAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLnNlbGVjdENvbHVtblwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dCBbaWRdPVwidGFibGVJZCsnXycrclwiIHR5cGU9XCJjaGVja2JveFwiIFtkaXNhYmxlZF09XCIhcm93LnNlbGVjdGFibGVcIiBbY2hlY2tlZF09XCJyb3cuc2VsZWN0ZWRcIiAoY2hhbmdlKT1cInRvZ2dsZVJvd1NlbGVjdGlvbihyb3cpXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBTaW5nbGUgU2VsZWN0IENlbGwgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC5zaW5nbGVTZWxlY3RDb2x1bW5cIiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8aW5wdXQgW2lkXT1cInRhYmxlSWQrJ19zaW5nbGVTZWxlY3RfJytyXCIgdHlwZT1cInJhZGlvXCIgW2Rpc2FibGVkXT1cIiFyb3cuc2VsZWN0YWJsZVwiIFtjaGVja2VkXT1cInJvdy5zZWxlY3RlZFwiIChjaGFuZ2UpPVwic2luZ2xlUm93U2VsZWN0aW9uKHJvdylcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIEFjdGlvbiBCdXR0b24gQ2VsbCAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLmFjdGlvbkNvbHVtbiAmJiByb3cuYWN0aW9uc1wiPlxuICAgICAgICAgICAgPG9lcGEtYWN0aW9uLWJ0biBbYWN0aW9uc109XCJyb3cuYWN0aW9uc1wiIFtkYXRhXT1cInJvdy5kYXRhU291cmNlXCIgIChhY3Rpb25DbGlja2VkKT1cIm9uQWN0aW9uQ2xpY2soJGV2ZW50KVwiIFtidG5JZF09XCJ0YWJsZUlkKydfJytyXCI+PC9vZXBhLWFjdGlvbi1idG4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdHI+XG5cbiAgICA8IS0tIERldGFpbCBSb3cgLS0+XG4gICAgPHRyICpuZ0lmPVwicm93LnNob3dEZXRhaWxcIiBjbGFzcz1cInRhYmxlLWluZm9cIj5cbiAgICAgIDx0ZCBbY29sU3Bhbl09XCJ2aXNpYmxlQ29sdW1uQ291bnQgKyAoZGF0YUhhc0RldGFpbHMgPyAxIDogMClcIj5cbiAgICAgICAgPGNtbC10ZW1wbGF0ZSBbdGVtcGxhdGVJbmZvXT1cInJvdy5kZXRhaWxcIj48L2NtbC10ZW1wbGF0ZT5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPHRyICpuZ0lmPVwidG90YWxSb3dcIj5cbiAgICA8dGQgKm5nSWY9XCJkYXRhSGFzRGV0YWlsc1wiPlxuICAgIDwvdGQ+XG4gICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LXRvdGFsQ29sIFtuZ0Zvck9mXT1cImRhdGFDb2x1bW5zXCI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwiIXRvdGFsQ29sLmhpZGRlblwiIG5nQ2xhc3M9XCJ7e3RvdGFsUm93fGNlbGxDbGFzc25hbWU6dG90YWxDb2wgfHwgJyd9fVwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgIDxzcGFuPjxpIG5nQ2xhc3M9XCJ7e3RvdGFsUm93fGNlbGxJY29uQ2xhc3NuYW1lOnRvdGFsQ29sIHx8ICcnfX1cIj48L2k+e3t0b3RhbFJvd3xjZWxsVmFsdWU6dG90YWxDb2x9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICA8L3RyPlxuPC90Ym9keT5cbjwvdGFibGU+XG48L2Rpdj5cbjwhLS0gVGFibGUgZm9vdGVyIC0tPlxuPGZvcm0gKm5nSWY9XCIhY29uZmlnLmhpZGVGb290ZXIgfHwgKGRhdGEgJiYgcGFnZUluZm8uaXRlbXNQZXJQYWdlIDwgZGF0YS5sZW5ndGgpXCIgY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIj5cbjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvdyB0ZXh0LXJpZ2h0XCI+XG4gIDwhLS0gVGFibGUtd2lkZSBmaWx0ZXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICA8aW5wdXQgKm5nSWY9XCIhY29uZmlnLmhpZGVHbG9iYWxGaWx0ZXJcIiBwbGFjZWhvbGRlcj1cIkZpbHRlciBhbGwgY29sdW1uc1wiIFtvZXBhVGFibGVGaWx0ZXJpbmddPVwieyBmaWx0ZXJTdHJpbmc6ICcnIH1cIiBbdGFibGVJZF09XCJ0YWJsZUlkXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgaW5wdXQtc21cIiAodGFibGVDaGFuZ2VkKT1cIm9uRmlsdGVyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICBbaWRdPVwidGFibGVJZCsnX0ZpbHRlckFsbENvbHVtbnNJbnB1dCdcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjb25maWcuc2hvd1Jvd0NvdW50SW5Gb290ZXIgJiYgX2RhdGEgJiYgX2RhdGEubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5XCIgc3R5bGU9XCJjb2xvcjogIzk5OVwiPnt7X2RhdGEubGVuZ3RofX08L3NwYW4+Jm5ic3A7dG90YWwgcm93c1xuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gRXhwb3J0IEJ1dHRvbnMgLS0+XG4gIDxkaXYgY2xhc3M9XCJjb2wtc20tNCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJjb25maWcuZXhwb3J0VG9FeGNlbFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1yLTFcIiAoY2xpY2spPVwiZXhwb3J0VG9FeGNlbCgpXCIgW2lkXT1cInRhYmxlSWQrJ19FeHBvcnRUb0V4Y2VsQnRuJ1wiPkV4cG9ydCB0byBFeGNlbDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImNvbmZpZy5leHBvcnRUb0hUTUxcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtci0xXCIgKGNsaWNrKT1cImV4cG9ydFRvSFRNTCgpXCIgW2lkXT1cInRhYmxlSWQrJ19FeHBvcnRUb0hUTUxCdG4nXCI+RXhwb3J0IHRvIEhUTUw8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImN1c3RvbUJ0blZpc2libGVcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXItMVwiIChjbGljayk9XCJvbkN1c3RvbUJ0bkNsaWNrKClcIiBbaWRdPVwidGFibGVJZCsnX0N1c3RvbUJ0bidcIiBbZGlzYWJsZWRdPVwiIWN1c3RvbUJ0bkVuYWJsZWRcIj57e2N1c3RvbUJ0bkxhYmVsfX08L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImNvbmZpZy5leHBvcnRUb0V4Y2VsIHx8IGNvbmZpZy5leHBvcnRUb0hUTUxcIiBjbGFzcz1cImNvbC1zbS0xMiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8c3Bhbj5FeHBvcnQgb25seSB2aXNpYmxlIGRhdGE6Jm5ic3A7XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImV4cG9ydFZpc2libGVPbmx5XCIgKGNsaWNrKT1cInRvZ2dsZUV4cG9ydFZpc2libGVPbmx5KClcIiBpZD1cImV4cG9ydFZpc2libGVPbmx5Q2hlY2tib3hcIi8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBQYWdpbmF0aW9uIC0tPlxuICA8ZGl2ICpuZ0lmPVwiIWNvbmZpZy5kaXNhYmxlUGFnaW5hdGlvblwiIGNsYXNzPVwiY29sLXNtLTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICA8cGFnaW5hdGlvbiAqbmdJZj1cInBhZ2luYXRpb25PblwiIGNsYXNzPVwicGFnaW5hdGlvbi1zbVwiIFt0b3RhbEl0ZW1zXT1cInBhZ2VJbmZvLmxlbmd0aFwiIFtpdGVtc1BlclBhZ2VdPVwicGFnZUluZm8uaXRlbXNQZXJQYWdlXCIgW21heFNpemVdPVwicGFnZUluZm8ubWF4U2l6ZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cImN1cnJlbnRQYWdlXCIgbmFtZT1cImN1cnJlbnRUYWJsZVBhZ2VcIlxuICAgICAgW2JvdW5kYXJ5TGlua3NdPVwidHJ1ZVwiIFtyb3RhdGVdPVwiZmFsc2VcIiAocGFnZUNoYW5nZWQpPVwib25QYWdlQ2hhbmdlZCgkZXZlbnQpXCIgKG51bVBhZ2VzKT1cInBhZ2VJbmZvLm51bVBhZ2VzID0gJGV2ZW50XCI+XG4gICAgPC9wYWdpbmF0aW9uPlxuICAgICZuYnNwO1xuICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZVBhZ2luZ2F0aW9uKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtIG1yLTFcIj57eyBwYWdpbmF0aW9uT24gPyAnU2hvdyBBbGwgUm93cycgOiAnUmVzdG9yZSBQYWdpbmF0aW9uJ319PC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG48L2Zvcm0+Il19
|
|
805
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkIvRSxNQUFNLE9BQU8sY0FBYztJQTJJRTtJQUNqQjtJQUNBO0lBQ0E7SUE3SUgsYUFBYSxHQUFZLEtBQUssQ0FBQztJQUMvQixVQUFVLEdBQTJCLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEdBQXdCLEVBQUUsQ0FBQztJQUMvQixrQkFBa0IsR0FBRyxDQUFDLENBQUM7SUFDdkIsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUNuQixpQkFBaUIsR0FBd0IsS0FBSyxDQUFDO0lBRS9DLFdBQVcsR0FBMkIsRUFBRSxDQUFDO0lBQ3pDLGFBQWEsR0FBMkIsRUFBRSxDQUFDO0lBQzNDLGFBQWEsR0FBa0IsRUFBRSxDQUFDO0lBQ2xDLEtBQUssR0FBd0IsRUFBRSxDQUFDO0lBQy9CLE9BQU8sR0FBb0IsRUFBRSxDQUFDO0lBQzlCLGNBQWMsR0FBMkIsQ0FBQztZQUNoRCxZQUFZLEVBQUUsRUFBRTtZQUNoQixRQUFRLEVBQUUsU0FBUztTQUNwQixDQUFDLENBQUM7SUFFSSxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFFdkIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUV4QixRQUFRLEdBQXNCO1FBQ25DLElBQUksRUFBRSxDQUFDO1FBQ1AsWUFBWSxFQUFFLEVBQUU7UUFDaEIsT0FBTyxFQUFFLENB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O3NCQUE3QixNQUFNO2dCQUNVLFdBQVc7c0JBQTNCLE1BQU07Z0JBQ1UsZ0JBQWdCO3NCQUFoQyxNQUFNO2dCQTZCSSxJQUFJO3NCQURkLEtBQUs7Z0JBdUJHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IE9lcGFUYWJsZSB9IGZyb20gJy4vb2VwYS10YWJsZSc7XG5pbXBvcnQgeyBPZXBhVGFibGVDb25maWcgfSBmcm9tICcuL29lcGEtdGFibGUtY29uZmlnJztcbmltcG9ydCB7IE9lcGFUYWJsZUhlYWRlciB9IGZyb20gJy4vb2VwYS10YWJsZS1oZWFkZXInO1xuaW1wb3J0IHsgT2VwYVRhYmxlQ29sdW1uIH0gZnJvbSAnLi9vZXBhLXRhYmxlLWNvbHVtbic7XG5pbXBvcnQgeyBPZXBhVGFibGVSb3cgfSBmcm9tICcuL29lcGEtdGFibGUtcm93JztcbmltcG9ydCB7IE9lcGFUYWJsZUNlbGwgfSBmcm9tICcuL29lcGEtdGFibGUtY2VsbCc7XG5pbXBvcnQgeyBPZXBhVGFibGVGaWx0ZXIgfSBmcm9tICcuL29lcGEtdGFibGUtZmlsdGVyJztcbmltcG9ydCB7IE9lcGFUYWJsZVBhZ2VJbmZvIH0gZnJvbSAnLi9vZXBhLXRhYmxlLXBhZ2UtaW5mbyc7XG5pbXBvcnQgeyBPZXBhVGFibGVDZWxsQ2xpY2tFdmVudCB9IGZyb20gJy4vb2VwYS10YWJsZS1jZWxsLWNsaWNrLWV2ZW50JztcblxuaW1wb3J0IHsgT2VwYUFjdGlvbkV2ZW50IH0gZnJvbSAnLi4vYWN0aW9uLWJ0bi9vZXBhLWFjdGlvbi1ldmVudCc7XG5cbmltcG9ydCB7IFRhYmxlRXhwb3J0U2VydmljZSB9IGZyb20gJy4vdGFibGUtZXhwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT2VwYVRlbXBsYXRlSW5mbyB9IGZyb20gJ0BvaGlvZXBhL29lcGEtY29tbW9uLWxpYic7XG5pbXBvcnQgeyBUYWJsZVNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2VwYVRhYmxlU29ydENyaXRlcmlvbiB9IGZyb20gJy4vb2VwYS10YWJsZS1zb3J0LWNyaXRlcmlvbic7XG5pbXBvcnQgeyBQYWdlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wYWdpbmF0aW9uJztcbmltcG9ydCB7IE9lcGFGaWxlVXRpbFNlcnZpY2UgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWNvbW1vbi1saWInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIHNob3dGaWx0ZXJSb3c6IEJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGhlYWRlclJvd3M6IEFycmF5PE9lcGFUYWJsZUhlYWRlcj4gPSBbXTtcbiAgcHVibGljIHJvd3M6IEFycmF5PE9lcGFUYWJsZVJvdz4gPSBbXTtcbiAgcHVibGljIHZpc2libGVDb2x1bW5Db3VudCA9IDA7XG4gIHB1YmxpYyBhbGxDb2x1bW5Db3VudCA9IDA7XG4gIHB1YmxpYyBleHBvcnRWaXNpYmxlT25seTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBkYXRhQ29sdW1uczogQXJyYXk8T2VwYVRhYmxlQ29sdW1uPiA9IFtdO1xuICBwdWJsaWMgaGlkZGVuQ29sdW1uczogQXJyYXk8T2VwYVRhYmxlQ29sdW1uPiA9IFtdO1xuICBwdWJsaWMgY29sdW1uSGVhZGVyczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBwdWJsaWMgX2RhdGE6IEFycmF5PE9lcGFUYWJsZVJvdz4gPSBbXTtcbiAgcHJpdmF0ZSBfY29uZmlnOiBPZXBhVGFibGVDb25maWcgPSB7fTtcbiAgcHJpdmF0ZSBjdXJyZW50RmlsdGVyczogQXJyYXk8T2VwYVRhYmxlRmlsdGVyPiA9IFt7XG4gICAgZmlsdGVyU3RyaW5nOiAnJyxcbiAgICBjb2x1bW5JZDogdW5kZWZpbmVkXG4gIH1dO1xuXG4gIHB1YmxpYyBkYXRhSGFzRGV0YWlscyA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd0FsbERldGFpbHMgPSBmYWxzZTtcblxuICBwdWJsaWMgYWxsUm93c1NlbGVjdGVkID0gZmFsc2U7XG5cbiAgcHVibGljIHBhZ2VJbmZvOiBPZXBhVGFibGVQYWdlSW5mbyA9IHtcbiAgICBwYWdlOiAxLFxuICAgIGl0ZW1zUGVyUGFnZTogMTAsXG4gICAgbWF4U2l6ZTogNSxcbiAgICBudW1QYWdlczogMSxcbiAgICBsZW5ndGg6IDBcbiAgfTtcbiAgcHVibGljIGN1cnJlbnRQYWdlID0gMTtcbiAgcHVibGljIHBhZ2luYXRpb25PbiA9IHRydWU7XG5cbiAgQElucHV0KCkgdGFibGVJZCA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY29uZmlnKGNvbmY6IE9lcGFUYWJsZUNvbmZpZykge1xuICAgIGlmICghY29uZi5jbGFzc05hbWUpIHtcbiAgICAgIGNvbmYuY2xhc3NOYW1lID0gJ3RhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWQnO1xuICAgIH1cbiAgICBpZiAoY29uZi5jbGFzc05hbWVzKSB7XG4gICAgICBjb25mLmNsYXNzTmFtZSA9IGNvbmYuY2xhc3NOYW1lcy5qb2luKCcgJyk7XG4gICAgfVxuICAgIGlmIChjb25mLnJvd3NQZXJQYWdlKSB7XG4gICAgICB0aGlzLnBhZ2VJbmZvLml0ZW1zUGVyUGFnZSA9IGNvbmYucm93c1BlclBhZ2U7XG4gICAgfVxuICAgIHRoaXMuZXhwb3J0VmlzaWJsZU9ubHkgPSBjb25mLmV4cG9ydFZpc2libGVPbmx5O1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmY7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBPZXBhVGFibGVDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNvbXBsZXhIZWFkZXIoaGRyczogQXJyYXk8T2VwYVRhYmxlSGVhZGVyPikge1xuICAgIHRoaXMucmVzZXRIZWFkZXJzKCk7XG4gICAgaWYgKGhkcnMgJiYgaGRycy5sZW5ndGgpIHtcbiAgICAgIGhkcnMuZm9yRWFjaCgoaGRyOiBPZXBhVGFibGVIZWFkZXIpID0+IHtcbiAgICAgICAgdGhpcy5oZWFkZXJSb3dzLnB1c2godGhpcy5leHRyYWN0SW5uZXJDb2x1bW5zKGhkci5jb2x1bW5zKSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29sdW1uSGVhZGVycyA9IHRoaXMuZXh0cmFjdENvbHVtbkhlYWRlcnModGhpcy5oZWFkZXJSb3dzKTtcbiAgICAgIHRoaXMuZGF0YUNvbHVtbnMgPSB0aGlzLmV4dHJhY3REYXRhQ29sdW1ucyh0aGlzLmhlYWRlclJvd3MpO1xuICAgICAgdGhpcy5pbml0aWFsaXplSGlkZGVuQ29sdW1ucyh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGhlYWRlcihoZHI6IE9lcGFUYWJsZUhlYWRlcikge1xuICAgIHRoaXMucmVzZXRIZWFkZXJzKCk7XG4gICAgaWYgKGhkci5jb2x1bW5zICYmIGhkci5jb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaGVhZGVyUm93cy5wdXNoKHRoaXMuZXh0cmFjdElubmVyQ29sdW1ucyhoZHIuY29sdW1ucykpO1xuICAgIH1cbiAgICB0aGlzLmNvbHVtbkhlYWRlcnMgPSB0aGlzLmV4dHJhY3RDb2x1bW5IZWFkZXJzKHRoaXMuaGVhZGVyUm93cyk7XG4gICAgdGhpcy5kYXRhQ29sdW1ucyA9IHRoaXMuZXh0cmFjdERhdGFDb2x1bW5zKHRoaXMuaGVhZGVyUm93cyk7XG4gICAgdGhpcy5pbml0aWFsaXplSGlkZGVuQ29sdW1ucyhmYWxzZSk7XG4gIH1cblxuICBASW5wdXQoKSBjdXN0b21CdG5MYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBASW5wdXQoKSBjdXN0b21CdG5WaXNpYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGN1c3RvbUJ0bkVuYWJsZWQgPSBmYWxzZTtcblxuICAvLyBPdXRwdXRzIChFdmVudHMpXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2VsbENsaWNrZWQ6IEV2ZW50RW1pdHRlcjxPZXBhVGFibGVDZWxsQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgYWN0aW9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPE9lcGFBY3Rpb25FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcm93U2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxBcnJheTxPZXBhVGFibGVSb3c+PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjdXN0b21CdG5DbGlja2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSByZXNldEhlYWRlcnMoKSB7XG4gICAgdGhpcy5oZWFkZXJSb3dzID0gW107XG4gICAgdGhpcy5jb2x1bW5IZWFkZXJzID0gW107XG4gICAgdGhpcy5kYXRhQ29sdW1ucyA9IFtdO1xuICAgIHRoaXMuaGlkZGVuQ29sdW1ucyA9IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplSGlkZGVuQ29sdW1ucyhjb21wbGV4SGVhZGVyOiBib29sZWFuKSB7XG4gICAgdGhpcy52aXNpYmxlQ29sdW1uQ291bnQgPSAwO1xuICAgIHRoaXMuYWxsQ29sdW1uQ291bnQgPSAwO1xuICAgIHRoaXMuZGF0YUNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICBpZiAoY29tcGxleEhlYWRlciAmJiAoY29sdW1uPy5oaWRkZW4gPT09IHRydWUgfHwgY29sdW1uPy5oaWRkZW4gPT09IGZhbHNlKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdkaXNhYmxpbmcgaGlkZGVuIGF0dHJpYnV0ZSBmb3IgY29sdW1uOiAnICsgY29sdW1uLmlkICtcbiAgICAgICAgICAnLiBIaWRkZW4gY29sdW1ucyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgY29tcGxleCBoZWFkZXJzICh5ZXQpLicpO1xuICAgICAgICBjb2x1bW4uaGlkZGVuID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnZpc2libGVDb2x1bW5Db3VudCsrO1xuICAgICAgfSBlbHNlIGlmIChjb2x1bW4/LmhpZGRlbiA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmhpZGRlbkNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52aXNpYmxlQ29sdW1uQ291bnQrKztcbiAgICAgIH1cbiAgICAgIHRoaXMuYWxsQ29sdW1uQ291bnQrKztcbiAgICB9KTtcbiAgICAvLyBjb25zb2xlLmxvZygndmlzaWJsZUNvbHVtbkNvdW50ID0gJyArIHRoaXMudmlzaWJsZUNvbHVtbkNvdW50KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0YSh2YWx1ZXM6IEFycmF5PE9lcGFUYWJsZVJvdz4pIHtcbiAgICBpZiAoIXRoaXMuX2RhdGEgfHwgdGhpcy5fZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLnRhYmxlU2VydmljZS5nZXREYXRhKHRoaXMudGFibGVJZCkgfHwgW107XG4gICAgfVxuICAgIGlmICh2YWx1ZXMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhbHVlc1tpXS5wcml2YXRlSWQgPSBpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2RhdGEgJiYgdGhpcy5fZGF0YS5sZW5ndGggIT09IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy50YWJsZVNlcnZpY2UuY2xlYXJQYWdlSW5mbyh0aGlzLnRhYmxlSWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZXM7XG4gICAgdGhpcy50YWJsZVNlcnZpY2Uuc2V0RGF0YSh0aGlzLnRhYmxlSWQsIHRoaXMuX2RhdGEpO1xuICAgIHRoaXMudXBkYXRlVGFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBBcnJheTxPZXBhVGFibGVSb3c+IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5tYXAoeCA9PiBPYmplY3QuYXNzaWduKHt9LCB4KSk7XG4gIH1cblxuICBASW5wdXQoKSB0b3RhbFJvdzogT2VwYVRhYmxlUm93IHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgdGFibGVTZXJ2aWNlOiBUYWJsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YWJsZUV4cG9ydFNlcnZpY2U6IFRhYmxlRXhwb3J0U2VydmljZSxcbiAgICBwcml2YXRlIGZpbGVVdGlsU2VydmljZTogT2VwYUZpbGVVdGlsU2VydmljZSkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wYWdpbmF0aW9uT24gPSAhdGhpcy5fY29uZmlnLmRpc2FibGVQYWdpbmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0SW5uZXJDb2x1bW5zKGlubmVyOiBBcnJheTxPZXBhVGFibGVDb2x1bW4+KTogT2VwYVRhYmxlSGVhZGVyIHtcbiAgICBjb25zdCBoZWFkZXI6IE9lcGFUYWJsZUhlYWRlciA9IHsgY29sdW1uczogW10gfTtcbiAgICBpbm5lci5mb3JFYWNoKCh2YWx1ZTogT2VwYVRhYmxlQ29sdW1uKSA9PiB7XG4gICAgICBjb25zdCBjb2x1bW4gPSBoZWFkZXIuY29sdW1ucy5maW5kKChjb2w6IE9lcGFUYWJsZUNvbHVtbikgPT4gY29sLmlkID09PSB2YWx1ZS5pZCk7XG4gICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgIC8vIG92ZXJ3cml0ZSByZXBlYXRlZCBjb2x1bW5cbiAgICAgICAgT2JqZWN0LmFzc2lnbihjb2x1bW4sIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmICghY29sdW1uKSB7XG4gICAgICAgIGhlYWRlci5jb2x1bW5zLnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBoZWFkZXI7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RDb2x1bW5IZWFkZXJzKGhlYWRlclJvd3M6IEFycmF5PE9lcGFUYWJsZUhlYWRlcj4pOiBBcnJheTxzdHJpbmc+IHtcbiAgICBjb25zdCBoZWFkZXJzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgbGV0IHJvd0luZGV4ID0gMDtcbiAgICBjb25zdCBjaGlsZENvbHVtbnM6IGFueSA9IHt9O1xuICAgIGhlYWRlclJvd3MuZm9yRWFjaCgoaGRyOiBPZXBhVGFibGVIZWFkZXIpID0+IHtcbiAgICAgIGxldCBjb2xJbmRleCA9IDA7XG4gICAgICBoZHIuY29sdW1ucy5mb3JFYWNoKChjb2x1bW46IE9lcGFUYWJsZUNvbHVtbikgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygncm93SW5kZXg9JyArIHJvd0luZGV4ICsgJywgY29sSW5kZXg9JyArIGNvbEluZGV4ICsgJywgY29sdW1uPScgKyBKU09OLnN0cmluZ2lmeShjb2x1bW4pKTtcbiAgICAgICAgaWYgKHJvd0luZGV4ID09PSAwKSB7XG4gICAgICAgICAgaGVhZGVycy5wdXNoKGNvbHVtbi50aXRsZSk7XG4gICAgICAgICAgaWYgKGNvbHVtbi5jb2xzcGFuKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBjb3VudCA9IDE7IGNvdW50IDwgY29sdW1uLmNvbHNwYW47IGNvdW50KyspIHtcbiAgICAgICAgICAgICAgaGVhZGVycy5wdXNoKCcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNvbHVtbi5yb3dzcGFuKSB7XG4gICAgICAgICAgICBjaGlsZENvbHVtbnNbY29sSW5kZXhdID0gY29sdW1uLnJvd3NwYW4gLSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3aGlsZSAoY2hpbGRDb2x1bW5zW2NvbEluZGV4XSAmJiBjaGlsZENvbHVtbnNbY29sSW5kZXhdID4gMCkge1xuICAgICAgICAgICAgY2hpbGRDb2x1bW5zW2NvbEluZGV4XS0tO1xuICAgICAgICAgICAgY29sSW5kZXgrKztcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVhZGVyc1tjb2xJbmRleF0gKz0gJyAnICsgY29sdW1uLnRpdGxlO1xuICAgICAgICAgIGlmIChjb2x1bW4uY29sc3Bhbikge1xuICAgICAgICAgICAgZm9yIChsZXQgY291bnQgPSAxOyBjb3VudCA8IGNvbHVtbi5jb2xzcGFuOyBjb3VudCsrKSB7XG4gICAgICAgICAgICAgIGNvbEluZGV4Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbEluZGV4Kys7XG4gICAgICB9KTtcbiAgICAgIHJvd0luZGV4Kys7XG4gICAgfSk7XG4gICAgLy8gY29uc29sZS5sb2coJ2hlYWRlcnMgPSAnICsgSlNPTi5zdHJpbmdpZnkoaGVhZGVycykpO1xuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cblxuICBwcml2YXRlIGV4dHJhY3REYXRhQ29sdW1ucyhoZWFkZXJSb3dzOiBBcnJheTxPZXBhVGFibGVIZWFkZXI+KTogQXJyYXk8T2VwYVRhYmxlQ29sdW1uPiB7XG4gICAgY29uc3QgZGF0YUNvbHVtbnM6IEFycmF5PE9lcGFUYWJsZUNvbHVtbj4gPSBbXTtcbiAgICBsZXQgcm93SW5kZXggPSAwO1xuICAgIGNvbnN0IGNoaWxkQ29sdW1uczphbnkgPSB7fTtcbiAgICBoZWFkZXJSb3dzLmZvckVhY2goKGhkcjogT2VwYVRhYmxlSGVhZGVyKSA9PiB7XG4gICAgICBsZXQgY29sSW5kZXggPSAwO1xuICAgICAgaGRyLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBPZXBhVGFibGVDb2x1bW4pID0+IHtcbiAgICAgICAgaWYgKHJvd0luZGV4ID09PSAwKSB7XG4gICAgICAgICAgaWYgKGNvbHVtbi5jb2xzcGFuICYmIGNvbHVtbi5jb2xzcGFuID4gMSkge1xuICAgICAgICAgICAgZm9yIChsZXQgY291bnQgPSAwOyBjb3VudCA8IGNvbHVtbi5jb2xzcGFuOyBjb3VudCsrKSB7XG4gICAgICAgICAgICAgIGRhdGFDb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogJydcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb2xJbmRleCArPSAoY29sdW1uLmNvbHNwYW4gLSAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0YUNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5yb3dzcGFuKSB7XG4gICAgICAgICAgICAgIGNoaWxkQ29sdW1uc1tjb2xJbmRleF0gPSBjb2x1bW4ucm93c3BhbiAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdoaWxlIChjaGlsZENvbHVtbnNbY29sSW5kZXhdICYmIGNoaWxkQ29sdW1uc1tjb2xJbmRleF0gPiAwKSB7XG4gICAgICAgICAgICBjaGlsZENvbHVtbnNbY29sSW5kZXhdLS07XG4gICAgICAgICAgICBjb2xJbmRleCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY29sdW1uLmNvbHNwYW4gJiYgY29sdW1uLmNvbHNwYW4gPiAxKSB7XG4gICAgICAgICAgICBjb2xJbmRleCArPSAoY29sdW1uLmNvbHNwYW4gLSAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0YUNvbHVtbnNbY29sSW5kZXhdID0gY29sdW1uO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb2xJbmRleCsrO1xuICAgICAgfSk7XG4gICAgICByb3dJbmRleCsrO1xuICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKCdkYXRhQ29sdW1ucyA9ICcgKyBKU09OLnN0cmluZ2lmeShkYXRhQ29sdW1ucykpO1xuICAgIHJldHVybiBkYXRhQ29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBzYW5pdGl6ZShodG1sOiBzdHJpbmcpOiBTYWZlSHRtbCB7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRvIHNlZSBpZiBhbnkgZmlsdGVycyBhcmUgc2V0XG4gICAqL1xuICBwdWJsaWMgbm9GaWx0ZXJzKCk6IGJvb2xlYW4ge1xuICAgIGxldCBub0ZpbHRlcnMgPSB0cnVlO1xuICAgIHRoaXMuY3VycmVudEZpbHRlcnMuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgaWYgKGZpbHRlci5maWx0ZXJTdHJpbmcgJiYgZmlsdGVyLmZpbHRlclN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG5vRmlsdGVycyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBub0ZpbHRlcnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIGdsb2JhbCBmaWx0ZXIgc3RyaW5nIChpZiBhbnkpIGFzIGEgUmVnRXhwXG4gICAqL1xuICBwcml2YXRlIGdldEdsb2JhbEZpbHRlcigpOiBSZWdFeHAgfCB1bmRlZmluZWQge1xuICAgIGxldCByZWdFeHA6IFJlZ0V4cCB8IHVuZGVmaW5lZDtcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXJzLmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAgIGlmICghZmlsdGVyLmNvbHVtbklkICYmIGZpbHRlci5maWx0ZXJTdHJpbmcgJiYgZmlsdGVyLmZpbHRlclN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlZ0V4cCA9IG5ldyBSZWdFeHAoZmlsdGVyLmZpbHRlclN0cmluZywgJ2knKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVnRXhwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBmaWx0ZXIgZm9yIHRoZSBzcGVjaWZpZWQgY29sdW1uIChpZiBhbnkpIGFzIGEgUmVnRXhwLlxuICAgKiBAcGFyYW0gY29sdW1uSWRcbiAgICovXG4gIHByaXZhdGUgZ2V0RmlsdGVyRm9yQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpOiBSZWdFeHAgfCB1bmRlZmluZWQge1xuICAgIGxldCByZWdFeHA6IFJlZ0V4cCB8IHVuZGVmaW5lZDtcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXJzLmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAgIGlmIChmaWx0ZXIuY29sdW1uSWQgPT09IGNvbHVtbklkICYmIGZpbHRlci5maWx0ZXJTdHJpbmcgJiYgZmlsdGVyLmZpbHRlclN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlZ0V4cCA9IG5ldyBSZWdFeHAoZmlsdGVyLmZpbHRlclN0cmluZywgJ2knKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVnRXhwO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlciB0aGUgdGFibGUgZGF0YSBwcm92aWRlZCBieSB0aGUgZ2xvYmFsIG9yIGNvbHVtbi1zcGVjaWZpY1xuICAgKiBmaWx0ZXJzIHNldCBpbiB0aGUgVUkuXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBwcml2YXRlIGZpbHRlckRhdGEoZGF0YTogQXJyYXk8T2VwYVRhYmxlUm93Pik6IEFycmF5PE9lcGFUYWJsZVJvdz4ge1xuICAgIC8vIGRvbid0IGF0dGVtcHQgZmlsdGVyaW5nIGlmIHRoZXJlIGFyZSBubyBmaWx0ZXJzIHNldFxuICAgIGlmICh0aGlzLm5vRmlsdGVycygpKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgbGV0IGZpbHRlcmVkRGF0YTogQXJyYXk8T2VwYVRhYmxlUm93PiA9IGRhdGE7XG4gICAgY29uc3QgdGVtcEFycmF5OiBBcnJheTxPZXBhVGFibGVSb3c+ID0gW107XG4gICAgZmlsdGVyZWREYXRhLmZvckVhY2goKHJvdzogT2VwYVRhYmxlUm93KSA9PiB7XG4gICAgICBsZXQgZmxhZyA9IHRoaXMuZmlsdGVyQnlDb2x1bW5GaWx0ZXJzKHJvdyk7XG4gICAgICBpZiAoZmxhZykge1xuICAgICAgICBmbGFnID0gdGhpcy5maWx0ZXJCeUdsb2JhbEZpbHRlcihyb3cpO1xuICAgICAgfVxuICAgICAgaWYgKGZsYWcgfHwgcm93LmlzRGl2aWRlcikge1xuICAgICAgICB0ZW1wQXJyYXkucHVzaChyb3cpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZpbHRlcmVkRGF0YSA9IHRlbXBBcnJheTtcbiAgICByZXR1cm4gZmlsdGVyZWREYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlc3QgaWYgcm93IG1hdGNoZXMgYW55IG9mIHRoZSBjb2x1bW5uIGZpbHRlcnMgdGhhdCBtYXkgYmUgc2V0LlxuICAgKiBAcGFyYW0gcm93XG4gICAqL1xuICBwcml2YXRlIGZpbHRlckJ5Q29sdW1uRmlsdGVycyhyb3c6IE9lcGFUYWJsZVJvdyk6IGJvb2xlYW4ge1xuICAgIGxldCBmbGFnID0gdHJ1ZTtcbiAgICByb3cuY2VsbHMuZm9yRWFjaCgoY2VsbDogT2VwYVRhYmxlQ2VsbCkgPT4ge1xuICAgICAgY29uc3QgcmVnRXhwID0gdGhpcy5nZXRGaWx0ZXJGb3JDb2x1bW4oY2VsbC5pZCk7XG4gICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IGNlbGwuZmlsdGVyVmFsdWUgfHwgY2VsbC52YWx1ZSB8fCAnJztcbiAgICAgIGlmIChyZWdFeHAgJiYgZmlsdGVyVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmaWx0ZXJWYWx1ZS50b1N0cmluZygpLm1hdGNoKHJlZ0V4cCk7XG4gICAgICAgIGZsYWcgPSBmbGFnICYmIChyZXN1bHQgIT09IG51bGwpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmbGFnO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlc3QgaWYgcm93IG1hdGNoZXMgdGhlIGdsb2JhbCBmaWx0ZXJcbiAgICogQHBhcmFtIHJvd1xuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJCeUdsb2JhbEZpbHRlcihyb3c6IE9lcGFUYWJsZVJvdyk6IGJvb2xlYW4ge1xuICAgIGxldCBmbGFnID0gdHJ1ZTtcbiAgICBjb25zdCByZWdFeHAgPSB0aGlzLmdldEdsb2JhbEZpbHRlcigpO1xuICAgIGlmIChyZWdFeHApIHtcbiAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgIHJvdy5jZWxscy5mb3JFYWNoKChjZWxsOiBPZXBhVGFibGVDZWxsKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gY2VsbC5maWx0ZXJWYWx1ZSB8fCBjZWxsLnZhbHVlO1xuICAgICAgICBpZiAoZmlsdGVyVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGZpbHRlclZhbHVlLnRvU3RyaW5nKCkubWF0Y2gocmVnRXhwKTtcbiAgICAgICAgICBmbGFnID0gZmxhZyB8fCAocmVzdWx0ICE9PSBudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBmbGFnO1xuICB9XG5cbiAgcHVibGljIGhpZGVDb2x1bW4oY29sdW1uOiBPZXBhVGFibGVDb2x1bW4pIHtcbiAgICB0aGlzLmhpZGRlbkNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgIGNvbHVtbi5oaWRkZW4gPSB0cnVlO1xuICAgIHRoaXMudmlzaWJsZUNvbHVtbkNvdW50LS07XG4gIH1cblxuICBwdWJsaWMgdW5oaWRlQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoaWRkZW5Db2xzOiBBcnJheTxPZXBhVGFibGVDb2x1bW4+ID0gW107XG4gICAgdGhpcy5oaWRkZW5Db2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgaWYgKGNvbC5pZCAhPT0gY29sdW1uSWQpIHtcbiAgICAgICAgaGlkZGVuQ29scy5wdXNoKGNvbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2wuaGlkZGVuID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5oaWRkZW5Db2x1bW5zID0gaGlkZGVuQ29scztcbiAgICB0aGlzLnZpc2libGVDb2x1bW5Db3VudCsrO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0RGF0YShkYXRhOiBBcnJheTxPZXBhVGFibGVSb3c+KTogQXJyYXk8T2VwYVRhYmxlUm93PiB7XG4gICAgbGV0IHNvcnRDcml0ZXJpYTogYW55ID0gdGhpcy50YWJsZVNlcnZpY2UuZ2V0U29ydENyaXRlcmlhKHRoaXMudGFibGVJZCkgfHwgW107XG4gICAgaWYgKHNvcnRDcml0ZXJpYS5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNldENvbHVtblNvcnRJbmRleGVzKHNvcnRDcml0ZXJpYSk7XG5cbiAgICByZXR1cm4gZGF0YS5zb3J0KChwcmV2aW91czogT2VwYVRhYmxlUm93LCBjdXJyZW50OiBPZXBhVGFibGVSb3cpID0+IHtcbiAgICAgIGxldCBzb3J0SW5kZXggPSAwO1xuICAgICAgbGV0IHNvcnRSZXN1bHQgPSAwO1xuICAgICAgd2hpbGUgKHNvcnRJbmRleCA8IHNvcnRDcml0ZXJpYS5sZW5ndGggJiYgc29ydFJlc3VsdCA9PT0gMCkge1xuICAgICAgICBsZXQgcHJldiA9IHRoaXMuZ2V0Um93U29ydFZhbHVlKHByZXZpb3VzLCBzb3J0Q3JpdGVyaWFbc29ydEluZGV4XS5jb2x1bW5JZCk7XG4gICAgICAgIGxldCBjdXJyID0gdGhpcy5nZXRSb3dTb3J0VmFsdWUoY3VycmVudCwgc29ydENyaXRlcmlhW3NvcnRJbmRleF0uY29sdW1uSWQpO1xuICAgICAgICBpZiAocHJldiA+IGN1cnIpIHtcbiAgICAgICAgICBzb3J0UmVzdWx0ID0gIChzb3J0Q3JpdGVyaWFbc29ydEluZGV4XS5zb3J0ID09PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgICAgICB9IGVsc2UgaWYgKHByZXYgPCBjdXJyKSB7XG4gICAgICAgICAgc29ydFJlc3VsdCA9ICAoc29ydENyaXRlcmlhW3NvcnRJbmRleF0uc29ydCA9PT0gJ2FzYycgPyAtMSA6IDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNvcnRSZXN1bHQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHNvcnRJbmRleCsrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNvcnRSZXN1bHQ7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRDb2x1bW5Tb3J0SW5kZXhlcyhzb3J0Q3JpdGVyaWE6IE9lcGFUYWJsZVNvcnRDcml0ZXJpb25bXSkge1xuICAgIGlmIChzb3J0Q3JpdGVyaWEgJiYgc29ydENyaXRlcmlhLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAobGV0IGk9MDsgaTxzb3J0Q3JpdGVyaWEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy5kYXRhQ29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgaWYgKGNvbHVtbj8uaWQgPT09IHNvcnRDcml0ZXJpYVtpXS5jb2x1bW5JZCkge1xuICAgICAgICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICAgICAgICBjb2x1bW4uc29ydEluZGV4ID0gaSArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBkaXNwbGF5IHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgY2VsbC5cbiAgICogQHBhcmFtIHJvd1xuICAgKiBAcGFyYW0gY29sdW1uSWRcbiAgICovXG4gIHB1YmxpYyBnZXRSb3dWYWx1ZShyb3c6IE9lcGFUYWJsZVJvdywgY29sdW1uSWQ6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IHZhbHVlOiBhbnk7XG4gICAgcm93LmNlbGxzLmZvckVhY2goKGNlbGw6IE9lcGFUYWJsZUNlbGwpID0+IHtcbiAgICAgIGlmIChjZWxsLmlkID09PSBjb2x1bW5JZCkge1xuICAgICAgICB2YWx1ZSA9IGNlbGwudmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSByb3cgUmV0cmlldmUgdGhlIHNvcnQgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBjZWxsICh3aWxsIGRlZmF1bHQgdG8gZGlzcGxheSB2YWx1ZSBpZiBzb3J0XG4gICAqIHZhbHVlIGlzIG5vdCBzcGVjaWZpZWQpLlxuICAgKiBAcGFyYW0gY29sdW1uSWRcbiAgICovXG4gIHB1YmxpYyBnZXRSb3dTb3J0VmFsdWUocm93OiBPZXBhVGFibGVSb3csIGNvbHVtbklkOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCB2YWx1ZTogYW55O1xuICAgIHJvdy5jZWxscy5mb3JFYWNoKChjZWxsOiBPZXBhVGFibGVDZWxsKSA9PiB7XG4gICAgICBpZiAoY2VsbC5pZCA9PT0gY29sdW1uSWQpIHtcbiAgICAgICAgaWYgKGNlbGwuc29ydFZhbHVlICE9PSB1bmRlZmluZWQgJiYgY2VsbC5zb3J0VmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICB2YWx1ZSA9IGNlbGwuc29ydFZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlID0gY2VsbC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VQYWdlKGRhdGE6IEFycmF5PE9lcGFUYWJsZVJvdz4gPSB0aGlzLmRhdGEpOiBBcnJheTxPZXBhVGFibGVSb3c+IHtcbiAgICBpZiAoIXRoaXMucGFnaW5hdGlvbk9uKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVQYWdlKCk7XG4gICAgY29uc3Qgc3RhcnQgPSAodGhpcy5wYWdlSW5mby5wYWdlIC0gMSkgKiB0aGlzLnBhZ2VJbmZvLml0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCBlbmQgPSB0aGlzLnBhZ2VJbmZvLml0ZW1zUGVyUGFnZSA+IC0xID8gKHN0YXJ0ICsgdGhpcy5wYWdlSW5mby5pdGVtc1BlclBhZ2UpIDogZGF0YS5sZW5ndGg7XG4gICAgLy8gbm90IHN1cmUgd2h5LCBidXQgbWF4U2l6ZSB3YXMgZ2V0dGluZyBsb3N0LiBSZXNldCBpdCBoZXJlIHRvIHByZXZlbnQgd2VpcmRuZXNzLlxuICAgIHRoaXMucGFnZUluZm8ubWF4U2l6ZSA9IDU7XG4gICAgcmV0dXJuIGRhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUGFnaW5nYXRpb24oKSB7XG4gICAgdGhpcy5wYWdpbmF0aW9uT24gPSAhdGhpcy5wYWdpbmF0aW9uT247XG4gICAgdGhpcy51cGRhdGVUYWJsZSgpO1xuICB9XG5cbiAgcHVibGljIG9uRmlsdGVyQ2hhbmdlZChmaWx0ZXI6IE9lcGFUYWJsZUZpbHRlcikge1xuICAgIGNvbnN0IG1hdGNoRmlsdGVyID0gdGhpcy5jdXJyZW50RmlsdGVycy5maW5kKChmKSA9PiB7XG4gICAgICByZXR1cm4gZi5jb2x1bW5JZCA9PT0gZmlsdGVyLmNvbHVtbklkO1xuICAgIH0pO1xuICAgIGlmICghbWF0Y2hGaWx0ZXIpIHtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXRjaEZpbHRlci5maWx0ZXJTdHJpbmcgPSBmaWx0ZXIuZmlsdGVyU3RyaW5nO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVRhYmxlKHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uU29ydENoYW5nZWQoY29sdW1uOiBPZXBhVGFibGVDb2x1bW4pIHtcbiAgICB0aGlzLnRhYmxlU2VydmljZS5zZXRTb3J0KHRoaXMudGFibGVJZCwgY29sdW1uKTtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgb25QYWdlQ2hhbmdlZChwYWdlRXZlbnQ6IFBhZ2VDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLnBhZ2VJbmZvID0ge1xuICAgICAgcGFnZTogcGFnZUV2ZW50LnBhZ2UsXG4gICAgICBpdGVtc1BlclBhZ2U6IHBhZ2VFdmVudC5pdGVtc1BlclBhZ2UsXG4gICAgICBtYXhTaXplOiB0aGlzLnBhZ2VJbmZvLm1heFNpemUsXG4gICAgICBsZW5ndGg6IHRoaXMucGFnZUluZm8ubGVuZ3RoLFxuICAgICAgbnVtUGFnZXM6IHRoaXMucGFnZUluZm8ubnVtUGFnZXNcbiAgICB9XG4gICAgdGhpcy50YWJsZVNlcnZpY2Uuc2V0UGFnZSh0aGlzLnRhYmxlSWQsIHBhZ2VFdmVudC5wYWdlKTtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYmxlKGNsZWFyU2VsY3RlZFJvd3M6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZmlsdGVyRGF0YSh0aGlzLmRhdGEpO1xuICAgIGNvbnN0IHNvcnRlZERhdGEgPSB0aGlzLnNvcnREYXRhKGZpbHRlcmVkRGF0YSk7XG4gICAgdGhpcy5yb3dzID0gdGhpcy5jaGFuZ2VQYWdlKHNvcnRlZERhdGEpO1xuICAgIHRoaXMucGFnZUluZm8ubGVuZ3RoID0gc29ydGVkRGF0YS5sZW5ndGg7XG4gICAgdGhpcy5hbGxSb3dzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICBpZiAoY2xlYXJTZWxjdGVkUm93cykge1xuICAgICAgdGhpcy5yb3dTZWxlY3RlZC5lbWl0KFtdKTtcbiAgICB9XG4gICAgdGhpcy5kYXRhSGFzRGV0YWlscyA9IHRoaXMuY2hlY2tGb3JEZXRhaWxzKHRoaXMucm93cyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBhZ2UoKSB7XG4gICAgY29uc3Qgc2F2ZWRQYWdlTnVtYmVyID0gdGhpcy50YWJsZVNlcnZpY2UuZ2V0UGFnZSh0aGlzLnRhYmxlSWQpO1xuICAgIGlmIChzYXZlZFBhZ2VOdW1iZXIgJiYgdGhpcy5wYWdlSW5mby5wYWdlICE9PSBzYXZlZFBhZ2VOdW1iZXIpIHtcbiAgICAgIHRoaXMucGFnZUluZm8ucGFnZSA9IHNhdmVkUGFnZU51bWJlcjtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VJbmZvLnBhZ2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZvckRldGFpbHMoZGF0YTogQXJyYXk8T2VwYVRhYmxlUm93Pik6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNEZXRhaWxzID0gZmFsc2U7XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGgpIHtcbiAgICAgIGRhdGEuZm9yRWFjaCgocm93OiBPZXBhVGFibGVSb3cpID0+IHtcbiAgICAgICAgaWYgKHJvdy5zaG93RGV0YWlsID09PSB0cnVlIHx8IHJvdy5zaG93RGV0YWlsID09PSBmYWxzZSkge1xuICAgICAgICAgIGhhc0RldGFpbHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0RldGFpbHM7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQWxsRGV0YWlscygpIHtcbiAgICAvLyBjb25zb2xlLmxvZygndG9nZ2xlQWxsRGV0YWlscy4uLicpO1xuICAgIHRoaXMuc2hvd0FsbERldGFpbHMgPSAhdGhpcy5zaG93QWxsRGV0YWlscztcbiAgICAvLyBjb25zb2xlLmxvZygnc2hvd0FsbERldGFpbHMgPSAnICsgdGhpcy5zaG93QWxsRGV0YWlscyk7XG4gICAgaWYgKHRoaXMuX2RhdGEgJiYgdGhpcy5fZGF0YS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2RhdGEuZm9yRWFjaCgocm93OiBPZXBhVGFibGVSb3cpID0+IHtcbiAgICAgICAgaWYgKHJvdy5zaG93RGV0YWlsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByb3cuc2hvd0RldGFpbCA9IHRoaXMuc2hvd0FsbERldGFpbHM7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ3NldHRpbmcgZGV0YWlscyBmb3Igcm93IHRvICcgKyB0aGlzLnNob3dBbGxEZXRhaWxzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlVGFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVSb3dEZXRhaWwodG9nZ2xlUm93OiBPZXBhVGFibGVSb3cpIHtcbiAgICBpZiAodG9nZ2xlUm93ICYmIHRoaXMuX2RhdGEgJiYgdGhpcy5fZGF0YS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2RhdGEuZm9yRWFjaCgocm93OiBPZXBhVGFibGVSb3cpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ1RFU1Q6ICcgKyBKU09OLnN0cmluZ2lmeShyb3cuZGF0YVNvdXJjZSkgKyAnID09PSAnICsgSlNPTi5zdHJpbmdpZnkodG9nZ2xlUm93LmRhdGFTb3VyY2UpKTtcbiAgICAgICAgaWYgKHJvdy5kYXRhU291cmNlID09PSB0b2dnbGVSb3cuZGF0YVNvdXJjZSkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCchISEgTUFUQ0ggISEhJyk7XG4gICAgICAgICAgcm93LnNob3dEZXRhaWwgPSAhdG9nZ2xlUm93LnNob3dEZXRhaWw7XG4gICAgICAgICAgdG9nZ2xlUm93LnNob3dEZXRhaWwgPSByb3cuc2hvd0RldGFpbDtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnc2hvdyBkZXRhaWwgPSAnICsgcm93LnNob3dEZXRhaWwgKyAnIGZvciByb3c6ICcgKyBKU09OLnN0cmluZ2lmeShyb3cuZGF0YVNvdXJjZSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIHRoaXMuX2RhdGEgPSB0aGlzLl9kYXRhLnNwbGljZSgwKTtcbiAgICB9XG4gICAgLy8gY29uc29sZS5sb2coJ3RvZ2dsZVJvd0RldGFpbC4uLicpO1xuICAgIC8vIHRoaXMuZHVtcERldGFpbFJvd3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0FjdGlvbkNvbHVtbihjb2x1bW5JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gY29uc29sZS5sb2coJ2lzQWN0aW9uQ29sdW1uICcgKyBjb2x1bW5JZCk7XG4gICAgbGV0IGFjdGlvbkNvbHVtbiA9IGZhbHNlO1xuICAgIHRoaXMuaGVhZGVyUm93cy5mb3JFYWNoKChoZHI6IE9lcGFUYWJsZUhlYWRlcikgPT4ge1xuICAgICAgaGRyLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBPZXBhVGFibGVDb2x1bW4pID0+IHtcbiAgICAgICAgaWYgKGNvbHVtbi5pZCA9PT0gY29sdW1uSWQpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygndGVzdCBhY3Rpb24gY29sdW1uOiAnICsgY29sdW1uLmlkICsgJyAtICcgKyBjb2x1bW4uYWN0aW9uQ29sdW1uKTtcbiAgICAgICAgICBhY3Rpb25Db2x1bW4gPSBjb2x1bW4uYWN0aW9uQ29sdW1uIHx8IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWN0aW9uQ29sdW1uO1xuICB9XG5cbiAgcHVibGljIGlzQ29sdW1uSGlkZGVuKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBjb25zb2xlLmxvZygnaXNDb2x1bW5IaWRkZW4gJyArIGNvbHVtbklkKTtcbiAgICBsZXQgaGlkZGVuID0gZmFsc2U7XG4gICAgdGhpcy5oZWFkZXJSb3dzLmZvckVhY2goKGhkcjogT2VwYVRhYmxlSGVhZGVyKSA9PiB7XG4gICAgICBoZHIuY29sdW1ucy5mb3JFYWNoKChjb2x1bW46IE9lcGFUYWJsZUNvbHVtbikgPT4ge1xuICAgICAgICBpZiAoY29sdW1uLmlkID09PSBjb2x1bW5JZCkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd0ZXN0IGhpZGRlbiBjb2x1bW46ICcgKyBjb2x1bW4uaWQgKyAnIC0gJyArIGNvbHVtbi5oaWRkZW4pO1xuICAgICAgICAgIGhpZGRlbiA9IGNvbHVtbi5oaWRkZW4gfHwgZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBoaWRkZW47XG4gIH1cblxuICBwdWJsaWMgZ2V0SGlkZGVuQ29sdW1ucygpOiBBcnJheTxPZXBhVGFibGVDb2x1bW4+IHtcbiAgICBjb25zdCBjb2x1bW5zOiBBcnJheTxPZXBhVGFibGVDb2x1bW4+ID0gW107XG4gICAgdGhpcy5oZWFkZXJSb3dzLmZvckVhY2goKGhkcjogT2VwYVRhYmxlSGVhZGVyKSA9PiB7XG4gICAgICBoZHIuY29sdW1ucy5mb3JFYWNoKChjb2x1bW46IE9lcGFUYWJsZUNvbHVtbikgPT4ge1xuICAgICAgICBpZiAoY29sdW1uLmhpZGRlbikge1xuICAgICAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gY29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDZWxsQ2xhc3NOYW1lKHJvdzogT2VwYVRhYmxlUm93LCBjb2x1bW5JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgICByb3cuY2VsbHMuZm9yRWFjaCgoY2VsbDogT2VwYVRhYmxlQ2VsbCkgPT4ge1xuICAgICAgaWYgKGNlbGwuaWQgPT09IGNvbHVtbklkKSB7XG4gICAgICAgIHJlc3VsdCA9IGNlbGwuY2xhc3NOYW1lO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2VsbENvbFNwYW4ocm93OiBPZXBhVGFibGVSb3csIGNvbHVtbklkOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCByZXN1bHQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE7XG4gICAgcm93LmNlbGxzLmZvckVhY2goKGNlbGw6IE9lcGFUYWJsZUNlbGwpID0+IHtcbiAgICAgIGlmIChjZWxsLmlkID09PSBjb2x1bW5JZCkge1xuICAgICAgICByZXN1bHQgPSBjZWxsLmNvbFNwYW4gfHwgMCA+PTAgPyBjZWxsLmNvbFNwYW4gOiAxO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2VsbEljb25DbGFzc05hbWUocm93OiBPZXBhVGFibGVSb3csIGNvbHVtbklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuICAgIHJvdy5jZWxscy5mb3JFYWNoKChjZWxsOiBPZXBhVGFibGVDZWxsKSA9PiB7XG4gICAgICBpZiAoY2VsbC5pZCA9PT0gY29sdW1uSWQpIHtcbiAgICAgICAgcmVzdWx0ID0gY2VsbC5pY29uQ2xhc3NOYW1lO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2VsbEltZ1NyYyhyb3c6IE9lcGFUYWJsZVJvdywgY29sdW1uSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XG4gICAgcm93LmNlbGxzLmZvckVhY2goKGNlbGw6IE9lcGFUYWJsZUNlbGwpID0+IHtcbiAgICAgIGlmIChjZWxsLmlkID09PSBjb2x1bW5JZCkge1xuICAgICAgICByZXN1bHQgPSBjZWxsLmltZ1NyYztcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldENlbGxJbm5lckhUTUwocm93OiBPZXBhVGFibGVSb3csIGNvbHVtbklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuICAgIHJvdy5jZWxscy5mb3JFYWNoKChjZWxsOiBPZXBhVGFibGVDZWxsKSA9PiB7XG4gICAgICBpZiAoY2VsbC5pZCA9PT0gY29sdW1uSWQpIHtcbiAgICAgICAgcmVzdWx0ID0gY2VsbC5pbm5lckhUTUw7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBjZWxsQ2xpY2socm93OiBPZXBhVGFibGVSb3csIGNvbHVtbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0Um93VmFsdWUocm93LCBjb2x1bW5JZCk7XG4gICAgdGhpcy5jZWxsQ2xpY2tlZC5lbWl0KHsgcm93LCBjb2x1bW5JZCwgdmFsdWUgfSk7XG4gIH1cblxuICBwdWJsaWMgb25BY3Rpb25DbGljayhldmVudDogT2VwYUFjdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb25DbGlja2VkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUFsbFJvd3NTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dzOiBBcnJheTxPZXBhVGFibGVSb3c+ID0gW107XG4gICAgdGhpcy5hbGxSb3dzU2VsZWN0ZWQgPSAhdGhpcy5hbGxSb3dzU2VsZWN0ZWQ7XG4gICAgLy8gZGVzZWxlY3QgYWxsIHJvd3NcbiAgICB0aGlzLl9kYXRhLmZvckVhY2goKHI6IE9lcGFUYWJsZVJvdykgPT4ge1xuICAgICAgci5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIH0pO1xuICAgIC8vIHNlbGVjdCBvbmx5IHZpc2libGUgcm93c1xuICAgIHRoaXMucm93cy5mb3JFYWNoKChyOiBPZXBhVGFibGVSb3cpID0+IHtcbiAgICAgIGlmIChyLnNlbGVjdGFibGUpIHtcbiAgICAgICAgci5zZWxlY3RlZCA9IHRoaXMuYWxsUm93c1NlbGVjdGVkO1xuICAgICAgfVxuICAgICAgaWYgKHIuc2VsZWN0ZWQpIHtcbiAgICAgICAgc2VsZWN0ZWRSb3dzLnB1c2gocik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5yb3dzLnNsaWNlKCk7XG4gICAgLy8gdGhpcy51cGRhdGVUYWJsZSgpO1xuICAgIHRoaXMucm93U2VsZWN0ZWQuZW1pdChzZWxlY3RlZFJvd3MpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVJvd1NlbGVjdGlvbihyb3c6IE9lcGFUYWJsZVJvdyk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkUm93czogQXJyYXk8T2VwYVRhYmxlUm93PiA9IFtdO1xuICAgIHJvdy5zZWxlY3RlZCA9ICFyb3cuc2VsZWN0ZWQ7XG4gICAgdGhpcy5yb3dzLmZvckVhY2goKGRyOiBPZXBhVGFibGVSb3cpID0+IHtcbiAgICAgIGlmIChyb3cucHJpdmF0ZUlkID09PSBkci5wcml2YXRlSWQpIHtcbiAgICAgICAgZHIuc2VsZWN0ZWQgPSByb3cuc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgICBpZiAoZHIuc2VsZWN0ZWQpIHtcbiAgICAgICAgc2VsZWN0ZWRSb3dzLnB1c2goZHIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hbGxSb3dzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnJvd3Muc2xpY2UoKTtcbiAgICAvLyB0aGlzLnVwZGF0ZVRhYmxlKCk7XG4gICAgdGhpcy5yb3dTZWxlY3RlZC5lbWl0KHNlbGVjdGVkUm93cyk7XG4gIH1cblxuICBwdWJsaWMgc2luZ2xlUm93U2VsZWN0aW9uKHJvdzogT2VwYVRhYmxlUm93KTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dzOiBBcnJheTxPZXBhVGFibGVSb3c+ID0gW107XG4gICAgcm93LnNlbGVjdGVkID0gIXJvdy5zZWxlY3RlZDtcbiAgICAvLyBhZGQgcm93IHRvIHNlbGVjdGVkIHJvd3MgaWYgaXQgaXMgc2VsZWN0ZWRcbiAgICBpZiAocm93LnNlbGVjdGVkKSB7XG4gICAgICBzZWxlY3RlZFJvd3MucHVzaChyb3cpO1xuICAgIH1cbiAgICAvLyB1bnNlbGVjdCBhbnkgb3RoZXIgcm93IHRoYXQgbWF5IGJlIHNlbGVjdGVkXG4gICAgdGhpcy5fZGF0YS5mb3JFYWNoKChkcjogT2VwYVRhYmxlUm93KSA9PiB7XG4gICAgICBpZiAocm93LnByaXZhdGVJZCA9PT0gZHIucHJpdmF0ZUlkKSB7XG4gICAgICAgIGRyLnNlbGVjdGVkID0gcm93LnNlbGVjdGVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHIuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnJvd3Muc2xpY2UoKTtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlKCk7XG4gICAgdGhpcy5yb3dTZWxlY3RlZC5lbWl0KHNlbGVjdGVkUm93cyk7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVSb3dzRm9yRXhwb3J0KHJvd3M6IEFycmF5PE9lcGFUYWJsZVJvdz4pOiBBcnJheTxPZXBhVGFibGVSb3c+IHtcbiAgICBjb25zdCByZXN1bHQ6IEFycmF5PE9lcGFUYWJsZVJvdz4gPSBbXTtcbiAgICAvLyBjb25zb2xlLmxvZygncHJlcGFyZVJvd3NGb3JFeHBvcnQuLi4nKTtcbiAgICAvLyB0aGlzLmR1bXBEZXRhaWxSb3dzKCk7XG4gICAgaWYgKHJvd3MgJiYgcm93cy5sZW5ndGgpIHtcbiAgICAgIHJvd3MuZm9yRWFjaCgocm93OiBPZXBhVGFibGVSb3cpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3Nob3dEZXRhaWwgPSAnICsgcm93LnNob3dEZXRhaWwgKyAnICcgKyBKU09OLnN0cmluZ2lmeShyb3cuY2VsbHMpKTtcbiAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgIGNlbGxzOiByb3cuY2VsbHMsXG4gICAgICAgICAgYWN0aW9uczogcm93LmFjdGlvbnMsXG4gICAgICAgICAgc2hvd0RldGFpbDogcm93LnNob3dEZXRhaWwsXG4gICAgICAgICAgc3ViVGFibGU6IHJvdy5kZXRhaWwgPyB0aGlzLmNvbnZlcnRUb1RhYmxlKHJvdy5kZXRhaWwpIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGlzRGl2aWRlcjogcm93LmlzRGl2aWRlcixcbiAgICAgICAgICBkaXZpZGVyQ2xhc3NOYW1lOiByb3cuZGl2aWRlckNsYXNzTmFtZVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdhdGhlclRhYmxlRGF0YShyb3dzOiBPZXBhVGFibGVSb3dbXSk6IE9lcGFUYWJsZSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2dhdGhlclRhYmxlRGF0YS4uLicpO1xuICAgIC8vIHRoaXMuZHVtcERldGFpbFJvd3MoKTtcbiAgICBjb25zdCBvZXBhVGFibGU6IE9lcGFUYWJsZSA9IHt9O1xuICAgIG9lcGFUYWJsZS5oZWFkZXJSb3dzID0gdGhpcy5oZWFkZXJSb3dzO1xuICAgIG9lcGFUYWJsZS5hbGxEYXRhUm93cyA9IHRoaXMucHJlcGFyZVJvd3NGb3JFeHBvcnQocm93cyk7XG4gICAgb2VwYVRhYmxlLnNob3dBbGxEZXRhaWxzID0gdGhpcy5zaG93QWxsRGV0YWlscztcbiAgICBvZXBhVGFibGUuY2xhc3NOYW1lID0gdGhpcy5fY29uZmlnLmNsYXNzTmFtZTtcbiAgICBvZXBhVGFibGUudmlzaWJsZUNvbHVtbkNvdW50ID0gdGhpcy52aXNpYmxlQ29sdW1uQ291bnQ7XG4gICAgb2VwYVRhYmxlLmFsbENvbHVtbkNvdW50ID0gdGhpcy5hbGxDb2x1bW5Db3VudDtcbiAgICByZXR1cm4gb2VwYVRhYmxlO1xuICB9XG5cbiAgcHJpdmF0ZSBkdW1wRGV0YWlsUm93cygpIHtcbiAgICBjb25zb2xlLmxvZygnZHVtcERldGFpbFJvd3MgLSBUb3RhbCByb3dzOiAnICsgdGhpcy5fZGF0YS5sZW5ndGgpO1xuICAgIHRoaXMuX2RhdGEuZm9yRWFjaCgocm93OiBPZXBhVGFibGVSb3cpID0+IHtcbiAgICAgIGlmIChyb3cuc2hvd0RldGFpbCkge1xuICAgICAgICBjb25zb2xlLmxvZygnU0hPVyBERVRBSUw6ICcgKyBKU09OLnN0cmluZ2lmeShyb3cuZGF0YVNvdXJjZSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNvbnZlcnRUb1RhYmxlKHRlbXBsYXRlOiBPZXBhVGVtcGxhdGVJbmZvKTogT2VwYVRhYmxlIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgb2VwYVRhYmxlOiBPZXBhVGFibGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHRlbXBsYXRlLmNvbXBvbmVudCA9PT0gVGFibGVDb21wb25lbnQpIHtcbiAgICAgIGNvbnN0IHRhYmxlOiBUYWJsZUNvbXBvbmVudCA9IG5ldyBUYWJsZUNvbXBvbmVudCh0aGlzLnNhbml0aXplciwgdGhpcy50YWJsZVNlcnZpY2UsIHRoaXMudGFibGVFeHBvcnRTZXJ2aWNlLCB0aGlzLmZpbGVVdGlsU2VydmljZSk7XG4gICAgICBpZiAodGVtcGxhdGUuaW5wdXRzICYmIHRlbXBsYXRlLmlucHV0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRlbXBsYXRlLmlucHV0cy5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgICAgIGlmIChpbnB1dC5uYW1lID09PSAnY29uZmlnJykge1xuICAgICAgICAgICAgdGFibGUuY29uZmlnID0gaW5wdXQudmFsdWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5uYW1lID09PSAnY29tcGxleEhlYWRlcicpIHtcbiAgICAgICAgICAgIHRhYmxlLmNvbXBsZXhIZWFkZXIgPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0Lm5hbWUgPT09ICdoZWFkZXInKSB7XG4gICAgICAgICAgICB0YWJsZS5oZWFkZXIgPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0Lm5hbWUgPT09ICdkYXRhJykge1xuICAgICAgICAgICAgdGFibGUuZGF0YSA9IGlucHV0LnZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG9lcGFUYWJsZSA9IHRhYmxlLmdhdGhlclRhYmxlRGF0YSh0YWJsZS5kYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9lcGFUYWJsZTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVFeHBvcnRWaXNpYmxlT25seSgpIHtcbiAgICB0aGlzLmV4cG9ydFZpc2libGVPbmx5ID0gIXRoaXMuZXhwb3J0VmlzaWJsZU9ubHk7XG4gIH1cblxuICBwdWJsaWMgZXhwb3J0VG9FeGNlbCgpIHtcbiAgICBjb25zdCBleHBvcnRUYWJsZTogT2VwYVRhYmxlID0gdGhpcy5nYXRoZXJUYWJsZURhdGEodGhpcy5leHBvcnRWaXNpYmxlT25seSA/IHRoaXMucm93cyA6IHRoaXMuX2RhdGEpO1xuXG4gICAgdGhpcy50YWJsZUV4cG9ydFNlcnZpY2UuZG93bmxvYWRFeGNlbChleHBvcnRUYWJsZSwgdGhpcy5fY29uZmlnKS5zdWJzY3JpYmUoXG4gICAgICBkYXRhID0+IHtcbiAgICAgICAgdGhpcy5maWxlVXRpbFNlcnZpY2UuZG93bmxvYWRGaWxlKGRhdGEsICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvciA9PiBjb25zb2xlLmxvZyhlcnJvcilcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGV4cG9ydFRvSFRNTCgpIHtcbiAgICBjb25zdCBleHBvcnRUYWJsZTogT2VwYVRhYmxlID0gdGhpcy5nYXRoZXJUYWJsZURhdGEodGhpcy5leHBvcnRWaXNpYmxlT25seSA/IHRoaXMucm93cyA6IHRoaXMuX2RhdGEpO1xuXG4gICAgLy8gZm9yIG5vdywgYWx3YXlzIGVtYmVkIHN1Yi10YWJsZXMgIGluIEhUTUwgdmlldy5cbiAgICB0aGlzLnRhYmxlRXhwb3J0U2VydmljZS5kb3dubG9hZEhUTUwoZXhwb3J0VGFibGUsIHRoaXMuX2NvbmZpZykuc3Vic2NyaWJlKFxuICAgICAgZGF0YSA9PiB7XG4gICAgICAgIHRoaXMuZmlsZVV0aWxTZXJ2aWNlLmRvd25sb2FkRmlsZShkYXRhLCAndGV4dC9odG1sJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4gY29uc29sZS5sb2coZXJyb3IpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkN1c3RvbUJ0bkNsaWNrKCkge1xuICAgIHRoaXMuY3VzdG9tQnRuQ2xpY2tlZC5lbWl0KCk7XG4gIH1cblxufVxuIiwiPCEtLSBVbmhpZGUgc2VsZWN0IGlucHV0IC0gb25seSB2aXNpYmxlIGlmIG9uZSBvciBtb3JlIGNvbHVtbnMgYXJlIGhpZGRlbiAtLT5cblxuPGZvcm0gKm5nSWY9XCJoaWRkZW5Db2x1bW5zLmxlbmd0aCA+IDBcIj5cbiAgPGRpdiBjbGFzcz1cInJvdyBtYi0yXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiY29sLXNtLTIgY29sLWZvcm0tbGFiZWxcIj5TaG93IEhpZGRlbiBDb2x1bW5zOjwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XG4gICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiAoY2hhbmdlKT1cInVuaGlkZUNvbHVtbigkYW55KCRldmVudCkudGFyZ2V0LnZhbHVlKVwiIFtpZF09XCJ0YWJsZUlkKydfVW5oaWRlQ29sdW1uU2VsZWN0J1wiPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+Q2hvb3NlIGEgY29sdW1uPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNvbCBvZiBoaWRkZW5Db2x1bW5zXCIgW3ZhbHVlXT1cImNvbC5pZFwiPnt7Y29sLnRpdGxlfX08L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cbjwhLS0gVGhpcyBpcyB0aGUgdGFibGUgLS0+XG48ZGl2IG5nQ2xhc3M9XCJ7e2NvbmZpZy5kaXZDbGFzc05hbWUgfHwgJyd9fVwiID5cbjx0YWJsZSAqbmdJZj1cIiFjb25maWcuaGlkZVRhYmxlXCIgY2xhc3M9XCJ0YWJsZSBkYXRhVGFibGVcIiBuZ0NsYXNzPVwie3tjb25maWcuY2xhc3NOYW1lIHx8ICcnfX1cIiByb2xlPVwiZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XG5cbjwhLS0gVGhpcyBpcyB0aGUgdGFibGUgaGVhZGVyIC0tPlxuPHRoZWFkPlxuICA8IS0tIFRoZXJlIG1heSBiZSBtdWx0aXBsZSBoZWFkZXIgcm93cyAtLT5cbiAgPHRyICpuZ0Zvcj1cImxldCBoZHIgb2YgaGVhZGVyUm93czsgbGV0IGhyPWluZGV4O1wiIHJvbGU9XCJyb3dcIj5cbiAgICA8IS0tIERldGFpbHMgaW5kaWNhdG9yIGNvbHVtbiAoaWYgZGF0YSBoYXMgZGV0YWlscykgLS0+XG4gICAgPHRoICpuZ0lmPVwiZGF0YUhhc0RldGFpbHMgJiYgaHIgPT09IDBcIiBbcm93U3Bhbl09XCJoZWFkZXJSb3dzLmxlbmd0aFwiIGNsYXNzPVwiZGV0YWlsLWluZGljYXRvci1jb2xcIj5cbiAgICAgIDxzcGFuPlxuICAgICAgICA8aSAoY2xpY2spPVwidG9nZ2xlQWxsRGV0YWlscygpXCIgW2lkXT1cInRhYmxlSWQrJ19TaG93QWxsRGV0YWlsc0xpbmsnXCIgY2xhc3M9XCJiaVwiIFtuZ0NsYXNzXT1cInsnYmktY2hldnJvbi1kb3duJzogc2hvd0FsbERldGFpbHMsICdiaS1jaGV2cm9uLXJpZ2h0JzogIXNob3dBbGxEZXRhaWxzfVwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiKHNob3dBbGxEZXRhaWxzID8gJ0hpZGUnIDogJ1Nob3cnKSArICcgZGV0YWlscyBmb3IgYWxsIHJvd3MnXCIgcGxhY2VtZW50PVwicmlnaHRcIj5cbiAgICAgICAgPC9pPlxuICAgICAgPC9zcGFuPlxuICAgIDwvdGg+XG4gICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1jb2x1bW4gW25nRm9yT2ZdPVwiaGRyLmNvbHVtbnNcIiBsZXQtYz1cImluZGV4XCI+XG4gICAgICA8IS0tIEhlYWRlciBjZWxsIC0tPlxuICAgICAgPHRoICpuZ0lmPVwiIWNvbHVtbi5oaWRkZW5cIiBuZ0NsYXNzPVwie3tjb2x1bW4uY2xhc3NOYW1lIHx8ICcnfX1cIiBbY29sU3Bhbl09XCJjb2x1bW4uY29sc3BhbiB8fCAxXCIgW3Jvd1NwYW5dPVwiY29sdW1uLnJvd3NwYW4gfHwgMVwiPlxuICAgICAgICA8IS0tIFNlbGVjdCBhbGwgUm93cyBDaGVja2JveCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPGlucHV0ICpuZ0lmPVwiY29sdW1uLnNlbGVjdENvbHVtblwiIHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImFsbFJvd3NTZWxlY3RlZFwiIChjaGFuZ2UpPVwidG9nZ2xlQWxsUm93c1NlbGVjdGlvbigpXCI+XG5cbiAgICAgICAgICA8IS0tIEhlYWRlciBjZWxsIHRleHQgd2l0aCBzb3J0IGNhcGFiaWxpdHkgKGlmIHNwZWNpZmllZCkgLS0+XG4gICAgICAgICAgPHNwYW4gW29lcGFUYWJsZVNvcnRpbmddPVwidHJ1ZVwiIFtjb2x1bW5dPVwiY29sdW1uXCIgW3RhYmxlSWRdPVwidGFibGVJZFwiIChzb3J0Q2hhbmdlZCk9XCJvblNvcnRDaGFuZ2VkKCRldmVudClcIiBbaWRdPVwidGFibGVJZCsnX1NvcnRDb2x1bW5MaW5rXycrY29sdW1uLmlkXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbHVtbi5zb3J0XCI+PGkgY2xhc3M9XCJwdWxsLWxlZnQgYmlcIiBbbmdDbGFzc109XCJ7J2JpLWNoZXZyb24tZG93bic6IGNvbHVtbi5zb3J0ID09PSAnZGVzYycsICdiaS1jaGV2cm9uLXVwJzogY29sdW1uLnNvcnQgPT09ICdhc2MnfVwiPjwvaT5cbiAgICAgICAgICAgIDxzdXAgKm5nSWY9XCJjb2x1bW4/LnNvcnRJbmRleCB8fCAwID4gMVwiPnt7Y29sdW1uLnNvcnRJbmRleH19PC9zdXA+PC9zcGFuPlxuICAgICAgICAgICAge3tjb2x1bW4udGl0bGV9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8IS0tIGJ1dHRvbiB0byBhbGxvdyBjb2x1bW4gdG8gYmUgaGlkZGVuIChpZiBzcGVjaWZpZWQpIC0tPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb2x1bW4uaGlkZGVuID09PSBmYWxzZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZSBmbG9hdC1lbmRcIiBhcmlhLWxhYmVsPVwiSGlkZVwiIChjbGljayk9XCJoaWRlQ29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgW2lkXT1cInRhYmxlSWQrJ19IaWRlQ29sdW1uTGluaycrJ18nK2NvbHVtbi5pZFwiPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIGNvbHVtbiBmaWx0ZXIgKGlmIHNwZWNpZmllZCkgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIoKHJvd3MgJiYgcm93cy5sZW5ndGggPiAwKSB8fCAhbm9GaWx0ZXJzKCkpICYmIGNvbHVtbi5maWx0ZXJhYmxlXCIgPlxuICAgICAgICAgIDxpbnB1dCBbb2VwYVRhYmxlRmlsdGVyaW5nXT1cInsgZmlsdGVyU3RyaW5nOiAnJywgY29sdW1uSWQ6IGNvbHVtbi5pZCB9XCIgW3RhYmxlSWRdPVwidGFibGVJZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGlucHV0LXNtXCIgKHRhYmxlQ2hhbmdlZCk9XCJvbkZpbHRlckNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbaWRdPVwidGFibGVJZCsnX0ZpbHRlckNvbHVtbl8nK2NvbHVtbi5pZFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90aD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3RyPlxuPC90aGVhZD5cblxuPCEtLSBUaGlzIGlzIHRoZSB0YWJsZSBib2R5IC0tPlxuPHRib2R5PlxuICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LXJvdyBbbmdGb3JPZl09XCJyb3dzXCIgbGV0LXI9XCJpbmRleFwiPlxuICAgIDwhLS0gRGF0YSBSb3cgLS0+XG4gICAgPHRyPlxuICAgICAgPHRkICpuZ0lmPVwiZGF0YUhhc0RldGFpbHNcIj5cbiAgICAgICAgPCEtLSBEZXRhaWwgaWNvbiAoaWYgc3BlY2lmaWVkKSAtLT5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3cuc2hvd0RldGFpbCA9PT0gdHJ1ZSB8fCByb3cuc2hvd0RldGFpbCA9PT0gZmFsc2VcIj5cbiAgICAgICAgICA8aSAqbmdJZj1cInJvdy5kZXRhaWxJY29uQ2xhc3NOYW1lXCIgW25nQ2xhc3NdPVwicm93LmRldGFpbEljb25DbGFzc05hbWVcIj48L2k+XG4gICAgICAgICAgPGkgKGNsaWNrKT1cInRvZ2dsZVJvd0RldGFpbChyb3cpXCIgW2lkXT1cInRhYmxlSWQrJ19TaG93RGV0YWlsTGlua18nK3JcIiBjbGFzcz1cImJpXCIgW25nQ2xhc3NdPVwieydiaS1jaGV2cm9uLWRvd24nOiByb3cuc2hvd0RldGFpbCwgJ2JpLWNoZXZyb24tcmlnaHQnOiAhcm93LnNob3dEZXRhaWx9XCJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cIihyb3cuc2hvd0RldGFpbCA/ICdIaWRlJyA6ICdTaG93JykgKyAnIGRldGFpbHMgZm9yIHRoaXMgcm93J1wiIHBsYWNlbWVudD1cInJpZ2h0XCI+XG4gICAgICAgICAgPC9pPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3RkPlxuICAgICAgPCEtLSBJZiByb3cgaXMgYSBkaXZpZGVyLCBpdCBzcGFucyB0aGUgd2hvbGUgdGFibGUgLS0+XG4gICAgICA8IS0tIDx0ZCAqbmdJZj1cInJvdy5pc0RpdmlkZXJcIiBbY29sU3Bhbl09XCJ2aXNpYmxlQ29sdW1uQ291bnQgKyAoZGF0YUhhc0RldGFpbHMgPyAxIDogMClcIiBbbmdDbGFzc109XCJyb3cuZGl2aWRlckNsYXNzTmFtZSB8fCAnb2VwYS10YWJsZS1ncmF5J1wiPiZuYnNwOzwvdGQ+IC0tPlxuICAgICAgPCEtLSBEYXRhIFJvd3MgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCIhcm93LmlzRGl2aWRlclwiIG5nRm9yIGxldC1jb2wgW25nRm9yT2ZdPVwiZGF0YUNvbHVtbnNcIiBsZXQtaT1cImluZGV4XCI+XG4gICAgICAgIDx0ZCAqbmdJZj1cIiFjb2wuaGlkZGVuICYmIChyb3d8Y2VsbENvbHNwYW46Y29sKSA+IDBcIiBuZ0NsYXNzPVwie3tyb3d8Y2VsbENsYXNzbmFtZTpjb2wgfHwgJyd9fVwiIFtjb2xTcGFuXT1cInJvd3xjZWxsQ29sc3Bhbjpjb2xcIj5cbiAgICAgICAgICA8IS0tIERhdGEgQ2VsbCAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNvbC5hY3Rpb25Db2x1bW4gJiYgIWNvbC5zZWxlY3RDb2x1bW4gJiYgIWNvbC5zaW5nbGVTZWxlY3RDb2x1bW5cIj5cbiAgICAgICAgICAgIDwhLS0gVGVtcGxhdGUgZm9yIHBvcG92ZXIgMSAtLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcG9wb3ZlclRlbXBsYXRlPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93LnBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8Y21sLXRlbXBsYXRlIFt0ZW1wbGF0ZUluZm9dPVwicm93LnBvcG92ZXIuY29udGVudFwiPjwvY21sLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8IS0tIFBvcG92ZXIgMSBpY29uIChpZiBzcGVjaWZpZWQpIC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3cucG9wb3ZlciAmJiBpID09PSAocm93LnBvcG92ZXJDb2x1bW5JbmRleCB8fCAwKSAmJiByb3cucG9wb3ZlclwiIHRhYmluZGV4PVwiMFwiIFtwb3BvdmVyVGl0bGVdPVwicm93LnBvcG92ZXIudGl0bGVcIiBbcG9wb3Zlcl09XCJwb3BvdmVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbY29udGFpbmVyQ2xhc3NdPVwicm93LnBvcG92ZXIuY29udGFpbmVyQ2xhc3NcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIFt0cmlnZ2Vyc109XCJyb3cucG9wb3Zlci50cmlnZ2VyIHx8ICdtb3VzZWVudGVyOm1vdXNlbGVhdmUnXCI+XG4gICAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cInJvdy5wb3BvdmVyLmNsYXNzTmFtZVwiIFtpZF09XCJ0YWJsZUlkKydfUG9wb3ZlckxpbmtfJytyXCI+PC9pPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8IS0tIFRlbXBsYXRlIGZvciBwb3BvdmVyIDIgLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BvcG92ZXIyVGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3cucG9wb3ZlcjJcIj5cbiAgICAgICAgICAgICAgICA8Y21sLXRlbXBsYXRlIFt0ZW1wbGF0ZUluZm9dPVwicm93LnBvcG92ZXIyLmNvbnRlbnRcIj48L2NtbC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPCEtLSBQb3BvdmVyIDIgaWNvbiAoaWYgc3BlY2lmaWVkKSAtLT5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaSA9PT0gKHJvdy5wb3BvdmVyMkNvbHVtbkluZGV4IHx8IDApICYmIHJvdy5wb3BvdmVyMlwiIHRhYmluZGV4PVwiMFwiIFtwb3BvdmVyVGl0bGVdPVwicm93LnBvcG92ZXIyLnRpdGxlXCIgW3BvcG92ZXJdPVwicG9wb3ZlcjJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIFtjb250YWluZXJDbGFzc109XCJyb3cucG9wb3ZlcjIuY29udGFpbmVyQ2xhc3NcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIFt0cmlnZ2Vyc109XCJyb3cucG9wb3ZlcjIudHJpZ2dlciB8fCAnbW91c2VlbnRlcjptb3VzZWxlYXZlJ1wiPlxuICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJyb3cucG9wb3ZlcjIuY2xhc3NOYW1lXCIgW2lkXT1cInRhYmxlSWQrJ19Qb3BvdmVyMkxpbmtfJytyXCI+PC9pPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8IS0tIFRlbXBsYXRlIGZvciBwb3BvdmVyIDMgLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BvcG92ZXIzVGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3cucG9wb3ZlcjNcIj5cbiAgICAgICAgICAgICAgICA8Y21sLXRlbXBsYXRlIFt0ZW1wbGF0ZUluZm9dPVwicm93LnBvcG92ZXIzLmNvbnRlbnRcIj48L2NtbC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPCEtLSBQb3BvdmVyIDMgaWNvbiAoaWYgc3BlY2lmaWVkKSAtLT5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaSA9PT0gKHJvdy5wb3BvdmVyM0NvbHVtbkluZGV4IHx8IDApICYmIHJvdy5wb3BvdmVyM1wiIHRhYmluZGV4PVwiMFwiIFtwb3BvdmVyVGl0bGVdPVwicm93LnBvcG92ZXIzLnRpdGxlXCIgW3BvcG92ZXJdPVwicG9wb3ZlcjNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIFtjb250YWluZXJDbGFzc109XCJyb3cucG9wb3ZlcjMuY29udGFpbmVyQ2xhc3NcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIFt0cmlnZ2Vyc109XCJyb3cucG9wb3ZlcjMudHJpZ2dlciB8fCAnbW91c2VlbnRlcjptb3VzZWxlYXZlJ1wiPlxuICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJyb3cucG9wb3ZlcjMuY2xhc3NOYW1lXCIgW2lkXT1cInRhYmxlSWQrJ19Qb3BvdmVyM0xpbmtfJytyXCI+PC9pPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cInJvd3xjZWxsSW5uZXJIVE1MOmNvbFwiIFtpbm5lckhUTUxdPVwicm93fGNlbGxJbm5lckhUTUw6Y29sXCI+PC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiEocm93fGNlbGxJbm5lckhUTUw6Y29sKVwiPnt7cm93fGNlbGxWYWx1ZTpjb2x9fTwvc3Bhbj4gLS0+XG5cbiAgICAgICAgICAgIDwhLS0gSWYgY29sIGlzIGh5cGVybGluaywgZGlzcGxheSBkYXRhIGFzIGEgaHlwZXJsaW5rIC0tPlxuICAgICAgICAgICAgPGEgKm5nSWY9XCJjb2wuaHlwZXJsaW5rXCIgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgKGNsaWNrKT1cImNlbGxDbGljayhyb3csIGNvbC5pZClcIiBbaWRdPVwidGFibGVJZCsnX0NlbGxDbGlja18nK3IrJ18nK2lcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhKHJvd3xjZWxsSW5uZXJIVE1MOmNvbClcIj5cbiAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJyb3d8Y2VsbEljb25DbGFzc25hbWU6Y29sXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93fGNlbGxJbWdTcmM6Y29sXCI+PGltZyBbc3JjXT1cInJvd3xjZWxsSW1nU3JjOmNvbFwiLz48L3NwYW4+XG4gICAgICAgICAgICAgICAge3tyb3d8Y2VsbFZhbHVlOmNvbH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJvd3xjZWxsSW5uZXJIVE1MOmNvbFwiIFtpbm5lckhUTUxdPVwicm93fGNlbGxJbm5lckhUTUw6Y29sXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8IS0tIElmIGNvbCBpcyBOT1QgaHlwZXJsaW5rLCBqdXN0IGRpc3BsYXkgZGF0YSAtLT5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbC5oeXBlcmxpbmtcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhKHJvd3xjZWxsSW5uZXJIVE1MOmNvbClcIj5cbiAgICAgICAgICAgICAgICA8aSBuZ0NsYXNzPVwie3tyb3d8Y2VsbEljb25DbGFzc25hbWU6Y29sIHx8ICcnfX1cIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3d8Y2VsbEltZ1NyYzpjb2xcIj48aW1nIFtzcmNdPVwicm93fGNlbGxJbWdTcmM6Y29sXCIvPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB7e3Jvd3xjZWxsVmFsdWU6Y29sfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93fGNlbGxJbm5lckhUTUw6Y29sXCIgW2lubmVySFRNTF09XCJyb3d8Y2VsbElubmVySFRNTDpjb2xcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIFNlbGVjdCBDZWxsIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wuc2VsZWN0Q29sdW1uXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGlucHV0IFtpZF09XCJ0YWJsZUlkKydfJytyXCIgdHlwZT1cImNoZWNrYm94XCIgW2Rpc2FibGVkXT1cIiFyb3cuc2VsZWN0YWJsZVwiIFtjaGVja2VkXT1cInJvdy5zZWxlY3RlZFwiIChjaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKHJvdylcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIFNpbmdsZSBTZWxlY3QgQ2VsbCAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLnNpbmdsZVNlbGVjdENvbHVtblwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dCBbaWRdPVwidGFibGVJZCsnX3NpbmdsZVNlbGVjdF8nK3JcIiB0eXBlPVwicmFkaW9cIiBbZGlzYWJsZWRdPVwiIXJvdy5zZWxlY3RhYmxlXCIgW2NoZWNrZWRdPVwicm93LnNlbGVjdGVkXCIgKGNoYW5nZSk9XCJzaW5nbGVSb3dTZWxlY3Rpb24ocm93KVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gQWN0aW9uIEJ1dHRvbiBDZWxsIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wuYWN0aW9uQ29sdW1uICYmIHJvdy5hY3Rpb25zXCI+XG4gICAgICAgICAgICA8b2VwYS1hY3Rpb24tYnRuIFthY3Rpb25zXT1cInJvdy5hY3Rpb25zXCIgW2RhdGFdPVwicm93LmRhdGFTb3VyY2VcIiAgKGFjdGlvbkNsaWNrZWQpPVwib25BY3Rpb25DbGljaygkZXZlbnQpXCIgW2J0bklkXT1cInRhYmxlSWQrJ18nK3JcIj48L29lcGEtYWN0aW9uLWJ0bj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC90cj5cblxuICAgIDwhLS0gRGV0YWlsIFJvdyAtLT5cbiAgICA8dHIgKm5nSWY9XCJyb3cuc2hvd0RldGFpbFwiIGNsYXNzPVwidGFibGUtaW5mb1wiPlxuICAgICAgPHRkIFtjb2xTcGFuXT1cInZpc2libGVDb2x1bW5Db3VudCArIChkYXRhSGFzRGV0YWlscyA/IDEgOiAwKVwiPlxuICAgICAgICA8Y21sLXRlbXBsYXRlIFt0ZW1wbGF0ZUluZm9dPVwicm93LmRldGFpbFwiPjwvY21sLXRlbXBsYXRlPlxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8dHIgKm5nSWY9XCJ0b3RhbFJvd1wiPlxuICAgIDx0ZCAqbmdJZj1cImRhdGFIYXNEZXRhaWxzXCI+XG4gICAgPC90ZD5cbiAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtdG90YWxDb2wgW25nRm9yT2ZdPVwiZGF0YUNvbHVtbnNcIj5cbiAgICAgICAgICA8dGQgKm5nSWY9XCIhdG90YWxDb2wuaGlkZGVuXCIgbmdDbGFzcz1cInt7dG90YWxSb3d8Y2VsbENsYXNzbmFtZTp0b3RhbENvbCB8fCAnJ319XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgPHNwYW4+PGkgbmdDbGFzcz1cInt7dG90YWxSb3d8Y2VsbEljb25DbGFzc25hbWU6dG90YWxDb2wgfHwgJyd9fVwiPjwvaT57e3RvdGFsUm93fGNlbGxWYWx1ZTp0b3RhbENvbH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvdHI+XG48L3Rib2R5PlxuPC90YWJsZT5cbjwvZGl2PlxuPCEtLSBUYWJsZSBmb290ZXIgLS0+XG48Zm9ybSAqbmdJZj1cIiFjb25maWcuaGlkZUZvb3RlciB8fCAoZGF0YSAmJiBwYWdlSW5mby5pdGVtc1BlclBhZ2UgPCBkYXRhLmxlbmd0aClcIiBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiPlxuPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IHRleHQtcmlnaHRcIj5cbiAgPCEtLSBUYWJsZS13aWRlIGZpbHRlciAtLT5cbiAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgIDxpbnB1dCAqbmdJZj1cIiFjb25maWcuaGlkZUdsb2JhbEZpbHRlclwiIHBsYWNlaG9sZGVyPVwiRmlsdGVyIGFsbCBjb2x1bW5zXCIgW29lcGFUYWJsZUZpbHRlcmluZ109XCJ7IGZpbHRlclN0cmluZzogJycgfVwiIFt0YWJsZUlkXT1cInRhYmxlSWRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBpbnB1dC1zbVwiICh0YWJsZUNoYW5nZWQpPVwib25GaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIFtpZF09XCJ0YWJsZUlkKydfRmlsdGVyQWxsQ29sdW1uc0lucHV0J1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZy5zaG93Um93Q291bnRJbkZvb3RlciAmJiBfZGF0YSAmJiBfZGF0YS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1zZWNvbmRhcnlcIiBzdHlsZT1cImNvbG9yOiAjOTk5XCI+e3tfZGF0YS5sZW5ndGh9fTwvc3Bhbj4mbmJzcDt0b3RhbCByb3dzXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBFeHBvcnQgQnV0dG9ucyAtLT5cbiAgPGRpdiBjbGFzcz1cImNvbC1zbS00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImNvbmZpZy5leHBvcnRUb0V4Y2VsXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXItMVwiIChjbGljayk9XCJleHBvcnRUb0V4Y2VsKClcIiBbaWRdPVwidGFibGVJZCsnX0V4cG9ydFRvRXhjZWxCdG4nXCI+RXhwb3J0IHRvIEV4Y2VsPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiY29uZmlnLmV4cG9ydFRvSFRNTFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1yLTFcIiAoY2xpY2spPVwiZXhwb3J0VG9IVE1MKClcIiBbaWRdPVwidGFibGVJZCsnX0V4cG9ydFRvSFRNTEJ0bidcIj5FeHBvcnQgdG8gSFRNTDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY3VzdG9tQnRuVmlzaWJsZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtci0xXCIgKGNsaWNrKT1cIm9uQ3VzdG9tQnRuQ2xpY2soKVwiIFtpZF09XCJ0YWJsZUlkKydfQ3VzdG9tQnRuJ1wiIFtkaXNhYmxlZF09XCIhY3VzdG9tQnRuRW5hYmxlZFwiPnt7Y3VzdG9tQnRuTGFiZWx9fTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmV4cG9ydFRvRXhjZWwgfHwgY29uZmlnLmV4cG9ydFRvSFRNTFwiIGNsYXNzPVwiY29sLXNtLTEyIHRleHQtY2VudGVyXCI+XG4gICAgICAgIDxzcGFuPkV4cG9ydCBvbmx5IHZpc2libGUgZGF0YTombmJzcDtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiZXhwb3J0VmlzaWJsZU9ubHlcIiAoY2xpY2spPVwidG9nZ2xlRXhwb3J0VmlzaWJsZU9ubHkoKVwiIGlkPVwiZXhwb3J0VmlzaWJsZU9ubHlDaGVja2JveFwiLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tIFBhZ2luYXRpb24gLS0+XG4gIDxkaXYgKm5nSWY9XCIhY29uZmlnLmRpc2FibGVQYWdpbmF0aW9uXCIgY2xhc3M9XCJjb2wtc20tNCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgIDxwYWdpbmF0aW9uICpuZ0lmPVwicGFnaW5hdGlvbk9uXCIgY2xhc3M9XCJwYWdpbmF0aW9uLXNtXCIgW3RvdGFsSXRlbXNdPVwicGFnZUluZm8ubGVuZ3RoXCIgW2l0ZW1zUGVyUGFnZV09XCJwYWdlSW5mby5pdGVtc1BlclBhZ2VcIiBbbWF4U2l6ZV09XCJwYWdlSW5mby5tYXhTaXplXCJcbiAgICAgIFsobmdNb2RlbCldPVwiY3VycmVudFBhZ2VcIiBuYW1lPVwiY3VycmVudFRhYmxlUGFnZVwiXG4gICAgICBbYm91bmRhcnlMaW5rc109XCJ0cnVlXCIgW3JvdGF0ZV09XCJmYWxzZVwiIChwYWdlQ2hhbmdlZCk9XCJvblBhZ2VDaGFuZ2VkKCRldmVudClcIiAobnVtUGFnZXMpPVwicGFnZUluZm8ubnVtUGFnZXMgPSAkZXZlbnRcIj5cbiAgICA8L3BhZ2luYXRpb24+XG4gICAgJm5ic3A7XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlUGFnaW5nYXRpb24oKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc20gbXItMVwiPnt7IHBhZ2luYXRpb25PbiA/ICdTaG93IEFsbCBSb3dzJyA6ICdSZXN0b3JlIFBhZ2luYXRpb24nfX08L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwvZm9ybT4iXX0=
|
|
@@ -1702,7 +1702,7 @@ class TableComponent {
|
|
|
1702
1702
|
toggleRowSelection(row) {
|
|
1703
1703
|
const selectedRows = [];
|
|
1704
1704
|
row.selected = !row.selected;
|
|
1705
|
-
this.
|
|
1705
|
+
this.rows.forEach((dr) => {
|
|
1706
1706
|
if (row.privateId === dr.privateId) {
|
|
1707
1707
|
dr.selected = row.selected;
|
|
1708
1708
|
}
|
|
@@ -3027,7 +3027,7 @@ class PTableComponent {
|
|
|
3027
3027
|
toggleRowSelection(row) {
|
|
3028
3028
|
const selectedRows = [];
|
|
3029
3029
|
row.selected = !row.selected;
|
|
3030
|
-
this.
|
|
3030
|
+
this.rows.forEach((dr) => {
|
|
3031
3031
|
if (row.privateId === dr.privateId) {
|
|
3032
3032
|
dr.selected = row.selected;
|
|
3033
3033
|
}
|
|
@@ -9248,7 +9248,7 @@ class OepaReferenceService {
|
|
|
9248
9248
|
countiesUrl = '/ebiz/api/v2/references/counties/state';
|
|
9249
9249
|
townshipsUrl = '/ebiz/api/v2/references/townships/counties/code';
|
|
9250
9250
|
districtsUrl = '/ebiz/api/v2/references/districts';
|
|
9251
|
-
doLaaTypessUrl = '/ebiz/api/
|
|
9251
|
+
doLaaTypessUrl = '/ebiz/api/v2/asbestos/references/doLaaTypes';
|
|
9252
9252
|
params = {};
|
|
9253
9253
|
constructor(http, ebizRootURL, app) {
|
|
9254
9254
|
this.http = http;
|