angular-slickgrid 8.13.0 → 8.13.1

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.
@@ -1,4 +1,4 @@
1
- import { addToArrayWhenNotExists, castObservableToPromise, SlickRowSelectionModel, unsubscribeAll, } from '@slickgrid-universal/common';
1
+ import { addToArrayWhenNotExists, castObservableToPromise, SlickEventData, SlickRowSelectionModel, unsubscribeAll, } from '@slickgrid-universal/common';
2
2
  import { SlickRowDetailView as UniversalSlickRowDetailView } from '@slickgrid-universal/row-detail-view-plugin';
3
3
  import { Observable } from 'rxjs';
4
4
  const ROW_DETAIL_CONTAINER_PREFIX = 'container_';
@@ -11,6 +11,7 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
11
11
  rxjs;
12
12
  rowDetailContainer;
13
13
  _preloadComponent;
14
+ _preloadCompRef;
14
15
  _views = [];
15
16
  _viewComponent;
16
17
  _subscriptions = [];
@@ -53,8 +54,12 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
53
54
  }
54
55
  /** Dispose of all the opened Row Detail Panels Angular View Components */
55
56
  disposeAllViewComponents() {
56
- this._views.forEach((compRef) => this.disposeViewComponent(compRef));
57
- this._views = [];
57
+ do {
58
+ const view = this._views.pop();
59
+ if (view) {
60
+ this.disposeView(view);
61
+ }
62
+ } while (this._views.length > 0);
58
63
  }
59
64
  /** Get the instance of the SlickGrid addon (control or plugin). */
60
65
  getAddonInstance() {
@@ -109,6 +114,8 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
109
114
  }
110
115
  if (this.onAsyncEndUpdate) {
111
116
  this.eventHandler.subscribe(this.onAsyncEndUpdate, (e, args) => {
117
+ // destroy preload if exists
118
+ this._preloadCompRef?.destroy();
112
119
  // triggers after backend called "onAsyncResponse.notify()"
113
120
  this.renderViewModel(args?.item);
114
121
  if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onAsyncEndUpdate === 'function') {
@@ -121,7 +128,6 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
121
128
  // display preload template & re-render all the other Detail Views after toggling
122
129
  // the preload View will eventually go away once the data gets loaded after the "onAsyncEndUpdate" event
123
130
  this.renderPreloadView();
124
- this.renderAllViewComponents();
125
131
  if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onAfterRowDetailToggle === 'function') {
126
132
  this.rowDetailViewOptions.onAfterRowDetailToggle(e, args);
127
133
  }
@@ -146,6 +152,14 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
146
152
  }
147
153
  });
148
154
  }
