ctt-puro 0.66.10 → 0.66.11

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.
@@ -1308,11 +1308,11 @@ export class MapperService {
1308
1308
  }
1309
1309
  }
1310
1310
  if (imagesMobile?.length) {
1311
- const heroImg = new Image();
1312
- heroImg.src = imagesMobile[0].src;
1313
- heroImg.decoding = 'async';
1314
- heroImg.setAttribute('fetchpriority', 'high');
1315
- heroImg.loading = 'eager';
1311
+ const heroImgMobile = new Image();
1312
+ heroImgMobile.src = imagesMobile[0].src;
1313
+ heroImgMobile.decoding = 'async';
1314
+ heroImgMobile.setAttribute('fetchpriority', 'high');
1315
+ heroImgMobile.loading = 'eager';
1316
1316
  if (imagesMobile?.length > 1) {
1317
1317
  const prefetch = new Image();
1318
1318
  prefetch.src = imagesMobile[1].src;
@@ -2505,9 +2505,9 @@ export class MapperService {
2505
2505
  title: typeof props?.texts?.title === 'string'
2506
2506
  ? props?.texts?.title
2507
2507
  : props?.texts?.title?.contain,
2508
- pretitle: typeof props?.texts?.pretitle === 'string'
2509
- ? props?.texts?.pretitle
2510
- : props?.texts?.pretitle?.contain,
2508
+ pretitle: typeof props?.texts?.subtitle === 'string'
2509
+ ? props?.texts?.subtitle
2510
+ : props?.texts?.subtitle?.contain,
2511
2511
  description: props?.texts?.description,
2512
2512
  items: Utils.normalizeImages(props?.multimedia?.imagenes).map((img) => ({
2513
2513
  year: img?.title,
@@ -2516,11 +2516,11 @@ export class MapperService {
2516
2516
  img: this.getImageResponsive(img),
2517
2517
  })),
2518
2518
  tags: {
2519
- pretitle: props?.texts?.pretitle?.tag,
2519
+ pretitle: props?.texts?.subtitle?.tag,
2520
2520
  title: props?.texts?.title?.tag,
2521
2521
  },
2522
2522
  textColors: {
2523
- pretitle: props?.texts?.pretitle?.color?.trim(),
2523
+ pretitle: props?.texts?.subtitle?.color?.trim(),
2524
2524
  title: props?.texts?.title?.color?.trim(),
2525
2525
  },
2526
2526
  identifier: identifier,
@@ -2938,4 +2938,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2938
2938
  providedIn: 'root',
2939
2939
  }]
2940
2940
  }] });
