@bizdoc/core 1.9.9 → 1.9.10

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.
@@ -21,6 +21,8 @@ export class CubeSpreadsheetComponent {
21
21
  this.loadingChange = new EventEmitter();
22
22
  this.id = `cube-spreadsheet-${CubeSpreadsheetComponent.nextId++}`;
23
23
  this.dataSource = [];
24
+ this.numberStyle = { textAlign: 'right' };
25
+ this.autoFillSettings = { showFillOptions: false };
24
26
  this._yrows = [];
25
27
  this._xcolumns = [];
26
28
  this._intl = new Internationalization();
@@ -95,39 +97,10 @@ export class CubeSpreadsheetComponent {
95
97
  }
96
98
  execute() {
97
99
  this.loadingChange.emit(true);
98
- const numberStyle = { textAlign: 'right' };
99
100
  if (!this._series)
100
101
  this._service.table(this.cube, this._xAxis, { filters: this.filters, indices: this._indices }).
101
102
  subscribe(data => {
102
- const cells = [], style = { fontWeight: 'bold', textAlign: 'center' };
103
- this._axes.forEach(c => cells.push({
104
- value: c.title, style
105
- }));
106
- this._indices && this._cindices.forEach(i => cells.push({ value: i.title, style }));
107
- cells.push({
108
- value: this.yAxis ? this.yAxis.title : this._translate.get('Value'),
109
- style
110
- });
111
- this.dataSource = [{
112
- cells, height: 20
113
- }];
114
- data.forEach(d => {
115
- const cells = [];
116
- this._xAxis.forEach(c => cells.push({
117
- value: d[c],
118
- }));
119
- this._indices && this._indices.forEach(i => cells.push({
120
- style: numberStyle,
121
- format: this._numberFormat,
122
- value: (d[i] || 0).toString(),
123
- }));
124
- cells.push({
125
- style: numberStyle,
126
- format: this._numberFormat,
127
- value: (d.value || 0).toString(),
128
- });
129
- this.dataSource.push({ cells, source: d, height: 20 });
130
- });
103
+ this._datatable(data);
131
104
  this._draw();
132
105
  this.loadingChange.emit(false);
133
106
  }, (e) => {
@@ -136,39 +109,9 @@ export class CubeSpreadsheetComponent {
136
109
  });
137
110
  else
138
111
  this._service.series(this.cube, this._xAxis, { series: this._series, filters: this.filters }).
139
- subscribe(d => {
112
+ subscribe(data => {
140
113
  this._prepare.then(() => {
141
- const style = { fontWeight: 'bold', textAlign: 'center' };
142
- const cells = [{ value: '' }];
143
- this._xcolumns.forEach(c => cells.push({ value: c.value, style }));
144
- this.dataSource = [{ cells, height: 20 }];
145
- this._indices && this._cube.indices.filter(i => this._indices.indexOf(i.name) > 0).
146
- forEach(i => {
147
- const cells = [{ value: i.title, style }], serie = d.find(s => s.index === i.name), map = {};
148
- if (serie) {
149
- serie.points.forEach(p => map[p.x] = p.y);
150
- this._xcolumns.forEach(c => cells.push({
151
- value: (map[c.key] || 0).toString(),
152
- format: this._numberFormat,
153
- style: numberStyle
154
- }));
155
- this.dataSource.push({ cells, height: 20 });
156
- }
157
- });
158
- this._yrows.forEach(r => {
159
- const cells = [{ value: r.value, style }], serie = d.find(s => s.name === r.key), map = {};
160
- if (serie) {
161
- serie.points.forEach(p => map[p.x] = p.y);
162
- this._xcolumns.forEach(c => cells.push({
163
- value: (map[c.key] || 0).toString(),
164
- format: this._numberFormat,
165
- style: numberStyle
166
- }));
167
- }
168
- else
169
- this._xcolumns.forEach(_ => cells.push({ value: '0' }));
170
- this.dataSource.push({ cells, height: 20 });
171
- });
114
+ this._dataseries(data);
172
115
  this._draw();
173
116
  this.loadingChange.emit(false);
174
117
  });
@@ -177,6 +120,70 @@ export class CubeSpreadsheetComponent {
177
120
  this.loadingChange.emit(false);
178
121
  });
179
122
  }
123
+ _datatable(data) {
124
+ const cells = [], style = { fontWeight: 'bold', textAlign: 'center' };
125
+ this._axes.forEach(c => cells.push({
126
+ value: c.title, style
127
+ }));
128
+ this._indices && this._cindices.forEach(i => cells.push({ value: i.title, style }));
129
+ cells.push({
130
+ value: this.yAxis ? this.yAxis.title : this._translate.get('Value'),
131
+ style
132
+ });
133
+ this.dataSource = [{
134
+ cells, height: 25
135
+ }];
136
+ data.forEach(d => {
137
+ const cells = [];
138
+ this._xAxis.forEach(c => cells.push({
139
+ value: d[c],
140
+ }));
141
+ this._indices && this._indices.forEach(i => cells.push({
142
+ style: this.numberStyle,
143
+ format: this._numberFormat,
144
+ value: (d[i] || 0).toString(),
145
+ }));
146
+ cells.push({
147
+ style: this.numberStyle,
148
+ format: this._numberFormat,
149
+ value: (d.value || 0).toString(),
150
+ });
151
+ this.dataSource.push({ cells, source: d, height: 25 });
152
+ });
153
+ }
154
+ _dataseries(d) {
155
+ const style = { fontWeight: 'bold', textAlign: 'center' };
156
+ const cells = [{ value: '' }];
157
+ this._xcolumns.forEach(c => cells.push({ value: c.value, style }));
158
+ this.dataSource = [{ cells, height: 25 }];
159
+ this._indices && this._cube.indices.filter(i => this._indices.indexOf(i.name) > 0).
160
+ forEach(i => {
161
+ const cells = [{ value: i.title, style }], serie = d.find(s => s.index === i.name), map = {};
162
+ if (serie) {
163
+ serie.points.forEach(p => map[p.x] = p.y);
164
+ this._xcolumns.forEach(c => cells.push({
165
+ value: (map[c.key] || 0).toString(),
166
+ format: this._numberFormat,
167
+ style: this.numberStyle
168
+ }));
169
+ this.dataSource.push({ cells, height: 25 });
170
+ }
171
+ });
172
+ this._yrows.forEach(r => {
173
+ const cells = [{ value: r.value, style }], serie = d.find(s => s.name === r.key), map = {};
174
+ if (serie) {
175
+ serie.points.forEach(p => map[p.x] = p.y);
176
+ this._xcolumns.forEach(c => cells.push({
177
+ value: (map[c.key] || 0).toString(),
178
+ format: this._numberFormat,
179
+ style: this.numberStyle
180
+ }));
181
+ }
182
+ else
183
+ this._xcolumns.forEach(_ => cells.push({ value: '0' }));
184
+ this.dataSource.push({ cells, height: 25 });
185
+ });
186
+ }
180
187
  _draw() {
181
188
  this.spreadsheet && this.spreadsheet.destroy();
182
189
  this.spreadsheet = new Spreadsheet({
@@ -185,19 +192,13 @@ export class CubeSpreadsheetComponent {
185
192
  allowDelete: false,
186
193
  allowInsert: false,
187
194
  allowSorting: true,
188
- //allowSave: false,
189
195
  showRibbon: false,
190
196
  allowAutoFill: false,
191
- autoFillSettings: { showFillOptions: false },
192
- //enableClipboard: true,
193
- //allowChart: false,
194
- //allowFiltering: false,
195
- //allowDataValidation: false,
196
- //allowFindAndReplace: false,
197
+ autoFillSettings: this.autoFillSettings,
198
+ enableClipboard: true,
197
199
  enableContextMenu: false,
198
200
  showFormulaBar: false,
199
201
  showSheetTabs: false,
200
- //scrollSettings: { isFinite: true },
201
202
  select: this.select.bind(this),
202
203
  sheets: [{
203
204
  columns: this.columns,
@@ -289,7 +290,6 @@ export class CubeSpreadsheetComponent {
289
290
  }
290
291
  }
291
292
  exportToExcel(title) {
292
- //this.spreadsheet.save({ saveType: 'Xlsx', fileName: `${title}.xlsx`})
293
293
  const wb = XLSX.utils.book_new();
294
294
  const rows = this.spreadsheet.sheets[0].rows.map(r => r.cells.map(c => c.value));
295
295
  const ws = XLSX.utils.aoa_to_sheet(rows);
@@ -345,4 +345,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
345
345
  }], id: [{
346
346
  type: HostBinding
347
347
  }] } });
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByZWFkc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL2dyaWQvc3ByZWFkc2hlZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBa0IsV0FBVyxFQUF5QixLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBRXJKLE9BQU8sRUFBb0MsV0FBVyxFQUFtQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JJLE9BQU8sRUFBRSxvQkFBb0IsRUFBdUIsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQVE3QixPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7O0FBYXpELE1BQU0sT0FBTyx3QkFBd0I7SUE0Q25DLFlBQ1UsUUFBd0IsRUFDeEIsR0FBa0IsRUFDbEIsUUFBcUIsRUFDckIsVUFBNEIsRUFDNUIsR0FBc0IsRUFDdEIsV0FBdUI7UUFMdkIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBeEJkLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUU3QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEQsT0FBRSxHQUFHLG9CQUFvQix3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBRTVFLGVBQVUsR0FBZSxFQUFFLENBQUM7UUFPcEIsV0FBTSxHQUErQixFQUFFLENBQUM7UUFDeEMsY0FBUyxHQUErQixFQUFFLENBQUM7UUFHbEMsVUFBSyxHQUF5QixJQUFJLG9CQUFvQixFQUFFLENBQUM7SUFRckMsQ0FBQztJQTFDdEMsSUFDSSxLQUFLLENBQUMsR0FBc0I7UUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBR0QsSUFDSSxNQUFNLENBQUMsR0FBc0I7UUFDL0IsSUFBSSxHQUFHO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsSUFDSSxPQUFPLENBQUMsR0FBc0I7UUFDaEMsSUFBSSxHQUFHO1lBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBOEJELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7WUFDL0MsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUc7WUFDckMsV0FBVyxFQUFFLElBQUk7WUFDakIscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjO1lBQ25ELHFCQUFxQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYztTQUM3QixDQUFDLENBQUE7UUFFekIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRSxJQUFJLElBQUksQ0FBQyxRQUFRO2dCQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDaEMsT0FBTztvQkFDTCxLQUFLLEVBQUUsR0FBRztpQkFDSSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLEtBQUssRUFBRSxFQUFFO2FBQ1YsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDNUQsS0FBSyxFQUFFLEVBQUU7YUFDSyxDQUNmLENBQUMsQ0FBQztTQUNKO2FBQ0k7WUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUNuRCxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsRUFDbkQsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDdEQsTUFBTSxRQUFRLEdBQW1CLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUM7b0JBQ2QsS0FBSyxFQUFFLEdBQUc7aUJBQ1gsQ0FBQyxDQUFDO1lBQ0gseUJBQXlCO1lBQ3pCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUMvQixLQUFLLEVBQUUsRUFBRTtpQkFDSyxDQUNmLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBaUIsQ0FBQztZQUNyQixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLHNCQUFzQjtZQUN0QixPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBR3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFDRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUVmLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDdkMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQzNCO0lBQ1AsQ0FBQztJQUNPLE9BQU87UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixNQUFNLFdBQVcsR0FBRyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQW9CLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDNUYsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNmLE1BQU0sS0FBSyxHQUFHLEVBQUUsRUFDZCxLQUFLLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQW9CLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDakMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSztpQkFDVCxDQUFDLENBQUMsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQWUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pHLEtBQUssQ0FBQyxJQUFJLENBQUM7b0JBQ1QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7b0JBQ25FLEtBQUs7aUJBQ08sQ0FBQyxDQUFDO2dCQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUM7d0JBQ2pCLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtxQkFDTixDQUFDLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDZixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDbEMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ0MsQ0FBQyxDQUFDLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO3dCQUNyRCxLQUFLLEVBQUUsV0FBVzt3QkFDbEIsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhO3dCQUMxQixLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO3FCQUNqQixDQUFDLENBQUMsQ0FBQztvQkFDakIsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDVCxLQUFLLEVBQUUsV0FBVzt3QkFDbEIsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhO3dCQUMxQixLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtxQkFDcEIsQ0FBQyxDQUFDO29CQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQWMsQ0FBQyxDQUFDO2dCQUNyRSxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsQ0FBQyxFQUFFLENBQUMsQ0FBb0IsRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7O1lBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDaEcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDdEIsTUFBTSxLQUFLLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQW9CLENBQUM7b0JBQzVFLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFlLENBQUMsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNuRSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBRTFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDaEYsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUNWLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQWUsQ0FBQyxFQUNwRCxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUM7d0JBQ3BELElBQUksS0FBSyxFQUFFOzRCQUNULEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3pCLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0NBQ1QsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25DLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYTtnQ0FDMUIsS0FBSyxFQUFFLFdBQVc7NkJBQ25CLENBQUMsQ0FDSCxDQUFDOzRCQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQWMsQ0FBQyxDQUFDO3lCQUN6RDtvQkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDdEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBZSxDQUFDLEVBQ3BELEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQzt3QkFDbEQsSUFBSSxLQUFLLEVBQUU7NEJBQ1QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDekIsS0FBSyxDQUFDLElBQUksQ0FBQztnQ0FDVCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtnQ0FDbkMsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhO2dDQUMxQixLQUFLLEVBQUUsV0FBVzs2QkFDbkIsQ0FBQyxDQUNILENBQUM7eUJBQ0g7OzRCQUVDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3pCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FDM0IsQ0FBQzt3QkFDSixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFjLENBQUMsQ0FBQztvQkFDMUQsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsRUFBRSxDQUFDLENBQW9CLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLEtBQUs7UUFDWCxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUNqQyxXQUFXLEVBQUUsSUFBSTtZQUNqQixZQUFZLEVBQUUsS0FBSztZQUNuQixXQUFXLEVBQUUsS0FBSztZQUNsQixXQUFXLEVBQUUsS0FBSztZQUNsQixZQUFZLEVBQUUsSUFBSTtZQUNsQixtQkFBbUI7WUFDbkIsVUFBVSxFQUFFLEtBQUs7WUFDakIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsZ0JBQWdCLEVBQUUsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFO1lBQzVDLHdCQUF3QjtZQUN4QixvQkFBb0I7WUFDcEIsd0JBQXdCO1lBQ3hCLDZCQUE2QjtZQUM3Qiw2QkFBNkI7WUFDN0IsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixjQUFjLEVBQUUsS0FBSztZQUNyQixhQUFhLEVBQUUsS0FBSztZQUMxQixxQ0FBcUM7WUFDL0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM5QixNQUFNLEVBQUUsQ0FBQztvQkFDUCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ3JCLG1EQUFtRDtvQkFDbkQsZ0JBQWdCO29CQUNoQixJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVU7aUJBQ3RCLENBQUM7WUFDRixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQW9CO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNyQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDVixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDaEIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ1YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQztTQUNwQjtRQUNELE1BQU0sSUFBSSxHQUFPLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU87WUFDcEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDeEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsR0FBRztnQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDckIsTUFBTSxHQUFHLEdBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUNmLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO3lCQUNoQixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUM3QixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzt5QkFDaEMsSUFBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO3dCQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM3RixDQUFDLENBQUMsQ0FBQztnQkFDSCxDQUFDLEVBQUUsQ0FBQzthQUNMLFFBQ00sQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3BDO2FBQ0k7WUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNWLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDOUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQztpQkFDbkI7O29CQUNJLE9BQU87YUFDYjtpQkFDSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDVixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7aUJBQ25COztvQkFDSSxPQUFPO2FBQ2I7aUJBQ0ksSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEdBQUc7Z0JBQUUsT0FBTztpQkFDOUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFBRSxPQUFPO2lCQUN0RjtnQkFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO3dCQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7eUJBQ2YsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7eUJBQzlCLElBQUssSUFBSSxDQUFDLEtBQUssQ0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO3dCQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN0QyxDQUFDLEVBQUUsQ0FBQztpQkFDTDtnQkFDRCxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO3dCQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7eUJBQy9CLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO3lCQUM5QixJQUFLLElBQUksQ0FBQyxLQUFLLENBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQzt3QkFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDdEMsQ0FBQyxFQUFFLENBQUM7aUJBQ0w7YUFDRjtZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFDRCxhQUFhLENBQUMsS0FBYTtRQUN6Qix1RUFBdUU7UUFDdkUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDckIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pELENBQUM7O0FBeFVjLCtCQUFNLEdBQUcsQ0FBRSxDQUFBO3FIQURmLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLHFhQVR6QixFQUFFOzJGQVNELHdCQUF3QjtrQkFYcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixNQUFNLEVBQUUsQ0FBQzs7O0NBR1YsQ0FBQztvQkFDQSxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLFdBQVc7cUJBQ25CO2lCQUNGO21QQUlDLEtBQUs7c0JBREosS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sSUFBSTtzQkFESCxLQUFLO2dCQUdGLEtBQUs7c0JBRFIsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBR0YsTUFBTTtzQkFEVCxLQUFLO2dCQUtGLE9BQU87c0JBRFYsS0FBSztnQkFLTixPQUFPO3NCQUROLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLO2dCQUVhLE9BQU87c0JBQXpCLE1BQU07Z0JBQ0UsT0FBTztzQkFBZixLQUFLO2dCQUNhLGFBQWE7c0JBQS9CLE1BQU07Z0JBQ1EsRUFBRTtzQkFBaEIsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgQ29tcG9uZW50LCBPdXRwdXQsIEluamVjdCwgT25Jbml0LCBIb3N0QmluZGluZywgRWxlbWVudFJlZiwgT25EZXN0cm95LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSHR0cFJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IENlbGxNb2RlbCwgQ29sdW1uTW9kZWwsIFJvd01vZGVsLCBTcHJlYWRzaGVldCwgQ2VsbFN0eWxlTW9kZWwsIFNlbGVjdEV2ZW50QXJncyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1zcHJlYWRzaGVldFwiO1xyXG5pbXBvcnQgeyBJbnRlcm5hdGlvbmFsaXphdGlvbiwgTnVtYmVyRm9ybWF0T3B0aW9ucyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYmFzZVwiO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBBeGlzQ2xpY2tFdmVudCwgQ3ViZVZpZXdlckNvbXBvbmVudCB9IGZyb20gXCIuLi9kZWNsYXJhdGlvbnNcIjtcclxuaW1wb3J0IHsgQXhlc01hcCwgQ3ViZSwgQ3ViZUF4aXMsIEN1YmVJbmRleCwgWUF4aXMgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgQ3ViZVNlcnZpY2UgfSBmcm9tIFwiLi4vY3ViZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNTdHJpbmcgfSBmcm9tIFwiLi4vLi4vY29yZS9mdW5jdGlvbnNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWN1YmUtc3ByZWFkc2hlZXQnLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBzdHlsZXM6IFtgOjpuZy1kZWVwIC5lLXNwcmVhZHNoZWV0IC5lLWRyYWdmaWxsLWRkYiB7XHJcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcbmBdLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnY3ViZS12aWV3J1xyXG4gIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1YmVTcHJlYWRzaGVldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ3ViZVZpZXdlckNvbXBvbmVudCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgQElucHV0KClcclxuICB3aWR0aDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgaGVpZ2h0OiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBjdWJlOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBzZXQgeEF4aXModmFsOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgdGhpcy5feEF4aXMgPSBpc0FycmF5KHZhbCkgPyB2YWwgOiBbdmFsXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICB5QXhpcz86IFlBeGlzO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlcmllcyh2YWw6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsKSB0aGlzLl9zZXJpZXMgPSBpc0FycmF5KHZhbCkgPyB2YWwgOiBbdmFsXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBzZXQgaW5kaWNlcyh2YWw6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsKSB0aGlzLl9pbmRpY2VzID0gaXNBcnJheSh2YWwpID8gdmFsIDogW3ZhbF07XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVycz86IEF4ZXNNYXA7XHJcbiAgQElucHV0KClcclxuICBjdXJyZW5jeUNvZGU6IHN0cmluZztcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgZXhwbG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXhpc0NsaWNrRXZlbnQ+KCk7XHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgbG9hZGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBASG9zdEJpbmRpbmcoKSBpZCA9IGBjdWJlLXNwcmVhZHNoZWV0LSR7Q3ViZVNwcmVhZHNoZWV0Q29tcG9uZW50Lm5leHRJZCsrfWA7XHJcbiAgc3ByZWFkc2hlZXQ6IFNwcmVhZHNoZWV0O1xyXG4gIGRhdGFTb3VyY2U6IFJvd01vZGVsW10gPSBbXTtcclxuICBjb2x1bW5zOiBDb2x1bW5Nb2RlbFtdO1xyXG4gIHByaXZhdGUgX3hBeGlzOiBzdHJpbmdbXTtcclxuICBwcml2YXRlIF9zZXJpZXM/OiBzdHJpbmdbXTtcclxuICBwcml2YXRlIF9pbmRpY2VzPzogc3RyaW5nW107XHJcbiAgcHJpdmF0ZSBfYXhlczogQ3ViZUF4aXNbXTtcclxuICBwcml2YXRlIF9jaW5kaWNlczogQ3ViZUluZGV4W107XHJcbiAgcHJpdmF0ZSBfeXJvd3M6IHsga2V5OiBhbnk7IHZhbHVlOiBhbnkgfVtdID0gW107XHJcbiAgcHJpdmF0ZSBfeGNvbHVtbnM6IHsga2V5OiBhbnk7IHZhbHVlOiBhbnkgfVtdID0gW107XHJcbiAgcHJpdmF0ZSBfcHJlcGFyZTogUHJvbWlzZTxhbnlbXT47XHJcbiAgcHJpdmF0ZSBfY3ViZTogQ3ViZTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnRsOiBJbnRlcm5hdGlvbmFsaXphdGlvbiA9IG5ldyBJbnRlcm5hdGlvbmFsaXphdGlvbigpO1xyXG4gIHByaXZhdGUgX251bWJlckZvcm1hdDogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZHM6IERhdGFzb3VyY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9udW1iZXJGb3JtYXQgPSB0aGlzLl9pbnRsLmdldE51bWJlclBhdHRlcm4oe1xyXG4gICAgICBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeUNvZGUsXHJcbiAgICAgIGZvcm1hdDogdGhpcy5jdXJyZW5jeUNvZGUgPyAnYycgOiAnbicsXHJcbiAgICAgIHVzZUdyb3VwaW5nOiB0cnVlLFxyXG4gICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHMsXHJcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogdGhpcy5fc2VydmljZS5mcmFjdGlvbkRpZ2l0c1xyXG4gICAgfSBhcyBOdW1iZXJGb3JtYXRPcHRpb25zKVxyXG5cclxuICAgIHRoaXMuX2N1YmUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gdGhpcy5jdWJlKTtcclxuICAgIGlmICghdGhpcy5fc2VyaWVzKSB7XHJcbiAgICAgIHRoaXMuX2F4ZXMgPSB0aGlzLl94QXhpcy5tYXAoYyA9PiB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PSBjKSk7XHJcbiAgICAgIGlmICh0aGlzLl9pbmRpY2VzKSB0aGlzLl9jaW5kaWNlcyA9IHRoaXMuX2N1YmUuaW5kaWNlcy5maWx0ZXIoaSA9PiB0aGlzLl9pbmRpY2VzLmluZGV4T2YoaS5uYW1lKSA+IC0xKTtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5fYXhlcy5tYXAoXyA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHdpZHRoOiAxMjBcclxuICAgICAgICB9IGFzIENvbHVtbk1vZGVsO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jb2x1bW5zLnB1c2goe1xyXG4gICAgICAgIHdpZHRoOiA5MFxyXG4gICAgICB9IC8qIHZhbHVlICovKTtcclxuICAgICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9pbmRpY2VzLmZvckVhY2goXyA9PiB0aGlzLmNvbHVtbnMucHVzaCh7XHJcbiAgICAgICAgd2lkdGg6IDkwXHJcbiAgICAgIH0gYXMgQ29sdW1uTW9kZWxcclxuICAgICAgKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgeU5hbWUgPSB0aGlzLl9zZXJpZXNbMF0sIHhOYW1lID0gdGhpcy5feEF4aXNbMF0sXHJcbiAgICAgICAgeEF4aXMgPSB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0geE5hbWUpLFxyXG4gICAgICAgIHlBeGlzID0gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHlOYW1lKTtcclxuICAgICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8YW55PltdID0gW107XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IFt7XHJcbiAgICAgICAgd2lkdGg6IDEyMFxyXG4gICAgICB9XTtcclxuICAgICAgLy8gYWNxdWlyZSBjb2x1bW5zIHNvdXJjZVxyXG4gICAgICBsZXQgb2JzZXJ2ZSA9IHRoaXMuX2RzLmFsbCh4QXhpcy5kYXRhVHlwZSkudG9Qcm9taXNlKCkuXHJcbiAgICAgICAgdGhlbihjID0+IHtcclxuICAgICAgICAgIHRoaXMuX3hjb2x1bW5zID0gYztcclxuICAgICAgICAgIGMuZm9yRWFjaChfID0+IHRoaXMuY29sdW1ucy5wdXNoKHtcclxuICAgICAgICAgICAgd2lkdGg6IDkwXHJcbiAgICAgICAgICB9IGFzIENvbHVtbk1vZGVsXHJcbiAgICAgICAgICApKTtcclxuICAgICAgICB9KSBhcyBQcm9taXNlPGFueT47XHJcbiAgICAgIHByb21pc2VzLnB1c2gob2JzZXJ2ZSk7XHJcbiAgICAgIC8vIGFjcXVpcmUgcm93cyBzb3VyY2VcclxuICAgICAgb2JzZXJ2ZSA9IHRoaXMuX2RzLmFsbCh5QXhpcy5kYXRhVHlwZSkudG9Qcm9taXNlKCkuXHJcbiAgICAgICAgdGhlbihyID0+IHRoaXMuX3lyb3dzID0gcik7XHJcbiAgICAgIHByb21pc2VzLnB1c2gob2JzZXJ2ZSk7XHJcblxyXG5cclxuICAgICAgdGhpcy5fcHJlcGFyZSA9IFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSlcclxuICAgICAgdGhpcy5leGVjdXRlKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIGlmIChjaGFuZ2VzWydoZWlnaHQnXSB8fCBjaGFuZ2VzWyd3aWR0aCddKVxyXG4gICAgICAgIGlmICh0aGlzLnNwcmVhZHNoZWV0KSB7XHJcbiAgICAgICAgICB0aGlzLnNwcmVhZHNoZWV0LmhlaWdodCA9IHRoaXMuaGVpZ2h0O1xyXG4gICAgICAgICAgdGhpcy5zcHJlYWRzaGVldC53aWR0aCA9IHRoaXMud2lkdGg7XHJcbiAgICAgICAgICB0aGlzLnNwcmVhZHNoZWV0LnJlc2l6ZSgpO1xyXG4gICAgICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBleGVjdXRlKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICBjb25zdCBudW1iZXJTdHlsZSA9IHsgdGV4dEFsaWduOiAncmlnaHQnIH0gYXMgQ2VsbFN0eWxlTW9kZWw7XHJcbiAgICBpZiAoIXRoaXMuX3NlcmllcylcclxuICAgICAgdGhpcy5fc2VydmljZS50YWJsZSh0aGlzLmN1YmUsIHRoaXMuX3hBeGlzLCB7IGZpbHRlcnM6IHRoaXMuZmlsdGVycywgaW5kaWNlczogdGhpcy5faW5kaWNlcyB9KS5cclxuICAgICAgICBzdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjZWxscyA9IFtdLFxyXG4gICAgICAgICAgICBzdHlsZSA9IHsgZm9udFdlaWdodDogJ2JvbGQnLCB0ZXh0QWxpZ246ICdjZW50ZXInIH0gYXMgQ2VsbFN0eWxlTW9kZWw7XHJcbiAgICAgICAgICB0aGlzLl9heGVzLmZvckVhY2goYyA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICAgICAgdmFsdWU6IGMudGl0bGUsIHN0eWxlXHJcbiAgICAgICAgICB9IGFzIENlbGxNb2RlbCkpO1xyXG4gICAgICAgICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9jaW5kaWNlcy5mb3JFYWNoKGkgPT4gY2VsbHMucHVzaCh7IHZhbHVlOiBpLnRpdGxlLCBzdHlsZSB9IGFzIENlbGxNb2RlbCkpO1xyXG4gICAgICAgICAgY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnlBeGlzID8gdGhpcy55QXhpcy50aXRsZSA6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1ZhbHVlJyksXHJcbiAgICAgICAgICAgIHN0eWxlXHJcbiAgICAgICAgICB9IGFzIENlbGxNb2RlbCk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBbe1xyXG4gICAgICAgICAgICBjZWxscywgaGVpZ2h0OiAyMFxyXG4gICAgICAgICAgfSBhcyBSb3dNb2RlbF07XHJcbiAgICAgICAgICBkYXRhLmZvckVhY2goZCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuX3hBeGlzLmZvckVhY2goYyA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICAgICAgICB2YWx1ZTogZFtjXSxcclxuICAgICAgICAgICAgfSBhcyBDZWxsTW9kZWwpKTtcclxuICAgICAgICAgICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9pbmRpY2VzLmZvckVhY2goaSA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICAgICAgICBzdHlsZTogbnVtYmVyU3R5bGUsXHJcbiAgICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IChkW2ldIHx8IDApLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIH0gYXMgQ2VsbE1vZGVsKSk7XHJcbiAgICAgICAgICAgIGNlbGxzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHN0eWxlOiBudW1iZXJTdHlsZSxcclxuICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMuX251bWJlckZvcm1hdCxcclxuICAgICAgICAgICAgICB2YWx1ZTogKGQudmFsdWUgfHwgMCkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgfSBhcyBDZWxsTW9kZWwpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UucHVzaCh7IGNlbGxzLCBzb3VyY2U6IGQsIGhlaWdodDogMjAgfSBhcyBSb3dNb2RlbCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuX2RyYXcoKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICB9LCAoZTogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKGUuc3RhdHVzID09PSA0MDEgPyAnVW5hdXRob3JpemVkJyA6IG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgZWxzZSB0aGlzLl9zZXJ2aWNlLnNlcmllcyh0aGlzLmN1YmUsIHRoaXMuX3hBeGlzLCB7IHNlcmllczogdGhpcy5fc2VyaWVzLCBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMgfSkuXHJcbiAgICAgIHN1YnNjcmliZShkID0+IHtcclxuICAgICAgICB0aGlzLl9wcmVwYXJlLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgc3R5bGUgPSB7IGZvbnRXZWlnaHQ6ICdib2xkJywgdGV4dEFsaWduOiAnY2VudGVyJyB9IGFzIENlbGxTdHlsZU1vZGVsO1xyXG4gICAgICAgICAgY29uc3QgY2VsbHMgPSBbeyB2YWx1ZTogJycgfSBhcyBDZWxsTW9kZWxdO1xyXG4gICAgICAgICAgdGhpcy5feGNvbHVtbnMuZm9yRWFjaChjID0+IGNlbGxzLnB1c2goeyB2YWx1ZTogYy52YWx1ZSwgc3R5bGUgfSkpO1xyXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gW3sgY2VsbHMsIGhlaWdodDogMjAgfV07XHJcblxyXG4gICAgICAgICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9jdWJlLmluZGljZXMuZmlsdGVyKGkgPT4gdGhpcy5faW5kaWNlcy5pbmRleE9mKGkubmFtZSkgPiAwKS5cclxuICAgICAgICAgICAgZm9yRWFjaChpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBjZWxscyA9IFt7IHZhbHVlOiBpLnRpdGxlLCBzdHlsZSB9IGFzIENlbGxNb2RlbF0sXHJcbiAgICAgICAgICAgICAgICBzZXJpZSA9IGQuZmluZChzID0+IHMuaW5kZXggPT09IGkubmFtZSksIG1hcCA9IHt9O1xyXG4gICAgICAgICAgICAgIGlmIChzZXJpZSkge1xyXG4gICAgICAgICAgICAgICAgc2VyaWUucG9pbnRzLmZvckVhY2gocCA9PiBtYXBbcC54XSA9IHAueSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl94Y29sdW1ucy5mb3JFYWNoKGMgPT5cclxuICAgICAgICAgICAgICAgICAgY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IChtYXBbYy5rZXldIHx8IDApLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IG51bWJlclN0eWxlXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnB1c2goeyBjZWxscywgaGVpZ2h0OiAyMCB9IGFzIFJvd01vZGVsKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5feXJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2VsbHMgPSBbeyB2YWx1ZTogci52YWx1ZSwgc3R5bGUgfSBhcyBDZWxsTW9kZWxdLFxyXG4gICAgICAgICAgICAgIHNlcmllID0gZC5maW5kKHMgPT4gcy5uYW1lID09PSByLmtleSksIG1hcCA9IHt9O1xyXG4gICAgICAgICAgICBpZiAoc2VyaWUpIHtcclxuICAgICAgICAgICAgICBzZXJpZS5wb2ludHMuZm9yRWFjaChwID0+IG1hcFtwLnhdID0gcC55KTtcclxuICAgICAgICAgICAgICB0aGlzLl94Y29sdW1ucy5mb3JFYWNoKGMgPT5cclxuICAgICAgICAgICAgICAgIGNlbGxzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogKG1hcFtjLmtleV0gfHwgMCkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlOiBudW1iZXJTdHlsZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICB0aGlzLl94Y29sdW1ucy5mb3JFYWNoKF8gPT5cclxuICAgICAgICAgICAgICAgIGNlbGxzLnB1c2goeyB2YWx1ZTogJzAnIH0pXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnB1c2goeyBjZWxscywgaGVpZ2h0OiAyMCB9IGFzIFJvd01vZGVsKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LCAoZTogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgICB0aGlzLl9zYi5lcnJvcihlLnN0YXR1cyA9PT0gNDAxID8gJ1VuYXV0aG9yaXplZCcgOiBudWxsKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZHJhdygpIHtcclxuICAgIHRoaXMuc3ByZWFkc2hlZXQgJiYgdGhpcy5zcHJlYWRzaGVldC5kZXN0cm95KCk7XHJcbiAgICB0aGlzLnNwcmVhZHNoZWV0ID0gbmV3IFNwcmVhZHNoZWV0KHtcclxuICAgICAgaXNQcm90ZWN0ZWQ6IHRydWUsXHJcbiAgICAgIGFsbG93RWRpdGluZzogZmFsc2UsXHJcbiAgICAgIGFsbG93RGVsZXRlOiBmYWxzZSxcclxuICAgICAgYWxsb3dJbnNlcnQ6IGZhbHNlLFxyXG4gICAgICBhbGxvd1NvcnRpbmc6IHRydWUsXHJcbiAgICAgIC8vYWxsb3dTYXZlOiBmYWxzZSxcclxuICAgICAgc2hvd1JpYmJvbjogZmFsc2UsXHJcbiAgICAgIGFsbG93QXV0b0ZpbGw6IGZhbHNlLFxyXG4gICAgICBhdXRvRmlsbFNldHRpbmdzOiB7IHNob3dGaWxsT3B0aW9uczogZmFsc2UgfSxcclxuICAgICAgLy9lbmFibGVDbGlwYm9hcmQ6IHRydWUsXHJcbiAgICAgIC8vYWxsb3dDaGFydDogZmFsc2UsXHJcbiAgICAgIC8vYWxsb3dGaWx0ZXJpbmc6IGZhbHNlLFxyXG4gICAgICAvL2FsbG93RGF0YVZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAvL2FsbG93RmluZEFuZFJlcGxhY2U6IGZhbHNlLFxyXG4gICAgICBlbmFibGVDb250ZXh0TWVudTogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtdWxhQmFyOiBmYWxzZSxcclxuICAgICAgc2hvd1NoZWV0VGFiczogZmFsc2UsXHJcbi8vc2Nyb2xsU2V0dGluZ3M6IHsgaXNGaW5pdGU6IHRydWUgfSxcclxuICAgICAgc2VsZWN0OiB0aGlzLnNlbGVjdC5iaW5kKHRoaXMpLFxyXG4gICAgICBzaGVldHM6IFt7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIC8vZnJvemVuQ29sdW1uczogdGhpcy5zZXJpZXMgIT09IHVuZGVmaW5lZCA/IDEgOiAwLFxyXG4gICAgICAgIC8vZnJvemVuUm93czogMSxcclxuICAgICAgICByb3dzOiB0aGlzLmRhdGFTb3VyY2UsXHJcbiAgICAgIH1dLFxyXG4gICAgICB3aWR0aDogdGhpcy53aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcclxuICAgIH0sIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG4gIHNlbGVjdChldnQ6IFNlbGVjdEV2ZW50QXJncykge1xyXG4gICAgY29uc3QgYWRkcmVzcyA9IHRoaXMuc3ByZWFkc2hlZXQuZ2V0QWRkcmVzc0luZm8oZXZ0LnJhbmdlKTtcclxuICAgIGxldCBbeSwgeCwgeTEsIHgxXSA9IGFkZHJlc3MuaW5kaWNlcztcclxuICAgIGlmICh5MSA8IHkpIHtcclxuICAgICAgY29uc3QgcmFuZ2UgPSB5O1xyXG4gICAgICB5ID0geTEsIHkxID0gcmFuZ2U7XHJcbiAgICB9XHJcbiAgICBpZiAoeDEgPCB4KSB7XHJcbiAgICAgIGNvbnN0IHJhbmdlID0geDtcclxuICAgICAgeCA9IHgxLCB4MSA9IHJhbmdlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXhlczoge30gPSB7fTtcclxuICAgIGlmICghdGhpcy5fc2VyaWVzKSB7XHJcbiAgICAgIGlmICh5ID09PSAwKSByZXR1cm47XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5faW5kaWNlcyAmJiB5IDwgdGhpcy5faW5kaWNlcy5sZW5ndGggPyB0aGlzLl9jaW5kaWNlc1t5XS5uYW1lIDogbnVsbDtcclxuICAgICAgbGV0IGkgPSB5O1xyXG4gICAgICBkbyB7XHJcbiAgICAgICAgdGhpcy5fYXhlcy5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgICAgY29uc3Qga2V5ID0gKHRoaXMuZGF0YVNvdXJjZVtpXSBhcyBhbnkpLnNvdXJjZVsnXycgKyBhLm5hbWVdO1xyXG4gICAgICAgICAgaWYgKCFheGVzW2EubmFtZV0pXHJcbiAgICAgICAgICAgIGF4ZXNbYS5uYW1lXSA9IGtleTtcclxuICAgICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKGF4ZXNbYS5uYW1lXSkpXHJcbiAgICAgICAgICAgIGF4ZXNbYS5uYW1lXSA9IFtheGVzW2EubmFtZV0sIGtleV07XHJcbiAgICAgICAgICBlbHNlIGlmICgoYXhlc1thLm5hbWVdIGFzIHN0cmluZ1tdKS5pbmRleE9mKGtleSkgPCAwKSAoYXhlc1thLm5hbWVdIGFzIHN0cmluZ1tdKS5wdXNoKGtleSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaSsrO1xyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChpIDw9IHkxKTtcclxuICAgICAgdGhpcy5leHBsb3JlLmVtaXQoeyBheGVzLCBpbmRleCB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoeSA9PT0gMCkge1xyXG4gICAgICAgIGlmICh5IDwgeTEpIHtcclxuICAgICAgICAgIGNvbnN0IHsga2V5IH0gPSB0aGlzLl94Y29sdW1uc1t4IC0gMV0sIHhOYW1lID0gdGhpcy5feEF4aXNbMF07XHJcbiAgICAgICAgICBheGVzW3hOYW1lXSA9IGtleTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoeCA9PT0gMCkge1xyXG4gICAgICAgIGlmICh4IDwgeDEpIHtcclxuICAgICAgICAgIGNvbnN0IHsga2V5IH0gPSB0aGlzLl95cm93c1t5IC0gMV0sIHlOYW1lID0gdGhpcy5fc2VyaWVzWzBdO1xyXG4gICAgICAgICAgYXhlc1t5TmFtZV0gPSBrZXk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHkgPT09IHkxICYmIHggPT09IHgxICYmIHRoaXMuZGF0YVNvdXJjZVt5XS5jZWxsc1t4XS52YWx1ZSA9PT0gJzAnKSByZXR1cm47XHJcbiAgICAgIGVsc2UgaWYgKHkgPiB0aGlzLmRhdGFTb3VyY2UubGVuZ3RoIC0gMSB8fCB4ID4gdGhpcy5kYXRhU291cmNlW3ldLmNlbGxzLmxlbmd0aCAtIDEpIHJldHVybjtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgeE5hbWUgPSB0aGlzLl94QXhpc1swXSwgeU5hbWUgPSB0aGlzLl9zZXJpZXNbMF07XHJcbiAgICAgICAgbGV0IGkgPSB5IC0gMSwgaiA9IHggLSAxO1xyXG4gICAgICAgIHdoaWxlIChqIDwgeDEpIHtcclxuICAgICAgICAgIGxldCB7IGtleSB9ID0gdGhpcy5feGNvbHVtbnNbal07XHJcbiAgICAgICAgICBpZiAoIWF4ZXNbeE5hbWVdKVxyXG4gICAgICAgICAgICBheGVzW3hOYW1lXSA9IGtleTtcclxuICAgICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKGF4ZXNbeE5hbWVdKSlcclxuICAgICAgICAgICAgYXhlc1t4TmFtZV0gPSBbYXhlc1t4TmFtZV0sIGtleV07XHJcbiAgICAgICAgICBlbHNlIGlmICgoYXhlc1t4TmFtZV0gYXMgc3RyaW5nW10pLmluZGV4T2Yoa2V5KSA8IDApXHJcbiAgICAgICAgICAgIChheGVzW3hOYW1lXSBhcyBzdHJpbmdbXSkucHVzaChrZXkpO1xyXG4gICAgICAgICAgaisrO1xyXG4gICAgICAgIH1cclxuICAgICAgICB3aGlsZSAoaSA8IHkxKSB7XHJcbiAgICAgICAgICBsZXQgeyBrZXkgfSA9IHRoaXMuX3lyb3dzW2ldO1xyXG4gICAgICAgICAgaWYgKCFheGVzW3lOYW1lXSkgYXhlc1t5TmFtZV0gPSBrZXk7XHJcbiAgICAgICAgICBlbHNlIGlmIChpc1N0cmluZyhheGVzW3lOYW1lXSkpXHJcbiAgICAgICAgICAgIGF4ZXNbeU5hbWVdID0gW2F4ZXNbeU5hbWVdLCBrZXldO1xyXG4gICAgICAgICAgZWxzZSBpZiAoKGF4ZXNbeU5hbWVdIGFzIHN0cmluZ1tdKS5pbmRleE9mKGtleSkgPCAwKVxyXG4gICAgICAgICAgICAoYXhlc1t5TmFtZV0gYXMgc3RyaW5nW10pLnB1c2goa2V5KTtcclxuICAgICAgICAgIGkrKztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5leHBsb3JlLmVtaXQoeyBheGVzIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBleHBvcnRUb0V4Y2VsKHRpdGxlOiBzdHJpbmcpIHtcclxuICAgIC8vdGhpcy5zcHJlYWRzaGVldC5zYXZlKHsgc2F2ZVR5cGU6ICdYbHN4JywgZmlsZU5hbWU6IGAke3RpdGxlfS54bHN4YH0pXHJcbiAgICBjb25zdCB3YiA9IFhMU1gudXRpbHMuYm9va19uZXcoKTtcclxuXHJcbiAgICBjb25zdCByb3dzID0gdGhpcy5zcHJlYWRzaGVldC5zaGVldHNbMF0ucm93cy5tYXAociA9PiByLmNlbGxzLm1hcChjID0+IGMudmFsdWUpKTtcclxuICAgIGNvbnN0IHdzID0gWExTWC51dGlscy5hb2FfdG9fc2hlZXQocm93cyk7XHJcblxyXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1NoZWV0TicsIDEpO1xyXG4gICAgd2IuU2hlZXRzW25hbWVdID0gd3M7XHJcbiAgICB3Yi5TaGVldE5hbWVzLnB1c2gobmFtZSk7XHJcblxyXG4gICAgWExTWC53cml0ZUZpbGUod2IsIGAke3RpdGxlfS54bHN4YCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zcHJlYWRzaGVldCAmJiB0aGlzLnNwcmVhZHNoZWV0LmRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuIl19
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByZWFkc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL2dyaWQvc3ByZWFkc2hlZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxXQUFXLEVBQXlCLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFFN0ksT0FBTyxFQUFvQyxXQUFXLEVBQTBELE1BQU0scUNBQXFDLENBQUM7QUFDNUosT0FBTyxFQUFFLG9CQUFvQixFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBUTdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7QUFhekQsTUFBTSxPQUFPLHdCQUF3QjtJQThDbkMsWUFDVSxRQUF3QixFQUN4QixHQUFrQixFQUNsQixRQUFxQixFQUNyQixVQUE0QixFQUM1QixHQUFzQixFQUN0QixXQUF1QjtRQUx2QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUExQmQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRTdDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNoRCxPQUFFLEdBQUcsb0JBQW9CLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFFNUUsZUFBVSxHQUFlLEVBQUUsQ0FBQztRQUVuQixnQkFBVyxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFB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QztJQUNqRCxDQUFDOztBQW5VYywrQkFBTSxHQUFHLENBQUUsQ0FBQTtxSEFEZix3QkFBd0I7eUdBQXhCLHdCQUF3QixxYUFUekIsRUFBRTsyRkFTRCx3QkFBd0I7a0JBWHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osTUFBTSxFQUFFLENBQUM7OztDQUdWLENBQUM7b0JBQ0EsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxXQUFXO3FCQUNuQjtpQkFDRjttUEFJQyxLQUFLO3NCQURKLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxLQUFLO2dCQUdOLElBQUk7c0JBREgsS0FBSztnQkFHRixLQUFLO3NCQURSLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUdGLE1BQU07c0JBRFQsS0FBSztnQkFLRixPQUFPO3NCQURWLEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFFYSxPQUFPO3NCQUF6QixNQUFNO2dCQUNFLE9BQU87c0JBQWYsS0FBSztnQkFDYSxhQUFhO3NCQUEvQixNQUFNO2dCQUNRLEVBQUU7c0JBQWhCLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIENvbXBvbmVudCwgT3V0cHV0LCBPbkluaXQsIEhvc3RCaW5kaW5nLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIElucHV0LCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwUmVzcG9uc2UgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgQ2VsbE1vZGVsLCBDb2x1bW5Nb2RlbCwgUm93TW9kZWwsIFNwcmVhZHNoZWV0LCBDZWxsU3R5bGVNb2RlbCwgU2VsZWN0RXZlbnRBcmdzLCBBdXRvRmlsbFNldHRpbmdzTW9kZWwgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItc3ByZWFkc2hlZXRcIjtcclxuaW1wb3J0IHsgSW50ZXJuYXRpb25hbGl6YXRpb24sIE51bWJlckZvcm1hdE9wdGlvbnMgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWJhc2VcIjtcclxuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcclxuaW1wb3J0IHsgQXhpc0NsaWNrRXZlbnQsIEN1YmVWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vZGVjbGFyYXRpb25zXCI7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIEN1YmUsIEN1YmVBeGlzLCBDdWJlSW5kZXgsIFlBeGlzIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlLCBTZXJpZXMgfSBmcm9tIFwiLi4vY3ViZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNTdHJpbmcgfSBmcm9tIFwiLi4vLi4vY29yZS9mdW5jdGlvbnNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWN1YmUtc3ByZWFkc2hlZXQnLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBzdHlsZXM6IFtgOjpuZy1kZWVwIC5lLXNwcmVhZHNoZWV0IC5lLWRyYWdmaWxsLWRkYiB7XHJcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcbmBdLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnY3ViZS12aWV3J1xyXG4gIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1YmVTcHJlYWRzaGVldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ3ViZVZpZXdlckNvbXBvbmVudCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgQElucHV0KClcclxuICB3aWR0aDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgaGVpZ2h0OiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBjdWJlOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBzZXQgeEF4aXModmFsOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgdGhpcy5feEF4aXMgPSBpc0FycmF5KHZhbCkgPyB2YWwgOiBbdmFsXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICB5QXhpcz86IFlBeGlzO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlcmllcyh2YWw6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsKSB0aGlzLl9zZXJpZXMgPSBpc0FycmF5KHZhbCkgPyB2YWwgOiBbdmFsXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBzZXQgaW5kaWNlcyh2YWw6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsKSB0aGlzLl9pbmRpY2VzID0gaXNBcnJheSh2YWwpID8gdmFsIDogW3ZhbF07XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVycz86IEF4ZXNNYXA7XHJcbiAgQElucHV0KClcclxuICBjdXJyZW5jeUNvZGU6IHN0cmluZztcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgZXhwbG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXhpc0NsaWNrRXZlbnQ+KCk7XHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgbG9hZGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBASG9zdEJpbmRpbmcoKSBpZCA9IGBjdWJlLXNwcmVhZHNoZWV0LSR7Q3ViZVNwcmVhZHNoZWV0Q29tcG9uZW50Lm5leHRJZCsrfWA7XHJcbiAgc3ByZWFkc2hlZXQ6IFNwcmVhZHNoZWV0O1xyXG4gIGRhdGFTb3VyY2U6IFJvd01vZGVsW10gPSBbXTtcclxuICBjb2x1bW5zOiBDb2x1bW5Nb2RlbFtdO1xyXG4gIHJlYWRvbmx5IG51bWJlclN0eWxlID0geyB0ZXh0QWxpZ246ICdyaWdodCcgfSBhcyBDZWxsU3R5bGVNb2RlbDtcclxuICByZWFkb25seSBhdXRvRmlsbFNldHRpbmdzID0geyBzaG93RmlsbE9wdGlvbnM6IGZhbHNlIH0gYXMgQXV0b0ZpbGxTZXR0aW5nc01vZGVsO1xyXG4gIHByaXZhdGUgX3hBeGlzOiBzdHJpbmdbXTtcclxuICBwcml2YXRlIF9zZXJpZXM/OiBzdHJpbmdbXTtcclxuICBwcml2YXRlIF9pbmRpY2VzPzogc3RyaW5nW107XHJcbiAgcHJpdmF0ZSBfYXhlczogQ3ViZUF4aXNbXTtcclxuICBwcml2YXRlIF9jaW5kaWNlczogQ3ViZUluZGV4W107XHJcbiAgcHJpdmF0ZSBfeXJvd3M6IHsga2V5OiBhbnk7IHZhbHVlOiBhbnkgfVtdID0gW107XHJcbiAgcHJpdmF0ZSBfeGNvbHVtbnM6IHsga2V5OiBhbnk7IHZhbHVlOiBhbnkgfVtdID0gW107XHJcbiAgcHJpdmF0ZSBfcHJlcGFyZTogUHJvbWlzZTxhbnlbXT47XHJcbiAgcHJpdmF0ZSBfY3ViZTogQ3ViZTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnRsOiBJbnRlcm5hdGlvbmFsaXphdGlvbiA9IG5ldyBJbnRlcm5hdGlvbmFsaXphdGlvbigpO1xyXG4gIHByaXZhdGUgX251bWJlckZvcm1hdDogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZHM6IERhdGFzb3VyY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9udW1iZXJGb3JtYXQgPSB0aGlzLl9pbnRsLmdldE51bWJlclBhdHRlcm4oe1xyXG4gICAgICBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeUNvZGUsXHJcbiAgICAgIGZvcm1hdDogdGhpcy5jdXJyZW5jeUNvZGUgPyAnYycgOiAnbicsXHJcbiAgICAgIHVzZUdyb3VwaW5nOiB0cnVlLFxyXG4gICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHMsXHJcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogdGhpcy5fc2VydmljZS5mcmFjdGlvbkRpZ2l0c1xyXG4gICAgfSBhcyBOdW1iZXJGb3JtYXRPcHRpb25zKVxyXG5cclxuICAgIHRoaXMuX2N1YmUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gdGhpcy5jdWJlKTtcclxuICAgIGlmICghdGhpcy5fc2VyaWVzKSB7XHJcbiAgICAgIHRoaXMuX2F4ZXMgPSB0aGlzLl94QXhpcy5tYXAoYyA9PiB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PSBjKSk7XHJcbiAgICAgIGlmICh0aGlzLl9pbmRpY2VzKSB0aGlzLl9jaW5kaWNlcyA9IHRoaXMuX2N1YmUuaW5kaWNlcy5maWx0ZXIoaSA9PiB0aGlzLl9pbmRpY2VzLmluZGV4T2YoaS5uYW1lKSA+IC0xKTtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5fYXhlcy5tYXAoXyA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHdpZHRoOiAxMjBcclxuICAgICAgICB9IGFzIENvbHVtbk1vZGVsO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jb2x1bW5zLnB1c2goe1xyXG4gICAgICAgIHdpZHRoOiA5MFxyXG4gICAgICB9IC8qIHZhbHVlICovKTtcclxuICAgICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9pbmRpY2VzLmZvckVhY2goXyA9PiB0aGlzLmNvbHVtbnMucHVzaCh7XHJcbiAgICAgICAgd2lkdGg6IDkwXHJcbiAgICAgIH0gYXMgQ29sdW1uTW9kZWxcclxuICAgICAgKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgeU5hbWUgPSB0aGlzLl9zZXJpZXNbMF0sIHhOYW1lID0gdGhpcy5feEF4aXNbMF0sXHJcbiAgICAgICAgeEF4aXMgPSB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0geE5hbWUpLFxyXG4gICAgICAgIHlBeGlzID0gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHlOYW1lKTtcclxuICAgICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8YW55PltdID0gW107XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IFt7XHJcbiAgICAgICAgd2lkdGg6IDEyMFxyXG4gICAgICB9XTtcclxuICAgICAgLy8gYWNxdWlyZSBjb2x1bW5zIHNvdXJjZVxyXG4gICAgICBsZXQgb2JzZXJ2ZSA9IHRoaXMuX2RzLmFsbCh4QXhpcy5kYXRhVHlwZSkudG9Qcm9taXNlKCkuXHJcbiAgICAgICAgdGhlbihjID0+IHtcclxuICAgICAgICAgIHRoaXMuX3hjb2x1bW5zID0gYztcclxuICAgICAgICAgIGMuZm9yRWFjaChfID0+IHRoaXMuY29sdW1ucy5wdXNoKHtcclxuICAgICAgICAgICAgd2lkdGg6IDkwXHJcbiAgICAgICAgICB9IGFzIENvbHVtbk1vZGVsXHJcbiAgICAgICAgICApKTtcclxuICAgICAgICB9KSBhcyBQcm9taXNlPGFueT47XHJcbiAgICAgIHByb21pc2VzLnB1c2gob2JzZXJ2ZSk7XHJcbiAgICAgIC8vIGFjcXVpcmUgcm93cyBzb3VyY2VcclxuICAgICAgb2JzZXJ2ZSA9IHRoaXMuX2RzLmFsbCh5QXhpcy5kYXRhVHlwZSkudG9Qcm9taXNlKCkuXHJcbiAgICAgICAgdGhlbihyID0+IHRoaXMuX3lyb3dzID0gcik7XHJcbiAgICAgIHByb21pc2VzLnB1c2gob2JzZXJ2ZSk7XHJcblxyXG5cclxuICAgICAgdGhpcy5fcHJlcGFyZSA9IFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSlcclxuICAgICAgdGhpcy5leGVjdXRlKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIGlmIChjaGFuZ2VzWydoZWlnaHQnXSB8fCBjaGFuZ2VzWyd3aWR0aCddKVxyXG4gICAgICAgIGlmICh0aGlzLnNwcmVhZHNoZWV0KSB7XHJcbiAgICAgICAgICB0aGlzLnNwcmVhZHNoZWV0LmhlaWdodCA9IHRoaXMuaGVpZ2h0O1xyXG4gICAgICAgICAgdGhpcy5zcHJlYWRzaGVldC53aWR0aCA9IHRoaXMud2lkdGg7XHJcbiAgICAgICAgICB0aGlzLnNwcmVhZHNoZWV0LnJlc2l6ZSgpO1xyXG4gICAgICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBleGVjdXRlKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICBpZiAoIXRoaXMuX3NlcmllcylcclxuICAgICAgdGhpcy5fc2VydmljZS50YWJsZSh0aGlzLmN1YmUsIHRoaXMuX3hBeGlzLCB7IGZpbHRlcnM6IHRoaXMuZmlsdGVycywgaW5kaWNlczogdGhpcy5faW5kaWNlcyB9KS5cclxuICAgICAgICBzdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9kYXRhdGFibGUoZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfSwgKGU6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcihlLnN0YXR1cyA9PT0gNDAxID8gJ1VuYXV0aG9yaXplZCcgOiBudWxsKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIGVsc2UgdGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5jdWJlLCB0aGlzLl94QXhpcywgeyBzZXJpZXM6IHRoaXMuX3NlcmllcywgZmlsdGVyczogdGhpcy5maWx0ZXJzIH0pLlxyXG4gICAgICBzdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2RhdGFzZXJpZXMoZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sIChlOiBIdHRwUmVzcG9uc2U8YW55PikgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKGUuc3RhdHVzID09PSA0MDEgPyAnVW5hdXRob3JpemVkJyA6IG51bGwpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RhdGF0YWJsZShkYXRhOiB7IHZhbHVlOiBudW1iZXI7IH1bXSkge1xyXG4gICAgY29uc3QgY2VsbHMgPSBbXSwgc3R5bGUgPSB7IGZvbnRXZWlnaHQ6ICdib2xkJywgdGV4dEFsaWduOiAnY2VudGVyJyB9IGFzIENlbGxTdHlsZU1vZGVsO1xyXG4gICAgdGhpcy5fYXhlcy5mb3JFYWNoKGMgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgIHZhbHVlOiBjLnRpdGxlLCBzdHlsZVxyXG4gICAgfSBhcyBDZWxsTW9kZWwpKTtcclxuICAgIHRoaXMuX2luZGljZXMgJiYgdGhpcy5fY2luZGljZXMuZm9yRWFjaChpID0+IGNlbGxzLnB1c2goeyB2YWx1ZTogaS50aXRsZSwgc3R5bGUgfSBhcyBDZWxsTW9kZWwpKTtcclxuICAgIGNlbGxzLnB1c2goe1xyXG4gICAgICB2YWx1ZTogdGhpcy55QXhpcyA/IHRoaXMueUF4aXMudGl0bGUgOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdWYWx1ZScpLFxyXG4gICAgICBzdHlsZVxyXG4gICAgfSBhcyBDZWxsTW9kZWwpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0gW3tcclxuICAgICAgY2VsbHMsIGhlaWdodDogMjVcclxuICAgIH0gYXMgUm93TW9kZWxdO1xyXG4gICAgZGF0YS5mb3JFYWNoKGQgPT4ge1xyXG4gICAgICBjb25zdCBjZWxscyA9IFtdO1xyXG4gICAgICB0aGlzLl94QXhpcy5mb3JFYWNoKGMgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgICAgdmFsdWU6IGRbY10sXHJcbiAgICAgIH0gYXMgQ2VsbE1vZGVsKSk7XHJcbiAgICAgIHRoaXMuX2luZGljZXMgJiYgdGhpcy5faW5kaWNlcy5mb3JFYWNoKGkgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgICAgc3R5bGU6IHRoaXMubnVtYmVyU3R5bGUsXHJcbiAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgdmFsdWU6IChkW2ldIHx8IDApLnRvU3RyaW5nKCksXHJcbiAgICAgIH0gYXMgQ2VsbE1vZGVsKSk7XHJcbiAgICAgIGNlbGxzLnB1c2goe1xyXG4gICAgICAgIHN0eWxlOiB0aGlzLm51bWJlclN0eWxlLFxyXG4gICAgICAgIGZvcm1hdDogdGhpcy5fbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgIHZhbHVlOiAoZC52YWx1ZSB8fCAwKS50b1N0cmluZygpLFxyXG4gICAgICB9IGFzIENlbGxNb2RlbCk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wdXNoKHsgY2VsbHMsIHNvdXJjZTogZCwgaGVpZ2h0OiAyNSB9IGFzIFJvd01vZGVsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGF0YXNlcmllcyhkOiBTZXJpZXNbXSkge1xyXG4gICAgY29uc3Qgc3R5bGUgPSB7IGZvbnRXZWlnaHQ6ICdib2xkJywgdGV4dEFsaWduOiAnY2VudGVyJyB9IGFzIENlbGxTdHlsZU1vZGVsO1xyXG4gICAgY29uc3QgY2VsbHMgPSBbeyB2YWx1ZTogJycgfSBhcyBDZWxsTW9kZWxdO1xyXG4gICAgdGhpcy5feGNvbHVtbnMuZm9yRWFjaChjID0+IGNlbGxzLnB1c2goeyB2YWx1ZTogYy52YWx1ZSwgc3R5bGUgfSkpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0gW3sgY2VsbHMsIGhlaWdodDogMjUgfV07XHJcblxyXG4gICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9jdWJlLmluZGljZXMuZmlsdGVyKGkgPT4gdGhpcy5faW5kaWNlcy5pbmRleE9mKGkubmFtZSkgPiAwKS5cclxuICAgICAgZm9yRWFjaChpID0+IHtcclxuICAgICAgICBjb25zdCBjZWxscyA9IFt7IHZhbHVlOiBpLnRpdGxlLCBzdHlsZSB9IGFzIENlbGxNb2RlbF0sIHNlcmllID0gZC5maW5kKHMgPT4gcy5pbmRleCA9PT0gaS5uYW1lKSwgbWFwID0ge307XHJcbiAgICAgICAgaWYgKHNlcmllKSB7XHJcbiAgICAgICAgICBzZXJpZS5wb2ludHMuZm9yRWFjaChwID0+IG1hcFtwLnhdID0gcC55KTtcclxuICAgICAgICAgIHRoaXMuX3hjb2x1bW5zLmZvckVhY2goYyA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICAgICAgdmFsdWU6IChtYXBbYy5rZXldIHx8IDApLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgICAgICBzdHlsZTogdGhpcy5udW1iZXJTdHlsZVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UucHVzaCh7IGNlbGxzLCBoZWlnaHQ6IDI1IH0gYXMgUm93TW9kZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLl95cm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBjb25zdCBjZWxscyA9IFt7IHZhbHVlOiByLnZhbHVlLCBzdHlsZSB9IGFzIENlbGxNb2RlbF0sIHNlcmllID0gZC5maW5kKHMgPT4gcy5uYW1lID09PSByLmtleSksIG1hcCA9IHt9O1xyXG4gICAgICBpZiAoc2VyaWUpIHtcclxuICAgICAgICBzZXJpZS5wb2ludHMuZm9yRWFjaChwID0+IG1hcFtwLnhdID0gcC55KTtcclxuICAgICAgICB0aGlzLl94Y29sdW1ucy5mb3JFYWNoKGMgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICB2YWx1ZTogKG1hcFtjLmtleV0gfHwgMCkudG9TdHJpbmcoKSxcclxuICAgICAgICAgIGZvcm1hdDogdGhpcy5fbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgICAgc3R5bGU6IHRoaXMubnVtYmVyU3R5bGVcclxuICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuX3hjb2x1bW5zLmZvckVhY2goXyA9PiBjZWxscy5wdXNoKHsgdmFsdWU6ICcwJyB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wdXNoKHsgY2VsbHMsIGhlaWdodDogMjUgfSBhcyBSb3dNb2RlbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RyYXcoKSB7XHJcbiAgICB0aGlzLnNwcmVhZHNoZWV0ICYmIHRoaXMuc3ByZWFkc2hlZXQuZGVzdHJveSgpO1xyXG4gICAgdGhpcy5zcHJlYWRzaGVldCA9IG5ldyBTcHJlYWRzaGVldCh7XHJcbiAgICAgIGlzUHJvdGVjdGVkOiB0cnVlLFxyXG4gICAgICBhbGxvd0VkaXRpbmc6IGZhbHNlLFxyXG4gICAgICBhbGxvd0RlbGV0ZTogZmFsc2UsXHJcbiAgICAgIGFsbG93SW5zZXJ0OiBmYWxzZSxcclxuICAgICAgYWxsb3dTb3J0aW5nOiB0cnVlLFxyXG4gICAgICBzaG93UmliYm9uOiBmYWxzZSxcclxuICAgICAgYWxsb3dBdXRvRmlsbDogZmFsc2UsXHJcbiAgICAgIGF1dG9GaWxsU2V0dGluZ3M6IHRoaXMuYXV0b0ZpbGxTZXR0aW5ncyxcclxuICAgICAgZW5hYmxlQ2xpcGJvYXJkOiB0cnVlLFxyXG4gICAgICBlbmFibGVDb250ZXh0TWVudTogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtdWxhQmFyOiBmYWxzZSxcclxuICAgICAgc2hvd1NoZWV0VGFiczogZmFsc2UsXHJcbiAgICAgIHNlbGVjdDogdGhpcy5zZWxlY3QuYmluZCh0aGlzKSxcclxuICAgICAgc2hlZXRzOiBbe1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucyxcclxuICAgICAgICAvL2Zyb3plbkNvbHVtbnM6IHRoaXMuc2VyaWVzICE9PSB1bmRlZmluZWQgPyAxIDogMCxcclxuICAgICAgICAvL2Zyb3plblJvd3M6IDEsXHJcbiAgICAgICAgcm93czogdGhpcy5kYXRhU291cmNlLFxyXG4gICAgICB9XSxcclxuICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXHJcbiAgICB9LCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuICBzZWxlY3QoZXZ0OiBTZWxlY3RFdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IGFkZHJlc3MgPSB0aGlzLnNwcmVhZHNoZWV0LmdldEFkZHJlc3NJbmZvKGV2dC5yYW5nZSk7XHJcbiAgICBsZXQgW3ksIHgsIHkxLCB4MV0gPSBhZGRyZXNzLmluZGljZXM7XHJcbiAgICBpZiAoeTEgPCB5KSB7XHJcbiAgICAgIGNvbnN0IHJhbmdlID0geTtcclxuICAgICAgeSA9IHkxLCB5MSA9IHJhbmdlO1xyXG4gICAgfVxyXG4gICAgaWYgKHgxIDwgeCkge1xyXG4gICAgICBjb25zdCByYW5nZSA9IHg7XHJcbiAgICAgIHggPSB4MSwgeDEgPSByYW5nZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGF4ZXM6IHt9ID0ge307XHJcbiAgICBpZiAoIXRoaXMuX3Nlcmllcykge1xyXG4gICAgICBpZiAoeSA9PT0gMCkgcmV0dXJuO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2luZGljZXMgJiYgeSA8IHRoaXMuX2luZGljZXMubGVuZ3RoID8gdGhpcy5fY2luZGljZXNbeV0ubmFtZSA6IG51bGw7XHJcbiAgICAgIGxldCBpID0geTtcclxuICAgICAgZG8ge1xyXG4gICAgICAgIHRoaXMuX2F4ZXMuZm9yRWFjaChhID0+IHtcclxuICAgICAgICAgIGNvbnN0IGtleSA9ICh0aGlzLmRhdGFTb3VyY2VbaV0gYXMgYW55KS5zb3VyY2VbJ18nICsgYS5uYW1lXTtcclxuICAgICAgICAgIGlmICghYXhlc1thLm5hbWVdKVxyXG4gICAgICAgICAgICBheGVzW2EubmFtZV0gPSBrZXk7XHJcbiAgICAgICAgICBlbHNlIGlmIChpc1N0cmluZyhheGVzW2EubmFtZV0pKVxyXG4gICAgICAgICAgICBheGVzW2EubmFtZV0gPSBbYXhlc1thLm5hbWVdLCBrZXldO1xyXG4gICAgICAgICAgZWxzZSBpZiAoKGF4ZXNbYS5uYW1lXSBhcyBzdHJpbmdbXSkuaW5kZXhPZihrZXkpIDwgMCkgKGF4ZXNbYS5uYW1lXSBhcyBzdHJpbmdbXSkucHVzaChrZXkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGkrKztcclxuICAgICAgfVxyXG4gICAgICB3aGlsZSAoaSA8PSB5MSk7XHJcbiAgICAgIHRoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcywgaW5kZXggfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHkgPT09IDApIHtcclxuICAgICAgICBpZiAoeSA8IHkxKSB7XHJcbiAgICAgICAgICBjb25zdCB7IGtleSB9ID0gdGhpcy5feGNvbHVtbnNbeCAtIDFdLCB4TmFtZSA9IHRoaXMuX3hBeGlzWzBdO1xyXG4gICAgICAgICAgYXhlc1t4TmFtZV0gPSBrZXk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHggPT09IDApIHtcclxuICAgICAgICBpZiAoeCA8IHgxKSB7XHJcbiAgICAgICAgICBjb25zdCB7IGtleSB9ID0gdGhpcy5feXJvd3NbeSAtIDFdLCB5TmFtZSA9IHRoaXMuX3Nlcmllc1swXTtcclxuICAgICAgICAgIGF4ZXNbeU5hbWVdID0ga2V5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh5ID09PSB5MSAmJiB4ID09PSB4MSAmJiB0aGlzLmRhdGFTb3VyY2VbeV0uY2VsbHNbeF0udmFsdWUgPT09ICcwJykgcmV0dXJuO1xyXG4gICAgICBlbHNlIGlmICh5ID4gdGhpcy5kYXRhU291cmNlLmxlbmd0aCAtIDEgfHwgeCA+IHRoaXMuZGF0YVNvdXJjZVt5XS5jZWxscy5sZW5ndGggLSAxKSByZXR1cm47XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHhOYW1lID0gdGhpcy5feEF4aXNbMF0sIHlOYW1lID0gdGhpcy5fc2VyaWVzWzBdO1xyXG4gICAgICAgIGxldCBpID0geSAtIDEsIGogPSB4IC0gMTtcclxuICAgICAgICB3aGlsZSAoaiA8IHgxKSB7XHJcbiAgICAgICAgICBsZXQgeyBrZXkgfSA9IHRoaXMuX3hjb2x1bW5zW2pdO1xyXG4gICAgICAgICAgaWYgKCFheGVzW3hOYW1lXSlcclxuICAgICAgICAgICAgYXhlc1t4TmFtZV0gPSBrZXk7XHJcbiAgICAgICAgICBlbHNlIGlmIChpc1N0cmluZyhheGVzW3hOYW1lXSkpXHJcbiAgICAgICAgICAgIGF4ZXNbeE5hbWVdID0gW2F4ZXNbeE5hbWVdLCBrZXldO1xyXG4gICAgICAgICAgZWxzZSBpZiAoKGF4ZXNbeE5hbWVdIGFzIHN0cmluZ1tdKS5pbmRleE9mKGtleSkgPCAwKVxyXG4gICAgICAgICAgICAoYXhlc1t4TmFtZV0gYXMgc3RyaW5nW10pLnB1c2goa2V5KTtcclxuICAgICAgICAgIGorKztcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKGkgPCB5MSkge1xyXG4gICAgICAgICAgbGV0IHsga2V5IH0gPSB0aGlzLl95cm93c1tpXTtcclxuICAgICAgICAgIGlmICghYXhlc1t5TmFtZV0pIGF4ZXNbeU5hbWVdID0ga2V5O1xyXG4gICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcoYXhlc1t5TmFtZV0pKVxyXG4gICAgICAgICAgICBheGVzW3lOYW1lXSA9IFtheGVzW3lOYW1lXSwga2V5XTtcclxuICAgICAgICAgIGVsc2UgaWYgKChheGVzW3lOYW1lXSBhcyBzdHJpbmdbXSkuaW5kZXhPZihrZXkpIDwgMClcclxuICAgICAgICAgICAgKGF4ZXNbeU5hbWVdIGFzIHN0cmluZ1tdKS5wdXNoKGtleSk7XHJcbiAgICAgICAgICBpKys7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcyB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgZXhwb3J0VG9FeGNlbCh0aXRsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB3YiA9IFhMU1gudXRpbHMuYm9va19uZXcoKTtcclxuXHJcbiAgICBjb25zdCByb3dzID0gdGhpcy5zcHJlYWRzaGVldC5zaGVldHNbMF0ucm93cy5tYXAociA9PiByLmNlbGxzLm1hcChjID0+IGMudmFsdWUpKTtcclxuICAgIGNvbnN0IHdzID0gWExTWC51dGlscy5hb2FfdG9fc2hlZXQocm93cyk7XHJcblxyXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1NoZWV0TicsIDEpO1xyXG4gICAgd2IuU2hlZXRzW25hbWVdID0gd3M7XHJcbiAgICB3Yi5TaGVldE5hbWVzLnB1c2gobmFtZSk7XHJcblxyXG4gICAgWExTWC53cml0ZUZpbGUod2IsIGAke3RpdGxlfS54bHN4YCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zcHJlYWRzaGVldCAmJiB0aGlzLnNwcmVhZHNoZWV0LmRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuIl19
@@ -26,7 +26,7 @@ export class CubeAccumAnalysisWidget extends CubeAnalysisBase {
26
26
  visible: true,
27
27
  position: 'Outside',
28
28
  connectorStyle: { length: '10%' },
29
- name: 'x',
29
+ name: 'name',
30
30
  font: {
31
31
  size: '14px',
32
32
  fontFamily: FONT_FAMILY,
@@ -143,4 +143,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
143
143
  }
144
144
  }]
145
145
  }], ctorParameters: function () { return [{ type: i1.WidgetRef }, { type: i2.CubeInfo }, { type: i3.SessionService }, { type: i4.DatasourceService }, { type: i5.CubeService }, { type: i0.ElementRef }]; } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjdW0tY3ViZS53aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2Rhc2hib2FyZC9jdWJlL2FjY3VtLWN1YmUud2lkZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFDb0MsaUJBQWlCLEVBQ3NCLHFCQUFxQixFQUFFLG1CQUFtQixFQUczSCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBa0IsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQXVCLE1BQU0seUJBQXlCLENBQUM7QUFHakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBR2hELGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBRXJFLFNBQVMsU0FBUztJQUNoQixPQUFPLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUMzRSxDQUFDO0FBV0QsMEJBQTBCO0FBQzFCLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxnQkFBZ0I7SUErQjNELFlBQVksR0FBdUIsRUFDakMsSUFBYyxFQUNkLE9BQXVCLEVBQ3ZCLEVBQXFCLEVBQ3JCLElBQWlCLEVBQ1QsV0FBdUI7UUFDL0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUQzQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQWpDakMsU0FBSSxHQUFZLEVBQUUsQ0FBQztRQUNuQixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNmLGdCQUFXLEdBQUcs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QUM7SUFDckMsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFvQjtRQUM3QixNQUFNLElBQUksR0FBWSxFQUFFLENBQUM7UUFDekIsTUFBTSxDQUFDLEdBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQVksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2RixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7O29IQXhIVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qiw2SkFSeEIsRUFBRTsyRkFRRCx1QkFBdUI7a0JBVm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osNENBQTRDO29CQUM1QyxJQUFJLEVBQUU7d0JBQ0osTUFBTSxFQUFFLElBQUk7d0JBQ1osR0FBRyxFQUFFLEtBQUs7cUJBQ1g7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTGVnZW5kU2VyaWVzTW9kZWwsIFRvb2x0aXBTZXR0aW5nc01vZGVsLCBBY2N1bXVsYXRpb25DaGFydCxcclxuICBBY2N1bXVsYXRpb25EYXRhTGFiZWxTZXR0aW5nc01vZGVsLCBBbmltYXRpb25Nb2RlbCwgSUFjY1Rvb2x0aXBSZW5kZXJFdmVudEFyZ3MsIEFjY3VtdWxhdGlvbkRhdGFMYWJlbCwgQWNjdW11bGF0aW9uVG9vbHRpcCxcclxuICBBY2N1bXVsYXRpb25TZXJpZXNNb2RlbCxcclxuICBJUG9pbnRFdmVudEFyZ3NcclxufSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1jaGFydHMnO1xyXG5pbXBvcnQgeyBDdWJlQW5hbHlzaXNCYXNlLCBQb2ludCwgT3B0aW9ucyB9IGZyb20gJy4vY3ViZS1hbmFseXNpcy5iYXNlJztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBWEVTX0NPREVfRElWSURFUiwgQ3ViZVNlcnZpY2UsIFNlcmllcyB9IGZyb20gJy4uLy4uL2N1YmUvY3ViZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2lkZ2V0UmVmIH0gZnJvbSBcIi4uL3dpZGdldC1yZWZcIjtcclxuaW1wb3J0IHsgQXhlc01hcCwgRGltZW50aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgRk9OVF9GQU1JTFkgfSBmcm9tICcuLi8uLi9jb3JlL2NvbG9ycyc7XHJcbmltcG9ydCB7IEN1YmVJbmZvIH0gZnJvbSAnLi4vLi4vY3ViZS9jdWJlLWluZm8uc2VydmljZSc7XHJcblxyXG5BY2N1bXVsYXRpb25DaGFydC5JbmplY3QoQWNjdW11bGF0aW9uRGF0YUxhYmVsLCBBY2N1bXVsYXRpb25Ub29sdGlwKTtcclxuXHJcbmZ1bmN0aW9uIGNhcmRDb2xvcigpOiBzdHJpbmcge1xyXG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIubWF0LWNhcmQtdGl0bGVcIikpLmNvbG9yO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1hY2N1bS1jdWJlLWFuYWx5c2lzJyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgLy8gIHRlbXBsYXRlVXJsOiAnLi9hY2N1bS1jdWJlLndpZGdldC5odG1sJyxcclxuICBob3N0OiB7XHJcbiAgICAnW2lkXSc6ICdpZCcsXHJcbiAgICBkaXI6ICdsdHInXHJcbiAgfVxyXG59KVxyXG4vKiogc3RhdGlzdGljcyBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgQ3ViZUFjY3VtQW5hbHlzaXNXaWRnZXQgZXh0ZW5kcyBDdWJlQW5hbHlzaXNCYXNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAvL0BWaWV3Q2hpbGQoQWNjdW11bGF0aW9uQ2hhcnRDb21wb25lbnQpXHJcbiAgY2hhcnQ6IEFjY3VtdWxhdGlvbkNoYXJ0O1xyXG4gIGRhdGE6IFBvaW50W10gPSBbXTtcclxuICBzdGFydEFuZ2xlID0gMDtcclxuICBlbmRBbmdsZSA9IDM2MDtcclxuICBpbm5lclJhZGl1cyA9ICcwJztcclxuICByZWFkb25seSBkYXRhTGFiZWw6IEFjY3VtdWxhdGlvbkRhdGFMYWJlbFNldHRpbmdzTW9kZWwgPSB7XHJcbiAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgcG9zaXRpb246ICdPdXRzaWRlJyxcclxuICAgIGNvbm5lY3RvclN0eWxlOiB7IGxlbmd0aDogJzEwJScgfSxcclxuICAgIG5hbWU6ICd4JyxcclxuICAgIGZvbnQ6IHtcclxuICAgICAgc2l6ZTogJzE0cHgnLFxyXG4gICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWSxcclxuICAgICAgY29sb3I6IGNhcmRDb2xvcigpXHJcbiAgICB9XHJcbiAgfTtcclxuICByZWFkb25seSBsZWdlbmQ6IExlZ2VuZFNlcmllc01vZGVsID0ge1xyXG4gICAgaXNJbnZlcnNlZDogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlLFxyXG4gICAgdmlzaWJsZTogZmFsc2VcclxuICB9O1xyXG4gIHJlYWRvbmx5IHRvb2x0aXA6IFRvb2x0aXBTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgZW5hYmxlOiB0cnVlLFxyXG4gICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfTtcclxuICByZWFkb25seSBhbmltYXRpb246IEFuaW1hdGlvbk1vZGVsID0geyBlbmFibGU6IHRydWUsIGR1cmF0aW9uOiAxMDAwIH07XHJcbiAgcmVhZG9ubHkgZW5hYmxlUnRsID0gdGhpcy5fc2Vzc2lvbi5pbnZlcnNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihyZWY6IFdpZGdldFJlZjxPcHRpb25zPixcclxuICAgIGluZm86IEN1YmVJbmZvLFxyXG4gICAgc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBkczogRGF0YXNvdXJjZVNlcnZpY2UsXHJcbiAgICBjdWJlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIHN1cGVyKHJlZiwgaW5mbyxzZXNzaW9uLCBkcywgY3ViZSk7XHJcbiAgICBzd2l0Y2ggKHRoaXMuX29wdGlvbnMuY2hhcnRUeXBlKSB7XHJcbiAgICAgIGNhc2UgJ0RvdWdobnV0JzpcclxuICAgICAgICB0aGlzLmlubmVyUmFkaXVzID0gJzQwJSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0hhbGZEb3VnaG51dCc6XHJcbiAgICAgICAgdGhpcy5zdGFydEFuZ2xlID0gMjcwO1xyXG4gICAgICAgIHRoaXMuZW5kQW5nbGUgPSA5MDtcclxuICAgICAgICB0aGlzLmlubmVyUmFkaXVzID0gJzQwJSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uTG9hZChkYXRhOiBTZXJpZXNbXSkge1xyXG4gICAgdGhpcy5kYXRhID0gZGF0YS5sZW5ndGggPyBkYXRhWzBdLnBvaW50cyA6IFtdO1xyXG4gICAgdGhpcy5fZHJhdygpO1xyXG4gIH1cclxuICBvblJlc2l6ZShkaW06IERpbWVudGlvbnMpIHtcclxuICAgIGlmICh0aGlzLmNoYXJ0KSB7XHJcbiAgICAgLy8gdGhpcy5jaGFydC5oZWlnaHQgPSBgJHtkaW0uaGVpZ2h0fXB4YDtcclxuICAgICAgLy90aGlzLmNoYXJ0LndpZHRoID0gYCR7ZGltLndpZHRofXB4YDtcclxuICAgICAgdGhpcy5jaGFydC5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uVGhlbWVDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuc2xpY2UoKTtcclxuICAgIGlmICh0aGlzLmNoYXJ0KSB7XHJcbiAgICAgIHRoaXMuY2hhcnQudGhlbWUgPSB0aGlzLnRoZW1lO1xyXG4gICAgICB0aGlzLmNoYXJ0LnNlcmllc1swXS5wYWxldHRlcyA9IHRoaXMucGFsZXR0ZXM7XHJcbiAgICAgIHRoaXMuY2hhcnQuc2VyaWVzWzBdLmRhdGFMYWJlbC5mb250LmNvbG9yID0gY2FyZENvbG9yKCk7XHJcbiAgICAgIHRoaXMuY2hhcnQucmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9vbHRpcFJlbmRlcihlOiBJQWNjVG9vbHRpcFJlbmRlckV2ZW50QXJncykge1xyXG4gICAgKGUgYXMgYW55KS50ZXh0ID0gdGhpcy5faW50bC5mb3JtYXROdW1iZXIoZS5wb2ludC55LCB7XHJcbiAgICAgIGN1cnJlbmN5OiB0aGlzLmN1cnJlbmN5Q29kZSxcclxuICAgICAgZm9ybWF0OiB0aGlzLmN1cnJlbmN5Q29kZSA/ICdjJyA6ICduJyxcclxuICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiB0aGlzLl9zZXJ2aWNlLmZyYWN0aW9uRGlnaXRzXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZHJhdygpIHtcclxuICAgIGNvbnN0IHNlcmllczogQWNjdW11bGF0aW9uU2VyaWVzTW9kZWxbXSA9IFt7XHJcbiAgICAgIGRhdGFTb3VyY2U6IHRoaXMuZGF0YSxcclxuICAgICAgeE5hbWU6ICd4JyxcclxuICAgICAgeU5hbWU6ICd5JyxcclxuICAgICAgc3RhcnRBbmdsZTogdGhpcy5zdGFydEFuZ2xlLFxyXG4gICAgICBlbmRBbmdsZTogdGhpcy5lbmRBbmdsZSxcclxuICAgICAgcmFkaXVzOiAnNzAlJyxcclxuICAgICAgZGF0YUxhYmVsOiB0aGlzLmRhdGFMYWJlbCxcclxuICAgICAgZXhwbG9kZTogdHJ1ZSxcclxuICAgICAgZXhwbG9kZU9mZnNldDogJzEwJScsXHJcbiAgICAgIGV4cGxvZGVJbmRleDogMCxcclxuICAgICAgaW5uZXJSYWRpdXM6IHRoaXMuaW5uZXJSYWRpdXMsXHJcbiAgICAgIGFuaW1hdGlvbjogdGhpcy5hbmltYXRpb24sXHJcbiAgICAgIHBhbGV0dGVzOiB0aGlzLnBhbGV0dGVzXHJcbiAgICB9XTtcclxuICAgIHRoaXMuY2hhcnQgJiYgdGhpcy5jaGFydC5kZXN0cm95KCk7XHJcbiAgICBpZih0aGlzLmRhdGEubGVuZ3RoKSB0aGlzLmNoYXJ0ID0gbmV3IEFjY3VtdWxhdGlvbkNoYXJ0KHtcclxuICAgICAvLyB3aWR0aDogYCR7dGhpcy53aWR0aH1weGAsXHJcbiAgICAgIC8vIGhlaWdodDogYCR7dGhpcy5oZWlnaHR9cHhgLFxyXG4gICAgICBlbmFibGVSdGw6IHRoaXMuZW5hYmxlUnRsLFxyXG4gICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICBsZWdlbmRTZXR0aW5nczogdGhpcy5sZWdlbmQsXHJcbiAgICAgIGVuYWJsZUFuaW1hdGlvbjogdHJ1ZSxcclxuICAgICAgcG9pbnRDbGljazogdGhpcy5wb2ludENsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgIHRvb2x0aXA6IHRoaXMudG9vbHRpcCxcclxuICAgICAgY3VycmVuY3lDb2RlOiB0aGlzLmN1cnJlbmN5Q29kZSxcclxuICAgICAgdG9vbHRpcFJlbmRlcjogdGhpcy50b29sdGlwUmVuZGVyLmJpbmQodGhpcyksXHJcbiAgICAgIHRoZW1lOiB0aGlzLnRoZW1lLFxyXG4gICAgICBzZXJpZXNcclxuICAgIH0sIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG4gIHBvaW50Q2xpY2soZXZ0OiBJUG9pbnRFdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IGF4ZXM6IEF4ZXNNYXAgPSB7fTtcclxuICAgIGNvbnN0IHggPSAoZXZ0LnNlcmllcy5kYXRhU291cmNlW2V2dC5wb2ludEluZGV4XS54IGFzIHN0cmluZykuc3BsaXQoQVhFU19DT0RFX0RJVklERVIpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnhBeGlzLmxlbmd0aDsgaSsrKVxyXG4gICAgICBheGVzW3RoaXMueEF4aXNbaV1dID0geFtpXTtcclxuICAgIHRoaXMuZXhwbG9yZShheGVzKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmNoYXJ0ICYmIHRoaXMuY2hhcnQuZGVzdHJveSgpO1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuIl19
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjdW0tY3ViZS53aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2Rhc2hib2FyZC9jdWJlL2FjY3VtLWN1YmUud2lkZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFDb0MsaUJBQWlCLEVBQ3NCLHFCQUFxQixFQUFFLG1CQUFtQixFQUczSCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBa0IsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQXVCLE1BQU0seUJBQXlCLENBQUM7QUFHakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBR2hELGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBRXJFLFNBQVMsU0FBUztJQUNoQixPQUFPLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUMzRSxDQUFDO0FBV0QsMEJBQTBCO0FBQzFCLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxnQkFBZ0I7SUErQjNELFlBQVksR0FBdUIsRUFDakMsSUFBYyxFQUNkLE9BQXVCLEVBQ3ZCLEVBQXFCLEVBQ3JCLElBQWlCLEVBQ1QsV0FBdUI7UUFDL0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUQzQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQWpDakMsU0FBSSxHQUFZLEVBQUUsQ0FBQztRQUNuQixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNmLGdCQUFXLEdBQUcs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QUM7SUFDckMsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFvQjtRQUM3QixNQUFNLElBQUksR0FBWSxFQUFFLENBQUM7UUFDekIsTUFBTSxDQUFDLEdBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQVksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2RixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7O29IQXhIVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qiw2SkFSeEIsRUFBRTsyRkFRRCx1QkFBdUI7a0JBVm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osNENBQTRDO29CQUM1QyxJQUFJLEVBQUU7d0JBQ0osTUFBTSxFQUFFLElBQUk7d0JBQ1osR0FBRyxFQUFFLEtBQUs7cUJBQ1g7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIExlZ2VuZFNlcmllc01vZGVsLCBUb29sdGlwU2V0dGluZ3NNb2RlbCwgQWNjdW11bGF0aW9uQ2hhcnQsXHJcbiAgQWNjdW11bGF0aW9uRGF0YUxhYmVsU2V0dGluZ3NNb2RlbCwgQW5pbWF0aW9uTW9kZWwsIElBY2NUb29sdGlwUmVuZGVyRXZlbnRBcmdzLCBBY2N1bXVsYXRpb25EYXRhTGFiZWwsIEFjY3VtdWxhdGlvblRvb2x0aXAsXHJcbiAgQWNjdW11bGF0aW9uU2VyaWVzTW9kZWwsXHJcbiAgSVBvaW50RXZlbnRBcmdzXHJcbn0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItY2hhcnRzJztcclxuaW1wb3J0IHsgQ3ViZUFuYWx5c2lzQmFzZSwgUG9pbnQsIE9wdGlvbnMgfSBmcm9tICcuL2N1YmUtYW5hbHlzaXMuYmFzZSc7XHJcbmltcG9ydCB7IERhdGFzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVhFU19DT0RFX0RJVklERVIsIEN1YmVTZXJ2aWNlLCBTZXJpZXMgfSBmcm9tICcuLi8uLi9jdWJlL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IFdpZGdldFJlZiB9IGZyb20gXCIuLi93aWRnZXQtcmVmXCI7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIERpbWVudGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IEZPTlRfRkFNSUxZIH0gZnJvbSAnLi4vLi4vY29yZS9jb2xvcnMnO1xyXG5pbXBvcnQgeyBDdWJlSW5mbyB9IGZyb20gJy4uLy4uL2N1YmUvY3ViZS1pbmZvLnNlcnZpY2UnO1xyXG5cclxuQWNjdW11bGF0aW9uQ2hhcnQuSW5qZWN0KEFjY3VtdWxhdGlvbkRhdGFMYWJlbCwgQWNjdW11bGF0aW9uVG9vbHRpcCk7XHJcblxyXG5mdW5jdGlvbiBjYXJkQ29sb3IoKTogc3RyaW5nIHtcclxuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLm1hdC1jYXJkLXRpdGxlXCIpKS5jb2xvcjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtYWNjdW0tY3ViZS1hbmFseXNpcycsXHJcbiAgdGVtcGxhdGU6ICcnLFxyXG4gIC8vICB0ZW1wbGF0ZVVybDogJy4vYWNjdW0tY3ViZS53aWRnZXQuaHRtbCcsXHJcbiAgaG9zdDoge1xyXG4gICAgJ1tpZF0nOiAnaWQnLFxyXG4gICAgZGlyOiAnbHRyJ1xyXG4gIH1cclxufSlcclxuLyoqIHN0YXRpc3RpY3MgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIEN1YmVBY2N1bUFuYWx5c2lzV2lkZ2V0IGV4dGVuZHMgQ3ViZUFuYWx5c2lzQmFzZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgLy9AVmlld0NoaWxkKEFjY3VtdWxhdGlvbkNoYXJ0Q29tcG9uZW50KVxyXG4gIGNoYXJ0OiBBY2N1bXVsYXRpb25DaGFydDtcclxuICBkYXRhOiBQb2ludFtdID0gW107XHJcbiAgc3RhcnRBbmdsZSA9IDA7XHJcbiAgZW5kQW5nbGUgPSAzNjA7XHJcbiAgaW5uZXJSYWRpdXMgPSAnMCc7XHJcbiAgcmVhZG9ubHkgZGF0YUxhYmVsOiBBY2N1bXVsYXRpb25EYXRhTGFiZWxTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgIHBvc2l0aW9uOiAnT3V0c2lkZScsXHJcbiAgICBjb25uZWN0b3JTdHlsZTogeyBsZW5ndGg6ICcxMCUnIH0sXHJcbiAgICBuYW1lOiAnbmFtZScsXHJcbiAgICBmb250OiB7XHJcbiAgICAgIHNpemU6ICcxNHB4JyxcclxuICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFksXHJcbiAgICAgIGNvbG9yOiBjYXJkQ29sb3IoKVxyXG4gICAgfVxyXG4gIH07XHJcbiAgcmVhZG9ubHkgbGVnZW5kOiBMZWdlbmRTZXJpZXNNb2RlbCA9IHtcclxuICAgIGlzSW52ZXJzZWQ6IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSxcclxuICAgIHZpc2libGU6IGZhbHNlXHJcbiAgfTtcclxuICByZWFkb25seSB0b29sdGlwOiBUb29sdGlwU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIGVuYWJsZTogdHJ1ZSxcclxuICAgIHRleHRTdHlsZToge1xyXG4gICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgfVxyXG4gIH07XHJcbiAgcmVhZG9ubHkgYW5pbWF0aW9uOiBBbmltYXRpb25Nb2RlbCA9IHsgZW5hYmxlOiB0cnVlLCBkdXJhdGlvbjogMTAwMCB9O1xyXG4gIHJlYWRvbmx5IGVuYWJsZVJ0bCA9IHRoaXMuX3Nlc3Npb24uaW52ZXJzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocmVmOiBXaWRnZXRSZWY8T3B0aW9ucz4sXHJcbiAgICBpbmZvOiBDdWJlSW5mbyxcclxuICAgIHNlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgZHM6IERhdGFzb3VyY2VTZXJ2aWNlLFxyXG4gICAgY3ViZTogQ3ViZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICBzdXBlcihyZWYsIGluZm8sc2Vzc2lvbiwgZHMsIGN1YmUpO1xyXG4gICAgc3dpdGNoICh0aGlzLl9vcHRpb25zLmNoYXJ0VHlwZSkge1xyXG4gICAgICBjYXNlICdEb3VnaG51dCc6XHJcbiAgICAgICAgdGhpcy5pbm5lclJhZGl1cyA9ICc0MCUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdIYWxmRG91Z2hudXQnOlxyXG4gICAgICAgIHRoaXMuc3RhcnRBbmdsZSA9IDI3MDtcclxuICAgICAgICB0aGlzLmVuZEFuZ2xlID0gOTA7XHJcbiAgICAgICAgdGhpcy5pbm5lclJhZGl1cyA9ICc0MCUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgfVxyXG4gIH1cclxuICBvbkxvYWQoZGF0YTogU2VyaWVzW10pIHtcclxuICAgIHRoaXMuZGF0YSA9IGRhdGEubGVuZ3RoID8gZGF0YVswXS5wb2ludHMgOiBbXTtcclxuICAgIHRoaXMuX2RyYXcoKTtcclxuICB9XHJcbiAgb25SZXNpemUoZGltOiBEaW1lbnRpb25zKSB7XHJcbiAgICBpZiAodGhpcy5jaGFydCkge1xyXG4gICAgIC8vIHRoaXMuY2hhcnQuaGVpZ2h0ID0gYCR7ZGltLmhlaWdodH1weGA7XHJcbiAgICAgIC8vdGhpcy5jaGFydC53aWR0aCA9IGAke2RpbS53aWR0aH1weGA7XHJcbiAgICAgIHRoaXMuY2hhcnQucmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvblRoZW1lQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLnNsaWNlKCk7XHJcbiAgICBpZiAodGhpcy5jaGFydCkge1xyXG4gICAgICB0aGlzLmNoYXJ0LnRoZW1lID0gdGhpcy50aGVtZTtcclxuICAgICAgdGhpcy5jaGFydC5zZXJpZXNbMF0ucGFsZXR0ZXMgPSB0aGlzLnBhbGV0dGVzO1xyXG4gICAgICB0aGlzLmNoYXJ0LnNlcmllc1swXS5kYXRhTGFiZWwuZm9udC5jb2xvciA9IGNhcmRDb2xvcigpO1xyXG4gICAgICB0aGlzLmNoYXJ0LnJlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvb2x0aXBSZW5kZXIoZTogSUFjY1Rvb2x0aXBSZW5kZXJFdmVudEFyZ3MpIHtcclxuICAgIChlIGFzIGFueSkudGV4dCA9IHRoaXMuX2ludGwuZm9ybWF0TnVtYmVyKGUucG9pbnQueSwge1xyXG4gICAgICBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeUNvZGUsXHJcbiAgICAgIGZvcm1hdDogdGhpcy5jdXJyZW5jeUNvZGUgPyAnYycgOiAnbicsXHJcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogdGhpcy5fc2VydmljZS5mcmFjdGlvbkRpZ2l0c1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RyYXcoKSB7XHJcbiAgICBjb25zdCBzZXJpZXM6IEFjY3VtdWxhdGlvblNlcmllc01vZGVsW10gPSBbe1xyXG4gICAgICBkYXRhU291cmNlOiB0aGlzLmRhdGEsXHJcbiAgICAgIHhOYW1lOiAneCcsXHJcbiAgICAgIHlOYW1lOiAneScsXHJcbiAgICAgIHN0YXJ0QW5nbGU6IHRoaXMuc3RhcnRBbmdsZSxcclxuICAgICAgZW5kQW5nbGU6IHRoaXMuZW5kQW5nbGUsXHJcbiAgICAgIHJhZGl1czogJzcwJScsXHJcbiAgICAgIGRhdGFMYWJlbDogdGhpcy5kYXRhTGFiZWwsXHJcbiAgICAgIGV4cGxvZGU6IHRydWUsXHJcbiAgICAgIGV4cGxvZGVPZmZzZXQ6ICcxMCUnLFxyXG4gICAgICBleHBsb2RlSW5kZXg6IDAsXHJcbiAgICAgIGlubmVyUmFkaXVzOiB0aGlzLmlubmVyUmFkaXVzLFxyXG4gICAgICBhbmltYXRpb246IHRoaXMuYW5pbWF0aW9uLFxyXG4gICAgICBwYWxldHRlczogdGhpcy5wYWxldHRlc1xyXG4gICAgfV07XHJcbiAgICB0aGlzLmNoYXJ0ICYmIHRoaXMuY2hhcnQuZGVzdHJveSgpO1xyXG4gICAgaWYodGhpcy5kYXRhLmxlbmd0aCkgdGhpcy5jaGFydCA9IG5ldyBBY2N1bXVsYXRpb25DaGFydCh7XHJcbiAgICAgLy8gd2lkdGg6IGAke3RoaXMud2lkdGh9cHhgLFxyXG4gICAgICAvLyBoZWlnaHQ6IGAke3RoaXMuaGVpZ2h0fXB4YCxcclxuICAgICAgZW5hYmxlUnRsOiB0aGlzLmVuYWJsZVJ0bCxcclxuICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcclxuICAgICAgbGVnZW5kU2V0dGluZ3M6IHRoaXMubGVnZW5kLFxyXG4gICAgICBlbmFibGVBbmltYXRpb246IHRydWUsXHJcbiAgICAgIHBvaW50Q2xpY2s6IHRoaXMucG9pbnRDbGljay5iaW5kKHRoaXMpLFxyXG4gICAgICB0b29sdGlwOiB0aGlzLnRvb2x0aXAsXHJcbiAgICAgIGN1cnJlbmN5Q29kZTogdGhpcy5jdXJyZW5jeUNvZGUsXHJcbiAgICAgIHRvb2x0aXBSZW5kZXI6IHRoaXMudG9vbHRpcFJlbmRlci5iaW5kKHRoaXMpLFxyXG4gICAgICB0aGVtZTogdGhpcy50aGVtZSxcclxuICAgICAgc2VyaWVzXHJcbiAgICB9LCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuICBwb2ludENsaWNrKGV2dDogSVBvaW50RXZlbnRBcmdzKSB7XHJcbiAgICBjb25zdCBheGVzOiBBeGVzTWFwID0ge307XHJcbiAgICBjb25zdCB4ID0gKGV2dC5zZXJpZXMuZGF0YVNvdXJjZVtldnQucG9pbnRJbmRleF0ueCBhcyBzdHJpbmcpLnNwbGl0KEFYRVNfQ09ERV9ESVZJREVSKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy54QXhpcy5sZW5ndGg7IGkrKylcclxuICAgICAgYXhlc1t0aGlzLnhBeGlzW2ldXSA9IHhbaV07XHJcbiAgICB0aGlzLmV4cGxvcmUoYXhlcyk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5jaGFydCAmJiB0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==