@gipisistemas/ng-core 1.1.10 → 1.1.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -98,6 +98,9 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
98
98
  }
99
99
  if (ObjectUtil.isNull(pageEvent) && !ObjectUtil.isNull(this.tablePageEventDTO)) {
100
100
  pageEvent = this.tablePageEventDTO;
101
+ if (ObjectUtil.hasPropertyInObj(pageEvent, 'pageIndex')) {
102
+ pageEvent.pageIndex = 0;
103
+ }
101
104
  }
102
105
  if (pageEvent) {
103
106
  this.tablePageEventDTO = pageEvent;
@@ -167,14 +170,14 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
167
170
  this.navigateByUrl(this.getPath(), [this.getPath(), 'edit', id], true);
168
171
  }
169
172
  }
170
- deleteRegister(id, permission, fetchAgain = true) {
173
+ deleteRegister(id, permission, fetchAgain = true, version) {
171
174
  try {
172
175
  id = this.handleEntityId(id);
173
176
  if (ObjectUtil.isNull(id)) {
174
177
  return;
175
178
  }
176
179
  if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
177
- this._deleteRegister(id, fetchAgain);
180
+ this._deleteRegister(id, fetchAgain, version);
178
181
  }
179
182
  else {
180
183
  if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
@@ -184,7 +187,7 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
184
187
  this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
185
188
  return;
186
189
  }
187
- this._deleteRegister(id, fetchAgain);
190
+ this._deleteRegister(id, fetchAgain, version);
188
191
  }
189
192
  }
190
193
  catch (e) {
@@ -196,7 +199,7 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
196
199
  }
197
200
  }
198
201
  /** @Internal */