155
+ if (this.onBeforeRowOutOfViewportRange) {
156
+ this._eventHandler.subscribe(this.onBeforeRowOutOfViewportRange, (event, args) => {
157
+ if (typeof this.rowDetailViewOptions?.onBeforeRowOutOfViewportRange === 'function') {
158
+ this.rowDetailViewOptions.onBeforeRowOutOfViewportRange(event, args);
159
+ }
160
+ this.disposeViewByItem(args.item);
161
+ });
162
+ }
149
163
  if (this.onRowOutOfViewportRange) {
150
164
  this.eventHandler.subscribe(this.onRowOutOfViewportRange, (e, args) => {
151
165
  if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onRowOutOfViewportRange === 'function') {
@@ -171,15 +185,10 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
171
185
  }
172
186
  /** Redraw (re-render) all the expanded row detail View Components */
173
187
  redrawAllViewComponents() {
174
- this._views.forEach((compRef) => {
175
- this.redrawViewComponent(compRef);
176
- });
177
- }
178
- /** Render all the expanded row detail View Components */
179
- renderAllViewComponents() {
188
+ this.resetRenderedRows();
180
189
  this._views.forEach((view) => {
181
- if (view?.dataContext) {
182
- this.renderViewModel(view.dataContext);
190
+ if (!view.rendered) {
191
+ this.redrawViewComponent(view);
183
192
  }
184
193
  });
185
194
  }
@@ -194,24 +203,29 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
194
203
  renderPreloadView() {
195
204
  const containerElements = this.gridContainerElement.getElementsByClassName(`${PRELOAD_CONTAINER_PREFIX}`);
196
205
  if (this._preloadComponent && containerElements?.length >= 0) {
197
- this.angularUtilService.createAngularComponentAppendToDom(this._preloadComponent, containerElements[containerElements.length - 1]);
206
+ const preloadComp = this.angularUtilService.createAngularComponentAppendToDom(this._preloadComponent, containerElements[containerElements.length - 1], {}, { sanitizer: this._grid.sanitizeHtmlString });
207
+ this._preloadCompRef = preloadComp.componentRef;
198
208
  }
199
209
  }
200
210
  /** Render (or re-render) the View Component (Row Detail) */
201
211
  renderViewModel(item) {
202
212
  const containerElements = this.gridContainerElement.getElementsByClassName(`${ROW_DETAIL_CONTAINER_PREFIX}${item[this.datasetIdPropName]}`);
203
213
  if (this._viewComponent && containerElements?.length > 0) {
214
+ // render row detail
204
215
  const componentOutput = this.angularUtilService.createAngularComponentAppendToDom(this._viewComponent, containerElements[containerElements.length - 1], {
205
216
  model: item,
206
217
  addon: this,
207
218
  grid: this._grid,
208
219
  dataView: this.dataView,
209
220
  parent: this.rowDetailViewOptions?.parent,
221
+ }, {
222
+ sanitizer: this._grid.sanitizeHtmlString,
210
223
  });
211
224
  if (componentOutput?.componentRef) {
212
225
  const viewObj = this._views.find((obj) => obj.id === item[this.datasetIdPropName]);
213
226
  if (viewObj) {
214
227
  viewObj.componentRef = componentOutput.componentRef;
228
+ viewObj.rendered = true;
215
229
  }
216
230
  return viewObj;
217
231
  }
@@ -221,12 +235,23 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
221
235
  // --
222
236
  // protected functions
223
237
  // ------------------
224
- disposeViewComponent(expandedView) {
238
+ disposeViewByItem(item, removeFromArray = false) {
239
+ const foundViewIndex = this._views.findIndex((view) => view.id === item[this.datasetIdPropName]);
240
+ if (foundViewIndex >= 0 && foundViewIndex in this._views) {
241
+ const expandedView = this._views[foundViewIndex];
242
+ this.disposeView(expandedView);
243
+ if (removeFromArray) {
244
+ this._views.splice(foundViewIndex, 1);
245
+ }
246
+ }
247
+ }
248
+ disposeView(expandedView) {
225
249
  const compRef = expandedView?.componentRef;
226
250
  if (compRef) {
227
251
  this.appRef.detachView(compRef.hostView);
228
252
  if (compRef?.destroy) {
229
253
  compRef.destroy();
254
+ expandedView.rendered = false;
230
255
  }
231
256
  return expandedView;
232
257
  }
@@ -238,7 +263,7 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
238
263
  */
239
264
  notifyTemplate(item) {
240
265
  if (this.onAsyncResponse) {
241
- this.onAsyncResponse.notify({ item, itemDetail: item }, undefined, this);
266
+ this.onAsyncResponse.notify({ item, itemDetail: item }, new SlickEventData(), this);
242
267
  }
243
268
  }
244
269
  /**
@@ -278,28 +303,22 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
278
303
  const viewInfo = {
279
304
  id: args.item[this.datasetIdPropName],
280
305
  dataContext: args.item,
306
+ rendered: false,
281
307
  };
282
308
  const idPropName = this.gridOptions.datasetIdPropertyName || 'id';
283
309
  addToArrayWhenNotExists(this._views, viewInfo, idPropName);
284
310
  }
285
311
  else {
286
312
  // collapsing, so dispose of the View/Component
287
- const foundViewIndex = this._views.findIndex((view) => view.id === args.item[this.datasetIdPropName]);
288
- if (foundViewIndex >= 0 && foundViewIndex in this._views) {
289
- const compRef = this._views[foundViewIndex].componentRef;
290
- if (compRef) {
291
- this.appRef.detachView(compRef.hostView);
292
- compRef.destroy();
293
- }
294
- this._views.splice(foundViewIndex, 1);
295
- }
313
+ this.disposeViewByItem(args.item, true);
296
314
  }
297
315
  }
298
316
  /** When Row comes back to Viewport Range, we need to redraw the View */
299
317
  handleOnRowBackToViewportRange(_e, args) {
300
- if (args?.item) {
301
- this.redrawAllViewComponents();
318
+ const viewModel = Array.from(this._views).find((x) => x.id === args.rowId);
319
+ if (viewModel && !viewModel.rendered) {
320
+ this.redrawViewComponent(viewModel);
302
321
  }
303
322
  }
304
323
  }
305
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2tSb3dEZXRhaWxWaWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2FuZ3VsYXItc2xpY2tncmlkL2V4dGVuc2lvbnMvc2xpY2tSb3dEZXRhaWxWaWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixjQUFjLEdBQ2YsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEVBQUUsa0JBQWtCLElBQUksMkJBQTJCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoSCxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUtoRCxNQUFNLDJCQUEyQixHQUFHLFlBQVksQ0FBQztBQUNqRCxNQUFNLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDO0FBUXJELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSwyQkFBMkI7SUFTNUM7SUFDQTtJQUNBO0lBQ0E7SUFDVDtJQVpaLGtCQUFrQixDQUFvQjtJQUM1QixpQkFBaUIsQ0FBMkI7SUFDNUMsTUFBTSxHQUFrQixFQUFFLENBQUM7SUFDM0IsY0FBYyxDQUFnQjtJQUM5QixjQUFjLEdBQXdCLEVBQUUsQ0FBQztJQUN6QyxjQUFjLENBQWdFO0lBRXhGLFlBQ3FCLGtCQUFzQyxFQUN0QyxNQUFzQixFQUN0QixrQkFBc0MsRUFDdEMsb0JBQW9DLEVBQzdDLElBQWlCO1FBRTNCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBTlAsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBZ0I7UUFDN0MsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUc3QixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FB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Q0FBQztZQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDO1lBQ2xFLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdELENBQUM7YUFBTSxDQUFDO1lBQ04sK0NBQStDO1lBQy9DLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDbkgsSUFBSSxjQUFjLElBQUksQ0FBQyxJQUFJLGNBQWMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3pELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsWUFBWSxDQUFDO2dCQUN6RCxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDekMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwQixDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCx3RUFBd0U7SUFDOUQsOEJBQThCLENBQUMsRUFBZ0QsRUFBRSxJQUFrQztRQUMzSCxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRSZWYsIFR5cGUsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtcbiAgRXZlbnRTdWJzY3JpcHRpb24sXG4gIE9uQmVmb3JlUm93RGV0YWlsVG9nZ2xlQXJncyxcbiAgT25Sb3dCYWNrVG9WaWV3cG9ydFJhbmdlQXJncyxcbiAgUnhKc0ZhY2FkZSxcbiAgU2xpY2tFdmVudERhdGEsXG4gIFNsaWNrRXZlbnRIYW5kbGVyLFxuICBTbGlja0dyaWQsXG59IGZyb20gJ0BzbGlja2dyaWQtdW5pdmVyc2FsL2NvbW1vbic7XG5pbXBvcnQge1xuICBhZGRUb0FycmF5V2hlbk5vdEV4aXN0cyxcbiAgY2FzdE9ic2VydmFibGVUb1Byb21pc2UsXG4gIFNsaWNrUm93U2VsZWN0aW9uTW9kZWwsXG4gIHVuc3Vic2NyaWJlQWxsLFxufSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9jb21tb24nO1xuaW1wb3J0IHR5cGUgeyBFdmVudFB1YlN1YlNlcnZpY2UgfSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9ldmVudC1wdWItc3ViJztcbmltcG9ydCB7IFNsaWNrUm93RGV0YWlsVmlldyBhcyBVbml2ZXJzYWxTbGlja1Jvd0RldGFpbFZpZXcgfSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9yb3ctZGV0YWlsLXZpZXctcGx1Z2luJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHR5cGUgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgdHlwZSB7IEdyaWRPcHRpb24sIFJvd0RldGFpbFZpZXcgfSBmcm9tICcuLi9tb2RlbHMvaW5kZXgnO1xuaW1wb3J0IHR5cGUgeyBBbmd1bGFyVXRpbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hbmd1bGFyVXRpbC5zZXJ2aWNlJztcblxuY29uc3QgUk9XX0RFVEFJTF9DT05UQUlORVJfUFJFRklYID0gJ2NvbnRhaW5lcl8nO1xuY29uc3QgUFJFTE9BRF9DT05UQUlORVJfUFJFRklYID0gJ2NvbnRhaW5lcl9sb2FkaW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVkVmlldyB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XG4gIGRhdGFDb250ZXh0OiBhbnk7XG4gIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+O1xufVxuXG5leHBvcnQgY2xhc3MgU2xpY2tSb3dEZXRhaWxWaWV3IGV4dGVuZHMgVW5pdmVyc2FsU2xpY2tSb3dEZXRhaWxWaWV3IHtcbiAgcm93RGV0YWlsQ29udGFpbmVyITogVmlld0NvbnRhaW5lclJlZjtcbiAgcHJvdGVjdGVkIF9wcmVsb2FkQ29tcG9uZW50OiBUeXBlPG9iamVjdD4gfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfdmlld3M6IENyZWF0ZWRWaWV3W10gPSBbXTtcbiAgcHJvdGVjdGVkIF92aWV3Q29tcG9uZW50ITogVHlwZTxvYmplY3Q+O1xuICBwcm90ZWN0ZWQgX3N1YnNjcmlwdGlvbnM6IEV2ZW50U3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJvdGVjdGVkIF91c2VyUHJvY2Vzc0ZuITogKGl0ZW06IGFueSkgPT4gUHJvbWlzZTxhbnk+IHwgT2JzZXJ2YWJsZTxhbnk+IHwgU3ViamVjdDxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhbmd1bGFyVXRpbFNlcnZpY2U6IEFuZ3VsYXJVdGlsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXZlbnRQdWJTdWJTZXJ2aWNlOiBFdmVudFB1YlN1YlNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdyaWRDb250YWluZXJFbGVtZW50OiBIVE1MRGl2RWxlbWVudCxcbiAgICBwcm90ZWN0ZWQgcnhqcz86IFJ4SnNGYWNhZGVcbiAgKSB7XG4gICAgc3VwZXIoZXZlbnRQdWJTdWJTZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBhZGRvbk9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9ucygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBkYXRhc2V0SWRQcm9wTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zLmRhdGFzZXRJZFByb3BlcnR5TmFtZSB8fCAnaWQnO1xuICB9XG5cbiAgZ2V0IGV2ZW50SGFuZGxlcigpOiBTbGlja0V2ZW50SGFuZGxlciB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50SGFuZGxlcjtcbiAgfVxuICBzZXQgZXZlbnRIYW5kbGVyKGV2ZW50SGFuZGxlcjogU2xpY2tFdmVudEhhbmRsZXIpIHtcbiAgICB0aGlzLl9ldmVudEhhbmRsZXIgPSBldmVudEhhbmRsZXI7XG4gIH1cblxuICAvKiogR2V0dGVyIGZvciB0aGUgR3JpZCBPcHRpb25zIHB1bGxlZCB0aHJvdWdoIHRoZSBHcmlkIE9iamVjdCAqL1xuICBnZXQgZ3JpZE9wdGlvbnMoKTogR3JpZE9wdGlvbiB7XG4gICAgcmV0dXJuICh0aGlzLl9ncmlkPy5nZXRPcHRpb25zKCkgfHwge30pIGFzIEdyaWRPcHRpb247XG4gIH1cblxuICBnZXQgcm93RGV0YWlsVmlld09wdGlvbnMoKTogUm93RGV0YWlsVmlldyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldztcbiAgfVxuXG4gIGFkZFJ4SnNSZXNvdXJjZShyeGpzOiBSeEpzRmFjYWRlKSB7XG4gICAgdGhpcy5yeGpzID0gcnhqcztcbiAgfVxuXG4gIC8qKiBEaXNwb3NlIG9mIHRoZSBSb3dEZXRhaWxWaWV3IEV4dGVuc2lvbiAqL1xuICBkaXNwb3NlKCkge1xuICAgIHRoaXMuZGlzcG9zZUFsbFZpZXdDb21wb25lbnRzKCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyA9IHVuc3Vic2NyaWJlQWxsKHRoaXMuX3N1YnNjcmlwdGlvbnMpOyAvLyBhbHNvIHVuc3Vic2NyaWJlIGFsbCBSeEpTIHN1YnNjcmlwdGlvbnNcbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH1cblxuICAvKiogRGlzcG9zZSBvZiBhbGwgdGhlIG9wZW5lZCBSb3cgRGV0YWlsIFBhbmVscyBBbmd1bGFyIFZpZXcgQ29tcG9uZW50cyAqL1xuICBkaXNwb3NlQWxsVmlld0NvbXBvbmVudHMoKSB7XG4gICAgdGhpcy5fdmlld3MuZm9yRWFjaCgoY29tcFJlZikgPT4gdGhpcy5kaXNwb3NlVmlld0NvbXBvbmVudChjb21wUmVmKSk7XG4gICAgdGhpcy5fdmlld3MgPSBbXTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGluc3RhbmNlIG9mIHRoZSBTbGlja0dyaWQgYWRkb24gKGNvbnRyb2wgb3IgcGx1Z2luKS4gKi9cbiAgZ2V0QWRkb25JbnN0YW5jZSgpOiBTbGlja1Jvd0RldGFpbFZpZXcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGluaXQoZ3JpZDogU2xpY2tHcmlkKSB7XG4gICAgdGhpcy5fZ3JpZCA9IGdyaWQ7XG4gICAgc3VwZXIuaW5pdCh0aGlzLl9ncmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyKGdyaWQ/LmdldFNlbGVjdGlvbk1vZGVsKCkgYXMgU2xpY2tSb3dTZWxlY3Rpb25Nb2RlbCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBwbHVnaW4gYmVmb3JlIHRoZSBHcmlkIGNyZWF0aW9uLCBlbHNlIGl0IHdpbGwgYmVoYXZlIG9kZGx5LlxuICAgKiBNb3N0bHkgYmVjYXVzZSB0aGUgY29sdW1uIGRlZmluaXRpb25zIG1pZ2h0IGNoYW5nZSBhZnRlciB0aGUgZ3JpZCBjcmVhdGlvblxuICAgKi9cbiAgcmVnaXN0ZXIocm93U2VsZWN0aW9uUGx1Z2luPzogU2xpY2tSb3dTZWxlY3Rpb25Nb2RlbCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5ncmlkT3B0aW9ucy5yb3dEZXRhaWxWaWV3Py5wcm9jZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyB3ZSBuZWVkIHRvIGtlZXAgdGhlIHVzZXIgXCJwcm9jZXNzXCIgbWV0aG9kIGFuZCByZXBsYWNlIGl0IHdpdGggb3VyIG93biBleGVjdXRpb24gbWV0aG9kXG4gICAgICAvLyB3ZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiB3ZSBnZXQgdGhlIGl0ZW0gZGV0YWlsLCB3ZSBuZWVkIHRvIGNhbGwgXCJvbkFzeW5jUmVzcG9uc2Uubm90aWZ5XCIgZm9yIHRoZSBwbHVnaW4gdG8gd29ya1xuICAgICAgdGhpcy5fdXNlclByb2Nlc3NGbiA9IHRoaXMuZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldy5wcm9jZXNzIGFzIChpdGVtOiBhbnkpID0+IFByb21pc2U8YW55PjsgLy8ga2VlcCB1c2VyJ3MgcHJvY2VzcyBtZXRob2RcbiAgICAgIHRoaXMuYWRkb25PcHRpb25zLnByb2Nlc3MgPSAoaXRlbSkgPT4gdGhpcy5vblByb2Nlc3NpbmcoaXRlbSk7IC8vIHJlcGxhY2UgcHJvY2VzcyBtZXRob2QgJiBydW4gb3VyIGludGVybmFsIG9uZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdbQW5ndWxhci1TbGlja2dyaWRdIFlvdSBuZWVkIHRvIHByb3ZpZGUgYSBcInByb2Nlc3NcIiBmdW5jdGlvbiBmb3IgdGhlIFJvdyBEZXRhaWwgRXh0ZW5zaW9uIHRvIHdvcmsgcHJvcGVybHknXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9ncmlkICYmIHRoaXMuZ3JpZE9wdGlvbnM/LnJvd0RldGFpbFZpZXcpIHtcbiAgICAgIC8vIGxvYWQgdGhlIFByZWxvYWQgJiBSb3dEZXRhaWwgVGVtcGxhdGVzIChjb3VsZCBiZSBzdHJhaWdodCBIVE1MIG9yIEFuZ3VsYXIgVmlldy9WaWV3TW9kZWwpXG4gICAgICAvLyB3aGVuIHRob3NlIGFyZSBBbmd1bGFyIFZpZXcvVmlld01vZGVsLCB3ZSBuZWVkIHRvIGNyZWF0ZSBWaWV3IENvbXBvbmVudCAmIHByb3ZpZGUgdGhlIGh0bWwgY29udGFpbmVycyB0byB0aGUgUGx1Z2luIChwcmVUZW1wbGF0ZS9wb3N0VGVtcGxhdGUgbWV0aG9kcylcbiAgICAgIGlmICghdGhpcy5ncmlkT3B0aW9ucy5yb3dEZXRhaWxWaWV3LnByZVRlbXBsYXRlKSB7XG4gICAgICAgIHRoaXMuX3ByZWxvYWRDb21wb25lbnQgPSB0aGlzLmdyaWRPcHRpb25zPy5yb3dEZXRhaWxWaWV3Py5wcmVsb2FkQ29tcG9uZW50O1xuICAgICAgICB0aGlzLmFkZG9uT3B0aW9ucy5wcmVUZW1wbGF0ZSA9ICgpID0+XG4gICAgICAgICAgdGhpcy5fZ3JpZC5zYW5pdGl6ZUh0bWxTdHJpbmcoYDxkaXYgY2xhc3M9XCIke1BSRUxPQURfQ09OVEFJTkVSX1BSRUZJWH1cIj48L2Rpdj5gKSBhcyBzdHJpbmc7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldy5wb3N0VGVtcGxhdGUpIHtcbiAgICAgICAgdGhpcy5fdmlld0NvbXBvbmVudCA9IHRoaXMuZ3JpZE9wdGlvbnM/LnJvd0RldGFpbFZpZXc/LnZpZXdDb21wb25lbnQ7XG4gICAgICAgIHRoaXMuYWRkb25PcHRpb25zLnBvc3RUZW1wbGF0ZSA9IChpdGVtRGV0YWlsOiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5fZ3JpZC5zYW5pdGl6ZUh0bWxTdHJpbmcoXG4gICAgICAgICAgICBgPGRpdiBjbGFzcz1cIiR7Uk9XX0RFVEFJTF9DT05UQUlORVJfUFJFRklYfSR7aXRlbURldGFpbFt0aGlzLmRhdGFzZXRJZFByb3BOYW1lXX1cIj48L2Rpdj5gXG4gICAgICAgICAgKSBhcyBzdHJpbmc7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoaXMgYWxzbyByZXF1aXJlcyB0aGUgUm93IFNlbGVjdGlvbiBNb2RlbCB0byBiZSByZWdpc3RlcmVkIGFzIHdlbGxcbiAgICAgIGlmICghcm93U2VsZWN0aW9uUGx1Z2luIHx8ICF0aGlzLl9ncmlkLmdldFNlbGVjdGlvbk1vZGVsKCkpIHtcbiAgICAgICAgcm93U2VsZWN0aW9uUGx1Z2luID0gbmV3IFNsaWNrUm93U2VsZWN0aW9uTW9kZWwodGhpcy5ncmlkT3B0aW9ucy5yb3dTZWxlY3Rpb25PcHRpb25zIHx8IHsgc2VsZWN0QWN0aXZlUm93OiB0cnVlIH0pO1xuICAgICAgICB0aGlzLl9ncmlkLnNldFNlbGVjdGlvbk1vZGVsKHJvd1NlbGVjdGlvblBsdWdpbik7XG4gICAgICB9XG5cbiAgICAgIC8vIGhvb2sgYWxsIGV2ZW50c1xuICAgICAgaWYgKHRoaXMuX2dyaWQgJiYgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucykge1xuICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkV4dGVuc2lvblJlZ2lzdGVyZWQpIHtcbiAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uRXh0ZW5zaW9uUmVnaXN0ZXJlZCh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9uQXN5bmNSZXNwb25zZSkge1xuICAgICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLm9uQXN5bmNSZXNwb25zZSwgKGV2ZW50LCBhcmdzKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucyAmJiB0eXBlb2YgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkFzeW5jUmVzcG9uc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkFzeW5jUmVzcG9uc2UoZXZlbnQsIGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub25Bc3luY0VuZFVwZGF0ZSkge1xuICAgICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLm9uQXN5bmNFbmRVcGRhdGUsIChlLCBhcmdzKSA9PiB7XG4gICAgICAgICAgICAvLyB0cmlnZ2VycyBhZnRlciBiYWNrZW5kIGNhbGxlZCBcIm9uQXN5bmNSZXNwb25zZS5ub3RpZnkoKVwiXG4gICAgICAgICAgICB0aGlzLnJlbmRlclZpZXdNb2RlbChhcmdzPy5pdGVtKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMgJiYgdHlwZW9mIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25Bc3luY0VuZFVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQXN5bmNFbmRVcGRhdGUoZSwgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vbkFmdGVyUm93RGV0YWlsVG9nZ2xlKSB7XG4gICAgICAgICAgdGhpcy5ldmVudEhhbmRsZXIuc3Vic2NyaWJlKFxuICAgICAgICAgICAgdGhpcy5vbkFmdGVyUm93RGV0YWlsVG9nZ2xlLFxuICAgICAgICAgICAgKGU6IGFueSwgYXJnczogeyBncmlkOiBTbGlja0dyaWQ7IGl0ZW06IGFueTsgZXhwYW5kZWRSb3dzOiBBcnJheTxudW1iZXIgfCBzdHJpbmc+IH0pID0+IHtcbiAgICAgICAgICAgICAgLy8gZGlzcGxheSBwcmVsb2FkIHRlbXBsYXRlICYgcmUtcmVuZGVyIGFsbCB0aGUgb3RoZXIgRGV0YWlsIFZpZXdzIGFmdGVyIHRvZ2dsaW5nXG4gICAgICAgICAgICAgIC8vIHRoZSBwcmVsb2FkIFZpZXcgd2lsbCBldmVudHVhbGx5IGdvIGF3YXkgb25jZSB0aGUgZGF0YSBnZXRzIGxvYWRlZCBhZnRlciB0aGUgXCJvbkFzeW5jRW5kVXBkYXRlXCIgZXZlbnRcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJQcmVsb2FkVmlldygpO1xuICAgICAgICAgICAgICB0aGlzLnJlbmRlckFsbFZpZXdDb21wb25lbnRzKCk7XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMgJiYgdHlwZW9mIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25BZnRlclJvd0RldGFpbFRvZ2dsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25BZnRlclJvd0RldGFpbFRvZ2dsZShlLCBhcmdzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vbkJlZm9yZVJvd0RldGFpbFRvZ2dsZSkge1xuICAgICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLm9uQmVmb3JlUm93RGV0YWlsVG9nZ2xlLCAoZSwgYXJncykgPT4ge1xuICAgICAgICAgICAgLy8gYmVmb3JlIHRvZ2dsaW5nIHJvdyBkZXRhaWwsIHdlIG5lZWQgdG8gY3JlYXRlIFZpZXcgQ29tcG9uZW50IGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlT25CZWZvcmVSb3dEZXRhaWxUb2dnbGUoZSwgYXJncyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQmVmb3JlUm93RGV0YWlsVG9nZ2xlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQmVmb3JlUm93RGV0YWlsVG9nZ2xlKGUsIGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2UpIHtcbiAgICAgICAgICB0aGlzLmV2ZW50SGFuZGxlci5zdWJzY3JpYmUodGhpcy5vblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2UsIChlLCBhcmdzKSA9PiB7XG4gICAgICAgICAgICAvLyB3aGVuIHJvdyBpcyBiYWNrIHRvIHZpZXdwb3J0IHJhbmdlLCB3ZSB3aWxsIHJlLXJlbmRlciB0aGUgVmlldyBDb21wb25lbnQocylcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlT25Sb3dCYWNrVG9WaWV3cG9ydFJhbmdlKGUsIGFyZ3MpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucyAmJiB0eXBlb2YgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2UoZSwgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vblJvd091dE9mVmlld3BvcnRSYW5nZSkge1xuICAgICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLm9uUm93T3V0T2ZWaWV3cG9ydFJhbmdlLCAoZSwgYXJncykgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMgJiYgdHlwZW9mIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25Sb3dPdXRPZlZpZXdwb3J0UmFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vblJvd091dE9mVmlld3BvcnRSYW5nZShlLCBhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIC0tXG4gICAgICAgIC8vIGhvb2sgc29tZSBldmVudHMgbmVlZGVkIGJ5IHRoZSBQbHVnaW4gaXRzZWxmXG5cbiAgICAgICAgLy8gd2UgbmVlZCB0byByZWRyYXcgdGhlIG9wZW4gZGV0YWlsIHZpZXdzIGlmIHdlIGNoYW5nZSBjb2x1bW4gcG9zaXRpb24gKGNvbHVtbiByZW9yZGVyKVxuICAgICAgICB0aGlzLmV2ZW50SGFuZGxlci5zdWJzY3JpYmUodGhpcy5fZ3JpZC5vbkNvbHVtbnNSZW9yZGVyZWQsIHRoaXMucmVkcmF3QWxsVmlld0NvbXBvbmVudHMuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgLy8gb24gcm93IHNlbGVjdGlvbiBjaGFuZ2VkLCB3ZSBhbHNvIG5lZWQgdG8gcmVkcmF3XG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLmVuYWJsZVJvd1NlbGVjdGlvbiB8fCB0aGlzLmdyaWRPcHRpb25zLmVuYWJsZUNoZWNrYm94U2VsZWN0b3IpIHtcbiAgICAgICAgICB0aGlzLmV2ZW50SGFuZGxlci5zdWJzY3JpYmUodGhpcy5fZ3JpZC5vblNlbGVjdGVkUm93c0NoYW5nZWQsIHRoaXMucmVkcmF3QWxsVmlld0NvbXBvbmVudHMuYmluZCh0aGlzKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBvbiBzb3J0LCBhbGwgcm93IGRldGFpbCBhcmUgY29sbGFwc2VkIHNvIHdlIGNhbiBkaXNwb3NlIG9mIGFsbCB0aGUgVmlld3MgYXMgd2VsbFxuICAgICAgICB0aGlzLmV2ZW50SGFuZGxlci5zdWJzY3JpYmUodGhpcy5fZ3JpZC5vblNvcnQsIHRoaXMuZGlzcG9zZUFsbFZpZXdDb21wb25lbnRzLmJpbmQodGhpcykpO1xuXG4gICAgICAgIC8vIHJlZHJhdyBhbGwgVmlld3Mgd2hlbmV2ZXIgY2VydGFpbiBldmVudHMgYXJlIHRyaWdnZXJlZFxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgdGhpcy5ldmVudFB1YlN1YlNlcnZpY2U/LnN1YnNjcmliZShcbiAgICAgICAgICAgIFsnb25GaWx0ZXJDaGFuZ2VkJywgJ29uR3JpZE1lbnVDb2x1bW5zQ2hhbmdlZCcsICdvbkNvbHVtblBpY2tlckNvbHVtbnNDaGFuZ2VkJ10sXG4gICAgICAgICAgICB0aGlzLnJlZHJhd0FsbFZpZXdDb21wb25lbnRzLmJpbmQodGhpcylcbiAgICAgICAgICApLFxuICAgICAgICAgIHRoaXMuZXZlbnRQdWJTdWJTZXJ2aWNlPy5zdWJzY3JpYmUoWydvbkdyaWRNZW51Q2xlYXJBbGxGaWx0ZXJzJywgJ29uR3JpZE1lbnVDbGVhckFsbFNvcnRpbmcnXSwgKCkgPT5cbiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoaXMucmVkcmF3QWxsVmlld0NvbXBvbmVudHMoKSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFJlZHJhdyAocmUtcmVuZGVyKSBhbGwgdGhlIGV4cGFuZGVkIHJvdyBkZXRhaWwgVmlldyBDb21wb25lbnRzICovXG4gIHJlZHJhd0FsbFZpZXdDb21wb25lbnRzKCkge1xuICAgIHRoaXMuX3ZpZXdzLmZvckVhY2goKGNvbXBSZWYpID0+IHtcbiAgICAgIHRoaXMucmVkcmF3Vmlld0NvbXBvbmVudChjb21wUmVmKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBSZW5kZXIgYWxsIHRoZSBleHBhbmRlZCByb3cgZGV0YWlsIFZpZXcgQ29tcG9uZW50cyAqL1xuICByZW5kZXJBbGxWaWV3Q29tcG9uZW50cygpIHtcbiAgICB0aGlzLl92aWV3cy5mb3JFYWNoKCh2aWV3KSA9PiB7XG4gICAgICBpZiAodmlldz8uZGF0YUNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJWaWV3TW9kZWwodmlldy5kYXRhQ29udGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogUmVkcmF3IHRoZSBuZWNlc3NhcnkgVmlldyBDb21wb25lbnQgKi9cbiAgcmVkcmF3Vmlld0NvbXBvbmVudChjcmVhdGVkVmlldzogQ3JlYXRlZFZpZXcpIHtcbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50cyA9IHRoaXMuZ3JpZENvbnRhaW5lckVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShgJHtST1dfREVUQUlMX0NPTlRBSU5FUl9QUkVGSVh9JHtjcmVhdGVkVmlldy5pZH1gKTtcbiAgICBpZiAoY29udGFpbmVyRWxlbWVudHM/Lmxlbmd0aCA+PSAwKSB7XG4gICAgICB0aGlzLnJlbmRlclZpZXdNb2RlbChjcmVhdGVkVmlldy5kYXRhQ29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlbmRlciAob3IgcmUtcmVuZGVyKSB0aGUgVmlldyBDb21wb25lbnQgKFJvdyBEZXRhaWwpICovXG4gIHJlbmRlclByZWxvYWRWaWV3KCkge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnRzID0gdGhpcy5ncmlkQ29udGFpbmVyRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxuICAgICAgYCR7UFJFTE9BRF9DT05UQUlORVJfUFJFRklYfWBcbiAgICApIGFzIEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+O1xuICAgIGlmICh0aGlzLl9wcmVsb2FkQ29tcG9uZW50ICYmIGNvbnRhaW5lckVsZW1lbnRzPy5sZW5ndGggPj0gMCkge1xuICAgICAgdGhpcy5hbmd1bGFyVXRpbFNlcnZpY2UuY3JlYXRlQW5ndWxhckNvbXBvbmVudEFwcGVuZFRvRG9tKFxuICAgICAgICB0aGlzLl9wcmVsb2FkQ29tcG9uZW50LFxuICAgICAgICBjb250YWluZXJFbGVtZW50c1tjb250YWluZXJFbGVtZW50cy5sZW5ndGggLSAxXVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVuZGVyIChvciByZS1yZW5kZXIpIHRoZSBWaWV3IENvbXBvbmVudCAoUm93IERldGFpbCkgKi9cbiAgcmVuZGVyVmlld01vZGVsKGl0ZW06IGFueSk6IENyZWF0ZWRWaWV3IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50cyA9IHRoaXMuZ3JpZENvbnRhaW5lckVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgIGAke1JPV19ERVRBSUxfQ09OVEFJTkVSX1BSRUZJWH0ke2l0ZW1bdGhpcy5kYXRhc2V0SWRQcm9wTmFtZV19YFxuICAgICkgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XG4gICAgaWYgKHRoaXMuX3ZpZXdDb21wb25lbnQgJiYgY29udGFpbmVyRWxlbWVudHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudE91dHB1dCA9IHRoaXMuYW5ndWxhclV0aWxTZXJ2aWNlLmNyZWF0ZUFuZ3VsYXJDb21wb25lbnRBcHBlbmRUb0RvbShcbiAgICAgICAgdGhpcy5fdmlld0NvbXBvbmVudCxcbiAgICAgICAgY29udGFpbmVyRWxlbWVudHNbY29udGFpbmVyRWxlbWVudHMubGVuZ3RoIC0gMV0sXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RlbDogaXRlbSxcbiAgICAgICAgICBhZGRvbjogdGhpcyxcbiAgICAgICAgICBncmlkOiB0aGlzLl9ncmlkLFxuICAgICAgICAgIGRhdGFWaWV3OiB0aGlzLmRhdGFWaWV3LFxuICAgICAgICAgIHBhcmVudDogdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucz8ucGFyZW50LFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgaWYgKGNvbXBvbmVudE91dHB1dD8uY29tcG9uZW50UmVmKSB7XG4gICAgICAgIGNvbnN0IHZpZXdPYmogPSB0aGlzLl92aWV3cy5maW5kKChvYmopID0+IG9iai5pZCA9PT0gaXRlbVt0aGlzLmRhdGFzZXRJZFByb3BOYW1lXSk7XG4gICAgICAgIGlmICh2aWV3T2JqKSB7XG4gICAgICAgICAgdmlld09iai5jb21wb25lbnRSZWYgPSBjb21wb25lbnRPdXRwdXQuY29tcG9uZW50UmVmO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2aWV3T2JqO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gLS1cbiAgLy8gcHJvdGVjdGVkIGZ1bmN0aW9uc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcm90ZWN0ZWQgZGlzcG9zZVZpZXdDb21wb25lbnQoZXhwYW5kZWRWaWV3OiBDcmVhdGVkVmlldyk6IENyZWF0ZWRWaWV3IHwgdm9pZCB7XG4gICAgY29uc3QgY29tcFJlZiA9IGV4cGFuZGVkVmlldz8uY29tcG9uZW50UmVmO1xuICAgIGlmIChjb21wUmVmKSB7XG4gICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KGNvbXBSZWYuaG9zdFZpZXcpO1xuICAgICAgaWYgKGNvbXBSZWY/LmRlc3Ryb3kpIHtcbiAgICAgICAgY29tcFJlZi5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXhwYW5kZWRWaWV3O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBub3RpZnkgdGhlIG9uQXN5bmNSZXNwb25zZSB3aXRoIHRoZSBcImFyZ3MuaXRlbVwiIChyZXF1aXJlZCBwcm9wZXJ0eSlcbiAgICogdGhlIHBsdWdpbiB3aWxsIHRoZW4gdXNlIGl0ZW0gdG8gcG9wdWxhdGUgdGhlIHJvdyBkZXRhaWwgcGFuZWwgd2l0aCB0aGUgXCJwb3N0VGVtcGxhdGVcIlxuICAgKiBAcGFyYW0gaXRlbVxuICAgKi9cbiAgcHJvdGVjdGVkIG5vdGlmeVRlbXBsYXRlKGl0ZW06IGFueSkge1xuICAgIGlmICh0aGlzLm9uQXN5bmNSZXNwb25zZSkge1xuICAgICAgdGhpcy5vbkFzeW5jUmVzcG9uc2Uubm90aWZ5KHsgaXRlbSwgaXRlbURldGFpbDogaXRlbSB9LCB1bmRlZmluZWQsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBQcm9jZXNzaW5nLCB3ZSB3aWxsIG5vdGlmeSB0aGUgcGx1Z2luIHdpdGggdGhlIG5ldyBpdGVtIGRldGFpbCBvbmNlIGJhY2tlbmQgc2VydmVyIGNhbGwgY29tcGxldGVzXG4gICAqIEBwYXJhbSBpdGVtXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgb25Qcm9jZXNzaW5nKGl0ZW06IGFueSkge1xuICAgIGlmIChpdGVtICYmIHR5cGVvZiB0aGlzLl91c2VyUHJvY2Vzc0ZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBsZXQgYXdhaXRlZEl0ZW1EZXRhaWw6IGFueTtcbiAgICAgIGNvbnN0IHVzZXJQcm9jZXNzRm4gPSB0aGlzLl91c2VyUHJvY2Vzc0ZuKGl0ZW0pO1xuXG4gICAgICAvLyB3YWl0IGZvciB0aGUgXCJ1c2VyUHJvY2Vzc0ZuXCIsIG9uY2UgcmVzb2x2ZWQgd2Ugd2lsbCBzYXZlIGl0IGludG8gdGhlIFwiY29sbGVjdGlvblwiXG4gICAgICBjb25zdCByZXNwb25zZTogYW55IHwgYW55W10gPSBhd2FpdCB1c2VyUHJvY2Vzc0ZuO1xuXG4gICAgICBpZiAodGhpcy5kYXRhc2V0SWRQcm9wTmFtZSBpbiByZXNwb25zZSkge1xuICAgICAgICBhd2FpdGVkSXRlbURldGFpbCA9IHJlc3BvbnNlOyAvLyBmcm9tIFByb21pc2VcbiAgICAgIH0gZWxzZSBpZiAoKHJlc3BvbnNlICYmIHJlc3BvbnNlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkgfHwgcmVzcG9uc2UgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIGF3YWl0ZWRJdGVtRGV0YWlsID0gYXdhaXQgY2FzdE9ic2VydmFibGVUb1Byb21pc2UodGhpcy5yeGpzIGFzIFJ4SnNGYWNhZGUsIHJlc3BvbnNlKTsgLy8gZnJvbSBBbmd1bGFyLWh0dHAtY2xpZW50XG4gICAgICB9XG5cbiAgICAgIGlmICghYXdhaXRlZEl0ZW1EZXRhaWwgfHwgISh0aGlzLmRhdGFzZXRJZFByb3BOYW1lIGluIGF3YWl0ZWRJdGVtRGV0YWlsKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtBbmd1bGFyLVNsaWNrZ3JpZF0gY291bGQgbm90IHByb2Nlc3MgdGhlIFJvdyBEZXRhaWwsIHlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHlvdXIgXCJwcm9jZXNzXCIgY2FsbGJhY2tcbiAgICAgICAgICAoYSBQcm9taXNlIG9yIGFuIEh0dHBDbGllbnQgY2FsbCByZXR1cm5pbmcgYW4gT2JzZXJ2YWJsZSkgcmV0dXJucyBhbiBpdGVtIG9iamVjdCB0aGF0IGhhcyBhbiBcIiR7dGhpcy5kYXRhc2V0SWRQcm9wTmFtZX1cIiBwcm9wZXJ0eWApO1xuICAgICAgfVxuXG4gICAgICAvLyBub3RpZnkgdGhlIHBsdWdpbiB3aXRoIHRoZSBuZXcgaXRlbSBkZXRhaWxzXG4gICAgICB0aGlzLm5vdGlmeVRlbXBsYXRlKGF3YWl0ZWRJdGVtRGV0YWlsIHx8IHt9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSnVzdCBiZWZvcmUgdGhlIHJvdyBnZXQgZXhwYW5kZWQgb3IgY29sbGFwc2VkIHdlIHdpbGwgZG8gdGhlIGZvbGxvd2luZ1xuICAgKiBGaXJzdCBkZXRlcm1pbmUgaWYgdGhlIHJvdyBpcyBleHBhbmRpbmcgb3IgY29sbGFwc2luZyxcbiAgICogaWYgaXQncyBleHBhbmRpbmcgd2Ugd2lsbCBhZGQgaXQgdG8gb3VyIFZpZXcgQ29tcG9uZW50cyByZWZlcmVuY2UgYXJyYXkgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0XG4gICAqIG9yIGlmIGl0J3MgY29sbGFwc2luZyB3ZSB3aWxsIHJlbW92ZSBpdCBmcm9tIG91ciBWaWV3IENvbXBvbmVudHMgcmVmZXJlbmNlIGFycmF5XG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlT25CZWZvcmVSb3dEZXRhaWxUb2dnbGUoX2U6IFNsaWNrRXZlbnREYXRhPE9uQmVmb3JlUm93RGV0YWlsVG9nZ2xlQXJncz4sIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnkgfSkge1xuICAgIC8vIGV4cGFuZGluZ1xuICAgIGlmIChhcmdzPy5pdGVtPy5fX2NvbGxhcHNlZCkge1xuICAgICAgLy8gZXhwYW5kaW5nIHJvdyBkZXRhaWxcbiAgICAgIGNvbnN0IHZpZXdJbmZvOiBDcmVhdGVkVmlldyA9IHtcbiAgICAgICAgaWQ6IGFyZ3MuaXRlbVt0aGlzLmRhdGFzZXRJZFByb3BOYW1lXSxcbiAgICAgICAgZGF0YUNvbnRleHQ6IGFyZ3MuaXRlbSxcbiAgICAgIH07XG4gICAgICBjb25zdCBpZFByb3BOYW1lID0gdGhpcy5ncmlkT3B0aW9ucy5kYXRhc2V0SWRQcm9wZXJ0eU5hbWUgfHwgJ2lkJztcbiAgICAgIGFkZFRvQXJyYXlXaGVuTm90RXhpc3RzKHRoaXMuX3ZpZXdzLCB2aWV3SW5mbywgaWRQcm9wTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbGxhcHNpbmcsIHNvIGRpc3Bvc2Ugb2YgdGhlIFZpZXcvQ29tcG9uZW50XG4gICAgICBjb25zdCBmb3VuZFZpZXdJbmRleCA9IHRoaXMuX3ZpZXdzLmZpbmRJbmRleCgodmlldzogQ3JlYXRlZFZpZXcpID0+IHZpZXcuaWQgPT09IGFyZ3MuaXRlbVt0aGlzLmRhdGFzZXRJZFByb3BOYW1lXSk7XG4gICAgICBpZiAoZm91bmRWaWV3SW5kZXggPj0gMCAmJiBmb3VuZFZpZXdJbmRleCBpbiB0aGlzLl92aWV3cykge1xuICAgICAgICBjb25zdCBjb21wUmVmID0gdGhpcy5fdmlld3NbZm91bmRWaWV3SW5kZXhdLmNvbXBvbmVudFJlZjtcbiAgICAgICAgaWYgKGNvbXBSZWYpIHtcbiAgICAgICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KGNvbXBSZWYuaG9zdFZpZXcpO1xuICAgICAgICAgIGNvbXBSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3ZpZXdzLnNwbGljZShmb3VuZFZpZXdJbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZW4gUm93IGNvbWVzIGJhY2sgdG8gVmlld3BvcnQgUmFuZ2UsIHdlIG5lZWQgdG8gcmVkcmF3IHRoZSBWaWV3ICovXG4gIHByb3RlY3RlZCBoYW5kbGVPblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2UoX2U6IFNsaWNrRXZlbnREYXRhPE9uUm93QmFja1RvVmlld3BvcnRSYW5nZUFyZ3M+LCBhcmdzOiBPblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2VBcmdzKSB7XG4gICAgaWYgKGFyZ3M/Lml0ZW0pIHtcbiAgICAgIHRoaXMucmVkcmF3QWxsVmlld0NvbXBvbmVudHMoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2tSb3dEZXRhaWxWaWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2FuZ3VsYXItc2xpY2tncmlkL2V4dGVuc2lvbnMvc2xpY2tSb3dEZXRhaWxWaWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLGNBQWMsRUFDZCxzQkFBc0IsRUFDdEIsY0FBYyxHQUNmLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyxFQUFFLGtCQUFrQixJQUFJLDJCQUEyQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDaEgsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFLaEQsTUFBTSwyQkFBMkIsR0FBRyxZQUFZLENBQUM7QUFDakQsTUFBTSx3QkFBd0IsR0FBRyxtQkFBbUIsQ0FBQztBQVNyRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsMkJBQTJCO0lBVTVDO0lBQ0E7SUFDQTtJQUNBO0lBQ1Q7SUFiWixrQkFBa0IsQ0FBb0I7SUFDNUIsaUJBQWlCLENBQTJCO0lBQzVDLGVBQWUsQ0FBcUI7SUFDcEMsTUFBTSxHQUFrQixFQUFFLENBQUM7SUFDM0IsY0FBYyxDQUFnQjtJQUM5QixjQUFjLEdBQXdCLEVBQUUsQ0FBQztJQUN6QyxjQUFjLENBQWdFO0lBRXhGLFlBQ3FCLGtCQUFzQyxFQUN0QyxNQUFzQixFQUN0QixrQkFBc0MsRUFDdEMsb0JBQW9DLEVBQzdDLElBQWlCO1FBRTNCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBTlAsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBZ0I7UUFDN0MsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUc3QixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQWMsaUJBQWlCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxZQUFZLENBQUMsWUFBK0I7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7SUFDcEMsQ0FBQztJQUVELGlFQUFpRTtJQUNqRSxJQUFJLFdBQVc7UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQWUsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQWdCO1FBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCw2Q0FBNkM7SUFDN0MsT0FBTztRQUNMLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLDBDQUEwQztRQUNyRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELDBFQUEwRTtJQUMxRSx3QkFBd0I7UUFDdEIsR0FBRyxDQUFDO1lBQ0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMvQixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDbkMsQ0FBQztJQUVELG1FQUFtRTtJQUNuRSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBZTtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBNEIsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsa0JBQTJDO1FBQ2xELElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDbEUseUZBQXlGO1lBQ3pGLGtIQUFrSDtZQUNsSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLE9BQXNDLENBQUMsQ0FBQyw2QkFBNkI7WUFDMUgsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnREFBZ0Q7UUFDakgsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUNiLDRHQUE0RyxDQUM3RyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBQ2xELDRGQUE0RjtZQUM1Rix5SkFBeUo7WUFDekosSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLENBQUM7Z0JBQzNFLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGVBQWUsd0JBQXdCLFVBQVUsQ0FBVyxDQUFDO1lBQy9GLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDO2dCQUNyRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxDQUFDLFVBQWUsRUFBRSxFQUFFLENBQ25ELElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQzNCLGVBQWUsMkJBQTJCLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQ2hGLENBQUM7WUFDaEIsQ0FBQztZQUVELHNFQUFzRTtZQUN0RSxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztnQkFDM0Qsa0JBQWtCLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ25ILElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBRUQsa0JBQWtCO1lBQ2xCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLEVBQUUsQ0FBQztvQkFDcEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4RCxDQUFDO2dCQUVELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO3dCQUNoRSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEtBQUssVUFBVSxFQUFFLENBQUM7NEJBQ2pHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUN6RCxDQUFDO29CQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFO3dCQUM3RCw0QkFBNEI7d0JBQzVCLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUM7d0JBRWhDLDJEQUEyRDt3QkFDM0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBRWpDLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixLQUFLLFVBQVUsRUFBRSxDQUFDOzRCQUNsRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUN0RCxDQUFDO29CQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQ3pCLElBQUksQ0FBQyxzQkFBc0IsRUFDM0IsQ0FBQyxDQUFNLEVBQUUsSUFBMEUsRUFBRSxFQUFFO3dCQUNyRixpRkFBaUY7d0JBQ2pGLHdHQUF3Rzt3QkFDeEcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7d0JBRXpCLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixLQUFLLFVBQVUsRUFBRSxDQUFDOzRCQUN4RyxJQUFJLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUM1RCxDQUFDO29CQUNILENBQUMsQ0FDRixDQUFDO2dCQUNKLENBQUM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFO3dCQUNwRSxtRkFBbUY7d0JBQ25GLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBRTVDLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLHVCQUF1QixLQUFLLFVBQVUsRUFBRSxDQUFDOzRCQUN6RyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQ3BFLENBQUM7d0JBQ0QsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUU7d0JBQ3JFLDhFQUE4RTt3QkFDOUUsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzt3QkFFN0MsSUFBSSxJQUFJLENBQUMsb0JBQW9CLElBQUksT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsd0JBQXdCLEtBQUssVUFBVSxFQUFFLENBQUM7NEJBQzFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQzlELENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO29CQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7d0JBQy9FLElBQUksT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsNkJBQTZCLEtBQUssVUFBVSxFQUFFLENBQUM7NEJBQ25GLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQ3ZFLENBQUM7d0JBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUU7d0JBQ3BFLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLHVCQUF1QixLQUFLLFVBQVUsRUFBRSxDQUFDOzRCQUN6RyxJQUFJLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUM3RCxDQUFDO29CQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBRUQsS0FBSztnQkFDTCwrQ0FBK0M7Z0JBRS9DLHdGQUF3RjtnQkFDeEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBRXBHLG1EQUFtRDtnQkFDbkQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztvQkFDbkYsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3pHLENBQUM7Z0JBRUQsbUZBQW1GO2dCQUNuRixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBRXpGLHlEQUF5RDtnQkFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3RCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQ2hDLENBQUMsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsOEJBQThCLENBQUMsRUFDL0UsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDeEMsRUFDRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLENBQUMsMkJBQTJCLEVBQUUsMkJBQTJCLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FDbEcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUN4RCxDQUNGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHFFQUFxRTtJQUNyRSx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxtQkFBbUIsQ0FBQyxXQUF3QjtRQUMxQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLDJCQUEyQixHQUFHLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlILElBQUksaUJBQWlCLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsNERBQTREO0lBQzVELGlCQUFpQjtRQUNmLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixDQUN4RSxHQUFHLHdCQUF3QixFQUFFLENBQ0csQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlDQUFpQyxDQUMzRSxJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFDL0MsRUFBRSxFQUNGLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FDN0MsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVELDREQUE0RDtJQUM1RCxlQUFlLENBQUMsSUFBUztRQUN2QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FDeEUsR0FBRywyQkFBMkIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FDL0IsQ0FBQztRQUVuQyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksaUJBQWlCLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pELG9CQUFvQjtZQUNwQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUNBQWlDLENBQy9FLElBQUksQ0FBQyxjQUFjLEVBQ25CLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFDL0M7Z0JBQ0UsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNoQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsTUFBTTthQUMxQyxFQUNEO2dCQUNFLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQjthQUN6QyxDQUNGLENBQUM7WUFDRixJQUFJLGVBQWUsRUFBRSxZQUFZLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ25GLElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osT0FBTyxDQUFDLFlBQVksR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDO29CQUNwRCxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDMUIsQ0FBQztnQkFDRCxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLO0lBQ0wsc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUVYLGlCQUFpQixDQUFDLElBQVMsRUFBRSxlQUFlLEdBQUcsS0FBSztRQUM1RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDOUcsSUFBSSxjQUFjLElBQUksQ0FBQyxJQUFJLGNBQWMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9CLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFUyxXQUFXLENBQUMsWUFBeUI7UUFDN0MsTUFBTSxPQUFPLEdBQUcsWUFBWSxFQUFFLFlBQVksQ0FBQztRQUMzQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLElBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2xCLFlBQVksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ2hDLENBQUM7WUFDRCxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxjQUFjLENBQUMsSUFBUztRQUNoQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNPLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBUztRQUNwQyxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdEQsSUFBSSxpQkFBc0IsQ0FBQztZQUMzQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWhELG9GQUFvRjtZQUNwRixNQUFNLFFBQVEsR0FBZ0IsTUFBTSxhQUFhLENBQUM7WUFFbEQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ3ZDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxDQUFDLGVBQWU7WUFDL0MsQ0FBQztpQkFBTSxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsWUFBWSxVQUFVLENBQUMsSUFBSSxRQUFRLFlBQVksT0FBTyxFQUFFLENBQUM7Z0JBQ3ZGLGlCQUFpQixHQUFHLE1BQU0sdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQywyQkFBMkI7WUFDbkgsQ0FBQztZQUVELElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztnQkFDekUsTUFBTSxJQUFJLEtBQUssQ0FBQzswR0FDa0YsSUFBSSxDQUFDLGlCQUFpQixZQUFZLENBQUMsQ0FBQztZQUN4SSxDQUFDO1lBRUQsOENBQThDO1lBQzlDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLDZCQUE2QixDQUFDLEVBQStDLEVBQUUsSUFBb0M7UUFDM0gsWUFBWTtRQUNaLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUM1Qix1QkFBdUI7WUFDdkIsTUFBTSxRQUFRLEdBQWdCO2dCQUM1QixFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3JDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDdEIsUUFBUSxFQUFFLEtBQUs7YUFDaEIsQ0FBQztZQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDO1lBQ2xFLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdELENBQUM7YUFBTSxDQUFDO1lBQ04sK0NBQStDO1lBQy9DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRUQsd0VBQXdFO0lBQzlELDhCQUE4QixDQUFDLEVBQWdELEVBQUUsSUFBa0M7UUFDM0gsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRSxJQUFJLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXBwbGljYXRpb25SZWYsIENvbXBvbmVudFJlZiwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge1xuICBFdmVudFN1YnNjcmlwdGlvbixcbiAgT25CZWZvcmVSb3dEZXRhaWxUb2dnbGVBcmdzLFxuICBPblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2VBcmdzLFxuICBSeEpzRmFjYWRlLFxuICBTbGlja0V2ZW50SGFuZGxlcixcbiAgU2xpY2tHcmlkLFxufSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWRkVG9BcnJheVdoZW5Ob3RFeGlzdHMsXG4gIGNhc3RPYnNlcnZhYmxlVG9Qcm9taXNlLFxuICBTbGlja0V2ZW50RGF0YSxcbiAgU2xpY2tSb3dTZWxlY3Rpb25Nb2RlbCxcbiAgdW5zdWJzY3JpYmVBbGwsXG59IGZyb20gJ0BzbGlja2dyaWQtdW5pdmVyc2FsL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7IEV2ZW50UHViU3ViU2VydmljZSB9IGZyb20gJ0BzbGlja2dyaWQtdW5pdmVyc2FsL2V2ZW50LXB1Yi1zdWInO1xuaW1wb3J0IHsgU2xpY2tSb3dEZXRhaWxWaWV3IGFzIFVuaXZlcnNhbFNsaWNrUm93RGV0YWlsVmlldyB9IGZyb20gJ0BzbGlja2dyaWQtdW5pdmVyc2FsL3Jvdy1kZXRhaWwtdmlldy1wbHVnaW4nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdHlwZSBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB0eXBlIHsgR3JpZE9wdGlvbiwgUm93RGV0YWlsVmlldyB9IGZyb20gJy4uL21vZGVscy9pbmRleCc7XG5pbXBvcnQgdHlwZSB7IEFuZ3VsYXJVdGlsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FuZ3VsYXJVdGlsLnNlcnZpY2UnO1xuXG5jb25zdCBST1dfREVUQUlMX0NPTlRBSU5FUl9QUkVGSVggPSAnY29udGFpbmVyXyc7XG5jb25zdCBQUkVMT0FEX0NPTlRBSU5FUl9QUkVGSVggPSAnY29udGFpbmVyX2xvYWRpbmcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZWRWaWV3IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcbiAgZGF0YUNvbnRleHQ6IGFueTtcbiAgY29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPGFueT47XG4gIHJlbmRlcmVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFNsaWNrUm93RGV0YWlsVmlldyBleHRlbmRzIFVuaXZlcnNhbFNsaWNrUm93RGV0YWlsVmlldyB7XG4gIHJvd0RldGFpbENvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG4gIHByb3RlY3RlZCBfcHJlbG9hZENvbXBvbmVudDogVHlwZTxvYmplY3Q+IHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgX3ByZWxvYWRDb21wUmVmPzogQ29tcG9uZW50UmVmPGFueT47XG4gIHByb3RlY3RlZCBfdmlld3M6IENyZWF0ZWRWaWV3W10gPSBbXTtcbiAgcHJvdGVjdGVkIF92aWV3Q29tcG9uZW50ITogVHlwZTxvYmplY3Q+O1xuICBwcm90ZWN0ZWQgX3N1YnNjcmlwdGlvbnM6IEV2ZW50U3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJvdGVjdGVkIF91c2VyUHJvY2Vzc0ZuITogKGl0ZW06IGFueSkgPT4gUHJvbWlzZTxhbnk+IHwgT2JzZXJ2YWJsZTxhbnk+IHwgU3ViamVjdDxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhbmd1bGFyVXRpbFNlcnZpY2U6IEFuZ3VsYXJVdGlsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXZlbnRQdWJTdWJTZXJ2aWNlOiBFdmVudFB1YlN1YlNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdyaWRDb250YWluZXJFbGVtZW50OiBIVE1MRGl2RWxlbWVudCxcbiAgICBwcm90ZWN0ZWQgcnhqcz86IFJ4SnNGYWNhZGVcbiAgKSB7XG4gICAgc3VwZXIoZXZlbnRQdWJTdWJTZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBhZGRvbk9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9ucygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBkYXRhc2V0SWRQcm9wTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zLmRhdGFzZXRJZFByb3BlcnR5TmFtZSB8fCAnaWQnO1xuICB9XG5cbiAgZ2V0IGV2ZW50SGFuZGxlcigpOiBTbGlja0V2ZW50SGFuZGxlciB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50SGFuZGxlcjtcbiAgfVxuICBzZXQgZXZlbnRIYW5kbGVyKGV2ZW50SGFuZGxlcjogU2xpY2tFdmVudEhhbmRsZXIpIHtcbiAgICB0aGlzLl9ldmVudEhhbmRsZXIgPSBldmVudEhhbmRsZXI7XG4gIH1cblxuICAvKiogR2V0dGVyIGZvciB0aGUgR3JpZCBPcHRpb25zIHB1bGxlZCB0aHJvdWdoIHRoZSBHcmlkIE9iamVjdCAqL1xuICBnZXQgZ3JpZE9wdGlvbnMoKTogR3JpZE9wdGlvbiB7XG4gICAgcmV0dXJuICh0aGlzLl9ncmlkPy5nZXRPcHRpb25zKCkgfHwge30pIGFzIEdyaWRPcHRpb247XG4gIH1cblxuICBnZXQgcm93RGV0YWlsVmlld09wdGlvbnMoKTogUm93RGV0YWlsVmlldyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldztcbiAgfVxuXG4gIGFkZFJ4SnNSZXNvdXJjZShyeGpzOiBSeEpzRmFjYWRlKSB7XG4gICAgdGhpcy5yeGpzID0gcnhqcztcbiAgfVxuXG4gIC8qKiBEaXNwb3NlIG9mIHRoZSBSb3dEZXRhaWxWaWV3IEV4dGVuc2lvbiAqL1xuICBkaXNwb3NlKCkge1xuICAgIHRoaXMuZGlzcG9zZUFsbFZpZXdDb21wb25lbnRzKCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyA9IHVuc3Vic2NyaWJlQWxsKHRoaXMuX3N1YnNjcmlwdGlvbnMpOyAvLyBhbHNvIHVuc3Vic2NyaWJlIGFsbCBSeEpTIHN1YnNjcmlwdGlvbnNcbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH1cblxuICAvKiogRGlzcG9zZSBvZiBhbGwgdGhlIG9wZW5lZCBSb3cgRGV0YWlsIFBhbmVscyBBbmd1bGFyIFZpZXcgQ29tcG9uZW50cyAqL1xuICBkaXNwb3NlQWxsVmlld0NvbXBvbmVudHMoKSB7XG4gICAgZG8ge1xuICAgICAgY29uc3QgdmlldyA9IHRoaXMuX3ZpZXdzLnBvcCgpO1xuICAgICAgaWYgKHZpZXcpIHtcbiAgICAgICAgdGhpcy5kaXNwb3NlVmlldyh2aWV3KTtcbiAgICAgIH1cbiAgICB9IHdoaWxlICh0aGlzLl92aWV3cy5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGluc3RhbmNlIG9mIHRoZSBTbGlja0dyaWQgYWRkb24gKGNvbnRyb2wgb3IgcGx1Z2luKS4gKi9cbiAgZ2V0QWRkb25JbnN0YW5jZSgpOiBTbGlja1Jvd0RldGFpbFZpZXcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGluaXQoZ3JpZDogU2xpY2tHcmlkKSB7XG4gICAgdGhpcy5fZ3JpZCA9IGdyaWQ7XG4gICAgc3VwZXIuaW5pdCh0aGlzLl9ncmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyKGdyaWQ/LmdldFNlbGVjdGlvbk1vZGVsKCkgYXMgU2xpY2tSb3dTZWxlY3Rpb25Nb2RlbCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBwbHVnaW4gYmVmb3JlIHRoZSBHcmlkIGNyZWF0aW9uLCBlbHNlIGl0IHdpbGwgYmVoYXZlIG9kZGx5LlxuICAgKiBNb3N0bHkgYmVjYXVzZSB0aGUgY29sdW1uIGRlZmluaXRpb25zIG1pZ2h0IGNoYW5nZSBhZnRlciB0aGUgZ3JpZCBjcmVhdGlvblxuICAgKi9cbiAgcmVnaXN0ZXIocm93U2VsZWN0aW9uUGx1Z2luPzogU2xpY2tSb3dTZWxlY3Rpb25Nb2RlbCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5ncmlkT3B0aW9ucy5yb3dEZXRhaWxWaWV3Py5wcm9jZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyB3ZSBuZWVkIHRvIGtlZXAgdGhlIHVzZXIgXCJwcm9jZXNzXCIgbWV0aG9kIGFuZCByZXBsYWNlIGl0IHdpdGggb3VyIG93biBleGVjdXRpb24gbWV0aG9kXG4gICAgICAvLyB3ZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiB3ZSBnZXQgdGhlIGl0ZW0gZGV0YWlsLCB3ZSBuZWVkIHRvIGNhbGwgXCJvbkFzeW5jUmVzcG9uc2Uubm90aWZ5XCIgZm9yIHRoZSBwbHVnaW4gdG8gd29ya1xuICAgICAgdGhpcy5fdXNlclByb2Nlc3NGbiA9IHRoaXMuZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldy5wcm9jZXNzIGFzIChpdGVtOiBhbnkpID0+IFByb21pc2U8YW55PjsgLy8ga2VlcCB1c2VyJ3MgcHJvY2VzcyBtZXRob2RcbiAgICAgIHRoaXMuYWRkb25PcHRpb25zLnByb2Nlc3MgPSAoaXRlbSkgPT4gdGhpcy5vblByb2Nlc3NpbmcoaXRlbSk7IC8vIHJlcGxhY2UgcHJvY2VzcyBtZXRob2QgJiBydW4gb3VyIGludGVybmFsIG9uZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdbQW5ndWxhci1TbGlja2dyaWRdIFlvdSBuZWVkIHRvIHByb3ZpZGUgYSBcInByb2Nlc3NcIiBmdW5jdGlvbiBmb3IgdGhlIFJvdyBEZXRhaWwgRXh0ZW5zaW9uIHRvIHdvcmsgcHJvcGVybHknXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9ncmlkICYmIHRoaXMuZ3JpZE9wdGlvbnM/LnJvd0RldGFpbFZpZXcpIHtcbiAgICAgIC8vIGxvYWQgdGhlIFByZWxvYWQgJiBSb3dEZXRhaWwgVGVtcGxhdGVzIChjb3VsZCBiZSBzdHJhaWdodCBIVE1MIG9yIEFuZ3VsYXIgVmlldy9WaWV3TW9kZWwpXG4gICAgICAvLyB3aGVuIHRob3NlIGFyZSBBbmd1bGFyIFZpZXcvVmlld01vZGVsLCB3ZSBuZWVkIHRvIGNyZWF0ZSBWaWV3IENvbXBvbmVudCAmIHByb3ZpZGUgdGhlIGh0bWwgY29udGFpbmVycyB0byB0aGUgUGx1Z2luIChwcmVUZW1wbGF0ZS9wb3N0VGVtcGxhdGUgbWV0aG9kcylcbiAgICAgIGlmICghdGhpcy5ncmlkT3B0aW9ucy5yb3dEZXRhaWxWaWV3LnByZVRlbXBsYXRlKSB7XG4gICAgICAgIHRoaXMuX3ByZWxvYWRDb21wb25lbnQgPSB0aGlzLmdyaWRPcHRpb25zPy5yb3dEZXRhaWxWaWV3Py5wcmVsb2FkQ29tcG9uZW50O1xuICAgICAgICB0aGlzLmFkZG9uT3B0aW9ucy5wcmVUZW1wbGF0ZSA9ICgpID0+XG4gICAgICAgICAgdGhpcy5fZ3JpZC5zYW5pdGl6ZUh0bWxTdHJpbmcoYDxkaXYgY2xhc3M9XCIke1BSRUxPQURfQ09OVEFJTkVSX1BSRUZJWH1cIj48L2Rpdj5gKSBhcyBzdHJpbmc7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldy5wb3N0VGVtcGxhdGUpIHtcbiAgICAgICAgdGhpcy5fdmlld0NvbXBvbmVudCA9IHRoaXMuZ3JpZE9wdGlvbnM/LnJvd0RldGFpbFZpZXc/LnZpZXdDb21wb25lbnQ7XG4gICAgICAgIHRoaXMuYWRkb25PcHRpb25zLnBvc3RUZW1wbGF0ZSA9IChpdGVtRGV0YWlsOiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5fZ3JpZC5zYW5pdGl6ZUh0bWxTdHJpbmcoXG4gICAgICAgICAgICBgPGRpdiBjbGFzcz1cIiR7Uk9XX0RFVEFJTF9DT05UQUlORVJfUFJFRklYfSR7aXRlbURldGFpbFt0aGlzLmRhdGFzZXRJZFByb3BOYW1lXX1cIj48L2Rpdj5gXG4gICAgICAgICAgKSBhcyBzdHJpbmc7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoaXMgYWxzbyByZXF1aXJlcyB0aGUgUm93IFNlbGVjdGlvbiBNb2RlbCB0byBiZSByZWdpc3RlcmVkIGFzIHdlbGxcbiAgICAgIGlmICghcm93U2VsZWN0aW9uUGx1Z2luIHx8ICF0aGlzLl9ncmlkLmdldFNlbGVjdGlvbk1vZGVsKCkpIHtcbiAgICAgICAgcm93U2VsZWN0aW9uUGx1Z2luID0gbmV3IFNsaWNrUm93U2VsZWN0aW9uTW9kZWwodGhpcy5ncmlkT3B0aW9ucy5yb3dTZWxlY3Rpb25PcHRpb25zIHx8IHsgc2VsZWN0QWN0aXZlUm93OiB0cnVlIH0pO1xuICAgICAgICB0aGlzLl9ncmlkLnNldFNlbGVjdGlvbk1vZGVsKHJvd1NlbGVjdGlvblBsdWdpbik7XG4gICAgICB9XG5cbiAgICAgIC8vIGhvb2sgYWxsIGV2ZW50c1xuICAgICAgaWYgKHRoaXMuX2dyaWQgJiYgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucykge1xuICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkV4dGVuc2lvblJlZ2lzdGVyZWQpIHtcbiAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uRXh0ZW5zaW9uUmVnaXN0ZXJlZCh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9uQXN5bmNSZXNwb25zZSkge1xuICAgICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLm9uQXN5bmNSZXNwb25zZSwgKGV2ZW50LCBhcmdzKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucyAmJiB0eXBlb2YgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkFzeW5jUmVzcG9uc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkFzeW5jUmVzcG9uc2UoZXZlbnQsIGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub25Bc3luY0VuZFVwZGF0ZSkge1xuICAgICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLm9uQXN5bmNFbmRVcGRhdGUsIChlLCBhcmdzKSA9PiB7XG4gICAgICAgICAgICAvLyBkZXN0cm95IHByZWxvYWQgaWYgZXhpc3RzXG4gICAgICAgICAgICB0aGlzLl9wcmVsb2FkQ29tcFJlZj8uZGVzdHJveSgpO1xuXG4gICAgICAgICAgICAvLyB0cmlnZ2VycyBhZnRlciBiYWNrZW5kIGNhbGxlZCBcIm9uQXN5bmNSZXNwb25zZS5ub3RpZnkoKVwiXG4gICAgICAgICAgICB0aGlzLnJlbmRlclZpZXdNb2RlbChhcmdzPy5pdGVtKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMgJiYgdHlwZW9mIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25Bc3luY0VuZFVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQXN5bmNFbmRVcGRhdGUoZSwgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vbkFmdGVyUm93RGV0YWlsVG9nZ2xlKSB7XG4gICAgICAgICAgdGhpcy5ldmVudEhhbmRsZXIuc3Vic2NyaWJlKFxuICAgICAgICAgICAgdGhpcy5vbkFmdGVyUm93RGV0YWlsVG9nZ2xlLFxuICAgICAgICAgICAgKGU6IGFueSwgYXJnczogeyBncmlkOiBTbGlja0dyaWQ7IGl0ZW06IGFueTsgZXhwYW5kZWRSb3dzOiBBcnJheTxudW1iZXIgfCBzdHJpbmc+IH0pID0+IHtcbiAgICAgICAgICAgICAgLy8gZGlzcGxheSBwcmVsb2FkIHRlbXBsYXRlICYgcmUtcmVuZGVyIGFsbCB0aGUgb3RoZXIgRGV0YWlsIFZpZXdzIGFmdGVyIHRvZ2dsaW5nXG4gICAgICAgICAgICAgIC8vIHRoZSBwcmVsb2FkIFZpZXcgd2lsbCBldmVudHVhbGx5IGdvIGF3YXkgb25jZSB0aGUgZGF0YSBnZXRzIGxvYWRlZCBhZnRlciB0aGUgXCJvbkFzeW5jRW5kVXBkYXRlXCIgZXZlbnRcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJQcmVsb2FkVmlldygpO1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQWZ0ZXJSb3dEZXRhaWxUb2dnbGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQWZ0ZXJSb3dEZXRhaWxUb2dnbGUoZSwgYXJncyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub25CZWZvcmVSb3dEZXRhaWxUb2dnbGUpIHtcbiAgICAgICAgICB0aGlzLmV2ZW50SGFuZGxlci5zdWJzY3JpYmUodGhpcy5vbkJlZm9yZVJvd0RldGFpbFRvZ2dsZSwgKGUsIGFyZ3MpID0+IHtcbiAgICAgICAgICAgIC8vIGJlZm9yZSB0b2dnbGluZyByb3cgZGV0YWlsLCB3ZSBuZWVkIHRvIGNyZWF0ZSBWaWV3IENvbXBvbmVudCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICAgICAgICB0aGlzLmhhbmRsZU9uQmVmb3JlUm93RGV0YWlsVG9nZ2xlKGUsIGFyZ3MpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucyAmJiB0eXBlb2YgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkJlZm9yZVJvd0RldGFpbFRvZ2dsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkJlZm9yZVJvd0RldGFpbFRvZ2dsZShlLCBhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub25Sb3dCYWNrVG9WaWV3cG9ydFJhbmdlKSB7XG4gICAgICAgICAgdGhpcy5ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMub25Sb3dCYWNrVG9WaWV3cG9ydFJhbmdlLCAoZSwgYXJncykgPT4ge1xuICAgICAgICAgICAgLy8gd2hlbiByb3cgaXMgYmFjayB0byB2aWV3cG9ydCByYW5nZSwgd2Ugd2lsbCByZS1yZW5kZXIgdGhlIFZpZXcgQ29tcG9uZW50KHMpXG4gICAgICAgICAgICB0aGlzLmhhbmRsZU9uUm93QmFja1RvVmlld3BvcnRSYW5nZShlLCBhcmdzKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMgJiYgdHlwZW9mIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25Sb3dCYWNrVG9WaWV3cG9ydFJhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25Sb3dCYWNrVG9WaWV3cG9ydFJhbmdlKGUsIGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub25CZWZvcmVSb3dPdXRPZlZpZXdwb3J0UmFuZ2UpIHtcbiAgICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMub25CZWZvcmVSb3dPdXRPZlZpZXdwb3J0UmFuZ2UsIChldmVudCwgYXJncykgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zPy5vbkJlZm9yZVJvd091dE9mVmlld3BvcnRSYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQmVmb3JlUm93T3V0T2ZWaWV3cG9ydFJhbmdlKGV2ZW50LCBhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGlzcG9zZVZpZXdCeUl0ZW0oYXJncy5pdGVtKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9uUm93T3V0T2ZWaWV3cG9ydFJhbmdlKSB7XG4gICAgICAgICAgdGhpcy5ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMub25Sb3dPdXRPZlZpZXdwb3J0UmFuZ2UsIChlLCBhcmdzKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucyAmJiB0eXBlb2YgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vblJvd091dE9mVmlld3BvcnRSYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uUm93T3V0T2ZWaWV3cG9ydFJhbmdlKGUsIGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gLS1cbiAgICAgICAgLy8gaG9vayBzb21lIGV2ZW50cyBuZWVkZWQgYnkgdGhlIFBsdWdpbiBpdHNlbGZcblxuICAgICAgICAvLyB3ZSBuZWVkIHRvIHJlZHJhdyB0aGUgb3BlbiBkZXRhaWwgdmlld3MgaWYgd2UgY2hhbmdlIGNvbHVtbiBwb3NpdGlvbiAoY29sdW1uIHJlb3JkZXIpXG4gICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLl9ncmlkLm9uQ29sdW1uc1Jlb3JkZXJlZCwgdGhpcy5yZWRyYXdBbGxWaWV3Q29tcG9uZW50cy5iaW5kKHRoaXMpKTtcblxuICAgICAgICAvLyBvbiByb3cgc2VsZWN0aW9uIGNoYW5nZWQsIHdlIGFsc28gbmVlZCB0byByZWRyYXdcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMuZW5hYmxlUm93U2VsZWN0aW9uIHx8IHRoaXMuZ3JpZE9wdGlvbnMuZW5hYmxlQ2hlY2tib3hTZWxlY3Rvcikge1xuICAgICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLl9ncmlkLm9uU2VsZWN0ZWRSb3dzQ2hhbmdlZCwgdGhpcy5yZWRyYXdBbGxWaWV3Q29tcG9uZW50cy5iaW5kKHRoaXMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG9uIHNvcnQsIGFsbCByb3cgZGV0YWlsIGFyZSBjb2xsYXBzZWQgc28gd2UgY2FuIGRpc3Bvc2Ugb2YgYWxsIHRoZSBWaWV3cyBhcyB3ZWxsXG4gICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLl9ncmlkLm9uU29ydCwgdGhpcy5kaXNwb3NlQWxsVmlld0NvbXBvbmVudHMuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgLy8gcmVkcmF3IGFsbCBWaWV3cyB3aGVuZXZlciBjZXJ0YWluIGV2ZW50cyBhcmUgdHJpZ2dlcmVkXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICB0aGlzLmV2ZW50UHViU3ViU2VydmljZT8uc3Vic2NyaWJlKFxuICAgICAgICAgICAgWydvbkZpbHRlckNoYW5nZWQnLCAnb25HcmlkTWVudUNvbHVtbnNDaGFuZ2VkJywgJ29uQ29sdW1uUGlja2VyQ29sdW1uc0NoYW5nZWQnXSxcbiAgICAgICAgICAgIHRoaXMucmVkcmF3QWxsVmlld0NvbXBvbmVudHMuYmluZCh0aGlzKVxuICAgICAgICAgICksXG4gICAgICAgICAgdGhpcy5ldmVudFB1YlN1YlNlcnZpY2U/LnN1YnNjcmliZShbJ29uR3JpZE1lbnVDbGVhckFsbEZpbHRlcnMnLCAnb25HcmlkTWVudUNsZWFyQWxsU29ydGluZyddLCAoKSA9PlxuICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZWRyYXdBbGxWaWV3Q29tcG9uZW50cygpKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogUmVkcmF3IChyZS1yZW5kZXIpIGFsbCB0aGUgZXhwYW5kZWQgcm93IGRldGFpbCBWaWV3IENvbXBvbmVudHMgKi9cbiAgcmVkcmF3QWxsVmlld0NvbXBvbmVudHMoKSB7XG4gICAgdGhpcy5yZXNldFJlbmRlcmVkUm93cygpO1xuICAgIHRoaXMuX3ZpZXdzLmZvckVhY2goKHZpZXcpID0+IHtcbiAgICAgIGlmICghdmlldy5yZW5kZXJlZCkge1xuICAgICAgICB0aGlzLnJlZHJhd1ZpZXdDb21wb25lbnQodmlldyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogUmVkcmF3IHRoZSBuZWNlc3NhcnkgVmlldyBDb21wb25lbnQgKi9cbiAgcmVkcmF3Vmlld0NvbXBvbmVudChjcmVhdGVkVmlldzogQ3JlYXRlZFZpZXcpIHtcbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50cyA9IHRoaXMuZ3JpZENvbnRhaW5lckVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShgJHtST1dfREVUQUlMX0NPTlRBSU5FUl9QUkVGSVh9JHtjcmVhdGVkVmlldy5pZH1gKTtcbiAgICBpZiAoY29udGFpbmVyRWxlbWVudHM/Lmxlbmd0aCA+PSAwKSB7XG4gICAgICB0aGlzLnJlbmRlclZpZXdNb2RlbChjcmVhdGVkVmlldy5kYXRhQ29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlbmRlciAob3IgcmUtcmVuZGVyKSB0aGUgVmlldyBDb21wb25lbnQgKFJvdyBEZXRhaWwpICovXG4gIHJlbmRlclByZWxvYWRWaWV3KCkge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnRzID0gdGhpcy5ncmlkQ29udGFpbmVyRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxuICAgICAgYCR7UFJFTE9BRF9DT05UQUlORVJfUFJFRklYfWBcbiAgICApIGFzIEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+O1xuICAgIGlmICh0aGlzLl9wcmVsb2FkQ29tcG9uZW50ICYmIGNvbnRhaW5lckVsZW1lbnRzPy5sZW5ndGggPj0gMCkge1xuICAgICAgY29uc3QgcHJlbG9hZENvbXAgPSB0aGlzLmFuZ3VsYXJVdGlsU2VydmljZS5jcmVhdGVBbmd1bGFyQ29tcG9uZW50QXBwZW5kVG9Eb20oXG4gICAgICAgIHRoaXMuX3ByZWxvYWRDb21wb25lbnQsXG4gICAgICAgIGNvbnRhaW5lckVsZW1lbnRzW2NvbnRhaW5lckVsZW1lbnRzLmxlbmd0aCAtIDFdLFxuICAgICAgICB7fSxcbiAgICAgICAgeyBzYW5pdGl6ZXI6IHRoaXMuX2dyaWQuc2FuaXRpemVIdG1sU3RyaW5nIH1cbiAgICAgICk7XG4gICAgICB0aGlzLl9wcmVsb2FkQ29tcFJlZiA9IHByZWxvYWRDb21wLmNvbXBvbmVudFJlZjtcbiAgICB9XG4gIH1cblxuICAvKiogUmVuZGVyIChvciByZS1yZW5kZXIpIHRoZSBWaWV3IENvbXBvbmVudCAoUm93IERldGFpbCkgKi9cbiAgcmVuZGVyVmlld01vZGVsKGl0ZW06IGFueSk6IENyZWF0ZWRWaWV3IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50cyA9IHRoaXMuZ3JpZENvbnRhaW5lckVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgIGAke1JPV19ERVRBSUxfQ09OVEFJTkVSX1BSRUZJWH0ke2l0ZW1bdGhpcy5kYXRhc2V0SWRQcm9wTmFtZV19YFxuICAgICkgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XG5cbiAgICBpZiAodGhpcy5fdmlld0NvbXBvbmVudCAmJiBjb250YWluZXJFbGVtZW50cz8ubGVuZ3RoID4gMCkge1xuICAgICAgLy8gcmVuZGVyIHJvdyBkZXRhaWxcbiAgICAgIGNvbnN0IGNvbXBvbmVudE91dHB1dCA9IHRoaXMuYW5ndWxhclV0aWxTZXJ2aWNlLmNyZWF0ZUFuZ3VsYXJDb21wb25lbnRBcHBlbmRUb0RvbShcbiAgICAgICAgdGhpcy5fdmlld0NvbXBvbmVudCxcbiAgICAgICAgY29udGFpbmVyRWxlbWVudHNbY29udGFpbmVyRWxlbWVudHMubGVuZ3RoIC0gMV0sXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RlbDogaXRlbSxcbiAgICAgICAgICBhZGRvbjogdGhpcyxcbiAgICAgICAgICBncmlkOiB0aGlzLl9ncmlkLFxuICAgICAgICAgIGRhdGFWaWV3OiB0aGlzLmRhdGFWaWV3LFxuICAgICAgICAgIHBhcmVudDogdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucz8ucGFyZW50LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgc2FuaXRpemVyOiB0aGlzLl9ncmlkLnNhbml0aXplSHRtbFN0cmluZyxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGlmIChjb21wb25lbnRPdXRwdXQ/LmNvbXBvbmVudFJlZikge1xuICAgICAgICBjb25zdCB2aWV3T2JqID0gdGhpcy5fdmlld3MuZmluZCgob2JqKSA9PiBvYmouaWQgPT09IGl0ZW1bdGhpcy5kYXRhc2V0SWRQcm9wTmFtZV0pO1xuICAgICAgICBpZiAodmlld09iaikge1xuICAgICAgICAgIHZpZXdPYmouY29tcG9uZW50UmVmID0gY29tcG9uZW50T3V0cHV0LmNvbXBvbmVudFJlZjtcbiAgICAgICAgICB2aWV3T2JqLnJlbmRlcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmlld09iajtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIC0tXG4gIC8vIHByb3RlY3RlZCBmdW5jdGlvbnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJvdGVjdGVkIGRpc3Bvc2VWaWV3QnlJdGVtKGl0ZW06IGFueSwgcmVtb3ZlRnJvbUFycmF5ID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCBmb3VuZFZpZXdJbmRleCA9IHRoaXMuX3ZpZXdzLmZpbmRJbmRleCgodmlldzogQ3JlYXRlZFZpZXcpID0+IHZpZXcuaWQgPT09IGl0ZW1bdGhpcy5kYXRhc2V0SWRQcm9wTmFtZV0pO1xuICAgIGlmIChmb3VuZFZpZXdJbmRleCA+PSAwICYmIGZvdW5kVmlld0luZGV4IGluIHRoaXMuX3ZpZXdzKSB7XG4gICAgICBjb25zdCBleHBhbmRlZFZpZXcgPSB0aGlzLl92aWV3c1tmb3VuZFZpZXdJbmRleF07XG4gICAgICB0aGlzLmRpc3Bvc2VWaWV3KGV4cGFuZGVkVmlldyk7XG4gICAgICBpZiAocmVtb3ZlRnJvbUFycmF5KSB7XG4gICAgICAgIHRoaXMuX3ZpZXdzLnNwbGljZShmb3VuZFZpZXdJbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGRpc3Bvc2VWaWV3KGV4cGFuZGVkVmlldzogQ3JlYXRlZFZpZXcpOiBDcmVhdGVkVmlldyB8IHZvaWQge1xuICAgIGNvbnN0IGNvbXBSZWYgPSBleHBhbmRlZFZpZXc/LmNvbXBvbmVudFJlZjtcbiAgICBpZiAoY29tcFJlZikge1xuICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyhjb21wUmVmLmhvc3RWaWV3KTtcbiAgICAgIGlmIChjb21wUmVmPy5kZXN0cm95KSB7XG4gICAgICAgIGNvbXBSZWYuZGVzdHJveSgpO1xuICAgICAgICBleHBhbmRlZFZpZXcucmVuZGVyZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBleHBhbmRlZFZpZXc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIG5vdGlmeSB0aGUgb25Bc3luY1Jlc3BvbnNlIHdpdGggdGhlIFwiYXJncy5pdGVtXCIgKHJlcXVpcmVkIHByb3BlcnR5KVxuICAgKiB0aGUgcGx1Z2luIHdpbGwgdGhlbiB1c2UgaXRlbSB0byBwb3B1bGF0ZSB0aGUgcm93IGRldGFpbCBwYW5lbCB3aXRoIHRoZSBcInBvc3RUZW1wbGF0ZVwiXG4gICAqIEBwYXJhbSBpdGVtXG4gICAqL1xuICBwcm90ZWN0ZWQgbm90aWZ5VGVtcGxhdGUoaXRlbTogYW55KSB7XG4gICAgaWYgKHRoaXMub25Bc3luY1Jlc3BvbnNlKSB7XG4gICAgICB0aGlzLm9uQXN5bmNSZXNwb25zZS5ub3RpZnkoeyBpdGVtLCBpdGVtRGV0YWlsOiBpdGVtIH0sIG5ldyBTbGlja0V2ZW50RGF0YSgpLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT24gUHJvY2Vzc2luZywgd2Ugd2lsbCBub3RpZnkgdGhlIHBsdWdpbiB3aXRoIHRoZSBuZXcgaXRlbSBkZXRhaWwgb25jZSBiYWNrZW5kIHNlcnZlciBjYWxsIGNvbXBsZXRlc1xuICAgKiBAcGFyYW0gaXRlbVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uUHJvY2Vzc2luZyhpdGVtOiBhbnkpIHtcbiAgICBpZiAoaXRlbSAmJiB0eXBlb2YgdGhpcy5fdXNlclByb2Nlc3NGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbGV0IGF3YWl0ZWRJdGVtRGV0YWlsOiBhbnk7XG4gICAgICBjb25zdCB1c2VyUHJvY2Vzc0ZuID0gdGhpcy5fdXNlclByb2Nlc3NGbihpdGVtKTtcblxuICAgICAgLy8gd2FpdCBmb3IgdGhlIFwidXNlclByb2Nlc3NGblwiLCBvbmNlIHJlc29sdmVkIHdlIHdpbGwgc2F2ZSBpdCBpbnRvIHRoZSBcImNvbGxlY3Rpb25cIlxuICAgICAgY29uc3QgcmVzcG9uc2U6IGFueSB8IGFueVtdID0gYXdhaXQgdXNlclByb2Nlc3NGbjtcblxuICAgICAgaWYgKHRoaXMuZGF0YXNldElkUHJvcE5hbWUgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgYXdhaXRlZEl0ZW1EZXRhaWwgPSByZXNwb25zZTsgLy8gZnJvbSBQcm9taXNlXG4gICAgICB9IGVsc2UgaWYgKChyZXNwb25zZSAmJiByZXNwb25zZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHx8IHJlc3BvbnNlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICBhd2FpdGVkSXRlbURldGFpbCA9IGF3YWl0IGNhc3RPYnNlcnZhYmxlVG9Qcm9taXNlKHRoaXMucnhqcyBhcyBSeEpzRmFjYWRlLCByZXNwb25zZSk7IC8vIGZyb20gQW5ndWxhci1odHRwLWNsaWVudFxuICAgICAgfVxuXG4gICAgICBpZiAoIWF3YWl0ZWRJdGVtRGV0YWlsIHx8ICEodGhpcy5kYXRhc2V0SWRQcm9wTmFtZSBpbiBhd2FpdGVkSXRlbURldGFpbCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbQW5ndWxhci1TbGlja2dyaWRdIGNvdWxkIG5vdCBwcm9jZXNzIHRoZSBSb3cgRGV0YWlsLCB5b3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB5b3VyIFwicHJvY2Vzc1wiIGNhbGxiYWNrXG4gICAgICAgICAgKGEgUHJvbWlzZSBvciBhbiBIdHRwQ2xpZW50IGNhbGwgcmV0dXJuaW5nIGFuIE9ic2VydmFibGUpIHJldHVybnMgYW4gaXRlbSBvYmplY3QgdGhhdCBoYXMgYW4gXCIke3RoaXMuZGF0YXNldElkUHJvcE5hbWV9XCIgcHJvcGVydHlgKTtcbiAgICAgIH1cblxuICAgICAgLy8gbm90aWZ5IHRoZSBwbHVnaW4gd2l0aCB0aGUgbmV3IGl0ZW0gZGV0YWlsc1xuICAgICAgdGhpcy5ub3RpZnlUZW1wbGF0ZShhd2FpdGVkSXRlbURldGFpbCB8fCB7fSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEp1c3QgYmVmb3JlIHRoZSByb3cgZ2V0IGV4cGFuZGVkIG9yIGNvbGxhcHNlZCB3ZSB3aWxsIGRvIHRoZSBmb2xsb3dpbmdcbiAgICogRmlyc3QgZGV0ZXJtaW5lIGlmIHRoZSByb3cgaXMgZXhwYW5kaW5nIG9yIGNvbGxhcHNpbmcsXG4gICAqIGlmIGl0J3MgZXhwYW5kaW5nIHdlIHdpbGwgYWRkIGl0IHRvIG91ciBWaWV3IENvbXBvbmVudHMgcmVmZXJlbmNlIGFycmF5IGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBpdFxuICAgKiBvciBpZiBpdCdzIGNvbGxhcHNpbmcgd2Ugd2lsbCByZW1vdmUgaXQgZnJvbSBvdXIgVmlldyBDb21wb25lbnRzIHJlZmVyZW5jZSBhcnJheVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZU9uQmVmb3JlUm93RGV0YWlsVG9nZ2xlKF9lOiBTbGlja0V2ZW50RGF0YTxPbkJlZm9yZVJvd0RldGFpbFRvZ2dsZUFyZ3M+LCBhcmdzOiB7IGdyaWQ6IFNsaWNrR3JpZDsgaXRlbTogYW55IH0pIHtcbiAgICAvLyBleHBhbmRpbmdcbiAgICBpZiAoYXJncz8uaXRlbT8uX19jb2xsYXBzZWQpIHtcbiAgICAgIC8vIGV4cGFuZGluZyByb3cgZGV0YWlsXG4gICAgICBjb25zdCB2aWV3SW5mbzogQ3JlYXRlZFZpZXcgPSB7XG4gICAgICAgIGlkOiBhcmdzLml0ZW1bdGhpcy5kYXRhc2V0SWRQcm9wTmFtZV0sXG4gICAgICAgIGRhdGFDb250ZXh0OiBhcmdzLml0ZW0sXG4gICAgICAgIHJlbmRlcmVkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgICBjb25zdCBpZFByb3BOYW1lID0gdGhpcy5ncmlkT3B0aW9ucy5kYXRhc2V0SWRQcm9wZXJ0eU5hbWUgfHwgJ2lkJztcbiAgICAgIGFkZFRvQXJyYXlXaGVuTm90RXhpc3RzKHRoaXMuX3ZpZXdzLCB2aWV3SW5mbywgaWRQcm9wTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbGxhcHNpbmcsIHNvIGRpc3Bvc2Ugb2YgdGhlIFZpZXcvQ29tcG9uZW50XG4gICAgICB0aGlzLmRpc3Bvc2VWaWV3QnlJdGVtKGFyZ3MuaXRlbSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZW4gUm93IGNvbWVzIGJhY2sgdG8gVmlld3BvcnQgUmFuZ2UsIHdlIG5lZWQgdG8gcmVkcmF3IHRoZSBWaWV3ICovXG4gIHByb3RlY3RlZCBoYW5kbGVPblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2UoX2U6IFNsaWNrRXZlbnREYXRhPE9uUm93QmFja1RvVmlld3BvcnRSYW5nZUFyZ3M+LCBhcmdzOiBPblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2VBcmdzKSB7XG4gICAgY29uc3Qgdmlld01vZGVsID0gQXJyYXkuZnJvbSh0aGlzLl92aWV3cykuZmluZCgoeCkgPT4geC5pZCA9PT0gYXJncy5yb3dJZCk7XG4gICAgaWYgKHZpZXdNb2RlbCAmJiAhdmlld01vZGVsLnJlbmRlcmVkKSB7XG4gICAgICB0aGlzLnJlZHJhd1ZpZXdDb21wb25lbnQodmlld01vZGVsKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -220,7 +220,6 @@ export const GlobalGridOptions = {
220
220
  panelRows: 1,
221
221
  keyPrefix: '__',
222
222
  useRowClick: false,
223
- useSimpleViewportCalc: true,
224
223
  saveDetailViewOnScroll: false,
225
224
  },
226
225
  rowHeight: 35,
@@ -261,4 +260,4 @@ function pickerHeaderColumnValueExtractor(column, gridOptions) {
261
260
  }
262
261
  return colName;
263
262
  }
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWdyaWQtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9hbmd1bGFyLXNsaWNrZ3JpZC9nbG9iYWwtZ3JpZC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixPQUFPLEVBRVAsWUFBWSxHQUViLE1BQU0sNkJBQTZCLENBQUM7QUFHckMsbUNBQW1DO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUF3QjtJQUNwRCx3QkFBd0IsRUFBRSxJQUFJO0lBQzlCLFFBQVEsRUFBRSxLQUFLO0lBQ2Ysa0JBQWtCLEVBQUUsS0FBSztJQUN6Qix5QkFBeUIsRUFBRSxJQUFJO0lBQy9CLFVBQVUsRUFBRTtRQUNWLHNCQUFzQixFQUFFLElBQUk7UUFDNUIsVUFBVSxFQUFFLElBQUk7UUFDaEIsbUJBQW1CLEVBQUUsR0FBRztRQUN4Qix3QkFBd0IsRUFBRSxRQUFRO1FBQ2xDLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFNBQVMsRUFBRSxHQUFHO1FBQ2QsUUFBUSxFQUFFLEdBQUc7UUFDYixZQUFZLEVBQUUsQ0FBQztLQUNoQjtJQUNELHFCQUFxQixFQUFFLHFCQUFxQjtJQUM1QyxnQkFBZ0IsRUFBRTtRQUNoQixRQUFRLEVBQUUsd0JBQXdCO0tBQ25DO0lBQ0QsWUFBWSxFQUFFO1FBQ1osa0JBQWtCLEVBQUUsS0FBSztRQUN6QixvQkFBb0IsRUFBRSxJQUFJO1FBQzFCLDBCQUEwQixFQUFFLGdDQUFnQztLQUM3RDtJQUNELFFBQVEsRUFBRTtRQUNSLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLGtCQUFrQixFQUFFLEtBQUs7UUFDekIsaUJBQWlCLEVBQUUsS0FBSztLQUN6QjtJQUNELFdBQVcsRUFBRTtRQUNYLGNBQWMs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SUFBSTtRQUMvQix5QkFBeUIsRUFBRSxDQUFDO1FBQzVCLGdDQUFnQyxFQUFFLElBQUk7UUFDdEMsMENBQTBDLEVBQUUsSUFBSTtRQUNoRCwwQ0FBMEMsRUFBRSxFQUFFO0tBQy9DO0lBQ0QsZUFBZSxFQUFFO1FBQ2Ysc0JBQXNCLEVBQUUsQ0FBQztRQUN6Qiw0QkFBNEIsRUFBRSxZQUFZO0tBQ2Q7Q0FDL0IsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxTQUFTLGdDQUFnQyxDQUFDLE1BQWMsRUFBRSxXQUFpQztJQUN6RixJQUFJLE9BQU8sR0FBRyxNQUFNLEVBQUUsaUJBQWlCLElBQUksTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7SUFDOUQsSUFBSSxPQUFPLFlBQVksV0FBVyxJQUFJLE9BQU8sWUFBWSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFFLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDOUMsTUFBTSxvQkFBb0IsR0FBRyxXQUFXLEVBQUUsb0JBQW9CLElBQUksS0FBSyxDQUFDO0lBQ3hFLElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEIsT0FBTyxXQUFXLEdBQUcsb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0lBQ3RELENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDb2x1bW4sXG4gIERlbGltaXRlclR5cGUsXG4gIEV2ZW50TmFtaW5nU3R5bGUsXG4gIEZpbGVUeXBlLFxuICBGaWx0ZXJzLFxuICB0eXBlIEdyaWRPcHRpb24gYXMgR3JpZE9wdGlvblVuaXZlcnNhbCxcbiAgT3BlcmF0b3JUeXBlLFxuICB0eXBlIFRyZWVEYXRhT3B0aW9uLFxufSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9jb21tb24nO1xuaW1wb3J0IHR5cGUgeyBHcmlkT3B0aW9uLCBSb3dEZXRhaWxWaWV3IH0gZnJvbSAnLi9tb2RlbHMvaW5kZXgnO1xuXG4vKiogR2xvYmFsIEdyaWQgT3B0aW9ucyBEZWZhdWx0cyAqL1xuZXhwb3J0IGNvbnN0IEdsb2JhbEdyaWRPcHRpb25zOiBQYXJ0aWFsPEdyaWRPcHRpb24+ID0ge1xuICBhbHdheXNTaG93VmVydGljYWxTY3JvbGw6IHRydWUsXG4gIGF1dG9FZGl0OiBmYWxzZSxcbiAgYXN5bmNFZGl0b3JMb2FkaW5nOiBmYWxzZSxcbiAgYXV0b0ZpdENvbHVtbnNPbkZpcnN0TG9hZDogdHJ1ZSxcbiAgYXV0b1Jlc2l6ZToge1xuICAgIGFwcGx5UmVzaXplVG9Db250YWluZXI6IHRydWUsXG4gICAgYXV0b0hlaWdodDogdHJ1ZSxcbiAgICBhdXRvSGVpZ2h0UmVjYWxjUm93OiAxMDAsXG4gICAgY2FsY3VsYXRlQXZhaWxhYmxlU2l6ZUJ5OiAnd2luZG93JyxcbiAgICBib3R0b21QYWRkaW5nOiAyMCxcbiAgICBtaW5IZWlnaHQ6IDI1MCxcbiAgICBtaW5XaWR0aDogMzAwLFxuICAgIHJpZ2h0UGFkZGluZzogMCxcbiAgfSxcbiAgY2VsbEhpZ2hsaWdodENzc0NsYXNzOiAnc2xpY2stY2VsbC1tb2RpZmllZCcsXG4gIGNoZWNrYm94U2VsZWN0b3I6IHtcbiAgICBjc3NDbGFzczogJ3NsaWNrLWNlbGwtY2hlY2tib3hzZWwnLFxuICB9LFxuICBjb2x1bW5QaWNrZXI6IHtcbiAgICBoaWRlRm9yY2VGaXRCdXR0b246IGZhbHNlLFxuICAgIGhpZGVTeW5jUmVzaXplQnV0dG9uOiB0cnVlLFxuICAgIGhlYWRlckNvbHVtblZhbHVlRXh0cmFjdG9yOiBwaWNrZXJIZWFkZXJDb2x1bW5WYWx1ZUV4dHJhY3RvcixcbiAgfSxcbiAgY2VsbE1lbnU6IHtcbiAgICBhdXRvQWRqdXN0RHJvcDogdHJ1ZSxcbiAgICBhdXRvQWxpZ25TaWRlOiB0cnVlLFxuICAgIGhpZGVDbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICBoaWRlQ29tbWFuZFNlY3Rpb246IGZhbHNlLFxuICAgIGhpZGVPcHRpb25TZWN0aW9uOiBmYWxzZSxcbiAgfSxcbiAgY29udGV4dE1lbnU6IHtcbiAgICBhdXRvQWRqdXN0RHJvcDogdHJ1ZSxcbiAgICBhdXRvQWxpZ25TaWRlOiB0cnVlLFxuICAgIGhpZGVDbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICBoaWRlQ2xlYXJBbGxHcm91cGluZzogZmFsc2UsXG4gICAgaGlkZUNvbGxhcHNlQWxsR3JvdXBzOiBmYWxzZSxcbiAgICBoaWRlQ29tbWFuZFNlY3Rpb246IGZhbHNlLFxuICAgIGhpZGVDb3B5Q2VsbFZhbHVlQ29tbWFuZDogZmFsc2UsXG4gICAgaGlkZUV4cGFuZEFsbEdyb3VwczogZmFsc2UsXG4gICAgaGlkZUV4cG9ydENzdkNvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVFeHBvcnRFeGNlbENvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVFeHBvcnRUZXh0RGVsaW1pdGVkQ29tbWFuZDogdHJ1ZSxcbiAgICBoaWRlTWVudU9uU2Nyb2xsOiB0cnVlLFxuICAgIGhpZGVPcHRpb25TZWN0aW9uOiBmYWxzZSxcbiAgICBpY29uQ29sbGFwc2VBbGxHcm91cHNDb21tYW5kOiAnbWRpIG1kaS1hcnJvdy1jb2xsYXBzZScsXG4gICAgaWNvbkV4cGFuZEFsbEdyb3Vwc0NvbW1hbmQ6ICdtZGkgbWRpLWFycm93LWV4cGFuZCcsXG4gICAgaWNvbkNsZWFyR3JvdXBpbmdDb21tYW5kOiAnbWRpIG1kaS1jbG9zZScsXG4gICAgaWNvbkNvcHlDZWxsVmFsdWVDb21tYW5kOiAnbWRpIG1kaS1jb250ZW50LWNvcHknLFxuICAgIGljb25FeHBvcnRDc3ZDb21tYW5kOiAnbWRpIG1kaS1kb3dubG9hZCcsXG4gICAgaWNvbkV4cG9ydEV4Y2VsQ29tbWFuZDogJ21kaSBtZGktZmlsZS1leGNlbC1vdXRsaW5lJyxcbiAgICBpY29uRXhwb3J0VGV4dERlbGltaXRlZENvbW1hbmQ6ICdtZGkgbWRpLWRvd25sb2FkJyxcbiAgICBzaG93QnVsbGV0V2hlbkljb25NaXNzaW5nOiB0cnVlLFxuICAgIHN1Ykl0ZW1DaGV2cm9uQ2xhc3M6ICdtZGkgbWRpLWNoZXZyb24tZG93biBtZGktcm90YXRlLTI3MCcsXG4gIH0sXG4gIGN1c3RvbUZvb3Rlck9wdGlvbnM6IHtcbiAgICBkYXRlRm9ybWF0OiAnWVlZWS1NTS1ERCwgaGg6bW0gYScsXG4gICAgaGlkZVJvd1NlbGVjdGlvbkNvdW50OiBmYWxzZSxcbiAgICBoaWRlVG90YWxJdGVtQ291bnQ6IGZhbHNlLFxuICAgIGhpZGVMYXN0VXBkYXRlVGltZXN0YW1wOiB0cnVlLFxuICAgIGZvb3RlckhlaWdodDogMjUsXG4gICAgbGVmdENvbnRhaW5lckNsYXNzOiAnY29sLXhzLTEyIGNvbC1zbS01JyxcbiAgICByaWdodENvbnRhaW5lckNsYXNzOiAnY29sLXhzLTYgY29sLXNtLTcnLFxuICAgIG1ldHJpY1NlcGFyYXRvcjogJ3wnLFxuICAgIG1ldHJpY1RleHRzOiB7XG4gICAgICBpdGVtczogJ2l0ZW1zJyxcbiAgICAgIGl0ZW1zS2V5OiAnSVRFTVMnLFxuICAgICAgaXRlbXNTZWxlY3RlZDogJ2l0ZW1zIHNlbGVjdGVkJyxcbiAgICAgIGl0ZW1zU2VsZWN0ZWRLZXk6ICdJVEVNU19TRUxFQ1RFRCcsXG4gICAgICBvZjogJ29mJyxcbiAgICAgIG9mS2V5OiAnT0YnLFxuICAgIH0sXG4gIH0sXG4gIGRhdGFWaWV3OiB7XG4gICAgLy8gd2hlbiBlbmFibGVkLCB0aGlzIHdpbGwgcHJlc2VydmUgdGhlIHJvdyBzZWxlY3Rpb24gZXZlbiBhZnRlciBmaWx0ZXJpbmcvc29ydGluZy9ncm91cGluZ1xuICAgIHN5bmNHcmlkU2VsZWN0aW9uOiB7XG4gICAgICBwcmVzZXJ2ZUhpZGRlbjogZmFsc2UsXG4gICAgICBwcmVzZXJ2ZUhpZGRlbk9uU2VsZWN0aW9uQ2hhbmdlOiB0cnVlLFxuICAgIH0sXG4gICAgc3luY0dyaWRTZWxlY3Rpb25XaXRoQmFja2VuZFNlcnZpY2U6IGZhbHNlLCAvLyBidXQgZGlzYWJsZSBpdCB3aGVuIHVzaW5nIGJhY2tlbmQgc2VydmljZXNcbiAgfSxcbiAgZGF0YXNldElkUHJvcGVydHlOYW1lOiAnaWQnLFxuICBkZWZhdWx0RmlsdGVyOiBGaWx0ZXJzLmlucHV0LFxuICBkZWZhdWx0QmFja2VuZFNlcnZpY2VGaWx0ZXJUeXBpbmdEZWJvdW5jZTogNTAwLFxuICBkZWZhdWx0Q29sdW1uU29ydEZpZWxkSWQ6ICdpZCcsXG4gIGRlZmF1bHRGaWx0ZXJQbGFjZWhvbGRlcjogJ/CflI7vuI4nLFxuICBkZWZhdWx0RmlsdGVyUmFuZ2VPcGVyYXRvcjogT3BlcmF0b3JUeXBlLnJhbmdlSW5jbHVzaXZlLFxuICBlZGl0YWJsZTogZmFsc2UsXG4gIGVuYWJsZUF1dG9SZXNpemU6IHRydWUsXG4gIGVuYWJsZUF1dG9TaXplQ29sdW1uczogdHJ1ZSxcbiAgZW5hYmxlQ2VsbE5hdmlnYXRpb246IGZhbHNlLFxuICBlbmFibGVDb2x1bW5QaWNrZXI6IHRydWUsXG4gIGVuYWJsZUNvbHVtblJlb3JkZXI6IHRydWUsXG4gIGVuYWJsZUNvbHVtblJlc2l6ZU9uRG91YmxlQ2xpY2s6IHRydWUsXG4gIGVuYWJsZUNvbnRleHRNZW51OiB0cnVlLFxuICBlbmFibGVFeGNlbEV4cG9ydDogZmFsc2UsXG4gIGVuYWJsZVRleHRFeHBvcnQ6IGZhbHNlLCAvLyBDU1YvVGV4dCB3aXRoIFRhYiBEZWxpbWl0ZWRcbiAgZW5hYmxlRmlsdGVyVHJpbVdoaXRlU3BhY2U6IGZhbHNlLCAvLyBkbyB3ZSB3YW50IHRvIHRyaW0gd2hpdGUgc3BhY2VzIG9uIGFsbCBGaWx0ZXJzP1xuICBlbmFibGVHcmlkTWVudTogdHJ1ZSxcbiAgZW5hYmxlSGVhZGVyTWVudTogdHJ1ZSxcbiAgZW5hYmxlRW1wdHlEYXRhV2FybmluZ01lc3NhZ2U6IHRydWUsXG4gIGVtcHR5RGF0YVdhcm5pbmc6IHtcbiAgICBjbGFzc05hbWU6ICdzbGljay1lbXB0eS1kYXRhLXdhcm5pbmcnLFxuICAgIG1lc3NhZ2U6ICdObyBkYXRhIHRvIGRpc3BsYXkuJyxcbiAgICBtZXNzYWdlS2V5OiAnRU1QVFlfREFUQV9XQVJOSU5HX01FU1NBR0UnLFxuICAgIGhpZGVGcm96ZW5MZWZ0V2FybmluZzogZmFsc2UsXG4gICAgaGlkZUZyb3plblJpZ2h0V2FybmluZzogZmFsc2UsXG4gICAgbGVmdFZpZXdwb3J0TWFyZ2luTGVmdDogJzQwJScsXG4gICAgcmlnaHRWaWV3cG9ydE1hcmdpbkxlZnQ6ICc0MCUnLFxuICAgIGZyb3plbkxlZnRWaWV3cG9ydE1hcmdpbkxlZnQ6ICcwcHgnLFxuICAgIGZyb3plblJpZ2h0Vmlld3BvcnRNYXJnaW5MZWZ0OiAnNDAlJyxcbiAgfSxcbiAgZW5hYmxlTW91c2VIb3ZlckhpZ2hsaWdodFJvdzogdHJ1ZSxcbiAgZW5hYmxlU29ydGluZzogdHJ1ZSxcbiAgZW5hYmxlVGV4dFNlbGVjdGlvbk9uQ2VsbHM6IHRydWUsXG4gIGV2ZW50TmFtaW5nU3R5bGU6IEV2ZW50TmFtaW5nU3R5bGUuY2FtZWxDYXNlLFxuICBleHBsaWNpdEluaXRpYWxpemF0aW9uOiB0cnVlLFxuICBleGNlbEV4cG9ydE9wdGlvbnM6IHtcbiAgICBhZGRHcm91cEluZGVudGF0aW9uOiB0cnVlLFxuICAgIGV4cG9ydFdpdGhGb3JtYXR0ZXI6IGZhbHNlLFxuICAgIGZpbGVuYW1lOiAnZXhwb3J0JyxcbiAgICBmb3JtYXQ6IEZpbGVUeXBlLnhsc3gsXG4gICAgZ3JvdXBpbmdDb2x1bW5IZWFkZXJUaXRsZTogJ0dyb3VwIEJ5JyxcbiAgICBncm91cENvbGxhcHNlZFN5bWJvbDogJ+KunicsXG4gICAgZ3JvdXBFeHBhbmRlZFN5bWJvbDogJ+KunycsXG4gICAgZ3JvdXBpbmdBZ2dyZWdhdG9yUm93VGV4dDogJycsXG4gICAgc2FuaXRpemVEYXRhRXhwb3J0OiBmYWxzZSxcbiAgfSxcbiAgdGV4dEV4cG9ydE9wdGlvbnM6IHtcbiAgICBkZWxpbWl0ZXI6IERlbGltaXRlclR5cGUuY29tbWEsXG4gICAgZXhwb3J0V2l0aEZvcm1hdHRlcjogZmFsc2UsXG4gICAgZmlsZW5hbWU6ICdleHBvcnQnLFxuICAgIGZvcm1hdDogRmlsZVR5cGUuY3N2LFxuICAgIGdyb3VwaW5nQ29sdW1uSGVhZGVyVGl0bGU6ICdHcm91cCBCeScsXG4gICAgZ3JvdXBpbmdBZ2dyZWdhdG9yUm93VGV4dDogJycsXG4gICAgc2FuaXRpemVEYXRhRXhwb3J0OiBmYWxzZSxcbiAgICB1c2VVdGY4V2l0aEJvbTogdHJ1ZSxcbiAgfSxcbiAgZmlsdGVyVHlwaW5nRGVib3VuY2U6IDAsXG4gIGZvcmNlRml0Q29sdW1uczogZmFsc2UsXG4gIGZyb3plbkhlYWRlcldpZHRoQ2FsY0RpZmZlcmVudGlhbDogMCxcbiAgZ3JpZE1lbnU6IHtcbiAgICBkcm9wU2lkZTogJ2xlZnQnLFxuICAgIGNvbW1hbmRMYWJlbHM6IHtcbiAgICAgIGNsZWFyQWxsRmlsdGVyc0NvbW1hbmRLZXk6ICdDTEVBUl9BTExfRklMVEVSUycsXG4gICAgICBjbGVhckFsbFNvcnRpbmdDb21tYW5kS2V5OiAnQ0xFQVJfQUxMX1NPUlRJTkcnLFxuICAgICAgY2xlYXJGcm96ZW5Db2x1bW5zQ29tbWFuZEtleTogJ0NMRUFSX1BJTk5JTkcnLFxuICAgICAgZXhwb3J0Q3N2Q29tbWFuZEtleTogJ0VYUE9SVF9UT19DU1YnLFxuICAgICAgZXhwb3J0RXhjZWxDb21tYW5kS2V5OiAnRVhQT1JUX1RPX0VYQ0VMJyxcbiAgICAgIGV4cG9ydFRleHREZWxpbWl0ZWRDb21tYW5kS2V5OiAnRVhQT1JUX1RPX1RBQl9ERUxJTUlURUQnLFxuICAgICAgcmVmcmVzaERhdGFzZXRDb21tYW5kS2V5OiAnUkVGUkVTSF9EQVRBU0VUJyxcbiAgICAgIHRvZ2dsZURhcmtNb2RlQ29tbWFuZEtleTogJ1RPR0dMRV9EQVJLX01PREUnLFxuICAgICAgdG9nZ2xlRmlsdGVyQ29tbWFuZEtleTogJ1RPR0dMRV9GSUxURVJfUk9XJyxcbiAgICAgIHRvZ2dsZVByZUhlYWRlckNvbW1hbmRLZXk6ICdUT0dHTEVfUFJFX0hFQURFUl9ST1cnLFxuICAgIH0sXG4gICAgaGlkZUNsZWFyQWxsRmlsdGVyc0NvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVDbGVhckFsbFNvcnRpbmdDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlQ2xlYXJGcm96ZW5Db2x1bW5zQ29tbWFuZDogdHJ1ZSwgLy8gb3B0LWluIGNvbW1hbmRcbiAgICBoaWRlRXhwb3J0Q3N2Q29tbWFuZDogZmFsc2UsXG4gICAgaGlkZUV4cG9ydEV4Y2VsQ29tbWFuZDogZmFsc2UsXG4gICAgaGlkZUV4cG9ydFRleHREZWxpbWl0ZWRDb21tYW5kOiB0cnVlLFxuICAgIGhpZGVGb3JjZUZpdEJ1dHRvbjogZmFsc2UsXG4gICAgaGlkZVJlZnJlc2hEYXRhc2V0Q29tbWFuZDogZmFsc2UsXG4gICAgaGlkZVN5bmNSZXNpemVCdXR0b246IHRydWUsXG4gICAgaGlkZVRvZ2dsZURhcmtNb2RlQ29tbWFuZDogdHJ1ZSxcbiAgICBoaWRlVG9nZ2xlRmlsdGVyQ29tbWFuZDogZmFsc2UsXG4gICAgaGlkZVRvZ2dsZVByZUhlYWRlckNvbW1hbmQ6IGZhbHNlLFxuICAgIGljb25Dc3NDbGFzczogJ21kaSBtZGktbWVudScsXG4gICAgaWNvbkNsZWFyQWxsRmlsdGVyc0NvbW1hbmQ6ICdtZGkgbWRpLWZpbHRlci1yZW1vdmUtb3V0bGluZScsXG4gICAgaWNvbkNsZWFyQWxsU29ydGluZ0NvbW1hbmQ6ICdtZGkgbWRpLXNvcnQtdmFyaWFudC1vZmYnLFxuICAgIGljb25DbGVhckZyb3plbkNvbHVtbnNDb21tYW5kOiAnbWRpIG1kaS1waW4tb2ZmLW91dGxpbmUnLFxuICAgIGljb25FeHBvcnRDc3ZDb21tYW5kOiAnbWRpIG1kaS1kb3dubG9hZCcsXG4gICAgaWNvbkV4cG9ydEV4Y2VsQ29tbWFuZDogJ21kaSBtZGktZmlsZS1leGNlbC1vdXRsaW5lJyxcbiAgICBpY29uRXhwb3J0VGV4dERlbGltaXRlZENvbW1hbmQ6ICdtZGkgbWRpLWRvd25sb2FkJyxcbiAgICBpY29uUmVmcmVzaERhdGFzZXRDb21tYW5kOiAnbWRpIG1kaS1zeW5jJyxcbiAgICBpY29uVG9nZ2xlRGFya01vZGVDb21tYW5kOiAnbWRpIG1kaS1icmlnaHRuZXNzLTQnLFxuICAgIGljb25Ub2dnbGVGaWx0ZXJDb21tYW5kOiAnbWRpIG1kaS1mbGlwLXZlcnRpY2FsJyxcbiAgICBpY29uVG9nZ2xlUHJlSGVhZGVyQ29tbWFuZDogJ21kaSBtZGktZmxpcC12ZXJ0aWNhbCcsXG4gICAgbWVudVdpZHRoOiAxNixcbiAgICByZXNpemVPblNob3dIZWFkZXJSb3c6IHRydWUsXG4gICAgc3ViSXRlbUNoZXZyb25DbGFzczogJ21kaSBtZGktY2hldnJvbi1kb3duIG1kaS1yb3RhdGUtMjcwJyxcbiAgICBoZWFkZXJDb2x1bW5WYWx1ZUV4dHJhY3RvcjogcGlja2VySGVhZGVyQ29sdW1uVmFsdWVFeHRyYWN0b3IsXG4gIH0sXG4gIGhlYWRlck1lbnU6IHtcbiAgICBhdXRvQWxpZ246IHRydWUsXG4gICAgYXV0b0FsaWduT2Zmc2V0OiAxMixcbiAgICBtaW5XaWR0aDogMTQwLFxuICAgIGljb25DbGVhckZpbHRlckNvbW1hbmQ6ICdtZGkgbWRpLWZpbHRlci1yZW1vdmUtb3V0bGluZScsXG4gICAgaWNvbkNsZWFyU29ydENvbW1hbmQ6ICdtZGkgbWRpLXNvcnQtdmFyaWFudC1vZmYnLFxuICAgIGljb25GcmVlemVDb2x1bW5zOiAnbWRpIG1kaS1waW4tb3V0bGluZScsXG4gICAgaWNvblNvcnRBc2NDb21tYW5kOiAnbWRpIG1kaS1zb3J0LWFzY2VuZGluZycsXG4gICAgaWNvblNvcnREZXNjQ29tbWFuZDogJ21kaSBtZGktc29ydC1kZXNjZW5kaW5nJyxcbiAgICBpY29uQ29sdW1uSGlkZUNvbW1hbmQ6ICdtZGkgbWRpLWNsb3NlJyxcbiAgICBpY29uQ29sdW1uUmVzaXplQnlDb250ZW50Q29tbWFuZDogJ21kaSBtZGktYXJyb3ctZXhwYW5kLWhvcml6b250YWwnLFxuICAgIGhpZGVDb2x1bW5SZXNpemVCeUNvbnRlbnRDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlQ29sdW1uSGlkZUNvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVDbGVhckZpbHRlckNvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVDbGVhclNvcnRDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlRnJlZXplQ29sdW1uc0NvbW1hbmQ6IHRydWUsIC8vIG9wdC1pbiBjb21tYW5kXG4gICAgaGlkZVNvcnRDb21tYW5kczogZmFsc2UsXG4gICAgc3ViSXRlbUNoZXZyb25DbGFzczogJ21kaSBtZGktY2hldnJvbi1kb3duIG1kaS1yb3RhdGUtMjcwJyxcbiAgfSxcbiAgaGVhZGVyUm93SGVpZ2h0OiAzNSxcbiAgbXVsdGlDb2x1bW5Tb3J0OiB0cnVlLFxuICBudW1iZXJlZE11bHRpQ29sdW1uU29ydDogdHJ1ZSxcbiAgdHJpc3RhdGVNdWx0aUNvbHVtblNvcnQ6IGZhbHNlLFxuICBzb3J0Q29sTnVtYmVySW5TZXBhcmF0ZVNwYW46IHRydWUsXG4gIHN1cHByZXNzQWN0aXZlQ2VsbENoYW5nZU9uRWRpdDogZmFsc2UsXG4gIHBhZ2luYXRpb246IHtcbiAgICBwYWdlU2l6ZXM6IFsxMCwgMTUsIDIwLCAyNSwgMzAsIDQwLCA1MCwgNzUsIDEwMF0sXG4gICAgcGFnZVNpemU6IDI1LFxuICAgIHRvdGFsSXRlbXM6IDAsXG4gIH0sXG4gIC8vIHRlY2huaWNhbGx5IHNwZWFraW5nIHRoZSBSb3cgRGV0YWlsIHJlcXVpcmVzIHRoZSBwcm9jZXNzICYgdmlld0NvbXBvbmVudCBidXQgd2UnbGwgaWdub3JlIGl0IGp1c3QgdG8gc2V0IGNlcnRhaW4gb3B0aW9uc1xuICByb3dEZXRhaWxWaWV3OiB7XG4gICAgY29sbGFwc2VBbGxPblNvcnQ6IHRydWUsXG4gICAgY3NzQ2xhc3M6ICdkZXRhaWwtdmlldy10b2dnbGUnLFxuICAgIHBhbmVsUm93czogMSxcbiAgICBrZXlQcmVmaXg6ICdfXycsXG4gICAgdXNlUm93Q2xpY2s6IGZhbHNlLFxuICAgIHVzZVNpbXBsZVZpZXdwb3J0Q2FsYzogdHJ1ZSxcbiAgICBzYXZlRGV0YWlsVmlld09uU2Nyb2xsOiBmYWxzZSxcbiAgfSBhcyBSb3dEZXRhaWxWaWV3LFxuICByb3dIZWlnaHQ6IDM1LFxuICB0b3BQYW5lbEhlaWdodDogMzUsXG4gIHByZUhlYWRlclBhbmVsV2lkdGg6ICcxMDAlJywgLy8gbW9zdGx5IHVzZWZ1bCBmb3IgRHJhZ2dhYmxlIEdyb3VwaW5nIGRyb3B6b25lIHRvIHRha2UgZnVsbCB3aWR0aFxuICB0cmFuc2xhdGlvbk5hbWVzcGFjZVNlcGFyYXRvcjogJzonLFxuICByZXNldEZpbHRlclNlYXJjaFZhbHVlQWZ0ZXJPbkJlZm9yZUNhbmNlbGxhdGlvbjogdHJ1ZSxcbiAgcmVzaXplQnlDb250ZW50T25seU9uRmlyc3RMb2FkOiB0cnVlLFxuICByZXNpemVCeUNvbnRlbnRPcHRpb25zOiB7XG4gICAgYWx3YXlzUmVjYWxjdWxhdGVDb2x1bW5XaWR0aDogZmFsc2UsXG4gICAgY2VsbENoYXJXaWR0aEluUHg6IDcuOCxcbiAgICBjZWxsUGFkZGluZ1dpZHRoSW5QeDogMTQsXG4gICAgZGVmYXVsdFJhdGlvRm9yU3RyaW5nVHlwZTogMC44OCxcbiAgICBmb3JtYXR0ZXJQYWRkaW5nV2lkdGhJblB4OiAwLFxuICAgIG1heEl0ZW1Ub0luc3BlY3RDZWxsQ29udGVudFdpZHRoOiAxMDAwLFxuICAgIG1heEl0ZW1Ub0luc3BlY3RTaW5nbGVDb2x1bW5XaWR0aEJ5Q29udGVudDogNTAwMCxcbiAgICB3aWR0aFRvUmVtb3ZlRnJvbUV4Y2VlZGVkV2lkdGhSZWFkanVzdG1lbnQ6IDUwLFxuICB9LFxuICB0cmVlRGF0YU9wdGlvbnM6IHtcbiAgICBleHBvcnRJbmRlbnRNYXJnaW5MZWZ0OiA1LFxuICAgIGV4cG9ydEluZGVudGF0aW9uTGVhZGluZ0NoYXI6ICfNj82PzY/Nj82PzY/Nj82PzY/CtycsXG4gIH0gYXMgdW5rbm93biBhcyBUcmVlRGF0YU9wdGlvbixcbn07XG5cbi8qKlxuICogVmFsdWUgRXh0cmFjdG9yIGZvciBib3RoIENvbHVtblBpY2tlciAmIEdyaWRNZW51IFBpY2tlclxuICogd2hlbiB1c2luZyBDb2x1bW4gSGVhZGVyIEdyb3VwaW5nLCB3ZSdsbCBwcmVmaXggdGhlIGNvbHVtbiBncm91cCB0aXRsZVxuICogZWxzZSB3ZSdsbCBzaW1wbHkgcmV0dXJuIHRoZSBjb2x1bW4gbmFtZSB0aXRsZVxuICovXG5mdW5jdGlvbiBwaWNrZXJIZWFkZXJDb2x1bW5WYWx1ZUV4dHJhY3Rvcihjb2x1bW46IENvbHVtbiwgZ3JpZE9wdGlvbnM/OiBHcmlkT3B0aW9uVW5pdmVyc2FsKSB7XG4gIGxldCBjb2xOYW1lID0gY29sdW1uPy5jb2x1bW5QaWNrZXJMYWJlbCA/PyBjb2x1bW4/Lm5hbWUgPz8gJyc7XG4gIGlmIChjb2xOYW1lIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgY29sTmFtZSBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpIHtcbiAgICBjb2xOYW1lID0gY29sTmFtZS50ZXh0Q29udGVudCB8fCAnJztcbiAgfVxuICBjb25zdCBoZWFkZXJHcm91cCA9IGNvbHVtbj8uY29sdW1uR3JvdXAgfHwgJyc7XG4gIGNvbnN0IGNvbHVtbkdyb3VwU2VwYXJhdG9yID0gZ3JpZE9wdGlvbnM/LmNvbHVtbkdyb3VwU2VwYXJhdG9yID8/ICcgLSAnO1xuICBpZiAoaGVhZGVyR3JvdXApIHtcbiAgICByZXR1cm4gaGVhZGVyR3JvdXAgKyBjb2x1bW5Hcm91cFNlcGFyYXRvciArIGNvbE5hbWU7XG4gIH1cbiAgcmV0dXJuIGNvbE5hbWU7XG59XG4iXX0=
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWdyaWQtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9hbmd1bGFyLXNsaWNrZ3JpZC9nbG9iYWwtZ3JpZC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixPQUFPLEVBRVAsWUFBWSxHQUViLE1BQU0sNkJBQTZCLENBQUM7QUFHckMsbUNBQW1DO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUF3QjtJQUNwRCx3QkFBd0IsRUFBRSxJQUFJO0lBQzlCLFFBQVEsRUFBRSxLQUFLO0lBQ2Ysa0JBQWtCLEVBQUUsS0FBSztJQUN6Qix5QkFBeUIsRUFBRSxJQUFJO0lBQy9CLFVBQVUsRUFBRTtRQUNWLHNCQUFzQixFQUFFLElBQUk7UUFDNUIsVUFBVSxFQUFFLElBQUk7UUFDaEIsbUJBQW1CLEVBQUUsR0FBRztRQUN4Qix3QkFBd0IsRUFBRSxRQUFRO1FBQ2xDLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFNBQVMsRUFBRSxHQUFHO1FBQ2QsUUFBUSxFQUFFLEdBQUc7UUFDYixZQUFZLEVBQUUsQ0FBQztLQUNoQjtJQUNELHFCQUFxQixFQUFFLHFCQUFxQjtJQUM1QyxnQkFBZ0IsRUFBRTtRQUNoQixRQUFRLEVBQUUsd0JBQXdCO0tBQ25DO0lBQ0QsWUFBWSxFQUFFO1FBQ1osa0JBQWtCLEVBQUUsS0FBSztRQUN6QixvQkFBb0IsRUFBRSxJQUFJO1FBQzFCLDBCQUEwQixFQUFFLGdDQUFnQztLQUM3RDtJQUNELFFBQVEsRUFBRTtRQUNSLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLGtCQUFrQixFQUFFLEtBQUs7UUFDekIsaUJBQWlCLEVBQUUsS0FBSztLQUN6QjtJQUNELFdBQVcsRUFBRTtRQUNYLGNBQWMs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Q0FBQztRQUM1QixnQ0FBZ0MsRUFBRSxJQUFJO1FBQ3RDLDBDQUEwQyxFQUFFLElBQUk7UUFDaEQsMENBQTBDLEVBQUUsRUFBRTtLQUMvQztJQUNELGVBQWUsRUFBRTtRQUNmLHNCQUFzQixFQUFFLENBQUM7UUFDekIsNEJBQTRCLEVBQUUsWUFBWTtLQUNkO0NBQy9CLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsU0FBUyxnQ0FBZ0MsQ0FBQyxNQUFjLEVBQUUsV0FBaUM7SUFDekYsSUFBSSxPQUFPLEdBQUcsTUFBTSxFQUFFLGlCQUFpQixJQUFJLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzlELElBQUksT0FBTyxZQUFZLFdBQVcsSUFBSSxPQUFPLFlBQVksZ0JBQWdCLEVBQUUsQ0FBQztRQUMxRSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0sRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO0lBQzlDLE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxFQUFFLG9CQUFvQixJQUFJLEtBQUssQ0FBQztJQUN4RSxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sV0FBVyxHQUFHLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztJQUN0RCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ29sdW1uLFxuICBEZWxpbWl0ZXJUeXBlLFxuICBFdmVudE5hbWluZ1N0eWxlLFxuICBGaWxlVHlwZSxcbiAgRmlsdGVycyxcbiAgdHlwZSBHcmlkT3B0aW9uIGFzIEdyaWRPcHRpb25Vbml2ZXJzYWwsXG4gIE9wZXJhdG9yVHlwZSxcbiAgdHlwZSBUcmVlRGF0YU9wdGlvbixcbn0gZnJvbSAnQHNsaWNrZ3JpZC11bml2ZXJzYWwvY29tbW9uJztcbmltcG9ydCB0eXBlIHsgR3JpZE9wdGlvbiwgUm93RGV0YWlsVmlldyB9IGZyb20gJy4vbW9kZWxzL2luZGV4JztcblxuLyoqIEdsb2JhbCBHcmlkIE9wdGlvbnMgRGVmYXVsdHMgKi9cbmV4cG9ydCBjb25zdCBHbG9iYWxHcmlkT3B0aW9uczogUGFydGlhbDxHcmlkT3B0aW9uPiA9IHtcbiAgYWx3YXlzU2hvd1ZlcnRpY2FsU2Nyb2xsOiB0cnVlLFxuICBhdXRvRWRpdDogZmFsc2UsXG4gIGFzeW5jRWRpdG9yTG9hZGluZzogZmFsc2UsXG4gIGF1dG9GaXRDb2x1bW5zT25GaXJzdExvYWQ6IHRydWUsXG4gIGF1dG9SZXNpemU6IHtcbiAgICBhcHBseVJlc2l6ZVRvQ29udGFpbmVyOiB0cnVlLFxuICAgIGF1dG9IZWlnaHQ6IHRydWUsXG4gICAgYXV0b0hlaWdodFJlY2FsY1JvdzogMTAwLFxuICAgIGNhbGN1bGF0ZUF2YWlsYWJsZVNpemVCeTogJ3dpbmRvdycsXG4gICAgYm90dG9tUGFkZGluZzogMjAsXG4gICAgbWluSGVpZ2h0OiAyNTAsXG4gICAgbWluV2lkdGg6IDMwMCxcbiAgICByaWdodFBhZGRpbmc6IDAsXG4gIH0sXG4gIGNlbGxIaWdobGlnaHRDc3NDbGFzczogJ3NsaWNrLWNlbGwtbW9kaWZpZWQnLFxuICBjaGVja2JveFNlbGVjdG9yOiB7XG4gICAgY3NzQ2xhc3M6ICdzbGljay1jZWxsLWNoZWNrYm94c2VsJyxcbiAgfSxcbiAgY29sdW1uUGlja2VyOiB7XG4gICAgaGlkZUZvcmNlRml0QnV0dG9uOiBmYWxzZSxcbiAgICBoaWRlU3luY1Jlc2l6ZUJ1dHRvbjogdHJ1ZSxcbiAgICBoZWFkZXJDb2x1bW5WYWx1ZUV4dHJhY3RvcjogcGlja2VySGVhZGVyQ29sdW1uVmFsdWVFeHRyYWN0b3IsXG4gIH0sXG4gIGNlbGxNZW51OiB7XG4gICAgYXV0b0FkanVzdERyb3A6IHRydWUsXG4gICAgYXV0b0FsaWduU2lkZTogdHJ1ZSxcbiAgICBoaWRlQ2xvc2VCdXR0b246IHRydWUsXG4gICAgaGlkZUNvbW1hbmRTZWN0aW9uOiBmYWxzZSxcbiAgICBoaWRlT3B0aW9uU2VjdGlvbjogZmFsc2UsXG4gIH0sXG4gIGNvbnRleHRNZW51OiB7XG4gICAgYXV0b0FkanVzdERyb3A6IHRydWUsXG4gICAgYXV0b0FsaWduU2lkZTogdHJ1ZSxcbiAgICBoaWRlQ2xvc2VCdXR0b246IHRydWUsXG4gICAgaGlkZUNsZWFyQWxsR3JvdXBpbmc6IGZhbHNlLFxuICAgIGhpZGVDb2xsYXBzZUFsbEdyb3VwczogZmFsc2UsXG4gICAgaGlkZUNvbW1hbmRTZWN0aW9uOiBmYWxzZSxcbiAgICBoaWRlQ29weUNlbGxWYWx1ZUNvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVFeHBhbmRBbGxHcm91cHM6IGZhbHNlLFxuICAgIGhpZGVFeHBvcnRDc3ZDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlRXhwb3J0RXhjZWxDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlRXhwb3J0VGV4dERlbGltaXRlZENvbW1hbmQ6IHRydWUsXG4gICAgaGlkZU1lbnVPblNjcm9sbDogdHJ1ZSxcbiAgICBoaWRlT3B0aW9uU2VjdGlvbjogZmFsc2UsXG4gICAgaWNvbkNvbGxhcHNlQWxsR3JvdXBzQ29tbWFuZDogJ21kaSBtZGktYXJyb3ctY29sbGFwc2UnLFxuICAgIGljb25FeHBhbmRBbGxHcm91cHNDb21tYW5kOiAnbWRpIG1kaS1hcnJvdy1leHBhbmQnLFxuICAgIGljb25DbGVhckdyb3VwaW5nQ29tbWFuZDogJ21kaSBtZGktY2xvc2UnLFxuICAgIGljb25Db3B5Q2VsbFZhbHVlQ29tbWFuZDogJ21kaSBtZGktY29udGVudC1jb3B5JyxcbiAgICBpY29uRXhwb3J0Q3N2Q29tbWFuZDogJ21kaSBtZGktZG93bmxvYWQnLFxuICAgIGljb25FeHBvcnRFeGNlbENvbW1hbmQ6ICdtZGkgbWRpLWZpbGUtZXhjZWwtb3V0bGluZScsXG4gICAgaWNvbkV4cG9ydFRleHREZWxpbWl0ZWRDb21tYW5kOiAnbWRpIG1kaS1kb3dubG9hZCcsXG4gICAgc2hvd0J1bGxldFdoZW5JY29uTWlzc2luZzogdHJ1ZSxcbiAgICBzdWJJdGVtQ2hldnJvbkNsYXNzOiAnbWRpIG1kaS1jaGV2cm9uLWRvd24gbWRpLXJvdGF0ZS0yNzAnLFxuICB9LFxuICBjdXN0b21Gb290ZXJPcHRpb25zOiB7XG4gICAgZGF0ZUZvcm1hdDogJ1lZWVktTU0tREQsIGhoOm1tIGEnLFxuICAgIGhpZGVSb3dTZWxlY3Rpb25Db3VudDogZmFsc2UsXG4gICAgaGlkZVRvdGFsSXRlbUNvdW50OiBmYWxzZSxcbiAgICBoaWRlTGFzdFVwZGF0ZVRpbWVzdGFtcDogdHJ1ZSxcbiAgICBmb290ZXJIZWlnaHQ6IDI1LFxuICAgIGxlZnRDb250YWluZXJDbGFzczogJ2NvbC14cy0xMiBjb2wtc20tNScsXG4gICAgcmlnaHRDb250YWluZXJDbGFzczogJ2NvbC14cy02IGNvbC1zbS03JyxcbiAgICBtZXRyaWNTZXBhcmF0b3I6ICd8JyxcbiAgICBtZXRyaWNUZXh0czoge1xuICAgICAgaXRlbXM6ICdpdGVtcycsXG4gICAgICBpdGVtc0tleTogJ0lURU1TJyxcbiAgICAgIGl0ZW1zU2VsZWN0ZWQ6ICdpdGVtcyBzZWxlY3RlZCcsXG4gICAgICBpdGVtc1NlbGVjdGVkS2V5OiAnSVRFTVNfU0VMRUNURUQnLFxuICAgICAgb2Y6ICdvZicsXG4gICAgICBvZktleTogJ09GJyxcbiAgICB9LFxuICB9LFxuICBkYXRhVmlldzoge1xuICAgIC8vIHdoZW4gZW5hYmxlZCwgdGhpcyB3aWxsIHByZXNlcnZlIHRoZSByb3cgc2VsZWN0aW9uIGV2ZW4gYWZ0ZXIgZmlsdGVyaW5nL3NvcnRpbmcvZ3JvdXBpbmdcbiAgICBzeW5jR3JpZFNlbGVjdGlvbjoge1xuICAgICAgcHJlc2VydmVIaWRkZW46IGZhbHNlLFxuICAgICAgcHJlc2VydmVIaWRkZW5PblNlbGVjdGlvbkNoYW5nZTogdHJ1ZSxcbiAgICB9LFxuICAgIHN5bmNHcmlkU2VsZWN0aW9uV2l0aEJhY2tlbmRTZXJ2aWNlOiBmYWxzZSwgLy8gYnV0IGRpc2FibGUgaXQgd2hlbiB1c2luZyBiYWNrZW5kIHNlcnZpY2VzXG4gIH0sXG4gIGRhdGFzZXRJZFByb3BlcnR5TmFtZTogJ2lkJyxcbiAgZGVmYXVsdEZpbHRlcjogRmlsdGVycy5pbnB1dCxcbiAgZGVmYXVsdEJhY2tlbmRTZXJ2aWNlRmlsdGVyVHlwaW5nRGVib3VuY2U6IDUwMCxcbiAgZGVmYXVsdENvbHVtblNvcnRGaWVsZElkOiAnaWQnLFxuICBkZWZhdWx0RmlsdGVyUGxhY2Vob2xkZXI6ICfwn5SO77iOJyxcbiAgZGVmYXVsdEZpbHRlclJhbmdlT3BlcmF0b3I6IE9wZXJhdG9yVHlwZS5yYW5nZUluY2x1c2l2ZSxcbiAgZWRpdGFibGU6IGZhbHNlLFxuICBlbmFibGVBdXRvUmVzaXplOiB0cnVlLFxuICBlbmFibGVBdXRvU2l6ZUNvbHVtbnM6IHRydWUsXG4gIGVuYWJsZUNlbGxOYXZpZ2F0aW9uOiBmYWxzZSxcbiAgZW5hYmxlQ29sdW1uUGlja2VyOiB0cnVlLFxuICBlbmFibGVDb2x1bW5SZW9yZGVyOiB0cnVlLFxuICBlbmFibGVDb2x1bW5SZXNpemVPbkRvdWJsZUNsaWNrOiB0cnVlLFxuICBlbmFibGVDb250ZXh0TWVudTogdHJ1ZSxcbiAgZW5hYmxlRXhjZWxFeHBvcnQ6IGZhbHNlLFxuICBlbmFibGVUZXh0RXhwb3J0OiBmYWxzZSwgLy8gQ1NWL1RleHQgd2l0aCBUYWIgRGVsaW1pdGVkXG4gIGVuYWJsZUZpbHRlclRyaW1XaGl0ZVNwYWNlOiBmYWxzZSwgLy8gZG8gd2Ugd2FudCB0byB0cmltIHdoaXRlIHNwYWNlcyBvbiBhbGwgRmlsdGVycz9cbiAgZW5hYmxlR3JpZE1lbnU6IHRydWUsXG4gIGVuYWJsZUhlYWRlck1lbnU6IHRydWUsXG4gIGVuYWJsZUVtcHR5RGF0YVdhcm5pbmdNZXNzYWdlOiB0cnVlLFxuICBlbXB0eURhdGFXYXJuaW5nOiB7XG4gICAgY2xhc3NOYW1lOiAnc2xpY2stZW1wdHktZGF0YS13YXJuaW5nJyxcbiAgICBtZXNzYWdlOiAnTm8gZGF0YSB0byBkaXNwbGF5LicsXG4gICAgbWVzc2FnZUtleTogJ0VNUFRZX0RBVEFfV0FSTklOR19NRVNTQUdFJyxcbiAgICBoaWRlRnJvemVuTGVmdFdhcm5pbmc6IGZhbHNlLFxuICAgIGhpZGVGcm96ZW5SaWdodFdhcm5pbmc6IGZhbHNlLFxuICAgIGxlZnRWaWV3cG9ydE1hcmdpbkxlZnQ6ICc0MCUnLFxuICAgIHJpZ2h0Vmlld3BvcnRNYXJnaW5MZWZ0OiAnNDAlJyxcbiAgICBmcm96ZW5MZWZ0Vmlld3BvcnRNYXJnaW5MZWZ0OiAnMHB4JyxcbiAgICBmcm96ZW5SaWdodFZpZXdwb3J0TWFyZ2luTGVmdDogJzQwJScsXG4gIH0sXG4gIGVuYWJsZU1vdXNlSG92ZXJIaWdobGlnaHRSb3c6IHRydWUsXG4gIGVuYWJsZVNvcnRpbmc6IHRydWUsXG4gIGVuYWJsZVRleHRTZWxlY3Rpb25PbkNlbGxzOiB0cnVlLFxuICBldmVudE5hbWluZ1N0eWxlOiBFdmVudE5hbWluZ1N0eWxlLmNhbWVsQ2FzZSxcbiAgZXhwbGljaXRJbml0aWFsaXphdGlvbjogdHJ1ZSxcbiAgZXhjZWxFeHBvcnRPcHRpb25zOiB7XG4gICAgYWRkR3JvdXBJbmRlbnRhdGlvbjogdHJ1ZSxcbiAgICBleHBvcnRXaXRoRm9ybWF0dGVyOiBmYWxzZSxcbiAgICBmaWxlbmFtZTogJ2V4cG9ydCcsXG4gICAgZm9ybWF0OiBGaWxlVHlwZS54bHN4LFxuICAgIGdyb3VwaW5nQ29sdW1uSGVhZGVyVGl0bGU6ICdHcm91cCBCeScsXG4gICAgZ3JvdXBDb2xsYXBzZWRTeW1ib2w6ICfirp4nLFxuICAgIGdyb3VwRXhwYW5kZWRTeW1ib2w6ICfirp8nLFxuICAgIGdyb3VwaW5nQWdncmVnYXRvclJvd1RleHQ6ICcnLFxuICAgIHNhbml0aXplRGF0YUV4cG9ydDogZmFsc2UsXG4gIH0sXG4gIHRleHRFeHBvcnRPcHRpb25zOiB7XG4gICAgZGVsaW1pdGVyOiBEZWxpbWl0ZXJUeXBlLmNvbW1hLFxuICAgIGV4cG9ydFdpdGhGb3JtYXR0ZXI6IGZhbHNlLFxuICAgIGZpbGVuYW1lOiAnZXhwb3J0JyxcbiAgICBmb3JtYXQ6IEZpbGVUeXBlLmNzdixcbiAgICBncm91cGluZ0NvbHVtbkhlYWRlclRpdGxlOiAnR3JvdXAgQnknLFxuICAgIGdyb3VwaW5nQWdncmVnYXRvclJvd1RleHQ6ICcnLFxuICAgIHNhbml0aXplRGF0YUV4cG9ydDogZmFsc2UsXG4gICAgdXNlVXRmOFdpdGhCb206IHRydWUsXG4gIH0sXG4gIGZpbHRlclR5cGluZ0RlYm91bmNlOiAwLFxuICBmb3JjZUZpdENvbHVtbnM6IGZhbHNlLFxuICBmcm96ZW5IZWFkZXJXaWR0aENhbGNEaWZmZXJlbnRpYWw6IDAsXG4gIGdyaWRNZW51OiB7XG4gICAgZHJvcFNpZGU6ICdsZWZ0JyxcbiAgICBjb21tYW5kTGFiZWxzOiB7XG4gICAgICBjbGVhckFsbEZpbHRlcnNDb21tYW5kS2V5OiAnQ0xFQVJfQUxMX0ZJTFRFUlMnLFxuICAgICAgY2xlYXJBbGxTb3J0aW5nQ29tbWFuZEtleTogJ0NMRUFSX0FMTF9TT1JUSU5HJyxcbiAgICAgIGNsZWFyRnJvemVuQ29sdW1uc0NvbW1hbmRLZXk6ICdDTEVBUl9QSU5OSU5HJyxcbiAgICAgIGV4cG9ydENzdkNvbW1hbmRLZXk6ICdFWFBPUlRfVE9fQ1NWJyxcbiAgICAgIGV4cG9ydEV4Y2VsQ29tbWFuZEtleTogJ0VYUE9SVF9UT19FWENFTCcsXG4gICAgICBleHBvcnRUZXh0RGVsaW1pdGVkQ29tbWFuZEtleTogJ0VYUE9SVF9UT19UQUJfREVMSU1JVEVEJyxcbiAgICAgIHJlZnJlc2hEYXRhc2V0Q29tbWFuZEtleTogJ1JFRlJFU0hfREFUQVNFVCcsXG4gICAgICB0b2dnbGVEYXJrTW9kZUNvbW1hbmRLZXk6ICdUT0dHTEVfREFSS19NT0RFJyxcbiAgICAgIHRvZ2dsZUZpbHRlckNvbW1hbmRLZXk6ICdUT0dHTEVfRklMVEVSX1JPVycsXG4gICAgICB0b2dnbGVQcmVIZWFkZXJDb21tYW5kS2V5OiAnVE9HR0xFX1BSRV9IRUFERVJfUk9XJyxcbiAgICB9LFxuICAgIGhpZGVDbGVhckFsbEZpbHRlcnNDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlQ2xlYXJBbGxTb3J0aW5nQ29tbWFuZDogZmFsc2UsXG4gICAgaGlkZUNsZWFyRnJvemVuQ29sdW1uc0NvbW1hbmQ6IHRydWUsIC8vIG9wdC1pbiBjb21tYW5kXG4gICAgaGlkZUV4cG9ydENzdkNvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVFeHBvcnRFeGNlbENvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVFeHBvcnRUZXh0RGVsaW1pdGVkQ29tbWFuZDogdHJ1ZSxcbiAgICBoaWRlRm9yY2VGaXRCdXR0b246IGZhbHNlLFxuICAgIGhpZGVSZWZyZXNoRGF0YXNldENvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVTeW5jUmVzaXplQnV0dG9uOiB0cnVlLFxuICAgIGhpZGVUb2dnbGVEYXJrTW9kZUNvbW1hbmQ6IHRydWUsXG4gICAgaGlkZVRvZ2dsZUZpbHRlckNvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVUb2dnbGVQcmVIZWFkZXJDb21tYW5kOiBmYWxzZSxcbiAgICBpY29uQ3NzQ2xhc3M6ICdtZGkgbWRpLW1lbnUnLFxuICAgIGljb25DbGVhckFsbEZpbHRlcnNDb21tYW5kOiAnbWRpIG1kaS1maWx0ZXItcmVtb3ZlLW91dGxpbmUnLFxuICAgIGljb25DbGVhckFsbFNvcnRpbmdDb21tYW5kOiAnbWRpIG1kaS1zb3J0LXZhcmlhbnQtb2ZmJyxcbiAgICBpY29uQ2xlYXJGcm96ZW5Db2x1bW5zQ29tbWFuZDogJ21kaSBtZGktcGluLW9mZi1vdXRsaW5lJyxcbiAgICBpY29uRXhwb3J0Q3N2Q29tbWFuZDogJ21kaSBtZGktZG93bmxvYWQnLFxuICAgIGljb25FeHBvcnRFeGNlbENvbW1hbmQ6ICdtZGkgbWRpLWZpbGUtZXhjZWwtb3V0bGluZScsXG4gICAgaWNvbkV4cG9ydFRleHREZWxpbWl0ZWRDb21tYW5kOiAnbWRpIG1kaS1kb3dubG9hZCcsXG4gICAgaWNvblJlZnJlc2hEYXRhc2V0Q29tbWFuZDogJ21kaSBtZGktc3luYycsXG4gICAgaWNvblRvZ2dsZURhcmtNb2RlQ29tbWFuZDogJ21kaSBtZGktYnJpZ2h0bmVzcy00JyxcbiAgICBpY29uVG9nZ2xlRmlsdGVyQ29tbWFuZDogJ21kaSBtZGktZmxpcC12ZXJ0aWNhbCcsXG4gICAgaWNvblRvZ2dsZVByZUhlYWRlckNvbW1hbmQ6ICdtZGkgbWRpLWZsaXAtdmVydGljYWwnLFxuICAgIG1lbnVXaWR0aDogMTYsXG4gICAgcmVzaXplT25TaG93SGVhZGVyUm93OiB0cnVlLFxuICAgIHN1Ykl0ZW1DaGV2cm9uQ2xhc3M6ICdtZGkgbWRpLWNoZXZyb24tZG93biBtZGktcm90YXRlLTI3MCcsXG4gICAgaGVhZGVyQ29sdW1uVmFsdWVFeHRyYWN0b3I6IHBpY2tlckhlYWRlckNvbHVtblZhbHVlRXh0cmFjdG9yLFxuICB9LFxuICBoZWFkZXJNZW51OiB7XG4gICAgYXV0b0FsaWduOiB0cnVlLFxuICAgIGF1dG9BbGlnbk9mZnNldDogMTIsXG4gICAgbWluV2lkdGg6IDE0MCxcbiAgICBpY29uQ2xlYXJGaWx0ZXJDb21tYW5kOiAnbWRpIG1kaS1maWx0ZXItcmVtb3ZlLW91dGxpbmUnLFxuICAgIGljb25DbGVhclNvcnRDb21tYW5kOiAnbWRpIG1kaS1zb3J0LXZhcmlhbnQtb2ZmJyxcbiAgICBpY29uRnJlZXplQ29sdW1uczogJ21kaSBtZGktcGluLW91dGxpbmUnLFxuICAgIGljb25Tb3J0QXNjQ29tbWFuZDogJ21kaSBtZGktc29ydC1hc2NlbmRpbmcnLFxuICAgIGljb25Tb3J0RGVzY0NvbW1hbmQ6ICdtZGkgbWRpLXNvcnQtZGVzY2VuZGluZycsXG4gICAgaWNvbkNvbHVtbkhpZGVDb21tYW5kOiAnbWRpIG1kaS1jbG9zZScsXG4gICAgaWNvbkNvbHVtblJlc2l6ZUJ5Q29udGVudENvbW1hbmQ6ICdtZGkgbWRpLWFycm93LWV4cGFuZC1ob3Jpem9udGFsJyxcbiAgICBoaWRlQ29sdW1uUmVzaXplQnlDb250ZW50Q29tbWFuZDogZmFsc2UsXG4gICAgaGlkZUNvbHVtbkhpZGVDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlQ2xlYXJGaWx0ZXJDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlQ2xlYXJTb3J0Q29tbWFuZDogZmFsc2UsXG4gICAgaGlkZUZyZWV6ZUNvbHVtbnNDb21tYW5kOiB0cnVlLCAvLyBvcHQtaW4gY29tbWFuZFxuICAgIGhpZGVTb3J0Q29tbWFuZHM6IGZhbHNlLFxuICAgIHN1Ykl0ZW1DaGV2cm9uQ2xhc3M6ICdtZGkgbWRpLWNoZXZyb24tZG93biBtZGktcm90YXRlLTI3MCcsXG4gIH0sXG4gIGhlYWRlclJvd0hlaWdodDogMzUsXG4gIG11bHRpQ29sdW1uU29ydDogdHJ1ZSxcbiAgbnVtYmVyZWRNdWx0aUNvbHVtblNvcnQ6IHRydWUsXG4gIHRyaXN0YXRlTXVsdGlDb2x1bW5Tb3J0OiBmYWxzZSxcbiAgc29ydENvbE51bWJlckluU2VwYXJhdGVTcGFuOiB0cnVlLFxuICBzdXBwcmVzc0FjdGl2ZUNlbGxDaGFuZ2VPbkVkaXQ6IGZhbHNlLFxuICBwYWdpbmF0aW9uOiB7XG4gICAgcGFnZVNpemVzOiBbMTAsIDE1LCAyMCwgMjUsIDMwLCA0MCwgNTAsIDc1LCAxMDBdLFxuICAgIHBhZ2VTaXplOiAyNSxcbiAgICB0b3RhbEl0ZW1zOiAwLFxuICB9LFxuICAvLyB0ZWNobmljYWxseSBzcGVha2luZyB0aGUgUm93IERldGFpbCByZXF1aXJlcyB0aGUgcHJvY2VzcyAmIHZpZXdDb21wb25lbnQgYnV0IHdlJ2xsIGlnbm9yZSBpdCBqdXN0IHRvIHNldCBjZXJ0YWluIG9wdGlvbnNcbiAgcm93RGV0YWlsVmlldzoge1xuICAgIGNvbGxhcHNlQWxsT25Tb3J0OiB0cnVlLFxuICAgIGNzc0NsYXNzOiAnZGV0YWlsLXZpZXctdG9nZ2xlJyxcbiAgICBwYW5lbFJvd3M6IDEsXG4gICAga2V5UHJlZml4OiAnX18nLFxuICAgIHVzZVJvd0NsaWNrOiBmYWxzZSxcbiAgICBzYXZlRGV0YWlsVmlld09uU2Nyb2xsOiBmYWxzZSxcbiAgfSBhcyBSb3dEZXRhaWxWaWV3LFxuICByb3dIZWlnaHQ6IDM1LFxuICB0b3BQYW5lbEhlaWdodDogMzUsXG4gIHByZUhlYWRlclBhbmVsV2lkdGg6ICcxMDAlJywgLy8gbW9zdGx5IHVzZWZ1bCBmb3IgRHJhZ2dhYmxlIEdyb3VwaW5nIGRyb3B6b25lIHRvIHRha2UgZnVsbCB3aWR0aFxuICB0cmFuc2xhdGlvbk5hbWVzcGFjZVNlcGFyYXRvcjogJzonLFxuICByZXNldEZpbHRlclNlYXJjaFZhbHVlQWZ0ZXJPbkJlZm9yZUNhbmNlbGxhdGlvbjogdHJ1ZSxcbiAgcmVzaXplQnlDb250ZW50T25seU9uRmlyc3RMb2FkOiB0cnVlLFxuICByZXNpemVCeUNvbnRlbnRPcHRpb25zOiB7XG4gICAgYWx3YXlzUmVjYWxjdWxhdGVDb2x1bW5XaWR0aDogZmFsc2UsXG4gICAgY2VsbENoYXJXaWR0aEluUHg6IDcuOCxcbiAgICBjZWxsUGFkZGluZ1dpZHRoSW5QeDogMTQsXG4gICAgZGVmYXVsdFJhdGlvRm9yU3RyaW5nVHlwZTogMC44OCxcbiAgICBmb3JtYXR0ZXJQYWRkaW5nV2lkdGhJblB4OiAwLFxuICAgIG1heEl0ZW1Ub0luc3BlY3RDZWxsQ29udGVudFdpZHRoOiAxMDAwLFxuICAgIG1heEl0ZW1Ub0luc3BlY3RTaW5nbGVDb2x1bW5XaWR0aEJ5Q29udGVudDogNTAwMCxcbiAgICB3aWR0aFRvUmVtb3ZlRnJvbUV4Y2VlZGVkV2lkdGhSZWFkanVzdG1lbnQ6IDUwLFxuICB9LFxuICB0cmVlRGF0YU9wdGlvbnM6IHtcbiAgICBleHBvcnRJbmRlbnRNYXJnaW5MZWZ0OiA1LFxuICAgIGV4cG9ydEluZGVudGF0aW9uTGVhZGluZ0NoYXI6ICfNj82PzY/Nj82PzY/Nj82PzY/CtycsXG4gIH0gYXMgdW5rbm93biBhcyBUcmVlRGF0YU9wdGlvbixcbn07XG5cbi8qKlxuICogVmFsdWUgRXh0cmFjdG9yIGZvciBib3RoIENvbHVtblBpY2tlciAmIEdyaWRNZW51IFBpY2tlclxuICogd2hlbiB1c2luZyBDb2x1bW4gSGVhZGVyIEdyb3VwaW5nLCB3ZSdsbCBwcmVmaXggdGhlIGNvbHVtbiBncm91cCB0aXRsZVxuICogZWxzZSB3ZSdsbCBzaW1wbHkgcmV0dXJuIHRoZSBjb2x1bW4gbmFtZSB0aXRsZVxuICovXG5mdW5jdGlvbiBwaWNrZXJIZWFkZXJDb2x1bW5WYWx1ZUV4dHJhY3Rvcihjb2x1bW46IENvbHVtbiwgZ3JpZE9wdGlvbnM/OiBHcmlkT3B0aW9uVW5pdmVyc2FsKSB7XG4gIGxldCBjb2xOYW1lID0gY29sdW1uPy5jb2x1bW5QaWNrZXJMYWJlbCA/PyBjb2x1bW4/Lm5hbWUgPz8gJyc7XG4gIGlmIChjb2xOYW1lIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgY29sTmFtZSBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpIHtcbiAgICBjb2xOYW1lID0gY29sTmFtZS50ZXh0Q29udGVudCB8fCAnJztcbiAgfVxuICBjb25zdCBoZWFkZXJHcm91cCA9IGNvbHVtbj8uY29sdW1uR3JvdXAgfHwgJyc7XG4gIGNvbnN0IGNvbHVtbkdyb3VwU2VwYXJhdG9yID0gZ3JpZE9wdGlvbnM/LmNvbHVtbkdyb3VwU2VwYXJhdG9yID8/ICcgLSAnO1xuICBpZiAoaGVhZGVyR3JvdXApIHtcbiAgICByZXR1cm4gaGVhZGVyR3JvdXAgKyBjb2x1bW5Hcm91cFNlcGFyYXRvciArIGNvbE5hbWU7XG4gIH1cbiAgcmV0dXJuIGNvbE5hbWU7XG59XG4iXX0=
@@ -51,7 +51,10 @@ export class AngularUtilService {
51
51
  domElem = viewRef.rootNodes[0];
52
52
  // when user provides the DOM element target, we will read the new Component html and use it to replace the target html
53
53
  if (targetElement && domElem) {
54
- targetElement.innerHTML = domElem.innerHTML;
54
+ targetElement.innerHTML =
55
+ typeof createCompOptions?.sanitizer === 'function'
56
+ ? createCompOptions.sanitizer(domElem.innerHTML || '')
57
+ : domElem.innerHTML;
55
58
  }
56
59
  }
57
60
  return { componentRef, domElement: domElem };
@@ -82,4 +85,4 @@ export class AngularUtilService {
82
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AngularUtilService, decorators: [{
83
86
  type: Injectable
84
87
  }], ctorParameters: () => [{ type: i0.ViewContainerRef }] });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhclV0aWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9hbmd1bGFyLXNsaWNrZ3JpZC9zZXJ2aWNlcy9hbmd1bGFyVXRpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBYzdELE1BQU0sT0FBTyxrQkFBa0I7SUFDVDtJQUFwQixZQUFvQixHQUFxQjtRQUFyQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtJQUFHLENBQUM7SUFFN0MsaUNBQWlDLENBQy9CLFNBQWtCLEVBQ2xCLGFBQXNCLEVBQ3RCLElBQVUsRUFDVixpQkFBeUM7UUFFekMsa0RBQWtEO1FBQ2xELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRTVFLDhEQUE4RDtRQUM5RCxJQUFJLFlBQVksRUFBRSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCxpQ0FBaUM7UUFDakMsSUFBSSxPQUFPLEdBQXVCLElBQUksQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsUUFBZ0MsQ0FBQztRQUU5RCxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDeEUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFnQixDQUFDO1lBRTlDLHFIQUFxSDtZQUNySCxJQUFJLGFBQWEsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDN0IsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBc0IsRUFBRSxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsc0JBQXNCLENBQ3BCLFNBQWtCLEVBQ2xCLGFBQXVCLEVBQ3ZCLElBQVUsRUFDVixpQkFBeUM7UUFFekMsa0RBQWtEO1FBQ2xELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRTVFLDhEQUE4RDtRQUM5RCxJQUFJLFlBQVksRUFBRSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWxELHdGQUF3RjtZQUN4RiwrR0FBK0c7WUFDL0csa0dBQWtHO1lBQ2xHLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNqRCxDQUFDO1FBRUQsaUNBQWlDO1FBQ2pDLElBQUksT0FBTyxHQUF1QixJQUFJLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFFBQWdDLENBQUM7UUFFOUQsNEdBQTRHO1FBQzVHLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4RSxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWdCLENBQUM7WUFFOUMsdUhBQXVIO1lBQ3ZILElBQUksYUFBYSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixhQUFhLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7WUFDOUMsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFzQixFQUFFLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsaUNBQWlDLENBQy9CLFNBQWtCLEVBQ2xCLGFBQXVCLEVBQ3ZCLElBQVUsRUFDVixpQkFBeUM7UUFFekMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFdkcsbURBQW1EO1FBQ25ELElBQUksYUFBYSxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQ25DLGFBQWEsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVELENBQUM7YUFBTSxDQUFDO1lBQ04sUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsZ0VBQWdFO1FBQ3pILENBQUM7UUFFRCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO3dHQXRHVSxrQkFBa0I7NEdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgRW1iZWRkZWRWaWV3UmVmLCBFbnZpcm9ubWVudEluamVjdG9yLCBJbmplY3RvciwgTmdNb2R1bGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBBbmd1bGFyQ29tcG9uZW50T3V0cHV0IH0gZnJvbSAnLi4vbW9kZWxzL2FuZ3VsYXJDb21wb25lbnRPdXRwdXQuaW50ZXJmYWNlJztcblxuaW50ZXJmYWNlIENyZWF0ZUNvbXBvbmVudE9wdGlvbiB7XG4gIGluZGV4PzogbnVtYmVyO1xuICBpbmplY3Rvcj86IEluamVjdG9yO1xuICBuZ01vZHVsZVJlZj86IE5nTW9kdWxlUmVmPHVua25vd24+O1xuICBlbnZpcm9ubWVudEluamVjdG9yPzogRW52aXJvbm1lbnRJbmplY3RvciB8IE5nTW9kdWxlUmVmPHVua25vd24+O1xuICBwcm9qZWN0YWJsZU5vZGVzPzogTm9kZVtdW107XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBbmd1bGFyVXRpbFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZjcjogVmlld0NvbnRhaW5lclJlZikge31cblxuICBjcmVhdGVJbnRlcmFjdGl2ZUFuZ3VsYXJDb21wb25lbnQ8Qz4oXG4gICAgY29tcG9uZW50OiBUeXBlPEM+LFxuICAgIHRhcmdldEVsZW1lbnQ6IEVsZW1lbnQsXG4gICAgZGF0YT86IGFueSxcbiAgICBjcmVhdGVDb21wT3B0aW9ucz86IENyZWF0ZUNvbXBvbmVudE9wdGlvblxuICApOiBBbmd1bGFyQ29tcG9uZW50T3V0cHV0IHtcbiAgICAvLyBDcmVhdGUgYSBjb21wb25lbnQgcmVmZXJlbmNlIGZyb20gdGhlIGNvbXBvbmVudFxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMudmNyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIGNyZWF0ZUNvbXBPcHRpb25zKTtcblxuICAgIC8vIHVzZXIgY291bGQgcHJvdmlkZSBkYXRhIHRvIGFzc2lnbiB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlXG4gICAgaWYgKGNvbXBvbmVudFJlZj8uaW5zdGFuY2UgJiYgZGF0YSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgYW55LCBkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBHZXQgRE9NIGVsZW1lbnQgZnJvbSBjb21wb25lbnRcbiAgICBsZXQgZG9tRWxlbTogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBjb25zdCB2aWV3UmVmID0gY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuXG4gICAgaWYgKHZpZXdSZWYgJiYgQXJyYXkuaXNBcnJheSh2aWV3UmVmLnJvb3ROb2RlcykgJiYgdmlld1JlZi5yb290Tm9kZXNbMF0pIHtcbiAgICAgIGRvbUVsZW0gPSB2aWV3UmVmLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgLy8gd2hlbiB1c2VyIHByb3ZpZGVzIHRoZSBET00gZWxlbWVudCB0YXJnZXQsIHdlIHdpbGwgbW92ZSB0aGUgZHluYW1pYyBjb21wb25lbnQgaW50byB0aGF0IHRhcmdldCAoYWthIHBvcnRhbC1pbmcgaXQpXG4gICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiBkb21FbGVtKSB7XG4gICAgICAgIHRhcmdldEVsZW1lbnQucmVwbGFjZUNoaWxkcmVuKGNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBjb21wb25lbnRSZWYsIGRvbUVsZW1lbnQ6IGRvbUVsZW0gYXMgSFRNTEVsZW1lbnQgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEeW5hbWljYWxseSBjcmVhdGUgYW4gQW5ndWxhciBjb21wb25lbnQsIHVzZXIgY291bGQgYWxzbyBwcm92aWRlIG9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgdGFyZ2V0LCBkYXRhICYgY3JlYXRlQ29tcG9uZW50IG9wdGlvbnNcbiAgICogQHBhcmFtIHtDb21wb25lbnR9IGNvbXBvbmVudFxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBbdGFyZ2V0RWxlbWVudF1cbiAgICogQHBhcmFtIHsqfSBbZGF0YV1cbiAgICogQHBhcmFtIHtDcmVhdGVDb21wb25lbnRPcHRpb259IFtjcmVhdGVDb21wT3B0aW9uc11cbiAgICogQHJldHVybnNcbiAgICovXG4gIGNyZWF0ZUFuZ3VsYXJDb21wb25lbnQ8Qz4oXG4gICAgY29tcG9uZW50OiBUeXBlPEM+LFxuICAgIHRhcmdldEVsZW1lbnQ/OiBFbGVtZW50LFxuICAgIGRhdGE/OiBhbnksXG4gICAgY3JlYXRlQ29tcE9wdGlvbnM/OiBDcmVhdGVDb21wb25lbnRPcHRpb25cbiAgKTogQW5ndWxhckNvbXBvbmVudE91dHB1dCB7XG4gICAgLy8gQ3JlYXRlIGEgY29tcG9uZW50IHJlZmVyZW5jZSBmcm9tIHRoZSBjb21wb25lbnRcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLnZjci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50LCBjcmVhdGVDb21wT3B0aW9ucyk7XG5cbiAgICAvLyB1c2VyIGNvdWxkIHByb3ZpZGUgZGF0YSB0byBhc3NpZ24gdG8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZVxuICAgIGlmIChjb21wb25lbnRSZWY/Lmluc3RhbmNlICYmIGRhdGEpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIGFueSwgZGF0YSk7XG5cbiAgICAgIC8vIE5PVEU6IGRldGVjdENoYW5nZXMoKSBNVVNUIGJlIGRvbmUgQkVGT1JFIHJldHVybmluZyB0aGUgRE9NIGVsZW1lbnQgaW4gdGhlIG5leHQgc3RlcCxcbiAgICAgIC8vIGJlY2F1c2UgaWYgd2UgZG8gaXQgb25seSBhZnRlciByZXR1cm5pbmcgdGhlIHJvb3ROb2RlcyAoZG9tRWxlbWVudCkgdGhlbiBpdCB3b24ndCBoYXZlIHRoZSBpbnN0YW5jZSBkYXRhIHlldFxuICAgICAgLy8gYW5kIHdlIHdvdWxkIGhhdmUgdG8gd2FpdCBhbiBleHRyYSBjeWNsZSB0byBzZWUgdGhlIHJlc3VsdCwgdGhpcyBiYXNpY2FsbHkgaGVscHMgd2l0aCBFeGFtcGxlMjJcbiAgICAgIGNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLy8gR2V0IERPTSBlbGVtZW50IGZyb20gY29tcG9uZW50XG4gICAgbGV0IGRvbUVsZW06IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgY29uc3Qgdmlld1JlZiA9IGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55PjtcblxuICAgIC8vIGdldCBET00gZWxlbWVudCBmcm9tIHRoZSBuZXcgZHluYW1pYyBDb21wb25lbnQsIG1ha2Ugc3VyZSB0aGlzIGlzIHJlYWQgYWZ0ZXIgYW55IGRhdGEgYW5kIGRldGVjdENoYW5nZXMoKVxuICAgIGlmICh2aWV3UmVmICYmIEFycmF5LmlzQXJyYXkodmlld1JlZi5yb290Tm9kZXMpICYmIHZpZXdSZWYucm9vdE5vZGVzWzBdKSB7XG4gICAgICBkb21FbGVtID0gdmlld1JlZi5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgIC8vIHdoZW4gdXNlciBwcm92aWRlcyB0aGUgRE9NIGVsZW1lbnQgdGFyZ2V0LCB3ZSB3aWxsIHJlYWQgdGhlIG5ldyBDb21wb25lbnQgaHRtbCBhbmQgdXNlIGl0IHRvIHJlcGxhY2UgdGhlIHRhcmdldCBodG1sXG4gICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiBkb21FbGVtKSB7XG4gICAgICAgIHRhcmdldEVsZW1lbnQuaW5uZXJIVE1MID0gZG9tRWxlbS5pbm5lckhUTUw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY29tcG9uZW50UmVmLCBkb21FbGVtZW50OiBkb21FbGVtIGFzIEhUTUxFbGVtZW50IH07XG4gIH1cblxuICAvKipcbiAgICogRHluYW1pY2FsbHkgY3JlYXRlIGFuIEFuZ3VsYXIgY29tcG9uZW50IGFuZCBhcHBlbmQgaXQgdG8gdGhlIERPTSB1bmxlc3MgYSB0YXJnZXQgZWxlbWVudCBpcyBwcm92aWRlZCxcbiAgICogdXNlciBjb3VsZCBhbHNvIHByb3ZpZGUgb3RoZXIgb3B0aW9uYWwgYXJndW1lbnRzIGZvciBkYXRhICYgY3JlYXRlQ29tcG9uZW50IG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7Q29tcG9uZW50fSBjb21wb25lbnRcbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gW3RhcmdldEVsZW1lbnRdXG4gICAqIEBwYXJhbSB7Kn0gW2RhdGFdXG4gICAqIEBwYXJhbSB7Q3JlYXRlQ29tcG9uZW50T3B0aW9ufSBbY3JlYXRlQ29tcE9wdGlvbnNdXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBjcmVhdGVBbmd1bGFyQ29tcG9uZW50QXBwZW5kVG9Eb208Qz4oXG4gICAgY29tcG9uZW50OiBUeXBlPEM+LFxuICAgIHRhcmdldEVsZW1lbnQ/OiBFbGVtZW50LFxuICAgIGRhdGE/OiBhbnksXG4gICAgY3JlYXRlQ29tcE9wdGlvbnM/OiBDcmVhdGVDb21wb25lbnRPcHRpb25cbiAgKTogQW5ndWxhckNvbXBvbmVudE91dHB1dCB7XG4gICAgY29uc3QgY29tcG9uZW50T3V0cHV0ID0gdGhpcy5jcmVhdGVBbmd1bGFyQ29tcG9uZW50KGNvbXBvbmVudCwgdGFyZ2V0RWxlbWVudCwgZGF0YSwgY3JlYXRlQ29tcE9wdGlvbnMpO1xuXG4gICAgLy8gQXBwZW5kIERPTSBlbGVtZW50IHRvIHRoZSBIVE1MIGVsZW1lbnQgc3BlY2lmaWVkXG4gICAgaWYgKHRhcmdldEVsZW1lbnQ/LnJlcGxhY2VDaGlsZHJlbikge1xuICAgICAgdGFyZ2V0RWxlbWVudC5yZXBsYWNlQ2hpbGRyZW4oY29tcG9uZW50T3V0cHV0LmRvbUVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbXBvbmVudE91dHB1dC5kb21FbGVtZW50KTsgLy8gd2hlbiBubyB0YXJnZXQgcHJvdmlkZWQsIHdlJ2xsIHNpbXBseSBhZGQgaXQgdG8gdGhlIEhUTUwgQm9keVxuICAgIH1cblxuICAgIHJldHVybiBjb21wb25lbnRPdXRwdXQ7XG4gIH1cbn1cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhclV0aWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9hbmd1bGFyLXNsaWNrZ3JpZC9zZXJ2aWNlcy9hbmd1bGFyVXRpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBZTdELE1BQU0sT0FBTyxrQkFBa0I7SUFDVDtJQUFwQixZQUFvQixHQUFxQjtRQUFyQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtJQUFHLENBQUM7SUFFN0MsaUNBQWlDLENBQy9CLFNBQWtCLEVBQ2xCLGFBQXNCLEVBQ3RCLElBQVUsRUFDVixpQkFBeUM7UUFFekMsa0RBQWtEO1FBQ2xELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRTVFLDhEQUE4RDtRQUM5RCxJQUFJLFlBQVksRUFBRSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCxpQ0FBaUM7UUFDakMsSUFBSSxPQUFPLEdBQXVCLElBQUksQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsUUFBZ0MsQ0FBQztRQUU5RCxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDeEUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFnQixDQUFDO1lBRTlDLHFIQUFxSDtZQUNySCxJQUFJLGFBQWEsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDN0IsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBc0IsRUFBRSxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsc0JBQXNCLENBQ3BCLFNBQWtCLEVBQ2xCLGFBQXVCLEVBQ3ZCLElBQVUsRUFDVixpQkFBeUM7UUFFekMsa0RBQWtEO1FBQ2xELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRTVFLDhEQUE4RDtRQUM5RCxJQUFJLFlBQVksRUFBRSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWxELHdGQUF3RjtZQUN4RiwrR0FBK0c7WUFDL0csa0dBQWtHO1lBQ2xHLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNqRCxDQUFDO1FBRUQsaUNBQWlDO1FBQ2pDLElBQUksT0FBTyxHQUF1QixJQUFJLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFFBQWdDLENBQUM7UUFFOUQsNEdBQTRHO1FBQzVHLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4RSxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWdCLENBQUM7WUFFOUMsdUhBQXVIO1lBQ3ZILElBQUksYUFBYSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixhQUFhLENBQUMsU0FBUztvQkFDckIsT0FBTyxpQkFBaUIsRUFBRSxTQUFTLEtBQUssVUFBVTt3QkFDaEQsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQzt3QkFDdEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFzQixFQUFFLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsaUNBQWlDLENBQy9CLFNBQWtCLEVBQ2xCLGFBQXVCLEVBQ3ZCLElBQVUsRUFDVixpQkFBeUM7UUFFekMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFdkcsbURBQW1EO1FBQ25ELElBQUksYUFBYSxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQ25DLGFBQWEsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVELENBQUM7YUFBTSxDQUFDO1lBQ04sUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsZ0VBQWdFO1FBQ3pILENBQUM7UUFFRCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO3dHQXpHVSxrQkFBa0I7NEdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgRW1iZWRkZWRWaWV3UmVmLCBFbnZpcm9ubWVudEluamVjdG9yLCBJbmplY3RvciwgTmdNb2R1bGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBBbmd1bGFyQ29tcG9uZW50T3V0cHV0IH0gZnJvbSAnLi4vbW9kZWxzL2FuZ3VsYXJDb21wb25lbnRPdXRwdXQuaW50ZXJmYWNlJztcblxuaW50ZXJmYWNlIENyZWF0ZUNvbXBvbmVudE9wdGlvbiB7XG4gIGluZGV4PzogbnVtYmVyO1xuICBpbmplY3Rvcj86IEluamVjdG9yO1xuICBuZ01vZHVsZVJlZj86IE5nTW9kdWxlUmVmPHVua25vd24+O1xuICBlbnZpcm9ubWVudEluamVjdG9yPzogRW52aXJvbm1lbnRJbmplY3RvciB8IE5nTW9kdWxlUmVmPHVua25vd24+O1xuICBwcm9qZWN0YWJsZU5vZGVzPzogTm9kZVtdW107XG4gIHNhbml0aXplcj86IChkaXJ0eUh0bWw6IHN0cmluZykgPT4gc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQW5ndWxhclV0aWxTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2Y3I6IFZpZXdDb250YWluZXJSZWYpIHt9XG5cbiAgY3JlYXRlSW50ZXJhY3RpdmVBbmd1bGFyQ29tcG9uZW50PEM+KFxuICAgIGNvbXBvbmVudDogVHlwZTxDPixcbiAgICB0YXJnZXRFbGVtZW50OiBFbGVtZW50LFxuICAgIGRhdGE/OiBhbnksXG4gICAgY3JlYXRlQ29tcE9wdGlvbnM/OiBDcmVhdGVDb21wb25lbnRPcHRpb25cbiAgKTogQW5ndWxhckNvbXBvbmVudE91dHB1dCB7XG4gICAgLy8gQ3JlYXRlIGEgY29tcG9uZW50IHJlZmVyZW5jZSBmcm9tIHRoZSBjb21wb25lbnRcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLnZjci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50LCBjcmVhdGVDb21wT3B0aW9ucyk7XG5cbiAgICAvLyB1c2VyIGNvdWxkIHByb3ZpZGUgZGF0YSB0byBhc3NpZ24gdG8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZVxuICAgIGlmIChjb21wb25lbnRSZWY/Lmluc3RhbmNlICYmIGRhdGEpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIGFueSwgZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gR2V0IERPTSBlbGVtZW50IGZyb20gY29tcG9uZW50XG4gICAgbGV0IGRvbUVsZW06IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgY29uc3Qgdmlld1JlZiA9IGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55PjtcblxuICAgIGlmICh2aWV3UmVmICYmIEFycmF5LmlzQXJyYXkodmlld1JlZi5yb290Tm9kZXMpICYmIHZpZXdSZWYucm9vdE5vZGVzWzBdKSB7XG4gICAgICBkb21FbGVtID0gdmlld1JlZi5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgIC8vIHdoZW4gdXNlciBwcm92aWRlcyB0aGUgRE9NIGVsZW1lbnQgdGFyZ2V0LCB3ZSB3aWxsIG1vdmUgdGhlIGR5bmFtaWMgY29tcG9uZW50IGludG8gdGhhdCB0YXJnZXQgKGFrYSBwb3J0YWwtaW5nIGl0KVxuICAgICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgZG9tRWxlbSkge1xuICAgICAgICB0YXJnZXRFbGVtZW50LnJlcGxhY2VDaGlsZHJlbihjb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY29tcG9uZW50UmVmLCBkb21FbGVtZW50OiBkb21FbGVtIGFzIEhUTUxFbGVtZW50IH07XG4gIH1cblxuICAvKipcbiAgICogRHluYW1pY2FsbHkgY3JlYXRlIGFuIEFuZ3VsYXIgY29tcG9uZW50LCB1c2VyIGNvdWxkIGFsc28gcHJvdmlkZSBvcHRpb25hbCBhcmd1bWVudHMgZm9yIHRhcmdldCwgZGF0YSAmIGNyZWF0ZUNvbXBvbmVudCBvcHRpb25zXG4gICAqIEBwYXJhbSB7Q29tcG9uZW50fSBjb21wb25lbnRcbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gW3RhcmdldEVsZW1lbnRdXG4gICAqIEBwYXJhbSB7Kn0gW2RhdGFdXG4gICAqIEBwYXJhbSB7Q3JlYXRlQ29tcG9uZW50T3B0aW9ufSBbY3JlYXRlQ29tcE9wdGlvbnNdXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBjcmVhdGVBbmd1bGFyQ29tcG9uZW50PEM+KFxuICAgIGNvbXBvbmVudDogVHlwZTxDPixcbiAgICB0YXJnZXRFbGVtZW50PzogRWxlbWVudCxcbiAgICBkYXRhPzogYW55LFxuICAgIGNyZWF0ZUNvbXBPcHRpb25zPzogQ3JlYXRlQ29tcG9uZW50T3B0aW9uXG4gICk6IEFuZ3VsYXJDb21wb25lbnRPdXRwdXQge1xuICAgIC8vIENyZWF0ZSBhIGNvbXBvbmVudCByZWZlcmVuY2UgZnJvbSB0aGUgY29tcG9uZW50XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52Y3IuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwgY3JlYXRlQ29tcE9wdGlvbnMpO1xuXG4gICAgLy8gdXNlciBjb3VsZCBwcm92aWRlIGRhdGEgdG8gYXNzaWduIHRvIHRoZSBjb21wb25lbnQgaW5zdGFuY2VcbiAgICBpZiAoY29tcG9uZW50UmVmPy5pbnN0YW5jZSAmJiBkYXRhKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBhbnksIGRhdGEpO1xuXG4gICAgICAvLyBOT1RFOiBkZXRlY3RDaGFuZ2VzKCkgTVVTVCBiZSBkb25lIEJFRk9SRSByZXR1cm5pbmcgdGhlIERPTSBlbGVtZW50IGluIHRoZSBuZXh0IHN0ZXAsXG4gICAgICAvLyBiZWNhdXNlIGlmIHdlIGRvIGl0IG9ubHkgYWZ0ZXIgcmV0dXJuaW5nIHRoZSByb290Tm9kZXMgKGRvbUVsZW1lbnQpIHRoZW4gaXQgd29uJ3QgaGF2ZSB0aGUgaW5zdGFuY2UgZGF0YSB5ZXRcbiAgICAgIC8vIGFuZCB3ZSB3b3VsZCBoYXZlIHRvIHdhaXQgYW4gZXh0cmEgY3ljbGUgdG8gc2VlIHRoZSByZXN1bHQsIHRoaXMgYmFzaWNhbGx5IGhlbHBzIHdpdGggRXhhbXBsZTIyXG4gICAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8vIEdldCBET00gZWxlbWVudCBmcm9tIGNvbXBvbmVudFxuICAgIGxldCBkb21FbGVtOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IHZpZXdSZWYgPSBjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT47XG5cbiAgICAvLyBnZXQgRE9NIGVsZW1lbnQgZnJvbSB0aGUgbmV3IGR5bmFtaWMgQ29tcG9uZW50LCBtYWtlIHN1cmUgdGhpcyBpcyByZWFkIGFmdGVyIGFueSBkYXRhIGFuZCBkZXRlY3RDaGFuZ2VzKClcbiAgICBpZiAodmlld1JlZiAmJiBBcnJheS5pc0FycmF5KHZpZXdSZWYucm9vdE5vZGVzKSAmJiB2aWV3UmVmLnJvb3ROb2Rlc1swXSkge1xuICAgICAgZG9tRWxlbSA9IHZpZXdSZWYucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAvLyB3aGVuIHVzZXIgcHJvdmlkZXMgdGhlIERPTSBlbGVtZW50IHRhcmdldCwgd2Ugd2lsbCByZWFkIHRoZSBuZXcgQ29tcG9uZW50IGh0bWwgYW5kIHVzZSBpdCB0byByZXBsYWNlIHRoZSB0YXJnZXQgaHRtbFxuICAgICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgZG9tRWxlbSkge1xuICAgICAgICB0YXJnZXRFbGVtZW50LmlubmVySFRNTCA9XG4gICAgICAgICAgdHlwZW9mIGNyZWF0ZUNvbXBPcHRpb25zPy5zYW5pdGl6ZXIgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgID8gY3JlYXRlQ29tcE9wdGlvbnMuc2FuaXRpemVyKGRvbUVsZW0uaW5uZXJIVE1MIHx8ICcnKVxuICAgICAgICAgICAgOiBkb21FbGVtLmlubmVySFRNTDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBjb21wb25lbnRSZWYsIGRvbUVsZW1lbnQ6IGRvbUVsZW0gYXMgSFRNTEVsZW1lbnQgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEeW5hbWljYWxseSBjcmVhdGUgYW4gQW5ndWxhciBjb21wb25lbnQgYW5kIGFwcGVuZCBpdCB0byB0aGUgRE9NIHVubGVzcyBhIHRhcmdldCBlbGVtZW50IGlzIHByb3ZpZGVkLFxuICAgKiB1c2VyIGNvdWxkIGFsc28gcHJvdmlkZSBvdGhlciBvcHRpb25hbCBhcmd1bWVudHMgZm9yIGRhdGEgJiBjcmVhdGVDb21wb25lbnQgb3B0aW9ucy5cbiAgICogQHBhcmFtIHtDb21wb25lbnR9IGNvbXBvbmVudFxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBbdGFyZ2V0RWxlbWVudF1cbiAgICogQHBhcmFtIHsqfSBbZGF0YV1cbiAgICogQHBhcmFtIHtDcmVhdGVDb21wb25lbnRPcHRpb259IFtjcmVhdGVDb21wT3B0aW9uc11cbiAgICogQHJldHVybnNcbiAgICovXG4gIGNyZWF0ZUFuZ3VsYXJDb21wb25lbnRBcHBlbmRUb0RvbTxDPihcbiAgICBjb21wb25lbnQ6IFR5cGU8Qz4sXG4gICAgdGFyZ2V0RWxlbWVudD86IEVsZW1lbnQsXG4gICAgZGF0YT86IGFueSxcbiAgICBjcmVhdGVDb21wT3B0aW9ucz86IENyZWF0ZUNvbXBvbmVudE9wdGlvblxuICApOiBBbmd1bGFyQ29tcG9uZW50T3V0cHV0IHtcbiAgICBjb25zdCBjb21wb25lbnRPdXRwdXQgPSB0aGlzLmNyZWF0ZUFuZ3VsYXJDb21wb25lbnQoY29tcG9uZW50LCB0YXJnZXRFbGVtZW50LCBkYXRhLCBjcmVhdGVDb21wT3B0aW9ucyk7XG5cbiAgICAvLyBBcHBlbmQgRE9NIGVsZW1lbnQgdG8gdGhlIEhUTUwgZWxlbWVudCBzcGVjaWZpZWRcbiAgICBpZiAodGFyZ2V0RWxlbWVudD8ucmVwbGFjZUNoaWxkcmVuKSB7XG4gICAgICB0YXJnZXRFbGVtZW50LnJlcGxhY2VDaGlsZHJlbihjb21wb25lbnRPdXRwdXQuZG9tRWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29tcG9uZW50T3V0cHV0LmRvbUVsZW1lbnQpOyAvLyB3aGVuIG5vIHRhcmdldCBwcm92aWRlZCwgd2UnbGwgc2ltcGx5IGFkZCBpdCB0byB0aGUgSFRNTCBCb2R5XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBvbmVudE91dHB1dDtcbiAgfVxufVxuIl19