tnx-shared 5.2.20 → 5.2.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/app-context/component-context.service.d.ts.map +1 -1
  2. package/classes/base/component-base.d.ts +1 -1
  3. package/classes/public-function.d.ts +3 -2
  4. package/classes/public-function.d.ts.map +1 -1
  5. package/components/chat/chat-box/chat-box.component.d.ts +1 -1
  6. package/components/dropdown/services/dropdown.service.d.ts.map +1 -1
  7. package/components/file-explorer/services/file-explorer-new.service.d.ts.map +1 -1
  8. package/components/file-explorer/services/file-explorer.service.d.ts.map +1 -1
  9. package/components/file-explorer/services/file-version.service.d.ts.map +1 -1
  10. package/components/file-explorer/services/folder.service.d.ts.map +1 -1
  11. package/components/file-explorer/services/ky-so-sim-signPDF.service.d.ts.map +1 -1
  12. package/components/file-explorer/services/my-drive.service.d.ts.map +1 -1
  13. package/components/tn-app-help/services/path-name.service.d.ts.map +1 -1
  14. package/congviec/congviec/services/congviec-dinhkem.service.d.ts.map +1 -1
  15. package/esm2020/app-context/component-context.service.mjs +4 -5
  16. package/esm2020/classes/base/component-base.mjs +2 -2
  17. package/esm2020/components/common-app-component/common-app-component.mjs +2 -2
  18. package/esm2020/components/crud/crud-form/crud-form.component.mjs +1 -1
  19. package/esm2020/components/dropdown/services/dropdown.service.mjs +5 -5
  20. package/esm2020/components/file-explorer/file-ky-so-sim/file-ky-so-sim.component.mjs +1 -1
  21. package/esm2020/components/file-explorer/file-manager/file-manager.component.mjs +2 -2
  22. package/esm2020/components/file-explorer/file-viewer/file-viewer.component.mjs +3 -3
  23. package/esm2020/components/file-explorer/services/file-explorer-new.service.mjs +39 -40
  24. package/esm2020/components/file-explorer/services/file-explorer.service.mjs +48 -51
  25. package/esm2020/components/file-explorer/services/file-version.service.mjs +5 -4
  26. package/esm2020/components/file-explorer/services/folder.service.mjs +3 -3
  27. package/esm2020/components/file-explorer/services/ky-so-sim-signPDF.service.mjs +3 -2
  28. package/esm2020/components/file-explorer/services/my-drive.service.mjs +34 -34
  29. package/esm2020/components/mask/mask.component.mjs +1 -1
  30. package/esm2020/components/number-picker-range/number-picker-range.component.mjs +1 -1
  31. package/esm2020/components/tn-app-help/services/path-name.service.mjs +4 -3
  32. package/esm2020/components/tn-tinymce/tn-tinymce.component.mjs +2 -2
  33. package/esm2020/components/user-picker/user-picker-box/user-picker-box.component.mjs +1 -1
  34. package/esm2020/components/workflow/workflow-history-new/workflow-history-new.component.mjs +1 -1
  35. package/esm2020/congviec/cauhinh-workflow/cauhinh-workflow.component.mjs +1 -1
  36. package/esm2020/congviec/congviec/services/congviec-dinhkem.service.mjs +5 -4
  37. package/esm2020/services/article.service.mjs +10 -13
  38. package/esm2020/services/base.service.mjs +36 -41
  39. package/esm2020/services/custom-router.service.mjs +4 -5
  40. package/esm2020/services/entity-picker.service.mjs +4 -3
  41. package/esm2020/services/file-object-v4.service.mjs +5 -7
  42. package/esm2020/services/high-performance.service.mjs +4 -3
  43. package/esm2020/services/master-data.service.mjs +23 -30
  44. package/esm2020/services/organization.service.mjs +18 -23
  45. package/esm2020/services/template-v4.service.mjs +3 -2
  46. package/esm2020/services/template.service.mjs +19 -27
  47. package/esm2020/services/templateinstance.service.mjs +22 -31
  48. package/esm2020/services/tn-client.service.mjs +3 -3
  49. package/esm2020/services/unique-number.service.mjs +4 -3
  50. package/esm2020/services/user-v5.service.mjs +31 -39
  51. package/esm2020/services/user.service.mjs +32 -40
  52. package/fesm2015/tnx-shared.mjs +334 -409
  53. package/fesm2015/tnx-shared.mjs.map +1 -1
  54. package/fesm2020/tnx-shared.mjs +334 -409
  55. package/fesm2020/tnx-shared.mjs.map +1 -1
  56. package/package.json +2 -2
  57. package/services/article.service.d.ts.map +1 -1
  58. package/services/base.service.d.ts.map +1 -1
  59. package/services/common.service.d.ts +2 -2
  60. package/services/custom-router.service.d.ts.map +1 -1
  61. package/services/entity-picker.service.d.ts.map +1 -1
  62. package/services/file-object-v4.service.d.ts.map +1 -1
  63. package/services/high-performance.service.d.ts.map +1 -1
  64. package/services/master-data.service.d.ts.map +1 -1
  65. package/services/organization.service.d.ts.map +1 -1
  66. package/services/template-v4.service.d.ts.map +1 -1
  67. package/services/template.service.d.ts.map +1 -1
  68. package/services/templateinstance.service.d.ts.map +1 -1
  69. package/services/unique-number.service.d.ts.map +1 -1
  70. package/services/user-v5.service.d.ts.map +1 -1
  71. package/services/user.service.d.ts.map +1 -1
@@ -4,6 +4,7 @@ import { MasterDataItem } from '../models/master-data-item';
4
4
  import { CommonService } from './common.service';
5
5
  import { GridInfo } from '../models/grid-info';
6
6
  import { Operator } from '../classes/form-schema';
7
+ import { firstValueFrom } from 'rxjs';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@angular/common/http";
9
10
  import * as i2 from "./common.service";
@@ -97,9 +98,8 @@ export class MasterDataService {
97
98
  });
98
99
  }
99
100
  getDMChungDropdown(code) {
100
- return this._httpClient.get(`${this.singleCategoryEndpoint}/GetByFilterCodeAndNameByGroupCode/${code}`)
101
- .pipe(catchError((err) => this._commonService.handleError(err, this._injector)))
102
- .toPromise();
101
+ return firstValueFrom(this._httpClient.get(`${this.singleCategoryEndpoint}/GetByFilterCodeAndNameByGroupCode/${code}`)
102
+ .pipe(catchError((err) => this._commonService.handleError(err, this._injector))));
103
103
  }