199
- _deleteRegister(id, fetchAgain = true) {
202
+ _deleteRegister(id, fetchAgain = true, version) {
200
203
  try {
201
204
  this.baseService.confirmationService.confirm({
202
205
  title: 'Confirmação',
@@ -206,7 +209,7 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
206
209
  this.loading = true;
207
210
  this.page = this.newPage();
208
211
  this.preDelete(id);
209
- this.abstractCrudService.delete(id).toPromise().then(() => {
212
+ this.abstractCrudService.delete(id, version).toPromise().then(() => {
210
213
  if (fetchAgain) {
211
214
  this.findAll();
212
215
  }
@@ -223,14 +226,14 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
223
226
  throw new Error(e);
224
227
  }
225
228
  }
226
- deleteAllRegister(idList, permission, fetchAgain = true) {
229
+ deleteAllRegister(idList, permission, fetchAgain = true, version) {
227
230
  try {
228
231
  idList = this.handleEntityIdList(idList);
229
232
  if (ObjectUtil.isNull(idList) || ArrayUtil.isEmpty(idList)) {
230
233
  return;
231
234
  }
232
235
  if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
233
- this._deleteAllRegister(idList, fetchAgain);
236
+ this._deleteAllRegister(idList, fetchAgain, version);
234
237
  }
235
238
  else {
236
239
  if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
@@ -240,7 +243,7 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
240
243
  this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
241
244
  return;
242
245
  }
243
- this._deleteAllRegister(idList, fetchAgain);
246
+ this._deleteAllRegister(idList, fetchAgain, version);
244
247
  }
245
248
  }
246
249
  catch (e) {
@@ -252,7 +255,7 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
252
255
  }
253
256
  }
254
257
  /** @Internal */
255
- _deleteAllRegister(idList, fetchAgain = true) {
258
+ _deleteAllRegister(idList, fetchAgain = true, version) {
256
259
  try {
257
260
  this.baseService.confirmationService.confirm({
258
261
  title: 'Confirmação',
@@ -262,7 +265,7 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
262
265
  this.loading = true;
263
266
  this.page = this.newPage();
264
267
  this.preDelete();
265
- this.abstractCrudService.deleteAll(idList).toPromise().then(() => {
268
+ this.abstractCrudService.deleteAll(idList, version).toPromise().then(() => {
266
269
  if (fetchAgain) {
267
270
  this.findAll();
268
271
  }
@@ -308,14 +311,14 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
308
311
  this.viewRegister(id, permission);
309
312
  }
310
313
  }
311
- enableOrDisableRegister(action, id, permission, fetchAgain = true) {
314
+ enableOrDisableRegister(action, id, permission, fetchAgain = true, version) {
312
315
  try {
313
316
  id = this.handleEntityId(id);
314
317
  if (ObjectUtil.isNull(id)) {
315
318
  return;
316
319
  }
317
320
  if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
318
- this._enableOrDisableRegister(action, id, fetchAgain);
321
+ this._enableOrDisableRegister(action, id, fetchAgain, version);
319
322
  }
320
323
  else {
321
324
  if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
@@ -325,7 +328,7 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
325
328
  this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
326
329
  return;
327
330
  }
328
- this._enableOrDisableRegister(action, id, fetchAgain);
331
+ this._enableOrDisableRegister(action, id, fetchAgain, version);
329
332
  }
330
333
  }
331
334
  catch (e) {
@@ -337,7 +340,7 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
337
340
  }
338
341
  }
339
342
  /** @Internal */
340
- _enableOrDisableRegister(action, id, fetchAgain = true) {
343
+ _enableOrDisableRegister(action, id, fetchAgain = true, version) {
341
344
  try {
342
345
  this.baseService.confirmationService.confirm({
343
346
  title: 'Confirmação',
@@ -346,7 +349,7 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
346
349
  this.setFilterSessionStorage();
347
350
  this.loading = true;
348
351
  this.page = this.newPage();
349
- this.abstractCrudService.enableOrDisable(id, action).toPromise().then(() => {
352
+ this.abstractCrudService.enableOrDisable(id, action, version).toPromise().then(() => {
350
353
  if (fetchAgain) {
351
354
  this.findAll();
352
355
  }
@@ -363,14 +366,14 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
363
366
  throw new Error(e);
364
367
  }
365
368
  }
366
- enableAndDisableAllRegister(action, idList, permission, fetchAgain = true) {
369
+ enableAndDisableAllRegister(action, idList, permission, fetchAgain = true, version) {
367
370
  try {
368
371
  idList = this.handleEntityIdList(idList);
369
372
  if (ObjectUtil.isNull(idList) || ArrayUtil.isEmpty(idList)) {
370
373
  return;
371
374
  }
372
375
  if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
373
- this._enableAndDisableAllRegister(action, idList, fetchAgain);
376
+ this._enableAndDisableAllRegister(action, idList, fetchAgain, version);
374
377
  }
375
378
  else {
376
379
  if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
@@ -380,7 +383,7 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
380
383
  this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
381
384
  return;
382
385
  }
383
- this._enableAndDisableAllRegister(action, idList, fetchAgain);
386
+ this._enableAndDisableAllRegister(action, idList, fetchAgain, version);
384
387
  }
385
388
  }
386
389
  catch (e) {
@@ -392,7 +395,7 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
392
395
  }
393
396
  }
394
397
  /** @Internal */
395
- _enableAndDisableAllRegister(action, idList, fetchAgain = true) {
398
+ _enableAndDisableAllRegister(action, idList, fetchAgain = true, version) {
396
399
  try {
397
400
  this.baseService.confirmationService.confirm({
398
401
  title: 'Confirmação',
@@ -401,7 +404,7 @@ let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbst
401
404
  this.setFilterSessionStorage();
402
405
  this.loading = true;
403
406
  this.page = this.newPage();
404
- this.abstractCrudService.enableOrDisableAll(idList, action).toPromise().then(() => {
407
+ this.abstractCrudService.enableOrDisableAll(idList, action, version).toPromise().then(() => {
405
408
  if (fetchAgain) {
406
409
  this.findAll();
407
410
  }
@@ -468,4 +471,4 @@ GIPIAbstractFindComponent = __decorate([
468
471
  ActivatedRoute])
469
472
  ], GIPIAbstractFindComponent);
470
473
  export { GIPIAbstractFindComponent };
471
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmluZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJjb3JlL2dpcGktY29tcG9uZW50cy9jb21wb25lbnRzL2Fic3RyYWN0LWZpbmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHN0QsSUFBc0IseUJBQXlCLEdBQS9DLE1BQXNCLHlCQUFzRyxTQUFRLHFCQUFxQjtJQTBDckosWUFDYyxtQkFBOEQsRUFDOUQsV0FBNEIsRUFDNUIsY0FBOEI7UUFFeEMsS0FBSyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUp6Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTJDO1FBQzlELGdCQUFXLEdBQVgsV0FBVyxDQUFp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Q0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDckcsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5RSxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ2pDLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFFRCxPQUFPLFlBQVksQ0FBQztTQUN2QjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7Q0FFSixDQUFBOztZQXZkc0MsdUJBQXVCO1lBQy9CLGVBQWU7WUFDWixjQUFjOztBQTdDMUIseUJBQXlCO0lBRDlDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQztxQ0E0Q1csdUJBQXVCO1FBQy9CLGVBQWU7UUFDWixjQUFjO0dBN0MxQix5QkFBeUIsQ0FrZ0I5QztTQWxnQnFCLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgSU5KRUNUT1IgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBBUFBfTUVTU0FHRVMgfSBmcm9tICcuLi8uLi9hcHAubWVzc2FnZXMnO1xuaW1wb3J0IHsgVGFibGVDb2x1bW5EVE8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZHRvL3RhYmxlLWNvbHVtbi5kdG8nO1xuaW1wb3J0IHsgVGFibGVQYWdlRXZlbnREVE8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZHRvL3RhYmxlLXBhZ2UtZXZlbnQuZHRvJztcbmltcG9ydCB7IEFycmF5VXRpbCB9IGZyb20gJy4uLy4uL3V0aWxzL2FycmF5LnV0aWwnO1xuaW1wb3J0IHsgT2JqZWN0VXRpbCB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdC51dGlsJztcbmltcG9ydCB7IFN0cmluZ1V0aWwgfSBmcm9tICcuLi8uLi91dGlscy9zdHJpbmcudXRpbCc7XG5pbXBvcnQgeyBHSVBJQWJzdHJhY3RGaWx0ZXJNb2RlbCB9IGZyb20gJy4uL21vZGVscy9hYnN0cmFjdC1maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgR0lQSUFic3RyYWN0TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvYWJzdHJhY3QubW9kZWwnO1xuaW1wb3J0IHsgR0lQSUFwcGxpZWRGaWx0ZXIgfSBmcm9tICcuLi9tb2RlbHMvYXBwbGllZC1maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgR0lQSVBhZ2VNb2RlbCB9IGZyb20gJy4uL21vZGVscy9wYWdlLm1vZGVsJztcbmltcG9ydCB7IEdJUElTb3J0TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc29ydC5tb2RlbCc7XG5pbXBvcnQgeyBHSVBJQWJzdHJhY3RDcnVkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Fic3RyYWN0LWNydWQuc2VydmljZSc7XG5pbXBvcnQgeyBHSVBJQmFzZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9iYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgR0lQSVV1aWQgfSBmcm9tICcuLi90eXBlcy91dWlkLnR5cGUnO1xuaW1wb3J0IHsgR0lQSUFic3RyYWN0Q29tcG9uZW50IH0gZnJvbSAnLi9hYnN0cmFjdC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR0lQSUFic3RyYWN0RmluZENvbXBvbmVudDxURW50aXR5IGV4dGVuZHMgR0lQSUFic3RyYWN0TW9kZWwsIFRGaWx0ZXIgZXh0ZW5kcyBHSVBJQWJzdHJhY3RGaWx0ZXJNb2RlbD4gZXh0ZW5kcyBHSVBJQWJzdHJhY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBwcml2YXRlIF9maWx0ZXI6IFRGaWx0ZXIgPSBudWxsO1xuICAgIHB1YmxpYyBzZXQgZmlsdGVyKHZhbHVlOiBURmlsdGVyKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlciA9IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGZpbHRlcigpOiBURmlsdGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYWdlOiBHSVBJUGFnZU1vZGVsPFRFbnRpdHk+ID0gbnVsbDtcbiAgICBwdWJsaWMgc2V0IHBhZ2UodmFsdWU6IEdJUElQYWdlTW9kZWw8VEVudGl0eT4pIHtcbiAgICAgICAgdGhpcy5fcGFnZSA9IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHBhZ2UoKTogR0lQSVBhZ2VNb2RlbDxURW50aXR5PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3RhYmxlUGFnZUV2ZW50RFRPOiBUYWJsZVBhZ2VFdmVudERUTztcbiAgICBwdWJsaWMgc2V0IHRhYmxlUGFnZUV2ZW50RFRPKHZhbHVlOiBUYWJsZVBhZ2VFdmVudERUTykge1xuICAgICAgICB0aGlzLl90YWJsZVBhZ2VFdmVudERUTyA9IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHRhYmxlUGFnZUV2ZW50RFRPKCk6IFRhYmxlUGFnZUV2ZW50RFRPIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlUGFnZUV2ZW50RFRPO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NvbHVtbnM6IFRhYmxlQ29sdW1uRFRPW10gPSBbXTtcbiAgICBwdWJsaWMgc2V0IGNvbHVtbnModmFsdWU6IFRhYmxlQ29sdW1uRFRPW10pIHtcbiAgICAgICAgdGhpcy5fY29sdW1ucyA9IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGNvbHVtbnMoKTogVGFibGVDb2x1bW5EVE9bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FwcGxpZWRGaWx0ZXJzOiBHSVBJQXBwbGllZEZpbHRlcjxhbnk+W10gPSBbXTtcbiAgICBwdWJsaWMgc2V0IGFwcGxpZWRGaWx0ZXJzKHZhbHVlOiBHSVBJQXBwbGllZEZpbHRlcjxhbnk+W10pIHtcbiAgICAgICAgdGhpcy5fYXBwbGllZEZpbHRlcnMgPSB2YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIGdldCBhcHBsaWVkRmlsdGVycygpOiBHSVBJQXBwbGllZEZpbHRlcjxhbnk+W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwbGllZEZpbHRlcnM7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBhYnN0cmFjdENydWRTZXJ2aWNlOiBHSVBJQWJzdHJhY3RDcnVkU2VydmljZTxURW50aXR5LCBURmlsdGVyPixcbiAgICAgICAgcHJvdGVjdGVkIGJhc2VTZXJ2aWNlOiBHSVBJQmFzZVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGJhc2VTZXJ2aWNlLCBhY3RpdmF0ZWRSb3V0ZSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYXNlUGVybWlzc2lvbkxpc3QgaXMgcmVxdWlyZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29uSW5pdEZpbHRlcigpO1xuICAgICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmNyZWF0ZVRhYmxlQ29sdW1ucygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IG5ld0ZpbHRlcigpOiBURmlsdGVyO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZVRhYmxlQ29sdW1ucygpOiBUYWJsZUNvbHVtbkRUT1tdO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHNldEFwcGxpZWRGaWx0ZXJzKCk6IHZvaWQ7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2xlYXJBcHBsaWVkRmlsdGVycygpOiB2b2lkO1xuXG4gICAgcHVibGljIGFic3RyYWN0IHJlbW92ZUFwcGxpZWRGaWx0ZXJzKGZpbHRlcjogeyBjaGlwOiBHSVBJQXBwbGllZEZpbHRlcjxhbnk+OyBpbmRleDogbnVtYmVyOyB9KTogdm9pZDtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpOiB2b2lkO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGhhbmRsZUZpbHRlclNlc3Npb25TdG9yYWdlKCk6IHZvaWQ7XG5cbiAgICBwcm90ZWN0ZWQgbmV3UGFnZSgpOiBHSVBJUGFnZU1vZGVsPFRFbnRpdHk+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBHSVBJUGFnZU1vZGVsPFRFbnRpdHk+KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVRhYmxlU29ydHMoKTogR0lQSVNvcnRNb2RlbFtdIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBwcmVEZWxldGUoaWQ/OiBHSVBJVXVpZCk6IHZvaWQgeyB9XG5cbiAgICBwcm90ZWN0ZWQgZXhpc3RJbkFwcGxpZWRGaWx0ZXJzPFQgPSBhbnk+KGtleTogVCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIUFycmF5VXRpbC5pc0VtcHR5KHRoaXMuYXBwbGllZEZpbHRlcnMpICYmXG4gICAgICAgICAgICAodGhpcy5hcHBsaWVkRmlsdGVycy5maW5kSW5kZXgoZSA9PiBlLmtleSA9PT0ga2V5KSA+PSAwKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBASW50ZXJuYWwgKi9cbiAgICBwcm90ZWN0ZWQgX29uSW5pdEZpbHRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG4gICAgICAgIHRoaXMuZmlsdGVyID0gdGhpcy5uZXdGaWx0ZXIoKTtcblxuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuZmlsdGVyKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRBcHBsaWVkRmlsdGVycygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyU2Vzc2lvblN0b3JhZ2UgPSB0aGlzLmJhc2VTZXJ2aWNlLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXQoJ2ZpbHRlcicpO1xuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKGZpbHRlclNlc3Npb25TdG9yYWdlKSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRBbGwocGFnZUV2ZW50PzogYW55KTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLm5ld1BhZ2UoKTtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmZpbHRlcikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlciA9IHRoaXMubmV3RmlsdGVyKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChwYWdlRXZlbnQpICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLnRhYmxlUGFnZUV2ZW50RFRPKSkge1xuICAgICAgICAgICAgICAgIHBhZ2VFdmVudCA9IHRoaXMudGFibGVQYWdlRXZlbnREVE87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYWdlRXZlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUGFnZUV2ZW50RFRPID0gcGFnZUV2ZW50O1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyLnBhZ2VOdW1iZXIgPSBwYWdlRXZlbnQucGFnZUluZGV4O1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyLnBhZ2VTaXplID0gcGFnZUV2ZW50LnBhZ2VTaXplO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyLm9mZnNldCA9IHBhZ2VFdmVudC5wYWdlSW5kZXggKiBwYWdlRXZlbnQucGFnZVNpemU7XG5cbiAgICAgICAgICAgICAgICBpZiAocGFnZUV2ZW50LnNvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIuc29ydHMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgR0lQSVNvcnRNb2RlbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRXZlbnQuc29ydC5hY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nVXRpbC5pc0VtcHR5KHBhZ2VFdmVudC5zb3J0LmRpcmVjdGlvbikgPyAnREVTQycgOiBwYWdlRXZlbnQuc29ydC5kaXJlY3Rpb24udG9VcHBlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIucGFnZU51bWJlciA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIub2Zmc2V0ID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlci5wYWdlU2l6ZSA9IDEwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmFic3RyYWN0Q3J1ZFNlcnZpY2UuZmluZEFsbDxURmlsdGVyLCBURW50aXR5Pih0aGlzLmZpbHRlcikudG9Qcm9taXNlKCkudGhlbihwYWdlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSBwYWdlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0QXBwbGllZEZpbHRlcnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5ld1JlZ2lzdGVyKHBlcm1pc3Npb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiBPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmdldFBhdGgoKSwgW3RoaXMuZ2V0UGF0aCgpLCAnbmV3J10sIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbiA9IHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0Lk1BS0U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkV2FybmluZ01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuTk9UX1BFUk1JU1NJT04pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCksICduZXcnXSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZWRpdFJlZ2lzdGVyKGlkPzogR0lQSVV1aWQsIHBlcm1pc3Npb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWQgPSB0aGlzLmhhbmRsZUVudGl0eUlkKGlkKTtcbiAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiBPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmdldFBhdGgoKSwgW3RoaXMuZ2V0UGF0aCgpLCAnZWRpdCddLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gPSB0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdC5VUERBVEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkV2FybmluZ01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuTk9UX1BFUk1JU1NJT04pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCksICdlZGl0JywgaWRdLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVSZWdpc3RlcihpZD86IEdJUElVdWlkLCBwZXJtaXNzaW9uPzogc3RyaW5nLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWQgPSB0aGlzLmhhbmRsZUVudGl0eUlkKGlkKTtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChpZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVsZXRlUmVnaXN0ZXIoaWQsIGZldGNoQWdhaW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbiA9IHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0LkRFTEVURTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc1Blcm1pc3Npb24ocGVybWlzc2lvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRXYXJuaW5nTWVzc2FnZShJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5OT1RfUEVSTUlTU0lPTik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kZWxldGVSZWdpc3RlcihpZCwgZmV0Y2hBZ2Fpbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNMaXN0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQEludGVybmFsICovXG4gICAgcHJpdmF0ZSBfZGVsZXRlUmVnaXN0ZXIoaWQ6IEdJUElVdWlkLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5iYXNlU2VydmljZS5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybWHDp8OjbycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuREVMRVRFX0NPTkZJUk1BVElPTixcbiAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmV3UGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZURlbGV0ZShpZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hYnN0cmFjdENydWRTZXJ2aWNlLmRlbGV0ZTxURW50aXR5PihpZCkudG9Qcm9taXNlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmV0Y2hBZ2Fpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZEFsbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFN1Y2Nlc3NNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLlNVQ0NFU1MpO1xuICAgICAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlQWxsUmVnaXN0ZXIoaWRMaXN0PzogR0lQSVV1aWRbXSwgcGVybWlzc2lvbj86IHN0cmluZywgZmV0Y2hBZ2FpbjogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlkTGlzdCA9IHRoaXMuaGFuZGxlRW50aXR5SWRMaXN0KGlkTGlzdCk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwoaWRMaXN0KSB8fCBBcnJheVV0aWwuaXNFbXB0eShpZExpc3QpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RlbGV0ZUFsbFJlZ2lzdGVyKGlkTGlzdCwgZmV0Y2hBZ2Fpbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uID0gdGhpcy5iYXNlUGVybWlzc2lvbkxpc3QuREVMRVRFO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFdhcm5pbmdNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLk5PVF9QRVJNSVNTSU9OKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2RlbGV0ZUFsbFJlZ2lzdGVyKGlkTGlzdCwgZmV0Y2hBZ2Fpbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNMaXN0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQEludGVybmFsICovXG4gICAgcHJpdmF0ZSBfZGVsZXRlQWxsUmVnaXN0ZXIoaWRMaXN0OiBHSVBJVXVpZFtdLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5iYXNlU2VydmljZS5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybWHDp8OjbycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuREVMRVRFX0NPTkZJUk1BVElPTixcbiAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmV3UGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZURlbGV0ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWJzdHJhY3RDcnVkU2VydmljZS5kZWxldGVBbGwoaWRMaXN0KS50b1Byb21pc2UoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZXRjaEFnYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQWxsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkU3VjY2Vzc01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuU1VDQ0VTUyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB2aWV3UmVnaXN0ZXIoaWQ/OiBHSVBJVXVpZCwgcGVybWlzc2lvbj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZCA9IHRoaXMuaGFuZGxlRW50aXR5SWQoaWQpO1xuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwoaWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCksICd2aWV3JywgaWRdLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gPSB0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdC5SRUFEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc1Blcm1pc3Npb24ocGVybWlzc2lvbikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFdhcm5pbmdNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLk5PVF9QRVJNSVNTSU9OKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmdldFBhdGgoKSwgW3RoaXMuZ2V0UGF0aCgpLCAndmlldycsIGlkXSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZWRpdE9yVmlld1JlZ2lzdGVyKGlkOiBHSVBJVXVpZCwgcGVybWlzc2lvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc1Blcm1pc3Npb24ocGVybWlzc2lvbikpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdFJlZ2lzdGVyKGlkLCBwZXJtaXNzaW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmlld1JlZ2lzdGVyKGlkLCBwZXJtaXNzaW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBlbmFibGVPckRpc2FibGVSZWdpc3RlcihhY3Rpb246ICdESVNBQkxFJyB8ICdFTkFCTEUnLCBpZD86IEdJUElVdWlkLCBwZXJtaXNzaW9uPzogc3RyaW5nLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWQgPSB0aGlzLmhhbmRsZUVudGl0eUlkKGlkKTtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChpZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW5hYmxlT3JEaXNhYmxlUmVnaXN0ZXIoYWN0aW9uLCBpZCwgZmV0Y2hBZ2Fpbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uID0gdGhpcy5iYXNlUGVybWlzc2lvbkxpc3QuVVBEQVRFO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFdhcm5pbmdNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLk5PVF9QRVJNSVNTSU9OKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZU9yRGlzYWJsZVJlZ2lzdGVyKGFjdGlvbiwgaWQsIGZldGNoQWdhaW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTGlzdGluZygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBJbnRlcm5hbCAqL1xuICAgIHByaXZhdGUgX2VuYWJsZU9yRGlzYWJsZVJlZ2lzdGVyKGFjdGlvbjogJ0RJU0FCTEUnIHwgJ0VOQUJMRScsIGlkOiBHSVBJVXVpZCwgZmV0Y2hBZ2FpbjogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuYmFzZVNlcnZpY2UuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm1hw6fDo28nLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBEZXNlamEgcmVhbG1lbnRlICR7KGFjdGlvbiA9PT0gJ0RJU0FCTEUnKSA/ICdpbmF0aXZhcicgOiAnYXRpdmFyJ30gZXN0ZSByZWdpc3Rybz9gLFxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hYnN0cmFjdENydWRTZXJ2aWNlLmVuYWJsZU9yRGlzYWJsZShpZCwgYWN0aW9uKS50b1Byb21pc2UoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZXRjaEFnYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQWxsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkU3VjY2Vzc01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuU1VDQ0VTUyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBlbmFibGVBbmREaXNhYmxlQWxsUmVnaXN0ZXIoYWN0aW9uOiAnRElTQUJMRScgfCAnRU5BQkxFJywgaWRMaXN0PzogR0lQSVV1aWRbXSwgcGVybWlzc2lvbj86IHN0cmluZywgZmV0Y2hBZ2FpbjogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlkTGlzdCA9IHRoaXMuaGFuZGxlRW50aXR5SWRMaXN0KGlkTGlzdCk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwoaWRMaXN0KSB8fCBBcnJheVV0aWwuaXNFbXB0eShpZExpc3QpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZUFuZERpc2FibGVBbGxSZWdpc3RlcihhY3Rpb24sIGlkTGlzdCwgZmV0Y2hBZ2Fpbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uID0gdGhpcy5iYXNlUGVybWlzc2lvbkxpc3QuVVBEQVRFO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFdhcm5pbmdNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLk5PVF9QRVJNSVNTSU9OKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZUFuZERpc2FibGVBbGxSZWdpc3RlcihhY3Rpb24sIGlkTGlzdCwgZmV0Y2hBZ2Fpbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNMaXN0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQEludGVybmFsICovXG4gICAgcHJpdmF0ZSBfZW5hYmxlQW5kRGlzYWJsZUFsbFJlZ2lzdGVyKGFjdGlvbjogJ0RJU0FCTEUnIHwgJ0VOQUJMRScsIGlkTGlzdDogR0lQSVV1aWRbXSwgZmV0Y2hBZ2FpbjogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuYmFzZVNlcnZpY2UuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm1hw6fDo28nLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBEZXNlamEgcmVhbG1lbnRlICR7KGFjdGlvbiA9PT0gJ0RJU0FCTEUnKSA/ICdpbmF0aXZhcicgOiAnYXRpdmFyJ30gb3MgcmVnaXN0cm9zIHNlbGVjaW9uYWRvcz9gLFxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hYnN0cmFjdENydWRTZXJ2aWNlLmVuYWJsZU9yRGlzYWJsZUFsbChpZExpc3QsIGFjdGlvbikudG9Qcm9taXNlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmV0Y2hBZ2Fpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZEFsbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFN1Y2Nlc3NNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLlNVQ0NFU1MpO1xuICAgICAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYmFzZVNlcnZpY2Uuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnJlbW92ZSgnZmlsdGVyJyk7XG4gICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmV3UGFnZSgpO1xuICAgICAgICB0aGlzLmZpbHRlciA9IHRoaXMubmV3RmlsdGVyKCk7XG4gICAgICAgIHRoaXMuY2xlYXJBcHBsaWVkRmlsdGVycygpO1xuICAgICAgICB0aGlzLmZpbmRBbGwoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRW50aXR5SWQoaWQ6IEdJUElVdWlkKTogR0lQSVV1aWQge1xuICAgICAgICBpZiAoIXRoaXMuVVVJRElzVmFsaWQoaWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ08gaWRlbnRpZmljYWRvciBkbyByZWdpc3RybyBuw6NvIMOpIHbDoWxpZG8nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChpZCkgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMucGFnZSkgJiYgIUFycmF5VXRpbC5pc0VtcHR5KHRoaXMucGFnZS5jb250ZW50KSkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RTZWxldGVjdGVkID0gdGhpcy5wYWdlLmNvbnRlbnQuZmlsdGVyKGMgPT4gYy5zZWxlY3RlZClbMF07XG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwoZmlyc3RTZWxldGVjdGVkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmlyc3RTZWxldGVjdGVkLmlkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVFbnRpdHlJZExpc3QoaWRMaXN0OiBHSVBJVXVpZFtdKTogR0lQSVV1aWRbXSB7XG4gICAgICAgIGlmICghQXJyYXlVdGlsLmlzRW1wdHkoaWRMaXN0KSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuVVVJRElzVmFsaWQoaWRMaXN0W2ldKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ08gaWRlbnRpZmljYWRvciBkbyByZWdpc3RybyBuw6NvIMOpIHbDoWxpZG8nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXlVdGlsLmlzRW1wdHkoaWRMaXN0KSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5wYWdlKSAmJiAhQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5wYWdlLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBsaXN0U2VsZWN0ZWQgPSB0aGlzLnBhZ2UuY29udGVudC5maWx0ZXIocCA9PiBwLnNlbGVjdGVkKS5tYXAocCA9PiBwLmlkKTtcbiAgICAgICAgICAgIGlmIChBcnJheVV0aWwuaXNFbXB0eShsaXN0U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBsaXN0U2VsZWN0ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaWRMaXN0O1xuICAgIH1cblxufVxuIl19
474
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmluZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJjb3JlL2dpcGktY29tcG9uZW50cy9jb21wb25lbnRzL2Fic3RyYWN0LWZpbmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHN0QsSUFBc0IseUJBQXlCLEdBQS9DLE1BQXNCLHlCQUFzRyxTQUFRLHFCQUFxQjtJQTBDckosWUFDYyxtQkFBOEQsRUFDOUQsV0FBNEIsRUFDNUIsY0FBOEI7UUFFeEMsS0FBSyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUp6Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTJDO1FBQzlELGdCQUFXLEdBQVgsV0FBVyxDQUFp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ZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IElOSkVDVE9SIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgQVBQX01FU1NBR0VTIH0gZnJvbSAnLi4vLi4vYXBwLm1lc3NhZ2VzJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uRFRPIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2R0by90YWJsZS1jb2x1bW4uZHRvJztcbmltcG9ydCB7IFRhYmxlUGFnZUV2ZW50RFRPIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2R0by90YWJsZS1wYWdlLWV2ZW50LmR0byc7XG5pbXBvcnQgeyBBcnJheVV0aWwgfSBmcm9tICcuLi8uLi91dGlscy9hcnJheS51dGlsJztcbmltcG9ydCB7IE9iamVjdFV0aWwgfSBmcm9tICcuLi8uLi91dGlscy9vYmplY3QudXRpbCc7XG5pbXBvcnQgeyBTdHJpbmdVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nLnV0aWwnO1xuaW1wb3J0IHsgR0lQSUFic3RyYWN0RmlsdGVyTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvYWJzdHJhY3QtZmlsdGVyLm1vZGVsJztcbmltcG9ydCB7IEdJUElBYnN0cmFjdE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2Fic3RyYWN0Lm1vZGVsJztcbmltcG9ydCB7IEdJUElBcHBsaWVkRmlsdGVyIH0gZnJvbSAnLi4vbW9kZWxzL2FwcGxpZWQtZmlsdGVyLm1vZGVsJztcbmltcG9ydCB7IEdJUElQYWdlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvcGFnZS5tb2RlbCc7XG5pbXBvcnQgeyBHSVBJU29ydE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NvcnQubW9kZWwnO1xuaW1wb3J0IHsgR0lQSUFic3RyYWN0Q3J1ZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hYnN0cmFjdC1jcnVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgR0lQSUJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IEdJUElVdWlkIH0gZnJvbSAnLi4vdHlwZXMvdXVpZC50eXBlJztcbmltcG9ydCB7IEdJUElBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJy4vYWJzdHJhY3QuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7IHRlbXBsYXRlOiAnJyB9KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdJUElBYnN0cmFjdEZpbmRDb21wb25lbnQ8VEVudGl0eSBleHRlbmRzIEdJUElBYnN0cmFjdE1vZGVsLCBURmlsdGVyIGV4dGVuZHMgR0lQSUFic3RyYWN0RmlsdGVyTW9kZWw+IGV4dGVuZHMgR0lQSUFic3RyYWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgcHJpdmF0ZSBfZmlsdGVyOiBURmlsdGVyID0gbnVsbDtcbiAgICBwdWJsaWMgc2V0IGZpbHRlcih2YWx1ZTogVEZpbHRlcikge1xuICAgICAgICB0aGlzLl9maWx0ZXIgPSB2YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIGdldCBmaWx0ZXIoKTogVEZpbHRlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFnZTogR0lQSVBhZ2VNb2RlbDxURW50aXR5PiA9IG51bGw7XG4gICAgcHVibGljIHNldCBwYWdlKHZhbHVlOiBHSVBJUGFnZU1vZGVsPFRFbnRpdHk+KSB7XG4gICAgICAgIHRoaXMuX3BhZ2UgPSB2YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIGdldCBwYWdlKCk6IEdJUElQYWdlTW9kZWw8VEVudGl0eT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90YWJsZVBhZ2VFdmVudERUTzogVGFibGVQYWdlRXZlbnREVE87XG4gICAgcHVibGljIHNldCB0YWJsZVBhZ2VFdmVudERUTyh2YWx1ZTogVGFibGVQYWdlRXZlbnREVE8pIHtcbiAgICAgICAgdGhpcy5fdGFibGVQYWdlRXZlbnREVE8gPSB2YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIGdldCB0YWJsZVBhZ2VFdmVudERUTygpOiBUYWJsZVBhZ2VFdmVudERUTyB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZVBhZ2VFdmVudERUTztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb2x1bW5zOiBUYWJsZUNvbHVtbkRUT1tdID0gW107XG4gICAgcHVibGljIHNldCBjb2x1bW5zKHZhbHVlOiBUYWJsZUNvbHVtbkRUT1tdKSB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMgPSB2YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIGdldCBjb2x1bW5zKCk6IFRhYmxlQ29sdW1uRFRPW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hcHBsaWVkRmlsdGVyczogR0lQSUFwcGxpZWRGaWx0ZXI8YW55PltdID0gW107XG4gICAgcHVibGljIHNldCBhcHBsaWVkRmlsdGVycyh2YWx1ZTogR0lQSUFwcGxpZWRGaWx0ZXI8YW55PltdKSB7XG4gICAgICAgIHRoaXMuX2FwcGxpZWRGaWx0ZXJzID0gdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgYXBwbGllZEZpbHRlcnMoKTogR0lQSUFwcGxpZWRGaWx0ZXI8YW55PltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGxpZWRGaWx0ZXJzO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgYWJzdHJhY3RDcnVkU2VydmljZTogR0lQSUFic3RyYWN0Q3J1ZFNlcnZpY2U8VEVudGl0eSwgVEZpbHRlcj4sXG4gICAgICAgIHByb3RlY3RlZCBiYXNlU2VydmljZTogR0lQSUJhc2VTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICkge1xuICAgICAgICBzdXBlcihiYXNlU2VydmljZSwgYWN0aXZhdGVkUm91dGUpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFzZVBlcm1pc3Npb25MaXN0IGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vbkluaXRGaWx0ZXIoKTtcbiAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jcmVhdGVUYWJsZUNvbHVtbnMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBuZXdGaWx0ZXIoKTogVEZpbHRlcjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGVUYWJsZUNvbHVtbnMoKTogVGFibGVDb2x1bW5EVE9bXTtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRBcHBsaWVkRmlsdGVycygpOiB2b2lkO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGNsZWFyQXBwbGllZEZpbHRlcnMoKTogdm9pZDtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCByZW1vdmVBcHBsaWVkRmlsdGVycyhmaWx0ZXI6IHsgY2hpcDogR0lQSUFwcGxpZWRGaWx0ZXI8YW55PjsgaW5kZXg6IG51bWJlcjsgfSk6IHZvaWQ7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0RmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTogdm9pZDtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBoYW5kbGVGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpOiB2b2lkO1xuXG4gICAgcHJvdGVjdGVkIG5ld1BhZ2UoKTogR0lQSVBhZ2VNb2RlbDxURW50aXR5PiB7XG4gICAgICAgIHJldHVybiBuZXcgR0lQSVBhZ2VNb2RlbDxURW50aXR5PigpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVUYWJsZVNvcnRzKCk6IEdJUElTb3J0TW9kZWxbXSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcHJlRGVsZXRlKGlkPzogR0lQSVV1aWQpOiB2b2lkIHsgfVxuXG4gICAgcHJvdGVjdGVkIGV4aXN0SW5BcHBsaWVkRmlsdGVyczxUID0gYW55PihrZXk6IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICFBcnJheVV0aWwuaXNFbXB0eSh0aGlzLmFwcGxpZWRGaWx0ZXJzKSAmJlxuICAgICAgICAgICAgKHRoaXMuYXBwbGllZEZpbHRlcnMuZmluZEluZGV4KGUgPT4gZS5rZXkgPT09IGtleSkgPj0gMClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQEludGVybmFsICovXG4gICAgcHJvdGVjdGVkIF9vbkluaXRGaWx0ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmV3UGFnZSgpO1xuICAgICAgICB0aGlzLmZpbHRlciA9IHRoaXMubmV3RmlsdGVyKCk7XG5cbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmZpbHRlcikpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QXBwbGllZEZpbHRlcnMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlclNlc3Npb25TdG9yYWdlID0gdGhpcy5iYXNlU2VydmljZS5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0KCdmaWx0ZXInKTtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbChmaWx0ZXJTZXNzaW9uU3RvcmFnZSkpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBmaW5kQWxsKHBhZ2VFdmVudD86IGFueSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwodGhpcy5maWx0ZXIpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIgPSB0aGlzLm5ld0ZpbHRlcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwocGFnZUV2ZW50KSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy50YWJsZVBhZ2VFdmVudERUTykpIHtcbiAgICAgICAgICAgICAgICBwYWdlRXZlbnQgPSB0aGlzLnRhYmxlUGFnZUV2ZW50RFRPO1xuXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaGFzUHJvcGVydHlJbk9iaihwYWdlRXZlbnQsICdwYWdlSW5kZXgnKSkge1xuICAgICAgICAgICAgICAgICAgICBwYWdlRXZlbnQucGFnZUluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYWdlRXZlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUGFnZUV2ZW50RFRPID0gcGFnZUV2ZW50O1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyLnBhZ2VOdW1iZXIgPSBwYWdlRXZlbnQucGFnZUluZGV4O1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyLnBhZ2VTaXplID0gcGFnZUV2ZW50LnBhZ2VTaXplO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyLm9mZnNldCA9IHBhZ2VFdmVudC5wYWdlSW5kZXggKiBwYWdlRXZlbnQucGFnZVNpemU7XG5cbiAgICAgICAgICAgICAgICBpZiAocGFnZUV2ZW50LnNvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIuc29ydHMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgR0lQSVNvcnRNb2RlbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRXZlbnQuc29ydC5hY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nVXRpbC5pc0VtcHR5KHBhZ2VFdmVudC5zb3J0LmRpcmVjdGlvbikgPyAnREVTQycgOiBwYWdlRXZlbnQuc29ydC5kaXJlY3Rpb24udG9VcHBlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIucGFnZU51bWJlciA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIub2Zmc2V0ID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlci5wYWdlU2l6ZSA9IDEwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmFic3RyYWN0Q3J1ZFNlcnZpY2UuZmluZEFsbDxURmlsdGVyLCBURW50aXR5Pih0aGlzLmZpbHRlcikudG9Qcm9taXNlKCkudGhlbihwYWdlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSBwYWdlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0QXBwbGllZEZpbHRlcnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5ld1JlZ2lzdGVyKHBlcm1pc3Npb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiBPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmdldFBhdGgoKSwgW3RoaXMuZ2V0UGF0aCgpLCAnbmV3J10sIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbiA9IHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0Lk1BS0U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkV2FybmluZ01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuTk9UX1BFUk1JU1NJT04pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCksICduZXcnXSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZWRpdFJlZ2lzdGVyKGlkPzogR0lQSVV1aWQsIHBlcm1pc3Npb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWQgPSB0aGlzLmhhbmRsZUVudGl0eUlkKGlkKTtcbiAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiBPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmdldFBhdGgoKSwgW3RoaXMuZ2V0UGF0aCgpLCAnZWRpdCddLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gPSB0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdC5VUERBVEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkV2FybmluZ01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuTk9UX1BFUk1JU1NJT04pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCksICdlZGl0JywgaWRdLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVSZWdpc3RlcihpZD86IEdJUElVdWlkLCBwZXJtaXNzaW9uPzogc3RyaW5nLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSwgdmVyc2lvbj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWQgPSB0aGlzLmhhbmRsZUVudGl0eUlkKGlkKTtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChpZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVsZXRlUmVnaXN0ZXIoaWQsIGZldGNoQWdhaW4sIHZlcnNpb24pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbiA9IHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0LkRFTEVURTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc1Blcm1pc3Npb24ocGVybWlzc2lvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRXYXJuaW5nTWVzc2FnZShJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5OT1RfUEVSTUlTU0lPTik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kZWxldGVSZWdpc3RlcihpZCwgZmV0Y2hBZ2FpbiwgdmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNMaXN0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQEludGVybmFsICovXG4gICAgcHJpdmF0ZSBfZGVsZXRlUmVnaXN0ZXIoaWQ6IEdJUElVdWlkLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSwgdmVyc2lvbj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5iYXNlU2VydmljZS5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybWHDp8OjbycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuREVMRVRFX0NPTkZJUk1BVElPTixcbiAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmV3UGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZURlbGV0ZShpZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hYnN0cmFjdENydWRTZXJ2aWNlLmRlbGV0ZTxURW50aXR5PihpZCwgdmVyc2lvbikudG9Qcm9taXNlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmV0Y2hBZ2Fpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZEFsbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFN1Y2Nlc3NNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLlNVQ0NFU1MpO1xuICAgICAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlQWxsUmVnaXN0ZXIoaWRMaXN0PzogR0lQSVV1aWRbXSwgcGVybWlzc2lvbj86IHN0cmluZywgZmV0Y2hBZ2FpbjogYm9vbGVhbiA9IHRydWUsIHZlcnNpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlkTGlzdCA9IHRoaXMuaGFuZGxlRW50aXR5SWRMaXN0KGlkTGlzdCk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwoaWRMaXN0KSB8fCBBcnJheVV0aWwuaXNFbXB0eShpZExpc3QpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RlbGV0ZUFsbFJlZ2lzdGVyKGlkTGlzdCwgZmV0Y2hBZ2FpbiwgdmVyc2lvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uID0gdGhpcy5iYXNlUGVybWlzc2lvbkxpc3QuREVMRVRFO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFdhcm5pbmdNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLk5PVF9QRVJNSVNTSU9OKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2RlbGV0ZUFsbFJlZ2lzdGVyKGlkTGlzdCwgZmV0Y2hBZ2FpbiwgdmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNMaXN0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQEludGVybmFsICovXG4gICAgcHJpdmF0ZSBfZGVsZXRlQWxsUmVnaXN0ZXIoaWRMaXN0OiBHSVBJVXVpZFtdLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSwgdmVyc2lvbj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5iYXNlU2VydmljZS5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybWHDp8OjbycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuREVMRVRFX0NPTkZJUk1BVElPTixcbiAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmV3UGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZURlbGV0ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWJzdHJhY3RDcnVkU2VydmljZS5kZWxldGVBbGwoaWRMaXN0LCB2ZXJzaW9uKS50b1Byb21pc2UoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZXRjaEFnYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQWxsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkU3VjY2Vzc01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuU1VDQ0VTUyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB2aWV3UmVnaXN0ZXIoaWQ/OiBHSVBJVXVpZCwgcGVybWlzc2lvbj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZCA9IHRoaXMuaGFuZGxlRW50aXR5SWQoaWQpO1xuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwoaWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCksICd2aWV3JywgaWRdLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gPSB0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdC5SRUFEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc1Blcm1pc3Npb24ocGVybWlzc2lvbikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFdhcm5pbmdNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLk5PVF9QRVJNSVNTSU9OKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmdldFBhdGgoKSwgW3RoaXMuZ2V0UGF0aCgpLCAndmlldycsIGlkXSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZWRpdE9yVmlld1JlZ2lzdGVyKGlkOiBHSVBJVXVpZCwgcGVybWlzc2lvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc1Blcm1pc3Npb24ocGVybWlzc2lvbikpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdFJlZ2lzdGVyKGlkLCBwZXJtaXNzaW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmlld1JlZ2lzdGVyKGlkLCBwZXJtaXNzaW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBlbmFibGVPckRpc2FibGVSZWdpc3RlcihhY3Rpb246ICdESVNBQkxFJyB8ICdFTkFCTEUnLCBpZD86IEdJUElVdWlkLCBwZXJtaXNzaW9uPzogc3RyaW5nLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSwgdmVyc2lvbj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWQgPSB0aGlzLmhhbmRsZUVudGl0eUlkKGlkKTtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChpZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW5hYmxlT3JEaXNhYmxlUmVnaXN0ZXIoYWN0aW9uLCBpZCwgZmV0Y2hBZ2FpbiwgdmVyc2lvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uID0gdGhpcy5iYXNlUGVybWlzc2lvbkxpc3QuVVBEQVRFO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFdhcm5pbmdNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLk5PVF9QRVJNSVNTSU9OKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZU9yRGlzYWJsZVJlZ2lzdGVyKGFjdGlvbiwgaWQsIGZldGNoQWdhaW4sIHZlcnNpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTGlzdGluZygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBJbnRlcm5hbCAqL1xuICAgIHByaXZhdGUgX2VuYWJsZU9yRGlzYWJsZVJlZ2lzdGVyKGFjdGlvbjogJ0RJU0FCTEUnIHwgJ0VOQUJMRScsIGlkOiBHSVBJVXVpZCwgZmV0Y2hBZ2FpbjogYm9vbGVhbiA9IHRydWUsIHZlcnNpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuYmFzZVNlcnZpY2UuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm1hw6fDo28nLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBEZXNlamEgcmVhbG1lbnRlICR7KGFjdGlvbiA9PT0gJ0RJU0FCTEUnKSA/ICdpbmF0aXZhcicgOiAnYXRpdmFyJ30gZXN0ZSByZWdpc3Rybz9gLFxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hYnN0cmFjdENydWRTZXJ2aWNlLmVuYWJsZU9yRGlzYWJsZShpZCwgYWN0aW9uLCB2ZXJzaW9uKS50b1Byb21pc2UoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZXRjaEFnYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQWxsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkU3VjY2Vzc01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuU1VDQ0VTUyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBlbmFibGVBbmREaXNhYmxlQWxsUmVnaXN0ZXIoYWN0aW9uOiAnRElTQUJMRScgfCAnRU5BQkxFJywgaWRMaXN0PzogR0lQSVV1aWRbXSwgcGVybWlzc2lvbj86IHN0cmluZywgZmV0Y2hBZ2FpbjogYm9vbGVhbiA9IHRydWUsIHZlcnNpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlkTGlzdCA9IHRoaXMuaGFuZGxlRW50aXR5SWRMaXN0KGlkTGlzdCk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwoaWRMaXN0KSB8fCBBcnJheVV0aWwuaXNFbXB0eShpZExpc3QpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZUFuZERpc2FibGVBbGxSZWdpc3RlcihhY3Rpb24sIGlkTGlzdCwgZmV0Y2hBZ2FpbiwgdmVyc2lvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uID0gdGhpcy5iYXNlUGVybWlzc2lvbkxpc3QuVVBEQVRFO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFdhcm5pbmdNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLk5PVF9QRVJNSVNTSU9OKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZUFuZERpc2FibGVBbGxSZWdpc3RlcihhY3Rpb24sIGlkTGlzdCwgZmV0Y2hBZ2FpbiwgdmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNMaXN0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQEludGVybmFsICovXG4gICAgcHJpdmF0ZSBfZW5hYmxlQW5kRGlzYWJsZUFsbFJlZ2lzdGVyKGFjdGlvbjogJ0RJU0FCTEUnIHwgJ0VOQUJMRScsIGlkTGlzdDogR0lQSVV1aWRbXSwgZmV0Y2hBZ2FpbjogYm9vbGVhbiA9IHRydWUsIHZlcnNpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuYmFzZVNlcnZpY2UuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm1hw6fDo28nLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBEZXNlamEgcmVhbG1lbnRlICR7KGFjdGlvbiA9PT0gJ0RJU0FCTEUnKSA/ICdpbmF0aXZhcicgOiAnYXRpdmFyJ30gb3MgcmVnaXN0cm9zIHNlbGVjaW9uYWRvcz9gLFxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hYnN0cmFjdENydWRTZXJ2aWNlLmVuYWJsZU9yRGlzYWJsZUFsbChpZExpc3QsIGFjdGlvbiwgdmVyc2lvbikudG9Qcm9taXNlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmV0Y2hBZ2Fpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZEFsbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFN1Y2Nlc3NNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLlNVQ0NFU1MpO1xuICAgICAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYmFzZVNlcnZpY2Uuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnJlbW92ZSgnZmlsdGVyJyk7XG4gICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmV3UGFnZSgpO1xuICAgICAgICB0aGlzLmZpbHRlciA9IHRoaXMubmV3RmlsdGVyKCk7XG4gICAgICAgIHRoaXMuY2xlYXJBcHBsaWVkRmlsdGVycygpO1xuICAgICAgICB0aGlzLmZpbmRBbGwoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRW50aXR5SWQoaWQ6IEdJUElVdWlkKTogR0lQSVV1aWQge1xuICAgICAgICBpZiAoIXRoaXMuVVVJRElzVmFsaWQoaWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ08gaWRlbnRpZmljYWRvciBkbyByZWdpc3RybyBuw6NvIMOpIHbDoWxpZG8nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChpZCkgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMucGFnZSkgJiYgIUFycmF5VXRpbC5pc0VtcHR5KHRoaXMucGFnZS5jb250ZW50KSkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RTZWxldGVjdGVkID0gdGhpcy5wYWdlLmNvbnRlbnQuZmlsdGVyKGMgPT4gYy5zZWxlY3RlZClbMF07XG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwoZmlyc3RTZWxldGVjdGVkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmlyc3RTZWxldGVjdGVkLmlkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVFbnRpdHlJZExpc3QoaWRMaXN0OiBHSVBJVXVpZFtdKTogR0lQSVV1aWRbXSB7XG4gICAgICAgIGlmICghQXJyYXlVdGlsLmlzRW1wdHkoaWRMaXN0KSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuVVVJRElzVmFsaWQoaWRMaXN0W2ldKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ08gaWRlbnRpZmljYWRvciBkbyByZWdpc3RybyBuw6NvIMOpIHbDoWxpZG8nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXlVdGlsLmlzRW1wdHkoaWRMaXN0KSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5wYWdlKSAmJiAhQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5wYWdlLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBsaXN0U2VsZWN0ZWQgPSB0aGlzLnBhZ2UuY29udGVudC5maWx0ZXIocCA9PiBwLnNlbGVjdGVkKS5tYXAocCA9PiBwLmlkKTtcbiAgICAgICAgICAgIGlmIChBcnJheVV0aWwuaXNFbXB0eShsaXN0U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBsaXN0U2VsZWN0ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaWRMaXN0O1xuICAgIH1cblxufVxuIl19
@@ -165,6 +165,9 @@ var AbstractFindComponent = /** @class */ (function (_super) {
165
165
  }
166
166
  if (ObjectUtil.isNull(pageEvent) && !ObjectUtil.isNull(this.tablePageEventDTO)) {
167
167
  pageEvent = this.tablePageEventDTO;
168
+ if (ObjectUtil.hasPropertyInObj(pageEvent, 'pageIndex')) {
169
+ pageEvent.pageIndex = 0;
170
+ }
168
171
  }
169
172
  if (pageEvent) {
170
173
  this.tablePageEventDTO = pageEvent;
@@ -198,4 +201,4 @@ var AbstractFindComponent = /** @class */ (function (_super) {
198
201
  return AbstractFindComponent;
199
202
  }(AbstractComponent));
200
203
  export { AbstractFindComponent };
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmluZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJjb3JlL2NvbXBvbmVudHMvYWJzdHJhY3QtZmluZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUdBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUl4RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpEO0lBQWtHLHlDQUFpQjtJQVUvRywrQkFDYyxPQUFrQyxFQUNsQyxjQUE4QixFQUM5QixtQkFBd0MsRUFDeEMsTUFBYyxFQUNkLGNBQThCO1FBTDVDLFlBT0ksa0JBQU0sY0FBYyxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsU0FDaEQ7UUFQYSxhQUFPLEdBQVAsT0FBTyxDQUEyQjtRQUNsQyxvQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIseUJBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxZQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWMsR0FBZCxjQUFjLENBQWdCOztJQUc1QyxDQUFDO0lBRUQsd0NBQVEsR0FBUjtRQUNJLGlCQUFNLFFBQVEsV0FBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFP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S0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFBLElBQUksSUFBSSxPQUFBLElBQUksS0FBSyxLQUFLLEVBQWQsQ0FBYyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUwsNEJBQUM7QUFBRCxDQUFDLEFBdE5ELENBQWtHLGlCQUFpQixHQXNObEgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBJTkpFQ1RPUiB9IGZyb20gJy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IEFQUF9NRVNTQUdFUyB9IGZyb20gJy4uL2FwcC5tZXNzYWdlcyc7XG5pbXBvcnQgeyBBYnN0cmFjdE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2Fic3RyYWN0Lm1vZGVsJztcbmltcG9ydCB7IEZpbHRlckRUTyB9IGZyb20gJy4uL21vZGVscy9kdG8vZmlsdGVyLmR0byc7XG5pbXBvcnQgeyBQYWdlRFRPIH0gZnJvbSAnLi4vbW9kZWxzL2R0by9wYWdlLmR0byc7XG5pbXBvcnQgeyBTb3J0RFRPIH0gZnJvbSAnLi4vbW9kZWxzL2R0by9zb3J0LmR0byc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbkRUTyB9IGZyb20gJy4uL21vZGVscy9kdG8vdGFibGUtY29sdW1uLmR0byc7XG5pbXBvcnQgeyBUYWJsZVBhZ2VFdmVudERUTyB9IGZyb20gJy4uL21vZGVscy9kdG8vdGFibGUtcGFnZS1ldmVudC5kdG8nO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbkVudW0gfSBmcm9tICcuLi9tb2RlbHMvZW51bXMvc29ydC1kaXJlY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBBYnN0cmFjdENydWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWJzdHJhY3QtY3J1ZC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maXJtYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBPYmplY3RVdGlsIH0gZnJvbSAnLi4vdXRpbHMvb2JqZWN0LnV0aWwnO1xuaW1wb3J0IHsgU3RyaW5nVXRpbCB9IGZyb20gJy4uL3V0aWxzL3N0cmluZy51dGlsJztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50IH0gZnJvbSAnLi9hYnN0cmFjdC5jb21wb25lbnQnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGaW5kQ29tcG9uZW50PFQgZXh0ZW5kcyBBYnN0cmFjdE1vZGVsLCBGIGV4dGVuZHMgRmlsdGVyRFRPPiBleHRlbmRzIEFic3RyYWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGZpbHRlcjogRjtcblxuICAgIHBhZ2U6IFBhZ2VEVE88VD47XG5cbiAgICBjb2x1bW5zOiBUYWJsZUNvbHVtbkRUT1tdO1xuXG4gICAgdGFibGVQYWdlRXZlbnREVE86IFRhYmxlUGFnZUV2ZW50RFRPO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBzZXJ2aWNlOiBBYnN0cmFjdENydWRTZXJ2aWNlPFQsIEY+LFxuICAgICAgICBwcm90ZWN0ZWQgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICkge1xuICAgICAgICBzdXBlcihtZXNzYWdlU2VydmljZSwgcm91dGVyLCBhY3RpdmF0ZWRSb3V0ZSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc2VydmljZS5yZXR1cm5QYXRoID0gdGhpcy5nZXRQYXRoKCk7XG4gICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmV3UGFnZSgpO1xuICAgICAgICB0aGlzLmZpbHRlciA9IHRoaXMubmV3RmlsdGVyRFRPKCk7XG4gICAgICAgIHRoaXMuZ2V0RmlsdGVyRFRPU2Vzc2lvblN0b3JhZ2UoKTtcbiAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jcmVhdGVUYWJsZUNvbHVtbnMoKTtcbiAgICB9XG5cbiAgICBuZXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5nZXRQYXRoKCksIHsgc2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlIH0pLnRoZW4oXG4gICAgICAgICAgICAoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5nZXRQYXRoKCksICduZXcnXSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBlZGl0KGVudGl0eTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCB7IHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZSB9KS50aGVuKFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuZ2V0UGF0aCgpLCAnZWRpdCcsIGVudGl0eS5pZF0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdmlldyhlbnRpdHk6IFQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmdldFBhdGgoKSwgeyBza2lwTG9jYXRpb25DaGFuZ2U6IHRydWUgfSkudGhlbihcbiAgICAgICAgICAgICgpID0+IHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLmdldFBhdGgoKSwgJ3ZpZXcnLCBlbnRpdHkuaWRdKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZShlbnRpdHk6IFQsIGZpbHRlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgdGl0bGU6ICdDb25maXJtYcOnw6NvJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLkRFTEVURV9DT05GSVJNQVRJT04sXG4gICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdCh0aGlzLmxvYWRpbmcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLm5ld1BhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVEZWxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmRlbGV0ZShlbnRpdHkuaWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV3KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQodGhpcy5sb2FkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkU3VjY2Vzc01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuU1VDQ0VTUyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRmluZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlbGV0ZUFsbChlbnRpdHlMaXN0OiBUW10sIGZpbHRlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgdGl0bGU6ICdDb25maXJtYcOnw6NvJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLkRFTEVURV9BTExfQ09ORklSTUFUSU9OLFxuICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQodGhpcy5sb2FkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlRGVsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5kZWxldGVBbGwoZW50aXR5TGlzdCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdCh0aGlzLmxvYWRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRTdWNjZXNzTWVzc2FnZShJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5TVUNDRVNTKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNGaW5kaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlU3RhdHVzKGVudGl0eTogVCwgZW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XG4gICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm1hw6fDo28nLFxuICAgICAgICAgICAgbWVzc2FnZTogYERlc2VqYSByZWFsbWVudGUgJHtlbmFibGVkID8gJ2F0aXZhcicgOiAnaW5hdGl2YXInfSBlc3RlIHJlZ2lzdHJvP2AsXG4gICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdCh0aGlzLmxvYWRpbmcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2F2ZShlbnRpdHkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFN1Y2Nlc3NNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLlNVQ0NFU1MpO1xuICAgICAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYW5jZWw6ICgpID0+IHRoaXMuY2xlYXIoKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcmVEZWxldGUoKTogdm9pZCB7XG4gICAgfVxuXG4gICAgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmV3UGFnZSgpO1xuICAgICAgICB0aGlzLmZpbHRlciA9IHRoaXMubmV3RmlsdGVyRFRPKCk7XG4gICAgICAgIHRoaXMuZmluZCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmVudC5wYXJlbnQudXJsWzBdLnBhdGh9LyR7dGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJlbnQudXJsWzBdLnBhdGh9YDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbmV3UGFnZSgpOiBQYWdlRFRPPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYWdlRFRPPFQ+KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG5ld0ZpbHRlckRUTygpOiBGIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZpbHRlckRUT1Nlc3Npb25TdG9yYWdlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVRhYmxlQ29sdW1ucygpOiBUYWJsZUNvbHVtbkRUT1tdIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVTb3J0cygpOiBTb3J0RFRPW10ge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgZmluZChwYWdlRXZlbnQ/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQodGhpcy5sb2FkaW5nKTtcbiAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmZpbHRlcikpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyID0gdGhpcy5uZXdGaWx0ZXJEVE8oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChwYWdlRXZlbnQpICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLnRhYmxlUGFnZUV2ZW50RFRPKSkge1xuICAgICAgICAgICAgcGFnZUV2ZW50ID0gdGhpcy50YWJsZVBhZ2VFdmVudERUTztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYWdlRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVQYWdlRXZlbnREVE8gPSBwYWdlRXZlbnQ7XG4gICAgICAgICAgICB0aGlzLmZpbHRlci5wYWdlTnVtYmVyID0gcGFnZUV2ZW50LnBhZ2VJbmRleDtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyLnBhZ2VTaXplID0gcGFnZUV2ZW50LnBhZ2VTaXplO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXIub2Zmc2V0ID0gcGFnZUV2ZW50LnBhZ2VJbmRleCAqIHBhZ2VFdmVudC5wYWdlU2l6ZTtcbiAgICAgICAgICAgIGlmIChwYWdlRXZlbnQuc29ydCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyLnNvcnRzID0gW25ldyBTb3J0RFRPKFxuICAgICAgICAgICAgICAgICAgICBwYWdlRXZlbnQuc29ydC5hY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgIFN0cmluZ1V0aWwuaXNFbXB0eShwYWdlRXZlbnQuc29ydC5kaXJlY3Rpb24pID8gU29ydERpcmVjdGlvbkVudW0uREVTQyA6IHBhZ2VFdmVudC5zb3J0LmRpcmVjdGlvbi50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgICAgKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlci5wYWdlTnVtYmVyID0gMDtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyLm9mZnNldCA9IDA7XG4gICAgICAgICAgICB0aGlzLmZpbHRlci5wYWdlU2l6ZSA9IDEwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VydmljZS5maW5kKHRoaXMuZmlsdGVyKS5zdWJzY3JpYmUocGFnZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBhZ2UgPSBwYWdlO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdCh0aGlzLmxvYWRpbmcpO1xuICAgICAgICB9LCBlcnJvciA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSk7XG4gICAgfVxuXG4gICAgaXNGaW5kaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJykuZmlsdGVyKHBhdGggPT4gcGF0aCA9PT0gJ25ldycgfHwgcGF0aCA9PT0gJ2VkaXQnKS5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgaXNWaWV3aW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJykuZmlsdGVyKHBhdGggPT4gcGF0aCA9PT0gJ3ZpZXcnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGlzQ3JlYXRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKS5maWx0ZXIocGF0aCA9PiBwYXRoID09PSAnbmV3JykubGVuZ3RoID4gMDtcbiAgICB9XG5cbn1cbiJdfQ==
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmluZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJjb3JlL2NvbXBvbmVudHMvYWJzdHJhY3QtZmluZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUdBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUl4RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpEO0lBQWtHLHlDQUFpQjtJQVUvRywrQkFDYyxPQUFrQyxFQUNsQyxjQUE4QixFQUM5QixtQkFBd0MsRUFDeEMsTUFBYyxFQUNkLGNBQThCO1FBTDVDLFlBT0ksa0JBQU0sY0FBYyxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsU0FDaEQ7UUFQYSxhQUFPLEdBQVAsT0FBTyxDQUEyQjtRQUNsQyxvQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIseUJBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxZQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWMsR0FBZCxjQUFjLENBQWdCOztJQUc1QyxDQUFDO0lBRUQsd0NBQVEsR0FBUjtRQUNJLGlCQUFNLFFBQVEsV0FBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFP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QWUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELDBDQUFVLEdBQVY7UUFDSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxJQUFJLEtBQUssS0FBSyxFQUFkLENBQWMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVMLDRCQUFDO0FBQUQsQ0FBQyxBQTVORCxDQUFrRyxpQkFBaUIsR0E0TmxIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgSU5KRUNUT1IgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBBUFBfTUVTU0FHRVMgfSBmcm9tICcuLi9hcHAubWVzc2FnZXMnO1xuaW1wb3J0IHsgQWJzdHJhY3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9hYnN0cmFjdC5tb2RlbCc7XG5pbXBvcnQgeyBGaWx0ZXJEVE8gfSBmcm9tICcuLi9tb2RlbHMvZHRvL2ZpbHRlci5kdG8nO1xuaW1wb3J0IHsgUGFnZURUTyB9IGZyb20gJy4uL21vZGVscy9kdG8vcGFnZS5kdG8nO1xuaW1wb3J0IHsgU29ydERUTyB9IGZyb20gJy4uL21vZGVscy9kdG8vc29ydC5kdG8nO1xuaW1wb3J0IHsgVGFibGVDb2x1bW5EVE8gfSBmcm9tICcuLi9tb2RlbHMvZHRvL3RhYmxlLWNvbHVtbi5kdG8nO1xuaW1wb3J0IHsgVGFibGVQYWdlRXZlbnREVE8gfSBmcm9tICcuLi9tb2RlbHMvZHRvL3RhYmxlLXBhZ2UtZXZlbnQuZHRvJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb25FbnVtIH0gZnJvbSAnLi4vbW9kZWxzL2VudW1zL3NvcnQtZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgQWJzdHJhY3RDcnVkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Fic3RyYWN0LWNydWQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlybWF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JqZWN0VXRpbCB9IGZyb20gJy4uL3V0aWxzL29iamVjdC51dGlsJztcbmltcG9ydCB7IFN0cmluZ1V0aWwgfSBmcm9tICcuLi91dGlscy9zdHJpbmcudXRpbCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJy4vYWJzdHJhY3QuY29tcG9uZW50JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RmluZENvbXBvbmVudDxUIGV4dGVuZHMgQWJzdHJhY3RNb2RlbCwgRiBleHRlbmRzIEZpbHRlckRUTz4gZXh0ZW5kcyBBYnN0cmFjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBmaWx0ZXI6IEY7XG5cbiAgICBwYWdlOiBQYWdlRFRPPFQ+O1xuXG4gICAgY29sdW1uczogVGFibGVDb2x1bW5EVE9bXTtcblxuICAgIHRhYmxlUGFnZUV2ZW50RFRPOiBUYWJsZVBhZ2VFdmVudERUTztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgc2VydmljZTogQWJzdHJhY3RDcnVkU2VydmljZTxULCBGPixcbiAgICAgICAgcHJvdGVjdGVkIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJvdGVjdGVkIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZVNlcnZpY2UsIHJvdXRlciwgYWN0aXZhdGVkUm91dGUpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnNlcnZpY2UucmV0dXJuUGF0aCA9IHRoaXMuZ2V0UGF0aCgpO1xuICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLm5ld1BhZ2UoKTtcbiAgICAgICAgdGhpcy5maWx0ZXIgPSB0aGlzLm5ld0ZpbHRlckRUTygpO1xuICAgICAgICB0aGlzLmdldEZpbHRlckRUT1Nlc3Npb25TdG9yYWdlKCk7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuY3JlYXRlVGFibGVDb2x1bW5zKCk7XG4gICAgfVxuXG4gICAgbmV3KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCB7IHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZSB9KS50aGVuKFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuZ2V0UGF0aCgpLCAnbmV3J10pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZWRpdChlbnRpdHk6IFQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmdldFBhdGgoKSwgeyBza2lwTG9jYXRpb25DaGFuZ2U6IHRydWUgfSkudGhlbihcbiAgICAgICAgICAgICgpID0+IHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLmdldFBhdGgoKSwgJ2VkaXQnLCBlbnRpdHkuaWRdKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHZpZXcoZW50aXR5OiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5nZXRQYXRoKCksIHsgc2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlIH0pLnRoZW4oXG4gICAgICAgICAgICAoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5nZXRQYXRoKCksICd2aWV3JywgZW50aXR5LmlkXSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkZWxldGUoZW50aXR5OiBULCBmaWx0ZXI/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybWHDp8OjbycsXG4gICAgICAgICAgICBtZXNzYWdlOiBJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5ERUxFVEVfQ09ORklSTUFUSU9OLFxuICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQodGhpcy5sb2FkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlRGVsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5kZWxldGUoZW50aXR5LmlkKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5ldygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KHRoaXMubG9hZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFN1Y2Nlc3NNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLlNVQ0NFU1MpO1xuICAgICAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0ZpbmRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVBbGwoZW50aXR5TGlzdDogVFtdLCBmaWx0ZXI/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybWHDp8OjbycsXG4gICAgICAgICAgICBtZXNzYWdlOiBJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5ERUxFVEVfQUxMX0NPTkZJUk1BVElPTixcbiAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KHRoaXMubG9hZGluZyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmV3UGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZURlbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlQWxsKGVudGl0eUxpc3QpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV3KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQodGhpcy5sb2FkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkU3VjY2Vzc01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuU1VDQ0VTUyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRmluZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZVN0YXR1cyhlbnRpdHk6IFQsIGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgdGl0bGU6ICdDb25maXJtYcOnw6NvJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBEZXNlamEgcmVhbG1lbnRlICR7ZW5hYmxlZCA/ICdhdGl2YXInIDogJ2luYXRpdmFyJ30gZXN0ZSByZWdpc3Rybz9gLFxuICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQodGhpcy5sb2FkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNhdmUoZW50aXR5KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRTdWNjZXNzTWVzc2FnZShJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5TVUNDRVNTKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FuY2VsOiAoKSA9PiB0aGlzLmNsZWFyKClcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJlRGVsZXRlKCk6IHZvaWQge1xuICAgIH1cblxuICAgIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLm5ld1BhZ2UoKTtcbiAgICAgICAgdGhpcy5maWx0ZXIgPSB0aGlzLm5ld0ZpbHRlckRUTygpO1xuICAgICAgICB0aGlzLmZpbmQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0UGF0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJlbnQucGFyZW50LnVybFswXS5wYXRofS8ke3RoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyZW50LnVybFswXS5wYXRofWA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG5ld1BhZ2UoKTogUGFnZURUTzxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgUGFnZURUTzxUPigpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBuZXdGaWx0ZXJEVE8oKTogRiB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaWx0ZXJEVE9TZXNzaW9uU3RvcmFnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVUYWJsZUNvbHVtbnMoKTogVGFibGVDb2x1bW5EVE9bXSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlU29ydHMoKTogU29ydERUT1tdIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGZpbmQocGFnZUV2ZW50PzogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KHRoaXMubG9hZGluZyk7XG5cbiAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG5cbiAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuZmlsdGVyKSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXIgPSB0aGlzLm5ld0ZpbHRlckRUTygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKHBhZ2VFdmVudCkgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMudGFibGVQYWdlRXZlbnREVE8pKSB7XG4gICAgICAgICAgICBwYWdlRXZlbnQgPSB0aGlzLnRhYmxlUGFnZUV2ZW50RFRPO1xuXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbC5oYXNQcm9wZXJ0eUluT2JqKHBhZ2VFdmVudCwgJ3BhZ2VJbmRleCcpKSB7XG4gICAgICAgICAgICAgICAgcGFnZUV2ZW50LnBhZ2VJbmRleCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFnZUV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlUGFnZUV2ZW50RFRPID0gcGFnZUV2ZW50O1xuICAgICAgICAgICAgdGhpcy5maWx0ZXIucGFnZU51bWJlciA9IHBhZ2VFdmVudC5wYWdlSW5kZXg7XG4gICAgICAgICAgICB0aGlzLmZpbHRlci5wYWdlU2l6ZSA9IHBhZ2VFdmVudC5wYWdlU2l6ZTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyLm9mZnNldCA9IHBhZ2VFdmVudC5wYWdlSW5kZXggKiBwYWdlRXZlbnQucGFnZVNpemU7XG4gICAgICAgICAgICBpZiAocGFnZUV2ZW50LnNvcnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlci5zb3J0cyA9IFtuZXcgU29ydERUTyhcbiAgICAgICAgICAgICAgICAgICAgcGFnZUV2ZW50LnNvcnQuYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICBTdHJpbmdVdGlsLmlzRW1wdHkocGFnZUV2ZW50LnNvcnQuZGlyZWN0aW9uKSA/IFNvcnREaXJlY3Rpb25FbnVtLkRFU0MgOiBwYWdlRXZlbnQuc29ydC5kaXJlY3Rpb24udG9VcHBlckNhc2UoKVxuICAgICAgICAgICAgICAgICldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXIucGFnZU51bWJlciA9IDA7XG4gICAgICAgICAgICB0aGlzLmZpbHRlci5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXIucGFnZVNpemUgPSAxMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlcnZpY2UuZmluZCh0aGlzLmZpbHRlcikuc3Vic2NyaWJlKHBhZ2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYWdlID0gcGFnZTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQodGhpcy5sb2FkaW5nKTtcbiAgICAgICAgfSwgZXJyb3IgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcikpO1xuICAgIH1cblxuICAgIGlzRmluZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLnVybC5zcGxpdCgnLycpLmZpbHRlcihwYXRoID0+IHBhdGggPT09ICduZXcnIHx8IHBhdGggPT09ICdlZGl0JykubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIGlzVmlld2luZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLnVybC5zcGxpdCgnLycpLmZpbHRlcihwYXRoID0+IHBhdGggPT09ICd2aWV3JykubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBpc0NyZWF0aW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJykuZmlsdGVyKHBhdGggPT4gcGF0aCA9PT0gJ25ldycpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG59XG4iXX0=
@@ -39,13 +39,13 @@ var GIPIAbstractCrudComponent = /** @class */ (function (_super) {
39
39
  GIPIAbstractCrudComponent.prototype.ngOnDestroy = function () {
40
40
  _super.prototype.ngOnDestroy.call(this);
41
41
  };
42
- GIPIAbstractCrudComponent.prototype.onInitForm = function () {
42
+ GIPIAbstractCrudComponent.prototype.onInitForm = function (version) {
43
43
  var _this = this;
44
44
  try {
45
45
  this.loading = true;
46
46
  var id = this.activatedRoute.snapshot.params.id;
47
47
  if (this.UUIDIsValid(id)) {
48
- this.abstractCrudService.getOne(id).toPromise().then(function (entity) {
48
+ this.abstractCrudService.getOne(id, version).toPromise().then(function (entity) {
49
49
  _this.entity = entity;
50
50
  _this.onAfterGetOne();
51
51
  _this.loading = false;
@@ -66,7 +66,7 @@ var GIPIAbstractCrudComponent = /** @class */ (function (_super) {
66
66
  };
67
67
  GIPIAbstractCrudComponent.prototype.onAfterGetOne = function () { };
68
68
  GIPIAbstractCrudComponent.prototype.preSave = function (entity) { };
69
- GIPIAbstractCrudComponent.prototype.save = function (entity, toGoBack) {
69
+ GIPIAbstractCrudComponent.prototype.save = function (entity, toGoBack, version) {
70
70
  var _this = this;
71
71
  if (toGoBack === void 0) { toGoBack = true; }
72
72
  try {
@@ -76,7 +76,7 @@ var GIPIAbstractCrudComponent = /** @class */ (function (_super) {
76
76
  }
77
77
  if (this.isValid(entity)) {
78
78
  this.preSave(entity);
79
- this.abstractCrudService.save(entity).toPromise().then(function (resp) {
79
+ this.abstractCrudService.save(entity, version).toPromise().then(function (resp) {
80
80
  _this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);
81
81
  if (toGoBack) {
82
82
  _this.navigateByUrl(_this.getPath(), [_this.getPath()], true);
@@ -119,4 +119,4 @@ var GIPIAbstractCrudComponent = /** @class */ (function (_super) {
119
119
  return GIPIAbstractCrudComponent;
120
120
  }(GIPIAbstractComponent));
121
121
  export { GIPIAbstractCrudComponent };
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtY3J1ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJjb3JlL2dpcGktY29tcG9uZW50cy9jb21wb25lbnRzL2Fic3RyYWN0LWNydWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXJELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc3RDtJQUEyRiw2Q0FBcUI7SUFVNUcsbUNBQ2MsbUJBQTBELEVBQzFELFdBQTRCLEVBQzVCLGNBQThCO1FBSDVDLFlBS0ksa0JBQU0sV0FBVyxFQUFFLGNBQWMsQ0FBQyxTQUNyQztRQUxhLHlCQUFtQixHQUFuQixtQkFBbUIsQ0FBdUM7UUFDMUQsaUJBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLG9CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVhwQyxhQUFPLEdBQVksS0FBSSxDQUFDLFNBQVMsRUFBRSxDQUFDOztJQWM1QyxDQUFDO0lBYkQsc0JBQVcsNkNBQU07YUFHakI7WUFDSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQzthQUxELFVBQWtCLEtBQWM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFD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QUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBRU0sMENBQU0sR0FBYixVQUFjLGdCQUFnQztRQUE5QyxpQkFVQztRQVZhLGlDQUFBLEVBQUEsdUJBQWdDO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksZ0JBQWdCLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7Z0JBQ3pDLEtBQUssRUFBRSxhQUFhO2dCQUNwQixPQUFPLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxtQkFBbUI7Z0JBQ3ZELE1BQU0sRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLGFBQWEsQ0FBQyxLQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBMUQsQ0FBMEQ7YUFDM0UsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDOUQ7SUFDTCxDQUFDOztnQkExRmtDLHVCQUF1QjtnQkFDL0IsZUFBZTtnQkFDWixjQUFjOztJQWIxQix5QkFBeUI7UUFEOUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDO3lDQVlXLHVCQUF1QjtZQUMvQixlQUFlO1lBQ1osY0FBYztPQWIxQix5QkFBeUIsQ0F1RzlDO0lBQUQsZ0NBQUM7Q0FBQSxBQXZHRCxDQUEyRixxQkFBcUIsR0F1Ry9HO1NBdkdxQix5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElOSkVDVE9SIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgQVBQX01FU1NBR0VTIH0gZnJvbSAnLi4vLi4vYXBwLm1lc3NhZ2VzJztcbmltcG9ydCB7IE9iamVjdFV0aWwgfSBmcm9tICcuLi8uLi91dGlscy9vYmplY3QudXRpbCc7XG5pbXBvcnQgeyBHSVBJQWJzdHJhY3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9hYnN0cmFjdC5tb2RlbCc7XG5pbXBvcnQgeyBHSVBJQWJzdHJhY3RDcnVkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Fic3RyYWN0LWNydWQuc2VydmljZSc7XG5pbXBvcnQgeyBHSVBJQmFzZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9iYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgR0lQSVV1aWQgfSBmcm9tICcuLi90eXBlcy91dWlkLnR5cGUnO1xuaW1wb3J0IHsgR0lQSUFic3RyYWN0Q29tcG9uZW50IH0gZnJvbSAnLi9hYnN0cmFjdC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR0lQSUFic3RyYWN0Q3J1ZENvbXBvbmVudDxURW50aXR5IGV4dGVuZHMgR0lQSUFic3RyYWN0TW9kZWw+IGV4dGVuZHMgR0lQSUFic3RyYWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgcHJpdmF0ZSBfZW50aXR5OiBURW50aXR5ID0gdGhpcy5uZXdFbnRpdHkoKTtcbiAgICBwdWJsaWMgc2V0IGVudGl0eSh2YWx1ZTogVEVudGl0eSkge1xuICAgICAgICB0aGlzLl9lbnRpdHkgPSB2YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIGdldCBlbnRpdHkoKTogVEVudGl0eSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnRpdHk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBhYnN0cmFjdENydWRTZXJ2aWNlOiBHSVBJQWJzdHJhY3RDcnVkU2VydmljZTxURW50aXR5LCBhbnk+LFxuICAgICAgICBwcm90ZWN0ZWQgYmFzZVNlcnZpY2U6IEdJUElCYXNlU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoYmFzZVNlcnZpY2UsIGFjdGl2YXRlZFJvdXRlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jhc2VQZXJtaXNzaW9uTGlzdCBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Jbml0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpZDogR0lQSVV1aWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtcy5pZDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuVVVJRElzVmFsaWQoaWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hYnN0cmFjdENydWRTZXJ2aWNlLmdldE9uZTxURW50aXR5PihpZCkudG9Qcm9taXNlKCkudGhlbihlbnRpdHkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVudGl0eSA9IGVudGl0eTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkFmdGVyR2V0T25lKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRpdHkgPSB0aGlzLm5ld0VudGl0eSgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25BZnRlckdldE9uZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IG5ld0VudGl0eSgpOiBURW50aXR5O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGlzVmFsaWQoZW50aXR5OiBURW50aXR5KTogYm9vbGVhbjtcblxuICAgIHByb3RlY3RlZCBvbkFmdGVyR2V0T25lKCk6IHZvaWQgeyB9XG5cbiAgICBwcm90ZWN0ZWQgcHJlU2F2ZShlbnRpdHk6IFRFbnRpdHkpOiB2b2lkIHsgfVxuXG4gICAgcHVibGljIHNhdmUoZW50aXR5PzogVEVudGl0eSwgdG9Hb0JhY2s6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKGVudGl0eSkpIHtcbiAgICAgICAgICAgICAgICBlbnRpdHkgPSB0aGlzLmVudGl0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoZW50aXR5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJlU2F2ZShlbnRpdHkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5hYnN0cmFjdENydWRTZXJ2aWNlLnNhdmUoZW50aXR5KS50b1Byb21pc2UoKS50aGVuKHJlc3AgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFN1Y2Nlc3NNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLlNVQ0NFU1MpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9Hb0JhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmdldFBhdGgoKSwgW3RoaXMuZ2V0UGF0aCgpXSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdvQmFjayhzaG93Q29uZmlybWF0aW9uOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNWaWV3aW5nKCkgfHwgc2hvd0NvbmZpcm1hdGlvbikge1xuICAgICAgICAgICAgdGhpcy5iYXNlU2VydmljZS5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybWHDp8OjbycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuUkVUVVJOX0NPTkZJUk1BVElPTixcbiAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmdldFBhdGgoKSwgW3RoaXMuZ2V0UGF0aCgpXSwgdHJ1ZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCldLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtY3J1ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJjb3JlL2dpcGktY29tcG9uZW50cy9jb21wb25lbnRzL2Fic3RyYWN0LWNydWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXJELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc3RDtJQUEyRiw2Q0FBcUI7SUFVNUcsbUNBQ2MsbUJBQTBELEVBQzFELFdBQTRCLEVBQzVCLGNBQThCO1FBSDVDLFlBS0ksa0JBQU0sV0FBVyxFQUFFLGNBQWMsQ0FBQyxTQUNyQztRQUxhLHlCQUFtQixHQUFuQixtQkFBbUIsQ0FBdUM7UUFDMUQsaUJBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLG9CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVhwQyxhQUFPLEdBQVksS0FBSSxDQUFDLFNBQVMsRUFBRSxDQUFDOztJQWM1QyxDQUFDO0lBYkQsc0JBQVcsNkNBQU07YUFHakI7WUFDSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQzthQUxELFVBQWtCLEtBQWM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFD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bXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSU5KRUNUT1IgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBBUFBfTUVTU0FHRVMgfSBmcm9tICcuLi8uLi9hcHAubWVzc2FnZXMnO1xuaW1wb3J0IHsgT2JqZWN0VXRpbCB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdC51dGlsJztcbmltcG9ydCB7IEdJUElBYnN0cmFjdE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2Fic3RyYWN0Lm1vZGVsJztcbmltcG9ydCB7IEdJUElBYnN0cmFjdENydWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWJzdHJhY3QtY3J1ZC5zZXJ2aWNlJztcbmltcG9ydCB7IEdJUElCYXNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBHSVBJVXVpZCB9IGZyb20gJy4uL3R5cGVzL3V1aWQudHlwZSc7XG5pbXBvcnQgeyBHSVBJQWJzdHJhY3RDb21wb25lbnQgfSBmcm9tICcuL2Fic3RyYWN0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHSVBJQWJzdHJhY3RDcnVkQ29tcG9uZW50PFRFbnRpdHkgZXh0ZW5kcyBHSVBJQWJzdHJhY3RNb2RlbD4gZXh0ZW5kcyBHSVBJQWJzdHJhY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBwcml2YXRlIF9lbnRpdHk6IFRFbnRpdHkgPSB0aGlzLm5ld0VudGl0eSgpO1xuICAgIHB1YmxpYyBzZXQgZW50aXR5KHZhbHVlOiBURW50aXR5KSB7XG4gICAgICAgIHRoaXMuX2VudGl0eSA9IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGVudGl0eSgpOiBURW50aXR5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VudGl0eTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGFic3RyYWN0Q3J1ZFNlcnZpY2U6IEdJUElBYnN0cmFjdENydWRTZXJ2aWNlPFRFbnRpdHksIGFueT4sXG4gICAgICAgIHByb3RlY3RlZCBiYXNlU2VydmljZTogR0lQSUJhc2VTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICkge1xuICAgICAgICBzdXBlcihiYXNlU2VydmljZSwgYWN0aXZhdGVkUm91dGUpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFzZVBlcm1pc3Npb25MaXN0IGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkluaXRGb3JtKHZlcnNpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpZDogR0lQSVV1aWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtcy5pZDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuVVVJRElzVmFsaWQoaWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hYnN0cmFjdENydWRTZXJ2aWNlLmdldE9uZTxURW50aXR5PihpZCwgdmVyc2lvbikudG9Qcm9taXNlKCkudGhlbihlbnRpdHkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVudGl0eSA9IGVudGl0eTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkFmdGVyR2V0T25lKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRpdHkgPSB0aGlzLm5ld0VudGl0eSgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25BZnRlckdldE9uZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IG5ld0VudGl0eSgpOiBURW50aXR5O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGlzVmFsaWQoZW50aXR5OiBURW50aXR5KTogYm9vbGVhbjtcblxuICAgIHByb3RlY3RlZCBvbkFmdGVyR2V0T25lKCk6IHZvaWQgeyB9XG5cbiAgICBwcm90ZWN0ZWQgcHJlU2F2ZShlbnRpdHk6IFRFbnRpdHkpOiB2b2lkIHsgfVxuXG4gICAgcHVibGljIHNhdmUoZW50aXR5PzogVEVudGl0eSwgdG9Hb0JhY2s6IGJvb2xlYW4gPSB0cnVlLCB2ZXJzaW9uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKGVudGl0eSkpIHtcbiAgICAgICAgICAgICAgICBlbnRpdHkgPSB0aGlzLmVudGl0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoZW50aXR5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJlU2F2ZShlbnRpdHkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5hYnN0cmFjdENydWRTZXJ2aWNlLnNhdmUoZW50aXR5LCB2ZXJzaW9uKS50b1Byb21pc2UoKS50aGVuKHJlc3AgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFN1Y2Nlc3NNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLlNVQ0NFU1MpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9Hb0JhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmdldFBhdGgoKSwgW3RoaXMuZ2V0UGF0aCgpXSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdvQmFjayhzaG93Q29uZmlybWF0aW9uOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNWaWV3aW5nKCkgfHwgc2hvd0NvbmZpcm1hdGlvbikge1xuICAgICAgICAgICAgdGhpcy5iYXNlU2VydmljZS5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybWHDp8OjbycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuUkVUVVJOX0NPTkZJUk1BVElPTixcbiAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmdldFBhdGgoKSwgW3RoaXMuZ2V0UGF0aCgpXSwgdHJ1ZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCldLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19