@worktile/theia 14.3.14 → 14.3.16

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.
@@ -69,6 +69,7 @@ export class TheTableContextMenuService {
69
69
  actionHandle: (item) => {
70
70
  const { targetRowIndex } = this.getTargetRowOrColIndex();
71
71
  TableEditor.insertRow(this.editor, item.count, targetRowIndex);
72
+ this.tableStore.updateCellPositionRefs(item.count);
72
73
  this.tableStore.changeCells();
73
74
  }
74
75
  },
@@ -95,6 +96,7 @@ export class TheTableContextMenuService {
95
96
  actionHandle: (item) => {
96
97
  const { targetColIndex } = this.getTargetRowOrColIndex();
97
98
  TableEditor.insertColumn(this.editor, item.count, targetColIndex);
99
+ this.tableStore.updateCellPositionRefs(0, item.count);
98
100
  this.tableStore.changeCells();
99
101
  }
100
102
  },
@@ -210,8 +212,8 @@ export class TheTableContextMenuService {
210
212
  }
211
213
  openMenuList(event) {
212
214
  this.ngZone.run(() => {
213
- const { selectedCells, isFullscreen, selectedRowsIndex, selectedColumnsIndex } = this.tableStore;
214
- const tableInfo = { selectedCells, isFullscreen, selectedRowsIndex, selectedColumnsIndex };
215
+ const { selectedCells, isFullscreen, selectedRowsIndex, selectedColumnsIndex, isSelectedTable } = this.tableStore;
216
+ const tableInfo = { selectedCells, isFullscreen, selectedRowsIndex, selectedColumnsIndex, isSelectedTable };
215
217
  const { row, col } = this.getSelectedCell();
216
218
  setCellMenuVisibility(this.editor, this.menuEntities, tableInfo);
217
219
  this.menuEntities.forEach(item => {
@@ -284,4 +286,4 @@ TheTableContextMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12
284
286
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TheTableContextMenuService, decorators: [{
285
287
  type: Injectable
286
288
  }], ctorParameters: function () { return [{ type: i1.TheColorSelectService }, { type: i2.TableStore }, { type: i3.ThyPopover }, { type: i0.NgZone }, { type: i4.TheContextService }]; } });
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29udGV4dG1lbnUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9zZXJ2aWNlcy90YWJsZS1jb250ZXh0bWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMxRixPQUFPLEVBQWMsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRTFGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxzQkFBc0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBR2hELE1BQU0sT0FBTywwQkFBMEI7SUFlbkMsWUFDWSxrQkFBeUMsRUFDekMsVUFBc0IsRUFDdEIsVUFBc0IsRUFDdEIsTUFBYyxFQUNkLGlCQUFvQztRQUpwQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXVCO1FBQ3pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUdoRCxpQkFBWSxHQUFpQjtZQUN6QjtnQkFDSSxHQUFHLEVBQUUsa0JBQWtCO2dCQUN2QixJQUFJLEVBQUUsZUFBZTtnQkFDckIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsVUFBVSxFQUFFLGFBQWE7Z0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixZQUFZLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztnQkFDdEIsWUFBWSxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFO29CQUNoQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRTt3QkFDM0MsT0FBTztxQkFDVjtvQkFDRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUNyQyxLQUFLLENBQUMsTUFBcUIsRUFDM0IsSUFBSSxDQUFDLGVBQWUsRUFDcEIsZ0JBQWdCLEVBQ2hCO3dCQUNJLGtCQUFrQixFQUFFLENBQUM7d0JBQ3JCLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTt3QkFDcEMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtxQkFDL0UsRUFDRCxDQUFDLFFBQW1CLEVBQUUsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLFFBQVEsS0FBSywwQkFBMEIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxzQkFBc0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFOzRCQUM3RyxJQUFJLENBQUMsVUFBVSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUN6RDs2QkFBTTs0QkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLCtCQUErQixDQUFDLFFBQVEsQ0FBQyxDQUFDO3lCQUM3RDt3QkFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUN0QyxDQUFDLEVBQ0QsVUFBVSxFQUNWLENBQUMsQ0FDSixDQUFDO2dCQUNOLENBQUM7Z0JBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUU7b0JBQ3BDLElBQUksS0FBSyxDQUFDLGFBQWEsWUFBWSxXQUFXLEVBQUU7d0JBQzVDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLEVBQUU7NEJBQ2xFLE9BQU87eUJBQ1Y7cUJBQ0o7b0JBQ0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUU7d0JBQzNDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO3FCQUM5QztnQkFDTCxDQUFDO2FBQ0o7WUFFRDtnQkFDSSxHQUFHLEVBQUUsZUFBZSxDQUFDLFlBQVk7Z0JBQ2pDLElBQUksRUFBRSx1QkFBdUI7Z0JBQzdCLElBQUksRUFBRSxPQUFPO2dCQUNiLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixhQUFhLEVBQUUsSUFBSTtnQkFDbkIsVUFBVSxFQUFFLEdBQUc7Z0JBQ2YsWUFBWSxFQUFFLENBQUMsSUFBZ0IsRUFBRSxFQUFFO29CQUMvQixNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQ3pELFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUMvRCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQyxDQUFDO2FBQ0o7WUFDRDtnQkFDSSxHQUFHLEVBQUUsZUFBZSxDQUFDLGNBQWM7Z0JBQ25DLElBQUksRUFBRSx3QkFBd0I7Z0JBQzlCLElBQUksRUFBRSxPQUFPO2dCQUNiLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixhQUFhLEVBQUUsSUFBSTtnQkFDbkIsVUFBVSxFQUFFLEdBQUc7Z0JBQ2YsWUFBWSxFQUFFLENBQUMsSUFBZ0IsRUFBRSxFQUFFO29CQUMvQixNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM5RCxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbEMsQ0FBQzthQUNKO1lBQ0Q7Z0JBQ0ksR0FBRyxFQUFFLGVBQWUsQ0FBQyxpQkFBaUI7Z0JBQ3RDLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLElBQUksRUFBRSxPQUFPO2dCQUNiLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixhQUFhLEVBQUUsSUFBSTtnQkFDbkIsVUFBVSxFQUFFLEdBQUc7Z0JBQ2YsWUFBWSxFQUFFLENBQUMsSUFBZ0IsRUFBRSxFQUFFO29CQUMvQixNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQ3pELFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUNsRSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQyxDQUFDO2FBQ0o7WUFDRDtnQkFDSSxHQUFHLEVBQUUsZUFBZSxDQUFDLGtCQUFrQjtnQkFDdkMsSUFBSSxFQUFFLDRCQUE0QjtnQkFDbEMsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixVQUFVLEVBQUUsR0FBRztnQkFDZixZQUFZLEVBQUUsQ0FBQyxJQUFnQixFQUFFLEVBQUU7b0JBQy9CLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlELFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUNsRSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQyxDQUFDO2FBQ0o7WUFFRDtnQkFDSSxHQUFHLEVBQUUsaUJBQWlCO2dCQUN0QixJQUFJLEVBQUUsT0FBTztnQkFDYixPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUUsUUFBUTtnQkFDZCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLHlCQUF5QixFQUFFLENBQUM7b0JBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3RDLENBQUM7YUFDSjtZQUNEO2dCQUNJLEdBQUcsRUFBRSxhQUFhO2dCQUNsQixJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixJQUFJLEVBQUUsT0FBTztnQkFDYixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNDLENBQUM7YUFDSjtZQUNEO2dCQUNJLEdBQUcsRUFBRSxhQUFhO2dCQUNsQixJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixJQUFJLEVBQUUsT0FBTztnQkFDYixPQUFPLEVBQUUsSUFBSTtnQkFDYixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDZixTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMzQixDQUFDO2FBQ0o7WUFDRDtnQkFDSSxHQUFHLEVBQUUsdUJBQXVCO2dCQUM1QixJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixJQUFJLEVBQUUsT0FBTztnQkFDYixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLDRCQUE0QixFQUFFLENBQUM7b0JBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUN6QyxDQUFDO2dCQUNELFlBQVksRUFBRSxHQUFHLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN2QyxDQUFDO2FBQ0o7WUFDRDtnQkFDSSxHQUFHLEVBQUUsMEJBQTBCO2dCQUMvQixJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUUsT0FBTztnQkFDYixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLDRCQUE0QixFQUFFLENBQUM7b0JBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDMUMsQ0FBQztnQkFDRCxZQUFZLEVBQUUsR0FBRyxFQUFFO29CQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDMUMsQ0FBQzthQUNKO1lBQ0Q7Z0JBQ0ksR0FBRyxFQUFFLGNBQWM7Z0JBQ25CLElBQUksRUFBRSxPQUFPO2dCQUNiLElBQUksRUFBRSxNQUFNO2dCQUNaLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixZQUFZLEVBQUUsR0FBRyxFQUFFO29CQUNmLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzFDLENBQUM7Z0JBQ0QsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3hDLENBQUM7YUFDSjtTQUNKLENBQUM7SUE5S0MsQ0FBQztJQWxCSixJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsOEJBQThCLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBd0xELGVBQWU7UUFDWCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUM1QyxNQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlELE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN0RCxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU5RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFPLEdBQUcsSUFBSTtRQUNqQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDN0QsTUFBTSxlQUFlLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUM7UUFDakYsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQztRQUVqRixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBaUI7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2pCLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNqRyxNQUFNLFNBQVMsR0FBRyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztZQUMzRixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFakUsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzdCLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxLQUFLLGtCQUFrQjt3QkFDbkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLDhCQUE4QixFQUFFLENBQUM7d0JBQ3hFLE1BQU07b0JBQ1YsS0FBSyxlQUFlLENBQUMsWUFBWSxDQUFDO29CQUNsQyxLQUFLLGVBQWUsQ0FBQyxjQUFjO3dCQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQzt3QkFDakIsTUFBTTtvQkFDVixLQUFLLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDdkMsS0FBSyxlQUFlLENBQUMsa0JBQWtCO3dCQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQzt3QkFDakIsTUFBTTtpQkFDYjtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtnQkFDekQsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFxQjtnQkFDbkMsWUFBWSxFQUFFO29CQUNWLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtvQkFDL0IsWUFBWSxFQUFFLENBQUMsTUFBa0IsRUFBRSxFQUFFO3dCQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7NEJBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7eUJBQ3hCO3dCQUNELE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2hDLENBQUM7b0JBQ0QsWUFBWSxFQUFFLENBQUMsU0FBcUIsRUFBRSxNQUFrQixFQUFFLEVBQUU7d0JBQ3hELElBQUksTUFBTSxDQUFDLFlBQVksRUFBRTs0QkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO2dDQUN4QixXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDOzZCQUM1Qjs0QkFDRCxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3lCQUNsQztvQkFDTCxDQUFDO29CQUNELGdCQUFnQixFQUFFLENBQUMsU0FBcUIsRUFBRSxNQUFrQixFQUFFLEVBQUU7d0JBQzVELElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFOzRCQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUM7eUJBQ3pDO3dCQUNELElBQUksTUFBTSxDQUFDLGdCQUFnQixFQUFFOzRCQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7Z0NBQ3hCLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7NkJBQzVCOzRCQUNELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQzt5QkFDdEM7b0JBQ0wsQ0FBQztpQkFDSjtnQkFDRCxjQUFjLEVBQUU7b0JBQ1osQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRTtvQkFDZixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQ2I7Z0JBQ0QsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLFNBQVMsRUFBRSxZQUFZO2dCQUN2QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUMsZ0JBQWdCO2dCQUN0RSxhQUFhLEVBQUUsSUFBSTtnQkFDbkIsY0FBYyxFQUFFLEtBQUs7Z0JBQ3JCLGdCQUFnQixFQUFFLEtBQUs7YUFDMUIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDckM7SUFDTCxDQUFDOzt3SEE5UlEsMEJBQTBCOzRIQUExQiwwQkFBMEI7NEZBQTFCLDBCQUEwQjtrQkFEdEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlclJlZiwgVGh5UG9wb3ZlciB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaGVDb2xvclNlbGVjdFNlcnZpY2UgfSBmcm9tICcuL2NvbG9yLXNlbGVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi9wbHVnaW5zL3RhYmxlL3RhYmxlLnN0b3JlJztcbmltcG9ydCB7IFRhYmxlRWRpdG9yIH0gZnJvbSAnLi4vcGx1Z2lucy90YWJsZS90YWJsZS5lZGl0b3InO1xuaW1wb3J0IHsgc3BsaXRDZWxsIH0gZnJvbSAnLi4vcGx1Z2lucy90YWJsZS91dGlscy9zcGxpdC1jZWxsJztcbmltcG9ydCB7IHNldENlbGxNZW51VmlzaWJpbGl0eSB9IGZyb20gJy4uL3BsdWdpbnMvdGFibGUvdXRpbHMvc2V0LW1lbnUtY2VsbC1pbnZpc2liaWxpdHknO1xuaW1wb3J0IHsgTWVudUVudGl0eSwgVGFibGVJbnNlcnRUeXBlIH0gZnJvbSAnLi4vcGx1Z2lucy90YWJsZS90YWJsZS50eXBlcyc7XG5pbXBvcnQgeyBjYWxjdWxhdGVDZWxsU3BhbiwgZ2V0TGVmdENlbGxEaWN0IH0gZnJvbSAnLi4vcGx1Z2lucy90YWJsZS91dGlscy9tZXJnZS1jZWxsJztcbmltcG9ydCB7IGdldFNlbGVjdENlbGxOb2RlIH0gZnJvbSAnLi4vcGx1Z2lucy90YWJsZS91dGlscy9nZXQtc2VsZWN0LWNlbGwtbm9kZSc7XG5pbXBvcnQgeyBUaGVDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29udGV4dG1lbnUvY29udGV4dG1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFja2dyb3VuZENvbG9ycywgQ29sb3JUeXBlLCBTcGVjaWFsQmFja2dyb3VuZENvbG9yLCBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyByZWZvY3VzLCByZVNlbGVjdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRoZVRhYmxlQ29udGV4dE1lbnVTZXJ2aWNlIHtcbiAgICBtZW51UmVmOiBUaHlQb3BvdmVyUmVmPFRoZUNvbnRleHRNZW51Q29tcG9uZW50PjtcblxuICAgIGdldCBpc09wZW5lZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVudVJlZiAmJiB0aGlzLm1lbnVSZWYuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgfVxuXG4gICAgZ2V0IGVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVTdG9yZSAmJiB0aGlzLnRhYmxlU3RvcmUuZWRpdG9yO1xuICAgIH1cblxuICAgIGdldCBiYWNrZ3JvdW5kQ29sb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlU3RvcmUuZ2V0U2VsZWN0ZWRDZWxsQmFja2dyb3VuZENvbG9yKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29sb3JTZWxlY3RTZXJ2aWNlOiBUaGVDb2xvclNlbGVjdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGFibGVTdG9yZTogVGFibGVTdG9yZSxcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHRoZUNvbnRleHRTZXJ2aWNlOiBUaGVDb250ZXh0U2VydmljZVxuICAgICkge31cblxuICAgIG1lbnVFbnRpdGllczogTWVudUVudGl0eVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdiYWNrZ3JvdW5kLWNvbG9yJyxcbiAgICAgICAgICAgIGljb246ICdiYWNrZ3JvdW5kLXR0JyxcbiAgICAgICAgICAgIGRpdmlkZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lOiAn5Y2V5YWD5qC86IOM5pmvJyxcbiAgICAgICAgICAgIGV4dGVuZEljb246ICdhbmdsZS1yaWdodCcsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoKSA9PiB7fSxcbiAgICAgICAgICAgIGFjdGl2ZUhhbmRsZTogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sb3JTZWxlY3RTZXJ2aWNlLmlzT3BlbkNvbG9yU2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgaXNIZWFkZXIgPSBUYWJsZUVkaXRvci5pc0FjdGl2ZUhlYWRlcih0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xvclNlbGVjdFNlcnZpY2UudG9nZ2xlQ29sb3JTZWxlY3QoXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIEJhY2tncm91bmRDb2xvcnMsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlclJvd0NvbG9yTnVtYmVyczogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd09wdGlvbnM6IHsgMTogJyNiYmInLCAyOiAnI2JiYicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxDb2xvcjogaXNIZWFkZXIgPyBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciA6IFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKG5ld0NvbG9yOiBDb2xvclR5cGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobmV3Q29sb3IgPT09IFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yICYmIGlzSGVhZGVyKSB8fCAobmV3Q29sb3IgPT09IFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3IgJiYgIWlzSGVhZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXRTZWxlY3RlZENlbGxzQmFja2dyb3VuZENvbG9yKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0U2VsZWN0ZWRDZWxsc0JhY2tncm91bmRDb2xvcihuZXdDb2xvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0Rmlyc3RDZWxsKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICdyaWdodFRvcCcsXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlYWN0aXZhdGVIYW5kbGU6IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnJlbGF0ZWRUYXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjb2xvci1zZWxlY3QtY29udGFpbmVyJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb2xvclNlbGVjdFNlcnZpY2UuaXNPcGVuQ29sb3JTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2xvclNlbGVjdFNlcnZpY2UuY2xvc2VDb2xvclNlbGVjdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFRhYmxlSW5zZXJ0VHlwZS5pbnNlcnRSb3dzVXAsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtaW5zZXJ0LXJvd3MtdG9wJyxcbiAgICAgICAgICAgIG5hbWU6ICflkJHkuIrmj5LlhaXooYwnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGlzSW5wdXROdW1iZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lU3VmZml4OiAn6KGMJyxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKGl0ZW06IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFJvd0luZGV4IH0gPSB0aGlzLmdldFRhcmdldFJvd09yQ29sSW5kZXgoKTtcbiAgICAgICAgICAgICAgICBUYWJsZUVkaXRvci5pbnNlcnRSb3codGhpcy5lZGl0b3IsIGl0ZW0uY291bnQsIHRhcmdldFJvd0luZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2hhbmdlQ2VsbHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBUYWJsZUluc2VydFR5cGUuaW5zZXJ0Um93c0Rvd24sXG4gICAgICAgICAgICBpY29uOiAndGFibGUtaW5zZXJ0LXJvd3MtZG93bicsXG4gICAgICAgICAgICBuYW1lOiAn5ZCR5LiL5o+S5YWl6KGMJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBpc0lucHV0TnVtYmVyOiB0cnVlLFxuICAgICAgICAgICAgbmFtZVN1ZmZpeDogJ+ihjCcsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6IChpdGVtOiBNZW51RW50aXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRSb3dJbmRleCB9ID0gdGhpcy5nZXRUYXJnZXRSb3dPckNvbEluZGV4KGZhbHNlKTtcbiAgICAgICAgICAgICAgICBUYWJsZUVkaXRvci5pbnNlcnRSb3codGhpcy5lZGl0b3IsIGl0ZW0uY291bnQsIHRhcmdldFJvd0luZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2hhbmdlQ2VsbHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBUYWJsZUluc2VydFR5cGUuaW5zZXJ0Q29sdW1uc0xlZnQsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtaW5zZXJ0LWNvbHVtbnMtbGVmdCcsXG4gICAgICAgICAgICBuYW1lOiAn5ZCR5bem5o+S5YWl5YiXJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBpc0lucHV0TnVtYmVyOiB0cnVlLFxuICAgICAgICAgICAgbmFtZVN1ZmZpeDogJ+WIlycsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6IChpdGVtOiBNZW51RW50aXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRDb2xJbmRleCB9ID0gdGhpcy5nZXRUYXJnZXRSb3dPckNvbEluZGV4KCk7XG4gICAgICAgICAgICAgICAgVGFibGVFZGl0b3IuaW5zZXJ0Q29sdW1uKHRoaXMuZWRpdG9yLCBpdGVtLmNvdW50LCB0YXJnZXRDb2xJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNoYW5nZUNlbGxzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogVGFibGVJbnNlcnRUeXBlLmluc2VydENvbHVtbnNSaWdodCxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1pbnNlcnQtY29sdW1ucy1yaWdodCcsXG4gICAgICAgICAgICBkaXZpZGVyOiB0cnVlLFxuICAgICAgICAgICAgbmFtZTogJ+WQkeWPs+aPkuWFpeWIlycsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgaXNJbnB1dE51bWJlcjogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVTdWZmaXg6ICfliJcnLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoaXRlbTogTWVudUVudGl0eSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0Q29sSW5kZXggfSA9IHRoaXMuZ2V0VGFyZ2V0Um93T3JDb2xJbmRleChmYWxzZSk7XG4gICAgICAgICAgICAgICAgVGFibGVFZGl0b3IuaW5zZXJ0Q29sdW1uKHRoaXMuZWRpdG9yLCBpdGVtLmNvdW50LCB0YXJnZXRDb2xJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNoYW5nZUNlbGxzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnY2xlYXItc2VsZWN0aW9uJyxcbiAgICAgICAgICAgIGljb246ICdzd2VlcCcsXG4gICAgICAgICAgICBkaXZpZGVyOiB0cnVlLFxuICAgICAgICAgICAgbmFtZTogJ+a4heepuumAieS4reWMuuWfnycsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxsc0NvbnRlbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0Rmlyc3RDZWxsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ21lcmdlLWNlbGxzJyxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1tZXJnZS1jZWxscycsXG4gICAgICAgICAgICBuYW1lOiAn5ZCI5bm25Y2V5YWD5qC8JyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUubWVyZ2VDZWxsKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnc3BsaXQtY2VsbHMnLFxuICAgICAgICAgICAgaWNvbjogJ3RhYmxlLXVubWVyZ2UtY2VsbHMnLFxuICAgICAgICAgICAgbmFtZTogJ+aLhuWIhuWNleWFg+agvCcsXG4gICAgICAgICAgICBkaXZpZGVyOiB0cnVlLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNwbGl0Q2VsbCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2RlbGV0ZS1zZWxlY3Rpb24tcm93cycsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtZGVsZXRlLXJvd3MnLFxuICAgICAgICAgICAgbmFtZTogJ+WIoOmZpOaJgOWcqOihjCcsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnJlbW92ZURhbmdlcm91c0NvbHVtbnNPclJvd3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJEYW5nZXJvdXNDZWxscygpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhclNlbGVjdGVkQ2VsbHMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY3RpdmVIYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0RGFuZ2Vyb3VzUm93cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdkZWxldGUtc2VsZWN0aW9uLWNvbHVtbnMnLFxuICAgICAgICAgICAgaWNvbjogJ3RhYmxlLWRlbGV0ZS1jb2x1bW5zJyxcbiAgICAgICAgICAgIGRpdmlkZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lOiAn5Yig6Zmk5omA5Zyo5YiXJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUucmVtb3ZlRGFuZ2Vyb3VzQ29sdW1uc09yUm93cygpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhckRhbmdlcm91c0NlbGxzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWN0aXZlSGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNldERhbmdlcm91c0NvbHVtbnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnZGVsZXRlLXRhYmxlJyxcbiAgICAgICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgICAgICBuYW1lOiAn5Yig6Zmk6KGo5qC8JyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBUYWJsZUVkaXRvci5yZW1vdmVUYWJsZSh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY3RpdmVIYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0RGFuZ2Vyb3VzVGFibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBnZXRTZWxlY3RlZENlbGwoKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy50YWJsZVN0b3JlLnNlbGVjdGVkQ2VsbHM7XG4gICAgICAgIGNvbnN0IHNlbGVjdENlbGxOb2RlcyA9IGdldFNlbGVjdENlbGxOb2RlKHRoaXMuZWRpdG9yLCBjZWxscyk7XG4gICAgICAgIGNvbnN0IGxlZnRDZWxsRGljdCA9IGdldExlZnRDZWxsRGljdChzZWxlY3RDZWxsTm9kZXMpO1xuICAgICAgICBjb25zdCB7IHJvd3NwYW4sIGNvbHNwYW4gfSA9IGNhbGN1bGF0ZUNlbGxTcGFuKHNlbGVjdENlbGxOb2RlcywgbGVmdENlbGxEaWN0KTtcblxuICAgICAgICByZXR1cm4geyByb3c6IHJvd3NwYW4sIGNvbDogY29sc3Bhbiwgc2VsZWN0Q2VsbE5vZGVzIH07XG4gICAgfVxuXG4gICAgZ2V0VGFyZ2V0Um93T3JDb2xJbmRleChpc0Zyb250ID0gdHJ1ZSkge1xuICAgICAgICBjb25zdCB7IHJvdywgY29sLCBzZWxlY3RDZWxsTm9kZXMgfSA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsKCk7XG4gICAgICAgIGNvbnN0IGZpcnN0U2VsZWN0Q2VsbCA9IHNlbGVjdENlbGxOb2Rlc1swXTtcbiAgICAgICAgY29uc3QgdGFyZ2V0Um93SW5kZXggPSBpc0Zyb250ID8gZmlyc3RTZWxlY3RDZWxsLnJvdyA6IHJvdyArIGZpcnN0U2VsZWN0Q2VsbC5yb3c7XG4gICAgICAgIGNvbnN0IHRhcmdldENvbEluZGV4ID0gaXNGcm9udCA/IGZpcnN0U2VsZWN0Q2VsbC5jb2wgOiBjb2wgKyBmaXJzdFNlbGVjdENlbGwuY29sO1xuXG4gICAgICAgIHJldHVybiB7IHRhcmdldFJvd0luZGV4LCB0YXJnZXRDb2xJbmRleCB9O1xuICAgIH1cblxuICAgIG9wZW5NZW51TGlzdChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBzZWxlY3RlZENlbGxzLCBpc0Z1bGxzY3JlZW4sIHNlbGVjdGVkUm93c0luZGV4LCBzZWxlY3RlZENvbHVtbnNJbmRleCB9ID0gdGhpcy50YWJsZVN0b3JlO1xuICAgICAgICAgICAgY29uc3QgdGFibGVJbmZvID0geyBzZWxlY3RlZENlbGxzLCBpc0Z1bGxzY3JlZW4sIHNlbGVjdGVkUm93c0luZGV4LCBzZWxlY3RlZENvbHVtbnNJbmRleCB9O1xuICAgICAgICAgICAgY29uc3QgeyByb3csIGNvbCB9ID0gdGhpcy5nZXRTZWxlY3RlZENlbGwoKTtcbiAgICAgICAgICAgIHNldENlbGxNZW51VmlzaWJpbGl0eSh0aGlzLmVkaXRvciwgdGhpcy5tZW51RW50aXRpZXMsIHRhYmxlSW5mbyk7XG5cbiAgICAgICAgICAgIHRoaXMubWVudUVudGl0aWVzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChpdGVtLmtleSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdiYWNrZ3JvdW5kLWNvbG9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYmFja2dyb3VuZENvbG9yID0gdGhpcy50YWJsZVN0b3JlLmdldFNlbGVjdGVkQ2VsbEJhY2tncm91bmRDb2xvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVGFibGVJbnNlcnRUeXBlLmluc2VydFJvd3NVcDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUYWJsZUluc2VydFR5cGUuaW5zZXJ0Um93c0Rvd246XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNvdW50ID0gcm93O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVGFibGVJbnNlcnRUeXBlLmluc2VydENvbHVtbnNMZWZ0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRhYmxlSW5zZXJ0VHlwZS5pbnNlcnRDb2x1bW5zUmlnaHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNvdW50ID0gY29sO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLm1lbnVSZWYgPSB0aGlzLnRoeVBvcG92ZXIub3BlbihUaGVDb250ZXh0TWVudUNvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIG9yaWdpbjogZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICAgICAgICBtZW51RW50aXRpZXM6IHRoaXMubWVudUVudGl0aWVzLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25IYW5kbGU6IChlbnRpdHk6IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmb2N1cyh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkuYWN0aW9uSGFuZGxlKGVudGl0eSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUhhbmRsZTogKG1lbnVFdmVudDogTW91c2VFdmVudCwgZW50aXR5OiBNZW51RW50aXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5LmFjdGl2ZUhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlU2VsZWN0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5LmFjdGl2ZUhhbmRsZShtZW51RXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBkZWFjdGl2YXRlSGFuZGxlOiAobWVudUV2ZW50OiBNb3VzZUV2ZW50LCBlbnRpdHk6IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHkua2V5LmluZGV4T2YoJ2RlbGV0ZScpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJEYW5nZXJvdXNDZWxscygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eS5kZWFjdGl2YXRlSGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVTZWxlY3Rpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkuZGVhY3RpdmF0ZUhhbmRsZShtZW51RXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvcmlnaW5Qb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICB4OiBldmVudC54ICsgMzAsXG4gICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50LnlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21MZWZ0JyxcbiAgICAgICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLmdldE9wdGlvbnMoKS52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWUsXG4gICAgICAgICAgICAgICAgaW5zaWRlQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2xvc2VDb250ZXh0TWVudSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuZWQpIHtcbiAgICAgICAgICAgIHRoaXMubWVudVJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVudVJlZi5hZnRlckNsb3NlZCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29udGV4dG1lbnUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9zZXJ2aWNlcy90YWJsZS1jb250ZXh0bWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMxRixPQUFPLEVBQWMsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRTFGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxzQkFBc0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBR2hELE1BQU0sT0FBTywwQkFBMEI7SUFlbkMsWUFDWSxrQkFBeUMsRUFDekMsVUFBc0IsRUFDdEIsVUFBc0IsRUFDdEIsTUFBYyxFQUNkLGlCQUFvQztRQUpwQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXVCO1FBQ3pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUdoRCxpQkFBWSxHQUFpQjtZQUN6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QUFDLFNBQVMsRUFBRTtnQ0FDeEIsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzs2QkFDNUI7NEJBQ0QsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO3lCQUN0QztvQkFDTCxDQUFDO2lCQUNKO2dCQUNELGNBQWMsRUFBRTtvQkFDWixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFO29CQUNmLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDYjtnQkFDRCxXQUFXLEVBQUUsS0FBSztnQkFDbEIsU0FBUyxFQUFFLFlBQVk7Z0JBQ3ZCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxnQkFBZ0I7Z0JBQ3RFLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixjQUFjLEVBQUUsS0FBSztnQkFDckIsZ0JBQWdCLEVBQUUsS0FBSzthQUMxQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNyQztJQUNMLENBQUM7O3dIQWhTUSwwQkFBMEI7NEhBQTFCLDBCQUEwQjs0RkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyUmVmLCBUaHlQb3BvdmVyIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCB7IFRoZUNvbG9yU2VsZWN0U2VydmljZSB9IGZyb20gJy4vY29sb3Itc2VsZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uL3BsdWdpbnMvdGFibGUvdGFibGUuc3RvcmUnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuLi9wbHVnaW5zL3RhYmxlL3RhYmxlLmVkaXRvcic7XG5pbXBvcnQgeyBzcGxpdENlbGwgfSBmcm9tICcuLi9wbHVnaW5zL3RhYmxlL3V0aWxzL3NwbGl0LWNlbGwnO1xuaW1wb3J0IHsgc2V0Q2VsbE1lbnVWaXNpYmlsaXR5IH0gZnJvbSAnLi4vcGx1Z2lucy90YWJsZS91dGlscy9zZXQtbWVudS1jZWxsLWludmlzaWJpbGl0eSc7XG5pbXBvcnQgeyBNZW51RW50aXR5LCBUYWJsZUluc2VydFR5cGUgfSBmcm9tICcuLi9wbHVnaW5zL3RhYmxlL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IGNhbGN1bGF0ZUNlbGxTcGFuLCBnZXRMZWZ0Q2VsbERpY3QgfSBmcm9tICcuLi9wbHVnaW5zL3RhYmxlL3V0aWxzL21lcmdlLWNlbGwnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0Q2VsbE5vZGUgfSBmcm9tICcuLi9wbHVnaW5zL3RhYmxlL3V0aWxzL2dldC1zZWxlY3QtY2VsbC1ub2RlJztcbmltcG9ydCB7IFRoZUNvbnRleHRNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jb250ZXh0bWVudS9jb250ZXh0bWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kQ29sb3JzLCBDb2xvclR5cGUsIFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3IsIFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IHJlZm9jdXMsIHJlU2VsZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGhlVGFibGVDb250ZXh0TWVudVNlcnZpY2Uge1xuICAgIG1lbnVSZWY6IFRoeVBvcG92ZXJSZWY8VGhlQ29udGV4dE1lbnVDb21wb25lbnQ+O1xuXG4gICAgZ2V0IGlzT3BlbmVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51UmVmICYmIHRoaXMubWVudVJlZi5jb21wb25lbnRJbnN0YW5jZTtcbiAgICB9XG5cbiAgICBnZXQgZWRpdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZVN0b3JlICYmIHRoaXMudGFibGVTdG9yZS5lZGl0b3I7XG4gICAgfVxuXG4gICAgZ2V0IGJhY2tncm91bmRDb2xvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVTdG9yZS5nZXRTZWxlY3RlZENlbGxCYWNrZ3JvdW5kQ29sb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb2xvclNlbGVjdFNlcnZpY2U6IFRoZUNvbG9yU2VsZWN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0YWJsZVN0b3JlOiBUYWJsZVN0b3JlLFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXI6IFRoeVBvcG92ZXIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgdGhlQ29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbWVudUVudGl0aWVzOiBNZW51RW50aXR5W10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2JhY2tncm91bmQtY29sb3InLFxuICAgICAgICAgICAgaWNvbjogJ2JhY2tncm91bmQtdHQnLFxuICAgICAgICAgICAgZGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWU6ICfljZXlhYPmoLzog4zmma8nLFxuICAgICAgICAgICAgZXh0ZW5kSWNvbjogJ2FuZ2xlLXJpZ2h0JyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHt9LFxuICAgICAgICAgICAgYWN0aXZlSGFuZGxlOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb2xvclNlbGVjdFNlcnZpY2UuaXNPcGVuQ29sb3JTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBpc0hlYWRlciA9IFRhYmxlRWRpdG9yLmlzQWN0aXZlSGVhZGVyKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbG9yU2VsZWN0U2VydmljZS50b2dnbGVDb2xvclNlbGVjdChcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgQmFja2dyb3VuZENvbG9ycyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVyUm93Q29sb3JOdW1iZXJzOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93T3B0aW9uczogeyAxOiAnI2JiYicsIDI6ICcjYmJiJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbENvbG9yOiBpc0hlYWRlciA/IFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yIDogU3BlY2lhbEJhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAobmV3Q29sb3I6IENvbG9yVHlwZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuZXdDb2xvciA9PT0gVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3IgJiYgaXNIZWFkZXIpIHx8IChuZXdDb2xvciA9PT0gU3BlY2lhbEJhY2tncm91bmRDb2xvciAmJiAhaXNIZWFkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNldFNlbGVjdGVkQ2VsbHNCYWNrZ3JvdW5kQ29sb3IobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXRTZWxlY3RlZENlbGxzQmFja2dyb3VuZENvbG9yKG5ld0NvbG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZWxlY3RGaXJzdENlbGwoKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0VG9wJyxcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVhY3RpdmF0ZUhhbmRsZTogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnJlbGF0ZWRUYXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQucmVsYXRlZFRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2NvbG9yLXNlbGVjdC1jb250YWluZXInKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbG9yU2VsZWN0U2VydmljZS5pc09wZW5Db2xvclNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbG9yU2VsZWN0U2VydmljZS5jbG9zZUNvbG9yU2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogVGFibGVJbnNlcnRUeXBlLmluc2VydFJvd3NVcCxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1pbnNlcnQtcm93cy10b3AnLFxuICAgICAgICAgICAgbmFtZTogJ+WQkeS4iuaPkuWFpeihjCcsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgaXNJbnB1dE51bWJlcjogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVTdWZmaXg6ICfooYwnLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoaXRlbTogTWVudUVudGl0eSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0Um93SW5kZXggfSA9IHRoaXMuZ2V0VGFyZ2V0Um93T3JDb2xJbmRleCgpO1xuICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLmluc2VydFJvdyh0aGlzLmVkaXRvciwgaXRlbS5jb3VudCwgdGFyZ2V0Um93SW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS51cGRhdGVDZWxsUG9zaXRpb25SZWZzKGl0ZW0uY291bnQpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5jaGFuZ2VDZWxscygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFRhYmxlSW5zZXJ0VHlwZS5pbnNlcnRSb3dzRG93bixcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1pbnNlcnQtcm93cy1kb3duJyxcbiAgICAgICAgICAgIG5hbWU6ICflkJHkuIvmj5LlhaXooYwnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGlzSW5wdXROdW1iZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lU3VmZml4OiAn6KGMJyxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKGl0ZW06IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFJvd0luZGV4IH0gPSB0aGlzLmdldFRhcmdldFJvd09yQ29sSW5kZXgoZmFsc2UpO1xuICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLmluc2VydFJvdyh0aGlzLmVkaXRvciwgaXRlbS5jb3VudCwgdGFyZ2V0Um93SW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5jaGFuZ2VDZWxscygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFRhYmxlSW5zZXJ0VHlwZS5pbnNlcnRDb2x1bW5zTGVmdCxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1pbnNlcnQtY29sdW1ucy1sZWZ0JyxcbiAgICAgICAgICAgIG5hbWU6ICflkJHlt6bmj5LlhaXliJcnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGlzSW5wdXROdW1iZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lU3VmZml4OiAn5YiXJyxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKGl0ZW06IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldENvbEluZGV4IH0gPSB0aGlzLmdldFRhcmdldFJvd09yQ29sSW5kZXgoKTtcbiAgICAgICAgICAgICAgICBUYWJsZUVkaXRvci5pbnNlcnRDb2x1bW4odGhpcy5lZGl0b3IsIGl0ZW0uY291bnQsIHRhcmdldENvbEluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUudXBkYXRlQ2VsbFBvc2l0aW9uUmVmcygwLCBpdGVtLmNvdW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2hhbmdlQ2VsbHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBUYWJsZUluc2VydFR5cGUuaW5zZXJ0Q29sdW1uc1JpZ2h0LFxuICAgICAgICAgICAgaWNvbjogJ3RhYmxlLWluc2VydC1jb2x1bW5zLXJpZ2h0JyxcbiAgICAgICAgICAgIGRpdmlkZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lOiAn5ZCR5Y+z5o+S5YWl5YiXJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBpc0lucHV0TnVtYmVyOiB0cnVlLFxuICAgICAgICAgICAgbmFtZVN1ZmZpeDogJ+WIlycsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6IChpdGVtOiBNZW51RW50aXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRDb2xJbmRleCB9ID0gdGhpcy5nZXRUYXJnZXRSb3dPckNvbEluZGV4KGZhbHNlKTtcbiAgICAgICAgICAgICAgICBUYWJsZUVkaXRvci5pbnNlcnRDb2x1bW4odGhpcy5lZGl0b3IsIGl0ZW0uY291bnQsIHRhcmdldENvbEluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2hhbmdlQ2VsbHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdjbGVhci1zZWxlY3Rpb24nLFxuICAgICAgICAgICAgaWNvbjogJ3N3ZWVwJyxcbiAgICAgICAgICAgIGRpdmlkZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lOiAn5riF56m66YCJ5Lit5Yy65Z+fJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJTZWxlY3RlZENlbGxzQ29udGVudCgpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZWxlY3RGaXJzdENlbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnbWVyZ2UtY2VsbHMnLFxuICAgICAgICAgICAgaWNvbjogJ3RhYmxlLW1lcmdlLWNlbGxzJyxcbiAgICAgICAgICAgIG5hbWU6ICflkIjlubbljZXlhYPmoLwnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5tZXJnZUNlbGwodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdzcGxpdC1jZWxscycsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtdW5tZXJnZS1jZWxscycsXG4gICAgICAgICAgICBuYW1lOiAn5ouG5YiG5Y2V5YWD5qC8JyxcbiAgICAgICAgICAgIGRpdmlkZXI6IHRydWUsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3BsaXRDZWxsKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnZGVsZXRlLXNlbGVjdGlvbi1yb3dzJyxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1kZWxldGUtcm93cycsXG4gICAgICAgICAgICBuYW1lOiAn5Yig6Zmk5omA5Zyo6KGMJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUucmVtb3ZlRGFuZ2Vyb3VzQ29sdW1uc09yUm93cygpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhckRhbmdlcm91c0NlbGxzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjdGl2ZUhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXREYW5nZXJvdXNSb3dzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2RlbGV0ZS1zZWxlY3Rpb24tY29sdW1ucycsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtZGVsZXRlLWNvbHVtbnMnLFxuICAgICAgICAgICAgZGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWU6ICfliKDpmaTmiYDlnKjliJcnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5yZW1vdmVEYW5nZXJvdXNDb2x1bW5zT3JSb3dzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY3RpdmVIYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0RGFuZ2Vyb3VzQ29sdW1ucygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdkZWxldGUtdGFibGUnLFxuICAgICAgICAgICAgaWNvbjogJ3RyYXNoJyxcbiAgICAgICAgICAgIG5hbWU6ICfliKDpmaTooajmoLwnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLnJlbW92ZVRhYmxlKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJEYW5nZXJvdXNDZWxscygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjdGl2ZUhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXREYW5nZXJvdXNUYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIGdldFNlbGVjdGVkQ2VsbCgpIHtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0ZWRDZWxscztcbiAgICAgICAgY29uc3Qgc2VsZWN0Q2VsbE5vZGVzID0gZ2V0U2VsZWN0Q2VsbE5vZGUodGhpcy5lZGl0b3IsIGNlbGxzKTtcbiAgICAgICAgY29uc3QgbGVmdENlbGxEaWN0ID0gZ2V0TGVmdENlbGxEaWN0KHNlbGVjdENlbGxOb2Rlcyk7XG4gICAgICAgIGNvbnN0IHsgcm93c3BhbiwgY29sc3BhbiB9ID0gY2FsY3VsYXRlQ2VsbFNwYW4oc2VsZWN0Q2VsbE5vZGVzLCBsZWZ0Q2VsbERpY3QpO1xuXG4gICAgICAgIHJldHVybiB7IHJvdzogcm93c3BhbiwgY29sOiBjb2xzcGFuLCBzZWxlY3RDZWxsTm9kZXMgfTtcbiAgICB9XG5cbiAgICBnZXRUYXJnZXRSb3dPckNvbEluZGV4KGlzRnJvbnQgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHsgcm93LCBjb2wsIHNlbGVjdENlbGxOb2RlcyB9ID0gdGhpcy5nZXRTZWxlY3RlZENlbGwoKTtcbiAgICAgICAgY29uc3QgZmlyc3RTZWxlY3RDZWxsID0gc2VsZWN0Q2VsbE5vZGVzWzBdO1xuICAgICAgICBjb25zdCB0YXJnZXRSb3dJbmRleCA9IGlzRnJvbnQgPyBmaXJzdFNlbGVjdENlbGwucm93IDogcm93ICsgZmlyc3RTZWxlY3RDZWxsLnJvdztcbiAgICAgICAgY29uc3QgdGFyZ2V0Q29sSW5kZXggPSBpc0Zyb250ID8gZmlyc3RTZWxlY3RDZWxsLmNvbCA6IGNvbCArIGZpcnN0U2VsZWN0Q2VsbC5jb2w7XG5cbiAgICAgICAgcmV0dXJuIHsgdGFyZ2V0Um93SW5kZXgsIHRhcmdldENvbEluZGV4IH07XG4gICAgfVxuXG4gICAgb3Blbk1lbnVMaXN0KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNlbGVjdGVkQ2VsbHMsIGlzRnVsbHNjcmVlbiwgc2VsZWN0ZWRSb3dzSW5kZXgsIHNlbGVjdGVkQ29sdW1uc0luZGV4LCBpc1NlbGVjdGVkVGFibGUgfSA9IHRoaXMudGFibGVTdG9yZTtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlSW5mbyA9IHsgc2VsZWN0ZWRDZWxscywgaXNGdWxsc2NyZWVuLCBzZWxlY3RlZFJvd3NJbmRleCwgc2VsZWN0ZWRDb2x1bW5zSW5kZXgsIGlzU2VsZWN0ZWRUYWJsZSB9O1xuICAgICAgICAgICAgY29uc3QgeyByb3csIGNvbCB9ID0gdGhpcy5nZXRTZWxlY3RlZENlbGwoKTtcbiAgICAgICAgICAgIHNldENlbGxNZW51VmlzaWJpbGl0eSh0aGlzLmVkaXRvciwgdGhpcy5tZW51RW50aXRpZXMsIHRhYmxlSW5mbyk7XG5cbiAgICAgICAgICAgIHRoaXMubWVudUVudGl0aWVzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChpdGVtLmtleSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdiYWNrZ3JvdW5kLWNvbG9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYmFja2dyb3VuZENvbG9yID0gdGhpcy50YWJsZVN0b3JlLmdldFNlbGVjdGVkQ2VsbEJhY2tncm91bmRDb2xvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVGFibGVJbnNlcnRUeXBlLmluc2VydFJvd3NVcDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUYWJsZUluc2VydFR5cGUuaW5zZXJ0Um93c0Rvd246XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNvdW50ID0gcm93O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVGFibGVJbnNlcnRUeXBlLmluc2VydENvbHVtbnNMZWZ0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRhYmxlSW5zZXJ0VHlwZS5pbnNlcnRDb2x1bW5zUmlnaHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNvdW50ID0gY29sO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLm1lbnVSZWYgPSB0aGlzLnRoeVBvcG92ZXIub3BlbihUaGVDb250ZXh0TWVudUNvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIG9yaWdpbjogZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICAgICAgICBtZW51RW50aXRpZXM6IHRoaXMubWVudUVudGl0aWVzLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25IYW5kbGU6IChlbnRpdHk6IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmb2N1cyh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkuYWN0aW9uSGFuZGxlKGVudGl0eSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUhhbmRsZTogKG1lbnVFdmVudDogTW91c2VFdmVudCwgZW50aXR5OiBNZW51RW50aXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5LmFjdGl2ZUhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlU2VsZWN0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5LmFjdGl2ZUhhbmRsZShtZW51RXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBkZWFjdGl2YXRlSGFuZGxlOiAobWVudUV2ZW50OiBNb3VzZUV2ZW50LCBlbnRpdHk6IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHkua2V5LmluZGV4T2YoJ2RlbGV0ZScpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJEYW5nZXJvdXNDZWxscygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eS5kZWFjdGl2YXRlSGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVTZWxlY3Rpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkuZGVhY3RpdmF0ZUhhbmRsZShtZW51RXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvcmlnaW5Qb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICB4OiBldmVudC54ICsgMzAsXG4gICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50LnlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21MZWZ0JyxcbiAgICAgICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLmdldE9wdGlvbnMoKS52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWUsXG4gICAgICAgICAgICAgICAgaW5zaWRlQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2xvc2VDb250ZXh0TWVudSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuZWQpIHtcbiAgICAgICAgICAgIHRoaXMubWVudVJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVudVJlZi5hZnRlckNsb3NlZCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -28,12 +28,21 @@ export function useElementStyle(el, element) {
28
28
  if (element.align) {
29
29
  el.style.textAlign = element.align || Alignment.left;
30
30
  }
31
+ else if (el.style.textAlign) {
32
+ el.style.removeProperty('text-align');
33
+ }
31
34
  if (element.textIndent) {
32
35
  el.style.textIndent = element.textIndent + 'em';
33
36
  }
37
+ else if (el.style.textIndent) {
38
+ el.style.removeProperty('text-indent');
39
+ }
34
40
  if (element.verticalAlign) {
35
41
  el.style.verticalAlign = element.verticalAlign;
36
42
  }
43
+ else if (el.style.verticalAlign) {
44
+ el.style.removeProperty('vertical-align');
45
+ }
37
46
  }
38
47
  export function getElementClassByPrefix(el, prefix) {
39
48
  let matchClass = null;
@@ -44,4 +53,4 @@ export function getElementClassByPrefix(el, prefix) {
44
53
  });
45
54
  return matchClass;
46
55
  }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3V0aWxzL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLGlHQUFpRztBQUNqRyxNQUFNLFVBQVUsd0JBQXdCLENBQUMsUUFBZ0I7SUFDckQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hELElBQUksS0FBSyxFQUFFO1FBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDM0I7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxPQUFvQjtJQUNoRCxxRkFBcUY7SUFDckYscUNBQXFDO0lBQ3JDLE9BQU8sd0JBQXdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ2hGLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBb0I7SUFDakQsT0FBTyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDbEQsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUEyQjtJQUN6RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDOUIsT0FBTyxLQUFLLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNWLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBMkI7SUFDMUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQzlCLE9BQU8sS0FBSyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNWLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEVBQWUsRUFBRSxPQUFnQjtJQUM3RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDZixFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBSSxPQUFPLENBQUMsS0FBZ0IsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDO0tBQ3BFO0lBRUQsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1FBQ3BCLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0tBQ25EO0lBRUQsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFO1FBQ3ZCLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7S0FDbEQ7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEVBQWMsRUFBRSxNQUFjO0lBQ2xFLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztJQUN0QixFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNoQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDeEIsVUFBVSxHQUFHLEtBQUssQ0FBQztTQUN0QjtJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBET01FbGVtZW50IH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBBbGlnbm1lbnQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG4vKiogQ29udmVydHMgQ1NTIHBpeGVsIHZhbHVlcyB0byBudW1iZXJzLCBlZyBcIjEyM3B4XCIgdG8gMTIzLiBSZXR1cm5zIE5hTiBmb3Igbm9uIHBpeGVsIHZhbHVlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VQaXhlbHNGcm9tQ3NzVmFsdWUoY3NzVmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgbWF0Y2ggPSBjc3NWYWx1ZS5tYXRjaCgvKFxcZCsoXFwuXFxkKyk/KXB4Lyk7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIHJldHVybiBOdW1iZXIobWF0Y2hbMV0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVsZW1lbnRXaWR0aChlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIC8vIE9wdGltaXphdGlvbjogQ2hlY2sgc3R5bGUud2lkdGggZmlyc3QgYXMgd2UgcHJvYmFibHkgc2V0IGl0IGFscmVhZHkgYmVmb3JlIHJlYWRpbmdcbiAgICAvLyBvZmZzZXRXaWR0aCB3aGljaCB0cmlnZ2VycyBsYXlvdXQuXG4gICAgcmV0dXJuIGNvZXJjZVBpeGVsc0Zyb21Dc3NWYWx1ZShlbGVtZW50LnN0eWxlLndpZHRoKSB8fCBlbGVtZW50Lm9mZnNldFdpZHRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudEhlaWdodChlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbHNUb3RhbFdpZHRoKGNvbHM6IEhUTUxUYWJsZUNvbEVsZW1lbnRbXSkge1xuICAgIHJldHVybiBjb2xzLnJlZHVjZSgodG90YWwsIGNvbCkgPT4ge1xuICAgICAgICByZXR1cm4gdG90YWwgKyBnZXRFbGVtZW50V2lkdGgoY29sKTtcbiAgICB9LCAwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvd3NUb3RhbEhlaWdodChyb3dzOiBIVE1MVGFibGVSb3dFbGVtZW50W10pIHtcbiAgICByZXR1cm4gcm93cy5yZWR1Y2UoKHRvdGFsLCByb3cpID0+IHtcbiAgICAgICAgcmV0dXJuIHRvdGFsICsgZ2V0RWxlbWVudEhlaWdodChyb3cpO1xuICAgIH0sIDApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlRWxlbWVudFN0eWxlKGVsOiBIVE1MRWxlbWVudCwgZWxlbWVudDogRWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50LmFsaWduKSB7XG4gICAgICAgIGVsLnN0eWxlLnRleHRBbGlnbiA9IChlbGVtZW50LmFsaWduIGFzIHN0cmluZykgfHwgQWxpZ25tZW50LmxlZnQ7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnQudGV4dEluZGVudCkge1xuICAgICAgICBlbC5zdHlsZS50ZXh0SW5kZW50ID0gZWxlbWVudC50ZXh0SW5kZW50ICsgJ2VtJztcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudC52ZXJ0aWNhbEFsaWduKSB7XG4gICAgICAgIGVsLnN0eWxlLnZlcnRpY2FsQWxpZ24gPSBlbGVtZW50LnZlcnRpY2FsQWxpZ247XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudENsYXNzQnlQcmVmaXgoZWw6IERPTUVsZW1lbnQsIHByZWZpeDogc3RyaW5nKSB7XG4gICAgbGV0IG1hdGNoQ2xhc3MgPSBudWxsO1xuICAgIGVsLmNsYXNzTGlzdC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcyhwcmVmaXgpKSB7XG4gICAgICAgICAgICBtYXRjaENsYXNzID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbWF0Y2hDbGFzcztcbn1cbiJdfQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3V0aWxzL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLGlHQUFpRztBQUNqRyxNQUFNLFVBQVUsd0JBQXdCLENBQUMsUUFBZ0I7SUFDckQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hELElBQUksS0FBSyxFQUFFO1FBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDM0I7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxPQUFvQjtJQUNoRCxxRkFBcUY7SUFDckYscUNBQXFDO0lBQ3JDLE9BQU8sd0JBQXdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ2hGLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBb0I7SUFDakQsT0FBTyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDbEQsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUEyQjtJQUN6RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDOUIsT0FBTyxLQUFLLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNWLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBMkI7SUFDMUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQzlCLE9BQU8sS0FBSyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNWLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEVBQWUsRUFBRSxPQUFnQjtJQUM3RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDZixFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBSSxPQUFPLENBQUMsS0FBZ0IsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDO0tBQ3BFO1NBQU0sSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtRQUMzQixFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUN6QztJQUVELElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtRQUNwQixFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztLQUNuRDtTQUFNLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7UUFDNUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDMUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUU7UUFDdkIsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztLQUNsRDtTQUFNLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7UUFDL0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUM3QztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsRUFBYyxFQUFFLE1BQWM7SUFDbEUsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ2hDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN4QixVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IERPTUVsZW1lbnQgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IEFsaWdubWVudCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbi8qKiBDb252ZXJ0cyBDU1MgcGl4ZWwgdmFsdWVzIHRvIG51bWJlcnMsIGVnIFwiMTIzcHhcIiB0byAxMjMuIFJldHVybnMgTmFOIGZvciBub24gcGl4ZWwgdmFsdWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZVBpeGVsc0Zyb21Dc3NWYWx1ZShjc3NWYWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBtYXRjaCA9IGNzc1ZhbHVlLm1hdGNoKC8oXFxkKyhcXC5cXGQrKT8pcHgvKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcihtYXRjaFsxXSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudFdpZHRoKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgLy8gT3B0aW1pemF0aW9uOiBDaGVjayBzdHlsZS53aWR0aCBmaXJzdCBhcyB3ZSBwcm9iYWJseSBzZXQgaXQgYWxyZWFkeSBiZWZvcmUgcmVhZGluZ1xuICAgIC8vIG9mZnNldFdpZHRoIHdoaWNoIHRyaWdnZXJzIGxheW91dC5cbiAgICByZXR1cm4gY29lcmNlUGl4ZWxzRnJvbUNzc1ZhbHVlKGVsZW1lbnQuc3R5bGUud2lkdGgpIHx8IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50SGVpZ2h0KGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sc1RvdGFsV2lkdGgoY29sczogSFRNTFRhYmxlQ29sRWxlbWVudFtdKSB7XG4gICAgcmV0dXJuIGNvbHMucmVkdWNlKCh0b3RhbCwgY29sKSA9PiB7XG4gICAgICAgIHJldHVybiB0b3RhbCArIGdldEVsZW1lbnRXaWR0aChjb2wpO1xuICAgIH0sIDApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um93c1RvdGFsSGVpZ2h0KHJvd3M6IEhUTUxUYWJsZVJvd0VsZW1lbnRbXSkge1xuICAgIHJldHVybiByb3dzLnJlZHVjZSgodG90YWwsIHJvdykgPT4ge1xuICAgICAgICByZXR1cm4gdG90YWwgKyBnZXRFbGVtZW50SGVpZ2h0KHJvdyk7XG4gICAgfSwgMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VFbGVtZW50U3R5bGUoZWw6IEhUTUxFbGVtZW50LCBlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgaWYgKGVsZW1lbnQuYWxpZ24pIHtcbiAgICAgICAgZWwuc3R5bGUudGV4dEFsaWduID0gKGVsZW1lbnQuYWxpZ24gYXMgc3RyaW5nKSB8fCBBbGlnbm1lbnQubGVmdDtcbiAgICB9IGVsc2UgaWYgKGVsLnN0eWxlLnRleHRBbGlnbikge1xuICAgICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgndGV4dC1hbGlnbicpO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50LnRleHRJbmRlbnQpIHtcbiAgICAgICAgZWwuc3R5bGUudGV4dEluZGVudCA9IGVsZW1lbnQudGV4dEluZGVudCArICdlbSc7XG4gICAgfSBlbHNlIGlmIChlbC5zdHlsZS50ZXh0SW5kZW50KSB7XG4gICAgICAgIGVsLnN0eWxlLnJlbW92ZVByb3BlcnR5KCd0ZXh0LWluZGVudCcpO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50LnZlcnRpY2FsQWxpZ24pIHtcbiAgICAgICAgZWwuc3R5bGUudmVydGljYWxBbGlnbiA9IGVsZW1lbnQudmVydGljYWxBbGlnbjtcbiAgICB9IGVsc2UgaWYgKGVsLnN0eWxlLnZlcnRpY2FsQWxpZ24pIHtcbiAgICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3ZlcnRpY2FsLWFsaWduJyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudENsYXNzQnlQcmVmaXgoZWw6IERPTUVsZW1lbnQsIHByZWZpeDogc3RyaW5nKSB7XG4gICAgbGV0IG1hdGNoQ2xhc3MgPSBudWxsO1xuICAgIGVsLmNsYXNzTGlzdC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcyhwcmVmaXgpKSB7XG4gICAgICAgICAgICBtYXRjaENsYXNzID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbWF0Y2hDbGFzcztcbn1cbiJdfQ==