104
104
  getItems(groupCode) {
105
105
  return new Promise(async (resolve, reject) => {
@@ -147,18 +147,16 @@ export class MasterDataService {
147
147
  }
148
148
  dogetAddress(id, level = 1) {
149
149
  const serviceUri = `${this.apiEndpoint}/CityCategory/GetByParentId/${id}?level=${level}`;
150
- return this._httpClient.get(serviceUri)
151
- .pipe(catchError((err) => this._commonService.handleError(err, this._injector)))
152
- .toPromise();
150
+ return firstValueFrom(this._httpClient.get(serviceUri)
151
+ .pipe(catchError((err) => this._commonService.handleError(err, this._injector))));
153
152
  }
154
153
  getItemDetailUnit(id) {
155
154
  return new Promise(async (resolve, reject) => {
156
155
  let itemData = new MasterDataItem();
157
156
  if (!this.storage.getItem(`${this.administrativeUnitItem}${id}`)) {
158
157
  const serviceUri = `${this.apiEndpoint}/CityCategory/GetByCode/${id}`;
159
- const result = await this._httpClient.get(serviceUri)
160
- .pipe(catchError((err) => this._commonService.handleError(err, this._injector)))
161
- .toPromise();
158
+ const result = await firstValueFrom(this._httpClient.get(serviceUri)
159
+ .pipe(catchError((err) => this._commonService.handleError(err, this._injector))));
162
160
  this.storage.setItem(`${this.administrativeUnitItem}${id}`, JSON.stringify(result.data));
163
161
  itemData = result.data;
164
162
  }
@@ -174,9 +172,9 @@ export class MasterDataService {
174
172
  resolve({ data: {}, success: true });
175
173
  });
176
174
  // const serviceUri = `${this.apiEndpoint}/ConfigurationService/GetValueByCode?code=${code}`;
177
- // return this._httpClient.get<ResponseResult>(serviceUri)
175
+ // return firstValueFrom(this._httpClient.get<ResponseResult>(serviceUri)
178
176
  // .pipe(catchError((err: HttpErrorResponse) => this._commonService.handleError(err, this._injector)))
179
- // .toPromise();
177
+ // );
180
178
  }
181
179
  async doGetAll(groupCode) {
182
180
  const group = await this.getGroupByCode(groupCode);
@@ -197,23 +195,21 @@ export class MasterDataService {
197
195
  return this.getData(`${this.singleCategoryEndpoint}/getData`, gridInfo);
198
196
  }
199
197
  getData(uri, gridInfo) {
200
- return this._httpClient.post(uri, gridInfo).toPromise();
198
+ return firstValueFrom(this._httpClient.post(uri, gridInfo));
201
199
  }
202
200
  async getGroupByCode(groupCode) {
203
201
  const uri = `${this.groupCategoryEndpoint}/getByCode/${groupCode}`;
204
- return this._httpClient.get(uri).toPromise();
202
+ return firstValueFrom(this._httpClient.get(uri));
205
203
  }
206
204
  addWorkDays(date, days, isDay = 1) {
207
205
  const serviceUri = `${this.apiEndpoint}/HolidayCategory/GetDate?date=${date}&days=${days}&isDay=${isDay}`;
208
- return this._httpClient.get(serviceUri)
209
- .pipe(catchError((err) => this._commonService.handleError(err, this._injector)))
210
- .toPromise();
206
+ return firstValueFrom(this._httpClient.get(serviceUri)
207
+ .pipe(catchError((err) => this._commonService.handleError(err, this._injector))));
211
208
  }
212
209
  getDateByDuration(date, type, duration) {
213
210
  const serviceUri = `${this.apiEndpoint}/HolidayCategory/getDateByDuration?date=${date}&type=${type}&duration=${duration}`;
214
- return this._httpClient.get(serviceUri)
215
- .pipe(catchError((err) => this._commonService.handleError(err, this._injector)))
216
- .toPromise();
211
+ return firstValueFrom(this._httpClient.get(serviceUri)
212
+ .pipe(catchError((err) => this._commonService.handleError(err, this._injector))));
217
213
  }
218
214
  getItemByCode(dataSource, code) {
219
215
  return dataSource.find(x => x.code === code);
@@ -279,21 +275,18 @@ export class MasterDataService {
279
275
  }
280
276
  getValueByCode(code) {
281
277
  const url = `${this.singleCategoryEndpoint}/getValueByCode?code=${code}`;
282
- return this._httpClient.get(url)
283
- .pipe(catchError((err) => this._commonService.handleError(err, this._injector)))
284
- .toPromise();
278
+ return firstValueFrom(this._httpClient.get(url)
279
+ .pipe(catchError((err) => this._commonService.handleError(err, this._injector))));
285
280
  }
286
281
  getGroupItemByCode(code) {
287
282
  const url = `${this.apiEndpoint}/GroupCategory/${code}`;
288
- return this._httpClient.get(url).pipe(catchError((err) => this._commonService.handleError(err, this._injector)))
289
- .toPromise();
283
+ return firstValueFrom(this._httpClient.get(url).pipe(catchError((err) => this._commonService.handleError(err, this._injector))));
290
284
  }
291
285
  parseMathExpression(expression, decimalPlaces, forVietnamese = true) {
292
286
  expression = encodeURIComponent(expression);
293
287
  const url = `${this.apiEndpoint}/MathExpression/ParseMath?expression=${expression}&decimalPlaces=${decimalPlaces}&forVietnamese=${forVietnamese}`;
294
- return this._httpClient.get(url)
295
- .pipe(catchError((err) => this._commonService.handleError(err, this._injector)))
296
- .toPromise();
288
+ return firstValueFrom(this._httpClient.get(url)
289
+ .pipe(catchError((err) => this._commonService.handleError(err, this._injector))));
297
290
  }
298
291
  getByGridRequest(groupCode, gridInfo, plusUrl = '') {
299
292
  return new Promise(async (resolve, reject) => {
@@ -304,9 +297,9 @@ export class MasterDataService {
304
297
  if (plusUrl != null && plusUrl != '') {
305
298
  apiUrl += '/' + plusUrl;
306
299
  }
307
- data = await this._httpClient
300
+ data = await firstValueFrom(this._httpClient
308
301
  .post(apiUrl, gridInfo)
309
- .pipe(catchError(err => this.handleError(err, this._injector))).toPromise();
302
+ .pipe(catchError(err => this.handleError(err, this._injector))));
310
303
  this.storage.setItem(`${this.categoryPrefix}${groupCode}`, JSON.stringify(data.data));
311
304
  }
312
305
  else {
@@ -392,4 +385,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
392
385
  providedIn: 'root'
393
386
  }]
394
387
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.CommonService }, { type: i0.Injector }, { type: i3.StorageUpdatedService }, { type: i4.EnvironmentService }]; } });
395
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL3NlcnZpY2VzL21hc3Rlci1kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdqRCxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFtQixRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBS25FLE1BQU0sT0FBTyxpQkFBaUI7SUFhMUIsWUFDWSxXQUF1QixFQUN2QixjQUE2QixFQUM3QixTQUFtQixFQUNuQixzQkFBNkMsRUFDN0MsbUJBQXVDO1FBSnZDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF1QjtRQUM3Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBakJuRCxnQkFBVyxHQUFHLGtCQUFrQixDQUFDO1FBQ2pDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRVosWUFBTyxHQUFHLFlBQVksQ0FBQztRQUN2QixtQkFBYyxHQUFHLE1BQU0sQ0FBQztRQUN4Qix3QkFBbUIsR0FBRyxZQUFZLENBQUM7UUFDbkMsdUJBQWtCLEdBQUcsc0JBQXNCLENBQUM7UUFDNUMsMkJBQXNCLEdBQUcsMkJBQTJCLENBQUM7UUFZMUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxpQ0FB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QUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVLEVBQUUsUUFBa0I7UUFDdEMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxPQUFPLGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7OzhHQS9hUSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZkLE1BQU07MkZBRVQsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZWxlY3RJdGVtIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTWFzdGVyRGF0YUl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvbWFzdGVyLWRhdGEtaXRlbSc7XHJcbmltcG9ydCB7IFJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vbW9kZWxzL3Jlc3BvbnNlLXJlc3VsdCc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZVVwZGF0ZWRTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLXVwZGF0ZWQuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlciwgR3JpZEluZm8gfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zLCBPcGVyYXRvciB9IGZyb20gJy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXN0ZXJEYXRhU2VydmljZSB7XHJcbiAgICBzZXJ2aWNlQ29kZSA9ICdjb21tb25NYXN0ZXJEYXRhJztcclxuICAgIHNldHVwU2lnbmFsciA9IGZhbHNlO1xyXG4gICAgYXBpRW5kcG9pbnQ6IGFueTtcclxuICAgIHJlYWRvbmx5IHN0b3JhZ2UgPSBsb2NhbFN0b3JhZ2U7XHJcbiAgICByZWFkb25seSBjYXRlZ29yeVByZWZpeCA9ICdjYXRfJztcclxuICAgIHJlYWRvbmx5IGNhdGVnb3J5R3JvdXBQcmVmaXggPSAnY2F0X2dyb3VwXyc7XHJcbiAgICByZWFkb25seSBhZG1pbmlzdHJhdGl2ZVVuaXQgPSAnYWRtaW5pc3RyYXRpdmVfdW5pdF8nO1xyXG4gICAgcmVhZG9ubHkgYWRtaW5pc3RyYXRpdmVVbml0SXRlbSA9ICdhZG1pbmlzdHJhdGl2ZV9pdGVtX3VuaXRfJztcclxuICAgIHJlYWRvbmx5IGdyb3VwQ2F0ZWdvcnlFbmRwb2ludDtcclxuICAgIHJlYWRvbmx5IHNpbmdsZUNhdGVnb3J5RW5kcG9pbnQ7XHJcbiAgICByZWFkb25seSBhcGlWZXJzaW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgX2h0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfc3RvcmFnZVVwZGF0ZWRTZXJ2aWNlOiBTdG9yYWdlVXBkYXRlZFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuYXBpRW5kcG9pbnQgPSBfZW52aXJvbm1lbnRTZXJ2aWNlLmdldEh0dHBTZXJ2aWNlRW5kcG9pbnRXaXRoVmVyc2lvbih0aGlzLnNlcnZpY2VDb2RlKTtcclxuICAgICAgICB0aGlzLmdyb3VwQ2F0ZWdvcnlFbmRwb2ludCA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L0dyb3VwY2F0ZWdvcnlgO1xyXG4gICAgICAgIHRoaXMuc2luZ2xlQ2F0ZWdvcnlFbmRwb2ludCA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L1NpbmdsZUNhdGVnb3J5YDtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnNldHVwU2lnbmFscikge1xyXG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlVXBkYXRlZFNlcnZpY2Uuc3Vic2NyaWJlQ2hhbmdlZExvY2FsU3RvcmFnZSgnY2F0XyonLCBhc3luYyAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRhdGFPYmo7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhT2JqID0gSlNPTi5wYXJzZShkYXRhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFPYmogPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGFPYmopIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhU291cmNlOiBNYXN0ZXJEYXRhSXRlbVtdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGRhdGFPYmoubWVzc2FnZS5jb250ZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50LmluZGV4T2YodGhpcy5jYXRlZ29yeUdyb3VwUHJlZml4KSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29kZSA9IGRhdGFPYmoubWVzc2FnZS5jb250ZW50LnJlcGxhY2UodGhpcy5jYXRlZ29yeUdyb3VwUHJlZml4LCAnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0R3JvdXBJdGVtQnlDb2RlKGdyb3VwQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlHcm91cFByZWZpeH0ke2dyb3VwQ29kZX1gLCBKU09OLnN0cmluZ2lmeShyZXN1bHQuZGF0YSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2luZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29kZSA9IGRhdGFPYmoubWVzc2FnZS5jb250ZW50LnJlcGxhY2UodGhpcy5jYXRlZ29yeVByZWZpeCwgJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvR2V0QWxsKGdyb3VwQ29kZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IGVsZW1lbnQuaWQsIGNvZGU6IGVsZW1lbnQuY29kZSwgbmFtZTogZWxlbWVudC5uYW1lIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5jYXRlZ29yeVByZWZpeH0ke2dyb3VwQ29kZX1gLCBKU09OLnN0cmluZ2lmeShkYXRhU291cmNlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2V0dXBTaWduYWxyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KGdyb3VwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxNYXN0ZXJEYXRhSXRlbVtdPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2U6IE1hc3RlckRhdGFJdGVtW10gPSBbXTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvR2V0QWxsKGdyb3VwQ29kZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgcmVzdWx0LmRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IGVsZW1lbnQuaWQsIGNvZGU6IGVsZW1lbnQuY29kZSwgbmFtZTogZWxlbWVudC5uYW1lIH1cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5jYXRlZ29yeVByZWZpeH0ke2dyb3VwQ29kZX1gLCBKU09OLnN0cmluZ2lmeShkYXRhU291cmNlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gPE1hc3RlckRhdGFJdGVtW10+SlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShkYXRhU291cmNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDb25maWdCeUNvZGUoY29kZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgY29uZmlnID0gJyc7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdG9yYWdlLmdldEl0ZW0oY29kZSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZG9HZXRDb25maWdCeUNvZGUoY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShjb2RlLCBKU09OLnN0cmluZ2lmeShyZXN1bHQuZGF0YSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbmZpZyA9IDxzdHJpbmc+cmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25maWcgPSA8c3RyaW5nPkpTT04ucGFyc2UodGhpcy5zdG9yYWdlLmdldEl0ZW0oY29kZSkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKGNvbmZpZyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RHJvcGRvd24oZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0KGdyb3VwQ29kZSkudGhlbihzb3VyY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3AgPSBzb3VyY2UubWFwKHggPT4gPFNlbGVjdEl0ZW0+eyB0aXRsZTogeC5uYW1lLCBsYWJlbDogeC5uYW1lLCB2YWx1ZTogeC5jb2RlIH0pO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvcCk7XHJcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHJlamVjdCg8U2VsZWN0SXRlbVtdPltdKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RE1DaHVuZ0Ryb3Bkb3duKGNvZGU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KGAke3RoaXMuc2luZ2xlQ2F0ZWdvcnlFbmRwb2ludH0vR2V0QnlGaWx0ZXJDb2RlQW5kTmFtZUJ5R3JvdXBDb2RlLyR7Y29kZX1gKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW1zKGdyb3VwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxTZWxlY3RJdGVtW10+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldChncm91cENvZGUpLnRoZW4oc291cmNlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wID0gc291cmNlLm1hcCh4ID0+IDxTZWxlY3RJdGVtPnsgbGFiZWw6IHgubmFtZSwgdmFsdWU6IHguY29kZSB9KTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUob3ApO1xyXG4gICAgICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoPFNlbGVjdEl0ZW1bXT5bXSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGdldEdyb3VwQnlDb2RlKGdyb3VwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgLy8gICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuZ2V0KGdyb3VwQ29kZSkudGhlbihzb3VyY2UgPT4ge1xyXG4gICAgLy8gICAgICAgICAgICAgcmVzb2x2ZShzb3VyY2UpO1xyXG4gICAgLy8gICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoPGFueVtdPltdKSk7XHJcbiAgICAvLyAgICAgfSk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgZ2V0RHJvcGRvd25BZGRyZXNzKGlkLCBsZXZlbCA9IDEpOiBQcm9taXNlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0QWRkcmVzcyhpZCwgbGV2ZWwpLnRoZW4oc291cmNlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wID0gc291cmNlLm1hcCh4ID0+IDxTZWxlY3RJdGVtPnsgdGl0bGU6IHgubmFtZSwgbGFiZWw6IHgubmFtZSwgdmFsdWU6IHguY29kZSB9KTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUob3ApO1xyXG4gICAgICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoPFNlbGVjdEl0ZW1bXT5bXSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFkZHJlc3MoaWQsIGxldmVsID0gMSk6IFByb21pc2U8TWFzdGVyRGF0YUl0ZW1bXT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBkYXRhU291cmNlOiBNYXN0ZXJEYXRhSXRlbVtdID0gW107XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdG9yYWdlLmdldEl0ZW0oYCR7dGhpcy5hZG1pbmlzdHJhdGl2ZVVuaXR9LkxldmVsJHtsZXZlbH0uJHtpZH1gKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kb2dldEFkZHJlc3MoaWQsIGxldmVsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0fS5MZXZlbCR7bGV2ZWx9LiR7aWR9YCwgSlNPTi5zdHJpbmdpZnkocmVzdWx0LmRhdGEpKTtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSA8TWFzdGVyRGF0YUl0ZW1bXT5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSA8TWFzdGVyRGF0YUl0ZW1bXT5KU09OLnBhcnNlKHRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0fS5MZXZlbCR7bGV2ZWx9LiR7aWR9YCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKGRhdGFTb3VyY2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFdhcmRzQnlzdHJlZXQoc3RyZWV0TmFtZTogc3RyaW5nLCBkaXN0cmljdENvZGU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdHJlZXRzID0gYXdhaXQgdGhpcy5nZXRBZGRyZXNzKGRpc3RyaWN0Q29kZSwgMik7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudElkcyA9IHN0cmVldHMuZmlsdGVyKHggPT4geC5uYW1lID09IHN0cmVldE5hbWUpLm1hcCh4ID0+IHgucGFyZW50SWQpO1xyXG4gICAgICAgICAgICByZXNvbHZlKHBhcmVudElkcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZG9nZXRBZGRyZXNzKGlkOiBzdHJpbmcsIGxldmVsID0gMSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBzZXJ2aWNlVXJpID0gYCR7dGhpcy5hcGlFbmRwb2ludH0vQ2l0eUNhdGVnb3J5L0dldEJ5UGFyZW50SWQvJHtpZH0/bGV2ZWw9JHtsZXZlbH1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4oc2VydmljZVVyaSlcclxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJdGVtRGV0YWlsVW5pdChpZDogc3RyaW5nKTogUHJvbWlzZTxNYXN0ZXJEYXRhSXRlbT4ge1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgaXRlbURhdGE6IE1hc3RlckRhdGFJdGVtID0gbmV3IE1hc3RlckRhdGFJdGVtKCk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdG9yYWdlLmdldEl0ZW0oYCR7dGhpcy5hZG1pbmlzdHJhdGl2ZVVuaXRJdGVtfSR7aWR9YCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9DaXR5Q2F0ZWdvcnkvR2V0QnlDb2RlLyR7aWR9YDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0PihzZXJ2aWNlVXJpKVxyXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLmFkbWluaXN0cmF0aXZlVW5pdEl0ZW19JHtpZH1gLCBKU09OLnN0cmluZ2lmeShyZXN1bHQuZGF0YSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGl0ZW1EYXRhID0gPE1hc3RlckRhdGFJdGVtPnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaXRlbURhdGEgPSA8TWFzdGVyRGF0YUl0ZW0+SlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmFkbWluaXN0cmF0aXZlVW5pdEl0ZW19JHtpZH1gKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUoaXRlbURhdGEpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZG9HZXRDb25maWdCeUNvZGUoY29kZTogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIC8vICBUT0RPOiBkbyBoaeG7h24gZ2nhu50ga28gZMO5bmcgbsOqbiBmaXggdOG6oW0gdmFsdWUsIHNhdSBz4bq9IHjhu60gbMO9IHRp4bq/cFxyXG4gICAgICAgICAgICByZXNvbHZlKDxSZXNwb25zZVJlc3VsdD57IGRhdGE6IHt9LCBzdWNjZXNzOiB0cnVlIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9Db25maWd1cmF0aW9uU2VydmljZS9HZXRWYWx1ZUJ5Q29kZT9jb2RlPSR7Y29kZX1gO1xyXG5cclxuICAgICAgICAvLyByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHNlcnZpY2VVcmkpXHJcbiAgICAgICAgLy8gICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgIC8vICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBkb0dldEFsbChncm91cENvZGU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBncm91cCA9IGF3YWl0IHRoaXMuZ2V0R3JvdXBCeUNvZGUoZ3JvdXBDb2RlKTtcclxuICAgICAgICBpZiAoIWdyb3VwLmRhdGEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoPFJlc3BvbnNlUmVzdWx0Pnsgc3VjY2VzczogdHJ1ZSwgZGF0YTogW10gfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBncmlkSW5mbyA9IG5ldyBHcmlkSW5mbyh7XHJcbiAgICAgICAgICAgIGZpZWxkczogJycsXHJcbiAgICAgICAgICAgIHBhZ2VJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwMDAwLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzb3J0czogW3sgZmllbGQ6ICdzb3J0JywgZGlyOiAxIH1dLFxyXG4gICAgICAgICAgICBmaWx0ZXJzOiBbdGhpcy5fY29tbW9uU2VydmljZS5uZXdGaWx0ZXIoJ2dyb3VwQ2F0ZWdvcnlJZCcsIE9wZXJhdG9yLmVxdWFsLCBncm91cC5kYXRhLmlkKV1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YShgJHt0aGlzLnNpbmdsZUNhdGVnb3J5RW5kcG9pbnR9L2dldERhdGFgLCBncmlkSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXREYXRhKHVyaSwgZ3JpZEluZm86IEdyaWRJbmZvKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHVyaSwgZ3JpZEluZm8pLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgZ2V0R3JvdXBCeUNvZGUoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJpID0gYCR7dGhpcy5ncm91cENhdGVnb3J5RW5kcG9pbnR9L2dldEJ5Q29kZS8ke2dyb3VwQ29kZX1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4odXJpKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRXb3JrRGF5cyhkYXRlOiBzdHJpbmcsIGRheXM6IG51bWJlciwgaXNEYXkgPSAxKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9Ib2xpZGF5Q2F0ZWdvcnkvR2V0RGF0ZT9kYXRlPSR7ZGF0ZX0mZGF5cz0ke2RheXN9JmlzRGF5PSR7aXNEYXl9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHNlcnZpY2VVcmkpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0ZUJ5RHVyYXRpb24oZGF0ZTogc3RyaW5nLCB0eXBlOiBib29sZWFuLCBkdXJhdGlvbjogbnVtYmVyKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9Ib2xpZGF5Q2F0ZWdvcnkvZ2V0RGF0ZUJ5RHVyYXRpb24/ZGF0ZT0ke2RhdGV9JnR5cGU9JHt0eXBlfSZkdXJhdGlvbj0ke2R1cmF0aW9ufWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0PihzZXJ2aWNlVXJpKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW1CeUNvZGUoZGF0YVNvdXJjZTogYW55LCBjb2RlOiBzdHJpbmcpOiBNYXN0ZXJEYXRhSXRlbSB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGFTb3VyY2UuZmluZCh4ID0+IHguY29kZSA9PT0gY29kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUJ5SW5zdGFuY2VJZChkYXRhU291cmNlOiBhbnksIGluc3RhbmNlSWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBkYXRhU291cmNlLmZpbmQoeCA9PiB4Lmluc3RhbmNlSWQgPT09IGluc3RhbmNlSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW1CeUlkKGRhdGFTb3VyY2U6IGFueSwgaWQ6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiBkYXRhU291cmNlLmZpbmQoeCA9PiB4LmlkID09PSBpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUJ5R3JvdXBBbmRDb2RlKGdyb3VwQ29kZTogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPE1hc3RlckRhdGFJdGVtPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2U6IE1hc3RlckRhdGFJdGVtW10gPSBbXTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvR2V0QWxsKGdyb3VwQ29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWAsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gPE1hc3RlckRhdGFJdGVtW10+cmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gPE1hc3RlckRhdGFJdGVtW10+SlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShkYXRhU291cmNlLmZpbmQoeCA9PiB4LmNvZGUgPT09IGNvZGUpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZWZyZXNoQ2F0ZWdvcnkoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCh0aGlzLmNhdGVnb3J5UHJlZml4KSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29kZSA9IGtleS5zcGxpdCgnXycpWzFdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldEFkcmVzcyhjaXR5OiBhbnksIGRpc3RyaWN0OiBhbnksIHdhcmQ6IGFueSwgc3RyZWV0OiBhbnksIHN0clRleHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IHN0clJlc3VsdCA9ICcnO1xyXG4gICAgICAgICAgICBpZiAoc3RyVGV4dCAmJiBzdHJUZXh0ICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICBzdHJSZXN1bHQgKz0gc3RyVGV4dCArICcsICc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN0cmVldCAmJiBzdHJlZXQgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSBzdHJlZXQgKyAnLCAnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh3YXJkICYmIHdhcmQgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHggPSBhd2FpdCB0aGlzLmdldEl0ZW1EZXRhaWxVbml0KHdhcmQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHggIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdHJSZXN1bHQgKz0geC5uYW1lICsgJywgJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGlzdHJpY3QgJiYgZGlzdHJpY3QgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHggPSBhd2FpdCB0aGlzLmdldEl0ZW1EZXRhaWxVbml0KGRpc3RyaWN0KTtcclxuICAgICAgICAgICAgICAgIGlmICh4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RyUmVzdWx0ICs9IHgubmFtZSArICcsICc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNpdHkgJiYgY2l0eSAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IGF3YWl0IHRoaXMuZ2V0SXRlbURldGFpbFVuaXQoY2l0eSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoeCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSB4Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzb2x2ZShzdHJSZXN1bHQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFZhbHVlQnlDb2RlKGNvZGU6IGFueSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNpbmdsZUNhdGVnb3J5RW5kcG9pbnR9L2dldFZhbHVlQnlDb2RlP2NvZGU9JHtjb2RlfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0Pih1cmwpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0R3JvdXBJdGVtQnlDb2RlKGNvZGU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9Hcm91cENhdGVnb3J5LyR7Y29kZX1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4odXJsKS5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcGFyc2VNYXRoRXhwcmVzc2lvbihleHByZXNzaW9uOiBzdHJpbmcsIGRlY2ltYWxQbGFjZXM6IG51bWJlciwgZm9yVmlldG5hbWVzZTogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgZXhwcmVzc2lvbiA9IGVuY29kZVVSSUNvbXBvbmVudChleHByZXNzaW9uKTtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9NYXRoRXhwcmVzc2lvbi9QYXJzZU1hdGg/ZXhwcmVzc2lvbj0ke2V4cHJlc3Npb259JmRlY2ltYWxQbGFjZXM9JHtkZWNpbWFsUGxhY2VzfSZmb3JWaWV0bmFtZXNlPSR7Zm9yVmlldG5hbWVzZX1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4odXJsKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEJ5R3JpZFJlcXVlc3QoZ3JvdXBDb2RlOiBzdHJpbmcsIGdyaWRJbmZvOiBHcmlkSW5mbywgcGx1c1VybDogc3RyaW5nID0gJycpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IGRhdGE6IGFueTtcclxuICAgICAgICAgICAgY29uc3QgZGF0YVN0b3JhZ2UgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApO1xyXG4gICAgICAgICAgICBpZiAoIWRhdGFTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYXBpVXJsID0gYCR7dGhpcy5zaW5nbGVDYXRlZ29yeUVuZHBvaW50fS9nZXREYXRhYDtcclxuICAgICAgICAgICAgICAgIGlmIChwbHVzVXJsICE9IG51bGwgJiYgcGx1c1VybCAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGFwaVVybCArPSAnLycgKyBwbHVzVXJsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZGF0YSA9IGF3YWl0IHRoaXMuX2h0dHBDbGllbnRcclxuICAgICAgICAgICAgICAgICAgICAucG9zdDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsLCBncmlkSW5mbylcclxuICAgICAgICAgICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKGVyciA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSkudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5jYXRlZ29yeVByZWZpeH0ke2dyb3VwQ29kZX1gLCBKU09OLnN0cmluZ2lmeShkYXRhLmRhdGEpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBKU09OLnBhcnNlKGRhdGFTdG9yYWdlKVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlR3JpZEluZm9Ecm9wZG93bihmaWx0ZXJzOiBGaWx0ZXJbXSwgb3B0aW9uczogRHJvcGRvd25PcHRpb25zKSB7XHJcbiAgICAgICAgY29uc3QgZ3JpZEluZm8gPSB7XHJcbiAgICAgICAgICAgIHBhZ2VJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwMDAwMFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmaWx0ZXJzLFxyXG4gICAgICAgICAgICBzb3J0czogW10sXHJcbiAgICAgICAgICAgIGZpZWxkczogYCR7b3B0aW9ucy52YWx1ZUZpZWxkfSR7b3B0aW9ucy5kaXNwbGF5RmllbGQgPT0gb3B0aW9ucy52YWx1ZUZpZWxkID8gJycgOiAnLCcgKyBvcHRpb25zLmRpc3BsYXlGaWVsZH0ke29wdGlvbnMuZmllbGRQbHVzfWBcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChvcHRpb25zLnNvcnRzICE9IG51bGwgJiYgb3B0aW9ucy5zb3J0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLnNvcnRzID0gWy4uLm9wdGlvbnMuc29ydHNdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3B0aW9ucy5zb3J0RmllbGQgIT0gbnVsbCAmJiBvcHRpb25zLnNvcnRGaWVsZCAhPSAnJykge1xyXG4gICAgICAgICAgICBncmlkSW5mby5zb3J0cy5wdXNoKHsgZmllbGQ6IG9wdGlvbnMuc29ydEZpZWxkLCBkaXI6IG9wdGlvbnMuc29ydERpciB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGdyaWRJbmZvO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0RGVmYXVsdFZhbHVlKG9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucykge1xyXG4gICAgICAgIGlmIChvcHRpb25zLmZpZWxkUGx1cy5sZW5ndGggPiAwICYmICFvcHRpb25zLmZpZWxkUGx1cy5zdGFydHNXaXRoKCcsJykpIHtcclxuICAgICAgICAgICAgb3B0aW9ucy5maWVsZFBsdXMgPSAnLCcgKyBvcHRpb25zLmZpZWxkUGx1cztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydEZpZWxkID09ICcnKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMuc29ydEZpZWxkID0gb3B0aW9ucy5kaXNwbGF5RmllbGQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvcHRpb25zLmZ1bmNHZXRMYWJlbCA9PSBudWxsIHx8IHR5cGVvZiBvcHRpb25zLmZ1bmNHZXRMYWJlbCAhPSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMuZnVuY0dldExhYmVsID0gKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtW29wdGlvbnMuZGlzcGxheUZpZWxkXTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YURyb3Bkb3duKGdyb3VwQ29kZTogc3RyaW5nLCBhcnJWYWx1ZTogYW55W10sIG9wdGlvbnM/OiBEcm9wZG93bk9wdGlvbnMpOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0VmFsdWUob3B0aW9ucyk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJyVmFsdWUgPT0gbnVsbCkgcmVzdWx0ID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzLmZpbHRlcih4ID0+IGFyclZhbHVlLnNvbWUodiA9PiB2ID09IHhbb3B0aW9ucy52YWx1ZUZpZWxkXSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGFEcm9wZG93bkJ5RmlsdGVyKGdyb3VwQ29kZTogc3RyaW5nLCBhcnJWYWx1ZTogYW55W10sIGZpbHRlcnM6IEZpbHRlcltdLCBvcHRpb25zPzogRHJvcGRvd25PcHRpb25zKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKG9wdGlvbnMpO1xyXG4gICAgICAgIGZpbHRlcnMuc3BsaWNlKDAsIDAsIHRoaXMuX2NvbW1vblNlcnZpY2UubmV3RmlsdGVyKCdncm91cENhdGVnb3J5Q29kZScsIE9wZXJhdG9yLmVxdWFsLCBncm91cENvZGUpKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldChncm91cENvZGUpXHJcbiAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXJyVmFsdWUgPT0gbnVsbCkgcmVzdWx0ID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXMuZmlsdGVyKHggPT4gYXJyVmFsdWUuc29tZSh2ID0+IHYgPT0geFtvcHRpb25zLnZhbHVlRmllbGRdKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSwgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgY29uc3QgY29tbW9uU2VydmljZSA9IGluamVjdG9yLmdldChDb21tb25TZXJ2aWNlKTtcclxuICAgICAgICByZXR1cm4gY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnJvciwgaW5qZWN0b3IpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL3NlcnZpY2VzL21hc3Rlci1kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdqRCxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFtQixRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFLdEMsTUFBTSxPQUFPLGlCQUFpQjtJQWExQixZQUNZLFdBQXVCLEVBQ3ZCLGNBQTZCLEVBQzdCLFNBQW1CLEVBQ25CLHNCQUE2QyxFQUM3QyxtQkFBdUM7UUFKdkMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQzdDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFqQm5ELGdCQUFXLEdBQUcsa0JBQWtCLENBQUM7UUFDakMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFWixZQUFPLEdBQUcsWUFBWSxDQUFDO1FBQ3ZCLG1CQUFjLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLHdCQUFtQixHQUFHLFlBQVksQ0FBQztRQUNuQyx1QkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztRQUM1QywyQkFBc0IsR0FBRywyQkFBMkIsQ0FBQztR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cEIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVUsRUFBRSxRQUFrQjtRQUN0QyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7OEdBOWFRLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmQsTUFBTTsyRkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBNYXN0ZXJEYXRhSXRlbSB9IGZyb20gJy4uL21vZGVscy9tYXN0ZXItZGF0YS1pdGVtJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4vY29tbW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuL2Vudmlyb25tZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlVXBkYXRlZFNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2UtdXBkYXRlZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVyLCBHcmlkSW5mbyB9IGZyb20gJy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBEcm9wZG93bk9wdGlvbnMsIE9wZXJhdG9yIH0gZnJvbSAnLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hc3RlckRhdGFTZXJ2aWNlIHtcclxuICAgIHNlcnZpY2VDb2RlID0gJ2NvbW1vbk1hc3RlckRhdGEnO1xyXG4gICAgc2V0dXBTaWduYWxyID0gZmFsc2U7XHJcbiAgICBhcGlFbmRwb2ludDogYW55O1xyXG4gICAgcmVhZG9ubHkgc3RvcmFnZSA9IGxvY2FsU3RvcmFnZTtcclxuICAgIHJlYWRvbmx5IGNhdGVnb3J5UHJlZml4ID0gJ2NhdF8nO1xyXG4gICAgcmVhZG9ubHkgY2F0ZWdvcnlHcm91cFByZWZpeCA9ICdjYXRfZ3JvdXBfJztcclxuICAgIHJlYWRvbmx5IGFkbWluaXN0cmF0aXZlVW5pdCA9ICdhZG1pbmlzdHJhdGl2ZV91bml0Xyc7XHJcbiAgICByZWFkb25seSBhZG1pbmlzdHJhdGl2ZVVuaXRJdGVtID0gJ2FkbWluaXN0cmF0aXZlX2l0ZW1fdW5pdF8nO1xyXG4gICAgcmVhZG9ubHkgZ3JvdXBDYXRlZ29yeUVuZHBvaW50O1xyXG4gICAgcmVhZG9ubHkgc2luZ2xlQ2F0ZWdvcnlFbmRwb2ludDtcclxuICAgIHJlYWRvbmx5IGFwaVZlcnNpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgICAgICBwcml2YXRlIF9jb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIF9zdG9yYWdlVXBkYXRlZFNlcnZpY2U6IFN0b3JhZ2VVcGRhdGVkU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9lbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5hcGlFbmRwb2ludCA9IF9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SHR0cFNlcnZpY2VFbmRwb2ludFdpdGhWZXJzaW9uKHRoaXMuc2VydmljZUNvZGUpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBDYXRlZ29yeUVuZHBvaW50ID0gYCR7dGhpcy5hcGlFbmRwb2ludH0vR3JvdXBjYXRlZ29yeWA7XHJcbiAgICAgICAgdGhpcy5zaW5nbGVDYXRlZ29yeUVuZHBvaW50ID0gYCR7dGhpcy5hcGlFbmRwb2ludH0vU2luZ2xlQ2F0ZWdvcnlgO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc2V0dXBTaWduYWxyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0b3JhZ2VVcGRhdGVkU2VydmljZS5zdWJzY3JpYmVDaGFuZ2VkTG9jYWxTdG9yYWdlKCdjYXRfKicsIGFzeW5jIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YU9iajtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFPYmogPSBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YU9iaiA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YU9iaikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFTb3VyY2U6IE1hc3RlckRhdGFJdGVtW10gPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZGF0YU9iai5tZXNzYWdlLmNvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQuaW5kZXhPZih0aGlzLmNhdGVnb3J5R3JvdXBQcmVmaXgpID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3JvdXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBDb2RlID0gZGF0YU9iai5tZXNzYWdlLmNvbnRlbnQucmVwbGFjZSh0aGlzLmNhdGVnb3J5R3JvdXBQcmVmaXgsICcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRHcm91cEl0ZW1CeUNvZGUoZ3JvdXBDb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5jYXRlZ29yeUdyb3VwUHJlZml4fSR7Z3JvdXBDb2RlfWAsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzaW5nbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBDb2RlID0gZGF0YU9iai5tZXNzYWdlLmNvbnRlbnQucmVwbGFjZSh0aGlzLmNhdGVnb3J5UHJlZml4LCAnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZG9HZXRBbGwoZ3JvdXBDb2RlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5kYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogZWxlbWVudC5pZCwgY29kZTogZWxlbWVudC5jb2RlLCBuYW1lOiBlbGVtZW50Lm5hbWUgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWAsIEpTT04uc3RyaW5naWZ5KGRhdGFTb3VyY2UpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZXR1cFNpZ25hbHIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPE1hc3RlckRhdGFJdGVtW10+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZGF0YVNvdXJjZTogTWFzdGVyRGF0YUl0ZW1bXSA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZG9HZXRBbGwoZ3JvdXBDb2RlKTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXN1bHQuZGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogZWxlbWVudC5pZCwgY29kZTogZWxlbWVudC5jb2RlLCBuYW1lOiBlbGVtZW50Lm5hbWUgfVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWAsIEpTT04uc3RyaW5naWZ5KGRhdGFTb3VyY2UpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSA8TWFzdGVyRGF0YUl0ZW1bXT5KU09OLnBhcnNlKHRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKGRhdGFTb3VyY2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENvbmZpZ0J5Q29kZShjb2RlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb25maWcgPSAnJztcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShjb2RlKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kb0dldENvbmZpZ0J5Q29kZShjb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGNvZGUsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uZmlnID0gPHN0cmluZz5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbmZpZyA9IDxzdHJpbmc+SlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2UuZ2V0SXRlbShjb2RlKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUoY29uZmlnKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREcm9wZG93bihncm91cENvZGU6IHN0cmluZyk6IFByb21pc2U8U2VsZWN0SXRlbVtdPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKS50aGVuKHNvdXJjZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcCA9IHNvdXJjZS5tYXAoeCA9PiA8U2VsZWN0SXRlbT57IHRpdGxlOiB4Lm5hbWUsIGxhYmVsOiB4Lm5hbWUsIHZhbHVlOiB4LmNvZGUgfSk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKG9wKTtcclxuICAgICAgICAgICAgfSwgZXJyb3IgPT4gcmVqZWN0KDxTZWxlY3RJdGVtW10+W10pKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRETUNodW5nRHJvcGRvd24oY29kZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4oYCR7dGhpcy5zaW5nbGVDYXRlZ29yeUVuZHBvaW50fS9HZXRCeUZpbHRlckNvZGVBbmROYW1lQnlHcm91cENvZGUvJHtjb2RlfWApXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbXMoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0KGdyb3VwQ29kZSkudGhlbihzb3VyY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3AgPSBzb3VyY2UubWFwKHggPT4gPFNlbGVjdEl0ZW0+eyBsYWJlbDogeC5uYW1lLCB2YWx1ZTogeC5jb2RlIH0pO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvcCk7XHJcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHJlamVjdCg8U2VsZWN0SXRlbVtdPltdKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZ2V0R3JvdXBCeUNvZGUoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAvLyAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIC8vICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKS50aGVuKHNvdXJjZSA9PiB7XHJcbiAgICAvLyAgICAgICAgICAgICByZXNvbHZlKHNvdXJjZSk7XHJcbiAgICAvLyAgICAgICAgIH0sIGVycm9yID0+IHJlamVjdCg8YW55W10+W10pKTtcclxuICAgIC8vICAgICB9KTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBnZXREcm9wZG93bkFkZHJlc3MoaWQsIGxldmVsID0gMSk6IFByb21pc2U8U2VsZWN0SXRlbVtdPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXRBZGRyZXNzKGlkLCBsZXZlbCkudGhlbihzb3VyY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3AgPSBzb3VyY2UubWFwKHggPT4gPFNlbGVjdEl0ZW0+eyB0aXRsZTogeC5uYW1lLCBsYWJlbDogeC5uYW1lLCB2YWx1ZTogeC5jb2RlIH0pO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvcCk7XHJcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHJlamVjdCg8U2VsZWN0SXRlbVtdPltdKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWRkcmVzcyhpZCwgbGV2ZWwgPSAxKTogUHJvbWlzZTxNYXN0ZXJEYXRhSXRlbVtdPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2U6IE1hc3RlckRhdGFJdGVtW10gPSBbXTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmFkbWluaXN0cmF0aXZlVW5pdH0uTGV2ZWwke2xldmVsfS4ke2lkfWApKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvZ2V0QWRkcmVzcyhpZCwgbGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5hZG1pbmlzdHJhdGl2ZVVuaXR9LkxldmVsJHtsZXZlbH0uJHtpZH1gLCBKU09OLnN0cmluZ2lmeShyZXN1bHQuZGF0YSkpO1xyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSA9IDxNYXN0ZXJEYXRhSXRlbVtdPnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSA9IDxNYXN0ZXJEYXRhSXRlbVtdPkpTT04ucGFyc2UodGhpcy5zdG9yYWdlLmdldEl0ZW0oYCR7dGhpcy5hZG1pbmlzdHJhdGl2ZVVuaXR9LkxldmVsJHtsZXZlbH0uJHtpZH1gKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUoZGF0YVNvdXJjZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V2FyZHNCeXN0cmVldChzdHJlZXROYW1lOiBzdHJpbmcsIGRpc3RyaWN0Q29kZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0cmVldHMgPSBhd2FpdCB0aGlzLmdldEFkZHJlc3MoZGlzdHJpY3RDb2RlLCAyKTtcclxuICAgICAgICAgICAgY29uc3QgcGFyZW50SWRzID0gc3RyZWV0cy5maWx0ZXIoeCA9PiB4Lm5hbWUgPT0gc3RyZWV0TmFtZSkubWFwKHggPT4geC5wYXJlbnRJZCk7XHJcbiAgICAgICAgICAgIHJlc29sdmUocGFyZW50SWRzKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkb2dldEFkZHJlc3MoaWQ6IHN0cmluZywgbGV2ZWwgPSAxKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9DaXR5Q2F0ZWdvcnkvR2V0QnlQYXJlbnRJZC8ke2lkfT9sZXZlbD0ke2xldmVsfWA7XHJcbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0PihzZXJ2aWNlVXJpKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJdGVtRGV0YWlsVW5pdChpZDogc3RyaW5nKTogUHJvbWlzZTxNYXN0ZXJEYXRhSXRlbT4ge1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgaXRlbURhdGE6IE1hc3RlckRhdGFJdGVtID0gbmV3IE1hc3RlckRhdGFJdGVtKCk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdG9yYWdlLmdldEl0ZW0oYCR7dGhpcy5hZG1pbmlzdHJhdGl2ZVVuaXRJdGVtfSR7aWR9YCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9DaXR5Q2F0ZWdvcnkvR2V0QnlDb2RlLyR7aWR9YDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0PihzZXJ2aWNlVXJpKVxyXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5hZG1pbmlzdHJhdGl2ZVVuaXRJdGVtfSR7aWR9YCwgSlNPTi5zdHJpbmdpZnkocmVzdWx0LmRhdGEpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpdGVtRGF0YSA9IDxNYXN0ZXJEYXRhSXRlbT5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGl0ZW1EYXRhID0gPE1hc3RlckRhdGFJdGVtPkpTT04ucGFyc2UodGhpcy5zdG9yYWdlLmdldEl0ZW0oYCR7dGhpcy5hZG1pbmlzdHJhdGl2ZVVuaXRJdGVtfSR7aWR9YCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKGl0ZW1EYXRhKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRvR2V0Q29uZmlnQnlDb2RlKGNvZGU6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgVE9ETzogZG8gaGnhu4duIGdp4budIGtvIGTDuW5nIG7Dqm4gZml4IHThuqFtIHZhbHVlLCBzYXUgc+G6vSB44butIGzDvSB0aeG6v3BcclxuICAgICAgICAgICAgcmVzb2x2ZSg8UmVzcG9uc2VSZXN1bHQ+eyBkYXRhOiB7fSwgc3VjY2VzczogdHJ1ZSB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBjb25zdCBzZXJ2aWNlVXJpID0gYCR7dGhpcy5hcGlFbmRwb2ludH0vQ29uZmlndXJhdGlvblNlcnZpY2UvR2V0VmFsdWVCeUNvZGU/Y29kZT0ke2NvZGV9YDtcclxuXHJcbiAgICAgICAgLy8gcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0PihzZXJ2aWNlVXJpKVxyXG4gICAgICAgIC8vICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAvLyAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIGRvR2V0QWxsKGdyb3VwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGdyb3VwID0gYXdhaXQgdGhpcy5nZXRHcm91cEJ5Q29kZShncm91cENvZGUpO1xyXG4gICAgICAgIGlmICghZ3JvdXAuZGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSg8UmVzcG9uc2VSZXN1bHQ+eyBzdWNjZXNzOiB0cnVlLCBkYXRhOiBbXSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGdyaWRJbmZvID0gbmV3IEdyaWRJbmZvKHtcclxuICAgICAgICAgICAgZmllbGRzOiAnJyxcclxuICAgICAgICAgICAgcGFnZUluZm86IHtcclxuICAgICAgICAgICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogMTAwMDAsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNvcnRzOiBbeyBmaWVsZDogJ3NvcnQnLCBkaXI6IDEgfV0sXHJcbiAgICAgICAgICAgIGZpbHRlcnM6IFt0aGlzLl9jb21tb25TZXJ2aWNlLm5ld0ZpbHRlcignZ3JvdXBDYXRlZ29yeUlkJywgT3BlcmF0b3IuZXF1YWwsIGdyb3VwLmRhdGEuaWQpXVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRhKGAke3RoaXMuc2luZ2xlQ2F0ZWdvcnlFbmRwb2ludH0vZ2V0RGF0YWAsIGdyaWRJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERhdGEodXJpLCBncmlkSW5mbzogR3JpZEluZm8pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuX2h0dHBDbGllbnQucG9zdDxSZXNwb25zZVJlc3VsdD4odXJpLCBncmlkSW5mbykpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgZ2V0R3JvdXBCeUNvZGUoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJpID0gYCR7dGhpcy5ncm91cENhdGVnb3J5RW5kcG9pbnR9L2dldEJ5Q29kZS8ke2dyb3VwQ29kZX1gO1xyXG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4odXJpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkV29ya0RheXMoZGF0ZTogc3RyaW5nLCBkYXlzOiBudW1iZXIsIGlzRGF5ID0gMSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBzZXJ2aWNlVXJpID0gYCR7dGhpcy5hcGlFbmRwb2ludH0vSG9saWRheUNhdGVnb3J5L0dldERhdGU/ZGF0ZT0ke2RhdGV9JmRheXM9JHtkYXlzfSZpc0RheT0ke2lzRGF5fWA7XHJcbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0PihzZXJ2aWNlVXJpKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRlQnlEdXJhdGlvbihkYXRlOiBzdHJpbmcsIHR5cGU6IGJvb2xlYW4sIGR1cmF0aW9uOiBudW1iZXIpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3Qgc2VydmljZVVyaSA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L0hvbGlkYXlDYXRlZ29yeS9nZXREYXRlQnlEdXJhdGlvbj9kYXRlPSR7ZGF0ZX0mdHlwZT0ke3R5cGV9JmR1cmF0aW9uPSR7ZHVyYXRpb259YDtcclxuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHNlcnZpY2VVcmkpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW1CeUNvZGUoZGF0YVNvdXJjZTogYW55LCBjb2RlOiBzdHJpbmcpOiBNYXN0ZXJEYXRhSXRlbSB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGFTb3VyY2UuZmluZCh4ID0+IHguY29kZSA9PT0gY29kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUJ5SW5zdGFuY2VJZChkYXRhU291cmNlOiBhbnksIGluc3RhbmNlSWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBkYXRhU291cmNlLmZpbmQoeCA9PiB4Lmluc3RhbmNlSWQgPT09IGluc3RhbmNlSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW1CeUlkKGRhdGFTb3VyY2U6IGFueSwgaWQ6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiBkYXRhU291cmNlLmZpbmQoeCA9PiB4LmlkID09PSBpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUJ5R3JvdXBBbmRDb2RlKGdyb3VwQ29kZTogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPE1hc3RlckRhdGFJdGVtPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2U6IE1hc3RlckRhdGFJdGVtW10gPSBbXTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvR2V0QWxsKGdyb3VwQ29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWAsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gPE1hc3RlckRhdGFJdGVtW10+cmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gPE1hc3RlckRhdGFJdGVtW10+SlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShkYXRhU291cmNlLmZpbmQoeCA9PiB4LmNvZGUgPT09IGNvZGUpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZWZyZXNoQ2F0ZWdvcnkoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCh0aGlzLmNhdGVnb3J5UHJlZml4KSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29kZSA9IGtleS5zcGxpdCgnXycpWzFdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldEFkcmVzcyhjaXR5OiBhbnksIGRpc3RyaWN0OiBhbnksIHdhcmQ6IGFueSwgc3RyZWV0OiBhbnksIHN0clRleHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IHN0clJlc3VsdCA9ICcnO1xyXG4gICAgICAgICAgICBpZiAoc3RyVGV4dCAmJiBzdHJUZXh0ICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICBzdHJSZXN1bHQgKz0gc3RyVGV4dCArICcsICc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN0cmVldCAmJiBzdHJlZXQgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSBzdHJlZXQgKyAnLCAnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh3YXJkICYmIHdhcmQgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHggPSBhd2FpdCB0aGlzLmdldEl0ZW1EZXRhaWxVbml0KHdhcmQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHggIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdHJSZXN1bHQgKz0geC5uYW1lICsgJywgJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGlzdHJpY3QgJiYgZGlzdHJpY3QgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHggPSBhd2FpdCB0aGlzLmdldEl0ZW1EZXRhaWxVbml0KGRpc3RyaWN0KTtcclxuICAgICAgICAgICAgICAgIGlmICh4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RyUmVzdWx0ICs9IHgubmFtZSArICcsICc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNpdHkgJiYgY2l0eSAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IGF3YWl0IHRoaXMuZ2V0SXRlbURldGFpbFVuaXQoY2l0eSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoeCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSB4Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzb2x2ZShzdHJSZXN1bHQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFZhbHVlQnlDb2RlKGNvZGU6IGFueSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNpbmdsZUNhdGVnb3J5RW5kcG9pbnR9L2dldFZhbHVlQnlDb2RlP2NvZGU9JHtjb2RlfWA7XHJcbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0Pih1cmwpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEdyb3VwSXRlbUJ5Q29kZShjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcGlFbmRwb2ludH0vR3JvdXBDYXRlZ29yeS8ke2NvZGV9YDtcclxuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHVybCkucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJzZU1hdGhFeHByZXNzaW9uKGV4cHJlc3Npb246IHN0cmluZywgZGVjaW1hbFBsYWNlczogbnVtYmVyLCBmb3JWaWV0bmFtZXNlOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBleHByZXNzaW9uID0gZW5jb2RlVVJJQ29tcG9uZW50KGV4cHJlc3Npb24pO1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L01hdGhFeHByZXNzaW9uL1BhcnNlTWF0aD9leHByZXNzaW9uPSR7ZXhwcmVzc2lvbn0mZGVjaW1hbFBsYWNlcz0ke2RlY2ltYWxQbGFjZXN9JmZvclZpZXRuYW1lc2U9JHtmb3JWaWV0bmFtZXNlfWA7XHJcbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0Pih1cmwpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEJ5R3JpZFJlcXVlc3QoZ3JvdXBDb2RlOiBzdHJpbmcsIGdyaWRJbmZvOiBHcmlkSW5mbywgcGx1c1VybDogc3RyaW5nID0gJycpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IGRhdGE6IGFueTtcclxuICAgICAgICAgICAgY29uc3QgZGF0YVN0b3JhZ2UgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApO1xyXG4gICAgICAgICAgICBpZiAoIWRhdGFTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYXBpVXJsID0gYCR7dGhpcy5zaW5nbGVDYXRlZ29yeUVuZHBvaW50fS9nZXREYXRhYDtcclxuICAgICAgICAgICAgICAgIGlmIChwbHVzVXJsICE9IG51bGwgJiYgcGx1c1VybCAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGFwaVVybCArPSAnLycgKyBwbHVzVXJsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2h0dHBDbGllbnRcclxuICAgICAgICAgICAgICAgICAgICAucG9zdDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsLCBncmlkSW5mbylcclxuICAgICAgICAgICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKGVyciA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCwgSlNPTi5zdHJpbmdpZnkoZGF0YS5kYXRhKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5wYXJzZShkYXRhU3RvcmFnZSlcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUdyaWRJbmZvRHJvcGRvd24oZmlsdGVyczogRmlsdGVyW10sIG9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IGdyaWRJbmZvID0ge1xyXG4gICAgICAgICAgICBwYWdlSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgcGFnZTogMSxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAxMDAwMDBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmlsdGVycyxcclxuICAgICAgICAgICAgc29ydHM6IFtdLFxyXG4gICAgICAgICAgICBmaWVsZHM6IGAke29wdGlvbnMudmFsdWVGaWVsZH0ke29wdGlvbnMuZGlzcGxheUZpZWxkID09IG9wdGlvbnMudmFsdWVGaWVsZCA/ICcnIDogJywnICsgb3B0aW9ucy5kaXNwbGF5RmllbGR9JHtvcHRpb25zLmZpZWxkUGx1c31gXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAob3B0aW9ucy5zb3J0cyAhPSBudWxsICYmIG9wdGlvbnMuc29ydHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBncmlkSW5mby5zb3J0cyA9IFsuLi5vcHRpb25zLnNvcnRzXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydEZpZWxkICE9IG51bGwgJiYgb3B0aW9ucy5zb3J0RmllbGQgIT0gJycpIHtcclxuICAgICAgICAgICAgZ3JpZEluZm8uc29ydHMucHVzaCh7IGZpZWxkOiBvcHRpb25zLnNvcnRGaWVsZCwgZGlyOiBvcHRpb25zLnNvcnREaXIgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBncmlkSW5mbztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldERlZmF1bHRWYWx1ZShvcHRpb25zOiBEcm9wZG93bk9wdGlvbnMpIHtcclxuICAgICAgICBpZiAob3B0aW9ucy5maWVsZFBsdXMubGVuZ3RoID4gMCAmJiAhb3B0aW9ucy5maWVsZFBsdXMuc3RhcnRzV2l0aCgnLCcpKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMuZmllbGRQbHVzID0gJywnICsgb3B0aW9ucy5maWVsZFBsdXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvcHRpb25zLnNvcnRGaWVsZCA9PSAnJykge1xyXG4gICAgICAgICAgICBvcHRpb25zLnNvcnRGaWVsZCA9IG9wdGlvbnMuZGlzcGxheUZpZWxkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3B0aW9ucy5mdW5jR2V0TGFiZWwgPT0gbnVsbCB8fCB0eXBlb2Ygb3B0aW9ucy5mdW5jR2V0TGFiZWwgIT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICBvcHRpb25zLmZ1bmNHZXRMYWJlbCA9IChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVtvcHRpb25zLmRpc3BsYXlGaWVsZF07XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGFEcm9wZG93bihncm91cENvZGU6IHN0cmluZywgYXJyVmFsdWU6IGFueVtdLCBvcHRpb25zPzogRHJvcGRvd25PcHRpb25zKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKG9wdGlvbnMpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0KGdyb3VwQ29kZSkudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFyclZhbHVlID09IG51bGwpIHJlc3VsdCA9IHJlcztcclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlcy5maWx0ZXIoeCA9PiBhcnJWYWx1ZS5zb21lKHYgPT4gdiA9PSB4W29wdGlvbnMudmFsdWVGaWVsZF0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhRHJvcGRvd25CeUZpbHRlcihncm91cENvZGU6IHN0cmluZywgYXJyVmFsdWU6IGFueVtdLCBmaWx0ZXJzOiBGaWx0ZXJbXSwgb3B0aW9ucz86IERyb3Bkb3duT3B0aW9ucyk6IFByb21pc2U8YW55W10+IHtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRWYWx1ZShvcHRpb25zKTtcclxuICAgICAgICBmaWx0ZXJzLnNwbGljZSgwLCAwLCB0aGlzLl9jb21tb25TZXJ2aWNlLm5ld0ZpbHRlcignZ3JvdXBDYXRlZ29yeUNvZGUnLCBPcGVyYXRvci5lcXVhbCwgZ3JvdXBDb2RlKSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFyclZhbHVlID09IG51bGwpIHJlc3VsdCA9IHJlcztcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzLmZpbHRlcih4ID0+IGFyclZhbHVlLnNvbWUodiA9PiB2ID09IHhbb3B0aW9ucy52YWx1ZUZpZWxkXSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUVycm9yKGVycm9yOiBhbnksIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIGNvbnN0IGNvbW1vblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQ29tbW9uU2VydmljZSk7XHJcbiAgICAgICAgcmV0dXJuIGNvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyb3IsIGluamVjdG9yKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,4 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { firstValueFrom } from 'rxjs';
2
3
  import { catchError, map, retry, shareReplay } from 'rxjs/operators';
3
4
  import { BaseService } from './base.service';
4
5
  import { CommonService } from './common.service';
@@ -36,11 +37,11 @@ export class OrganizationService extends BaseService {
36
37
  else {
37
38
  if (organizationId > 0) {
38
39
  const svUrl = `${this.serviceUri}/GetOrganizationInfo?id=${organizationId}`;
39
- const result = await this._http.get(svUrl).pipe(shareReplay(this.REPLAY_COUNT), retry(this.RETRY_COUNT), map(repsonse => {
40
+ const result = await firstValueFrom(this._http.get(svUrl).pipe(shareReplay(this.REPLAY_COUNT), retry(this.RETRY_COUNT), map(repsonse => {
40
41
  // save response to local storage here
41
42
  localStorage.setItem(this.ORGANIZATION_INFO_KEY + '_' + repsonse.data.id, JSON.stringify(repsonse.data));
42
43
  return repsonse.data;
43
- }, catchError((err) => this.handleError(err, this._injector)))).toPromise();
44
+ }, catchError((err) => this.handleError(err, this._injector)))));
44
45
  resolve(result);
45
46
  }
46
47
  }
@@ -60,29 +61,27 @@ export class OrganizationService extends BaseService {
60
61
  if (parentId) {
61
62
  svUrl += `&parentId=${parentId}`;
62
63
  }
63
- return this._http.get(svUrl).pipe(shareReplay(this.REPLAY_COUNT), retry(this.RETRY_COUNT), catchError((err) => this.handleError(err, this._injector))).toPromise();
64
+ return firstValueFrom(this._http.get(svUrl).pipe(shareReplay(this.REPLAY_COUNT), retry(this.RETRY_COUNT), catchError((err) => this.handleError(err, this._injector))));
64
65
  }
65
66
  getById(id) {
66
67
  const svUrl = `${this.serviceUri}/${id}`;
67
- return this._http.get(svUrl).pipe(shareReplay(this.REPLAY_COUNT), retry(this.RETRY_COUNT), catchError((err) => this.handleError(err, this._injector))).toPromise();
68
+ return firstValueFrom(this._http.get(svUrl).pipe(shareReplay(this.REPLAY_COUNT), retry(this.RETRY_COUNT), catchError((err) => this.handleError(err, this._injector))));
68
69
  }
69
70
  getOrganizationTree(organizationCode) {
70
71
  let apiUrl = `${this.serviceUri}/GetTree`;
71
72
  if (organizationCode) {
72
73
  apiUrl = `${apiUrl}?organizationCode=${organizationCode}`;
73
74
  }
74
- return this._http.get(apiUrl)
75
- .pipe(catchError((err) => this.handleError(err, this._injector)))
76
- .toPromise();
75
+ return firstValueFrom(this._http.get(apiUrl)
76
+ .pipe(catchError((err) => this.handleError(err, this._injector))));
77
77
  }
78
78
  getMyTree(organizationCode) {
79
79
  let apiUrl = `${this.serviceUri}/GetMyTree`;
80
80
  if (organizationCode) {
81
81
  apiUrl = `${apiUrl}?organizationCode=${organizationCode}`;
82
82
  }
83
- return this._http.get(apiUrl)
84
- .pipe(catchError((err) => this.handleError(err, this._injector)))
85
- .toPromise();
83
+ return firstValueFrom(this._http.get(apiUrl)
84
+ .pipe(catchError((err) => this.handleError(err, this._injector))));
86
85
  }
87
86
  getOrganizationTreeTable(isIgnoreClientCache = false) {
88
87
  const apiUrl = `${this.serviceUri}/GetTreeTable`;
@@ -96,27 +95,23 @@ export class OrganizationService extends BaseService {
96
95
  if (organizationCode) {
97
96
  apiUrl = `${apiUrl}?parentCode=${organizationCode}`;
98
97
  }
99
- return this._http.get(apiUrl)
100
- .pipe(catchError((err) => this.handleError(err, this._injector)))
101
- .toPromise();
98
+ return firstValueFrom(this._http.get(apiUrl)
99
+ .pipe(catchError((err) => this.handleError(err, this._injector))));
102
100
  }
103
101
  getManagerByOrgCode(organizationCode) {
104
102
  const apiUrl = `${this.serviceUri}/GetManagerByOrgCode/${organizationCode}`;
105
- return this._http.get(apiUrl)
106
- .pipe(catchError((err) => this.handleError(err, this._injector)))
107
- .toPromise();
103
+ return firstValueFrom(this._http.get(apiUrl)
104
+ .pipe(catchError((err) => this.handleError(err, this._injector))));
108
105
  }
109
106
  getManagerByOrgId(organizationId) {
110
107
  const apiUrl = `${this.serviceUri}/GetManagerByOrgId/${organizationId}`;
111
- return this._http.get(apiUrl)
112
- .pipe(catchError((err) => this.handleError(err, this._injector)))
113
- .toPromise();
108
+ return firstValueFrom(this._http.get(apiUrl)
109
+ .pipe(catchError((err) => this.handleError(err, this._injector))));
114
110
  }
115
111
  getOrganizationByParentId(parentId) {
116
112
  const apiUrl = `${this.serviceUri}/GetByParentId?parentId=${parentId}`;
117
- return this._http.get(apiUrl)
118
- .pipe(catchError((err) => this.handleError(err, this._injector)))
119
- .toPromise();
113
+ return firstValueFrom(this._http.get(apiUrl)
114
+ .pipe(catchError((err) => this.handleError(err, this._injector))));
120
115
  }
121
116
  }
122
117
  OrganizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: OrganizationService, deps: [{ token: i1.HttpClient }, { token: i0.Injector }, { token: i2.EnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -127,4 +122,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
127
122
  providedIn: 'root'
128
123
  }]
129
124
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.Injector }, { type: i2.EnvironmentService }]; } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9vcmdhbml6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBTWpELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUFXO0lBTWhELFlBQ0ksSUFBZ0IsRUFDaEIsUUFBa0IsRUFDbEIsbUJBQXVDO1FBRXZDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBVjlCLGdCQUFXLEdBQUcsU0FBUyxDQUFDO1FBQ2YsMEJBQXFCLEdBQUcsbUJBQW1CLENBQUM7UUFDNUMsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFDeEIsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFRL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxpQ0FBaUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLGVBQWUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsZUFBZSxDQUFDLGNBQW1CLEVBQUUsT0FBYTtRQUM5QyxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLG9CQUFvQixjQUFjLEVBQUUsQ0FBQztRQUVwRSxJQUFJLE9BQU8sRUFBRTtZQUNULE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxPQUFPLEVB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c3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHJldHJ5LCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT3JnYW5pemF0aW9uSW5mbyB9IGZyb20gJy4uL21vZGVscy9vcmdhbml6YXRpb24taW5mbyc7XHJcbmltcG9ydCB7IFJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vbW9kZWxzL3Jlc3BvbnNlLXJlc3VsdCc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi9jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4vZW52aXJvbm1lbnQuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE9yZ2FuaXphdGlvblNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XHJcbiAgICBzZXJ2aWNlQ29kZSA9ICd1c2VyT3JnJztcclxuICAgIHJlYWRvbmx5IE9SR0FOSVpBVElPTl9JTkZPX0tFWSA9ICdvcmdhbml6YXRpb25faW5mbyc7XHJcbiAgICByZWFkb25seSBSRVRSWV9DT1VOVDogbnVtYmVyID0gMDtcclxuICAgIHJlYWRvbmx5IFJFUExBWV9DT1VOVDogbnVtYmVyID0gMTA7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgX2Vudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihodHRwLCBpbmplY3RvciwgJycpO1xyXG4gICAgICAgIHRoaXMuZW5kUG9pbnQgPSBfZW52aXJvbm1lbnRTZXJ2aWNlLmdldEh0dHBTZXJ2aWNlRW5kcG9pbnRXaXRoVmVyc2lvbih0aGlzLnNlcnZpY2VDb2RlKTtcclxuICAgICAgICB0aGlzLnNlcnZpY2VVcmkgPSBgJHt0aGlzLmVuZFBvaW50fS9vcmdhbml6YXRpb25gO1xyXG4gICAgfVxyXG5cclxuICAgIHNldE5ndW9pRGFpRGllbihvcmdhbml6YXRpb25JZDogYW55LCBpZENhbkJvPzogYW55KSB7XHJcbiAgICAgICAgbGV0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vU2V0Tmd1b2lEYWlEaWVuLyR7b3JnYW5pemF0aW9uSWR9YDtcclxuXHJcbiAgICAgICAgaWYgKGlkQ2FuQm8pIHtcclxuICAgICAgICAgICAgYXBpVXJsID0gYCR7YXBpVXJsfS8ke2lkQ2FuQm99YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQdXQoYXBpVXJsLCBudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRPcmdhbml6YXRpb25JbmZvKG9yZ2FuaXphdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPE9yZ2FuaXphdGlvbkluZm8+IHtcclxuICAgICAgICBjb25zdCBzdG9yYWdlSXRlbSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuT1JHQU5JWkFUSU9OX0lORk9fS0VZICsgJ18nICsgb3JnYW5pemF0aW9uSWQpO1xyXG4gICAgICAgIGNvbnN0IG9yZ2FuaXphdGlvbiA9IDxPcmdhbml6YXRpb25JbmZvPkpTT04ucGFyc2Uoc3RvcmFnZUl0ZW0pO1xyXG4gICAgICAgIGlmIChvcmdhbml6YXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlc29sdmUob3JnYW5pemF0aW9uKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9yZ2FuaXphdGlvbklkID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoPE9yZ2FuaXphdGlvbkluZm8+e30pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9yZ2FuaXphdGlvbklkID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0T3JnYW5pemF0aW9uSW5mbz9pZD0ke29yZ2FuaXphdGlvbklkfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKHJlcHNvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzYXZlIHJlc3BvbnNlIHRvIGxvY2FsIHN0b3JhZ2UgaGVyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuT1JHQU5JWkFUSU9OX0lORk9fS0VZICsgJ18nICsgcmVwc29uc2UuZGF0YS5pZCwgSlNPTi5zdHJpbmdpZnkocmVwc29uc2UuZGF0YSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8T3JnYW5pemF0aW9uSW5mbz5yZXBzb25zZS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSwgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgY29uc3QgY29tbW9uU2VydmljZSA9IGluamVjdG9yLmdldChDb21tb25TZXJ2aWNlKTtcclxuICAgICAgICByZXR1cm4gY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnJvciwgaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0YWZmSW5Pcmdhbml6YXRpb24ob3JnYW5pemF0aW9uSWQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0U3RhZmZJbk9yZ2FuaXphdGlvbmA7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQoYXBpVXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRCeVBhcmVudElkKHBhcmVudElkPzogbnVtYmVyLCBsaXRtaXQ/OiBudW1iZXIpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgbGV0IHN2VXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS8/bGltaXQ9JHtsaXRtaXR9YDtcclxuICAgICAgICBpZiAocGFyZW50SWQpIHtcclxuICAgICAgICAgICAgc3ZVcmwgKz0gYCZwYXJlbnRJZD0ke3BhcmVudElkfWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKVxyXG4gICAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QnlJZChpZDogbnVtYmVyKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS8ke2lkfWA7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpXHJcbiAgICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRPcmdhbml6YXRpb25UcmVlKG9yZ2FuaXphdGlvbkNvZGU/OiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgbGV0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0VHJlZWA7XHJcblxyXG4gICAgICAgIGlmIChvcmdhbml6YXRpb25Db2RlKSB7XHJcbiAgICAgICAgICAgIGFwaVVybCA9IGAke2FwaVVybH0/b3JnYW5pemF0aW9uQ29kZT0ke29yZ2FuaXphdGlvbkNvZGV9YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE15VHJlZShvcmdhbml6YXRpb25Db2RlPzogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGxldCBhcGlVcmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldE15VHJlZWA7XHJcblxyXG4gICAgICAgIGlmIChvcmdhbml6YXRpb25Db2RlKSB7XHJcbiAgICAgICAgICAgIGFwaVVybCA9IGAke2FwaVVybH0/b3JnYW5pemF0aW9uQ29kZT0ke29yZ2FuaXphdGlvbkNvZGV9YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBnZXRPcmdhbml6YXRpb25UcmVlVGFibGUoaXNJZ25vcmVDbGllbnRDYWNoZTogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0VHJlZVRhYmxlYDtcclxuXHJcbiAgICAgICAgaWYgKGlzSWdub3JlQ2xpZW50Q2FjaGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SWdub3JlQ2xpZW50Q2FjaGUoYXBpVXJsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChhcGlVcmwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEJ5UGFyZW50Q29kZShvcmdhbml6YXRpb25Db2RlPzogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGxldCBhcGlVcmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEJ5UGFyZW50Q29kZWA7XHJcblxyXG4gICAgICAgIGlmIChvcmdhbml6YXRpb25Db2RlKSB7XHJcbiAgICAgICAgICAgIGFwaVVybCA9IGAke2FwaVVybH0/cGFyZW50Q29kZT0ke29yZ2FuaXphdGlvbkNvZGV9YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG4gICAgZ2V0TWFuYWdlckJ5T3JnQ29kZShvcmdhbml6YXRpb25Db2RlPzogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0TWFuYWdlckJ5T3JnQ29kZS8ke29yZ2FuaXphdGlvbkNvZGV9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KGFwaVVybClcclxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuICAgIGdldE1hbmFnZXJCeU9yZ0lkKG9yZ2FuaXphdGlvbklkPzogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0TWFuYWdlckJ5T3JnSWQvJHtvcmdhbml6YXRpb25JZH1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBnZXRPcmdhbml6YXRpb25CeVBhcmVudElkKHBhcmVudElkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYXBpVXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRCeVBhcmVudElkP3BhcmVudElkPSR7cGFyZW50SWR9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KGFwaVVybClcclxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbn1cclxuIl19
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9vcmdhbml6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFNakQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQVc7SUFNaEQsWUFDSSxJQUFnQixFQUNoQixRQUFrQixFQUNsQixtQkFBdUM7UUFFdkMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFWOUIsZ0JBQVcsR0FBRyxTQUFTLENBQUM7UUFDZiwwQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztRQUM1QyxnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUN4QixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQVEvQixJQUFJLENBQUMsUUFBUSxHQUFHLG1CQUFtQixDQUFDLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsZUFBZSxDQUFDO0lBQ3RELENBQUM7SUFFRCxlQUFlLENBQUMsY0FBbUIsRUFBRSxPQUFhO1FBQzlDLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsb0JBQW9CLGNBQWMsRUFBRSxDQUFDO1FBRXBFLElBQUksT0FBTyxF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aW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgcmV0cnksIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25JbmZvIH0gZnJvbSAnLi4vbW9kZWxzL29yZ2FuaXphdGlvbi1pbmZvJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcclxuICAgIHNlcnZpY2VDb2RlID0gJ3VzZXJPcmcnO1xyXG4gICAgcmVhZG9ubHkgT1JHQU5JWkFUSU9OX0lORk9fS0VZID0gJ29yZ2FuaXphdGlvbl9pbmZvJztcclxuICAgIHJlYWRvbmx5IFJFVFJZX0NPVU5UOiBudW1iZXIgPSAwO1xyXG4gICAgcmVhZG9ubHkgUkVQTEFZX0NPVU5UOiBudW1iZXIgPSAxMDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBfZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGh0dHAsIGluamVjdG9yLCAnJyk7XHJcbiAgICAgICAgdGhpcy5lbmRQb2ludCA9IF9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SHR0cFNlcnZpY2VFbmRwb2ludFdpdGhWZXJzaW9uKHRoaXMuc2VydmljZUNvZGUpO1xyXG4gICAgICAgIHRoaXMuc2VydmljZVVyaSA9IGAke3RoaXMuZW5kUG9pbnR9L29yZ2FuaXphdGlvbmA7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Tmd1b2lEYWlEaWVuKG9yZ2FuaXphdGlvbklkOiBhbnksIGlkQ2FuQm8/OiBhbnkpIHtcclxuICAgICAgICBsZXQgYXBpVXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9TZXROZ3VvaURhaURpZW4vJHtvcmdhbml6YXRpb25JZH1gO1xyXG5cclxuICAgICAgICBpZiAoaWRDYW5Cbykge1xyXG4gICAgICAgICAgICBhcGlVcmwgPSBgJHthcGlVcmx9LyR7aWRDYW5Cb31gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFB1dChhcGlVcmwsIG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9yZ2FuaXphdGlvbkluZm8ob3JnYW5pemF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8T3JnYW5pemF0aW9uSW5mbz4ge1xyXG4gICAgICAgIGNvbnN0IHN0b3JhZ2VJdGVtID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5PUkdBTklaQVRJT05fSU5GT19LRVkgKyAnXycgKyBvcmdhbml6YXRpb25JZCk7XHJcbiAgICAgICAgY29uc3Qgb3JnYW5pemF0aW9uID0gPE9yZ2FuaXphdGlvbkluZm8+SlNPTi5wYXJzZShzdG9yYWdlSXRlbSk7XHJcbiAgICAgICAgaWYgKG9yZ2FuaXphdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVzb2x2ZShvcmdhbml6YXRpb24pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3JnYW5pemF0aW9uSWQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdCg8T3JnYW5pemF0aW9uSW5mbz57fSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3JnYW5pemF0aW9uSWQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRPcmdhbml6YXRpb25JbmZvP2lkPSR7b3JnYW5pemF0aW9uSWR9YDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAocmVwc29uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhdmUgcmVzcG9uc2UgdG8gbG9jYWwgc3RvcmFnZSBoZXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5PUkdBTklaQVRJT05fSU5GT19LRVkgKyAnXycgKyByZXBzb25zZS5kYXRhLmlkLCBKU09OLnN0cmluZ2lmeShyZXBzb25zZS5kYXRhKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxPcmdhbml6YXRpb25JbmZvPnJlcHNvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSwgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgY29uc3QgY29tbW9uU2VydmljZSA9IGluamVjdG9yLmdldChDb21tb25TZXJ2aWNlKTtcclxuICAgICAgICByZXR1cm4gY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnJvciwgaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0YWZmSW5Pcmdhbml6YXRpb24ob3JnYW5pemF0aW9uSWQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0U3RhZmZJbk9yZ2FuaXphdGlvbmA7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQoYXBpVXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRCeVBhcmVudElkKHBhcmVudElkPzogbnVtYmVyLCBsaXRtaXQ/OiBudW1iZXIpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgbGV0IHN2VXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS8/bGltaXQ9JHtsaXRtaXR9YDtcclxuICAgICAgICBpZiAocGFyZW50SWQpIHtcclxuICAgICAgICAgICAgc3ZVcmwgKz0gYCZwYXJlbnRJZD0ke3BhcmVudElkfWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKVxyXG4gICAgICAgICkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEJ5SWQoaWQ6IG51bWJlcik6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vJHtpZH1gO1xyXG5cclxuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKVxyXG4gICAgICAgICkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9yZ2FuaXphdGlvblRyZWUob3JnYW5pemF0aW9uQ29kZT86IGFueSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBsZXQgYXBpVXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRUcmVlYDtcclxuXHJcbiAgICAgICAgaWYgKG9yZ2FuaXphdGlvbkNvZGUpIHtcclxuICAgICAgICAgICAgYXBpVXJsID0gYCR7YXBpVXJsfT9vcmdhbml6YXRpb25Db2RlPSR7b3JnYW5pemF0aW9uQ29kZX1gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihhcGlVcmwpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE15VHJlZShvcmdhbml6YXRpb25Db2RlPzogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGxldCBhcGlVcmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldE15VHJlZWA7XHJcblxyXG4gICAgICAgIGlmIChvcmdhbml6YXRpb25Db2RlKSB7XHJcbiAgICAgICAgICAgIGFwaVVybCA9IGAke2FwaVVybH0/b3JnYW5pemF0aW9uQ29kZT0ke29yZ2FuaXphdGlvbkNvZGV9YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZ2V0T3JnYW5pemF0aW9uVHJlZVRhYmxlKGlzSWdub3JlQ2xpZW50Q2FjaGU6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBhcGlVcmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldFRyZWVUYWJsZWA7XHJcblxyXG4gICAgICAgIGlmIChpc0lnbm9yZUNsaWVudENhY2hlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldElnbm9yZUNsaWVudENhY2hlKGFwaVVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQoYXBpVXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRCeVBhcmVudENvZGUob3JnYW5pemF0aW9uQ29kZT86IGFueSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBsZXQgYXBpVXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRCeVBhcmVudENvZGVgO1xyXG5cclxuICAgICAgICBpZiAob3JnYW5pemF0aW9uQ29kZSkge1xyXG4gICAgICAgICAgICBhcGlVcmwgPSBgJHthcGlVcmx9P3BhcmVudENvZGU9JHtvcmdhbml6YXRpb25Db2RlfWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KGFwaVVybClcclxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBnZXRNYW5hZ2VyQnlPcmdDb2RlKG9yZ2FuaXphdGlvbkNvZGU/OiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYXBpVXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRNYW5hZ2VyQnlPcmdDb2RlLyR7b3JnYW5pemF0aW9uQ29kZX1gO1xyXG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuICAgIGdldE1hbmFnZXJCeU9yZ0lkKG9yZ2FuaXphdGlvbklkPzogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0TWFuYWdlckJ5T3JnSWQvJHtvcmdhbml6YXRpb25JZH1gO1xyXG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZ2V0T3JnYW5pemF0aW9uQnlQYXJlbnRJZChwYXJlbnRJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0QnlQYXJlbnRJZD9wYXJlbnRJZD0ke3BhcmVudElkfWA7XHJcbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihhcGlVcmwpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
@@ -1,4 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { firstValueFrom } from 'rxjs';
2
3
  import { ExportItemType } from '../classes/constants';
3
4
  import { BaseService } from './base.service';
4
5
  import * as i0 from "@angular/core";
@@ -29,7 +30,7 @@ export class TemplateV4Service extends BaseService {
29
30
  }
30
31
  fillWordByTemplateCode(templateCode, data, fileName = 'TemplateWord.docx') {
31
32
  const url = `${this.serviceUri}/fillWordByTemplateCodeMultiData/${templateCode}`;
32
- return this._http.post(url, data, { responseType: 'blob' }).toPromise();
33
+ return firstValueFrom(this._http.post(url, data, { responseType: 'blob' }));
33
34
  }
34
35
  fillTemplateByCodeAndGetPdf(templateCode, data, onLoadingDataPdf = null, onEndLoadingDataPdf = null) {
35
36
  const url = `${this.serviceUri}/fillWordByTemplateCode/${templateCode}?isPrint=true`;
@@ -116,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
116
117
  providedIn: 'root'
117
118
  }]