2941
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBZ0g1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBS25FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSzFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7S0FpekhMO0lBenpIRyxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBUU8sa0JBQWtCLENBQUMsR0FBVztRQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJO1lBQ0EsR0FBRyxDQUFDLElB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QUFnQjs0QkFDakIsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQzFDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssTUFBTTs0QkFDUCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQ25DLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssaUJBQWlC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a0I7WUFDbEIsYUFBYTtTQUNLLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFzQjtRQUMvQixPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDO1NBQ2pELENBQUM7SUFDeEIsQ0FBQzsrR0EzekhRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgSW5qZWN0YWJsZSwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gICAgUHVybzQwNEksXG4gICAgUHVyb0FkdmFudGFnZXNJLFxuICAgIFB1cm9BZHZhbnRhZ2VzSXRlbSxcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSSxcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSXRlbSxcbiAgICBQdXJvQmFubmVyNENvbEksXG4gICAgUHVyb0Jhbm5lckluZm8ySSxcbiAgICBQdXJvQmFubmVySW5mb0ksXG4gICAgUHVyb0Jhbm5lclNsaWRlckksXG4gICAgUHVyb0Jsb2dEZXRhaWxzSSxcbiAgICBQdXJvQmxvZ0xpc3RJLFxuICAgIFB1cm9CcmVhZGNydW1iSSxcbiAgICBQdXJvQ2FyZWVyc0Zvcm1JLFxuICAgIFB1cm9DYXJ0YUksXG4gICAgUHVyb0NvbnRhY3RGb3JtSSxcbiAgICBQdXJvRHVhbExpc3RJLFxuICAgIFB1cm9FbmdpbmVJLFxuICAgIFB1cm9FbmdpbmVNb2RhbEksXG4gICAgUHVyb0V2ZW50c0Zvcm1JLFxuICAgIFB1cm9GYXFzSSxcbiAgICBQdXJvRmFxc0ltZ0ksXG4gICAgUHVyb0Zvb3RlckJlYWNoc0ksXG4gICAgUHVyb0Zvb3RlckJlYWNoc0l0ZW0sXG4gICAgUHVyb0Zvb3RlckhvdGVsc0ksXG4gICAgUHVyb0Zvb3RlckhvdGVsc0l0ZW0sXG4gICAgUHVyb0Zvb3RlckluZm9JLFxuICAgIFB1cm9Gb290ZXJJbmZvU29jaWFsTWVkaWFJbmZvLFxuICAgIFB1cm9Gb290ZXJMaW5rc0ksXG4gICAgUHVyb0dhbGxlcnlGaWx0ZXIsXG4gICAgUHVyb0dhbGxlcnlJLFxuICAgIFB1cm9HcmlkM0NvbEZpbHRlckksXG4gICAgUHVyb0dyaWQzQ29sRmlsdGVySXRlbSxcbiAgICBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySSxcbiAgICBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbSxcbiAgICBQdXJvR3JpZDNjb2xTbGlkZXJJLFxuICAgIFB1cm9HcmlkM2NvbFNsaWRlckl0ZW0sXG4gICAgUHVyb0dyaWQ0aXRlbXNJLFxuICAgIFB1cm9HcmlkNGl0ZW1zSXRlbSxcbiAgICBQdXJvR3JpZDVpdGVtc0ksXG4gICAgUHVyb0dyaWQ1aXRlbXNJdGVtLFxuICAgIFB1cm9HcmlkNml0ZW1zSSxcbiAgICBQdXJvR3JpZDZpdGVtc0l0ZW0sXG4gICAgUHVyb0hlYWRlckksXG4gICAgUHVyb0hlYWRJbnRyb0ksXG4gICAgUHVyb0lmcmFtZUksXG4gICAgUHVyb0ltZ0luZm9JLFxuICAgIFB1cm9JbmZvQmFubmVySSxcbiAgICBQdXJvSW5mb0Jhbm5lckl0ZW0sXG4gICAgUHVyb0luZm9CaWdJLFxuICAgIFB1cm9JbmZvRGV0YWlsSXRlbUksXG4gICAgUHVyb0luZm9EZXRhaWxzM0NvbEksXG4gICAgUHVyb0luZm9EZXRhaWxzSSxcbiAgICBQdXJvSW5mb0dhbGxlcnlJLFxuICAgIFB1cm9JbmZvSW50cm9JLFxuICAgIFB1cm9JbmZvTGlzdEksXG4gICAgUHVyb0luZm9MaXN0SXRlbUksXG4gICAgUHVyb0luZm9TZXJ2aWNlc0ksXG4gICAgUHVyb0luZm9TZXJ2aWNlc0l0ZW0sXG4gICAgUHVyb0luZm9TbGlkZXJJdGVtLFxuICAgIFB1cm9JbmZvVGFibGVJLFxuICAgIFB1cm9JbmZvVmlkZW9JLFxuICAgIFB1cm9Jbm5lckNvbnRlbnRJLFxuICAgIFB1cm9MYW5ndWFnZXNNb2RhbEksXG4gICAgUHVyb0xhbmd1YWdlc01vZGFsSXRlbSxcbiAgICBQdXJvTGlzdEF3YXJkc0ksXG4gICAgUHVyb0xpc3RBd2FyZHNJdGVtSSxcbiAgICBQdXJvTGlzdEdlbmVyYWxJLFxuICAgIFB1cm9MaXN0R2VuZXJhbEl0ZW0sXG4gICAgUHVyb0xpc3RMb2dvc0ksXG4gICAgUHVyb0xpc3RSZXN0YXVyYW50SXRlbUksXG4gICAgUHVyb0xpc3RSZXN0YXVyYW50c0ksXG4gICAgUHVyb01hcExpc3RJLFxuICAgIFB1cm9NYXBMaXN0SXRlbSxcbiAgICBQdXJvTWVudUksXG4gICAgUHVyb01vZGFsSW5mb0ksXG4gICAgUHVyb01vZGFsT3B0aW9uc0ksXG4gICAgUHVyb011c2ljU2xpZGVySSxcbiAgICBQdXJvTmV3c2xldHRlckksXG4gICAgUHVyb09mZmVyLFxuICAgIFB1cm9PZmZlckJhbm5lckksXG4gICAgUHVyb1Bob3RvU2xpZGVySSxcbiAgICBQdXJvUHJvamVjdHNGb3JtSSxcbiAgICBQdXJvU2NoZWR1bGVJLFxuICAgIFB1cm9TY2hlZHVsZUl0ZW0sXG4gICAgUHVyb1NsaWRlcjFjb2xJLFxuICAgIFB1cm9TbGlkZXIxY29sSXRlbSxcbiAgICBQdXJvU2xpZGVyMmNvbEksXG4gICAgUHVyb1NsaWRlcjJjb2xJdGVtLFxuICAgIFB1cm9TbGlkZXIzQ2FyZEksXG4gICAgUHVyb1NsaWRlcjNDYXJkSXRlbUksXG4gICAgUHVyb1NsaWRlcjNjb2xJLFxuICAgIFB1cm9TbGlkZXIzQ29sSXRlbSxcbiAgICBQdXJvU2xpZGVyM0NvbFJvdW5kSSxcbiAgICBQdXJvU2xpZGVyM0NvbFJvdW5kSXRlbSxcbiAgICBQdXJvU2xpZGVyNEl0ZW1zSSxcbiAgICBQdXJvU2xpZGVyNEl0ZW1zSXRlbSxcbiAgICBQdXJvU3VibWVudU1vYmlsZUl0ZW1JLFxuICAgIFB1cm9UaGFua3NJLFxuICAgIFB1cm9UaW1lbGluZUksXG4gICAgUHVyb1RpbWVsaW5lWWVhckl0ZW0sXG4gICAgUHVyb1RvcFNsaWRlckksXG4gICAgUHVyb1ZlcnRpY2FsSW5mb0ksXG4gICAgUHVyb1dlYm1hcEksXG4gICAgUHVyb1ppZ1phZzJjb2xJLFxufSBmcm9tICcuLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IFB1cm9JbmZvMkNvbEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3B1cm8taW5mbzJjb2wvcHVyby1pbmZvMmNvbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHVyb1ZpZXdzVHlwZSB9IGZyb20gJy4uLy4uL0VudW0vdmlld3MuZW51bSc7XG5pbXBvcnQgeyBCb2R5Q29tcG9uZW50LCBQdXJvQnV0dG9uSSwgUHVyb0ltYWdlSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3B1cm8tZHJvcGRvd24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgU2NyZWVuU2l6ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2NyZWVuLXNpemVyJztcbmltcG9ydCB7IFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuL21hcHBlci5zZXJ2aWNlLnRva2VuJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWFwcGVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzaXRlU3ZjID0gaW5qZWN0KFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuU2l6ZXIgPSBpbmplY3QoU2NyZWVuU2l6ZXJTZXJ2aWNlKTtcbiAgICBnZXQgaXNNYXhTbWFsbERlc2t0b3BJbnN0YW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zY3JlZW5TaXplci5tYXhTbWFsbERlc2t0b3BJbnN0YW50KCk7XG4gICAgfVxuXG4gICAgaGVhZGVyQnV0dG9ucyA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgc2l0ZUlkOiBTaWduYWw8bnVtYmVyPiA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiB0aGlzLnNpdGVTdmMud2ViQ29uZmlnSW5zdGFudD8uc2l0ZUlEXG4gICAgKTtcblxuICAgIHByaXZhdGUgdGh1bWJuYWlsQXZhaWxhYmxlKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICB4aHIub3BlbignSEVBRCcsIHVybCwgZmFsc2UpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgICAgIHJldHVybiB4aHIuc3RhdHVzID49IDIwMCAmJiB4aHIuc3RhdHVzIDwgNDAwO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRVcmwobGlua1ZhbHVlOiBzdHJpbmcsIGxpbmtUeXBlPzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFsaW5rVmFsdWUpIHJldHVybiAnJztcblxuICAgICAgICBjb25zdCBpc1Jlc3RhdXJhbnQgPSAvcmVzdGF1cmFudGV8cmVzdGF1cmFudC9pLnRlc3QobGlua1ZhbHVlKTtcblxuICAgICAgICAvLyBDYXNvIGVzcGVjaWFsOiByZXN0YXVyYW50IFNJTiBsaW5rVHlwZSDihpIgbm8gcHJlZmlqb1xuICAgICAgICBpZiAoaXNSZXN0YXVyYW50ICYmICFsaW5rVHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIGxpbmtWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzaXRlVXJsID0gJyc7XG4gICAgICAgIGlmICh0aGlzLnNpdGVJZCgpID09PSAyKSB7XG4gICAgICAgICAgICBzaXRlVXJsID0gJy9wdXJvaG90ZWxzJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNpdGVJZCgpID09PSAzKSB7XG4gICAgICAgICAgICBzaXRlVXJsID0gJy9wdXJvYmVhY2gnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNpdGVVcmwgKyBsaW5rVmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZTogSW1hZ2VSZXNwb25zZSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9JbWFnZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIVV0aWxzLmlzQWN0aXZlSW1hZ2UoaW1hZ2UpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGxldCBzZWxlY3RlZEltYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5pc01vYmlsZUluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMzc1XT8ud2VicDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzU0MF0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc01lZGl1bVRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzRnVsbFRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTAyNF0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5taW5GdWxsRGVza3RvcCgpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnBhdGg/LndlYnA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ud2VicDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2VsZWN0ZWRJbWFnZSB8fCAhaW1hZ2U/LnBhdGg/LndlYnApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgY2RuID0gdGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnQ7XG4gICAgICAgIGNvbnN0IHRodW1iVXJsID0gY2RuICsgc2VsZWN0ZWRJbWFnZTtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmwgPSBjZG4gKyBpbWFnZT8ucGF0aC53ZWJwO1xuXG4gICAgICAgIGNvbnN0IGZpbmFsU3JjID0gdGhpcy50aHVtYm5haWxBdmFpbGFibGUodGh1bWJVcmwpXG4gICAgICAgICAgICA/IHRodW1iVXJsXG4gICAgICAgICAgICA6IG9yaWdpbmFsVXJsO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzcmM6IGZpbmFsU3JjLFxuICAgICAgICAgICAgYWx0OiBpbWFnZT8uYWx0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZXM/OiBJbWFnZVJlc3BvbnNlW11cbiAgICApOiBQdXJvSW1hZ2VJW10gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB2YWxpZEltYWdlcyA9IFV0aWxzLm5vcm1hbGl6ZUltYWdlcyhpbWFnZXMpO1xuXG4gICAgICAgIGlmICghdmFsaWRJbWFnZXMubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiB2YWxpZEltYWdlc1xuICAgICAgICAgICAgLm1hcCgoaW1nKSA9PiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpKVxuICAgICAgICAgICAgLmZpbHRlcigoaW1nKTogaW1nIGlzIFB1cm9JbWFnZUkgPT4gISFpbWcpO1xuICAgIH1cblxuICAgIGdldFZpZXcodmlldzogUHVyb1ZpZXdzVHlwZSB8IHVuZGVmaW5lZCk6ICdsZWZ0JyB8ICdyaWdodCcge1xuICAgICAgICByZXR1cm4gdmlldyA9PT0gJ3JpZ2h0JyA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgfVxuXG4gICAgc2FuaXRpemUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG5hbWVcbiAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpIC8vIHF1aXRhciB0aWxkZXNcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOSBdL2csICcgJykgLy8gcXVpdGFyIHPDrW1ib2xvcyByYXJvc1xuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgICAgIC5tYXAoKHBhcnQsIGkpID0+XG4gICAgICAgICAgICAgICAgaSA9PT0gMFxuICAgICAgICAgICAgICAgICAgICA/IHBhcnQudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICA6IHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0LnNsaWNlKDEpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlQWdlc09wdGlvbnMobWF4TGVuZ3RoOiBudW1iZXIsIG1pbkxlbmd0aCA9IDApOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IGFueVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBtaW5MZW5ndGg7IGkgPD0gbWF4TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7IGNvZGU6IGksIG5hbWU6IGkgPCAxMCA/IGAwJHtpfWAgOiBgJHtpfWAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgbWFwQ29tcG9uZW50czxUPihcbiAgICAgICAgYm9keTogYW55W10sXG4gICAgICAgIGFkZG9ucz86IENvbXBvbmVudHNBZGRvbnNcbiAgICApOiBCb2R5Q29tcG9uZW50PFQ+W10ge1xuICAgICAgICAvKiBDb250YWRvciBwYXJhIHppZ3phZzJjb2w6XG4gICAgICAgIHBlcm1pdGUgdXNhciBpbcOhZ2VuZXMgZGlzdGludGFzIGN1YW5kbyBlbCBjb21wb25lbnRlIHNlIHJlcGl0ZSB2YXJpYXMgdmVjZXMgZW4gbGEgbWlzbWEgcMOhZ2luYSAqL1xuICAgICAgICBsZXQgemlnemFnMmNvbEluZGV4ID0gMDtcbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxUPltdID0gYm9keS5tYXAoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudD8ubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Py5vcmRlcixcbiAgICAgICAgICAgICAgICBwcm9wczogY29tcG9uZW50Py5wcm9wcyxcbiAgICAgICAgICAgICAgICB2aWV3OiBjb21wb25lbnQ/LnZpZXcsXG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50LmlkZW50aWZpZXIsXG4gICAgICAgICAgICB9IGFzIEJvZHlDb21wb25lbnQ8VD47XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Py5uYW1lICYmIGNvbXBvbmVudD8ucHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29sZmlsdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQzY29sRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkM2NvbHBsdXNmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xQbHVzRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvYmlnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjFjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMWNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyYmVhY2hzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckJlYWNocyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJob3RlbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVySG90ZWxzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsaW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMaW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnd2VibWFwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlckJ1dHRvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFudGFnZXNzbWFsbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzU21hbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9saXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9MaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29scm91bmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NvbFJvdW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW50cm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbWdpbmZvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW1naW5mb2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW1nSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm90YWJsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVGFibGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM2NvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIyY29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNWl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ1aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQ2aXRlbXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDZpdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVmlkZW8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0b2ZmZXJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RuZXdzcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdG5ld3NsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3Ryb29tcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R2VuZXJhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RyZXN0YXVyYW50cyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0UmVzdGF1cmFudHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzQwNCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RoYW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUaGFua3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvc2VydmljZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1NlcnZpY2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC52aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2Jhbm5lcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvQmFubmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzY2hlZHVsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTY2hlZHVsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNGl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ0aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ppZ3phZzJjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlIHBhc2EgZWwgw61uZGljZSBwYXJhIGNvbnN1bWlyIGltw6FnZW5lcyBkZSAyIGVuIDIgeSBldml0YXIgcmVwZXRpcmxhcyBlbnRyZSB6aWd6YWcyY29sIGNvbnNlY3V0aXZvc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwWmlnemFnMmNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aWd6YWcyY29sSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgemlnemFnMmNvbEluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkM2NvbHNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkM2NvbFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NsaWRlcmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NsaWRlcnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9TbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5mb3NsaWRlcmxlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncGhvdG9zbGlkZXJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bob3Rvc2xpZGVycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUGhvdG9TbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGhvdG9zbGlkZXJsZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcjRjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVyNENvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2dhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0dhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yQ29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtYXBsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1hcExpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsaG90ZWxzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RhZG9iZWFjaCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNYXBMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsYW5ndWFnZXNtb2RhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMYW5ndWFnZXNNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJiYW5uZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJCYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3VibWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdGF3YXJkcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0QXdhcmRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY2FyZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIzQ2FyZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmV3c2xldHRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBOZXdzbGV0dGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcmluZm8yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvZGV0YWlscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvRGV0YWlscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2RldGFpbHMyY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9kZXRhaWxzM2NvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvRGV0YWlsc0NvbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ211c2ljc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE11c2ljU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjYXJ0YSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDYXJ0YShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyNGl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjRJdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZHVhbGxpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRHVhbExpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Byb2plY3RzZm9ybSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBQcm9qZWN0c0Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibG9nbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nUG9zdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxvcHRpb25zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1vZGFsT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lubmVyY29udGVudCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbm5lckNvbnRlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RpbWVsaW5lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRpbWVsaW5lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaGVhZGludHJvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhlYWRJbnRybyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2FyZWVyc2Zvcm0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ2FyZWVyc0Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2V2ZW50c2Zvcm0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRXZlbnRzRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsaW5mb2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxpbmZvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTW9kYWxJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZGFsaW5mb2xlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaWZyYW1lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcElmcmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFxcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGYXFzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmYXFzaW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZhcXNJbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnZpZXcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndmVydGljYWxpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFZlcnRpY2FsSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdGxvZ29zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExpc3RMb2dvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihjb21wb25lbnRNYXBwZWQubmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGJvZHlNYXBwZWQ7XG4gICAgfVxuXG4gICAgbWFwR3JpZDNjb2xTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkM2NvbFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBob3RlbHMsIGJ1dHRvbnMsIGRlc3RpbmF0aW9ucyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb0dyaWQzY29sU2xpZGVySXRlbVtdID0gW107XG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IFV0aWxzLm5vcm1hbGl6ZUltYWdlcyhtdWx0aW1lZGlhPy5pbWFnZW5lcykubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5idXR0b25zPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8uYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWc/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkM2NvbFNsaWRlckl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhvdGVscykge1xuICAgICAgICAgICAgaXRlbXMgPSBob3RlbHNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaG90ZWw6IGFueSkgPT4gaG90ZWw/LmlkICE9PSA1KVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RlbD8ubGlua3M/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGhvdGVsPy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaG90ZWwudGV4dHM/Lm5hbWUgfHwgJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhvdGVsLnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnIDxicj4gJyArIGhvdGVsLnRleHRzLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RlbC5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gaW1nLmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQzY29sU2xpZGVySXRlbVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlc3RpbmF0aW9ucykge1xuICAgICAgICAgICAgaXRlbXMgPSBkZXN0aW5hdGlvbnMubWFwKFxuICAgICAgICAgICAgICAgIChkZXN0aW5hdGlvbjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uPy5idXR0b25zPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uPy5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGRlc3RpbmF0aW9uPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkZXN0aW5hdGlvbj8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uPy5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApID8/IGRlc3RpbmF0aW9uPy5tdWx0aW1lZGlhPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkM2NvbFNsaWRlckl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0dyaWQzY29sU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBHYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR2FsbGVyeUkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBmaWx0ZXJzID0gW10gfSA9IHByb3BzO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKChmOiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8vIE1hbnRlbmVyIFwiVG9kb3NcIiBzaWVtcHJlXG4gICAgICAgICAgICBpZiAoZi5hbGwpIHJldHVybiB0cnVlO1xuXG4gICAgICAgICAgICAvLyBNYW50ZW5lciBoYWJpdGFjaW9uZXMgcGFyZW50IChyb29tczp0cnVlKSBzaWVtcHJlXG4gICAgICAgICAgICBpZiAoZi5yb29tcykgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgICAgIC8vIEhhYml0YWNpb25lcyBpbmRpdmlkdWFsZXMg4oaSIHJlcXVpZXJlbiBtdWx0aW1lZGlhXG4gICAgICAgICAgICBpZiAoZi5yb29tKVxuICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGYubXVsdGltZWRpYSkgJiYgZi5tdWx0aW1lZGlhLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgICAgIC8vIFJlc3RvIGRlIGZpbHRyb3Mg4oaSIHJlcXVpZXJlbiBtdWx0aW1lZGlhXG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShmLm11bHRpbWVkaWEpICYmIGYubXVsdGltZWRpYS5sZW5ndGggPiAwO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpbmRleE1hcCA9IG5ldyBNYXA8YW55LCBudW1iZXI+KCk7XG4gICAgICAgIHZhbGlkRmlsdGVycy5mb3JFYWNoKChmOiBhbnksIGk6IGFueSkgPT4gaW5kZXhNYXAuc2V0KGYsIGkpKTtcblxuICAgICAgICBjb25zdCBtYXBwZWRGaWx0ZXJzID0gdmFsaWRGaWx0ZXJzLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgYWxsOiBpdGVtLmFsbCxcbiAgICAgICAgICAgIHJvb206IGl0ZW0ucm9vbSxcbiAgICAgICAgICAgIHJvb21zOiBpdGVtLnJvb21zLFxuICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICB9KSkgYXMgUHVyb0dhbGxlcnlGaWx0ZXJbXTtcblxuICAgICAgICBjb25zdCBpdGVtcyA9IHZhbGlkRmlsdGVycy5mbGF0TWFwKChmaWx0ZXI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpbHRlci5tdWx0aW1lZGlhKSkgcmV0dXJuIFtdO1xuXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyLm11bHRpbWVkaWEubWFwKChpbWc6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBpbmRleE1hcC5nZXQoZmlsdGVyKSwgLy8gaW5kZXggY29ycmVjdG9cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbHRlcnM6IG1hcHBlZEZpbHRlcnMsXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWx0ZXJUaXRsZTogdGV4dHM/LnJvb21zRmlsdGVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgfSBhcyBQdXJvR2FsbGVyeUk7XG4gICAgfVxuXG4gICAgbWFwTWFwTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb01hcExpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgaG90ZWxzIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvTWFwTGlzdEl0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAoaG90ZWxzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdNYXBMaXN0UGhvdG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTWFwTGlzdFBob3RvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8uWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdNYXBMaXN0TWFwJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZz8ubmFtZSA9PT0gJ01hcExpc3RNYXAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9NYXBMaXN0SXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcEltYWdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9NYXBMaXN0SXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBuZFRpdGxlOiB0ZXh0cz8ubmR0aXRsZSxcbiAgICAgICAgICAgIG5kRGVzY3JpcHRpb246IHRleHRzPy5uZGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbWFwSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5tYXA/LlswXSksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZGltYWdlPy5bMF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9NYXBMaXN0STtcbiAgICB9XG5cbiAgICBtYXBPZmZlckJhbm5lcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb09mZmVyQmFubmVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgICAgICAvL1RPRE86YmFja1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICAgICAgY3VycmVuY3k6ICcnLFxuICAgICAgICAgICAgICAgIGZyb206IHRleHRzPy5mcm9tLFxuICAgICAgICAgICAgICAgIGltYWdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcHJpY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgfSBhcyBQdXJvT2ZmZXJCYW5uZXJJO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBMYW5ndWFnZXNNb2RhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0xhbmd1YWdlc01vZGFsSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGxhbmd1YWdlcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogbGFuZ3VhZ2VzIGFzIFB1cm9MYW5ndWFnZXNNb2RhbEl0ZW1bXSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBsYW5ndWFnZXMuZmluZChcbiAgICAgICAgICAgICAgICAoaXRlbTogUHVyb0xhbmd1YWdlc01vZGFsSXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgaXRlbS5pZCA9PT0gdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5pZFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0xhbmd1YWdlc01vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBIZWFkZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG1lbnU6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9IZWFkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBuYXYsIG11bHRpbWVkaWEsIGxpbmtzIH0gPSBtZW51IHx8IHt9O1xuICAgICAgICBjb25zdCB7IGJvdHRvbUxpbmtzIH0gPSBsaW5rcyA/PyB7fTtcblxuICAgICAgICBjb25zdCB0ZXh0cyA9IHByb3BzPy5oZWFkZXJCdXR0b25zPy50ZXh0cztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGVNZW51OiB0ZXh0cz8ubWVudSxcbiAgICAgICAgICAgIHRpdGxlTGFuZzogdGV4dHM/Lmxhbmd1YWdlLFxuICAgICAgICAgICAgYnRuQm9vazogdGV4dHM/LmJvb2tub3csXG4gICAgICAgICAgICBidG5DaGVja2luOiB0ZXh0cz8uY2hlY2tpbixcbiAgICAgICAgICAgIGJ0bkNoZWNraW5PbmxpbmU6IHRleHRzPy5jaGVja2lub25saW5lLFxuICAgICAgICAgICAgbmF2TGlua3M6IG5hdj8ubWFwKChsaW5rOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmVmaXggPVxuICAgICAgICAgICAgICAgICAgICBsaW5rPy5zaXRlSWQgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJy9wdXJvaG90ZWxzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBsaW5rPy5zaXRlSWQgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnL3B1cm9iZWFjaCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJztcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy50cmFuc2xhdGlvbnM/LlswXT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcmVmaXggKyBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBsaW5rLmxpbmtUeXBlLFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBsaW5rPy5pY29uLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0J1dHRvbkk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgYm90dG9tTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBib3R0b21MaW5rcz8uWzBdPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGFiZWwpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaG90ZWxCcmFuZDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgfSBhcyBQdXJvSGVhZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmlnKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0JpZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIG5kRGVzY3JpcHRpb246IHRleHRzPy5uZERlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyMWNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjFjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhLCBidXR0b25zLCB0ZXh0cywgcG9zdHMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9TbGlkZXIxY29sSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIxY29sSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChwb3N0cykge1xuICAgICAgICAgICAgaXRlbXMgPSBwb3N0cy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPVxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5ibG9ncz8uWzBdPy5uYW1lSWRlbnRpZmllcj8udG9Mb3dlckNhc2UoKSB8fCAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gaWRlbnRpZmllci50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgICAgICAgICAgICAgIGxldCBzaXRlSWQgPSAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3B1cm9ob3RlbHMnKSkge1xuICAgICAgICAgICAgICAgICAgICBzaXRlSWQgPSAyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZC5pbmNsdWRlcygncHVyb2JlYWNoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2l0ZUlkID0gMztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICBzaXRlSWQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnMgfHwgW11cbiAgICAgICAgICAgICAgICApPy5bMF07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGxpbms6IGJ1dHRvbixcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9TbGlkZXIxY29sSXRlbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgIHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnN1YnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyMWNvbEk7XG4gICAgfVxuXG4gICAgbWFwQWR2YW50YWdlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0FkdmFudGFnZXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBBZHZhbnRhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBBZHZhbnRhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGl0ZW0/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9BZHZhbnRhZ2VzSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQWR2YW50YWdlc0k7XG4gICAgfVxuXG4gICAgbWFwWmlnemFnMmNvbChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaW5kZXggPSAwXG4gICAgKTogUHVyb1ppZ1phZzJjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBsb3MgYnV0dG9ucyBzaWVtcHJlIGFwdW50YW4gYWwgc2l0ZTEgcG9ycXVlIHNvbG8gc2UgdXNhIGVuIGRlc3Rpbm9zIChzaXRlMSlcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XG5cbiAgICAgICAgLy8gU2kgdmllbmUgbXVsdGltZWRpYS5pbWFnZW5lczpcbiAgICAgICAgLy8gc2UgYWdydXBhbiBsYXMgaW3DoWdlbmVzIGRlIDIgZW4gMiBzZWfDum4gZWwgw61uZGljZVxuICAgICAgICAvLyAoMCDihpIgWzAsMV0sIDEg4oaSIFsyLDNdLCBldGMuKVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtdWx0aW1lZGlhPy5pbWFnZW5lcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXggKiAyO1xuICAgICAgICAgICAgY29uc3QgaW1nID0gbXVsdGltZWRpYS5pbWFnZW5lc1tzdGFydF07XG4gICAgICAgICAgICBjb25zdCBuZEltZyA9IG11bHRpbWVkaWEuaW1hZ2VuZXNbc3RhcnQgKyAxXTtcblxuICAgICAgICAgICAgLy8g4puUIHNpIG5vIGhheSBpbWFnZW4gcHJpbmNpcGFsLCBubyByZW5kZXJpemFyIGVsIGNvbXBvbmVudGVcbiAgICAgICAgICAgIGlmICghaW1nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTI6IGltZz8ubmRUaXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTI6IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgbmRUaXRsZTogbmRJbWc/Lm5kVGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG5kSW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoMSwgYnV0dG9ucyk/LlsxXSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgbmRJbWc6IG5kSW1nID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobmRJbWcpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSBhcyBQdXJvWmlnWmFnMmNvbEk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGYWxsYmFjayBsZWdhY3k6IGVzdHJ1Y3R1cmEgYW50aWd1YSBzaW4gYXJyYXkgZGUgaW3DoWdlbmVzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgbmRUaXRsZTogdGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoMSwgYnV0dG9ucylbMV0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICBuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uWzFdKSxcbiAgICAgICAgfSBhcyBQdXJvWmlnWmFnMmNvbEk7XG4gICAgfVxuXG4gICAgbWFwR3JpZDRpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ0aXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IChBcnJheS5pc0FycmF5KG11bHRpbWVkaWEpXG4gICAgICAgICAgICAgICAgPyBtdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgOiBtdWx0aW1lZGlhPy5pbWFnZW5lc1xuICAgICAgICAgICAgKT8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQ0aXRlbXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICB9IGFzIFB1cm9HcmlkNGl0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvVmlkZW8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU6ICdpbmZvdmlkZW9yaWdodCcgfCAnaW5mb3ZpZGVvbGVmdCdcbiAgICApOiBQdXJvSW5mb1ZpZGVvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgcmV2ZXJzZTogbmFtZS5pbmNsdWRlcygncmlnaHQnKSxcbiAgICAgICAgICAgIHZpZGVvOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiBwcm9wcy52aWRlbz8uc3JjLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzLnZpZGVvPy50eXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0luZm9WaWRlb0k7XG4gICAgfVxuXG4gICAgbWFwQnJlYWRjcnVtYnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CcmVhZGNydW1iSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogKHByb3BzPy5pdGVtcyBhcyBhbnlbXSlcbiAgICAgICAgICAgICAgICA/LnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5jaGFyQXQoaXRlbT8udXJsPy5sZW5ndGggLSAxKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5zbGljZSgwLCAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0J1dHRvbklcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9CcmVhZGNydW1iSTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJJbmZvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRm9vdGVySW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhZGRyZXNzID0gcHJvcHM/LmFkZHJlc3M/LlswXSA/PyBwcm9wcz8uYWRkcmVzcztcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbGlua3MsIHNvY2lhbE1lZGlhLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWRkcmVzc0luZm86IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQWRkcmVzcyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBgJHthZGRyZXNzPy5hZGRyZXNzID8/ICcnfSwgJHthZGRyZXNzPy5jaXR5ID8/ICcnfSwgJHthZGRyZXNzPy5jcCA/PyAnJ30gJHthZGRyZXNzPy5wcm92aW5jZSA/PyAnJ31gLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgY29udGFjdEluZm86IHtcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M/LmNvbnRhY3RMaW5rcz8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQ29udGFjdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dvSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2U/LlswXSksXG4gICAgICAgICAgICBuZXdzbGV0dGVySW5mbzoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGVOZXdzbGV0dGVyLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVsxXSxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zTGluazogdGV4dHM/Lm5ld3NsZXR0ZXJDb25kaXRpb25zLFxuICAgICAgICAgICAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHRleHRzPy5uZXdzbGV0dGVyUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlU29jaWFsTWVkaWEsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHNvY2lhbE1lZGlhPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGljb246IFV0aWxzLm1hcFNvY2lhbGNvbnMoaXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKSksXG4gICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0gYXMgUHVyb0Zvb3RlckluZm9Tb2NpYWxNZWRpYUluZm8sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0Zvb3RlckluZm9JO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjNjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIzY29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgZXZlbnQsIGV4cGVyaWVuY2UsIG11bHRpbWVkaWEsIHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvU2xpZGVyM0NvbEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgaXRlbXMgPSBldmVudD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogaXRlbT8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgZGF0ZTogaXRlbS5kYXRldGltZSxcbiAgICAgICAgICAgICAgICBpY29uOiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24zLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChleHBlcmllbmNlKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGV4cGVyaWVuY2U/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGl0ZW0/LnRleHRzPy5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcigoYnV0dG9uOiBhbnkpID0+ICEhYnV0dG9uLmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5saW5rcz8uZmlsdGVyKChsaW5rOiBhbnkpID0+ICEhbGluay5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gVXRpbHMubm9ybWFsaXplSW1hZ2VzKG11bHRpbWVkaWE/LmltYWdlbmVzKS5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgICAgIC8vIGRhdGU6IGl0ZW0uZGF0ZXRpbWUsXG4gICAgICAgICAgICAgICAgICAgIC8vIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNjb2xJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjJjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIyY29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgcm9vbXMsIG11bHRpbWVkaWEsIHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvU2xpZGVyMmNvbEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChyb29tcykge1xuICAgICAgICAgICAgaXRlbXMgPSByb29tcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ1NsaWRlcjJDb2wnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZz8ubmFtZSA9PT0gJ1NsaWRlcjJDb2wnXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0udGV4dHM/LmRlc2NyaXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubGlua3M/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyMmNvbEk7XG4gICAgfVxuXG4gICAgbWFwR3JpZDVpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ1aXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY29tYmluZWRJbWFnZXM6IEltYWdlUmVzcG9uc2VbXSA9IFtdO1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGxldCBqID0gMDtcblxuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgICBpIDwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5sZW5ndGggfHxcbiAgICAgICAgICAgIGogPCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vzc21hbGw/Lmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LltpXSkge1xuICAgICAgICAgICAgICAgIGNvbWJpbmVkSW1hZ2VzLnB1c2gocHJvcHMubXVsdGltZWRpYS5pbWFnZW5lc1tpXSk7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbD8uW2pdKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29tYmluZWRJbWFnZXMucHVzaChwcm9wcy5tdWx0aW1lZGlhLmltYWdlc3NtYWxsW2pdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaisrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbWJpbmVkSW1hZ2VzLnB1c2gocHJvcHMubXVsdGltZWRpYS5pbWFnZXNzbWFsbFsxXSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID8/IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogY29tYmluZWRJbWFnZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLmxpbmtzPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8ubGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkNWl0ZW1zSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb0dyaWQ1aXRlbXNJO1xuICAgIH1cblxuICAgIG1hcEdyaWQ2aXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkNml0ZW1zSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBVdGlscy5ub3JtYWxpemVJbWFnZXMocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzKS5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkgYXMgUHVyb0dyaWQ2aXRlbXNJdGVtW10sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICB9IGFzIFB1cm9HcmlkNml0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBBZHZhbnRhZ2VzU21hbGwoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvQWR2YW50YWdlc1NtYWxsSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogKHByb3BzLnNlcnZpY2VzQWR2YW50YWdlcyB8fCBwcm9wcz8uQWR2YW50YWdlcyk/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUgfHwgaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgKGl0ZW0/LmNsYXNzIHx8IGl0ZW0/Lmljb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHQgfHwgaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9BZHZhbnRhZ2VzU21hbGxJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzU21hbGxJO1xuICAgIH1cblxuICAgIG1hcEdyaWQzY29sRmlsdGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDNDb2xGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCByYXdEZXN0aW5hdGlvbnM6IGFueVtdID0gKHByb3BzLmRlc3RpbmF0aW9ucyA/PyBbXSlcbiAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uczogYW55W10gPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgbmV3IE1hcChyYXdEZXN0aW5hdGlvbnMubWFwKChkOiBhbnkpID0+IFtOdW1iZXIoZC5pZCksIGRdKSkudmFsdWVzKClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCByYXdJdGVtcyA9IGRlc3RpbmF0aW9ucy5mbGF0TWFwKChkZXN0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGVzdD8uY2hpbGRyZW4gPz8gW107XG5cbiAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbj8ubWFwKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHIgPSBjaGlsZD8udHJhbnNsYXRpb25zPy5bMF0gPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0cj8ubmFtZSA/PyBjaGlsZD8ubmFtZSA/PyBjaGlsZD8ubmFtZV9pZGVudGlmaWVyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXRpdGxlID0gZGVzdD8ubmFtZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IChVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZD8uaG90ZWxzPy5bMF0/LmxpbmtzPy5bMF1cbiAgICAgICAgICAgICAgICApID8/IFtdKVswXTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGltZ0NvdmVyID0gY2hpbGQ/LmhvdGVscz8uWzBdPy5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZy5jb3ZlclxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nQ292ZXIpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IE51bWJlcihjaGlsZD8uaWQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJlbnQ6IE51bWJlcihkZXN0Py5pZCA/PyBjaGlsZD8ucGFyZW50X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uLFxuICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRJbWFnZVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0dyaWQzQ29sRmlsdGVySXRlbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUHVyb0dyaWQzQ29sRmlsdGVySXRlbVtdID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIG5ldyBNYXAocmF3SXRlbXMubWFwKChpKSA9PiBbaS5maWx0ZXIsIGldKSkudmFsdWVzKClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB2YWxpZFBhcmVudElkcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICBjb25zdCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbltdID0gZGVzdGluYXRpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChkZXN0OiBhbnkpID0+IHZhbGlkUGFyZW50SWRzLmhhcyhOdW1iZXIoZGVzdD8uaWQpKSlcbiAgICAgICAgICAgIC5tYXAoKGRlc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBOdW1iZXIoZGVzdD8uaWQpLFxuICAgICAgICAgICAgICAgIG5hbWU6IGRlc3Q/Lm5hbWUgfHwgZGVzdD8ubmFtZV9pZGVudGlmaWVyLFxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID8/IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucykgPz8gW10sXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJO1xuICAgIH1cblxuICAgIG1hcEdyaWQzY29sUGx1c0ZpbHRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCB7IHRleHRzLCBldmVudCwgZXhwZXJpZW5jZSwgaG90ZWxzLCBtdWx0aW1lZGlhLCBkZXN0aW5hdGlvbnMgfSA9XG4gICAgICAgICAgICBwcm9wcztcblxuICAgICAgICBsZXQgaXRlbXM6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtW10gPSBbXTtcbiAgICAgICAgbGV0IG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10gPSBbXTtcbiAgICAgICAgbGV0IGV4cCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXhwID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCByYXdEZXN0aW5hdGlvbnM6IGFueVtdID0gKGV2ZW50ID8/IFtdKS5mbGF0KCkuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICAgICAgICBjb25zdCBkZXN0aW5hdGlvbnM6IGFueVtdID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICBuZXcgTWFwKFxuICAgICAgICAgICAgICAgICAgICByYXdEZXN0aW5hdGlvbnMubWFwKChkOiBhbnkpID0+IFtOdW1iZXIoZC5pZCksIGRdKVxuICAgICAgICAgICAgICAgICkudmFsdWVzKClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJhd0l0ZW1zID0gZGVzdGluYXRpb25zLm1hcCgoZGVzdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHIgPSBkZXN0Py50ZXh0cyA/PyBkZXN0Py50cmFuc2xhdGlvbnMgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPVxuICAgICAgICAgICAgICAgICAgICB0cj8udGl0bGUgPz9cbiAgICAgICAgICAgICAgICAgICAgZGVzdD8ubmFtZSA/P1xuICAgICAgICAgICAgICAgICAgICBkZXN0Py5uYW1lX2lkZW50aWZpZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgZGVzdD8udHJhbnNsYXRpb25zPy50aXRsZTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZFRpdGxlID0gdHI/LmxvY2F0aW9uID8/IGRlc3Q/LnRyYW5zbGF0aW9ucz8ubG9jYXRpb247XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZSA9IGRlc3Q/LmRhdGV0aW1lPy5zcGxpdCgnICcpPy5bMF07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b25zID0gVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBkZXN0Py5idXR0b25zKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5rcyA9IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgZGVzdD8ubGlua3MpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RJbWcgPVxuICAgICAgICAgICAgICAgICAgICBkZXN0Py5tdWx0aW1lZGlhPy5maW5kKChtOiBhbnkpID0+IG0/LmNvdmVyKSA/PyB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWcgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShmaXJzdEltZyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgbmRUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBOdW1iZXIoZGVzdD8uaWQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJlbnQ6IHRyPy5sb2NhdGlvbiwgLy8gdXNhbW9zIGxvY2F0aW9uIGNvbW8gYWdydXBhZG9yL2ZpbHRyb1xuICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckl0ZW07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaXRlbXMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgICAgIG5ldyBNYXAocmF3SXRlbXMubWFwKChpKSA9PiBbaS5maWx0ZXIsIGldKSkudmFsdWVzKClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkUGFyZW50SWRzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuZmlsdGVyUGFyZW50KSk7XG4gICAgICAgICAgICBvcHRpb25zID0gQXJyYXkuZnJvbSh2YWxpZFBhcmVudElkcykubWFwKChsb2M6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBsb2MsXG4gICAgICAgICAgICAgICAgbmFtZTogbG9jLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV4cGVyaWVuY2UpIHtcbiAgICAgICAgICAgIGV4cCA9IHRydWU7XG4gICAgICAgICAgICBpdGVtcyA9IGV4cGVyaWVuY2U/Lm1hcCgoZXhwOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZXhwPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGV4cD8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiBleHA/LmRhdGV0aW1lPy5zcGxpdCgnICcpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGV4cD8uaWQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJlbnQ6IGV4cD8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGV4cD8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHA/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cD8ubGlua3M/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZExvYyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRMb2MpLm1hcCgobG9jOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogbG9jLFxuICAgICAgICAgICAgICAgIG5hbWU6IGxvYyxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChob3RlbHMpIHtcbiAgICAgICAgICAgIGV4cCA9IHRydWU7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscy5tYXAoKGhvdGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ciA9IGhvdGVsPy50ZXh0cyA/PyBob3RlbD8udHJhbnNsYXRpb25zID8/IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gdHI/Lm5hbWUgPz8gaG90ZWw/Lm5hbWVfaWRlbnRpZmllcjtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IGhvdGVsPy5jaXR5O1xuXG4gICAgICAgICAgICAgICAgLy8gY29uc3QgYnV0dG9ucyA9IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgLy8gICAgIGhvdGVsPy5idXR0b25zPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIC8vICAgICBob3RlbD8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAvLyApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtzID0gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgaG90ZWw/LmxpbmtzPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBob3RlbD8ubGlua3NcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RJbWcgPVxuICAgICAgICAgICAgICAgICAgICBob3RlbD8ubXVsdGltZWRpYT8uZmluZCgobTogYW55KSA9PiBtPy5jb3ZlcikgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoZmlyc3RJbWcpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGhvdGVsPy5pZCksXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmVudDogaG90ZWwuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgaW1nLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3MsXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZENpdGllcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRDaXRpZXMpLm1hcCgoY2l0eTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvZGU6IGNpdHksXG4gICAgICAgICAgICAgICAgbmFtZTogY2l0eSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBleHAgPSB0cnVlO1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpbWc6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBuZFRpdGxlOiBpbWc/Lm5kVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBOdW1iZXIoaW1nPy5pZCksXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmVudDogaW1nLmFsdCxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5saW5rcz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkQWx0cyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRBbHRzKS5tYXAoKGFsdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvZGU6IGFsdCxcbiAgICAgICAgICAgICAgICBuYW1lOiBhbHQsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVzdGluYXRpb25zKSB7XG4gICAgICAgICAgICBleHAgPSB0cnVlO1xuICAgICAgICAgICAgaXRlbXMgPSBkZXN0aW5hdGlvbnM/Lm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlID8/IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGl0ZW0/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiBpdGVtLnRpdGxlID8/IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gaW1nLmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkU3VidGl0bGVzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuZmlsdGVyUGFyZW50KSk7XG4gICAgICAgICAgICBvcHRpb25zID0gQXJyYXkuZnJvbSh2YWxpZFN1YnRpdGxlcykubWFwKChzdWJ0aXRsZTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvZGU6IHN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIG5hbWU6IHN1YnRpdGxlLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKSA/PyBbXSxcbiAgICAgICAgICAgIC8vIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgLy8gICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAvLyApLFxuICAgICAgICAgICAgZXhwOiBleHAsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJIb3RlbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJIb3RlbHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5ob3RlbHNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaG90ZWw6IGFueSkgPT4gaG90ZWw/LmlkICE9PSA1KVxuICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKDIsIGhvdGVsLmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaG90ZWw/LnRleHRzPy5uYW1lID8/IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LmxvY2F0aW9uRGVzY3JpcHRpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9Gb290ZXJIb3RlbHNJdGVtXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVySG90ZWxzSTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJMaW5rcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckxpbmtzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHMubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGFsdDogcHJvcHM/LnRleHRzPy5pY29uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHMubXVsdGltZWRpYT8ubG9nbz8uWzBdKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHMudGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIG1lbWJlclRpdGxlOiBwcm9wcy50ZXh0cz8ubWVtYmVyVGl0bGUsXG4gICAgICAgICAgICAgICAgbWVtYmVyUHJldGl0bGU6IHByb3BzLnRleHRzPy5tZW1iZXJQcmV0aXRsZSxcbiAgICAgICAgICAgICAgICBjb3B5cmlnaHQ6IHByb3BzLnRleHRzPy5jb3B5cmlnaHQsXG4gICAgICAgICAgICAgICAgbGlua3M6IHByb3BzLmxpbmtzXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHMubGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgobGluazogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnNpdGVJZCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuc2l0ZV9pZCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuc2l0ZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBVdGlscy5tYXBCdXR0b25zKHNpdGUsIGxpbmspWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICB9IGFzIFB1cm9Gb290ZXJMaW5rc0k7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEZvb3RlckJlYWNocyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckJlYWNoc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoMywgaG90ZWwubGlua3MpWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSA/PyBob3RlbC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGhvdGVsPy50ZXh0cz8ubG9jYXRpb25EZXNjcmlwdGlvbiA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvRm9vdGVyQmVhY2hzSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVyQmVhY2hzSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9MaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEsIEFkdmFudGFnZXMgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCB7IGJhY2tncm91bmRpbWFnZSwgaW1hZ2VuZXMsIHNtYWxsaW1hZ2UgfSA9IG11bHRpbWVkaWE7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpdGVtczogQWR2YW50YWdlcz8ubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b25SYXcgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogaXRlbS5saW5rVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgbGlua1ZhbHVlOiBpdGVtLmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtLnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25SYXcsXG4gICAgICAgICAgICAgICAgICAgIF0pPy5bMF0sXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvSW5mb0xpc3RJdGVtSTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIHNtYWxsSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShzbWFsbGltYWdlPy5bMF0pLFxuICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoYmFja2dyb3VuZGltYWdlPy5bMF0pLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0luZm9MaXN0STtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIzQ29sUm91bmQoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvU2xpZGVyM0NvbFJvdW5kSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEsIHBvc3RzIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvU2xpZGVyM0NvbFJvdW5kSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5saW5rcyB8fCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocG9zdHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gcG9zdHM/Lm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRlbnRpZmllciA9XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJsb2dzPy5bMF0/Lm5hbWVJZGVudGlmaWVyPy50b0xvd2VyQ2FzZSgpIHx8ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBpZGVudGlmaWVyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgICAgICAgICAgICAgbGV0IHNpdGVJZCA9IDE7XG5cbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZC5pbmNsdWRlcygncHVyb2hvdGVscycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNpdGVJZCA9IDI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemVkLmluY2x1ZGVzKCdwdXJvYmVhY2gnKSkge1xuICAgICAgICAgICAgICAgICAgICBzaXRlSWQgPSAzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHNpdGVJZCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucyB8fCBbXVxuICAgICAgICAgICAgICAgICk/LlswXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgbGluazogYnV0dG9uLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyM0NvbFJvdW5kSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW50cm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvSW50cm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG5cbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgID8gdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpblxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb25IaWRkZW46XG4gICAgICAgICAgICAgICAgICAgIHRleHRzPy5kZXNjcmlwdGlvbkFkZGl0aW9uYWwgPz8gdGV4dHMuZGVzY3JpcHRpb25BZGljaW9uYWwsXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHNlZUxlc3M6IHRleHRzPy5idXR0b25NZW5vc2luZm8sXG4gICAgICAgICAgICAgICAgc2VlTW9yZTogdGV4dHM/LmJ1dHRvbk1hc2luZm8sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvSW50cm9JO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIG1hcEltZ0luZm8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU/OiAnaW1naW5mb3JpZ2h0JyB8ICdpbWdpbmZvbGVmdCdcbiAgICApOiBQdXJvSW1nSW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzZWN0aW9uczogcHJvcHM/Lk1lbnU/LlswXT8uY2hpbGRyZW5zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbj8ubWVudT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbnM6IGl0ZW0uaWNvbnM/Lm1hcCgoaWNvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpY29uPy5jbGFzcyB8fCBpY29uPy5pY29uKSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgcmlnaHRTaWRlOiBuYW1lPy5pbmNsdWRlcygncmlnaHQnKSxcbiAgICAgICAgfSBhcyBQdXJvSW1nSW5mb0k7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb1RvcFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCB2aWRlbyB9ID0gcHJvcHM7XG5cbiAgICAgICAgY29uc3QgaW1hZ2VzID0gdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgIG11bHRpbWVkaWE/LmltYWdlcyB8fCBtdWx0aW1lZGlhPy5tdWx0aW1lZGlhIHx8IG11bHRpbWVkaWE/LmltYWdlbmVzXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgaW1hZ2VzTW9iaWxlID0gdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgIG11bHRpbWVkaWEuaW1hZ2VuZXNtb2JpbGUgfHwgW11cbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB2aWRlb0RhdGEgPSB2aWRlbz8uc3JjXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIHNvdXJjZTogdmlkZW8uc3JjLFxuICAgICAgICAgICAgICAgICAgdHlwZTogdmlkZW8/LnR5cGUsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIFByZWNhcmdhIGRpbsOhbWljYSBkZSBsYSBwcmltZXJhIGltYWdlbiBkZWwgc2xpZGVyXG4gICAgICAgIGlmIChpbWFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZy5zcmMgPSBpbWFnZXNbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbWFnZXNNb2JpbGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZy5zcmMgPSBpbWFnZXNNb2JpbGVbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzTW9iaWxlPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNNb2JpbGVbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlID8/IG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSA/PyBtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUgPz8gbXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8ucHJldGl0bGUsXG4gICAgICAgICAgICBzcG90aWZ5OiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGFjdGlvbnM/Llsnc3BvdGlmeSddLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgIHVybDogYWN0aW9ucz8uWydzcG9ydGlmeUxpbmsnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWRlbGl0eToge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5J10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5TGluayddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXI6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogYWN0aW9ucz8uWyduZXdzbGV0dGVyJ10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ25ld3NsZXR0ZXJMaW5rJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBhY3Rpb25zPy5bJ2xhbmd1YWdlJ10sXG4gICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlOlxuICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlPy50b0xvY2FsZVVwcGVyQ2FzZSgpLFxuICAgICAgICAgICAgdmlkZW86IHZpZGVvRGF0YSxcbiAgICAgICAgICAgIG1haW5UaXRsZTogdGV4dHM/Lm1haW5UaXRsZSxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIGltYWdlc01vYmlsZSxcbiAgICAgICAgfSBhcyBQdXJvVG9wU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0Jhbm5lckkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBVdGlscy5ub3JtYWxpemVJbWFnZXMobXVsdGltZWRpYT8uaW1hZ2VuZXMpLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcuYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9CYW5uZXJJdGVtXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0gYXMgUHVyb0luZm9CYW5uZXJJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwU2NoZWR1bGUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TY2hlZHVsZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIEFkdmFudGFnZXMgfSA9IHByb3BzO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBBcnJheSguLi4oQWR2YW50YWdlcyB8fCBbXSkpPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/Lmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TY2hlZHVsZUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSBhcyBQdXJvU2NoZWR1bGVJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSW5mb1NlcnZpY2VzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICB2aWV3OiBQdXJvVmlld3NUeXBlIHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0luZm9TZXJ2aWNlc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBzZXJ2aWNlc1NlcnZpY2UsIEFkdmFudGFnZXMsIG11bHRpbWVkaWEsIGJ1dHRvbnMgfSA9XG4gICAgICAgICAgICBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zID0gW107XG4gICAgICAgIGlmIChBZHZhbnRhZ2VzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IEFkdmFudGFnZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUgPz8gaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uZGVzY3JpcHRpb24gPz8gaXRlbT8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3MgPz8gaXRlbT8uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NlcnZpY2VzSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChzZXJ2aWNlc1NlcnZpY2UpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gc2VydmljZXNTZXJ2aWNlPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lID8/IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LmRlc2NyaXB0aW9uID8/IGl0ZW0/LnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/LmNsYXNzID8/IGl0ZW0/Lmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9TZXJ2aWNlc0l0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBidXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXSksXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICB2aWV3OiB0aGlzLmdldFZpZXcodmlldyksXG4gICAgICAgIH0gYXMgUHVyb0luZm9TZXJ2aWNlc0k7XG4gICAgfVxuXG4gICAgbWFwTGlzdEdlbmVyYWwoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU/OiAnbGlzdG5ld3NyaWdodCcgfCAnbGlzdG5ld3NsZWZ0J1xuICAgICk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgb2ZmZXJzLCByb29tcywgbXVsdGltZWRpYSwgaG90ZWxzLCB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb0xpc3RHZW5lcmFsSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKG9mZmVycykge1xuICAgICAgICAgICAgaXRlbXMgPSBvZmZlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAob2ZmZXI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXIubXVsdGltZWRpYSB8fCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTGlzdEdlbmVyYWxJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHJvb21zKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHJvb21zPy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB7IHRleHRzLCBlcXVpcG1lbnQsIG11bHRpbWVkaWEgfSA9IGl0ZW07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnQ6IGVxdWlwbWVudD8uc2xpY2UoMCwgMyk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIGl0ZW0/LmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdMaXN0Um9vbXMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdMaXN0Um9vbXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnMucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvTGlzdEdlbmVyYWxJdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaG90ZWxzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBob3RlbD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGhvdGVsPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaG90ZWw/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShob3RlbD8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBob3RlbD8ubGlua3MpWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWw/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50aXRsZSAmJiBpbWc/LnRpdGxlLnRyaW0oKSAhPT0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWcudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmRlc2NyaXB0aW9uICYmIGltZz8uZGVzY3JpcHRpb24udHJpbSgpICE9PSAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltZy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWc/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogbmFtZT8uaW5jbHVkZXMoJ3JpZ2h0JyksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RHZW5lcmFsSTtcbiAgICB9XG5cbiAgICBtYXBMaXN0UmVzdGF1cmFudHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9MaXN0UmVzdGF1cmFudHNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yZXN0YXVyYW50cz8ubWFwKFxuICAgICAgICAgICAgICAgIChyZXN0YXVyYW50OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcmVzdGF1cmFudD8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVzdGF1cmFudD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHJlc3RhdXJhbnQ/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiByZXN0YXVyYW50Py50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdGF1cmFudD8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ0xpc3RSZXN0YXVyYW50cycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdMaXN0UmVzdGF1cmFudHMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RhdXJhbnQ/LmJ1dHRvbnM/LlswXT8uc2l0ZUlkID8/IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RhdXJhbnQ/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG4/LmxpbmtUeXBlID09PSAnc2VsZl9saW5rJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bj8ubGlua1R5cGUgPT09ICdleHRlcm5hbF9saW5rJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bj8ubGlua1R5cGUgPT09ICdpbnRlcm5hbF9ob3RlbF9saW5rJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4ocmVzdGF1cmFudD8ubG9nb3M/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ286IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiByZXN0YXVyYW50Py5sb2dvcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IHJlc3RhdXJhbnQ/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RSZXN0YXVyYW50SXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RSZXN0YXVyYW50c0k7XG4gICAgfVxuXG4gICAgbWFwRW5naW5lKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRW5naW5lSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JTdWJtaXQsIHVybDogcHJvcHM/LnVybCB9LFxuICAgICAgICAgICAgZGF0ZXBpY2tlckluOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlswXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VyT3V0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlsxXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHNJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yR3Vlc3RzSW5wdXRIb2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvbW9JbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yUHJvbW9Ib2xkZXIsXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBidG5BcHBseTogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvckFwcGx5IH0sXG4gICAgICAgICAgICBhZHVsdHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWR1bHRzVGl0bGUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhBZHVsdHMsIDEpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGtpZHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkc1RpdGxlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4Q2hpbGRyZW4pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvY2F0aW9uRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckRyb3BEb3duSG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAuLi4ocHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogaG90ZWw/Lm1vZGVsSWQgPz8gNCwgLy8gZmFsdGEgbW9kZWxJZCBwYXJhIGxhIFVSTCBnZW5lcmFkYSBwb3IgcGFydGUgZGUgQmFja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBob3RlbD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBob3RlbD8udXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICkgPz8gW10pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JUaXRsZSxcbiAgICAgICAgICAgIHVybDogcHJvcHM/LnVybCxcbiAgICAgICAgICAgIGhvdGVsOiBwcm9wcz8uaG90ZWxzPy5bMF0sXG4gICAgICAgIH0gYXMgUHVyb0VuZ2luZUk7XG4gICAgfVxuXG4gICAgbWFwRW5naW5lTW9kYWwoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGVuZ2luZU1hcHBlZDogUHVyb0VuZ2luZUlcbiAgICApOiBQdXJvRW5naW5lTW9kYWxJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlQWR2YW50YWdlczpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc1RpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVuZ2luZTogZW5naW5lTWFwcGVkLFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/Lml0ZW1zPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGl0ZW0/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9BZHZhbnRhZ2VzSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvRW5naW5lTW9kYWxJO1xuICAgIH1cblxuICAgIG1hcFdlYm1hcChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1dlYm1hcEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlua3M6IHByb3BzPy5wYWdlc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBQdXJvQnV0dG9uSSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdCgnLycpWzFdID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBVdGlscy51cmxWYWxpZGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF1cbiAgICAgICAgICAgICkgYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBQaG90b1NsaWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmV2ZXJzZTogYm9vbGVhblxuICAgICk6IFB1cm9QaG90b1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy50aXRsZSA/PyBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnByZXRpdGxlID8/XG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnByZXRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPz9cbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzIHx8IFtdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcmV2ZXJzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXI0Q29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmFubmVyNENvbEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluKSA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPz9cbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgaW1hZ2VzOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lmxlbmd0aFxuICAgICAgICAgICAgICAgID8gdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5tdWx0aW1lZGlhLmltYWdlYmlnPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcy5tdWx0aW1lZGlhLmltYWdlbmVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHMubXVsdGltZWRpYS5pbWFnZW5lcy5zbGljZSgxKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogW10sXG5cbiAgICAgICAgICAgIGJpZ2Jhbm5lcjogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlYmlnPy5bMF1cbiAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWEuaW1hZ2ViaWdbMF0pXG4gICAgICAgICAgICAgICAgOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgICAgICAgPyB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcy5tdWx0aW1lZGlhLmltYWdlbmVzWzBdKVxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBiaWd0aXRsZTogJycsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXI0Q29sSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0Rm9ybShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0NvbnRhY3RGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHByZWZpeFZhbHVlcyA9IE9iamVjdC52YWx1ZXMocHJvcHM/LnByZWZpeGVzIHx8IHt9KSBhcyBzdHJpbmdbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25kaXRpb25zTGluazogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zTGlua3MsXG4gICAgICAgICAgICBwcm9tb3Rpb25zOiBwcm9wcz8udGV4dHM/LnByb21vdGlvbnMsXG4gICAgICAgICAgICByZXF1aXJlZExhYmVsOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkTGFiZWwsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICB0ZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ21lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5kRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5jb25zdWx0dHlwZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uQ29uc3VsdHlUcGU/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcD8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcmVmaXhWYWx1ZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbnB1dE5hbWU6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICduYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JOYW1lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlucHV0U3VybmFtZToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgICAgICAnc3VybmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JOYW1lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICAgICAgICAgICdlbWFpbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JFbWFpbCxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaG9uZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgICAgICAncGhvbmUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclBob25lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvQ29udGFjdEZvcm1JO1xuICAgIH1cblxuICAgIG1hcEluZm9TbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCwgcmV2ZXJzZTogYm9vbGVhbik6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgbXVsdGltZWRpYSwgZXhwZXJpZW5jZSwgdGV4dHMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9JbmZvU2xpZGVySXRlbVtdID0gW107XG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IFV0aWxzLm5vcm1hbGl6ZUltYWdlcyhtdWx0aW1lZGlhPy5pbWFnZW5lcykubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZykgYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5idXR0b25zPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NsaWRlckl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXhwZXJpZW5jZSkge1xuICAgICAgICAgICAgaXRlbXMgPSBleHBlcmllbmNlPy5tYXAoXG4gICAgICAgICAgICAgICAgKGV4cDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHA/Lm11bHRpbWVkaWE/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGV4cD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGV4cD8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGV4cD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHA/LmJ1dHRvbnM/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXRpdGxlOiBleHAucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2xpZGVySXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgcmV2ZXJzZTogcmV2ZXJzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBPZmZlcnNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ub2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKG9mZmVyOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9mZmVyLm11bHRpbWVkaWFbMF0pLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvT2ZmZXJcbiAgICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwVGhhbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvVGhhbmtzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bi5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9UaGFua3NJO1xuICAgIH1cblxuICAgIG1hcDQwNChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVybzQwNEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhZGRyZXNzID0gcHJvcHM/LmFkZHJlc3M/LlswXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMudGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGAke2FkZHJlc3MuYWRkcmVzc308L2JyPiR7YWRkcmVzcy5jaXR5fSwgJHthZGRyZXNzLmNwfSAke2FkZHJlc3MucHJvdmluY2V9YCxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnM/LlsxXSlbMF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGFjdDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmxpbmtzPy5Db250YWN0Py5bMF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucz8uWzJdKVswXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250YWN0VGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVybzQwNEk7XG4gICAgfVxuXG4gICAgbWFwSW5mb0dhbGxlcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbW9yZWluZm86IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzIHx8IFtdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLy8gYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucy5yZXZlcnNlKCkpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChidG46IGFueSkgPT4gYnRuPy5saW5rVHlwZSAhPT0gJ3NlbGZfbGluaycpXG4gICAgICAgICAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uZXF1aXBtZW50Py5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIGl0ZW0/LmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU2NoZWR1bGVJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb0dhbGxlcnlJO1xuICAgIH1cblxuICAgIG1hcEluZm9UYWJsZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9UYWJsZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBsaXN0cyA9IHByb3BzPy5MaXN0cztcblxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBjb2x1bW5zOiBsaXN0cy5tYXAoKGxpc3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gbGlzdC5pdGVtcyA/PyBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXIgPSBpdGVtc1swXT8udGl0bGUgPz8gJyc7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5JdGVtcyA9IGl0ZW1zLnNsaWNlKDEpLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBpdGVtLmljb24sXG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogY29sdW1uSXRlbXMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW5mb0l0ZW1zOiBwcm9wcz8uaW5mb0l0ZW1zLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEluZm8yQ29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mbzJDb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtLmxpbmspLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbS5idXR0b25zKSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0uaW1hZ2UpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9JbmZvMkNvbEk7XG4gICAgfVxuXG4gICAgbWFwU3VibWVudShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb01lbnVJIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBwcm9wcz8uaXRlbXM/LmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5zZWxlY3RlZCk7XG5cbiAgICAgICAgY29uc3Qgc3VibWVudSA9IHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLmJ1aWxkVXJsKGxpbms/LmxpbmtWYWx1ZSwgbGluaz8ubGlua1R5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGxpbms/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOiBsaW5rPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgaXRlbXNNb2JpbGU6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlICYmICFpdGVtLm1vYmlsZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLmJ1aWxkVXJsKGxpbms/LmxpbmtWYWx1ZSwgbGluaz8ubGlua1R5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGxpbms/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOiBsaW5rPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogc2VsZWN0ZWQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgdXJsOiB0aGlzLmJ1aWxkVXJsKHNlbGVjdGVkPy5saW5rVmFsdWUpLFxuICAgICAgICAgICAgfSBhcyBQdXJvQnV0dG9uSSxcblxuICAgICAgICAgICAgYm90dG9tTGlua3M6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlICYmIGl0ZW0ubW9iaWxlKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHRoaXMuYnVpbGRVcmwobGluaz8ubGlua1ZhbHVlLCBsaW5rPy5saW5rVHlwZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvTWVudUk7XG5cbiAgICAgICAgcmV0dXJuIHN1Ym1lbnU7XG4gICAgfVxuXG4gICAgbWFwTGlzdEF3YXJkcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0xpc3RBd2FyZHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1bMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0QXdhcmRzSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RBd2FyZHNJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjNDYXJkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2xpZGVyM0NhcmRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uSXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjNDYXJkSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDYXJkSTtcbiAgICB9XG5cbiAgICBtYXBOZXdzbGV0dGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTmV3c2xldHRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubWFpbFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubWFpbFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm1haWxFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYW5nOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubGFuZ3VhZ2VQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubGFuZ3VhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsYW5nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBsYW5nPy5pZCwgbmFtZTogbGFuZz8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY291bnRyeToge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNvdW50cnlQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY291bnRyaWVzXG4gICAgICAgICAgICAgICAgICAgID8uc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG4gICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvdW50cnk6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBjb3VudHJ5Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY291bnRyeT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNlbnRlclBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3BzPy50ZXh0cz8uYWxsQ2VudGVycyxcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBEcm9wZG93bk9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgLi4uKHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChjZW50ZXI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBjZW50ZXI/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjZW50ZXI/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKSA/PyBbXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNpZGVudDoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnJlc2lkZW50UGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LlJlc2lkZW50Py5zb3J0KChhOiBhbnksIGI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKVxuICAgICAgICAgICAgICAgICk/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGNvdW50cnk6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogY291bnRyeT8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY291bnRyeT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgY29uZGl0aW9uczogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9OZXdzbGV0dGVySTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJJbmZvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmFubmVySW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGZyYW1lVXJsOiBwcm9wcz8udGV4dHM/LmZyYW1lVXJsLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0Jhbm5lckluZm9JO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcEJhbm5lckluZm8yKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmFubmVySW5mbzJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0Jhbm5lckluZm8ySTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBJbmZvRGV0YWlscyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9EZXRhaWxzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgIH0gYXMgUHVyb0luZm9EZXRhaWxzSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvRGV0YWlsc0NvbHMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvSW5mb0RldGFpbHMzQ29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lkl0ZW1zPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlID8/IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uID8/IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9EZXRhaWxJdGVtSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb0RldGFpbHMzQ29sSTtcbiAgICB9XG5cbiAgICBtYXBGYXFzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRmFxc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5JdGVtcz8uZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IGl0ZW0/LnRpdGxlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBpdGVtPy5jb250ZW50ID8/IGl0ZW0/LnRleHQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGl0bGUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlLnRyaW0oKS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAoaXRlbS5jb250ZW50ID8/IGl0ZW0udGV4dCkudHJpbSgpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9GYXFzSTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBNdXNpY1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb011c2ljU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgYXVkaW86IGl0ZW0uYXVkaW8sXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLmltYWdlKSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGUsXG4gICAgICAgICAgICAgICAgaGVhZGluZzogaXRlbS5oZWFkaW5nLFxuICAgICAgICAgICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGluZzogaXRlbS50ZXh0Py5oZWFkaW5nLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0Py5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9NdXNpY1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwQ2FydGEocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9DYXJ0YUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VjdGlvbnM6IHByb3BzPy5NZW51Py5bMF0/LmNoaWxkcmVucz8ubWFwKChzZWN0aW9uOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHNlY3Rpb24udGl0bGUsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24/Lm1lbnU/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIGljb25zOiBpdGVtLmljb25zPy5tYXAoKGljb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyAoaWNvbj8uY2xhc3MgfHwgaWNvbj8uaWNvbiksXG4gICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9DYXJ0YUk7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyNEl0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2xpZGVyNEl0ZW1zSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEsIGhvdGVscyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb1NsaWRlcjRJdGVtc0l0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpbWc6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBpbWc/LmJ1dHRvbnMgPz8gaW1nPy5saW5rc1xuICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhvdGVscykge1xuICAgICAgICAgICAgaXRlbXMgPSBob3RlbHM/Lm1hcCgoaG90ZWw6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBob3RlbC5tdWx0aW1lZGlhPy5maW5kKChpbWc6IEltYWdlUmVzcG9uc2UpID0+IGltZy5jb3ZlcilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGhvdGVsPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICBob3RlbD8ubGlua3M/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGhvdGVsPy5saW5rc1xuICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICB9IGFzIFB1cm9TbGlkZXI0SXRlbXNJO1xuICAgIH1cblxuICAgIG1hcER1YWxMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRHVhbExpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxpc3RzOiBPYmplY3Qua2V5cyhwcm9wcy50ZXh0cylcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+IGtleS5tYXRjaCgvXmxpc3RcXGQrVGl0bGUkLykpXG4gICAgICAgICAgICAgICAgLnNvcnQoKVxuICAgICAgICAgICAgICAgIC5tYXAoKHRpdGxlS2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3ROdW1iZXIgPSB0aXRsZUtleVxuICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJ2xpc3QnLCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCdUaXRsZScsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gYGxpc3Qke2xpc3ROdW1iZXJ9SXRlbWA7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbUtleXMgPSBPYmplY3Qua2V5cyhwcm9wcy50ZXh0cylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGspID0+IGsuc3RhcnRzV2l0aChwcmVmaXgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNvcnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihhLnJlcGxhY2UocHJlZml4LCAnJykpIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKGIucmVwbGFjZShwcmVmaXgsICcnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtS2V5cy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzLnRleHRzW2l0ZW1LZXlzW2ldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMudGV4dHNbaXRlbUtleXNbaSArIDFdXSA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50ZXh0c1t0aXRsZUtleV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgfSBhcyBQdXJvRHVhbExpc3RJO1xuICAgIH1cblxuICAgIG1hcFByb2plY3RzRm9ybShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb1Byb2plY3RzRm9ybUkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwcmVmaXhWYWx1ZXMgPSBPYmplY3QudmFsdWVzKHByb3BzPy5wcmVmaXhlcyB8fCB7fSkgYXMgc3RyaW5nW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHlkVGl0bGU6IHByb3BzPy50ZXh0cz8ueWR0aXRsZSxcbiAgICAgICAgICAgIGFpVGl0bGU6IHByb3BzPy50ZXh0cz8uYWl0aXRsZSxcbiAgICAgICAgICAgIGljVGl0bGU6IHByb3BzPy50ZXh0cz8uaWN0aXRsZSxcbiAgICAgICAgICAgIGRUaXRsZTogcHJvcHM/LnRleHRzPy5kdGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGNvbmRpdGlvbnNMaW5rOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnNsaW5rLFxuICAgICAgICAgICAgb3RoZXJzOiBwcm9wcz8udGV4dHM/Lm90aGVycyxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgYXBwbHlCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgc2VlQWxsQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVsxXSxcbiAgICAgICAgICAgIHdoeVRleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ud2h5VGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ud2h5VGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ3doeU1lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdhVGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy53YVRleHRhcmVhLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LndhVGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ3dhTWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHBUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnBwVGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucHBUZXh0YXJlYSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAncHBNZXNzYWdlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBucERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubnBEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubmF0dXJlUHJvamVjdERyb3Bkb3duPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnBEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmJwRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmxvY2F0aW9uRHJvcGRvd24/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YkRyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8udGJEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8udHlwZUJ1c2luZXNzRHJvcGRvd24/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbURyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZW1Ecm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uZXN0aW1hdGVkTW9udGhzRHJvcGRvd24/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYnBEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmhicERyb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5oYXZlQnVzaW5lc3NQbGFuRHJvcGRvd24/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcmVmaXhWYWx1ZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlc0lucHV0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZHJlc3NJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmFkZHJlc3NJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3MnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5hZGRyZXNzSW5wdXQsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckFkZHJlc3MsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2l6ZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc2l6ZUlucHV0LFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnNpemVJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ3NpemUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zaXplSW5wdXQsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclNpemUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubmFtZUlucHV0LFxuICAgICAgICAgICAgICAgICAgICAnbmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5hbWVJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5hbWVJbnB1dEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN1cm5hbWVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVJbnB1dCxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zdXJuYW1lSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICdzdXJuYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZUlucHV0LFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uc3VybmFtZUlucHV0RXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmVtYWlsSW5wdXQsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZW1haWxJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ2VtYWlsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZW1haWxJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lbWFpbElucHV0RXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZmlybUVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5jb25maXJtRW1haWxJbnB1dCxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb25maXJtRW1haWxJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ2VtYWlsYydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNvbmZpcm1FbWFpbElucHV0LFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmNvbmZpcm1FbWFpbElucHV0RXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGhvbmVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnBob25lSW5wdXQsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucGhvbmVJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ3Bob25lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucGhvbmVJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ucGhvbmVJbnB1dEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1hdGVyaWFsc0lucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubWF0ZXJpYWxzSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICdtYXRlcmlhbHMnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcz8udGV4dHM/Lm1hdGVyaWFsc0lucHV0LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/Lm1hdGVyaWFsc0lucHV0LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsIGFzIEZpbGUgfCBGaWxlW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgLy8gdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBsYW5uZWRPcGVuaW5nSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5wbGFubmVkT3BlbmluZ0lucHV0LFxuICAgICAgICAgICAgICAgICAgICAncGxhbm5lZG9wZW5pbmcnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wbGFubmVkT3BlbmluZ0lucHV0LFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQbGFubmVkT3BlbmluZyxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB9IGFzIFB1cm9Qcm9qZWN0c0Zvcm1JO1xuICAgIH1cblxuICAgIG1hcEZhcXNJbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHZpZXc6IFB1cm9WaWV3c1R5cGUgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9GYXFzSW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgbXVsdGltZWRpYSwgSXRlbXMsIHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgaW1nczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcyksXG4gICAgICAgICAgICBpdGVtczogSXRlbXM/LmZpbHRlcigoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBpdGVtPy50aXRsZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gaXRlbT8uY29udGVudCA/PyBpdGVtPy50ZXh0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHRpdGxlID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aXRsZS50cmltKCkubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZS50cmltKCksXG4gICAgICAgICAgICAgICAgY29udGVudDogKGl0ZW0uY29udGVudCA/PyBpdGVtLnRleHQpLnRyaW0oKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgdmlldzogdGhpcy5nZXRWaWV3KHZpZXcpLFxuICAgICAgICAgICAgY29udGFjdEJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVsxXSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgfSBhcyBQdXJvRmFxc0ltZ0k7XG4gICAgfVxuXG4gICAgbWFwQmxvZ0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CbG9nTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgcG9zdHMgPSBwcm9wcz8ucG9zdHM/Lm1hcCgocG9zdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHBvc3Q/LmlkLFxuICAgICAgICAgICAgdGl0bGU6IHBvc3Q/LnRleHRzPy50aXRsZSA/PyBwb3N0Py50cmFuc2xhdGlvbnM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICBwb3N0Py50ZXh0cz8uc3VidGl0bGUgPz8gcG9zdD8udHJhbnNsYXRpb25zPy5bMF0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgcG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uID8/XG4gICAgICAgICAgICAgICAgcG9zdD8udHJhbnNsYXRpb25zPy5bMF0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwb3N0Py5tdWx0aW1lZGlhPy5bMF0pID8/IHtcbiAgICAgICAgICAgICAgICBzcmM6ICdodHRwczovL3B1cm8tYXBpLWRldi5iLWNkbi5uZXQvbXVsdGltZWRpYS9pbWFnZXMvdGh1bWJuYWlscy8xMjgwLzIwM0NhcHR1cmEtMjBkZS0yMHBhbnRhbGxhLTIwMjAxNy0wNC0yNC0yMGEtMjBsYXMtMjAxOS00NS01Ni1wbmcud2VicCcsXG4gICAgICAgICAgICAgICAgYWx0OiBwb3N0Py50ZXh0cz8udGl0bGUgPz8gcG9zdD8udHJhbnNsYXRpb25zPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcG9zdD8uYnV0dG9ucyksXG4gICAgICAgICAgICBwb3N0VXJsOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHBvc3Q/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBjYXRlZ29yeTogcG9zdD8uY2F0ZWdvcnkudHJhbnNsYXRpb25zPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgZGF0ZTogcG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHBvc3QuZGF0ZSkgOiBuZXcgRGF0ZShwb3N0LmNyZWF0ZWRBdCksXG4gICAgICAgIH0pKTtcblxuICAgICAgICBwb3N0cyA9IHBvc3RzLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoYS5kYXRlICYmIGIuZGF0ZSkgcmV0dXJuIGIuZGF0ZSAtIGEuZGF0ZTsgLy8gYW1ib3MgY29uIGZlY2hhXG4gICAgICAgICAgICBpZiAoYS5kYXRlICYmICFiLmRhdGUpIHJldHVybiAtMTsgLy8gYSB0aWVuZSBmZWNoYSwgYiBub1xuICAgICAgICAgICAgaWYgKCFhLmRhdGUgJiYgYi5kYXRlKSByZXR1cm4gMTsgLy8gYiB0aWVuZSBmZWNoYSwgYSBub1xuICAgICAgICAgICAgcmV0dXJuIDA7IC8vIG5pbmd1bm8gdGllbmUgZmVjaGFcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gT2J0ZW5lciBsb3MgNCBwb3N0cyBtw6FzIHJlY2llbnRlc1xuICAgICAgICBjb25zdCBsYXRlc3RQb3N0cyA9IHBvc3RzPy5zbGljZSgwLCA0KTtcblxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gQXJyYXkuaXNBcnJheShwcm9wcz8ucG9zdENhdGVnb3JpZXMpXG4gICAgICAgICAgICA/IHByb3BzLnBvc3RDYXRlZ29yaWVzXG4gICAgICAgICAgICA6IE9iamVjdC52YWx1ZXMocHJvcHM/LnBvc3RDYXRlZ29yaWVzIHx8IHt9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LnRhZyxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlSG9sZGVyOiBwcm9wcz8udGV4dHM/LnNlYXJjaFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgbm90Zm91bmRUZXh0OiBwcm9wcz8udGV4dHM/LnNlYXJjaE5vdEZvdW5kLFxuICAgICAgICAgICAgcG9zdHM6IHBvc3RzLFxuICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb250YWluLFxuICAgICAgICAgICAgY2F0ZWdvcmllczpcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGNhdGVnb3J5Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBwb3N0czogY2F0ZWdvcnk/LnRvdGFsUG9zdHMsXG4gICAgICAgICAgICAgICAgfSkpID8/IFtdLFxuICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzOiBsYXRlc3RQb3N0cyxcbiAgICAgICAgICAgIGFudGVyaW9yOiBwcm9wcz8udGV4dHM/LmFudGVyaW9yLFxuICAgICAgICAgICAgc2lndWllbnRlOiBwcm9wcz8udGV4dHM/LnNpZ3VpZW50ZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBCbG9nUG9zdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jsb2dEZXRhaWxzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb3N0SWQgPSBwcm9wcz8ucG9zdD8uaWQ7XG4gICAgICAgIGNvbnN0IHBvc3RzID0gcHJvcHM/LnJlbGF0ZWRQb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHBvc3Q/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwb3N0Py5idXR0b25zKSxcbiAgICAgICAgICAgIHBvc3RVcmw6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcG9zdD8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwb3N0Py5jYXRlZ29yeSxcbiAgICAgICAgICAgIGRhdGU6IHBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwb3N0LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgY29uc3QgY2FuZGlkYXRlcyA9IChwb3N0cyB8fCBbXSkuZmlsdGVyKFxuICAgICAgICAgICAgKHA6IGFueSkgPT4gcD8uaWQgIT09IGN1cnJlbnRQb3N0SWRcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgcmVsYXRlZFBvc3RzQ29uc3QgPVxuICAgICAgICAgICAgY2FuZGlkYXRlc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHA6IGFueSkgPT4gcD8uZGF0ZSlcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IChiLmRhdGUgYXMgYW55KSAtIChhLmRhdGUgYXMgYW55KSlcbiAgICAgICAgICAgICAgICAuc2xpY2UoMCwgNCkgfHwgW107XG4gICAgICAgIGlmIChyZWxhdGVkUG9zdHNDb25zdC5sZW5ndGggPCA0KSB7XG4gICAgICAgICAgICBjb25zdCB3aXRob3V0RGF0ZSA9IGNhbmRpZGF0ZXMuZmlsdGVyKChwOiBhbnkpID0+ICFwPy5kYXRlKTtcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0c0NvbnN0ID0gcmVsYXRlZFBvc3RzQ29uc3QuY29uY2F0KFxuICAgICAgICAgICAgICAgIHdpdGhvdXREYXRlLnNsaWNlKDAsIDQgLSByZWxhdGVkUG9zdHNDb25zdC5sZW5ndGgpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IEFycmF5LmlzQXJyYXkocHJvcHM/LnBvc3RDYXRlZ29yaWVzKVxuICAgICAgICAgICAgPyBwcm9wcy5wb3N0Q2F0ZWdvcmllc1xuICAgICAgICAgICAgOiBPYmplY3QudmFsdWVzKHByb3BzPy5wb3N0Q2F0ZWdvcmllcyB8fCB7fSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8ucG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy5wb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgYWRkaXRpb25hbDI6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMzogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgZGF0ZTogcHJvcHM/LnBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwcm9wcz8ucG9zdD8uZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjYXRlZ29yeTogcHJvcHM/LnBvc3Q/LmNhdGVnb3J5LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8udGFnLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VhcmNoUGxhY2VIb2xkZXI6IHByb3BzPy50ZXh0cz8uc2VhcmNoUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBjYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnk/LmlkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICBwb3N0czogY2F0ZWdvcnk/LnRvdGFsX3Bvc3RzLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICByZWxhdGVkUG9zdHM6IHJlbGF0ZWRQb3N0c0NvbnN0LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgc2hhcmU6IHByb3BzPy50ZXh0cz8uc2hhcmUsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5wb3N0Py5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9CbG9nRGV0YWlsc0k7XG4gICAgfVxuXG4gICAgbWFwQmFubmVyU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmFubmVyU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogVXRpbHMubm9ybWFsaXplSW1hZ2VzKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcykubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWcuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZy5idXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQmFubmVyU2xpZGVySTtcbiAgICB9XG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwTW9kYWxPcHRpb25zKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvTW9kYWxPcHRpb25zSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWcubGlua3MpWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIH0gYXMgUHVyb01vZGFsT3B0aW9uc0k7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwSW5uZXJDb250ZW50KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5uZXJDb250ZW50SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb250ZW50OiBwcm9wcz8udGV4dHM/LmNvbnRlbnQsXG4gICAgICAgIH0gYXMgUHVyb0lubmVyQ29udGVudEk7XG4gICAgfVxuXG4gICAgbWFwVGltZWxpbmUoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9UaW1lbGluZUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IFV0aWxzLm5vcm1hbGl6ZUltYWdlcyhwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpLm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB5ZWFyOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSBhcyBQdXJvVGltZWxpbmVZZWFySXRlbSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIH0gYXMgUHVyb1RpbWVsaW5lSTtcbiAgICB9XG5cbiAgICBtYXBIZWFkSW50cm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9IZWFkSW50cm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvSGVhZEludHJvSTtcbiAgICB9XG5cbiAgICBtYXBDYXJlZXJzRm9ybShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0NhcmVlcnNGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHByZWZpeFZhbHVlcyA9IE9iamVjdC52YWx1ZXMocHJvcHM/LnByZWZpeGVzIHx8IHt9KSBhcyBzdHJpbmdbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHlkVGl0bGU6IHByb3BzPy50ZXh0cz8ueWR0aXRsZSxcbiAgICAgICAgICAgIG9kVGl0bGU6IHByb3BzPy50ZXh0cz8ub2R0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uc2xpbmssXG4gICAgICAgICAgICBvdGhlcnM6IHByb3BzPy50ZXh0cz8ub3RoZXJzLFxuICAgICAgICAgICAgcmVxdWlyZWRMYWJlbDogcHJvcHM/LnRleHRzPy5yZXF1aXJlZExhYmVsLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBhcHBseUJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBzZWVBbGxCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgd3dUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lnd3VGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ud3dUZXh0YXJlYSA/P1xuICAgICAgICAgICAgICAgICAgICAnV2Ugd291bGQgbG92ZSB0byBrbm93IG1vcmUgYWJvdXQgeW91LCBwbGVhc2Ugc2hhcmUgeW91ciBjb3ZlciBsZXR0ZXInLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICd3d1RleHRhcmVhJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3bERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ud2xEcm9wZG93biA/P1xuICAgICAgICAgICAgICAgICAgICAnV2hpY2ggbG9jYXRpb24gd291bGQgeW91IGxpa2UgdG8gYXBwbHkgZm9yPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdwRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy53cERyb3Bkb3duID8/XG4gICAgICAgICAgICAgICAgICAgICdXaGljaCBwb3NpdGlvbiB3b3VsZCB5b3UgbGlrZSB0byBhcHBseSBmb3I/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYW9Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmFvRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ0FueSBvdGhlciBsb2NhdGlvbiB0aGF0IHlvdSBtaWdodCBiZSBpbnRlcmVzdGVkIGluIHdvcmtpbmcgYXQ/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2xhbmdEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LndsYW5nRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ1doaWNoIGxhbmd1YWdlcyBkbyB5b3Ugc3BlYWs/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGREcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmhkRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ0hvdyBkaWQgeW91IGhlYXIgYWJvdXQgUHVybyBHcm91cD8nLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5jb25zdWx0VHlwZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcmVmaXhWYWx1ZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ0ZpcnN0IG5hbWUnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSA/PyAnRmlyc3QgbmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3VybmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cm5hbWUnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ0xhc3QgbmFtZScsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMgPz8gJ0xhc3QgbmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlbWFpbCdcbiAgICAgICAgICAgICAgICAgICAgKSA/PyAnZW1haWwnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ0VtYWlsIGFkZHJlc3MnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZmlybUVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdlbWFpbCAyJyxcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlbWFpbGMnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ2VtYWlsIDInLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ0NvbmZpcm0geW91ciBlbWFpbCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JFbWFpbCxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaG9uZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSA/PyAncGhvbmUnLFxuICAgICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob25lJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdwaG9uZScsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSA/PyAnVGVsw6lmb25vJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWxlc0lucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmZpbGVzSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWRkaXRpb25hbEZpbGVzJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdhZGRpdGlvbmFsRmlsZXMnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzPy50ZXh0cz8uZmlsZXNJbnB1dCA/PyAnQWRkaXRpb25hbCBmaWxlcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uZmlsZXNJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCBhcyBGaWxlIHwgRmlsZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIC8vIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdklucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUocHJvcHM/LnRleHRzPy5jdklucHV0LCAnY3YnKSA/P1xuICAgICAgICAgICAgICAgICAgICAnY3YnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzPy50ZXh0cz8uY3ZJbnB1dCxcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5jdklucHV0ID8/ICdVcGxvYWQgeW8gdXIgQ1YgaGVyZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwgYXMgRmlsZSB8IEZpbGVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICAvLyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9DYXJlZXJzRm9ybUk7XG4gICAgfVxuXG4gICAgbWFwRXZlbnRzRm9ybShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0V2ZW50c0Zvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJlZml4VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICAgIHByb3BzPy5wcmVmaXhlcyB8fCB7IGNvZGU6IDAsIG5hbWU6ICcrMzQnIH1cbiAgICAgICAgKSBhcyBzdHJpbmdbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjaVRpdGxlOiBwcm9wcz8udGV4dHM/LmNpdGl0bGUsXG4gICAgICAgICAgICBkVGl0bGU6IHByb3BzPy50ZXh0cz8uZHRpdGxlLFxuICAgICAgICAgICAgaG93VGl0bGU6IHByb3BzPy50ZXh0cz8uaG93VGl0bGUsXG4gICAgICAgICAgICBvdGhlcnM6IHByb3BzPy50ZXh0cz8ub3RoZXJzLFxuICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uc2xpbmssXG4gICAgICAgICAgICByZXF1aXJlZExhYmVsOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkTGFiZWwsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBhcHBseUJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBzZWVBbGxCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgaG93VGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5ob3dUaXRsZSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5ob3dUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaG93TWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5mb1RleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5mb1RpdGxlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmluZm9UaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaW5mb01lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5lRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5uZWRyb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5uYXR1cmU/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvdGhlcnNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm90aGVyc2Ryb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3dIZWFyZFVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJlZml4VmFsdWVzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByZWZpeDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcmVmaXgsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucHJlZml4ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubmFtZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnbmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5hbWVUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5hbWVFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdXJuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lc1RpdGxlLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1cm5hbWVzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdzdXJuYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZXNUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2VtYWlsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lbWFpbEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBhbnlOYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb21wYW55VGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdjb21wYW55TmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNvbXBhbnlUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmNvbXBhbnlFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaG9uZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ucGhvbmVUaXRsZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAncGhvbmUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5waG9uZUVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5wSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5ucFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnbnBUaXRsZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5wVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5ucEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGVJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmRhdGVUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2RhdGUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kYXRlVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5kYXRlRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc0hvdXJJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnNIb3VyVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdzdGFydEhvdXInXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zSG91clRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uc0hvdXJFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmSG91cklucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZkhvdXJUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2VuZEhvdXInXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5mSG91clRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZkhvdXJFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlRXZlbnRJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lm5lZHJvcGRvd24sXG4gICAgICAgICAgICAgICAgICAgICdldmVudFR5cGUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5uZWRyb3Bkb3duLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubmFtZUVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIH0gYXMgUHVyb0V2ZW50c0Zvcm1JO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcE1vZGFsSW5mbyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmV2ZXJzZTogYm9vbGVhblxuICAgICk6IFB1cm9Nb2RhbEluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGV4dHJhRGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZXh0cmFEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIHJldmVyc2UsXG4gICAgICAgIH0gYXMgUHVyb01vZGFsSW5mb0k7XG4gICAgfVxuXG4gICAgbWFwSWZyYW1lKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSWZyYW1lSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmcmFtZVVybDogcHJvcHM/LnRleHRzPy5mcmFtZVVybCxcbiAgICAgICAgfSBhcyBQdXJvSWZyYW1lSTtcbiAgICB9XG5cbiAgICBtYXBWZXJ0aWNhbEluZm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9WZXJ0aWNhbEluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3Qgb2ZmZXIgPSBwcm9wcz8uZXZlbnQgPz8gcHJvcHM/Lm9mZmVyPy5bMF07XG4gICAgICAgIGNvbnN0IGhhc0RhdGV0aW1lID0gISFvZmZlcj8uZGF0ZXRpbWU7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uMyxcbiAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICB0YWc6IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24xLFxuICAgICAgICAgICAgZnJvbTogb2ZmZXI/LnRleHRzPy5kZXNkZSxcbiAgICAgICAgICAgIHRvOiBvZmZlcj8udGV4dHM/Lmhhc3RhLFxuICAgICAgICAgICAgcHJpY2U6IE1hdGgubWluKFxuICAgICAgICAgICAgICAgIC4uLihvZmZlcj8ucHJpY2VzID8/IFtdKS5tYXAoKHA6IGFueSkgPT4gTnVtYmVyKHAucHJpY2UpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBvZmZlcj8uY3VycmVuY3ksXG4gICAgICAgICAgICBkaXNjb3VudDogb2ZmZXI/LmRpc2NvdW50LFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShvZmZlcj8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgIHNvY2lhbFRpdGxlOiBwcm9wcz8udGV4dHM/LnNvY2lhbFRpdGxlLFxuICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZSxcbiAgICAgICAgICAgIGV4dHJhVGl0bGU6IHByb3BzPy50ZXh0cz8uZXh0cmFUaXRsZSxcbiAgICAgICAgICAgIGV4dHJhRGVzY3JpcHRpb246ICdleHRyYURlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgIGZpbGVUaXRsZTogcHJvcHM/LnRleHRzPy5maWxlVGl0bGUsXG4gICAgICAgICAgICBpbnRybzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uZGF0ZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaGFzRGF0ZXRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gVXRpbHMuZm9ybWF0RGF0ZShvZmZlci5kYXRldGltZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYCR7cHJvcHM/LnRleHRzPy5kZXNkZX0gJHtVdGlscy5mb3JtYXREYXRlKG9mZmVyPy5hcHBsaWNhdGlvbkZyb20pfSAke3Byb3BzPy50ZXh0cz8uaGFzdGF9ICR7VXRpbHMuZm9ybWF0RGF0ZShvZmZlcj8uYXBwbGljYXRpb25Ubyl9YCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGltZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaGFzRGF0ZXRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7VXRpbHMuZm9ybWF0VGltZShvZmZlci5kYXRldGltZSl9IGhgXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGAke3Byb3BzPy50ZXh0cz8uZGVzZGV9ICR7VXRpbHMuZm9ybWF0VGltZShvZmZlcj8uYXBwbGljYXRpb25Gcm9tKX0gaCAke3Byb3BzPy50ZXh0cz8uaGFzdGF9ICR7VXRpbHMuZm9ybWF0VGltZShvZmZlcj8uYXBwbGljYXRpb25Ubyl9IGhgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogb2ZmZXI/LnRleHRzPy5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGluZm9MaXN0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25UaXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogb2ZmZXI/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpdGVtczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIGFjdHVhY2lvbmVzXG4gICAgICAgICAgICBpbWdMaXN0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ucGVyZm9ybWFuY2VUaXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogb2ZmZXI/LnBlcmZvcm1hbmNlcz8ubWFwKChwZXJmOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwZXJmPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGVyZi50cmFuc2xhdGlvbnM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcGVyZi50cmFuc2xhdGlvbnM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyB2aXAgMVxuICAgICAgICAgICAgbmRJbmZvTGlzdDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnZpcFRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICAgICAgICBpdGVtczogb2ZmZXI/LnByaWNlcz8ubWFwKChvZmZlcjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXIubmFtZUlkZW50aWZpZXIsIC8vdHJhbnNsYXRpb25zXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBvZmZlci5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IG9mZmVyLmN1cnJlbmN5ID8/ICcnLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyB2aXAyXG4gICAgICAgICAgICBpbmZvQnV0dG9uOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udmlwVGl0bGUyLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uMixcbiAgICAgICAgICAgICAgICBidXR0b246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGRmTGluazoge1xuICAgICAgICAgICAgICAgIHVybDogb2ZmZXI/LmZpbGVMaW5rLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAncGRmJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250YWN0TGlua3M6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGBtYWlsdG86JHtvZmZlcj8uY29udGFjdEVtYWlsfWAsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBvZmZlcj8uY29udGFjdEVtYWlsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBgdGVsOiR7b2ZmZXI/LmNvbnRhY3RQaG9uZT8ucmVwbGFjZSgvXFxzKy9nLCAnJyl9YCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IG9mZmVyPy5jb250YWN0UGhvbmUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBidXR0b25Cb29rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGJ1dHRvbkd1ZXN0czogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8uYnV0dG9ucylbMV0sXG4gICAgICAgICAgICBob3RlbE5hbWU6IG9mZmVyPy5ob3RlbHM/LlswXT8ubmFtZUlkZW50aWZpZXIsXG5cbiAgICAgICAgICAgIC8vIGJ1dHRvblN1YnNjcmliZVxuICAgICAgICAgICAgLy8gYnV0dG9uQmFja1xuICAgICAgICB9IGFzIFB1cm9WZXJ0aWNhbEluZm9JO1xuICAgIH1cblxuICAgIG1hcExpc3RMb2dvcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0xpc3RMb2dvc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBsb2dvczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpLFxuICAgICAgICB9IGFzIFB1cm9MaXN0TG9nb3NJO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlIHtcbiAgICBwYXRoOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB0aHVtYm5haWxzOiB7XG4gICAgICAgIDM3NTogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDU0MDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDc2ODogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDgwMDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEwMjQ6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMjgwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB9O1xuICAgIGNvdmVyOiBudW1iZXI7XG4gICAgdGFncz86IGFueVtdO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHByZXRpdGxlPzogc3RyaW5nO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIG5kVGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbGlua3M/OiBhbnlbXTtcbiAgICBidXR0b25zPzogYW55W107XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlUGF0aCB7XG4gICAgb3JpZ2luYWw6IHN0cmluZztcbiAgICB3ZWJwOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50c0FkZG9ucyB7XG4gICAgY29uc3VsdFR5cGU/OiBDb25zdWx0VHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb24ge1xuICAgIGlkPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgY2hpbGRyZW4/OiBGaWx0ZXJPcHRpb247XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbnN1bHRUeXBlIHtcbiAgICBjb25zdWx0VHlwZUlkPzogbnVtYmVyO1xuICAgIElkPzogbnVtYmVyO1xuICAgIGxhbmd1YWdlSWQ/OiBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbn1cbiJdfQ==
2941
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBZ0g1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBS25FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSzFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7S0FpekhMO0lBenpIRyxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBUU8sa0JBQWtCLENBQUMsR0FBVztRQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJO1lBQ0EsR0FBRyxDQUFDLElB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QUFnQjs0QkFDakIsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQzFDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssTUFBTTs0QkFDUCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQ25DLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssaUJBQWlC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a0I7WUFDbEIsYUFBYTtTQUNLLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFzQjtRQUMvQixPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDO1NBQ2pELENBQUM7SUFDeEIsQ0FBQzsrR0EzekhRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgSW5qZWN0YWJsZSwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gICAgUHVybzQwNEksXG4gICAgUHVyb0FkdmFudGFnZXNJLFxuICAgIFB1cm9BZHZhbnRhZ2VzSXRlbSxcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSSxcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSXRlbSxcbiAgICBQdXJvQmFubmVyNENvbEksXG4gICAgUHVyb0Jhbm5lckluZm8ySSxcbiAgICBQdXJvQmFubmVySW5mb0ksXG4gICAgUHVyb0Jhbm5lclNsaWRlckksXG4gICAgUHVyb0Jsb2dEZXRhaWxzSSxcbiAgICBQdXJvQmxvZ0xpc3RJLFxuICAgIFB1cm9CcmVhZGNydW1iSSxcbiAgICBQdXJvQ2FyZWVyc0Zvcm1JLFxuICAgIFB1cm9DYXJ0YUksXG4gICAgUHVyb0NvbnRhY3RGb3JtSSxcbiAgICBQdXJvRHVhbExpc3RJLFxuICAgIFB1cm9FbmdpbmVJLFxuICAgIFB1cm9FbmdpbmVNb2RhbEksXG4gICAgUHVyb0V2ZW50c0Zvcm1JLFxuICAgIFB1cm9GYXFzSSxcbiAgICBQdXJvRmFxc0ltZ0ksXG4gICAgUHVyb0Zvb3RlckJlYWNoc0ksXG4gICAgUHVyb0Zvb3RlckJlYWNoc0l0ZW0sXG4gICAgUHVyb0Zvb3RlckhvdGVsc0ksXG4gICAgUHVyb0Zvb3RlckhvdGVsc0l0ZW0sXG4gICAgUHVyb0Zvb3RlckluZm9JLFxuICAgIFB1cm9Gb290ZXJJbmZvU29jaWFsTWVkaWFJbmZvLFxuICAgIFB1cm9Gb290ZXJMaW5rc0ksXG4gICAgUHVyb0dhbGxlcnlGaWx0ZXIsXG4gICAgUHVyb0dhbGxlcnlJLFxuICAgIFB1cm9HcmlkM0NvbEZpbHRlckksXG4gICAgUHVyb0dyaWQzQ29sRmlsdGVySXRlbSxcbiAgICBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySSxcbiAgICBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbSxcbiAgICBQdXJvR3JpZDNjb2xTbGlkZXJJLFxuICAgIFB1cm9HcmlkM2NvbFNsaWRlckl0ZW0sXG4gICAgUHVyb0dyaWQ0aXRlbXNJLFxuICAgIFB1cm9HcmlkNGl0ZW1zSXRlbSxcbiAgICBQdXJvR3JpZDVpdGVtc0ksXG4gICAgUHVyb0dyaWQ1aXRlbXNJdGVtLFxuICAgIFB1cm9HcmlkNml0ZW1zSSxcbiAgICBQdXJvR3JpZDZpdGVtc0l0ZW0sXG4gICAgUHVyb0hlYWRlckksXG4gICAgUHVyb0hlYWRJbnRyb0ksXG4gICAgUHVyb0lmcmFtZUksXG4gICAgUHVyb0ltZ0luZm9JLFxuICAgIFB1cm9JbmZvQmFubmVySSxcbiAgICBQdXJvSW5mb0Jhbm5lckl0ZW0sXG4gICAgUHVyb0luZm9CaWdJLFxuICAgIFB1cm9JbmZvRGV0YWlsSXRlbUksXG4gICAgUHVyb0luZm9EZXRhaWxzM0NvbEksXG4gICAgUHVyb0luZm9EZXRhaWxzSSxcbiAgICBQdXJvSW5mb0dhbGxlcnlJLFxuICAgIFB1cm9JbmZvSW50cm9JLFxuICAgIFB1cm9JbmZvTGlzdEksXG4gICAgUHVyb0luZm9MaXN0SXRlbUksXG4gICAgUHVyb0luZm9TZXJ2aWNlc0ksXG4gICAgUHVyb0luZm9TZXJ2aWNlc0l0ZW0sXG4gICAgUHVyb0luZm9TbGlkZXJJdGVtLFxuICAgIFB1cm9JbmZvVGFibGVJLFxuICAgIFB1cm9JbmZvVmlkZW9JLFxuICAgIFB1cm9Jbm5lckNvbnRlbnRJLFxuICAgIFB1cm9MYW5ndWFnZXNNb2RhbEksXG4gICAgUHVyb0xhbmd1YWdlc01vZGFsSXRlbSxcbiAgICBQdXJvTGlzdEF3YXJkc0ksXG4gICAgUHVyb0xpc3RBd2FyZHNJdGVtSSxcbiAgICBQdXJvTGlzdEdlbmVyYWxJLFxuICAgIFB1cm9MaXN0R2VuZXJhbEl0ZW0sXG4gICAgUHVyb0xpc3RMb2dvc0ksXG4gICAgUHVyb0xpc3RSZXN0YXVyYW50SXRlbUksXG4gICAgUHVyb0xpc3RSZXN0YXVyYW50c0ksXG4gICAgUHVyb01hcExpc3RJLFxuICAgIFB1cm9NYXBMaXN0SXRlbSxcbiAgICBQdXJvTWVudUksXG4gICAgUHVyb01vZGFsSW5mb0ksXG4gICAgUHVyb01vZGFsT3B0aW9uc0ksXG4gICAgUHVyb011c2ljU2xpZGVySSxcbiAgICBQdXJvTmV3c2xldHRlckksXG4gICAgUHVyb09mZmVyLFxuICAgIFB1cm9PZmZlckJhbm5lckksXG4gICAgUHVyb1Bob3RvU2xpZGVySSxcbiAgICBQdXJvUHJvamVjdHNGb3JtSSxcbiAgICBQdXJvU2NoZWR1bGVJLFxuICAgIFB1cm9TY2hlZHVsZUl0ZW0sXG4gICAgUHVyb1NsaWRlcjFjb2xJLFxuICAgIFB1cm9TbGlkZXIxY29sSXRlbSxcbiAgICBQdXJvU2xpZGVyMmNvbEksXG4gICAgUHVyb1NsaWRlcjJjb2xJdGVtLFxuICAgIFB1cm9TbGlkZXIzQ2FyZEksXG4gICAgUHVyb1NsaWRlcjNDYXJkSXRlbUksXG4gICAgUHVyb1NsaWRlcjNjb2xJLFxuICAgIFB1cm9TbGlkZXIzQ29sSXRlbSxcbiAgICBQdXJvU2xpZGVyM0NvbFJvdW5kSSxcbiAgICBQdXJvU2xpZGVyM0NvbFJvdW5kSXRlbSxcbiAgICBQdXJvU2xpZGVyNEl0ZW1zSSxcbiAgICBQdXJvU2xpZGVyNEl0ZW1zSXRlbSxcbiAgICBQdXJvU3VibWVudU1vYmlsZUl0ZW1JLFxuICAgIFB1cm9UaGFua3NJLFxuICAgIFB1cm9UaW1lbGluZUksXG4gICAgUHVyb1RpbWVsaW5lWWVhckl0ZW0sXG4gICAgUHVyb1RvcFNsaWRlckksXG4gICAgUHVyb1ZlcnRpY2FsSW5mb0ksXG4gICAgUHVyb1dlYm1hcEksXG4gICAgUHVyb1ppZ1phZzJjb2xJLFxufSBmcm9tICcuLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IFB1cm9JbmZvMkNvbEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3B1cm8taW5mbzJjb2wvcHVyby1pbmZvMmNvbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHVyb1ZpZXdzVHlwZSB9IGZyb20gJy4uLy4uL0VudW0vdmlld3MuZW51bSc7XG5pbXBvcnQgeyBCb2R5Q29tcG9uZW50LCBQdXJvQnV0dG9uSSwgUHVyb0ltYWdlSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3B1cm8tZHJvcGRvd24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgU2NyZWVuU2l6ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2NyZWVuLXNpemVyJztcbmltcG9ydCB7IFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuL21hcHBlci5zZXJ2aWNlLnRva2VuJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWFwcGVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzaXRlU3ZjID0gaW5qZWN0KFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuU2l6ZXIgPSBpbmplY3QoU2NyZWVuU2l6ZXJTZXJ2aWNlKTtcbiAgICBnZXQgaXNNYXhTbWFsbERlc2t0b3BJbnN0YW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zY3JlZW5TaXplci5tYXhTbWFsbERlc2t0b3BJbnN0YW50KCk7XG4gICAgfVxuXG4gICAgaGVhZGVyQnV0dG9ucyA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgc2l0ZUlkOiBTaWduYWw8bnVtYmVyPiA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiB0aGlzLnNpdGVTdmMud2ViQ29uZmlnSW5zdGFudD8uc2l0ZUlEXG4gICAgKTtcblxuICAgIHByaXZhdGUgdGh1bWJuYWlsQXZhaWxhYmxlKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICB4aHIub3BlbignSEVBRCcsIHVybCwgZmFsc2UpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgICAgIHJldHVybiB4aHIuc3RhdHVzID49IDIwMCAmJiB4aHIuc3RhdHVzIDwgNDAwO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRVcmwobGlua1ZhbHVlOiBzdHJpbmcsIGxpbmtUeXBlPzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFsaW5rVmFsdWUpIHJldHVybiAnJztcblxuICAgICAgICBjb25zdCBpc1Jlc3RhdXJhbnQgPSAvcmVzdGF1cmFudGV8cmVzdGF1cmFudC9pLnRlc3QobGlua1ZhbHVlKTtcblxuICAgICAgICAvLyBDYXNvIGVzcGVjaWFsOiByZXN0YXVyYW50IFNJTiBsaW5rVHlwZSDihpIgbm8gcHJlZmlqb1xuICAgICAgICBpZiAoaXNSZXN0YXVyYW50ICYmICFsaW5rVHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIGxpbmtWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzaXRlVXJsID0gJyc7XG4gICAgICAgIGlmICh0aGlzLnNpdGVJZCgpID09PSAyKSB7XG4gICAgICAgICAgICBzaXRlVXJsID0gJy9wdXJvaG90ZWxzJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNpdGVJZCgpID09PSAzKSB7XG4gICAgICAgICAgICBzaXRlVXJsID0gJy9wdXJvYmVhY2gnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNpdGVVcmwgKyBsaW5rVmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZTogSW1hZ2VSZXNwb25zZSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9JbWFnZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIVV0aWxzLmlzQWN0aXZlSW1hZ2UoaW1hZ2UpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGxldCBzZWxlY3RlZEltYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5pc01vYmlsZUluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMzc1XT8ud2VicDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzU0MF0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc01lZGl1bVRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzRnVsbFRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTAyNF0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5taW5GdWxsRGVza3RvcCgpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnBhdGg/LndlYnA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ud2VicDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2VsZWN0ZWRJbWFnZSB8fCAhaW1hZ2U/LnBhdGg/LndlYnApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgY2RuID0gdGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnQ7XG4gICAgICAgIGNvbnN0IHRodW1iVXJsID0gY2RuICsgc2VsZWN0ZWRJbWFnZTtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmwgPSBjZG4gKyBpbWFnZT8ucGF0aC53ZWJwO1xuXG4gICAgICAgIGNvbnN0IGZpbmFsU3JjID0gdGhpcy50aHVtYm5haWxBdmFpbGFibGUodGh1bWJVcmwpXG4gICAgICAgICAgICA/IHRodW1iVXJsXG4gICAgICAgICAgICA6IG9yaWdpbmFsVXJsO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzcmM6IGZpbmFsU3JjLFxuICAgICAgICAgICAgYWx0OiBpbWFnZT8uYWx0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZXM/OiBJbWFnZVJlc3BvbnNlW11cbiAgICApOiBQdXJvSW1hZ2VJW10gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB2YWxpZEltYWdlcyA9IFV0aWxzLm5vcm1hbGl6ZUltYWdlcyhpbWFnZXMpO1xuXG4gICAgICAgIGlmICghdmFsaWRJbWFnZXMubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiB2YWxpZEltYWdlc1xuICAgICAgICAgICAgLm1hcCgoaW1nKSA9PiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpKVxuICAgICAgICAgICAgLmZpbHRlcigoaW1nKTogaW1nIGlzIFB1cm9JbWFnZUkgPT4gISFpbWcpO1xuICAgIH1cblxuICAgIGdldFZpZXcodmlldzogUHVyb1ZpZXdzVHlwZSB8IHVuZGVmaW5lZCk6ICdsZWZ0JyB8ICdyaWdodCcge1xuICAgICAgICByZXR1cm4gdmlldyA9PT0gJ3JpZ2h0JyA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgfVxuXG4gICAgc2FuaXRpemUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG5hbWVcbiAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpIC8vIHF1aXRhciB0aWxkZXNcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOSBdL2csICcgJykgLy8gcXVpdGFyIHPDrW1ib2xvcyByYXJvc1xuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgICAgIC5tYXAoKHBhcnQsIGkpID0+XG4gICAgICAgICAgICAgICAgaSA9PT0gMFxuICAgICAgICAgICAgICAgICAgICA/IHBhcnQudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICA6IHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0LnNsaWNlKDEpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlQWdlc09wdGlvbnMobWF4TGVuZ3RoOiBudW1iZXIsIG1pbkxlbmd0aCA9IDApOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IGFueVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBtaW5MZW5ndGg7IGkgPD0gbWF4TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7IGNvZGU6IGksIG5hbWU6IGkgPCAxMCA/IGAwJHtpfWAgOiBgJHtpfWAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgbWFwQ29tcG9uZW50czxUPihcbiAgICAgICAgYm9keTogYW55W10sXG4gICAgICAgIGFkZG9ucz86IENvbXBvbmVudHNBZGRvbnNcbiAgICApOiBCb2R5Q29tcG9uZW50PFQ+W10ge1xuICAgICAgICAvKiBDb250YWRvciBwYXJhIHppZ3phZzJjb2w6XG4gICAgICAgIHBlcm1pdGUgdXNhciBpbcOhZ2VuZXMgZGlzdGludGFzIGN1YW5kbyBlbCBjb21wb25lbnRlIHNlIHJlcGl0ZSB2YXJpYXMgdmVjZXMgZW4gbGEgbWlzbWEgcMOhZ2luYSAqL1xuICAgICAgICBsZXQgemlnemFnMmNvbEluZGV4ID0gMDtcbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxUPltdID0gYm9keS5tYXAoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudD8ubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Py5vcmRlcixcbiAgICAgICAgICAgICAgICBwcm9wczogY29tcG9uZW50Py5wcm9wcyxcbiAgICAgICAgICAgICAgICB2aWV3OiBjb21wb25lbnQ/LnZpZXcsXG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50LmlkZW50aWZpZXIsXG4gICAgICAgICAgICB9IGFzIEJvZHlDb21wb25lbnQ8VD47XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Py5uYW1lICYmIGNvbXBvbmVudD8ucHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29sZmlsdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQzY29sRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkM2NvbHBsdXNmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xQbHVzRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvYmlnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjFjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMWNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyYmVhY2hzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckJlYWNocyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJob3RlbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVySG90ZWxzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsaW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMaW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnd2VibWFwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlckJ1dHRvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFudGFnZXNzbWFsbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzU21hbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9saXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9MaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29scm91bmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NvbFJvdW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW50cm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbWdpbmZvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW1naW5mb2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW1nSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm90YWJsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVGFibGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM2NvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIyY29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNWl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ1aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQ2aXRlbXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDZpdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVmlkZW8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0b2ZmZXJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RuZXdzcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdG5ld3NsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3Ryb29tcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R2VuZXJhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RyZXN0YXVyYW50cyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0UmVzdGF1cmFudHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzQwNCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RoYW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUaGFua3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvc2VydmljZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1NlcnZpY2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC52aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2Jhbm5lcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvQmFubmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzY2hlZHVsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTY2hlZHVsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNGl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ0aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ppZ3phZzJjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlIHBhc2EgZWwgw61uZGljZSBwYXJhIGNvbnN1bWlyIGltw6FnZW5lcyBkZSAyIGVuIDIgeSBldml0YXIgcmVwZXRpcmxhcyBlbnRyZSB6aWd6YWcyY29sIGNvbnNlY3V0aXZvc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwWmlnemFnMmNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aWd6YWcyY29sSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgemlnemFnMmNvbEluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkM2NvbHNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkM2NvbFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NsaWRlcmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NsaWRlcnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9TbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5mb3NsaWRlcmxlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncGhvdG9zbGlkZXJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bob3Rvc2xpZGVycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUGhvdG9TbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGhvdG9zbGlkZXJsZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcjRjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVyNENvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2dhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0dhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yQ29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtYXBsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1hcExpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsaG90ZWxzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RhZG9iZWFjaCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNYXBMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsYW5ndWFnZXNtb2RhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMYW5ndWFnZXNNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJiYW5uZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJCYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3VibWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdGF3YXJkcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0QXdhcmRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY2FyZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIzQ2FyZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmV3c2xldHRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBOZXdzbGV0dGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcmluZm8yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvZGV0YWlscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvRGV0YWlscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2RldGFpbHMyY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9kZXRhaWxzM2NvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvRGV0YWlsc0NvbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ211c2ljc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE11c2ljU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjYXJ0YSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDYXJ0YShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyNGl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjRJdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZHVhbGxpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRHVhbExpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Byb2plY3RzZm9ybSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBQcm9qZWN0c0Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibG9nbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nUG9zdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxvcHRpb25zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1vZGFsT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lubmVyY29udGVudCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbm5lckNvbnRlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RpbWVsaW5lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRpbWVsaW5lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaGVhZGludHJvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhlYWRJbnRybyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2FyZWVyc2Zvcm0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ2FyZWVyc0Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2V2ZW50c2Zvcm0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRXZlbnRzRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsaW5mb2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxpbmZvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTW9kYWxJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZGFsaW5mb2xlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaWZyYW1lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcElmcmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFxcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGYXFzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmYXFzaW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZhcXNJbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnZpZXcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndmVydGljYWxpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFZlcnRpY2FsSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdGxvZ29zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExpc3RMb2dvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihjb21wb25lbnRNYXBwZWQubmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGJvZHlNYXBwZWQ7XG4gICAgfVxuXG4gICAgbWFwR3JpZDNjb2xTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkM2NvbFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBob3RlbHMsIGJ1dHRvbnMsIGRlc3RpbmF0aW9ucyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb0dyaWQzY29sU2xpZGVySXRlbVtdID0gW107XG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IFV0aWxzLm5vcm1hbGl6ZUltYWdlcyhtdWx0aW1lZGlhPy5pbWFnZW5lcykubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5idXR0b25zPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8uYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWc/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkM2NvbFNsaWRlckl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhvdGVscykge1xuICAgICAgICAgICAgaXRlbXMgPSBob3RlbHNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaG90ZWw6IGFueSkgPT4gaG90ZWw/LmlkICE9PSA1KVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RlbD8ubGlua3M/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGhvdGVsPy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaG90ZWwudGV4dHM/Lm5hbWUgfHwgJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhvdGVsLnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnIDxicj4gJyArIGhvdGVsLnRleHRzLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RlbC5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gaW1nLmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQzY29sU2xpZGVySXRlbVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlc3RpbmF0aW9ucykge1xuICAgICAgICAgICAgaXRlbXMgPSBkZXN0aW5hdGlvbnMubWFwKFxuICAgICAgICAgICAgICAgIChkZXN0aW5hdGlvbjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uPy5idXR0b25zPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uPy5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGRlc3RpbmF0aW9uPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkZXN0aW5hdGlvbj8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uPy5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApID8/IGRlc3RpbmF0aW9uPy5tdWx0aW1lZGlhPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkM2NvbFNsaWRlckl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0dyaWQzY29sU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBHYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR2FsbGVyeUkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBmaWx0ZXJzID0gW10gfSA9IHByb3BzO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKChmOiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8vIE1hbnRlbmVyIFwiVG9kb3NcIiBzaWVtcHJlXG4gICAgICAgICAgICBpZiAoZi5hbGwpIHJldHVybiB0cnVlO1xuXG4gICAgICAgICAgICAvLyBNYW50ZW5lciBoYWJpdGFjaW9uZXMgcGFyZW50IChyb29tczp0cnVlKSBzaWVtcHJlXG4gICAgICAgICAgICBpZiAoZi5yb29tcykgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgICAgIC8vIEhhYml0YWNpb25lcyBpbmRpdmlkdWFsZXMg4oaSIHJlcXVpZXJlbiBtdWx0aW1lZGlhXG4gICAgICAgICAgICBpZiAoZi5yb29tKVxuICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGYubXVsdGltZWRpYSkgJiYgZi5tdWx0aW1lZGlhLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgICAgIC8vIFJlc3RvIGRlIGZpbHRyb3Mg4oaSIHJlcXVpZXJlbiBtdWx0aW1lZGlhXG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShmLm11bHRpbWVkaWEpICYmIGYubXVsdGltZWRpYS5sZW5ndGggPiAwO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpbmRleE1hcCA9IG5ldyBNYXA8YW55LCBudW1iZXI+KCk7XG4gICAgICAgIHZhbGlkRmlsdGVycy5mb3JFYWNoKChmOiBhbnksIGk6IGFueSkgPT4gaW5kZXhNYXAuc2V0KGYsIGkpKTtcblxuICAgICAgICBjb25zdCBtYXBwZWRGaWx0ZXJzID0gdmFsaWRGaWx0ZXJzLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgYWxsOiBpdGVtLmFsbCxcbiAgICAgICAgICAgIHJvb206IGl0ZW0ucm9vbSxcbiAgICAgICAgICAgIHJvb21zOiBpdGVtLnJvb21zLFxuICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICB9KSkgYXMgUHVyb0dhbGxlcnlGaWx0ZXJbXTtcblxuICAgICAgICBjb25zdCBpdGVtcyA9IHZhbGlkRmlsdGVycy5mbGF0TWFwKChmaWx0ZXI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpbHRlci5tdWx0aW1lZGlhKSkgcmV0dXJuIFtdO1xuXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyLm11bHRpbWVkaWEubWFwKChpbWc6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBpbmRleE1hcC5nZXQoZmlsdGVyKSwgLy8gaW5kZXggY29ycmVjdG9cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbHRlcnM6IG1hcHBlZEZpbHRlcnMsXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWx0ZXJUaXRsZTogdGV4dHM/LnJvb21zRmlsdGVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgfSBhcyBQdXJvR2FsbGVyeUk7XG4gICAgfVxuXG4gICAgbWFwTWFwTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb01hcExpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgaG90ZWxzIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvTWFwTGlzdEl0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAoaG90ZWxzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdNYXBMaXN0UGhvdG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTWFwTGlzdFBob3RvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8uWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdNYXBMaXN0TWFwJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZz8ubmFtZSA9PT0gJ01hcExpc3RNYXAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9NYXBMaXN0SXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcEltYWdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9NYXBMaXN0SXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBuZFRpdGxlOiB0ZXh0cz8ubmR0aXRsZSxcbiAgICAgICAgICAgIG5kRGVzY3JpcHRpb246IHRleHRzPy5uZGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbWFwSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5tYXA/LlswXSksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZGltYWdlPy5bMF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9NYXBMaXN0STtcbiAgICB9XG5cbiAgICBtYXBPZmZlckJhbm5lcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb09mZmVyQmFubmVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgICAgICAvL1RPRE86YmFja1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICAgICAgY3VycmVuY3k6ICcnLFxuICAgICAgICAgICAgICAgIGZyb206IHRleHRzPy5mcm9tLFxuICAgICAgICAgICAgICAgIGltYWdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcHJpY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgfSBhcyBQdXJvT2ZmZXJCYW5uZXJJO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBMYW5ndWFnZXNNb2RhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0xhbmd1YWdlc01vZGFsSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGxhbmd1YWdlcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogbGFuZ3VhZ2VzIGFzIFB1cm9MYW5ndWFnZXNNb2RhbEl0ZW1bXSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBsYW5ndWFnZXMuZmluZChcbiAgICAgICAgICAgICAgICAoaXRlbTogUHVyb0xhbmd1YWdlc01vZGFsSXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgaXRlbS5pZCA9PT0gdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5pZFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0xhbmd1YWdlc01vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBIZWFkZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG1lbnU6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9IZWFkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBuYXYsIG11bHRpbWVkaWEsIGxpbmtzIH0gPSBtZW51IHx8IHt9O1xuICAgICAgICBjb25zdCB7IGJvdHRvbUxpbmtzIH0gPSBsaW5rcyA/PyB7fTtcblxuICAgICAgICBjb25zdCB0ZXh0cyA9IHByb3BzPy5oZWFkZXJCdXR0b25zPy50ZXh0cztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGVNZW51OiB0ZXh0cz8ubWVudSxcbiAgICAgICAgICAgIHRpdGxlTGFuZzogdGV4dHM/Lmxhbmd1YWdlLFxuICAgICAgICAgICAgYnRuQm9vazogdGV4dHM/LmJvb2tub3csXG4gICAgICAgICAgICBidG5DaGVja2luOiB0ZXh0cz8uY2hlY2tpbixcbiAgICAgICAgICAgIGJ0bkNoZWNraW5PbmxpbmU6IHRleHRzPy5jaGVja2lub25saW5lLFxuICAgICAgICAgICAgbmF2TGlua3M6IG5hdj8ubWFwKChsaW5rOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmVmaXggPVxuICAgICAgICAgICAgICAgICAgICBsaW5rPy5zaXRlSWQgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJy9wdXJvaG90ZWxzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBsaW5rPy5zaXRlSWQgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnL3B1cm9iZWFjaCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJztcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy50cmFuc2xhdGlvbnM/LlswXT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcmVmaXggKyBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBsaW5rLmxpbmtUeXBlLFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBsaW5rPy5pY29uLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0J1dHRvbkk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgYm90dG9tTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBib3R0b21MaW5rcz8uWzBdPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGFiZWwpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaG90ZWxCcmFuZDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgfSBhcyBQdXJvSGVhZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmlnKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0JpZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIG5kRGVzY3JpcHRpb246IHRleHRzPy5uZERlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyMWNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjFjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhLCBidXR0b25zLCB0ZXh0cywgcG9zdHMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9TbGlkZXIxY29sSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIxY29sSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChwb3N0cykge1xuICAgICAgICAgICAgaXRlbXMgPSBwb3N0cy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPVxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5ibG9ncz8uWzBdPy5uYW1lSWRlbnRpZmllcj8udG9Mb3dlckNhc2UoKSB8fCAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gaWRlbnRpZmllci50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgICAgICAgICAgICAgIGxldCBzaXRlSWQgPSAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3B1cm9ob3RlbHMnKSkge1xuICAgICAgICAgICAgICAgICAgICBzaXRlSWQgPSAyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZC5pbmNsdWRlcygncHVyb2JlYWNoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2l0ZUlkID0gMztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICBzaXRlSWQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnMgfHwgW11cbiAgICAgICAgICAgICAgICApPy5bMF07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGxpbms6IGJ1dHRvbixcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9TbGlkZXIxY29sSXRlbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgIHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnN1YnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyMWNvbEk7XG4gICAgfVxuXG4gICAgbWFwQWR2YW50YWdlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0FkdmFudGFnZXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBBZHZhbnRhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBBZHZhbnRhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGl0ZW0/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9BZHZhbnRhZ2VzSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQWR2YW50YWdlc0k7XG4gICAgfVxuXG4gICAgbWFwWmlnemFnMmNvbChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaW5kZXggPSAwXG4gICAgKTogUHVyb1ppZ1phZzJjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBsb3MgYnV0dG9ucyBzaWVtcHJlIGFwdW50YW4gYWwgc2l0ZTEgcG9ycXVlIHNvbG8gc2UgdXNhIGVuIGRlc3Rpbm9zIChzaXRlMSlcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XG5cbiAgICAgICAgLy8gU2kgdmllbmUgbXVsdGltZWRpYS5pbWFnZW5lczpcbiAgICAgICAgLy8gc2UgYWdydXBhbiBsYXMgaW3DoWdlbmVzIGRlIDIgZW4gMiBzZWfDum4gZWwgw61uZGljZVxuICAgICAgICAvLyAoMCDihpIgWzAsMV0sIDEg4oaSIFsyLDNdLCBldGMuKVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtdWx0aW1lZGlhPy5pbWFnZW5lcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXggKiAyO1xuICAgICAgICAgICAgY29uc3QgaW1nID0gbXVsdGltZWRpYS5pbWFnZW5lc1tzdGFydF07XG4gICAgICAgICAgICBjb25zdCBuZEltZyA9IG11bHRpbWVkaWEuaW1hZ2VuZXNbc3RhcnQgKyAxXTtcblxuICAgICAgICAgICAgLy8g4puUIHNpIG5vIGhheSBpbWFnZW4gcHJpbmNpcGFsLCBubyByZW5kZXJpemFyIGVsIGNvbXBvbmVudGVcbiAgICAgICAgICAgIGlmICghaW1nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTI6IGltZz8ubmRUaXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTI6IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgbmRUaXRsZTogbmRJbWc/Lm5kVGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG5kSW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoMSwgYnV0dG9ucyk/LlsxXSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgbmRJbWc6IG5kSW1nID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobmRJbWcpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSBhcyBQdXJvWmlnWmFnMmNvbEk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGYWxsYmFjayBsZWdhY3k6IGVzdHJ1Y3R1cmEgYW50aWd1YSBzaW4gYXJyYXkgZGUgaW3DoWdlbmVzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgbmRUaXRsZTogdGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoMSwgYnV0dG9ucylbMV0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICBuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uWzFdKSxcbiAgICAgICAgfSBhcyBQdXJvWmlnWmFnMmNvbEk7XG4gICAgfVxuXG4gICAgbWFwR3JpZDRpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ0aXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IChBcnJheS5pc0FycmF5KG11bHRpbWVkaWEpXG4gICAgICAgICAgICAgICAgPyBtdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgOiBtdWx0aW1lZGlhPy5pbWFnZW5lc1xuICAgICAgICAgICAgKT8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQ0aXRlbXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICB9IGFzIFB1cm9HcmlkNGl0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvVmlkZW8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU6ICdpbmZvdmlkZW9yaWdodCcgfCAnaW5mb3ZpZGVvbGVmdCdcbiAgICApOiBQdXJvSW5mb1ZpZGVvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgcmV2ZXJzZTogbmFtZS5pbmNsdWRlcygncmlnaHQnKSxcbiAgICAgICAgICAgIHZpZGVvOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiBwcm9wcy52aWRlbz8uc3JjLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzLnZpZGVvPy50eXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0luZm9WaWRlb0k7XG4gICAgfVxuXG4gICAgbWFwQnJlYWRjcnVtYnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CcmVhZGNydW1iSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogKHByb3BzPy5pdGVtcyBhcyBhbnlbXSlcbiAgICAgICAgICAgICAgICA/LnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5jaGFyQXQoaXRlbT8udXJsPy5sZW5ndGggLSAxKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5zbGljZSgwLCAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0J1dHRvbklcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9CcmVhZGNydW1iSTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJJbmZvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRm9vdGVySW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhZGRyZXNzID0gcHJvcHM/LmFkZHJlc3M/LlswXSA/PyBwcm9wcz8uYWRkcmVzcztcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbGlua3MsIHNvY2lhbE1lZGlhLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWRkcmVzc0luZm86IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQWRkcmVzcyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBgJHthZGRyZXNzPy5hZGRyZXNzID8/ICcnfSwgJHthZGRyZXNzPy5jaXR5ID8/ICcnfSwgJHthZGRyZXNzPy5jcCA/PyAnJ30gJHthZGRyZXNzPy5wcm92aW5jZSA/PyAnJ31gLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgY29udGFjdEluZm86IHtcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M/LmNvbnRhY3RMaW5rcz8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQ29udGFjdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dvSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2U/LlswXSksXG4gICAgICAgICAgICBuZXdzbGV0dGVySW5mbzoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGVOZXdzbGV0dGVyLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVsxXSxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zTGluazogdGV4dHM/Lm5ld3NsZXR0ZXJDb25kaXRpb25zLFxuICAgICAgICAgICAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHRleHRzPy5uZXdzbGV0dGVyUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlU29jaWFsTWVkaWEsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHNvY2lhbE1lZGlhPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGljb246IFV0aWxzLm1hcFNvY2lhbGNvbnMoaXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKSksXG4gICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0gYXMgUHVyb0Zvb3RlckluZm9Tb2NpYWxNZWRpYUluZm8sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0Zvb3RlckluZm9JO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjNjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIzY29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgZXZlbnQsIGV4cGVyaWVuY2UsIG11bHRpbWVkaWEsIHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvU2xpZGVyM0NvbEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgaXRlbXMgPSBldmVudD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogaXRlbT8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgZGF0ZTogaXRlbS5kYXRldGltZSxcbiAgICAgICAgICAgICAgICBpY29uOiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24zLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChleHBlcmllbmNlKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGV4cGVyaWVuY2U/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGl0ZW0/LnRleHRzPy5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcigoYnV0dG9uOiBhbnkpID0+ICEhYnV0dG9uLmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5saW5rcz8uZmlsdGVyKChsaW5rOiBhbnkpID0+ICEhbGluay5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gVXRpbHMubm9ybWFsaXplSW1hZ2VzKG11bHRpbWVkaWE/LmltYWdlbmVzKS5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgICAgIC8vIGRhdGU6IGl0ZW0uZGF0ZXRpbWUsXG4gICAgICAgICAgICAgICAgICAgIC8vIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNjb2xJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjJjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIyY29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgcm9vbXMsIG11bHRpbWVkaWEsIHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvU2xpZGVyMmNvbEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChyb29tcykge1xuICAgICAgICAgICAgaXRlbXMgPSByb29tcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ1NsaWRlcjJDb2wnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZz8ubmFtZSA9PT0gJ1NsaWRlcjJDb2wnXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0udGV4dHM/LmRlc2NyaXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubGlua3M/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyMmNvbEk7XG4gICAgfVxuXG4gICAgbWFwR3JpZDVpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ1aXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY29tYmluZWRJbWFnZXM6IEltYWdlUmVzcG9uc2VbXSA9IFtdO1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGxldCBqID0gMDtcblxuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgICBpIDwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5sZW5ndGggfHxcbiAgICAgICAgICAgIGogPCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vzc21hbGw/Lmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LltpXSkge1xuICAgICAgICAgICAgICAgIGNvbWJpbmVkSW1hZ2VzLnB1c2gocHJvcHMubXVsdGltZWRpYS5pbWFnZW5lc1tpXSk7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbD8uW2pdKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29tYmluZWRJbWFnZXMucHVzaChwcm9wcy5tdWx0aW1lZGlhLmltYWdlc3NtYWxsW2pdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaisrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbWJpbmVkSW1hZ2VzLnB1c2gocHJvcHMubXVsdGltZWRpYS5pbWFnZXNzbWFsbFsxXSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID8/IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogY29tYmluZWRJbWFnZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLmxpbmtzPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8ubGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkNWl0ZW1zSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb0dyaWQ1aXRlbXNJO1xuICAgIH1cblxuICAgIG1hcEdyaWQ2aXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkNml0ZW1zSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBVdGlscy5ub3JtYWxpemVJbWFnZXMocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzKS5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkgYXMgUHVyb0dyaWQ2aXRlbXNJdGVtW10sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICB9IGFzIFB1cm9HcmlkNml0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBBZHZhbnRhZ2VzU21hbGwoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvQWR2YW50YWdlc1NtYWxsSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogKHByb3BzLnNlcnZpY2VzQWR2YW50YWdlcyB8fCBwcm9wcz8uQWR2YW50YWdlcyk/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUgfHwgaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgKGl0ZW0/LmNsYXNzIHx8IGl0ZW0/Lmljb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHQgfHwgaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9BZHZhbnRhZ2VzU21hbGxJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzU21hbGxJO1xuICAgIH1cblxuICAgIG1hcEdyaWQzY29sRmlsdGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDNDb2xGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCByYXdEZXN0aW5hdGlvbnM6IGFueVtdID0gKHByb3BzLmRlc3RpbmF0aW9ucyA/PyBbXSlcbiAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uczogYW55W10gPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgbmV3IE1hcChyYXdEZXN0aW5hdGlvbnMubWFwKChkOiBhbnkpID0+IFtOdW1iZXIoZC5pZCksIGRdKSkudmFsdWVzKClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCByYXdJdGVtcyA9IGRlc3RpbmF0aW9ucy5mbGF0TWFwKChkZXN0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGVzdD8uY2hpbGRyZW4gPz8gW107XG5cbiAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbj8ubWFwKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHIgPSBjaGlsZD8udHJhbnNsYXRpb25zPy5bMF0gPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0cj8ubmFtZSA/PyBjaGlsZD8ubmFtZSA/PyBjaGlsZD8ubmFtZV9pZGVudGlmaWVyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXRpdGxlID0gZGVzdD8ubmFtZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IChVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZD8uaG90ZWxzPy5bMF0/LmxpbmtzPy5bMF1cbiAgICAgICAgICAgICAgICApID8/IFtdKVswXTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGltZ0NvdmVyID0gY2hpbGQ/LmhvdGVscz8uWzBdPy5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZy5jb3ZlclxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nQ292ZXIpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IE51bWJlcihjaGlsZD8uaWQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJlbnQ6IE51bWJlcihkZXN0Py5pZCA/PyBjaGlsZD8ucGFyZW50X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uLFxuICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRJbWFnZVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0dyaWQzQ29sRmlsdGVySXRlbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUHVyb0dyaWQzQ29sRmlsdGVySXRlbVtdID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIG5ldyBNYXAocmF3SXRlbXMubWFwKChpKSA9PiBbaS5maWx0ZXIsIGldKSkudmFsdWVzKClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB2YWxpZFBhcmVudElkcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICBjb25zdCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbltdID0gZGVzdGluYXRpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChkZXN0OiBhbnkpID0+IHZhbGlkUGFyZW50SWRzLmhhcyhOdW1iZXIoZGVzdD8uaWQpKSlcbiAgICAgICAgICAgIC5tYXAoKGRlc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBOdW1iZXIoZGVzdD8uaWQpLFxuICAgICAgICAgICAgICAgIG5hbWU6IGRlc3Q/Lm5hbWUgfHwgZGVzdD8ubmFtZV9pZGVudGlmaWVyLFxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID8/IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucykgPz8gW10sXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJO1xuICAgIH1cblxuICAgIG1hcEdyaWQzY29sUGx1c0ZpbHRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCB7IHRleHRzLCBldmVudCwgZXhwZXJpZW5jZSwgaG90ZWxzLCBtdWx0aW1lZGlhLCBkZXN0aW5hdGlvbnMgfSA9XG4gICAgICAgICAgICBwcm9wcztcblxuICAgICAgICBsZXQgaXRlbXM6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtW10gPSBbXTtcbiAgICAgICAgbGV0IG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10gPSBbXTtcbiAgICAgICAgbGV0IGV4cCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXhwID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCByYXdEZXN0aW5hdGlvbnM6IGFueVtdID0gKGV2ZW50ID8/IFtdKS5mbGF0KCkuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICAgICAgICBjb25zdCBkZXN0aW5hdGlvbnM6IGFueVtdID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICBuZXcgTWFwKFxuICAgICAgICAgICAgICAgICAgICByYXdEZXN0aW5hdGlvbnMubWFwKChkOiBhbnkpID0+IFtOdW1iZXIoZC5pZCksIGRdKVxuICAgICAgICAgICAgICAgICkudmFsdWVzKClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJhd0l0ZW1zID0gZGVzdGluYXRpb25zLm1hcCgoZGVzdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHIgPSBkZXN0Py50ZXh0cyA/PyBkZXN0Py50cmFuc2xhdGlvbnMgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPVxuICAgICAgICAgICAgICAgICAgICB0cj8udGl0bGUgPz9cbiAgICAgICAgICAgICAgICAgICAgZGVzdD8ubmFtZSA/P1xuICAgICAgICAgICAgICAgICAgICBkZXN0Py5uYW1lX2lkZW50aWZpZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgZGVzdD8udHJhbnNsYXRpb25zPy50aXRsZTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZFRpdGxlID0gdHI/LmxvY2F0aW9uID8/IGRlc3Q/LnRyYW5zbGF0aW9ucz8ubG9jYXRpb247XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZSA9IGRlc3Q/LmRhdGV0aW1lPy5zcGxpdCgnICcpPy5bMF07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b25zID0gVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBkZXN0Py5idXR0b25zKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5rcyA9IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgZGVzdD8ubGlua3MpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RJbWcgPVxuICAgICAgICAgICAgICAgICAgICBkZXN0Py5tdWx0aW1lZGlhPy5maW5kKChtOiBhbnkpID0+IG0/LmNvdmVyKSA/PyB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWcgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShmaXJzdEltZyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgbmRUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBOdW1iZXIoZGVzdD8uaWQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJlbnQ6IHRyPy5sb2NhdGlvbiwgLy8gdXNhbW9zIGxvY2F0aW9uIGNvbW8gYWdydXBhZG9yL2ZpbHRyb1xuICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckl0ZW07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaXRlbXMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgICAgIG5ldyBNYXAocmF3SXRlbXMubWFwKChpKSA9PiBbaS5maWx0ZXIsIGldKSkudmFsdWVzKClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkUGFyZW50SWRzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuZmlsdGVyUGFyZW50KSk7XG4gICAgICAgICAgICBvcHRpb25zID0gQXJyYXkuZnJvbSh2YWxpZFBhcmVudElkcykubWFwKChsb2M6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBsb2MsXG4gICAgICAgICAgICAgICAgbmFtZTogbG9jLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV4cGVyaWVuY2UpIHtcbiAgICAgICAgICAgIGV4cCA9IHRydWU7XG4gICAgICAgICAgICBpdGVtcyA9IGV4cGVyaWVuY2U/Lm1hcCgoZXhwOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZXhwPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGV4cD8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiBleHA/LmRhdGV0aW1lPy5zcGxpdCgnICcpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGV4cD8uaWQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJlbnQ6IGV4cD8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGV4cD8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHA/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cD8ubGlua3M/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZExvYyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRMb2MpLm1hcCgobG9jOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogbG9jLFxuICAgICAgICAgICAgICAgIG5hbWU6IGxvYyxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChob3RlbHMpIHtcbiAgICAgICAgICAgIGV4cCA9IHRydWU7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscy5tYXAoKGhvdGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ciA9IGhvdGVsPy50ZXh0cyA/PyBob3RlbD8udHJhbnNsYXRpb25zID8/IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gdHI/Lm5hbWUgPz8gaG90ZWw/Lm5hbWVfaWRlbnRpZmllcjtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IGhvdGVsPy5jaXR5O1xuXG4gICAgICAgICAgICAgICAgLy8gY29uc3QgYnV0dG9ucyA9IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgLy8gICAgIGhvdGVsPy5idXR0b25zPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIC8vICAgICBob3RlbD8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAvLyApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtzID0gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgaG90ZWw/LmxpbmtzPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBob3RlbD8ubGlua3NcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RJbWcgPVxuICAgICAgICAgICAgICAgICAgICBob3RlbD8ubXVsdGltZWRpYT8uZmluZCgobTogYW55KSA9PiBtPy5jb3ZlcikgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoZmlyc3RJbWcpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGhvdGVsPy5pZCksXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmVudDogaG90ZWwuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgaW1nLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3MsXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZENpdGllcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRDaXRpZXMpLm1hcCgoY2l0eTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvZGU6IGNpdHksXG4gICAgICAgICAgICAgICAgbmFtZTogY2l0eSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBleHAgPSB0cnVlO1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpbWc6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBuZFRpdGxlOiBpbWc/Lm5kVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBOdW1iZXIoaW1nPy5pZCksXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmVudDogaW1nLmFsdCxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5saW5rcz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkQWx0cyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRBbHRzKS5tYXAoKGFsdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvZGU6IGFsdCxcbiAgICAgICAgICAgICAgICBuYW1lOiBhbHQsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVzdGluYXRpb25zKSB7XG4gICAgICAgICAgICBleHAgPSB0cnVlO1xuICAgICAgICAgICAgaXRlbXMgPSBkZXN0aW5hdGlvbnM/Lm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlID8/IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGl0ZW0/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiBpdGVtLnRpdGxlID8/IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gaW1nLmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkU3VidGl0bGVzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuZmlsdGVyUGFyZW50KSk7XG4gICAgICAgICAgICBvcHRpb25zID0gQXJyYXkuZnJvbSh2YWxpZFN1YnRpdGxlcykubWFwKChzdWJ0aXRsZTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvZGU6IHN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIG5hbWU6IHN1YnRpdGxlLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKSA/PyBbXSxcbiAgICAgICAgICAgIC8vIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgLy8gICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAvLyApLFxuICAgICAgICAgICAgZXhwOiBleHAsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJIb3RlbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJIb3RlbHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5ob3RlbHNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaG90ZWw6IGFueSkgPT4gaG90ZWw/LmlkICE9PSA1KVxuICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKDIsIGhvdGVsLmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaG90ZWw/LnRleHRzPy5uYW1lID8/IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LmxvY2F0aW9uRGVzY3JpcHRpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9Gb290ZXJIb3RlbHNJdGVtXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVySG90ZWxzSTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJMaW5rcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckxpbmtzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHMubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGFsdDogcHJvcHM/LnRleHRzPy5pY29uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHMubXVsdGltZWRpYT8ubG9nbz8uWzBdKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHMudGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIG1lbWJlclRpdGxlOiBwcm9wcy50ZXh0cz8ubWVtYmVyVGl0bGUsXG4gICAgICAgICAgICAgICAgbWVtYmVyUHJldGl0bGU6IHByb3BzLnRleHRzPy5tZW1iZXJQcmV0aXRsZSxcbiAgICAgICAgICAgICAgICBjb3B5cmlnaHQ6IHByb3BzLnRleHRzPy5jb3B5cmlnaHQsXG4gICAgICAgICAgICAgICAgbGlua3M6IHByb3BzLmxpbmtzXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHMubGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgobGluazogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnNpdGVJZCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuc2l0ZV9pZCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuc2l0ZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBVdGlscy5tYXBCdXR0b25zKHNpdGUsIGxpbmspWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICB9IGFzIFB1cm9Gb290ZXJMaW5rc0k7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEZvb3RlckJlYWNocyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckJlYWNoc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoMywgaG90ZWwubGlua3MpWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSA/PyBob3RlbC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGhvdGVsPy50ZXh0cz8ubG9jYXRpb25EZXNjcmlwdGlvbiA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvRm9vdGVyQmVhY2hzSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVyQmVhY2hzSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9MaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEsIEFkdmFudGFnZXMgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCB7IGJhY2tncm91bmRpbWFnZSwgaW1hZ2VuZXMsIHNtYWxsaW1hZ2UgfSA9IG11bHRpbWVkaWE7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpdGVtczogQWR2YW50YWdlcz8ubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b25SYXcgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogaXRlbS5saW5rVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgbGlua1ZhbHVlOiBpdGVtLmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtLnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25SYXcsXG4gICAgICAgICAgICAgICAgICAgIF0pPy5bMF0sXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvSW5mb0xpc3RJdGVtSTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIHNtYWxsSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShzbWFsbGltYWdlPy5bMF0pLFxuICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoYmFja2dyb3VuZGltYWdlPy5bMF0pLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0luZm9MaXN0STtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIzQ29sUm91bmQoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvU2xpZGVyM0NvbFJvdW5kSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEsIHBvc3RzIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvU2xpZGVyM0NvbFJvdW5kSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5saW5rcyB8fCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocG9zdHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gcG9zdHM/Lm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRlbnRpZmllciA9XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJsb2dzPy5bMF0/Lm5hbWVJZGVudGlmaWVyPy50b0xvd2VyQ2FzZSgpIHx8ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBpZGVudGlmaWVyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgICAgICAgICAgICAgbGV0IHNpdGVJZCA9IDE7XG5cbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZC5pbmNsdWRlcygncHVyb2hvdGVscycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNpdGVJZCA9IDI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemVkLmluY2x1ZGVzKCdwdXJvYmVhY2gnKSkge1xuICAgICAgICAgICAgICAgICAgICBzaXRlSWQgPSAzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHNpdGVJZCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucyB8fCBbXVxuICAgICAgICAgICAgICAgICk/LlswXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgbGluazogYnV0dG9uLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyM0NvbFJvdW5kSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW50cm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvSW50cm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG5cbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgID8gdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpblxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb25IaWRkZW46XG4gICAgICAgICAgICAgICAgICAgIHRleHRzPy5kZXNjcmlwdGlvbkFkZGl0aW9uYWwgPz8gdGV4dHMuZGVzY3JpcHRpb25BZGljaW9uYWwsXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHNlZUxlc3M6IHRleHRzPy5idXR0b25NZW5vc2luZm8sXG4gICAgICAgICAgICAgICAgc2VlTW9yZTogdGV4dHM/LmJ1dHRvbk1hc2luZm8sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvSW50cm9JO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIG1hcEltZ0luZm8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU/OiAnaW1naW5mb3JpZ2h0JyB8ICdpbWdpbmZvbGVmdCdcbiAgICApOiBQdXJvSW1nSW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzZWN0aW9uczogcHJvcHM/Lk1lbnU/LlswXT8uY2hpbGRyZW5zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbj8ubWVudT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbnM6IGl0ZW0uaWNvbnM/Lm1hcCgoaWNvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpY29uPy5jbGFzcyB8fCBpY29uPy5pY29uKSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgcmlnaHRTaWRlOiBuYW1lPy5pbmNsdWRlcygncmlnaHQnKSxcbiAgICAgICAgfSBhcyBQdXJvSW1nSW5mb0k7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb1RvcFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCB2aWRlbyB9ID0gcHJvcHM7XG5cbiAgICAgICAgY29uc3QgaW1hZ2VzID0gdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgIG11bHRpbWVkaWE/LmltYWdlcyB8fCBtdWx0aW1lZGlhPy5tdWx0aW1lZGlhIHx8IG11bHRpbWVkaWE/LmltYWdlbmVzXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgaW1hZ2VzTW9iaWxlID0gdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgIG11bHRpbWVkaWEuaW1hZ2VuZXNtb2JpbGUgfHwgW11cbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB2aWRlb0RhdGEgPSB2aWRlbz8uc3JjXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIHNvdXJjZTogdmlkZW8uc3JjLFxuICAgICAgICAgICAgICAgICAgdHlwZTogdmlkZW8/LnR5cGUsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIFByZWNhcmdhIGRpbsOhbWljYSBkZSBsYSBwcmltZXJhIGltYWdlbiBkZWwgc2xpZGVyXG4gICAgICAgIGlmIChpbWFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZy5zcmMgPSBpbWFnZXNbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbWFnZXNNb2JpbGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZ01vYmlsZSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZ01vYmlsZS5zcmMgPSBpbWFnZXNNb2JpbGVbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZ01vYmlsZS5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nTW9iaWxlLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nTW9iaWxlLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzTW9iaWxlPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNNb2JpbGVbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlID8/IG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSA/PyBtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUgPz8gbXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8ucHJldGl0bGUsXG4gICAgICAgICAgICBzcG90aWZ5OiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGFjdGlvbnM/Llsnc3BvdGlmeSddLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgIHVybDogYWN0aW9ucz8uWydzcG9ydGlmeUxpbmsnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWRlbGl0eToge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5J10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5TGluayddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXI6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogYWN0aW9ucz8uWyduZXdzbGV0dGVyJ10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ25ld3NsZXR0ZXJMaW5rJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBhY3Rpb25zPy5bJ2xhbmd1YWdlJ10sXG4gICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlOlxuICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlPy50b0xvY2FsZVVwcGVyQ2FzZSgpLFxuICAgICAgICAgICAgdmlkZW86IHZpZGVvRGF0YSxcbiAgICAgICAgICAgIG1haW5UaXRsZTogdGV4dHM/Lm1haW5UaXRsZSxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIGltYWdlc01vYmlsZSxcbiAgICAgICAgfSBhcyBQdXJvVG9wU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0Jhbm5lckkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBVdGlscy5ub3JtYWxpemVJbWFnZXMobXVsdGltZWRpYT8uaW1hZ2VuZXMpLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcuYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9CYW5uZXJJdGVtXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0gYXMgUHVyb0luZm9CYW5uZXJJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwU2NoZWR1bGUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TY2hlZHVsZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIEFkdmFudGFnZXMgfSA9IHByb3BzO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBBcnJheSguLi4oQWR2YW50YWdlcyB8fCBbXSkpPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/Lmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TY2hlZHVsZUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSBhcyBQdXJvU2NoZWR1bGVJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSW5mb1NlcnZpY2VzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICB2aWV3OiBQdXJvVmlld3NUeXBlIHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0luZm9TZXJ2aWNlc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBzZXJ2aWNlc1NlcnZpY2UsIEFkdmFudGFnZXMsIG11bHRpbWVkaWEsIGJ1dHRvbnMgfSA9XG4gICAgICAgICAgICBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zID0gW107XG4gICAgICAgIGlmIChBZHZhbnRhZ2VzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IEFkdmFudGFnZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUgPz8gaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uZGVzY3JpcHRpb24gPz8gaXRlbT8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3MgPz8gaXRlbT8uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NlcnZpY2VzSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChzZXJ2aWNlc1NlcnZpY2UpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gc2VydmljZXNTZXJ2aWNlPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lID8/IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LmRlc2NyaXB0aW9uID8/IGl0ZW0/LnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/LmNsYXNzID8/IGl0ZW0/Lmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9TZXJ2aWNlc0l0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBidXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXSksXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICB2aWV3OiB0aGlzLmdldFZpZXcodmlldyksXG4gICAgICAgIH0gYXMgUHVyb0luZm9TZXJ2aWNlc0k7XG4gICAgfVxuXG4gICAgbWFwTGlzdEdlbmVyYWwoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU/OiAnbGlzdG5ld3NyaWdodCcgfCAnbGlzdG5ld3NsZWZ0J1xuICAgICk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgb2ZmZXJzLCByb29tcywgbXVsdGltZWRpYSwgaG90ZWxzLCB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb0xpc3RHZW5lcmFsSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKG9mZmVycykge1xuICAgICAgICAgICAgaXRlbXMgPSBvZmZlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAob2ZmZXI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXIubXVsdGltZWRpYSB8fCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTGlzdEdlbmVyYWxJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHJvb21zKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHJvb21zPy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB7IHRleHRzLCBlcXVpcG1lbnQsIG11bHRpbWVkaWEgfSA9IGl0ZW07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnQ6IGVxdWlwbWVudD8uc2xpY2UoMCwgMyk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIGl0ZW0/LmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdMaXN0Um9vbXMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdMaXN0Um9vbXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnMucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvTGlzdEdlbmVyYWxJdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaG90ZWxzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBob3RlbD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGhvdGVsPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaG90ZWw/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShob3RlbD8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBob3RlbD8ubGlua3MpWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWw/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50aXRsZSAmJiBpbWc/LnRpdGxlLnRyaW0oKSAhPT0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWcudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmRlc2NyaXB0aW9uICYmIGltZz8uZGVzY3JpcHRpb24udHJpbSgpICE9PSAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltZy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWc/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogbmFtZT8uaW5jbHVkZXMoJ3JpZ2h0JyksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RHZW5lcmFsSTtcbiAgICB9XG5cbiAgICBtYXBMaXN0UmVzdGF1cmFudHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9MaXN0UmVzdGF1cmFudHNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yZXN0YXVyYW50cz8ubWFwKFxuICAgICAgICAgICAgICAgIChyZXN0YXVyYW50OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcmVzdGF1cmFudD8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVzdGF1cmFudD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHJlc3RhdXJhbnQ/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiByZXN0YXVyYW50Py50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdGF1cmFudD8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ0xpc3RSZXN0YXVyYW50cycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdMaXN0UmVzdGF1cmFudHMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RhdXJhbnQ/LmJ1dHRvbnM/LlswXT8uc2l0ZUlkID8/IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RhdXJhbnQ/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG4/LmxpbmtUeXBlID09PSAnc2VsZl9saW5rJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bj8ubGlua1R5cGUgPT09ICdleHRlcm5hbF9saW5rJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bj8ubGlua1R5cGUgPT09ICdpbnRlcm5hbF9ob3RlbF9saW5rJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4ocmVzdGF1cmFudD8ubG9nb3M/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ286IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiByZXN0YXVyYW50Py5sb2dvcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IHJlc3RhdXJhbnQ/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RSZXN0YXVyYW50SXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RSZXN0YXVyYW50c0k7XG4gICAgfVxuXG4gICAgbWFwRW5naW5lKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRW5naW5lSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JTdWJtaXQsIHVybDogcHJvcHM/LnVybCB9LFxuICAgICAgICAgICAgZGF0ZXBpY2tlckluOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlswXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VyT3V0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlsxXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHNJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yR3Vlc3RzSW5wdXRIb2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvbW9JbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yUHJvbW9Ib2xkZXIsXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBidG5BcHBseTogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvckFwcGx5IH0sXG4gICAgICAgICAgICBhZHVsdHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWR1bHRzVGl0bGUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhBZHVsdHMsIDEpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGtpZHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkc1RpdGxlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4Q2hpbGRyZW4pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvY2F0aW9uRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckRyb3BEb3duSG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAuLi4ocHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogaG90ZWw/Lm1vZGVsSWQgPz8gNCwgLy8gZmFsdGEgbW9kZWxJZCBwYXJhIGxhIFVSTCBnZW5lcmFkYSBwb3IgcGFydGUgZGUgQmFja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBob3RlbD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBob3RlbD8udXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICkgPz8gW10pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JUaXRsZSxcbiAgICAgICAgICAgIHVybDogcHJvcHM/LnVybCxcbiAgICAgICAgICAgIGhvdGVsOiBwcm9wcz8uaG90ZWxzPy5bMF0sXG4gICAgICAgIH0gYXMgUHVyb0VuZ2luZUk7XG4gICAgfVxuXG4gICAgbWFwRW5naW5lTW9kYWwoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGVuZ2luZU1hcHBlZDogUHVyb0VuZ2luZUlcbiAgICApOiBQdXJvRW5naW5lTW9kYWxJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlQWR2YW50YWdlczpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc1RpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVuZ2luZTogZW5naW5lTWFwcGVkLFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/Lml0ZW1zPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGl0ZW0/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9BZHZhbnRhZ2VzSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvRW5naW5lTW9kYWxJO1xuICAgIH1cblxuICAgIG1hcFdlYm1hcChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1dlYm1hcEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlua3M6IHByb3BzPy5wYWdlc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBQdXJvQnV0dG9uSSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdCgnLycpWzFdID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBVdGlscy51cmxWYWxpZGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF1cbiAgICAgICAgICAgICkgYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBQaG90b1NsaWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmV2ZXJzZTogYm9vbGVhblxuICAgICk6IFB1cm9QaG90b1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy50aXRsZSA/PyBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnByZXRpdGxlID8/XG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnByZXRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPz9cbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzIHx8IFtdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcmV2ZXJzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXI0Q29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmFubmVyNENvbEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluKSA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPz9cbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgaW1hZ2VzOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lmxlbmd0aFxuICAgICAgICAgICAgICAgID8gdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5tdWx0aW1lZGlhLmltYWdlYmlnPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcy5tdWx0aW1lZGlhLmltYWdlbmVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHMubXVsdGltZWRpYS5pbWFnZW5lcy5zbGljZSgxKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogW10sXG5cbiAgICAgICAgICAgIGJpZ2Jhbm5lcjogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlYmlnPy5bMF1cbiAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWEuaW1hZ2ViaWdbMF0pXG4gICAgICAgICAgICAgICAgOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgICAgICAgPyB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcy5tdWx0aW1lZGlhLmltYWdlbmVzWzBdKVxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBiaWd0aXRsZTogJycsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXI0Q29sSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0Rm9ybShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0NvbnRhY3RGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHByZWZpeFZhbHVlcyA9IE9iamVjdC52YWx1ZXMocHJvcHM/LnByZWZpeGVzIHx8IHt9KSBhcyBzdHJpbmdbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25kaXRpb25zTGluazogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zTGlua3MsXG4gICAgICAgICAgICBwcm9tb3Rpb25zOiBwcm9wcz8udGV4dHM/LnByb21vdGlvbnMsXG4gICAgICAgICAgICByZXF1aXJlZExhYmVsOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkTGFiZWwsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICB0ZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ21lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5kRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5jb25zdWx0dHlwZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uQ29uc3VsdHlUcGU/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcD8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcmVmaXhWYWx1ZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbnB1dE5hbWU6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICduYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JOYW1lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlucHV0U3VybmFtZToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgICAgICAnc3VybmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JOYW1lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICAgICAgICAgICdlbWFpbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JFbWFpbCxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaG9uZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgICAgICAncGhvbmUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclBob25lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvQ29udGFjdEZvcm1JO1xuICAgIH1cblxuICAgIG1hcEluZm9TbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCwgcmV2ZXJzZTogYm9vbGVhbik6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgbXVsdGltZWRpYSwgZXhwZXJpZW5jZSwgdGV4dHMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9JbmZvU2xpZGVySXRlbVtdID0gW107XG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IFV0aWxzLm5vcm1hbGl6ZUltYWdlcyhtdWx0aW1lZGlhPy5pbWFnZW5lcykubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZykgYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5idXR0b25zPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NsaWRlckl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXhwZXJpZW5jZSkge1xuICAgICAgICAgICAgaXRlbXMgPSBleHBlcmllbmNlPy5tYXAoXG4gICAgICAgICAgICAgICAgKGV4cDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHA/Lm11bHRpbWVkaWE/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGV4cD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGV4cD8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGV4cD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHA/LmJ1dHRvbnM/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXRpdGxlOiBleHAucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2xpZGVySXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgcmV2ZXJzZTogcmV2ZXJzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBPZmZlcnNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ub2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKG9mZmVyOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9mZmVyLm11bHRpbWVkaWFbMF0pLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvT2ZmZXJcbiAgICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwVGhhbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvVGhhbmtzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bi5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9UaGFua3NJO1xuICAgIH1cblxuICAgIG1hcDQwNChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVybzQwNEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhZGRyZXNzID0gcHJvcHM/LmFkZHJlc3M/LlswXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMudGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGAke2FkZHJlc3MuYWRkcmVzc308L2JyPiR7YWRkcmVzcy5jaXR5fSwgJHthZGRyZXNzLmNwfSAke2FkZHJlc3MucHJvdmluY2V9YCxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnM/LlsxXSlbMF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGFjdDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmxpbmtzPy5Db250YWN0Py5bMF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucz8uWzJdKVswXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250YWN0VGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVybzQwNEk7XG4gICAgfVxuXG4gICAgbWFwSW5mb0dhbGxlcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbW9yZWluZm86IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzIHx8IFtdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLy8gYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucy5yZXZlcnNlKCkpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChidG46IGFueSkgPT4gYnRuPy5saW5rVHlwZSAhPT0gJ3NlbGZfbGluaycpXG4gICAgICAgICAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uZXF1aXBtZW50Py5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIGl0ZW0/LmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU2NoZWR1bGVJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb0dhbGxlcnlJO1xuICAgIH1cblxuICAgIG1hcEluZm9UYWJsZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9UYWJsZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBsaXN0cyA9IHByb3BzPy5MaXN0cztcblxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBjb2x1bW5zOiBsaXN0cy5tYXAoKGxpc3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gbGlzdC5pdGVtcyA/PyBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXIgPSBpdGVtc1swXT8udGl0bGUgPz8gJyc7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5JdGVtcyA9IGl0ZW1zLnNsaWNlKDEpLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBpdGVtLmljb24sXG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogY29sdW1uSXRlbXMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW5mb0l0ZW1zOiBwcm9wcz8uaW5mb0l0ZW1zLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEluZm8yQ29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mbzJDb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtLmxpbmspLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbS5idXR0b25zKSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0uaW1hZ2UpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9JbmZvMkNvbEk7XG4gICAgfVxuXG4gICAgbWFwU3VibWVudShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb01lbnVJIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBwcm9wcz8uaXRlbXM/LmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5zZWxlY3RlZCk7XG5cbiAgICAgICAgY29uc3Qgc3VibWVudSA9IHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLmJ1aWxkVXJsKGxpbms/LmxpbmtWYWx1ZSwgbGluaz8ubGlua1R5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGxpbms/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOiBsaW5rPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgaXRlbXNNb2JpbGU6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlICYmICFpdGVtLm1vYmlsZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLmJ1aWxkVXJsKGxpbms/LmxpbmtWYWx1ZSwgbGluaz8ubGlua1R5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGxpbms/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOiBsaW5rPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogc2VsZWN0ZWQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgdXJsOiB0aGlzLmJ1aWxkVXJsKHNlbGVjdGVkPy5saW5rVmFsdWUpLFxuICAgICAgICAgICAgfSBhcyBQdXJvQnV0dG9uSSxcblxuICAgICAgICAgICAgYm90dG9tTGlua3M6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlICYmIGl0ZW0ubW9iaWxlKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHRoaXMuYnVpbGRVcmwobGluaz8ubGlua1ZhbHVlLCBsaW5rPy5saW5rVHlwZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvTWVudUk7XG5cbiAgICAgICAgcmV0dXJuIHN1Ym1lbnU7XG4gICAgfVxuXG4gICAgbWFwTGlzdEF3YXJkcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0xpc3RBd2FyZHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1bMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0QXdhcmRzSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RBd2FyZHNJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjNDYXJkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2xpZGVyM0NhcmRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uSXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjNDYXJkSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDYXJkSTtcbiAgICB9XG5cbiAgICBtYXBOZXdzbGV0dGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTmV3c2xldHRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubWFpbFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubWFpbFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm1haWxFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYW5nOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubGFuZ3VhZ2VQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubGFuZ3VhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsYW5nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBsYW5nPy5pZCwgbmFtZTogbGFuZz8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY291bnRyeToge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNvdW50cnlQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY291bnRyaWVzXG4gICAgICAgICAgICAgICAgICAgID8uc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG4gICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvdW50cnk6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBjb3VudHJ5Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY291bnRyeT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNlbnRlclBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3BzPy50ZXh0cz8uYWxsQ2VudGVycyxcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBEcm9wZG93bk9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgLi4uKHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChjZW50ZXI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBjZW50ZXI/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjZW50ZXI/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKSA/PyBbXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNpZGVudDoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnJlc2lkZW50UGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LlJlc2lkZW50Py5zb3J0KChhOiBhbnksIGI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKVxuICAgICAgICAgICAgICAgICk/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGNvdW50cnk6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogY291bnRyeT8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY291bnRyeT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgY29uZGl0aW9uczogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9OZXdzbGV0dGVySTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJJbmZvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmFubmVySW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGZyYW1lVXJsOiBwcm9wcz8udGV4dHM/LmZyYW1lVXJsLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0Jhbm5lckluZm9JO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcEJhbm5lckluZm8yKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmFubmVySW5mbzJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0Jhbm5lckluZm8ySTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBJbmZvRGV0YWlscyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9EZXRhaWxzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgIH0gYXMgUHVyb0luZm9EZXRhaWxzSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvRGV0YWlsc0NvbHMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvSW5mb0RldGFpbHMzQ29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lkl0ZW1zPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlID8/IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uID8/IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9EZXRhaWxJdGVtSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb0RldGFpbHMzQ29sSTtcbiAgICB9XG5cbiAgICBtYXBGYXFzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRmFxc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5JdGVtcz8uZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IGl0ZW0/LnRpdGxlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBpdGVtPy5jb250ZW50ID8/IGl0ZW0/LnRleHQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGl0bGUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlLnRyaW0oKS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAoaXRlbS5jb250ZW50ID8/IGl0ZW0udGV4dCkudHJpbSgpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9GYXFzSTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBNdXNpY1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb011c2ljU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgYXVkaW86IGl0ZW0uYXVkaW8sXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLmltYWdlKSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGUsXG4gICAgICAgICAgICAgICAgaGVhZGluZzogaXRlbS5oZWFkaW5nLFxuICAgICAgICAgICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGluZzogaXRlbS50ZXh0Py5oZWFkaW5nLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0Py5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9NdXNpY1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwQ2FydGEocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9DYXJ0YUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VjdGlvbnM6IHByb3BzPy5NZW51Py5bMF0/LmNoaWxkcmVucz8ubWFwKChzZWN0aW9uOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHNlY3Rpb24udGl0bGUsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24/Lm1lbnU/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIGljb25zOiBpdGVtLmljb25zPy5tYXAoKGljb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyAoaWNvbj8uY2xhc3MgfHwgaWNvbj8uaWNvbiksXG4gICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9DYXJ0YUk7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyNEl0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2xpZGVyNEl0ZW1zSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEsIGhvdGVscyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb1NsaWRlcjRJdGVtc0l0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpbWc6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBpbWc/LmJ1dHRvbnMgPz8gaW1nPy5saW5rc1xuICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhvdGVscykge1xuICAgICAgICAgICAgaXRlbXMgPSBob3RlbHM/Lm1hcCgoaG90ZWw6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBob3RlbC5tdWx0aW1lZGlhPy5maW5kKChpbWc6IEltYWdlUmVzcG9uc2UpID0+IGltZy5jb3ZlcilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGhvdGVsPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICBob3RlbD8ubGlua3M/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGhvdGVsPy5saW5rc1xuICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICB9IGFzIFB1cm9TbGlkZXI0SXRlbXNJO1xuICAgIH1cblxuICAgIG1hcER1YWxMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRHVhbExpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxpc3RzOiBPYmplY3Qua2V5cyhwcm9wcy50ZXh0cylcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+IGtleS5tYXRjaCgvXmxpc3RcXGQrVGl0bGUkLykpXG4gICAgICAgICAgICAgICAgLnNvcnQoKVxuICAgICAgICAgICAgICAgIC5tYXAoKHRpdGxlS2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3ROdW1iZXIgPSB0aXRsZUtleVxuICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJ2xpc3QnLCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCdUaXRsZScsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gYGxpc3Qke2xpc3ROdW1iZXJ9SXRlbWA7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbUtleXMgPSBPYmplY3Qua2V5cyhwcm9wcy50ZXh0cylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGspID0+IGsuc3RhcnRzV2l0aChwcmVmaXgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNvcnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihhLnJlcGxhY2UocHJlZml4LCAnJykpIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKGIucmVwbGFjZShwcmVmaXgsICcnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtS2V5cy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzLnRleHRzW2l0ZW1LZXlzW2ldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMudGV4dHNbaXRlbUtleXNbaSArIDFdXSA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50ZXh0c1t0aXRsZUtleV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgfSBhcyBQdXJvRHVhbExpc3RJO1xuICAgIH1cblxuICAgIG1hcFByb2plY3RzRm9ybShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb1Byb2plY3RzRm9ybUkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwcmVmaXhWYWx1ZXMgPSBPYmplY3QudmFsdWVzKHByb3BzPy5wcmVmaXhlcyB8fCB7fSkgYXMgc3RyaW5nW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHlkVGl0bGU6IHByb3BzPy50ZXh0cz8ueWR0aXRsZSxcbiAgICAgICAgICAgIGFpVGl0bGU6IHByb3BzPy50ZXh0cz8uYWl0aXRsZSxcbiAgICAgICAgICAgIGljVGl0bGU6IHByb3BzPy50ZXh0cz8uaWN0aXRsZSxcbiAgICAgICAgICAgIGRUaXRsZTogcHJvcHM/LnRleHRzPy5kdGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGNvbmRpdGlvbnNMaW5rOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnNsaW5rLFxuICAgICAgICAgICAgb3RoZXJzOiBwcm9wcz8udGV4dHM/Lm90aGVycyxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgYXBwbHlCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgc2VlQWxsQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVsxXSxcbiAgICAgICAgICAgIHdoeVRleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ud2h5VGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ud2h5VGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ3doeU1lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdhVGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy53YVRleHRhcmVhLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LndhVGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ3dhTWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHBUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnBwVGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucHBUZXh0YXJlYSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAncHBNZXNzYWdlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBucERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubnBEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubmF0dXJlUHJvamVjdERyb3Bkb3duPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnBEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmJwRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmxvY2F0aW9uRHJvcGRvd24/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YkRyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8udGJEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8udHlwZUJ1c2luZXNzRHJvcGRvd24/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbURyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZW1Ecm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uZXN0aW1hdGVkTW9udGhzRHJvcGRvd24/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYnBEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmhicERyb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5oYXZlQnVzaW5lc3NQbGFuRHJvcGRvd24/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcmVmaXhWYWx1ZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlc0lucHV0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZHJlc3NJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmFkZHJlc3NJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3MnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5hZGRyZXNzSW5wdXQsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckFkZHJlc3MsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2l6ZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc2l6ZUlucHV0LFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnNpemVJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ3NpemUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zaXplSW5wdXQsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclNpemUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubmFtZUlucHV0LFxuICAgICAgICAgICAgICAgICAgICAnbmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5hbWVJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5hbWVJbnB1dEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN1cm5hbWVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVJbnB1dCxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zdXJuYW1lSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICdzdXJuYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZUlucHV0LFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uc3VybmFtZUlucHV0RXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmVtYWlsSW5wdXQsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZW1haWxJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ2VtYWlsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZW1haWxJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lbWFpbElucHV0RXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZmlybUVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5jb25maXJtRW1haWxJbnB1dCxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb25maXJtRW1haWxJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ2VtYWlsYydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNvbmZpcm1FbWFpbElucHV0LFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmNvbmZpcm1FbWFpbElucHV0RXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGhvbmVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnBob25lSW5wdXQsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucGhvbmVJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ3Bob25lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucGhvbmVJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ucGhvbmVJbnB1dEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1hdGVyaWFsc0lucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubWF0ZXJpYWxzSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICdtYXRlcmlhbHMnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcz8udGV4dHM/Lm1hdGVyaWFsc0lucHV0LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/Lm1hdGVyaWFsc0lucHV0LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsIGFzIEZpbGUgfCBGaWxlW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgLy8gdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBsYW5uZWRPcGVuaW5nSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5wbGFubmVkT3BlbmluZ0lucHV0LFxuICAgICAgICAgICAgICAgICAgICAncGxhbm5lZG9wZW5pbmcnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wbGFubmVkT3BlbmluZ0lucHV0LFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQbGFubmVkT3BlbmluZyxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB9IGFzIFB1cm9Qcm9qZWN0c0Zvcm1JO1xuICAgIH1cblxuICAgIG1hcEZhcXNJbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHZpZXc6IFB1cm9WaWV3c1R5cGUgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9GYXFzSW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgbXVsdGltZWRpYSwgSXRlbXMsIHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgaW1nczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcyksXG4gICAgICAgICAgICBpdGVtczogSXRlbXM/LmZpbHRlcigoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBpdGVtPy50aXRsZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gaXRlbT8uY29udGVudCA/PyBpdGVtPy50ZXh0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHRpdGxlID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aXRsZS50cmltKCkubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZS50cmltKCksXG4gICAgICAgICAgICAgICAgY29udGVudDogKGl0ZW0uY29udGVudCA/PyBpdGVtLnRleHQpLnRyaW0oKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgdmlldzogdGhpcy5nZXRWaWV3KHZpZXcpLFxuICAgICAgICAgICAgY29udGFjdEJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVsxXSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgfSBhcyBQdXJvRmFxc0ltZ0k7XG4gICAgfVxuXG4gICAgbWFwQmxvZ0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CbG9nTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgcG9zdHMgPSBwcm9wcz8ucG9zdHM/Lm1hcCgocG9zdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHBvc3Q/LmlkLFxuICAgICAgICAgICAgdGl0bGU6IHBvc3Q/LnRleHRzPy50aXRsZSA/PyBwb3N0Py50cmFuc2xhdGlvbnM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICBwb3N0Py50ZXh0cz8uc3VidGl0bGUgPz8gcG9zdD8udHJhbnNsYXRpb25zPy5bMF0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgcG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uID8/XG4gICAgICAgICAgICAgICAgcG9zdD8udHJhbnNsYXRpb25zPy5bMF0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwb3N0Py5tdWx0aW1lZGlhPy5bMF0pID8/IHtcbiAgICAgICAgICAgICAgICBzcmM6ICdodHRwczovL3B1cm8tYXBpLWRldi5iLWNkbi5uZXQvbXVsdGltZWRpYS9pbWFnZXMvdGh1bWJuYWlscy8xMjgwLzIwM0NhcHR1cmEtMjBkZS0yMHBhbnRhbGxhLTIwMjAxNy0wNC0yNC0yMGEtMjBsYXMtMjAxOS00NS01Ni1wbmcud2VicCcsXG4gICAgICAgICAgICAgICAgYWx0OiBwb3N0Py50ZXh0cz8udGl0bGUgPz8gcG9zdD8udHJhbnNsYXRpb25zPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcG9zdD8uYnV0dG9ucyksXG4gICAgICAgICAgICBwb3N0VXJsOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHBvc3Q/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBjYXRlZ29yeTogcG9zdD8uY2F0ZWdvcnkudHJhbnNsYXRpb25zPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgZGF0ZTogcG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHBvc3QuZGF0ZSkgOiBuZXcgRGF0ZShwb3N0LmNyZWF0ZWRBdCksXG4gICAgICAgIH0pKTtcblxuICAgICAgICBwb3N0cyA9IHBvc3RzLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoYS5kYXRlICYmIGIuZGF0ZSkgcmV0dXJuIGIuZGF0ZSAtIGEuZGF0ZTsgLy8gYW1ib3MgY29uIGZlY2hhXG4gICAgICAgICAgICBpZiAoYS5kYXRlICYmICFiLmRhdGUpIHJldHVybiAtMTsgLy8gYSB0aWVuZSBmZWNoYSwgYiBub1xuICAgICAgICAgICAgaWYgKCFhLmRhdGUgJiYgYi5kYXRlKSByZXR1cm4gMTsgLy8gYiB0aWVuZSBmZWNoYSwgYSBub1xuICAgICAgICAgICAgcmV0dXJuIDA7IC8vIG5pbmd1bm8gdGllbmUgZmVjaGFcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gT2J0ZW5lciBsb3MgNCBwb3N0cyBtw6FzIHJlY2llbnRlc1xuICAgICAgICBjb25zdCBsYXRlc3RQb3N0cyA9IHBvc3RzPy5zbGljZSgwLCA0KTtcblxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gQXJyYXkuaXNBcnJheShwcm9wcz8ucG9zdENhdGVnb3JpZXMpXG4gICAgICAgICAgICA/IHByb3BzLnBvc3RDYXRlZ29yaWVzXG4gICAgICAgICAgICA6IE9iamVjdC52YWx1ZXMocHJvcHM/LnBvc3RDYXRlZ29yaWVzIHx8IHt9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LnRhZyxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlSG9sZGVyOiBwcm9wcz8udGV4dHM/LnNlYXJjaFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgbm90Zm91bmRUZXh0OiBwcm9wcz8udGV4dHM/LnNlYXJjaE5vdEZvdW5kLFxuICAgICAgICAgICAgcG9zdHM6IHBvc3RzLFxuICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb250YWluLFxuICAgICAgICAgICAgY2F0ZWdvcmllczpcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGNhdGVnb3J5Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBwb3N0czogY2F0ZWdvcnk/LnRvdGFsUG9zdHMsXG4gICAgICAgICAgICAgICAgfSkpID8/IFtdLFxuICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzOiBsYXRlc3RQb3N0cyxcbiAgICAgICAgICAgIGFudGVyaW9yOiBwcm9wcz8udGV4dHM/LmFudGVyaW9yLFxuICAgICAgICAgICAgc2lndWllbnRlOiBwcm9wcz8udGV4dHM/LnNpZ3VpZW50ZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBCbG9nUG9zdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jsb2dEZXRhaWxzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb3N0SWQgPSBwcm9wcz8ucG9zdD8uaWQ7XG4gICAgICAgIGNvbnN0IHBvc3RzID0gcHJvcHM/LnJlbGF0ZWRQb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHBvc3Q/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwb3N0Py5idXR0b25zKSxcbiAgICAgICAgICAgIHBvc3RVcmw6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcG9zdD8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwb3N0Py5jYXRlZ29yeSxcbiAgICAgICAgICAgIGRhdGU6IHBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwb3N0LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgY29uc3QgY2FuZGlkYXRlcyA9IChwb3N0cyB8fCBbXSkuZmlsdGVyKFxuICAgICAgICAgICAgKHA6IGFueSkgPT4gcD8uaWQgIT09IGN1cnJlbnRQb3N0SWRcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgcmVsYXRlZFBvc3RzQ29uc3QgPVxuICAgICAgICAgICAgY2FuZGlkYXRlc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHA6IGFueSkgPT4gcD8uZGF0ZSlcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IChiLmRhdGUgYXMgYW55KSAtIChhLmRhdGUgYXMgYW55KSlcbiAgICAgICAgICAgICAgICAuc2xpY2UoMCwgNCkgfHwgW107XG4gICAgICAgIGlmIChyZWxhdGVkUG9zdHNDb25zdC5sZW5ndGggPCA0KSB7XG4gICAgICAgICAgICBjb25zdCB3aXRob3V0RGF0ZSA9IGNhbmRpZGF0ZXMuZmlsdGVyKChwOiBhbnkpID0+ICFwPy5kYXRlKTtcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0c0NvbnN0ID0gcmVsYXRlZFBvc3RzQ29uc3QuY29uY2F0KFxuICAgICAgICAgICAgICAgIHdpdGhvdXREYXRlLnNsaWNlKDAsIDQgLSByZWxhdGVkUG9zdHNDb25zdC5sZW5ndGgpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IEFycmF5LmlzQXJyYXkocHJvcHM/LnBvc3RDYXRlZ29yaWVzKVxuICAgICAgICAgICAgPyBwcm9wcy5wb3N0Q2F0ZWdvcmllc1xuICAgICAgICAgICAgOiBPYmplY3QudmFsdWVzKHByb3BzPy5wb3N0Q2F0ZWdvcmllcyB8fCB7fSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8ucG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy5wb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgYWRkaXRpb25hbDI6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMzogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgZGF0ZTogcHJvcHM/LnBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwcm9wcz8ucG9zdD8uZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjYXRlZ29yeTogcHJvcHM/LnBvc3Q/LmNhdGVnb3J5LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8udGFnLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VhcmNoUGxhY2VIb2xkZXI6IHByb3BzPy50ZXh0cz8uc2VhcmNoUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBjYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnk/LmlkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICBwb3N0czogY2F0ZWdvcnk/LnRvdGFsX3Bvc3RzLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICByZWxhdGVkUG9zdHM6IHJlbGF0ZWRQb3N0c0NvbnN0LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgc2hhcmU6IHByb3BzPy50ZXh0cz8uc2hhcmUsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5wb3N0Py5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9CbG9nRGV0YWlsc0k7XG4gICAgfVxuXG4gICAgbWFwQmFubmVyU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmFubmVyU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogVXRpbHMubm9ybWFsaXplSW1hZ2VzKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcykubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWcuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZy5idXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQmFubmVyU2xpZGVySTtcbiAgICB9XG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwTW9kYWxPcHRpb25zKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvTW9kYWxPcHRpb25zSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWcubGlua3MpWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIH0gYXMgUHVyb01vZGFsT3B0aW9uc0k7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwSW5uZXJDb250ZW50KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5uZXJDb250ZW50SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb250ZW50OiBwcm9wcz8udGV4dHM/LmNvbnRlbnQsXG4gICAgICAgIH0gYXMgUHVyb0lubmVyQ29udGVudEk7XG4gICAgfVxuXG4gICAgbWFwVGltZWxpbmUoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9UaW1lbGluZUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IFV0aWxzLm5vcm1hbGl6ZUltYWdlcyhwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpLm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB5ZWFyOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSBhcyBQdXJvVGltZWxpbmVZZWFySXRlbSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIH0gYXMgUHVyb1RpbWVsaW5lSTtcbiAgICB9XG5cbiAgICBtYXBIZWFkSW50cm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9IZWFkSW50cm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvSGVhZEludHJvSTtcbiAgICB9XG5cbiAgICBtYXBDYXJlZXJzRm9ybShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0NhcmVlcnNGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHByZWZpeFZhbHVlcyA9IE9iamVjdC52YWx1ZXMocHJvcHM/LnByZWZpeGVzIHx8IHt9KSBhcyBzdHJpbmdbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHlkVGl0bGU6IHByb3BzPy50ZXh0cz8ueWR0aXRsZSxcbiAgICAgICAgICAgIG9kVGl0bGU6IHByb3BzPy50ZXh0cz8ub2R0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uc2xpbmssXG4gICAgICAgICAgICBvdGhlcnM6IHByb3BzPy50ZXh0cz8ub3RoZXJzLFxuICAgICAgICAgICAgcmVxdWlyZWRMYWJlbDogcHJvcHM/LnRleHRzPy5yZXF1aXJlZExhYmVsLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBhcHBseUJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBzZWVBbGxCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgd3dUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lnd3VGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ud3dUZXh0YXJlYSA/P1xuICAgICAgICAgICAgICAgICAgICAnV2Ugd291bGQgbG92ZSB0byBrbm93IG1vcmUgYWJvdXQgeW91LCBwbGVhc2Ugc2hhcmUgeW91ciBjb3ZlciBsZXR0ZXInLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICd3d1RleHRhcmVhJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3bERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ud2xEcm9wZG93biA/P1xuICAgICAgICAgICAgICAgICAgICAnV2hpY2ggbG9jYXRpb24gd291bGQgeW91IGxpa2UgdG8gYXBwbHkgZm9yPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdwRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy53cERyb3Bkb3duID8/XG4gICAgICAgICAgICAgICAgICAgICdXaGljaCBwb3NpdGlvbiB3b3VsZCB5b3UgbGlrZSB0byBhcHBseSBmb3I/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYW9Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmFvRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ0FueSBvdGhlciBsb2NhdGlvbiB0aGF0IHlvdSBtaWdodCBiZSBpbnRlcmVzdGVkIGluIHdvcmtpbmcgYXQ/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2xhbmdEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LndsYW5nRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ1doaWNoIGxhbmd1YWdlcyBkbyB5b3Ugc3BlYWs/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGREcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmhkRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ0hvdyBkaWQgeW91IGhlYXIgYWJvdXQgUHVybyBHcm91cD8nLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5jb25zdWx0VHlwZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcmVmaXhWYWx1ZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ0ZpcnN0IG5hbWUnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSA/PyAnRmlyc3QgbmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3VybmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cm5hbWUnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ0xhc3QgbmFtZScsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMgPz8gJ0xhc3QgbmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlbWFpbCdcbiAgICAgICAgICAgICAgICAgICAgKSA/PyAnZW1haWwnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ0VtYWlsIGFkZHJlc3MnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZmlybUVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdlbWFpbCAyJyxcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlbWFpbGMnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ2VtYWlsIDInLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ0NvbmZpcm0geW91ciBlbWFpbCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JFbWFpbCxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaG9uZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSA/PyAncGhvbmUnLFxuICAgICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob25lJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdwaG9uZScsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSA/PyAnVGVsw6lmb25vJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWxlc0lucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmZpbGVzSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWRkaXRpb25hbEZpbGVzJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdhZGRpdGlvbmFsRmlsZXMnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzPy50ZXh0cz8uZmlsZXNJbnB1dCA/PyAnQWRkaXRpb25hbCBmaWxlcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uZmlsZXNJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCBhcyBGaWxlIHwgRmlsZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIC8vIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdklucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUocHJvcHM/LnRleHRzPy5jdklucHV0LCAnY3YnKSA/P1xuICAgICAgICAgICAgICAgICAgICAnY3YnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzPy50ZXh0cz8uY3ZJbnB1dCxcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5jdklucHV0ID8/ICdVcGxvYWQgeW8gdXIgQ1YgaGVyZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwgYXMgRmlsZSB8IEZpbGVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICAvLyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9DYXJlZXJzRm9ybUk7XG4gICAgfVxuXG4gICAgbWFwRXZlbnRzRm9ybShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0V2ZW50c0Zvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJlZml4VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICAgIHByb3BzPy5wcmVmaXhlcyB8fCB7IGNvZGU6IDAsIG5hbWU6ICcrMzQnIH1cbiAgICAgICAgKSBhcyBzdHJpbmdbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjaVRpdGxlOiBwcm9wcz8udGV4dHM/LmNpdGl0bGUsXG4gICAgICAgICAgICBkVGl0bGU6IHByb3BzPy50ZXh0cz8uZHRpdGxlLFxuICAgICAgICAgICAgaG93VGl0bGU6IHByb3BzPy50ZXh0cz8uaG93VGl0bGUsXG4gICAgICAgICAgICBvdGhlcnM6IHByb3BzPy50ZXh0cz8ub3RoZXJzLFxuICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uc2xpbmssXG4gICAgICAgICAgICByZXF1aXJlZExhYmVsOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkTGFiZWwsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBhcHBseUJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBzZWVBbGxCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgaG93VGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5ob3dUaXRsZSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5ob3dUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaG93TWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5mb1RleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5mb1RpdGxlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmluZm9UaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaW5mb01lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5lRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5uZWRyb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5uYXR1cmU/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvdGhlcnNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm90aGVyc2Ryb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3dIZWFyZFVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJlZml4VmFsdWVzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByZWZpeDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcmVmaXgsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucHJlZml4ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubmFtZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnbmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5hbWVUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5hbWVFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdXJuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lc1RpdGxlLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1cm5hbWVzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdzdXJuYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZXNUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2VtYWlsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lbWFpbEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBhbnlOYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb21wYW55VGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdjb21wYW55TmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNvbXBhbnlUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmNvbXBhbnlFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaG9uZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ucGhvbmVUaXRsZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAncGhvbmUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5waG9uZUVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5wSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5ucFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnbnBUaXRsZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5wVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5ucEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGVJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmRhdGVUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2RhdGUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kYXRlVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5kYXRlRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc0hvdXJJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnNIb3VyVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdzdGFydEhvdXInXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zSG91clRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uc0hvdXJFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmSG91cklucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZkhvdXJUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2VuZEhvdXInXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5mSG91clRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZkhvdXJFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlRXZlbnRJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lm5lZHJvcGRvd24sXG4gICAgICAgICAgICAgICAgICAgICdldmVudFR5cGUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5uZWRyb3Bkb3duLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubmFtZUVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIH0gYXMgUHVyb0V2ZW50c0Zvcm1JO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcE1vZGFsSW5mbyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmV2ZXJzZTogYm9vbGVhblxuICAgICk6IFB1cm9Nb2RhbEluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGV4dHJhRGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZXh0cmFEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIHJldmVyc2UsXG4gICAgICAgIH0gYXMgUHVyb01vZGFsSW5mb0k7XG4gICAgfVxuXG4gICAgbWFwSWZyYW1lKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSWZyYW1lSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmcmFtZVVybDogcHJvcHM/LnRleHRzPy5mcmFtZVVybCxcbiAgICAgICAgfSBhcyBQdXJvSWZyYW1lSTtcbiAgICB9XG5cbiAgICBtYXBWZXJ0aWNhbEluZm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9WZXJ0aWNhbEluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3Qgb2ZmZXIgPSBwcm9wcz8uZXZlbnQgPz8gcHJvcHM/Lm9mZmVyPy5bMF07XG4gICAgICAgIGNvbnN0IGhhc0RhdGV0aW1lID0gISFvZmZlcj8uZGF0ZXRpbWU7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uMyxcbiAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICB0YWc6IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24xLFxuICAgICAgICAgICAgZnJvbTogb2ZmZXI/LnRleHRzPy5kZXNkZSxcbiAgICAgICAgICAgIHRvOiBvZmZlcj8udGV4dHM/Lmhhc3RhLFxuICAgICAgICAgICAgcHJpY2U6IE1hdGgubWluKFxuICAgICAgICAgICAgICAgIC4uLihvZmZlcj8ucHJpY2VzID8/IFtdKS5tYXAoKHA6IGFueSkgPT4gTnVtYmVyKHAucHJpY2UpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBvZmZlcj8uY3VycmVuY3ksXG4gICAgICAgICAgICBkaXNjb3VudDogb2ZmZXI/LmRpc2NvdW50LFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShvZmZlcj8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgIHNvY2lhbFRpdGxlOiBwcm9wcz8udGV4dHM/LnNvY2lhbFRpdGxlLFxuICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZSxcbiAgICAgICAgICAgIGV4dHJhVGl0bGU6IHByb3BzPy50ZXh0cz8uZXh0cmFUaXRsZSxcbiAgICAgICAgICAgIGV4dHJhRGVzY3JpcHRpb246ICdleHRyYURlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgIGZpbGVUaXRsZTogcHJvcHM/LnRleHRzPy5maWxlVGl0bGUsXG4gICAgICAgICAgICBpbnRybzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uZGF0ZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaGFzRGF0ZXRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gVXRpbHMuZm9ybWF0RGF0ZShvZmZlci5kYXRldGltZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYCR7cHJvcHM/LnRleHRzPy5kZXNkZX0gJHtVdGlscy5mb3JtYXREYXRlKG9mZmVyPy5hcHBsaWNhdGlvbkZyb20pfSAke3Byb3BzPy50ZXh0cz8uaGFzdGF9ICR7VXRpbHMuZm9ybWF0RGF0ZShvZmZlcj8uYXBwbGljYXRpb25Ubyl9YCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGltZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaGFzRGF0ZXRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7VXRpbHMuZm9ybWF0VGltZShvZmZlci5kYXRldGltZSl9IGhgXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGAke3Byb3BzPy50ZXh0cz8uZGVzZGV9ICR7VXRpbHMuZm9ybWF0VGltZShvZmZlcj8uYXBwbGljYXRpb25Gcm9tKX0gaCAke3Byb3BzPy50ZXh0cz8uaGFzdGF9ICR7VXRpbHMuZm9ybWF0VGltZShvZmZlcj8uYXBwbGljYXRpb25Ubyl9IGhgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogb2ZmZXI/LnRleHRzPy5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGluZm9MaXN0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25UaXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogb2ZmZXI/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpdGVtczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIGFjdHVhY2lvbmVzXG4gICAgICAgICAgICBpbWdMaXN0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ucGVyZm9ybWFuY2VUaXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogb2ZmZXI/LnBlcmZvcm1hbmNlcz8ubWFwKChwZXJmOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwZXJmPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGVyZi50cmFuc2xhdGlvbnM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcGVyZi50cmFuc2xhdGlvbnM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyB2aXAgMVxuICAgICAgICAgICAgbmRJbmZvTGlzdDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnZpcFRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICAgICAgICBpdGVtczogb2ZmZXI/LnByaWNlcz8ubWFwKChvZmZlcjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXIubmFtZUlkZW50aWZpZXIsIC8vdHJhbnNsYXRpb25zXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBvZmZlci5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IG9mZmVyLmN1cnJlbmN5ID8/ICcnLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyB2aXAyXG4gICAgICAgICAgICBpbmZvQnV0dG9uOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udmlwVGl0bGUyLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uMixcbiAgICAgICAgICAgICAgICBidXR0b246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGRmTGluazoge1xuICAgICAgICAgICAgICAgIHVybDogb2ZmZXI/LmZpbGVMaW5rLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAncGRmJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250YWN0TGlua3M6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGBtYWlsdG86JHtvZmZlcj8uY29udGFjdEVtYWlsfWAsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBvZmZlcj8uY29udGFjdEVtYWlsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBgdGVsOiR7b2ZmZXI/LmNvbnRhY3RQaG9uZT8ucmVwbGFjZSgvXFxzKy9nLCAnJyl9YCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IG9mZmVyPy5jb250YWN0UGhvbmUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBidXR0b25Cb29rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGJ1dHRvbkd1ZXN0czogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8uYnV0dG9ucylbMV0sXG4gICAgICAgICAgICBob3RlbE5hbWU6IG9mZmVyPy5ob3RlbHM/LlswXT8ubmFtZUlkZW50aWZpZXIsXG5cbiAgICAgICAgICAgIC8vIGJ1dHRvblN1YnNjcmliZVxuICAgICAgICAgICAgLy8gYnV0dG9uQmFja1xuICAgICAgICB9IGFzIFB1cm9WZXJ0aWNhbEluZm9JO1xuICAgIH1cblxuICAgIG1hcExpc3RMb2dvcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0xpc3RMb2dvc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBsb2dvczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpLFxuICAgICAgICB9IGFzIFB1cm9MaXN0TG9nb3NJO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlIHtcbiAgICBwYXRoOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB0aHVtYm5haWxzOiB7XG4gICAgICAgIDM3NTogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDU0MDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDc2ODogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDgwMDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEwMjQ6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMjgwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB9O1xuICAgIGNvdmVyOiBudW1iZXI7XG4gICAgdGFncz86IGFueVtdO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHByZXRpdGxlPzogc3RyaW5nO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIG5kVGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbGlua3M/OiBhbnlbXTtcbiAgICBidXR0b25zPzogYW55W107XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlUGF0aCB7XG4gICAgb3JpZ2luYWw6IHN0cmluZztcbiAgICB3ZWJwOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50c0FkZG9ucyB7XG4gICAgY29uc3VsdFR5cGU/OiBDb25zdWx0VHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb24ge1xuICAgIGlkPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgY2hpbGRyZW4/OiBGaWx0ZXJPcHRpb247XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbnN1bHRUeXBlIHtcbiAgICBjb25zdWx0VHlwZUlkPzogbnVtYmVyO1xuICAgIElkPzogbnVtYmVyO1xuICAgIGxhbmd1YWdlSWQ/OiBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbn1cbiJdfQ==