118
119
  }], ctorParameters: function () { return [{ type: i1.EnvironmentService }, { type: i2.HttpClient }, { type: i3.PrintService }, { type: i4.FileV4Service }, { type: i5.NotifierService }, { type: i6.CrudService }, { type: i7.CommonService }, { type: i0.Injector }]; } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtdjQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL3NlcnZpY2VzL3RlbXBsYXRlLXY0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFXN0MsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFdBQVc7SUFFOUMsWUFDSSxtQkFBdUMsRUFDL0IsV0FBdUIsRUFDdkIsYUFBMkIsRUFDekIsY0FBNkIsRUFDN0IsZ0JBQWlDLEVBQ2pDLFlBQXlCLEVBQ3pCLGNBQTZCLEVBQy9CLFFBQWtCO1FBRTFCLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBUnpCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDL0IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQVQ5QixnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQVlyQixJQUFJLENBQUMsUUFBUSxHQUFHLG1CQUFtQixDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsV0FBVyxDQUFDO0lBQ2xELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFhLEVBQUUsT0FBZSxFQUFFO1FBQy9DLE1BQU0sR0FB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QUMsY0FBYyxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pFLE9BQVksUUFBUSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7OEdBaEhRLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmQsTUFBTTsyRkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRXhwb3J0SXRlbVR5cGUgfSBmcm9tICcuLi9jbGFzc2VzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEV4cG9ydEl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvZXhwb3J0LWl0ZW0nO1xyXG5pbXBvcnQgeyBSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4uL21vZGVscy9yZXNwb25zZS1yZXN1bHQnO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4vY29tbW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDcnVkU2VydmljZSB9IGZyb20gJy4vY3J1ZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZVY0U2VydmljZSB9IGZyb20gJy4vZmlsZS1vYmplY3QtdjQuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4vbm90aWZpZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFByaW50U2VydmljZSB9IGZyb20gJy4vcHJpbnQuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlVjRTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xyXG4gICAgc2VydmljZUNvZGUgPSAndGVtcGxhdGUnO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgX2Vudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2h0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBfcHJpbnRTZXJ2aWNlOiBQcmludFNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9maWxlVjRTZXJ2aWNlOiBGaWxlVjRTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfbm90aWZpZXJTZXJ2aWNlOiBOb3RpZmllclNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jcnVkU2VydmljZTogQ3J1ZFNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaHR0cENsaWVudCwgaW5qZWN0b3IsICcnKTtcclxuICAgICAgICB0aGlzLmVuZFBvaW50ID0gX2Vudmlyb25tZW50U2VydmljZS5nZXRIdHRwU2VydmljZUVuZHBvaW50T2xkKHRoaXMuc2VydmljZUNvZGUpO1xyXG4gICAgICAgIHRoaXMuc2VydmljZVVyaSA9IGAke3RoaXMuZW5kUG9pbnR9L3RlbXBsYXRlYDtcclxuICAgIH1cclxuXHJcbiAgICBsYVRleFRvQmFzZTY0SW1hZ2UobGFUZXg6IHN0cmluZywgZm9udDogbnVtYmVyID0gNTQpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYXBpID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9MYXRleFRvQmFzZTY0YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChhcGksIHsgbGFUZXgsIGZvbnQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsbFdvcmRCeVRlbXBsYXRlQ29kZSh0ZW1wbGF0ZUNvZGU6IHN0cmluZywgZGF0YTogYW55W10sIGZpbGVOYW1lID0gJ1RlbXBsYXRlV29yZC5kb2N4Jykge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vZmlsbFdvcmRCeVRlbXBsYXRlQ29kZU11bHRpRGF0YS8ke3RlbXBsYXRlQ29kZX1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8YW55Pih1cmwsIGRhdGEsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgYXMgJ2pzb24nIH0pLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbGxUZW1wbGF0ZUJ5Q29kZUFuZEdldFBkZih0ZW1wbGF0ZUNvZGU6IHN0cmluZywgZGF0YTogYW55LCBvbkxvYWRpbmdEYXRhUGRmID0gbnVsbCwgb25FbmRMb2FkaW5nRGF0YVBkZiA9IG51bGwpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L2ZpbGxXb3JkQnlUZW1wbGF0ZUNvZGUvJHt0ZW1wbGF0ZUNvZGV9P2lzUHJpbnQ9dHJ1ZWA7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZGF0YSlcclxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByaW50U2VydmljZS5wcmludEJhc2U2NFBkZihyZXMuZGF0YSwgb25Mb2FkaW5nRGF0YVBkZiwgb25FbmRMb2FkaW5nRGF0YVBkZik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbGxXb3JkQnlUZW1wbGF0ZUNvZGVNdWx0aURhdGEodGVtcGxhdGVDb2RlOiBzdHJpbmcsIGRhdGE6IGFueVtdLCBvbkxvYWRpbmdEYXRhUGRmID0gbnVsbCwgb25FbmRMb2FkaW5nRGF0YVBkZiA9IG51bGwpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L2ZpbGxXb3JkQnlUZW1wbGF0ZUNvZGVNdWx0aURhdGEvJHt0ZW1wbGF0ZUNvZGV9P2lzUHJpbnQ9dHJ1ZWA7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZGF0YSlcclxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByaW50U2VydmljZS5wcmludEJhc2U2NFBkZihyZXMuZGF0YSwgb25Mb2FkaW5nRGF0YVBkZiwgb25FbmRMb2FkaW5nRGF0YVBkZik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnZlcnRXb3JkVG9Gb3JtYXJ0QnlDb2RlKHRlbXBsYXRlQ29kZTogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9Db252ZXJ0V29yZFRvRm9ybWFydEJ5Q29kZS8ke3RlbXBsYXRlQ29kZX0vJHtmb3JtYXR9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9leHBvcnQobW9kZWw6IEV4cG9ydEl0ZW0pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9leHBvcnRgO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIG1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV4cG9ydCBhIHRyZWUgb2YgZm9sZGVycywgZmlsZXMgdXNpbmcgYmFja2dyb3VuZCBqb2IuXHJcbiAgICAgKiBAcGFyYW0gbW9kZWwgYVxyXG4gICAgICovXHJcbiAgICBhc3luYyBleHBvcnQobW9kZWw6IEV4cG9ydEl0ZW0pIHtcclxuICAgICAgICB0aGlzLl9leHBvcnQobW9kZWwpXHJcbiAgICAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dTdWNjZXNzKCdUaMOqbSB4deG6pXQgZmlsZSB0aMOgbmggY8O0bmchJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcnVkU2VydmljZS5wcm9jZXNzRXJyb3JSZXNwb25zZShycyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdUaGFvIHTDoWMgY2jGsGEgdGjDoG5oIGPDtG5nLiBWdWkgbMOybmcgdGjhu60gbOG6oWkgc2F1IScpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY29tbW9uU2VydmljZS5sb2dJbmZvU2ltcGxlKGVycik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9leHBvcnROb3JtYWwobW9kZWw6IEV4cG9ydEl0ZW0pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9leHBvcnROb3JtYWxgO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIG1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV4cG9ydCBhIHRyZWUgb2YgZm9sZGVycywgZmlsZXMgZGlyZWN0bHkuXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBhXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGV4cG9ydE5vcm1hbChkYXRhOiBFeHBvcnRJdGVtKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9leHBvcnROb3JtYWwoZGF0YSlcclxuICAgICAgICAgICAgLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByb290SXRlbSA9IHJzLmRhdGEgYXMgRXhwb3J0SXRlbTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS50eXBlID09IEV4cG9ydEl0ZW1UeXBlLkZvbGRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWxlVjRTZXJ2aWNlLmRvd25sb2FkRm9sZGVyKHJvb3RJdGVtLmZvbGRlcklkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVWNFNlcnZpY2UuZG93bmxvYWRGaWxlKHJvb3RJdGVtLmZpbGVJZCwgZmFsc2UsIHJvb3RJdGVtLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKHJzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ1RoYW8gdMOhYyBjaMawYSB0aMOgbmggY8O0bmcuIFZ1aSBsw7JuZyB0aOG7rSBs4bqhaSBzYXUhJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLmxvZ0luZm9TaW1wbGUoZXJyKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5fY29tbW9uU2VydmljZS5nZXRSZXNwb25zZVJlc3VsdEZyb21FeGNlcHRpb24oZXJyKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiA8YW55PnJlc3BvbnNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtdjQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL3NlcnZpY2VzL3RlbXBsYXRlLXY0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVc3QyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsV0FBVztJQUU5QyxZQUNJLG1CQUF1QyxFQUMvQixXQUF1QixFQUN2QixhQUEyQixFQUN6QixjQUE2QixFQUM3QixnQkFBaUMsRUFDakMsWUFBeUIsRUFDekIsY0FBNkIsRUFDL0IsUUFBa0I7UUFFMUIsS0FBSyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFSekIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6QixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUMvQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBVDlCLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBWXJCLElBQUksQ0FBQyxRQUFRLEdBQUcsbUJBQW1CLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxXQUFXLENBQUM7SUFDbEQsQ0FBQztJQUVELGtCQUFr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QUcsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsOEJBQThCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekUsT0FBWSxRQUFRLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDOzs4R0FoSFEsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGZCxNQUFNOzJGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFeHBvcnRJdGVtVHlwZSB9IGZyb20gJy4uL2NsYXNzZXMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRXhwb3J0SXRlbSB9IGZyb20gJy4uL21vZGVscy9leHBvcnQtaXRlbSc7XHJcbmltcG9ydCB7IFJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vbW9kZWxzL3Jlc3BvbnNlLXJlc3VsdCc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi9jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENydWRTZXJ2aWNlIH0gZnJvbSAnLi9jcnVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuL2Vudmlyb25tZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWxlVjRTZXJ2aWNlIH0gZnJvbSAnLi9maWxlLW9iamVjdC12NC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmllci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJpbnRTZXJ2aWNlIH0gZnJvbSAnLi9wcmludC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVWNFNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XHJcbiAgICBzZXJ2aWNlQ29kZSA9ICd0ZW1wbGF0ZSc7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBfZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgICAgICBwcml2YXRlIF9wcmludFNlcnZpY2U6IFByaW50U2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2ZpbGVWNFNlcnZpY2U6IEZpbGVWNFNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9ub3RpZmllclNlcnZpY2U6IE5vdGlmaWVyU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2NydWRTZXJ2aWNlOiBDcnVkU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2NvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9odHRwQ2xpZW50LCBpbmplY3RvciwgJycpO1xyXG4gICAgICAgIHRoaXMuZW5kUG9pbnQgPSBfZW52aXJvbm1lbnRTZXJ2aWNlLmdldEh0dHBTZXJ2aWNlRW5kcG9pbnRPbGQodGhpcy5zZXJ2aWNlQ29kZSk7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpID0gYCR7dGhpcy5lbmRQb2ludH0vdGVtcGxhdGVgO1xyXG4gICAgfVxyXG5cclxuICAgIGxhVGV4VG9CYXNlNjRJbWFnZShsYVRleDogc3RyaW5nLCBmb250OiBudW1iZXIgPSA1NCk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBhcGkgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0xhdGV4VG9CYXNlNjRgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGFwaSwgeyBsYVRleCwgZm9udCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmaWxsV29yZEJ5VGVtcGxhdGVDb2RlKHRlbXBsYXRlQ29kZTogc3RyaW5nLCBkYXRhOiBhbnlbXSwgZmlsZU5hbWUgPSAnVGVtcGxhdGVXb3JkLmRvY3gnKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9maWxsV29yZEJ5VGVtcGxhdGVDb2RlTXVsdGlEYXRhLyR7dGVtcGxhdGVDb2RlfWA7XHJcbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuX2h0dHAucG9zdDxhbnk+KHVybCwgZGF0YSwgeyByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbGxUZW1wbGF0ZUJ5Q29kZUFuZEdldFBkZih0ZW1wbGF0ZUNvZGU6IHN0cmluZywgZGF0YTogYW55LCBvbkxvYWRpbmdEYXRhUGRmID0gbnVsbCwgb25FbmRMb2FkaW5nRGF0YVBkZiA9IG51bGwpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L2ZpbGxXb3JkQnlUZW1wbGF0ZUNvZGUvJHt0ZW1wbGF0ZUNvZGV9P2lzUHJpbnQ9dHJ1ZWA7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZGF0YSlcclxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByaW50U2VydmljZS5wcmludEJhc2U2NFBkZihyZXMuZGF0YSwgb25Mb2FkaW5nRGF0YVBkZiwgb25FbmRMb2FkaW5nRGF0YVBkZik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbGxXb3JkQnlUZW1wbGF0ZUNvZGVNdWx0aURhdGEodGVtcGxhdGVDb2RlOiBzdHJpbmcsIGRhdGE6IGFueVtdLCBvbkxvYWRpbmdEYXRhUGRmID0gbnVsbCwgb25FbmRMb2FkaW5nRGF0YVBkZiA9IG51bGwpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L2ZpbGxXb3JkQnlUZW1wbGF0ZUNvZGVNdWx0aURhdGEvJHt0ZW1wbGF0ZUNvZGV9P2lzUHJpbnQ9dHJ1ZWA7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZGF0YSlcclxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByaW50U2VydmljZS5wcmludEJhc2U2NFBkZihyZXMuZGF0YSwgb25Mb2FkaW5nRGF0YVBkZiwgb25FbmRMb2FkaW5nRGF0YVBkZik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnZlcnRXb3JkVG9Gb3JtYXJ0QnlDb2RlKHRlbXBsYXRlQ29kZTogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9Db252ZXJ0V29yZFRvRm9ybWFydEJ5Q29kZS8ke3RlbXBsYXRlQ29kZX0vJHtmb3JtYXR9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9leHBvcnQobW9kZWw6IEV4cG9ydEl0ZW0pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9leHBvcnRgO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIG1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV4cG9ydCBhIHRyZWUgb2YgZm9sZGVycywgZmlsZXMgdXNpbmcgYmFja2dyb3VuZCBqb2IuXHJcbiAgICAgKiBAcGFyYW0gbW9kZWwgYVxyXG4gICAgICovXHJcbiAgICBhc3luYyBleHBvcnQobW9kZWw6IEV4cG9ydEl0ZW0pIHtcclxuICAgICAgICB0aGlzLl9leHBvcnQobW9kZWwpXHJcbiAgICAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dTdWNjZXNzKCdUaMOqbSB4deG6pXQgZmlsZSB0aMOgbmggY8O0bmchJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcnVkU2VydmljZS5wcm9jZXNzRXJyb3JSZXNwb25zZShycyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdUaGFvIHTDoWMgY2jGsGEgdGjDoG5oIGPDtG5nLiBWdWkgbMOybmcgdGjhu60gbOG6oWkgc2F1IScpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY29tbW9uU2VydmljZS5sb2dJbmZvU2ltcGxlKGVycik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9leHBvcnROb3JtYWwobW9kZWw6IEV4cG9ydEl0ZW0pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9leHBvcnROb3JtYWxgO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIG1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV4cG9ydCBhIHRyZWUgb2YgZm9sZGVycywgZmlsZXMgZGlyZWN0bHkuXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBhXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGV4cG9ydE5vcm1hbChkYXRhOiBFeHBvcnRJdGVtKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9leHBvcnROb3JtYWwoZGF0YSlcclxuICAgICAgICAgICAgLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByb290SXRlbSA9IHJzLmRhdGEgYXMgRXhwb3J0SXRlbTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS50eXBlID09IEV4cG9ydEl0ZW1UeXBlLkZvbGRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWxlVjRTZXJ2aWNlLmRvd25sb2FkRm9sZGVyKHJvb3RJdGVtLmZvbGRlcklkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVWNFNlcnZpY2UuZG93bmxvYWRGaWxlKHJvb3RJdGVtLmZpbGVJZCwgZmFsc2UsIHJvb3RJdGVtLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKHJzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ1RoYW8gdMOhYyBjaMawYSB0aMOgbmggY8O0bmcuIFZ1aSBsw7JuZyB0aOG7rSBs4bqhaSBzYXUhJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLmxvZ0luZm9TaW1wbGUoZXJyKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5fY29tbW9uU2VydmljZS5nZXRSZXNwb25zZVJlc3VsdEZyb21FeGNlcHRpb24oZXJyKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiA8YW55PnJlc3BvbnNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=