@eo-sdk/client 8.0.0-rc.2 → 8.0.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts +5 -0
  2. package/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.d.ts +10 -2
  3. package/app/eo-framework/form-elements/organization/organization.component.d.ts +2 -0
  4. package/app/eo-framework/media/media.component.d.ts +6 -0
  5. package/app/eo-framework/object-state-details/object-state-details.component.d.ts +1 -1
  6. package/app/eo-framework/result-list/result-list.component.d.ts +1 -0
  7. package/app/eo-framework/ui/loading-spinner/loading-spinner.component.d.ts +1 -0
  8. package/app/eo-framework/upload-overlay/upload-overlay.component.d.ts +8 -0
  9. package/assets/_default/api/pdf/web/viewer.js +1 -1
  10. package/assets/_default/config/main.json +1 -1
  11. package/assets/_default/i18n/de.json +9 -4
  12. package/assets/_default/i18n/en.json +14 -9
  13. package/assets/_default/img/yuuvis-agent.png +0 -0
  14. package/assets/_default/svg/ic_book.svg +1 -0
  15. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +5 -4
  16. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
  17. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
  18. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
  19. package/bundles/eo-sdk-client.umd.js +160 -68
  20. package/bundles/eo-sdk-client.umd.js.map +1 -1
  21. package/bundles/eo-sdk-client.umd.min.js +1 -1
  22. package/bundles/eo-sdk-client.umd.min.js.map +1 -1
  23. package/eo-sdk-client.metadata.json +1 -1
  24. package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
  25. package/esm2015/app/eo-framework/app-shell/app-bar/app-bar.component.js +45 -1
  26. package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +3 -3
  27. package/esm2015/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.js +20 -6
  28. package/esm2015/app/eo-framework/form-elements/checkbox/checkbox.component.js +2 -2
  29. package/esm2015/app/eo-framework/form-elements/id-reference/id-reference.component.js +4 -11
  30. package/esm2015/app/eo-framework/form-elements/organization/organization.component.js +5 -11
  31. package/esm2015/app/eo-framework/grid/filters/organization-filter.component.js +3 -3
  32. package/esm2015/app/eo-framework/grid/grid.component.js +1 -1
  33. package/esm2015/app/eo-framework/inbox-details/inbox-details.component.js +2 -2
  34. package/esm2015/app/eo-framework/media/media.component.js +7 -4
  35. package/esm2015/app/eo-framework/object-details/object-details.component.js +2 -1
  36. package/esm2015/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.js +7 -1
  37. package/esm2015/app/eo-framework/object-form/object-form/object-form.component.js +2 -2
  38. package/esm2015/app/eo-framework/object-form/object-form-edit/object-form-edit.component.js +2 -2
  39. package/esm2015/app/eo-framework/object-state-details/object-state-details.component.js +9 -5
  40. package/esm2015/app/eo-framework/process/history/process-history.component.js +2 -2
  41. package/esm2015/app/eo-framework/process/process-file/process-file.component.js +3 -3
  42. package/esm2015/app/eo-framework/result-list/result-list.component.js +7 -3
  43. package/esm2015/app/eo-framework/ui/loading-spinner/loading-spinner.component.js +5 -4
  44. package/esm2015/app/eo-framework/upload-overlay/upload-overlay.component.js +40 -4
  45. package/esm2015/projects/eo-sdk/core/lib/service/bpm/bpm.service.js +2 -2
  46. package/esm2015/projects/eo-sdk/core/lib/service/dms/dms.service.js +4 -3
  47. package/esm2015/projects/eo-sdk/core/lib/util/utils.js +2 -2
  48. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +5 -4
  49. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
  50. package/fesm2015/eo-sdk-client.js +153 -53
  51. package/fesm2015/eo-sdk-client.js.map +1 -1
  52. package/package.json +2 -2
  53. package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +2 -1
  54. package/projects/eo-sdk/core/package.json +1 -1
@@ -245,7 +245,7 @@ export class InboxDetailsComponent extends UnsubscribeOnDestroy {
245
245
  this.selection.find(this.applySelection.out).focus(null);
246
246
  }
247
247
  }
248
- else if (file.id !== this.selectedContentFileId) {
248
+ else {
249
249
  this.selectedContentFileId = file.id;
250
250
  let params = {
251
251
  id: file.id,
@@ -430,4 +430,4 @@ InboxDetailsComponent.propDecorators = {
430
430
  onDmsItemSelected: [{ type: Output }],
431
431
  dataType: [{ type: HostBinding, args: ['attr.data-type',] }]
432
432
  };
433
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3gtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9pbmJveC1kZXRhaWxzL2luYm94LWRldGFpbHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RSxPQUFPLEVBRUwsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxVQUFVLEVBRVYsZUFBZSxFQUNmLGdCQUFnQixFQUVoQixVQUFVLEVBQ1YsWUFBWSxFQUVaLFNBQVMsRUFDVCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsS0FBSyxFQUlOLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTFELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQ3RHLE9BQU8sRUFFTCxnQkFBZ0IsRUFDakIsTUFBTSxxREFBcUQsQ0FBQztBQUk3RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUVqRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQU8vRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsb0JBQW9CO0lBcUU3RCxZQUNVLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLFlBQTBCLEVB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QyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FDckQsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OztZQTVmRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIseXJWQUE2Qzs7YUFFOUM7OztZQXRDQyxVQUFVO1lBWVYsV0FBVztZQUhYLFlBQVk7WUFlWixnQkFBZ0I7WUExQlEsTUFBTTtZQVE5QixZQUFZO1lBSFosZ0JBQWdCO1lBUWhCLGdCQUFnQjtZQVVWLHFCQUFxQjtZQVgzQixvQkFBb0I7Ozt3QkErQm5CLFNBQVMsU0FBQyxTQUFTO3dCQW1DbkIsZUFBZSxTQUFDLGlCQUFpQjt5QkFDakMsZUFBZSxTQUFDLGtCQUFrQjt5QkFJbEMsS0FBSzs2QkFDTCxLQUFLO21CQUVMLEtBQUssU0FBQyxNQUFNO2dDQWtCWixNQUFNO3VCQUVOLFdBQVcsU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NlbGxSZW5kZXJlcn0gZnJvbSAnLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05hdmlnYXRpb25FeHRyYXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICBCcG1TZXJ2aWNlLFxyXG4gIENsaXBib2FyZCxcclxuICBDbGlwYm9hcmRBY3Rpb24sXHJcbiAgQ2xpcGJvYXJkU2VydmljZSxcclxuICBEbXNQYXJhbXMsXHJcbiAgRW5haW9FdmVudCxcclxuICBFdmVudFNlcnZpY2UsXHJcbiAgRmlsZUVudHJ5LFxyXG4gIEluYm94SXRlbSxcclxuICBJbmJveFNlcnZpY2UsXHJcbiAgTm90aWZpY2F0aW9uc1NlcnZpY2UsXHJcbiAgVHJhbnNsYXRlU2VydmljZSxcclxuICBVc2VyU2VydmljZSxcclxuICBVdGlscyxcclxuICBXb3JrSXRlbSxcclxuICBXb3JrSXRlbUFjdGlvbixcclxuICBXb3JrSXRlbUhpc3RvcnlFbnRyeVxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtjYXRjaEVycm9yLCBtYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0VtcHR5U3RhdGV9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFNlbGVjdGlvbkNvbmZpZyxcclxuICBTZWxlY3Rpb25TZXJ2aWNlXHJcbn0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9mb3JtLXN0YXR1cy1jaGFuZ2VkLWV2ZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybU9wdGlvbnN9IGZyb20gJy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtLW9wdGlvbnMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtPYmplY3RGb3JtQ29tcG9uZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1RhYlBsdWdpbkNvbXBvbmVudH0gZnJvbSAnLi4vcGx1Z2lucy9wbHVnaW4uY29tcG9uZW50JztcclxuaW1wb3J0IHtUYWJQYW5lbENvbXBvbmVudH0gZnJvbSAnLi4vdGFiLWNvbnRhaW5lci90YWItcGFuZWwvdGFiLXBhbmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7SW5kZXhEYXRhfSBmcm9tICcuLi91aS9pbmRleGRhdGEtc3VtbWFyeS9pbmRleGRhdGEtc3VtbWFyeS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1Vuc3Vic2NyaWJlT25EZXN0cm95fSBmcm9tICcuLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLWluYm94LWRldGFpbHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmJveC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbmJveC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEluYm94RGV0YWlsc0NvbXBvbmVudCBleHRlbmRzIFVuc3Vic2NyaWJlT25EZXN0cm95XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2JwbUZvcm0nKSBicG1Gb3JtRWw6IE9iamVjdEZvcm1Db21wb25lbnQ7XHJcblxyXG4gIHByaXZhdGUgZGVmYXVsdFdvcmtJdGVtQWN0aW9uOiBXb3JrSXRlbUFjdGlvbjtcclxuXHJcbiAgLy8gSUQgc2V0IGJ5IHBlbmRpbmdDaGFuZ2VzIHNlcnZpY2Ugd2hlbiBlZGl0aW5nIGluZGV4ZGF0YVxyXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcclxuICBwcml2YXRlIHBlbmRpbmdUYXNrSWQ6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBfaXRlbTogSW5ib3hJdGVtO1xyXG4gIHdvcmtJdGVtOiBXb3JrSXRlbTtcclxuICBoaXN0b3J5OiBXb3JrSXRlbUhpc3RvcnlFbnRyeVtdO1xyXG4gIC8vIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgd29yayBpdGVtIGlzIGxvY2tlZCBieSB0aGUgdXNlclxyXG4gIGxvY2tlZDogYm9vbGVhbjtcclxuICAvLyBDT09MLTExNTA2IFxyXG4gIHByZXZlbnRDbGlja1Rocm91Z2g6IGJvb2xlYW47XHJcbiAgLy8gY3VycmVudCBjbGlwYm9hcmQgY29udGVudHNcclxuICBjbGlwYm9hcmQ6IENsaXBib2FyZDtcclxuXHJcbiAgLy8gdXNlZCBmb3IgaGFuZGxpbmcgU1VCU0NSSVBUSU9OUyBhbmQgUkVTVUJNSVNTSU9OU1xyXG4gIHNldHRpbmdzOiB7XHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgYWN0aW9uVGl0bGU6IHN0cmluZztcclxuICB9O1xyXG4gIGZvcm1TdGF0ZTogRm9ybVN0YXR1c0NoYW5nZWRFdmVudDtcclxuICBmb3JtT3B0aW9uczogT2JqZWN0Rm9ybU9wdGlvbnM7XHJcbiAgc2VsZWN0ZWRDb250ZW50RmlsZUlkOiBzdHJpbmc7XHJcbiAgd29ya0l0ZW1JbmRleGRhdGE6IEluZGV4RGF0YTtcclxuICBwZXJmb3JtZXJTaG93OiBib29sZWFuO1xyXG4gIHN1YnN0aXR1dGVTaG93OiBib29sZWFuO1xyXG4gIGFjdGlvblByb2Nlc3Npbmc6IFN1YnNjcmlwdGlvbiB8IGFueSA9IHtjbG9zZWQ6IHRydWV9O1xyXG4gIGluaXRpYWxpemluZzogU3Vic2NyaXB0aW9uIHwgYW55ID0ge2Nsb3NlZDogdHJ1ZX07XHJcbiAgZmlsZXNBZGRpbmc6IFN1YnNjcmlwdGlvbiB8IGFueSA9IHtjbG9zZWQ6IHRydWV9O1xyXG4gIGxvYWRFcnJvcjogYm9vbGVhbjtcclxuXHJcbiAgZXh0ZXJuYWxQYW5lbHMgPSBuZXcgUXVlcnlMaXN0PFRhYlBhbmVsQ29tcG9uZW50PigpO1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiUGFuZWxDb21wb25lbnQpIHRhYlBhbmVsczogUXVlcnlMaXN0PFRhYlBhbmVsQ29tcG9uZW50PjtcclxuICBAQ29udGVudENoaWxkcmVuKFRhYlBsdWdpbkNvbXBvbmVudCkgdGFiUGx1Z2luczogUXVlcnlMaXN0PFxyXG4gICAgVGFiUGx1Z2luQ29tcG9uZW50XHJcbiAgPjtcclxuXHJcbiAgQElucHV0KCkgZW1wdHlTdGF0ZTogRW1wdHlTdGF0ZTtcclxuICBASW5wdXQoKSBhcHBseVNlbGVjdGlvbjogU2VsZWN0aW9uQ29uZmlnO1xyXG5cclxuICBASW5wdXQoJ2l0ZW0nKVxyXG4gIHNldCBpdGVtKGk6IEluYm94SXRlbSkge1xyXG4gICAgdGhpcy5faXRlbSA9IGk7XHJcbiAgICBpZiAoaSkge1xyXG4gICAgICAvLyByZXNldCB2YWx1ZXNcclxuICAgICAgdGhpcy53b3JrSXRlbSA9IG51bGw7XHJcbiAgICAgIHRoaXMuaGlzdG9yeSA9IFtdO1xyXG4gICAgICB0aGlzLmxvY2tlZCA9IGZhbHNlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucHJvY2VzcygpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmZvY3VzKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGl0ZW0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBvbkRtc0l0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RG1zUGFyYW1zPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10eXBlJykgZ2V0IGRhdGFUeXBlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbSA/IHRoaXMuaXRlbS50eXBlIDogJ25vbmUnO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGJwbVNlcnZpY2U6IEJwbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeTogTm90aWZpY2F0aW9uc1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmRlZmF1bHRXb3JrSXRlbUFjdGlvbiA9IHtcclxuICAgICAgICBjb2RlOiAwLFxyXG4gICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLnRhc2suYWN0aW9ucy5kZWZhdWx0LnRpdGxlJyksXHJcbiAgICAgICAgdHlwZTogJ0ZPUldBUkQnXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW0udHlwZSA9PT0gSW5ib3hJdGVtLlRZUEVfQlBNKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlQlBNV29ya0l0ZW0oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXRlbSA9IHRoaXMuX2l0ZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvcm1TdGF0dXNDaGFuZ2VkKGV2dDogRm9ybVN0YXR1c0NoYW5nZWRFdmVudCkge1xyXG4gICAgdGhpcy5mb3JtU3RhdGUgPSBldnQ7XHJcbiAgICBpZiAodGhpcy5mb3JtU3RhdGUuZGlydHkpIHtcclxuICAgICAgdGhpcy5zdGFydFBlbmRpbmcoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGFydFBlbmRpbmcoKSB7XHJcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXHJcbiAgICAvLyBwZW5kaW5nIHRhc2sgd2lsbCBvbmx5IGJlIHN0YXJ0ZWQgb25jZSB1bnRpbCBpdCB3YXMgZmluaXNoZWRcclxuICAgIGlmICghdGhpcy5wZW5kaW5nQ2hhbmdlcy5oYXNQZW5kaW5nVGFzayh0aGlzLnBlbmRpbmdUYXNrSWQgfHwgJyAnKSkge1xyXG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5pc2hQZW5kaW5nKCkge1xyXG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcy5maW5pc2hUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm9jZXNzIHRoZSBjdXJyZW50IGluYm94IGl0ZW1cclxuICAgKi9cclxuICBwcml2YXRlIHByb2Nlc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRFcnJvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5pbml0aWFsaXppbmcuY2xvc2VkID0gZmFsc2U7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLml0ZW0udHlwZSkge1xyXG4gICAgICBjYXNlIEluYm94SXRlbS5UWVBFX0JQTToge1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gdGhpcy5jcmVhdGVCUE1Xb3JrSXRlbSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgSW5ib3hJdGVtLlRZUEVfU1VCU0NSSVBUSU9OOiB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVETVNJdGVtKCdzdWJzY3JpcHRpb24nKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIEluYm94SXRlbS5UWVBFX1JFU1VCTUlTU0lPTjoge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRE1TSXRlbSgncmVzdWJtaXNzaW9uJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZURNU0l0ZW0oZG1zVHlwZSkge1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IHtcclxuICAgICAgZGVzY3JpcHRpb246IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgYGVvLnByb2Nlc3MuZGV0YWlscy50YXNrLiR7ZG1zVHlwZX0uZGVzY3JpcHRpb25gXHJcbiAgICAgICksXHJcbiAgICAgIGFjdGlvblRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgIGBlby5wcm9jZXNzLmRldGFpbHMuYnV0dG9uLiR7ZG1zVHlwZX0ucmVtb3ZlYFxyXG4gICAgICApXHJcbiAgICB9O1xyXG4gICAgdGhpcy5vcGVuV29ya0l0ZW1Db250ZW50KHRoaXMuaXRlbS50YXJnZXQpO1xyXG4gICAgdGhpcy5pbml0aWFsaXppbmcuY2xvc2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkRGVmYXVsdEFjdGlvbklmRW1wdHkgPSAocmVzOiBXb3JrSXRlbSk6IFdvcmtJdGVtID0+IHtcclxuICAgIGlmKCFyZXMuYWN0aW9ucz8ubGVuZ3RoKXtcclxuICAgICAgcmVzLmFjdGlvbnMgPSBbdGhpcy5kZWZhdWx0V29ya0l0ZW1BY3Rpb25dO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcblxyXG4gIC8vIGZvciBpdGVtcyBvZiB0eXBlICdCUE0nIGZldGNoIHdvcmsgaXRlbSBmb3IgbW9yZSBpbmZvcm1hdGlvbnNcclxuICBjcmVhdGVCUE1Xb3JrSXRlbSgpIHtcclxuICAgIHJldHVybiB0aGlzLmJwbVNlcnZpY2VcclxuICAgICAgLmdldFdvcmtJdGVtKHRoaXMuaXRlbS5zb3VyY2VJZCwgdGhpcy5pdGVtLmlkKVxyXG4gICAgICAucGlwZShtYXAodGhpcy5hZGREZWZhdWx0QWN0aW9uSWZFbXB0eSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgIHRoaXMud29ya0l0ZW0gPSByZXM7XHJcbiAgICAgICAgICB0aGlzLnNldHVwV29ya0l0ZW0oKTtcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybU9wdGlvbnMoXHJcbiAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uZm9ybSxcclxuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5kYXRhLFxyXG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtLmFjdGlvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICAvLyBhdXRvLXNlbGVjdCBmaXJzdCBhdHRhY2hlZCBjb250ZW50XHJcbiAgICAgICAgICB0aGlzLm9wZW5Xb3JrSXRlbUNvbnRlbnQoXHJcbiAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uZmlsZS5sZW5ndGggPyB0aGlzLndvcmtJdGVtLmZpbGVbMF0gOiBudWxsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5ub3RpZnkuZXJyb3IoXHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZGV0YWlscy53b3JraXRlbS5sb2FkLmZhaWwnKSxcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICAgICAnZW8ucHJvY2Vzcy5kZXRhaWxzLndvcmtpdGVtLmxvYWQuZmFpbC5kZXNjcmlwdGlvbidcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZvcm1PcHRpb25zKGZvcm0sIGRhdGEsIGFjdGlvbnM6IFdvcmtJdGVtQWN0aW9uW10pIHtcclxuICAgIGlmIChmb3JtKSB7XHJcbiAgICAgIGZvcm0uc2l0dWF0aW9uID0gJ0VESVQnO1xyXG4gICAgICB0aGlzLmZvcm1PcHRpb25zID0ge1xyXG4gICAgICAgIC4uLntcclxuICAgICAgICAgIGZvcm1Nb2RlbDogZm9ybSxcclxuICAgICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgICBhY3Rpb25zOiBhY3Rpb25zID8gdGhpcy50cmFuc2Zvcm1BY3Rpb25zKGFjdGlvbnMpIDoge30sXHJcbiAgICAgICAgICAvLyBmb3JtIHNjcmlwdCB3aWxsIGJlIHByb3ZpZGVkIHdpdGggdGhlIGxpc3Qgb2YgZmlsZSBlbnRyaWVzXHJcbiAgICAgICAgICAvLyBhdHRhY2hlZCB0byB0aGUgY3VycmVudCB3b3JrIGl0ZW1cclxuICAgICAgICAgIG9iamVjdHM6IHRoaXMud29ya0l0ZW0uZmlsZVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudHJhbnNmb3JtQWN0aW9ucyhhY3Rpb25zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlSW5ib3hTYXRlKCkge1xyXG4gICAgdGhpcy5pbmJveFNlcnZpY2UucmVmcmVzaEluYm94U3RhdGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNmb3JtQWN0aW9ucyhhY3Rpb25zKSB7XHJcbiAgICBsZXQgdHJhbnNmb3JtZWRBY3Rpb25zID0ge307XHJcbiAgICBhY3Rpb25zLmZvckVhY2goYSA9PiB7XHJcbiAgICAgIGlmIChhLmZlYXNpYmxlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBhLmZlYXNpYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBhLmZlYXNpYmlsaXR5ID0gdmFsdWUgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBhLmZlYXNpYmxlID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhLmZlYXNpYmxlO1xyXG4gICAgICB9O1xyXG4gICAgICB0cmFuc2Zvcm1lZEFjdGlvbnNbYS5jb2RlLnRvU3RyaW5nKCldID0gYTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkQWN0aW9ucztcclxuICB9XHJcblxyXG4gIC8qIExvY2tzIGEgd29yayBpdGVtIChwZXJzb25hbGl6ZSkgKi9cclxuICBsb2NrV29ya0l0ZW0oKSB7XHJcbiAgICB0aGlzLmFjdGlvblByb2Nlc3NpbmcgPSB0aGlzLmJwbVNlcnZpY2VcclxuICAgICAgLmxvY2tXb3JrSXRlbSh0aGlzLndvcmtJdGVtKVxyXG4gICAgICAucGlwZShtYXAodGhpcy5hZGREZWZhdWx0QWN0aW9uSWZFbXB0eSkpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICBjb25zdCB7YWN0aW9ucywgZGF0YSwgZm9ybX0gPSByZXM7XHJcbiAgICAgICAgdGhpcy53b3JrSXRlbSA9IHJlcztcclxuICAgICAgICB0aGlzLnNldHVwV29ya0l0ZW0oKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1PcHRpb25zKGZvcm0sIGRhdGEsIGFjdGlvbnMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlSW5ib3hTYXRlKCk7XHJcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuYWN0aXZpdHkubG9jay5kZW5pZWQnKSwgdGhpcy53b3JrSXRlbS50aXRsZSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVW4tTG9ja3MgYSB3b3JrIGl0ZW0gKGRlLXBlcnNvbmFsaXplKVxyXG4gICAqL1xyXG4gIHVubG9ja1dvcmtJdGVtKCkge1xyXG4gICAgaWYoIXRoaXMucGVuZGluZ0NoYW5nZXMuY2hlY2soKSl7XHJcbiAgICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuYnBtU2VydmljZVxyXG4gICAgICAgIC51bmxvY2tXb3JrSXRlbSh0aGlzLndvcmtJdGVtKVxyXG4gICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgIHRoaXMud29ya0l0ZW0gPSByZXM7XHJcbiAgICAgICAgICB0aGlzLnNldHVwV29ya0l0ZW0oKTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlSW5ib3hTYXRlKCk7XHJcbiAgICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5hY3Rpdml0eS51bmxvY2suZGVuaWVkJyksIHRoaXMud29ya0l0ZW0udGl0bGUpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIGEgd29yayBpdGVtcyBhY3Rpb24uXHJcbiAgICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIHRvIGJlIGV4ZWN1dGVzXHJcbiAgICovXHJcbiAgZXhlY3V0ZVdvcmtJdGVtQWN0aW9uKGFjdGlvbjogV29ya0l0ZW1BY3Rpb24pIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybVN0YXRlIHx8ICF0aGlzLmZvcm1TdGF0ZS5pbnZhbGlkKSB7XHJcbiAgICAgICAgaWYgKGFjdGlvbi51cmwpIHtcclxuICAgICAgICAgIC8vIHByb2Nlc3MgZXh0ZXJuYWwgYWN0aW9uIGJ5IHNhdmluZyB3b3JrIGl0ZW0gYW5kIHJlZGlyZWN0IHRvIGFjdGlvbnMgdXJsXHJcbiAgICAgICAgICBpZiAodGhpcy5icG1Gb3JtRWwpIHtcclxuICAgICAgICAgICAgdGhpcy5hY3Rpb25Qcm9jZXNzaW5nID0gdGhpcy5zYXZlV29ya0l0ZW0oKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMub3BlbkFjdGlvblVybChhY3Rpb24udXJsKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5BY3Rpb25VcmwoYWN0aW9uLnVybCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh0aGlzLmJwbUZvcm1FbCkge1xyXG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtLmRhdGEgPSB0aGlzLmJwbUZvcm1FbC5nZXRGb3JtRGF0YSgpO1xyXG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHJlbW92ZSBwZW5kaW5nIHRhc2sgYmVjYXVzZSB0aGUgZm9ybSB3aWxsIGJlIGRlc3Ryb3llZCB3aXRob3V0IHNhdmluZ1xyXG4gICAgICAgICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYnBtU2VydmljZVxyXG4gICAgICAgICAgICAuZm9yd2FyZFdvcmtJdGVtKHRoaXMud29ya0l0ZW0sIGFjdGlvbilcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ub3RpZnkuc3VjY2VzcyhcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJwbS5hY3Rpdml0eS5mb3J3YXJkLnN1Y2Nlc3MnKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbS50aXRsZVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJwbS5hY3Rpdml0eS5mb3J3YXJkLmVycm9yJyksIHRoaXMud29ya0l0ZW0udGl0bGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9wZW5BY3Rpb25VcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICh1cmwuc3Vic3RyKDAsIDQpID09PSAnaHR0cCcpIHtcclxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3RzIGEgd29yayBpdGVtcyBmaWxlIGVudHJ5IGFuIGVtaXRzIG9uRG1zSXRlbVNlbGVjdGVkIGV2ZW50LlxyXG4gICAqIEBwYXJhbSBmaWxlIEZpbGVFbnRyeSBlbGVtZW50IHRvIGJlIHNlbGVjdGVkXHJcbiAgICovXHJcbiAgb3BlbldvcmtJdGVtQ29udGVudChmaWxlPzogRmlsZUVudHJ5KSB7XHJcbiAgICBpZiAoIWZpbGUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbnRlbnRGaWxlSWQgPSBudWxsO1xyXG4gICAgICB0aGlzLm9uRG1zSXRlbVNlbGVjdGVkLmVtaXQobnVsbCk7XHJcbiAgICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLm91dCkuZm9jdXMobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoZmlsZS5pZCAhPT0gdGhpcy5zZWxlY3RlZENvbnRlbnRGaWxlSWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbnRlbnRGaWxlSWQgPSBmaWxlLmlkO1xyXG4gICAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICAgIGlkOiBmaWxlLmlkLFxyXG4gICAgICAgIHR5cGU6IGZpbGUudHlwZVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLm9uRG1zSXRlbVNlbGVjdGVkLmVtaXQocGFyYW1zKTtcclxuICAgICAgaWYgKHRoaXMuYXBwbHlTZWxlY3Rpb24pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbi5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24ub3V0KS5mb2N1cyhwYXJhbXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgZmlsZSAoYXR0YWNoZWQgRE1TT2JqZWN0KSBpbiBvYmplY3Qgc3RhdGVcclxuICAgKiBAcGFyYW0gZmlsZVxyXG4gICAqL1xyXG4gIG9wZW5Xb3JrSXRlbUNvbnRlbnRJbkNvbnRleHQoZXZ0KSB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlRW50cnkgPSBldnQuZGF0YSB8fCB7fTtcclxuICAgIGNvbnN0IGZpbGVUeXBlOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7dHlwZTogZmlsZS50eXBlfX07XHJcbiAgICBpZiAoZXZ0LmN0cmxLZXkpIHtcclxuICAgICAgd2luZG93Lm9wZW4oQ2VsbFJlbmRlcmVyLndpbmRvd1VSSSh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnb2JqZWN0JywgZmlsZS5pZF0sIGZpbGVUeXBlKSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvb2JqZWN0JywgZmlsZS5pZF0sIGZpbGVUeXBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMgY2xpcGJvYXJkIGNvbnRlbnQgdG8gdGhlIHdvcmsgaXRlbVxyXG4gICAqL1xyXG4gIGFkZEZyb21DbGlwYm9hcmQoKSB7XHJcbiAgICB0aGlzLmJwbVNlcnZpY2VcclxuICAgICAgLmFkZEZpbGVFbGVtZW50c0Zyb21DbGlwYm9hcmQodGhpcy53b3JrSXRlbSwgdGhpcy5jbGlwYm9hcmQpXHJcbiAgICAgIC5zdWJzY3JpYmUod29ya0l0ZW0gPT4ge1xyXG4gICAgICAgIHRoaXMud29ya0l0ZW0gPSB3b3JrSXRlbTtcclxuICAgICAgICB0aGlzLmNsaXBib2FyZFNlcnZpY2UuY2xlYXIoKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCkge1xyXG4gICAgICAgICAgLy8gb3BlbiBmaXJzdCBpdGVtIHdoZW4gbm90aGluZyBpcyBzZWxlY3RlZFxyXG4gICAgICAgICAgdGhpcy5vcGVuV29ya0l0ZW1Db250ZW50KHRoaXMud29ya0l0ZW0uZmlsZVswXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLmZpbGUubm90aWZpY2F0aW9uLmVycm9yJyksIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24uYWRkLm1lc3NhZ2UnKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGEgZmlsZSBlbnRyeSBmcm9tIHRoZSB3b3JrIGl0ZW1zIGZpbGVcclxuICAgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSBlbnRyeSB0byBiZSByZW1vdmVkXHJcbiAgICogQHBhcmFtIGV2dCBUaGUgY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICByZW1vdmVXb3JrSXRlbUNvbnRlbnQoZXZ0KSB7XHJcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmIChldnQuZGF0YSkge1xyXG4gICAgICBjb25zdCBmaWxlOiBGaWxlRW50cnkgPSBldnQuZGF0YTtcclxuICAgICAgdGhpcy5icG1TZXJ2aWNlXHJcbiAgICAgICAgLnJlbW92ZUZpbGVFbGVtZW50KHRoaXMud29ya0l0ZW0ucHJvY2Vzc0lkLCB0aGlzLndvcmtJdGVtLmlkLCBmaWxlLmlkKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy53b3JrSXRlbS5maWxlID0gdGhpcy53b3JrSXRlbS5maWxlLmZpbHRlcihmID0+IGYuaWQgIT09IGZpbGUuaWQpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZW50RmlsZUlkID09PSBmaWxlLmlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbldvcmtJdGVtQ29udGVudChcclxuICAgICAgICAgICAgICB0aGlzLndvcmtJdGVtLmZpbGUubGVuZ3RoID8gdGhpcy53b3JrSXRlbS5maWxlWzBdIDogbnVsbFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24ucmVtb3ZlJyksIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24ucmVtb3ZlLm1lc3NhZ2UnKSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZSB0aGUgd29yayBpdGVtcyBmb3JtIGRhdGFcclxuICAgKi9cclxuICBzYXZlV29ya0l0ZW1EYXRhKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmZvcm1TdGF0ZSAmJiAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCAmJiB0aGlzLmZvcm1TdGF0ZS5kaXJ0eSkge1xyXG4gICAgICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuc2F2ZVdvcmtJdGVtKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHByZXBhcmVOZXdXb3JrSXRlbSh3b3JrSXRlbTogV29ya0l0ZW0pOiBib29sZWFuIHtcclxuICAgIHRoaXMud29ya0l0ZW0gPSB3b3JrSXRlbTtcclxuICAgIGNvbnN0IHthY3Rpb25zLCBmb3JtLCBkYXRhfSA9IHRoaXMud29ya0l0ZW07XHJcbiAgICB0aGlzLnNldHVwV29ya0l0ZW0oKTtcclxuICAgIHRoaXMuc2V0Rm9ybU9wdGlvbnMoZm9ybSwgZGF0YSwgYWN0aW9ucyk7XHJcbiAgICB0aGlzLm5vdGlmeS5zdWNjZXNzKFxyXG4gICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5icG0uYWN0aXZpdHkuaW5kZXhkYXRhLnNhdmUuc3VjY2VzcycpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYXZlcyB0aGUgY3VycmVudCB3b3JrIGl0ZW1cclxuICAgKi9cclxuICBwcml2YXRlIHNhdmVXb3JrSXRlbSgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy53b3JrSXRlbS5kYXRhID0gdGhpcy5icG1Gb3JtRWwuZ2V0Rm9ybURhdGEoKTtcclxuICAgIHJldHVybiB0aGlzLmJwbVNlcnZpY2Uuc2F2ZVdvcmtJdGVtKHRoaXMud29ya0l0ZW0pLnBpcGUoXHJcbiAgICAgIG1hcCh0aGlzLmFkZERlZmF1bHRBY3Rpb25JZkVtcHR5KSxcclxuICAgICAgbWFwKHdvcmtJdGVtID0+IHRoaXMucHJlcGFyZU5ld1dvcmtJdGVtKHdvcmtJdGVtKSksXHJcbiAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgVXRpbHMuY2F0Y2goXHJcbiAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYnBtLmFjdGl2aXR5LmluZGV4ZGF0YS5zYXZlLmVycm9yJylcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIHRoZSBjdXJyZW50IGl0ZW0gZnJvbSB0aGUgaW5ib3guXHJcbiAgICovXHJcbiAgY29uZmlybUluYm94SXRlbSgpIHtcclxuICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuaW5ib3hTZXJ2aWNlXHJcbiAgICAgIC5yZW1vdmVJdGVtKHRoaXMuaXRlbSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnkuc3VjY2VzcyhcclxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmluYm94LmFjdGl2aXR5LmNvbmZpcm0uc3VjY2VzcycpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9DT05GSVJNRUQsIHRoaXMuaXRlbSk7XHJcbiAgICAgICAgdGhpcy5pbmJveFNlcnZpY2UucmVmcmVzaEluYm94U3RhdGUoKTtcclxuICAgICAgfSwgVXRpbHMuY2F0Y2gobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5pdGVtLnJlbW92ZS5mYWlsJykpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdXAgc3RhdGUgYW5kIGRhdGEgZm9yIHRoZSBjdXJyZW50IHdvcmsgaXRlbS5cclxuICAgKi9cclxuICBwcml2YXRlIHNldHVwV29ya0l0ZW0oKSB7XHJcbiAgICB0aGlzLmxvY2tlZCA9IHRoaXMud29ya0l0ZW0uc3RhdGUgPT09ICdQRVJTT04nO1xyXG4gICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSBmYWxzZTtcclxuICAgIH0sIDEwMDApXHJcbiAgICBjb25zdCB7Zm9ybSwgZGF0YX0gPSB0aGlzLndvcmtJdGVtO1xyXG4gICAgY29uc3Qgd29ya0l0ZW0gPSB7Zm9ybSwgZGF0YX07XHJcbiAgICB0aGlzLndvcmtJdGVtSW5kZXhkYXRhID0gZm9ybSAmJiBkYXRhID8gd29ya0l0ZW0gOiBudWxsO1xyXG5cclxuICAgIC8vIGZldGNoIGhpc3RvcnlcclxuICAgIHRoaXMuYnBtU2VydmljZVxyXG4gICAgICAuZ2V0UHJvY2Vzc0hpc3RvcnkodGhpcy53b3JrSXRlbS5wcm9jZXNzSWQpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtLmVkaXRvcikge1xyXG4gICAgICAgICAgICBpdGVtLmRhdGEuaW1hZ2UgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbWFnZVVyaShpdGVtLmVkaXRvci5pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gc29ydCBieSBudW1iZXIgYmVjYXVzZSB0aGlzIGlzIHRoZSBhdXRvLWluY3JlbWVudGluZ1xyXG4gICAgICAgIC8vIGluZGV4IG9mIGFkZGVkIGhpc3RvcnkgZW50cmllc1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeSA9IHJlcy5zb3J0KChhLCBiKSA9PiBiLm51bWJlciAtIGEubnVtYmVyKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Q29kZShpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uY29kZTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJZChpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SW5kZXgoaW5kZXgsIGl0ZW0pIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gc3Vic2NyaWJlIGZvciBjaGFuZ2VzIHRvIHRoZSBjbGlwYm9hcmQgdG8gZW5hYmxlIGFkZGluZyBjb250ZW50cyB0byB0aGUgd29yayBpdGVtXHJcbiAgICB0aGlzLmNsaXBib2FyZFNlcnZpY2UuY2xpcGJvYXJkJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoY2xpcGJvYXJkOiBDbGlwYm9hcmQpID0+XHJcbiAgICAgICAgICAodGhpcy5jbGlwYm9hcmQgPVxyXG4gICAgICAgICAgICBjbGlwYm9hcmQuYWN0aW9uID09PSBDbGlwYm9hcmRBY3Rpb24uQ09QWSA/IGNsaXBib2FyZCA6IG51bGwpXHJcbiAgICAgICk7XHJcbiAgICAvLyBjb21wb25lbnQgaXMgb25seSBpbnRlcmVzdGVkIGluIGNvcGllZCBpdGVtc1xyXG5cclxuICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uXHJcbiAgICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5pbilcclxuICAgICAgICAuZm9jdXMkLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoaXRlbTogYW55KSA9PiAodGhpcy5pdGVtID0gaXRlbSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgbGV0IHBhbmVscyA9IHRoaXMudGFiUGFuZWxzLnRvQXJyYXkoKTtcclxuICAgIHRoaXMudGFiUGx1Z2lucy5mb3JFYWNoKFxyXG4gICAgICBwID0+IChwYW5lbHMgPSBwYW5lbHMuY29uY2F0KHAudGFiUGFuZWxzLnRvQXJyYXkoKSkpXHJcbiAgICApO1xyXG4gICAgdGhpcy5leHRlcm5hbFBhbmVscy5yZXNldChwYW5lbHMpO1xyXG4gIH1cclxufVxyXG4iXX0=
433
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3gtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9pbmJveC1kZXRhaWxzL2luYm94LWRldGFpbHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RSxPQUFPLEVBRUwsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxVQUFVLEVBRVYsZUFBZSxFQUNmLGdCQUFnQixFQUVoQixVQUFVLEVBQ1YsWUFBWSxFQUVaLFNBQVMsRUFDVCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsS0FBSyxFQUlOLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTFELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQ3RHLE9BQU8sRUFFTCxnQkFBZ0IsRUFDakIsTUFBTSxxREFBcUQsQ0FBQztBQUk3RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUVqRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQU8vRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsb0JBQW9CO0lBcUU3RCxZQUNVLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLFlBQTBCLEVB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QUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FDckQsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OztZQTVmRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIseXJWQUE2Qzs7YUFFOUM7OztZQXRDQyxVQUFVO1lBWVYsV0FBVztZQUhYLFlBQVk7WUFlWixnQkFBZ0I7WUExQlEsTUFBTTtZQVE5QixZQUFZO1lBSFosZ0JBQWdCO1lBUWhCLGdCQUFnQjtZQVVWLHFCQUFxQjtZQVgzQixvQkFBb0I7Ozt3QkErQm5CLFNBQVMsU0FBQyxTQUFTO3dCQW1DbkIsZUFBZSxTQUFDLGlCQUFpQjt5QkFDakMsZUFBZSxTQUFDLGtCQUFrQjt5QkFJbEMsS0FBSzs2QkFDTCxLQUFLO21CQUVMLEtBQUssU0FBQyxNQUFNO2dDQWtCWixNQUFNO3VCQUVOLFdBQVcsU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NlbGxSZW5kZXJlcn0gZnJvbSAnLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05hdmlnYXRpb25FeHRyYXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICBCcG1TZXJ2aWNlLFxyXG4gIENsaXBib2FyZCxcclxuICBDbGlwYm9hcmRBY3Rpb24sXHJcbiAgQ2xpcGJvYXJkU2VydmljZSxcclxuICBEbXNQYXJhbXMsXHJcbiAgRW5haW9FdmVudCxcclxuICBFdmVudFNlcnZpY2UsXHJcbiAgRmlsZUVudHJ5LFxyXG4gIEluYm94SXRlbSxcclxuICBJbmJveFNlcnZpY2UsXHJcbiAgTm90aWZpY2F0aW9uc1NlcnZpY2UsXHJcbiAgVHJhbnNsYXRlU2VydmljZSxcclxuICBVc2VyU2VydmljZSxcclxuICBVdGlscyxcclxuICBXb3JrSXRlbSxcclxuICBXb3JrSXRlbUFjdGlvbixcclxuICBXb3JrSXRlbUhpc3RvcnlFbnRyeVxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtjYXRjaEVycm9yLCBtYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0VtcHR5U3RhdGV9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFNlbGVjdGlvbkNvbmZpZyxcclxuICBTZWxlY3Rpb25TZXJ2aWNlXHJcbn0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9mb3JtLXN0YXR1cy1jaGFuZ2VkLWV2ZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybU9wdGlvbnN9IGZyb20gJy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtLW9wdGlvbnMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtPYmplY3RGb3JtQ29tcG9uZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1RhYlBsdWdpbkNvbXBvbmVudH0gZnJvbSAnLi4vcGx1Z2lucy9wbHVnaW4uY29tcG9uZW50JztcclxuaW1wb3J0IHtUYWJQYW5lbENvbXBvbmVudH0gZnJvbSAnLi4vdGFiLWNvbnRhaW5lci90YWItcGFuZWwvdGFiLXBhbmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7SW5kZXhEYXRhfSBmcm9tICcuLi91aS9pbmRleGRhdGEtc3VtbWFyeS9pbmRleGRhdGEtc3VtbWFyeS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1Vuc3Vic2NyaWJlT25EZXN0cm95fSBmcm9tICcuLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLWluYm94LWRldGFpbHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmJveC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbmJveC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEluYm94RGV0YWlsc0NvbXBvbmVudCBleHRlbmRzIFVuc3Vic2NyaWJlT25EZXN0cm95XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2JwbUZvcm0nKSBicG1Gb3JtRWw6IE9iamVjdEZvcm1Db21wb25lbnQ7XHJcblxyXG4gIHByaXZhdGUgZGVmYXVsdFdvcmtJdGVtQWN0aW9uOiBXb3JrSXRlbUFjdGlvbjtcclxuXHJcbiAgLy8gSUQgc2V0IGJ5IHBlbmRpbmdDaGFuZ2VzIHNlcnZpY2Ugd2hlbiBlZGl0aW5nIGluZGV4ZGF0YVxyXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcclxuICBwcml2YXRlIHBlbmRpbmdUYXNrSWQ6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBfaXRlbTogSW5ib3hJdGVtO1xyXG4gIHdvcmtJdGVtOiBXb3JrSXRlbTtcclxuICBoaXN0b3J5OiBXb3JrSXRlbUhpc3RvcnlFbnRyeVtdO1xyXG4gIC8vIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgd29yayBpdGVtIGlzIGxvY2tlZCBieSB0aGUgdXNlclxyXG4gIGxvY2tlZDogYm9vbGVhbjtcclxuICAvLyBDT09MLTExNTA2XHJcbiAgcHJldmVudENsaWNrVGhyb3VnaDogYm9vbGVhbjtcclxuICAvLyBjdXJyZW50IGNsaXBib2FyZCBjb250ZW50c1xyXG4gIGNsaXBib2FyZDogQ2xpcGJvYXJkO1xyXG5cclxuICAvLyB1c2VkIGZvciBoYW5kbGluZyBTVUJTQ1JJUFRJT05TIGFuZCBSRVNVQk1JU1NJT05TXHJcbiAgc2V0dGluZ3M6IHtcclxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgICBhY3Rpb25UaXRsZTogc3RyaW5nO1xyXG4gIH07XHJcbiAgZm9ybVN0YXRlOiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50O1xyXG4gIGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucztcclxuICBzZWxlY3RlZENvbnRlbnRGaWxlSWQ6IHN0cmluZztcclxuICB3b3JrSXRlbUluZGV4ZGF0YTogSW5kZXhEYXRhO1xyXG4gIHBlcmZvcm1lclNob3c6IGJvb2xlYW47XHJcbiAgc3Vic3RpdHV0ZVNob3c6IGJvb2xlYW47XHJcbiAgYWN0aW9uUHJvY2Vzc2luZzogU3Vic2NyaXB0aW9uIHwgYW55ID0ge2Nsb3NlZDogdHJ1ZX07XHJcbiAgaW5pdGlhbGl6aW5nOiBTdWJzY3JpcHRpb24gfCBhbnkgPSB7Y2xvc2VkOiB0cnVlfTtcclxuICBmaWxlc0FkZGluZzogU3Vic2NyaXB0aW9uIHwgYW55ID0ge2Nsb3NlZDogdHJ1ZX07XHJcbiAgbG9hZEVycm9yOiBib29sZWFuO1xyXG5cclxuICBleHRlcm5hbFBhbmVscyA9IG5ldyBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+KCk7XHJcbiAgQENvbnRlbnRDaGlsZHJlbihUYWJQYW5lbENvbXBvbmVudCkgdGFiUGFuZWxzOiBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+O1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiUGx1Z2luQ29tcG9uZW50KSB0YWJQbHVnaW5zOiBRdWVyeUxpc3Q8XHJcbiAgICBUYWJQbHVnaW5Db21wb25lbnRcclxuICA+O1xyXG5cclxuICBASW5wdXQoKSBlbXB0eVN0YXRlOiBFbXB0eVN0YXRlO1xyXG4gIEBJbnB1dCgpIGFwcGx5U2VsZWN0aW9uOiBTZWxlY3Rpb25Db25maWc7XHJcblxyXG4gIEBJbnB1dCgnaXRlbScpXHJcbiAgc2V0IGl0ZW0oaTogSW5ib3hJdGVtKSB7XHJcbiAgICB0aGlzLl9pdGVtID0gaTtcclxuICAgIGlmIChpKSB7XHJcbiAgICAgIC8vIHJlc2V0IHZhbHVlc1xyXG4gICAgICB0aGlzLndvcmtJdGVtID0gbnVsbDtcclxuICAgICAgdGhpcy5oaXN0b3J5ID0gW107XHJcbiAgICAgIHRoaXMubG9ja2VkID0gZmFsc2U7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wcm9jZXNzKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLm91dCkuZm9jdXMobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaXRlbSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pdGVtO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG9uRG1zSXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEbXNQYXJhbXM+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXR5cGUnKSBnZXQgZGF0YVR5cGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtID8gdGhpcy5pdGVtLnR5cGUgOiAnbm9uZSc7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYnBtU2VydmljZTogQnBtU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbmJveFNlcnZpY2U6IEluYm94U2VydmljZSxcclxuICAgIHByaXZhdGUgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNsaXBib2FyZFNlcnZpY2U6IENsaXBib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZ5OiBOb3RpZmljYXRpb25zU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZGVmYXVsdFdvcmtJdGVtQWN0aW9uID0ge1xyXG4gICAgICAgIGNvZGU6IDAsXHJcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MudGFzay5hY3Rpb25zLmRlZmF1bHQudGl0bGUnKSxcclxuICAgICAgICB0eXBlOiAnRk9SV0FSRCdcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbS50eXBlID09PSBJbmJveEl0ZW0uVFlQRV9CUE0pIHtcclxuICAgICAgdGhpcy5jcmVhdGVCUE1Xb3JrSXRlbSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pdGVtID0gdGhpcy5faXRlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRm9ybVN0YXR1c0NoYW5nZWQoZXZ0OiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50KSB7XHJcbiAgICB0aGlzLmZvcm1TdGF0ZSA9IGV2dDtcclxuICAgIGlmICh0aGlzLmZvcm1TdGF0ZS5kaXJ0eSkge1xyXG4gICAgICB0aGlzLnN0YXJ0UGVuZGluZygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXJ0UGVuZGluZygpIHtcclxuICAgIC8vIGJlY2F1c2UgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZXZlcnkgdGltZSB0aGUgZm9ybSBzdGF0dXMgY2hhbmdlcyxcclxuICAgIC8vIHBlbmRpbmcgdGFzayB3aWxsIG9ubHkgYmUgc3RhcnRlZCBvbmNlIHVudGlsIGl0IHdhcyBmaW5pc2hlZFxyXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XHJcbiAgICAgIHRoaXMucGVuZGluZ1Rhc2tJZCA9IHRoaXMucGVuZGluZ0NoYW5nZXMuc3RhcnRUYXNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmlzaFBlbmRpbmcoKSB7XHJcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb2Nlc3MgdGhlIGN1cnJlbnQgaW5ib3ggaXRlbVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcHJvY2VzcygpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZEVycm9yID0gZmFsc2U7XHJcbiAgICB0aGlzLmluaXRpYWxpemluZy5jbG9zZWQgPSBmYWxzZTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuaXRlbS50eXBlKSB7XHJcbiAgICAgIGNhc2UgSW5ib3hJdGVtLlRZUEVfQlBNOiB7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXppbmcgPSB0aGlzLmNyZWF0ZUJQTVdvcmtJdGVtKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBJbmJveEl0ZW0uVFlQRV9TVUJTQ1JJUFRJT046IHtcclxuICAgICAgICB0aGlzLmNyZWF0ZURNU0l0ZW0oJ3N1YnNjcmlwdGlvbicpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgSW5ib3hJdGVtLlRZUEVfUkVTVUJNSVNTSU9OOiB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVETVNJdGVtKCdyZXN1Ym1pc3Npb24nKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRE1TSXRlbShkbXNUeXBlKSB7XHJcbiAgICB0aGlzLnNldHRpbmdzID0ge1xyXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICBgZW8ucHJvY2Vzcy5kZXRhaWxzLnRhc2suJHtkbXNUeXBlfS5kZXNjcmlwdGlvbmBcclxuICAgICAgKSxcclxuICAgICAgYWN0aW9uVGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgYGVvLnByb2Nlc3MuZGV0YWlscy5idXR0b24uJHtkbXNUeXBlfS5yZW1vdmVgXHJcbiAgICAgIClcclxuICAgIH07XHJcbiAgICB0aGlzLm9wZW5Xb3JrSXRlbUNvbnRlbnQodGhpcy5pdGVtLnRhcmdldCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemluZy5jbG9zZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGREZWZhdWx0QWN0aW9uSWZFbXB0eSA9IChyZXM6IFdvcmtJdGVtKTogV29ya0l0ZW0gPT4ge1xyXG4gICAgaWYoIXJlcy5hY3Rpb25zPy5sZW5ndGgpe1xyXG4gICAgICByZXMuYWN0aW9ucyA9IFt0aGlzLmRlZmF1bHRXb3JrSXRlbUFjdGlvbl07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIGl0ZW1zIG9mIHR5cGUgJ0JQTScgZmV0Y2ggd29yayBpdGVtIGZvciBtb3JlIGluZm9ybWF0aW9uc1xyXG4gIGNyZWF0ZUJQTVdvcmtJdGVtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYnBtU2VydmljZVxyXG4gICAgICAuZ2V0V29ya0l0ZW0odGhpcy5pdGVtLnNvdXJjZUlkLCB0aGlzLml0ZW0uaWQpXHJcbiAgICAgIC5waXBlKG1hcCh0aGlzLmFkZERlZmF1bHRBY3Rpb25JZkVtcHR5KSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy53b3JrSXRlbSA9IHJlcztcclxuICAgICAgICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtT3B0aW9ucyhcclxuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5mb3JtLFxyXG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtLmRhdGEsXHJcbiAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uYWN0aW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIC8vIGF1dG8tc2VsZWN0IGZpcnN0IGF0dGFjaGVkIGNvbnRlbnRcclxuICAgICAgICAgIHRoaXMub3BlbldvcmtJdGVtQ29udGVudChcclxuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5maWxlLmxlbmd0aCA/IHRoaXMud29ya0l0ZW0uZmlsZVswXSA6IG51bGxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmeS5lcnJvcihcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5kZXRhaWxzLndvcmtpdGVtLmxvYWQuZmFpbCcpLFxyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgICdlby5wcm9jZXNzLmRldGFpbHMud29ya2l0ZW0ubG9hZC5mYWlsLmRlc2NyaXB0aW9uJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Rm9ybU9wdGlvbnMoZm9ybSwgZGF0YSwgYWN0aW9uczogV29ya0l0ZW1BY3Rpb25bXSkge1xyXG4gICAgaWYgKGZvcm0pIHtcclxuICAgICAgZm9ybS5zaXR1YXRpb24gPSAnRURJVCc7XHJcbiAgICAgIHRoaXMuZm9ybU9wdGlvbnMgPSB7XHJcbiAgICAgICAgLi4ue1xyXG4gICAgICAgICAgZm9ybU1vZGVsOiBmb3JtLFxyXG4gICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgIGFjdGlvbnM6IGFjdGlvbnMgPyB0aGlzLnRyYW5zZm9ybUFjdGlvbnMoYWN0aW9ucykgOiB7fSxcclxuICAgICAgICAgIC8vIGZvcm0gc2NyaXB0IHdpbGwgYmUgcHJvdmlkZWQgd2l0aCB0aGUgbGlzdCBvZiBmaWxlIGVudHJpZXNcclxuICAgICAgICAgIC8vIGF0dGFjaGVkIHRvIHRoZSBjdXJyZW50IHdvcmsgaXRlbVxyXG4gICAgICAgICAgb2JqZWN0czogdGhpcy53b3JrSXRlbS5maWxlXHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50cmFuc2Zvcm1BY3Rpb25zKGFjdGlvbnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVJbmJveFNhdGUoKSB7XHJcbiAgICB0aGlzLmluYm94U2VydmljZS5yZWZyZXNoSW5ib3hTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1BY3Rpb25zKGFjdGlvbnMpIHtcclxuICAgIGxldCB0cmFuc2Zvcm1lZEFjdGlvbnMgPSB7fTtcclxuICAgIGFjdGlvbnMuZm9yRWFjaChhID0+IHtcclxuICAgICAgaWYgKGEuZmVhc2libGUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGEuZmVhc2libGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGEuZmVhc2liaWxpdHkgPSB2YWx1ZSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGEuZmVhc2libGUgPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGEuZmVhc2libGU7XHJcbiAgICAgIH07XHJcbiAgICAgIHRyYW5zZm9ybWVkQWN0aW9uc1thLmNvZGUudG9TdHJpbmcoKV0gPSBhO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdHJhbnNmb3JtZWRBY3Rpb25zO1xyXG4gIH1cclxuXHJcbiAgLyogTG9ja3MgYSB3b3JrIGl0ZW0gKHBlcnNvbmFsaXplKSAqL1xyXG4gIGxvY2tXb3JrSXRlbSgpIHtcclxuICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuYnBtU2VydmljZVxyXG4gICAgICAubG9ja1dvcmtJdGVtKHRoaXMud29ya0l0ZW0pXHJcbiAgICAgIC5waXBlKG1hcCh0aGlzLmFkZERlZmF1bHRBY3Rpb25JZkVtcHR5KSlcclxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIGNvbnN0IHthY3Rpb25zLCBkYXRhLCBmb3JtfSA9IHJlcztcclxuICAgICAgICB0aGlzLndvcmtJdGVtID0gcmVzO1xyXG4gICAgICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybU9wdGlvbnMoZm9ybSwgZGF0YSwgYWN0aW9ucyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcclxuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5hY3Rpdml0eS5sb2NrLmRlbmllZCcpLCB0aGlzLndvcmtJdGVtLnRpdGxlKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbi1Mb2NrcyBhIHdvcmsgaXRlbSAoZGUtcGVyc29uYWxpemUpXHJcbiAgICovXHJcbiAgdW5sb2NrV29ya0l0ZW0oKSB7XHJcbiAgICBpZighdGhpcy5wZW5kaW5nQ2hhbmdlcy5jaGVjaygpKXtcclxuICAgICAgdGhpcy5hY3Rpb25Qcm9jZXNzaW5nID0gdGhpcy5icG1TZXJ2aWNlXHJcbiAgICAgICAgLnVubG9ja1dvcmtJdGVtKHRoaXMud29ya0l0ZW0pXHJcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy53b3JrSXRlbSA9IHJlcztcclxuICAgICAgICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcclxuICAgICAgICB9LCBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLmFjdGl2aXR5LnVubG9jay5kZW5pZWQnKSwgdGhpcy53b3JrSXRlbS50aXRsZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYSB3b3JrIGl0ZW1zIGFjdGlvbi5cclxuICAgKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gdG8gYmUgZXhlY3V0ZXNcclxuICAgKi9cclxuICBleGVjdXRlV29ya0l0ZW1BY3Rpb24oYWN0aW9uOiBXb3JrSXRlbUFjdGlvbikge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5mb3JtU3RhdGUgfHwgIXRoaXMuZm9ybVN0YXRlLmludmFsaWQpIHtcclxuICAgICAgICBpZiAoYWN0aW9uLnVybCkge1xyXG4gICAgICAgICAgLy8gcHJvY2VzcyBleHRlcm5hbCBhY3Rpb24gYnkgc2F2aW5nIHdvcmsgaXRlbSBhbmQgcmVkaXJlY3QgdG8gYWN0aW9ucyB1cmxcclxuICAgICAgICAgIGlmICh0aGlzLmJwbUZvcm1FbCkge1xyXG4gICAgICAgICAgICB0aGlzLmFjdGlvblByb2Nlc3NpbmcgPSB0aGlzLnNhdmVXb3JrSXRlbSgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcGVuQWN0aW9uVXJsKGFjdGlvbi51cmwpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbkFjdGlvblVybChhY3Rpb24udXJsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMuYnBtRm9ybUVsKSB7XHJcbiAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uZGF0YSA9IHRoaXMuYnBtRm9ybUVsLmdldEZvcm1EYXRhKCk7XHJcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHBlbmRpbmcgdGFzayBiZWNhdXNlIHRoZSBmb3JtIHdpbGwgYmUgZGVzdHJveWVkIHdpdGhvdXQgc2F2aW5nXHJcbiAgICAgICAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5icG1TZXJ2aWNlXHJcbiAgICAgICAgICAgIC5mb3J3YXJkV29ya0l0ZW0odGhpcy53b3JrSXRlbSwgYWN0aW9uKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm5vdGlmeS5zdWNjZXNzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYnBtLmFjdGl2aXR5LmZvcndhcmQuc3VjY2VzcycpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtLnRpdGxlXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYnBtLmFjdGl2aXR5LmZvcndhcmQuZXJyb3InKSwgdGhpcy53b3JrSXRlbS50aXRsZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3BlbkFjdGlvblVybCh1cmw6IHN0cmluZykge1xyXG4gICAgaWYgKHVybC5zdWJzdHIoMCwgNCkgPT09ICdodHRwJykge1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdHMgYSB3b3JrIGl0ZW1zIGZpbGUgZW50cnkgYW4gZW1pdHMgb25EbXNJdGVtU2VsZWN0ZWQgZXZlbnQuXHJcbiAgICogQHBhcmFtIGZpbGUgRmlsZUVudHJ5IGVsZW1lbnQgdG8gYmUgc2VsZWN0ZWRcclxuICAgKi9cclxuICBvcGVuV29ya0l0ZW1Db250ZW50KGZpbGU/OiBGaWxlRW50cnkpIHtcclxuICAgIGlmICghZmlsZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCA9IG51bGw7XHJcbiAgICAgIHRoaXMub25EbXNJdGVtU2VsZWN0ZWQuZW1pdChudWxsKTtcclxuICAgICAgaWYgKHRoaXMuYXBwbHlTZWxlY3Rpb24pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbi5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24ub3V0KS5mb2N1cyhudWxsKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbnRlbnRGaWxlSWQgPSBmaWxlLmlkO1xyXG4gICAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICAgIGlkOiBmaWxlLmlkLFxyXG4gICAgICAgIHR5cGU6IGZpbGUudHlwZVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLm9uRG1zSXRlbVNlbGVjdGVkLmVtaXQocGFyYW1zKTtcclxuICAgICAgaWYgKHRoaXMuYXBwbHlTZWxlY3Rpb24pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbi5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24ub3V0KS5mb2N1cyhwYXJhbXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgZmlsZSAoYXR0YWNoZWQgRE1TT2JqZWN0KSBpbiBvYmplY3Qgc3RhdGVcclxuICAgKiBAcGFyYW0gZmlsZVxyXG4gICAqL1xyXG4gIG9wZW5Xb3JrSXRlbUNvbnRlbnRJbkNvbnRleHQoZXZ0KSB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlRW50cnkgPSBldnQuZGF0YSB8fCB7fTtcclxuICAgIGNvbnN0IGZpbGVUeXBlOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7dHlwZTogZmlsZS50eXBlfX07XHJcbiAgICBpZiAoZXZ0LmN0cmxLZXkpIHtcclxuICAgICAgd2luZG93Lm9wZW4oQ2VsbFJlbmRlcmVyLndpbmRvd1VSSSh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnb2JqZWN0JywgZmlsZS5pZF0sIGZpbGVUeXBlKSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvb2JqZWN0JywgZmlsZS5pZF0sIGZpbGVUeXBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMgY2xpcGJvYXJkIGNvbnRlbnQgdG8gdGhlIHdvcmsgaXRlbVxyXG4gICAqL1xyXG4gIGFkZEZyb21DbGlwYm9hcmQoKSB7XHJcbiAgICB0aGlzLmJwbVNlcnZpY2VcclxuICAgICAgLmFkZEZpbGVFbGVtZW50c0Zyb21DbGlwYm9hcmQodGhpcy53b3JrSXRlbSwgdGhpcy5jbGlwYm9hcmQpXHJcbiAgICAgIC5zdWJzY3JpYmUod29ya0l0ZW0gPT4ge1xyXG4gICAgICAgIHRoaXMud29ya0l0ZW0gPSB3b3JrSXRlbTtcclxuICAgICAgICB0aGlzLmNsaXBib2FyZFNlcnZpY2UuY2xlYXIoKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCkge1xyXG4gICAgICAgICAgLy8gb3BlbiBmaXJzdCBpdGVtIHdoZW4gbm90aGluZyBpcyBzZWxlY3RlZFxyXG4gICAgICAgICAgdGhpcy5vcGVuV29ya0l0ZW1Db250ZW50KHRoaXMud29ya0l0ZW0uZmlsZVswXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLmZpbGUubm90aWZpY2F0aW9uLmVycm9yJyksIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24uYWRkLm1lc3NhZ2UnKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGEgZmlsZSBlbnRyeSBmcm9tIHRoZSB3b3JrIGl0ZW1zIGZpbGVcclxuICAgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSBlbnRyeSB0byBiZSByZW1vdmVkXHJcbiAgICogQHBhcmFtIGV2dCBUaGUgY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICByZW1vdmVXb3JrSXRlbUNvbnRlbnQoZXZ0KSB7XHJcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmIChldnQuZGF0YSkge1xyXG4gICAgICBjb25zdCBmaWxlOiBGaWxlRW50cnkgPSBldnQuZGF0YTtcclxuICAgICAgdGhpcy5icG1TZXJ2aWNlXHJcbiAgICAgICAgLnJlbW92ZUZpbGVFbGVtZW50KHRoaXMud29ya0l0ZW0ucHJvY2Vzc0lkLCB0aGlzLndvcmtJdGVtLmlkLCBmaWxlLmlkKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy53b3JrSXRlbS5maWxlID0gdGhpcy53b3JrSXRlbS5maWxlLmZpbHRlcihmID0+IGYuaWQgIT09IGZpbGUuaWQpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZW50RmlsZUlkID09PSBmaWxlLmlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbldvcmtJdGVtQ29udGVudChcclxuICAgICAgICAgICAgICB0aGlzLndvcmtJdGVtLmZpbGUubGVuZ3RoID8gdGhpcy53b3JrSXRlbS5maWxlWzBdIDogbnVsbFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24ucmVtb3ZlJyksIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24ucmVtb3ZlLm1lc3NhZ2UnKSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZSB0aGUgd29yayBpdGVtcyBmb3JtIGRhdGFcclxuICAgKi9cclxuICBzYXZlV29ya0l0ZW1EYXRhKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmZvcm1TdGF0ZSAmJiAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCAmJiB0aGlzLmZvcm1TdGF0ZS5kaXJ0eSkge1xyXG4gICAgICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuc2F2ZVdvcmtJdGVtKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHByZXBhcmVOZXdXb3JrSXRlbSh3b3JrSXRlbTogV29ya0l0ZW0pOiBib29sZWFuIHtcclxuICAgIHRoaXMud29ya0l0ZW0gPSB3b3JrSXRlbTtcclxuICAgIGNvbnN0IHthY3Rpb25zLCBmb3JtLCBkYXRhfSA9IHRoaXMud29ya0l0ZW07XHJcbiAgICB0aGlzLnNldHVwV29ya0l0ZW0oKTtcclxuICAgIHRoaXMuc2V0Rm9ybU9wdGlvbnMoZm9ybSwgZGF0YSwgYWN0aW9ucyk7XHJcbiAgICB0aGlzLm5vdGlmeS5zdWNjZXNzKFxyXG4gICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5icG0uYWN0aXZpdHkuaW5kZXhkYXRhLnNhdmUuc3VjY2VzcycpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYXZlcyB0aGUgY3VycmVudCB3b3JrIGl0ZW1cclxuICAgKi9cclxuICBwcml2YXRlIHNhdmVXb3JrSXRlbSgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy53b3JrSXRlbS5kYXRhID0gdGhpcy5icG1Gb3JtRWwuZ2V0Rm9ybURhdGEoKTtcclxuICAgIHJldHVybiB0aGlzLmJwbVNlcnZpY2Uuc2F2ZVdvcmtJdGVtKHRoaXMud29ya0l0ZW0pLnBpcGUoXHJcbiAgICAgIG1hcCh0aGlzLmFkZERlZmF1bHRBY3Rpb25JZkVtcHR5KSxcclxuICAgICAgbWFwKHdvcmtJdGVtID0+IHRoaXMucHJlcGFyZU5ld1dvcmtJdGVtKHdvcmtJdGVtKSksXHJcbiAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgVXRpbHMuY2F0Y2goXHJcbiAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYnBtLmFjdGl2aXR5LmluZGV4ZGF0YS5zYXZlLmVycm9yJylcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIHRoZSBjdXJyZW50IGl0ZW0gZnJvbSB0aGUgaW5ib3guXHJcbiAgICovXHJcbiAgY29uZmlybUluYm94SXRlbSgpIHtcclxuICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuaW5ib3hTZXJ2aWNlXHJcbiAgICAgIC5yZW1vdmVJdGVtKHRoaXMuaXRlbSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnkuc3VjY2VzcyhcclxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmluYm94LmFjdGl2aXR5LmNvbmZpcm0uc3VjY2VzcycpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9DT05GSVJNRUQsIHRoaXMuaXRlbSk7XHJcbiAgICAgICAgdGhpcy5pbmJveFNlcnZpY2UucmVmcmVzaEluYm94U3RhdGUoKTtcclxuICAgICAgfSwgVXRpbHMuY2F0Y2gobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5pdGVtLnJlbW92ZS5mYWlsJykpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdXAgc3RhdGUgYW5kIGRhdGEgZm9yIHRoZSBjdXJyZW50IHdvcmsgaXRlbS5cclxuICAgKi9cclxuICBwcml2YXRlIHNldHVwV29ya0l0ZW0oKSB7XHJcbiAgICB0aGlzLmxvY2tlZCA9IHRoaXMud29ya0l0ZW0uc3RhdGUgPT09ICdQRVJTT04nO1xyXG4gICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSBmYWxzZTtcclxuICAgIH0sIDEwMDApXHJcbiAgICBjb25zdCB7Zm9ybSwgZGF0YX0gPSB0aGlzLndvcmtJdGVtO1xyXG4gICAgY29uc3Qgd29ya0l0ZW0gPSB7Zm9ybSwgZGF0YX07XHJcbiAgICB0aGlzLndvcmtJdGVtSW5kZXhkYXRhID0gZm9ybSAmJiBkYXRhID8gd29ya0l0ZW0gOiBudWxsO1xyXG5cclxuICAgIC8vIGZldGNoIGhpc3RvcnlcclxuICAgIHRoaXMuYnBtU2VydmljZVxyXG4gICAgICAuZ2V0UHJvY2Vzc0hpc3RvcnkodGhpcy53b3JrSXRlbS5wcm9jZXNzSWQpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtLmVkaXRvcikge1xyXG4gICAgICAgICAgICBpdGVtLmRhdGEuaW1hZ2UgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbWFnZVVyaShpdGVtLmVkaXRvci5pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gc29ydCBieSBudW1iZXIgYmVjYXVzZSB0aGlzIGlzIHRoZSBhdXRvLWluY3JlbWVudGluZ1xyXG4gICAgICAgIC8vIGluZGV4IG9mIGFkZGVkIGhpc3RvcnkgZW50cmllc1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeSA9IHJlcy5zb3J0KChhLCBiKSA9PiBiLm51bWJlciAtIGEubnVtYmVyKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Q29kZShpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uY29kZTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJZChpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SW5kZXgoaW5kZXgsIGl0ZW0pIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gc3Vic2NyaWJlIGZvciBjaGFuZ2VzIHRvIHRoZSBjbGlwYm9hcmQgdG8gZW5hYmxlIGFkZGluZyBjb250ZW50cyB0byB0aGUgd29yayBpdGVtXHJcbiAgICB0aGlzLmNsaXBib2FyZFNlcnZpY2UuY2xpcGJvYXJkJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoY2xpcGJvYXJkOiBDbGlwYm9hcmQpID0+XHJcbiAgICAgICAgICAodGhpcy5jbGlwYm9hcmQgPVxyXG4gICAgICAgICAgICBjbGlwYm9hcmQuYWN0aW9uID09PSBDbGlwYm9hcmRBY3Rpb24uQ09QWSA/IGNsaXBib2FyZCA6IG51bGwpXHJcbiAgICAgICk7XHJcbiAgICAvLyBjb21wb25lbnQgaXMgb25seSBpbnRlcmVzdGVkIGluIGNvcGllZCBpdGVtc1xyXG5cclxuICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uXHJcbiAgICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5pbilcclxuICAgICAgICAuZm9jdXMkLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoaXRlbTogYW55KSA9PiAodGhpcy5pdGVtID0gaXRlbSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgbGV0IHBhbmVscyA9IHRoaXMudGFiUGFuZWxzLnRvQXJyYXkoKTtcclxuICAgIHRoaXMudGFiUGx1Z2lucy5mb3JFYWNoKFxyXG4gICAgICBwID0+IChwYW5lbHMgPSBwYW5lbHMuY29uY2F0KHAudGFiUGFuZWxzLnRvQXJyYXkoKSkpXHJcbiAgICApO1xyXG4gICAgdGhpcy5leHRlcm5hbFBhbmVscy5yZXNldChwYW5lbHMpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -47,7 +47,7 @@ export class MediaComponent extends UnsubscribeOnDestroy {
47
47
  "viewer": "assets/_default/api/img/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}"
48
48
  },
49
49
  { "viewer": "() => parameters.defaultViewer + '#'" },
50
- { "error": true, "viewer": "assets/_default/api/error/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}" }
50
+ { "error": true, "type": "error", "viewer": "assets/_default/api/error/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}" }
51
51
  ];
52
52
  this.undockDisabled = false;
53
53
  this.enableCloseBtn = false;
@@ -171,7 +171,7 @@ export class MediaComponent extends UnsubscribeOnDestroy {
171
171
  const config = this.customConfig.find((c) => {
172
172
  const matchMT = !c.mimeType || (typeof c.mimeType === 'string' ? [c.mimeType] : c.mimeType).includes(mimeType === null || mimeType === void 0 ? void 0 : mimeType.toLowerCase());
173
173
  const matchFE = !c.fileExtension || (typeof c.fileExtension === 'string' ? [c.fileExtension] : c.fileExtension).includes((fileExtension).toLowerCase());
174
- return matchMT && matchFE;
174
+ return matchMT && matchFE && (!c.type || c.type === 'default');
175
175
  });
176
176
  const parameters = {
177
177
  file,
@@ -186,6 +186,9 @@ export class MediaComponent extends UnsubscribeOnDestroy {
186
186
  previewUri: ''
187
187
  };
188
188
  parameters.viewer = this.pluginsService.applyFunction(parameters.viewer, 'component, dmsObject, parameters', [this, this._dmsObject, parameters]) || defaultViewer;
189
+ const extend = this.customConfig.find((c) => c.type === 'extend');
190
+ if (extend)
191
+ parameters.viewer = this.pluginsService.applyFunction(extend.viewer, 'component, dmsObject, parameters', [this, this._dmsObject, parameters]);
189
192
  parameters.previewUri = this.resolveUri(parameters.viewer, parameters);
190
193
  return parameters;
191
194
  }
@@ -351,7 +354,7 @@ export class MediaComponent extends UnsubscribeOnDestroy {
351
354
  }
352
355
  }
353
356
  MediaComponent.VIDEO_VIEWER = 'assets/_default/api/video/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}';
354
- MediaComponent.PDF_VIEWER = 'assets/_default/api/pdf/web/viewer.html?file=&path=${path}&pathPdf=${pathPdf}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}';
357
+ MediaComponent.PDF_VIEWER = 'assets/_default/api/pdf/web/viewer.html?file=&path=${path}&pathPdf=${pathPdf}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}&css=%23toolbarViewerRight%20%23print%7Bdisplay%3Ablock!important%3B%7D';
355
358
  MediaComponent.decorators = [
356
359
  { type: Component, args: [{
357
360
  selector: 'eo-media',
@@ -385,4 +388,4 @@ MediaComponent.propDecorators = {
385
388
  previewFile: [{ type: Input }],
386
389
  dmsObject: [{ type: Input }]
387
390
  };
388
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbWVkaWEvbWVkaWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUM3RSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWEsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFDTCxNQUFNLEVBRU4sYUFBYSxFQUNiLGdCQUFnQixFQUdoQixVQUFVLEVBQ1YsY0FBYyxFQUNmLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBdUIvRSxNQUFNLE9BQU8sY0FBZSxTQUFRLG9CQUFvQjtJQW9KdEQsWUFBbUIsU0FBMkIsRUFDcEMsR0FBZSxFQUNmLFFBQW1CLEVBQ25CLE1BQXFCLEVBQ3JCLE9BQWUsRUFDZixNQUFjLEVBQ2QsY0FBOEIsRUFDOUIsT0FBdUI7UUFDL0IsS0FBSyxFQUFFLENBQUM7UUFSUyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNwQyxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixXQUFNLEdB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cEIsY0FBYzs7OzZCQW1GYixLQUFLOzZCQU1MLEtBQUs7eUJBR0wsS0FBSzttQkFDTCxXQUFXLFNBQUMsWUFBWTt5QkFFeEIsU0FBUyxTQUFDLFlBQVk7cUJBQ3RCLFNBQVMsU0FBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDOzBCQUNsQyxTQUFTLFNBQUMsYUFBYSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQzs2QkFFdkMsS0FBSyxTQUFDLGFBQWE7NEJBTW5CLEtBQUssU0FBQyxZQUFZO3VCQUtsQixLQUFLO3lCQVVMLEtBQUs7MEJBVUwsS0FBSzt3QkFjTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQbHVnaW5zU2VydmljZX0gZnJvbSAnLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQsIE9uRGVzdHJveSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb25maWcsXHJcbiAgT2JqZWN0VHlwZSxcclxuICBTeXN0ZW1TZXJ2aWNlLFxyXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgRG1zT2JqZWN0LFxyXG4gIERtc09iamVjdEF0dGFjaG1lbnQsXHJcbiAgRG1zU2VydmljZSxcclxuICBCYWNrZW5kU2VydmljZVxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7dGFrZVVudGlsLCB0YWtlV2hpbGUsIGNhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRmlsZVNpemVQaXBlIH0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGlwZXMvZmlsZXNpemUucGlwZSc7XHJcbmltcG9ydCB7IENvbnRlbnRQcmV2aWV3U2VydmljZSB9IGZyb20gJy4vY29udGVudC1wcmV2aWV3LnNlcnZpY2UnO1xyXG5pbXBvcnQge1Vuc3Vic2NyaWJlT25EZXN0cm95fSBmcm9tICcuLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdlckNvbmZpZyB7XHJcbiAgbWltZVR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBmaWxlRXh0ZW5zaW9uPzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgdmlld2VyOiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBQcmV2aWV3RmlsZSB7XHJcbiAgdXJpOiBzdHJpbmc7XHJcbiAgdXJpUGRmOiBzdHJpbmc7XHJcbiAgbWltZXR5cGU6IHN0cmluZztcclxuICBtaW1lZ3JvdXA6IHN0cmluZztcclxuICBzaXplOiBudW1iZXI7XHJcbiAgcGF0aD86IHN0cmluZztcclxuICBtZWRpYVR5cGVOYW1lPzogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLW1lZGlhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVkaWEuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21lZGlhLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbQ29udGVudFByZXZpZXdTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVkaWFDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHN0YXRpYyBWSURFT19WSUVXRVIgPSAnYXNzZXRzL19kZWZhdWx0L2FwaS92aWRlby8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX0nO1xyXG4gIHN0YXRpYyBQREZfVklFV0VSID0gJ2Fzc2V0cy9fZGVmYXVsdC9hcGkvcGRmL3dlYi92aWV3ZXIuaHRtbD9maWxlPSZwYXRoPSR7cGF0aH0mcGF0aFBkZj0ke3BhdGhQZGZ9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX0nO1xyXG5cclxuICBwcml2YXRlIFNJWkVfTElNSVQgPSAxMDI0ICogMTAyNCAqIDEwOyAvLyAxME1CXHJcbiAgcHJpdmF0ZSBwZGZqczogYW55O1xyXG4gIGxhdGVzdFVyaTogc3RyaW5nO1xyXG4gIHNsaWRlVXJpOiBzdHJpbmc7XHJcbiAgdmlld2VyOiBhbnk7XHJcbiAgZG1zT2JqZWN0VGl0bGU6IHN0cmluZztcclxuICBwcml2YXRlIF9wcmV2aWV3VXJpOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfZG1zT2JqZWN0OiBEbXNPYmplY3Q7XHJcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcclxuICBmaWxlU2l6ZVBpcGU6IEZpbGVTaXplUGlwZTtcclxuICBjdXJyZW50SW5kZXg6IG51bWJlcjtcclxuICBhdHRhY2htZW50czogRG1zT2JqZWN0QXR0YWNobWVudFtdID0gW107XHJcbiAgaXNNZWRpYSA9IGZhbHNlO1xyXG4gIGlzT2N0ZXRTdHJlYW0gPSBmYWxzZTtcclxuICBpc05vdFN1cHBvcnRlZCA9IGZhbHNlO1xyXG4gIGlzTGFyZ2UgPSBmYWxzZTtcclxuICBoYXNFcnJvciA9IGZhbHNlO1xyXG4gIGF0dGFjaG1lbnRzTG9hZGluZzogU3Vic2NyaXB0aW9uO1xyXG4gIGF0dGFjaG1lbnRzU2hvd246IGJvb2xlYW47XHJcbiAgc2VhcmNoVGVybTogc3RyaW5nO1xyXG4gIG1lZGlhVHlwZTogT2JqZWN0VHlwZTtcclxuICBjdXN0b21Db25maWc6IGFueVtdID0gW107XHJcblxyXG4gIGRlZmF1bHRWaWV3ZXJzID0gW1xyXG4gICAgeyBcImZpbGVFeHRlbnNpb25cIjogW1wianNcIiwgXCJqc29uXCJdLCBcInZpZXdlclwiOiBcImFzc2V0cy9fZGVmYXVsdC9hcGkvbW9uYWNvLz9wYXRoPSR7cGF0aH0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfSZsYW5ndWFnZT1qYXZhc2NyaXB0XCIgfSxcclxuICAgIHsgXCJtaW1lVHlwZVwiOiBbXCJhcHBsaWNhdGlvbi9qc29uXCJdLCBcInZpZXdlclwiOiBcImFzc2V0cy9fZGVmYXVsdC9hcGkvbW9uYWNvLz9wYXRoPSR7cGF0aH0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfSZsYW5ndWFnZT1qYXZhc2NyaXB0XCIgfSxcclxuICAgIHsgXCJtaW1lVHlwZVwiOiBbXCJ0ZXh0L3BsYWluXCJdLCBcInZpZXdlclwiOiBcImFzc2V0cy9fZGVmYXVsdC9hcGkvbW9uYWNvLz9wYXRoPSR7cGF0aH0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfVwiIH0sXHJcbiAgICB7IFwibWltZVR5cGVcIjogW1widGV4dC94bWxcIl0sIFwidmlld2VyXCI6IFwiYXNzZXRzL19kZWZhdWx0L2FwaS9tb25hY28vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9Jmxhbmd1YWdlPXhtbFwiIH0sXHJcbiAgICB7IFwibWltZVR5cGVcIjogW1widGV4dC9qYXZhXCJdLCBcInZpZXdlclwiOiBcImFzc2V0cy9fZGVmYXVsdC9hcGkvbW9uYWNvLz9wYXRoPSR7cGF0aH0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfSZsYW5ndWFnZT1qYXZhXCIgfSxcclxuICAgIHsgXCJtaW1lVHlwZVwiOiBbXCJ0ZXh0L2phdmFzY3JpcHRcIl0sIFwidmlld2VyXCI6IFwiYXNzZXRzL19kZWZhdWx0L2FwaS9tb25hY28vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9Jmxhbmd1YWdlPWphdmFzY3JpcHRcIiB9LFxyXG4gICAgeyBcIm1pbWVUeXBlXCI6IFtcInRleHQvaHRtbFwiXSwgXCJ2aWV3ZXJcIjogXCJhc3NldHMvX2RlZmF1bHQvYXBpL21vbmFjby8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX0mbGFuZ3VhZ2U9aHRtbFwiIH0sXHJcbiAgICB7XHJcbiAgICAgIFwibWltZVR5cGVcIjogW1widGV4dC9tYXJrZG93blwiLCBcInRleHQveC13ZWItbWFya2Rvd25cIiwgXCJ0ZXh0L3gtbWFya2Rvd25cIl0sXHJcbiAgICAgIFwidmlld2VyXCI6IFwiYXNzZXRzL19kZWZhdWx0L2FwaS9tb25hY28vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9Jmxhbmd1YWdlPW1hcmtkb3duXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwibWltZVR5cGVcIjogW1wiYXVkaW8vbXAzXCIsIFwiYXVkaW8vd2VibVwiLCBcImF1ZGlvL29nZ1wiLCBcImF1ZGlvL21wZWdcIiwgXCJ2aWRlby9tcDRcIiwgXCJ2aWRlby93ZWJtXCIsIFwidmlkZW8vb2dnXCIsIFwiYXBwbGljYXRpb24vb2dnXCJdLFxyXG4gICAgICBcInZpZXdlclwiOiBcImFzc2V0cy9fZGVmYXVsdC9hcGkvdmlkZW8vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwibWltZVR5cGVcIjogW1wiaW1hZ2UvanBlZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL2FwbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9zdmcreG1sXCIsIFwiaW1hZ2Uvd2VicFwiXSxcclxuICAgICAgXCJ2aWV3ZXJcIjogXCJhc3NldHMvX2RlZmF1bHQvYXBpL2ltZy8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIlxyXG4gICAgfSxcclxuICAgIHsgXCJ2aWV3ZXJcIjogXCIoKSA9PiBwYXJhbWV0ZXJzLmRlZmF1bHRWaWV3ZXIgKyAnIydcIiB9LFxyXG4gICAgeyBcImVycm9yXCI6IHRydWUsIFwidmlld2VyXCI6IFwiYXNzZXRzL19kZWZhdWx0L2FwaS9lcnJvci8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIiB9XHJcbiAgXTtcclxuXHJcbiAgaXNVbmRvY2tlZDogYm9vbGVhbjtcclxuICBcclxuICBASW5wdXQoKSB1bmRvY2tEaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBnZXQgdW5kb2NrV2luKCk6IFdpbmRvdyB7XHJcbiAgICByZXR1cm4gQ29udGVudFByZXZpZXdTZXJ2aWNlLmdldFVuZG9ja1dpbigpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZW5hYmxlQ2xvc2VCdG4gPSBmYWxzZTtcclxuICAvLyBieSBkZWZhdWx0LCB0aGUgdmlld2VyIGlnbm9yZXMgdGhlIHZlcnNpb24gb2YgdGhlIGRtcyBvYmplY3QuIFRoaXMgd2lsbCBhbHdheXMgc2hvdyB0aGUgbGF0ZXN0IHZlcnNpb24uXHJcbiAgLy8gV2UgbmVlZCB0aGlzIHRvIGJlIGFibGUgdG8gcmVmcmVzaCB0aGUgdmlld2VyIGJlY2F1c2Ugb3RoZXJ3aXNlIHBkZmpzIHdvcmtlciB3aWxsIGZhaWwuXHJcbiAgQElucHV0KCkgdXNlVmVyc2lvbiA9IGZhbHNlO1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3BlbicpIG9wZW47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvZGVzeXN0ZW0nKSBjb2Rlc3lzdGVtO1xyXG4gIEBWaWV3Q2hpbGQoJ2lmcmFtZScsIHtzdGF0aWM6IHRydWV9KSBpZnJhbWU7XHJcbiAgQFZpZXdDaGlsZCgnaWZyYW1lTWVkaWEnLCB7c3RhdGljOiB0cnVlfSkgaWZyYW1lTWVkaWE7XHJcblxyXG4gIEBJbnB1dCgnYXR0YWNobWVudHMnKVxyXG4gIHNldCBzZXRBdHRhY2htZW50cyhhdHRhY2htZW50cykge1xyXG4gICAgdGhpcy5hdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzO1xyXG4gICAgdGhpcy5hdHRhY2htZW50c1Nob3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ3NlYXJjaFRlcm0nKVxyXG4gIHNldCBzZXRTZWFyY2hUZXJtKHNlYXJjaFRlcm0pIHtcclxuICAgIHRoaXMuc2VhcmNoVGVybSA9IHNlYXJjaFRlcm0gfHwgJyc7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBkaXNhYmxlZChkaXNhYmxlZCkge1xyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSAhIWRpc2FibGVkO1xyXG4gICAgdGhpcy50b29nbGVWaWV3ZXIoKTtcclxuICB9XHJcblxyXG4gIGdldCBkaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHByZXZpZXdVcmkodXJpOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3ByZXZpZXdVcmkgPSB1cmk7XHJcbiAgICB0aGlzLnRvb2dsZVZpZXdlcigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHByZXZpZXdVcmkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcHJldmlld1VyaTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHByZXZpZXdGaWxlKGZpbGU6IFByZXZpZXdGaWxlKSB7XHJcbiAgICBpZiAoZmlsZSkge1xyXG4gICAgICB0aGlzLnZpZXdlciA9IHRoaXMuZ2V0Vmlld2VyKGZpbGUpO1xyXG4gICAgICB0aGlzLmlzTWVkaWEgPSB0aGlzLnZpZXdlci52aWV3ZXIgIT09IE1lZGlhQ29tcG9uZW50LlBERl9WSUVXRVI7XHJcbiAgICAgIHRoaXMuaXNPY3RldFN0cmVhbSA9ICEhZmlsZS5taW1lZ3JvdXA/Lm1hdGNoKC9vY3RldC1zdHJlYW0vKTtcclxuICAgICAgdGhpcy5pc0xhcmdlID0gZmlsZS5zaXplICYmIGZpbGUuc2l6ZSA+IHRoaXMuU0laRV9MSU1JVDtcclxuICAgICAgdGhpcy5tZWRpYVR5cGUgPSBmaWxlLm1lZGlhVHlwZU5hbWUgJiYgdGhpcy5zeXN0ZW0uZ2V0T2JqZWN0VHlwZShmaWxlLm1lZGlhVHlwZU5hbWUpO1xyXG4gICAgICB0aGlzLnByZXZpZXdVcmkgPSB0aGlzLmlzTWVkaWEgPyB0aGlzLnZpZXdlci5wcmV2aWV3VXJpIDogZmlsZS51cmlQZGY7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnByZXZpZXdVcmkgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRtc09iamVjdChpdGVtOiBEbXNPYmplY3QpIHtcclxuICAgIHRoaXMuX2Rtc09iamVjdCA9IGl0ZW07XHJcbiAgICB0aGlzLmRtc09iamVjdFRpdGxlID0gaXRlbS50aXRsZSB8fCAnLi4uJztcclxuXHJcbiAgICB0aGlzLnNldEF0dGFjaG1lbnRzID0gW107XHJcbiAgICBpZiAodGhpcy5hdHRhY2htZW50c0xvYWRpbmcpIHtcclxuICAgICAgLy8gY2FuY2VsIGFueSBwZW5kaW5nIHJlcXVlc3RzXHJcbiAgICAgIHRoaXMuYXR0YWNobWVudHNMb2FkaW5nLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbS5jb250ZW50ICYmIGl0ZW0uY29udGVudC5jb250ZW50cyAmJiBpdGVtLmNvbnRlbnQuY29udGVudHMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBpdGVtLmNvbnRlbnQuY29udGVudHNbMF0gfHwge307XHJcblxyXG4gICAgICB0aGlzLnByZXZpZXdGaWxlID0ge1xyXG4gICAgICAgIHVyaTogdGhpcy5kbXMuZ2V0UHJldmlldyhpdGVtLmNvbnRlbnQuaWQsIGl0ZW0uY29udGVudC50eXBlLCB0aGlzLnVzZVZlcnNpb24gPyBpdGVtLnZlcnNpb24gOiBudWxsKSxcclxuICAgICAgICB1cmlQZGY6IHRoaXMuZG1zLmdldFByZXZpZXcoaXRlbS5jb250ZW50LmlkLCBpdGVtLmNvbnRlbnQudHlwZSwgdGhpcy51c2VWZXJzaW9uID8gaXRlbS52ZXJzaW9uIDogbnVsbCwgJ1BERicpLFxyXG4gICAgICAgIG1pbWV0eXBlOiBmaWxlLm1pbWV0eXBlLFxyXG4gICAgICAgIG1pbWVncm91cDogZmlsZS5taW1lZ3JvdXAsXHJcbiAgICAgICAgc2l6ZTogZmlsZS5zaXplLFxyXG4gICAgICAgIHBhdGg6IGZpbGUucGF0aCxcclxuICAgICAgICBtZWRpYVR5cGVOYW1lOiBpdGVtLnR5cGVOYW1lXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAoISFmaWxlLm1pbWVncm91cD8ubWF0Y2goL15tYWlsfG9jdGV0LXN0cmVhbS8pKSB7XHJcbiAgICAgICAgdGhpcy5zbGlkZVVyaSA9IHRoaXMuZG1zLmdldFNsaWRlKGl0ZW0uY29udGVudC5pZCwgaXRlbS5jb250ZW50LnR5cGUsIHRoaXMudXNlVmVyc2lvbiA/IGl0ZW0udmVyc2lvbiA6IG51bGwsIDI1Nik7XHJcbiAgICAgICAgdGhpcy5hdHRhY2htZW50c0xvYWRpbmcgPSB0aGlzLmRtcy5nZXRBdHRhY2htZW50cyhpdGVtKS5zdWJzY3JpYmUoYSA9PiB0aGlzLnNldEF0dGFjaG1lbnRzID0gYSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnByZXZpZXdVcmkgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRtczogRG1zU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnLFxyXG4gICAgcHJpdmF0ZSBwbHVnaW5zU2VydmljZTogUGx1Z2luc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZmlsZVNpemVQaXBlID0gbmV3IEZpbGVTaXplUGlwZSh0cmFuc2xhdGUpO1xyXG4gICAgdGhpcy5TSVpFX0xJTUlUID0gdGhpcy5jb25maWcuZ2V0UmF3KCdwcmV2aWV3LmZpbGVTaXplTGltaXQnKSB8fCB0aGlzLlNJWkVfTElNSVQ7XHJcbiAgICB0aGlzLmN1c3RvbUNvbmZpZyA9ICh0aGlzLmNvbmZpZy5nZXRSYXcoJ3ByZXZpZXcudmlld2VycycpIHx8IFtdKS5jb25jYXQodGhpcy5kZWZhdWx0Vmlld2Vycyk7XHJcbiAgICBcclxuICAgIHRoaXMucGx1Z2luc1NlcnZpY2UuYXBpLmNvbnRlbnQuY2F0Y2hFcnJvcigpLnN1YnNjcmliZSgoZXZ0OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBlcnIsIHdpbiwgcGFyYW1ldGVycyB9ID0gZXZ0LmRhdGE7XHJcbiAgICAgIGNvbnN0IHVyaSA9IHRoaXMucGx1Z2luc1NlcnZpY2UuYXBwbHlGdW5jdGlvbih0aGlzLmN1c3RvbUNvbmZpZz8uZmluZCgodikgPT4gdi5lcnJvcik/LnZpZXdlciwgJ2FwaSwgZXJyLCB3aW4sIHBhcmFtZXRlcnMnLCBbXHJcbiAgICAgICAgdGhpcy5wbHVnaW5zU2VydmljZS5hcGksXHJcbiAgICAgICAgZXJyLFxyXG4gICAgICAgIHdpbixcclxuICAgICAgICBwYXJhbWV0ZXJzXHJcbiAgICAgIF0pO1xyXG5cclxuICAgICAgdXJpICYmIHRoaXMubG9hZERvY3VtZW50KHRoaXMucmVzb2x2ZVVyaSh1cmksIHBhcmFtZXRlcnMpLCB0cnVlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChDb250ZW50UHJldmlld1NlcnZpY2UudW5kb2NrV2luQWN0aXZlKCkpIHtcclxuICAgICAgdGhpcy51bmRvY2soZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QXR0YWNobWVudChhdHRhY2htZW50PywgZm9yY2U/KSB7XHJcbiAgICBjb25zdCBwcmV2aWV3VXJpID0gYXR0YWNobWVudCAmJiB0aGlzLmlzTWVkaWEgPyB0aGlzLmdldFZpZXdlcih7dXJpUGRmIDogYXR0YWNobWVudD8ucHJldmlld1VyaX0gYXMgUHJldmlld0ZpbGUpLnByZXZpZXdVcmkgOiBhdHRhY2htZW50Py5wcmV2aWV3VXJpO1xyXG4gICAgdGhpcy5sb2FkRG9jdW1lbnQocHJldmlld1VyaSB8fCB0aGlzLnByZXZpZXdVcmksIGZvcmNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b29nbGVWaWV3ZXIoKSB7XHJcbiAgICB0aGlzLm9wZW4gPSAhdGhpcy5kaXNhYmxlZCAmJiAhIXRoaXMucHJldmlld1VyaTtcclxuICAgIGlmICh0aGlzLnVuZG9ja0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuaXNVbmRvY2tlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3BlbiB8fCB0aGlzLmlzVW5kb2NrZWQpIHtcclxuICAgICAgdGhpcy5sb2FkRG9jdW1lbnQodGhpcy5wcmV2aWV3VXJpLCB0aGlzLmlzVW5kb2NrZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZnJlc2goKSB7XHJcbiAgICB0aGlzLmxvYWREb2N1bWVudCh0aGlzLnByZXZpZXdVcmksIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuUGRmVmlld2VyKHVyaTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnBkZmpzLmNvbnRlbnRXaW5kb3cuUERGVmlld2VyQXBwbGljYXRpb24ub3Blbih1cmkpLnRoZW4oKCkgPT4gKHRoaXMuaGFzRXJyb3IgPSBmYWxzZSkpLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgdGhpcy5oYXNFcnJvciA9ICF0aGlzLmlzT2N0ZXRTdHJlYW07XHJcbiAgICAgIHRoaXMuaXNOb3RTdXBwb3J0ZWQgPSB0aGlzLmlzT2N0ZXRTdHJlYW07XHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMuc2VhcmNoKCk7XHJcbiAgfVxyXG5cclxuICBnZXRWaWV3ZXIoZmlsZTogUHJldmlld0ZpbGUpOiBhbnkge1xyXG4gICAgY29uc3QgaXNWaWRlbyA9ICEhZmlsZS5taW1lZ3JvdXA/Lm1hdGNoKC9eYXVkaW98XnZpZGVvLyk7XHJcbiAgICBjb25zdCBkZWZhdWx0Vmlld2VyID0gaXNWaWRlbyA/IE1lZGlhQ29tcG9uZW50LlZJREVPX1ZJRVdFUiA6IE1lZGlhQ29tcG9uZW50LlBERl9WSUVXRVI7XHJcbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZmlsZS5wYXRoPy5pbmNsdWRlcygnLicpID8gZmlsZS5wYXRoLnNwbGl0KCcuJykucG9wKCkgOiAnJztcclxuICAgIGNvbnN0IG1pbWVUeXBlID0gZmlsZS5taW1ldHlwZTtcclxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY3VzdG9tQ29uZmlnLmZpbmQoKGM6IFZpZXdlckNvbmZpZykgPT4ge1xyXG4gICAgICBjb25zdCBtYXRjaE1UID0gIWMubWltZVR5cGUgfHwgKHR5cGVvZiBjLm1pbWVUeXBlID09PSAnc3RyaW5nJyA/IFtjLm1pbWVUeXBlXSA6IGMubWltZVR5cGUpLmluY2x1ZGVzKG1pbWVUeXBlPy50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgY29uc3QgbWF0Y2hGRSA9ICFjLmZpbGVFeHRlbnNpb24gfHwgKHR5cGVvZiBjLmZpbGVFeHRlbnNpb24gPT09ICdzdHJpbmcnID8gW2MuZmlsZUV4dGVuc2lvbl0gOiBjLmZpbGVFeHRlbnNpb24pLmluY2x1ZGVzKChmaWxlRXh0ZW5zaW9uKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgcmV0dXJuIG1hdGNoTVQgJiYgbWF0Y2hGRTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7XHJcbiAgICAgIGZpbGUsXHJcbiAgICAgIHBhdGg6IGxvY2F0aW9uLm9yaWdpbiArIGZpbGUudXJpLFxyXG4gICAgICBwYXRoUGRmOiBsb2NhdGlvbi5vcmlnaW4gKyBmaWxlLnVyaVBkZixcclxuICAgICAgdmlld2VyOiBjb25maWc/LnZpZXdlciB8fCBkZWZhdWx0Vmlld2VyLFxyXG4gICAgICBsb2FkOiBjb25maWc/LmxvYWQsXHJcbiAgICAgIGZpbGVFeHRlbnNpb24sXHJcbiAgICAgIG1pbWVUeXBlLFxyXG4gICAgICB0aGVtZTogJycsXHJcbiAgICAgIGRlZmF1bHRWaWV3ZXIsXHJcbiAgICAgIHByZXZpZXdVcmk6ICcnXHJcbiAgICB9O1xyXG4gICAgcGFyYW1ldGVycy52aWV3ZXIgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24ocGFyYW1ldGVycy52aWV3ZXIsICdjb21wb25lbnQsIGRtc09iamVjdCwgcGFyYW1ldGVycycsIFt0aGlzLCB0aGlzLl9kbXNPYmplY3QsIHBhcmFtZXRlcnNdKSB8fCBkZWZhdWx0Vmlld2VyO1xyXG4gICAgcGFyYW1ldGVycy5wcmV2aWV3VXJpID0gdGhpcy5yZXNvbHZlVXJpKHBhcmFtZXRlcnMudmlld2VyLCBwYXJhbWV0ZXJzKTtcclxuICAgIHJldHVybiBwYXJhbWV0ZXJzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNvbHZlVXJpKHZpZXdlcjogc3RyaW5nLCBwYXJhbWV0ZXJzOiBhbnkpIHtcclxuICAgIHJldHVybiAodmlld2VyID8gZG9jdW1lbnQuYmFzZVVSSSA6ICcnKSArIHZpZXdlclxyXG4gICAgLnJlcGxhY2UoJyR7b3JpZ2luYWxQYXRofScsIHBhcmFtZXRlcnMucGF0aClcclxuICAgIC5yZXBsYWNlKCcke3BhdGh9JywgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnMucGF0aCkpXHJcbiAgICAucmVwbGFjZSgnJHtwYXRoUGRmfScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLnBhdGhQZGYpKVxyXG4gICAgLnJlcGxhY2UoJyR7ZmlsZUV4dGVuc2lvbn0nLCBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy5maWxlRXh0ZW5zaW9uKSlcclxuICAgIC5yZXBsYWNlKCcke21pbWVUeXBlfScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLm1pbWVUeXBlKSlcclxuICAgIC5yZXBsYWNlKCcke3RoZW1lfScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLnRoZW1lKSlcclxuICAgIC5yZXBsYWNlKCcke2xhbmd9JywgQ29udGVudFByZXZpZXdTZXJ2aWNlLm1hcExhbmcodGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcpKTtcclxuICB9XHJcblxyXG4gIHVuZG9jayhvcGVuID0gdHJ1ZSkge1xyXG4gICAgaWYgKHRoaXMudW5kb2NrRGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc1VuZG9ja2VkID0gIXRoaXMuaXNVbmRvY2tlZDtcclxuICAgIGlmICghdGhpcy5pc1VuZG9ja2VkKSB7XHJcbiAgICAgIENvbnRlbnRQcmV2aWV3U2VydmljZS5jbG9zZVdpbigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKF8gPT4ge1xyXG4gICAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMudW5kb2NrV2luICYmICFDb250ZW50UHJldmlld1NlcnZpY2UudW5kb2NrV2luQWN0aXZlKCkpIHtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5pc1VuZG9ja2VkICYmIHRoaXMudW5kb2NrKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgIGZyb21FdmVudCh3aW5kb3csICdiZWZvcmV1bmxvYWQnKVxyXG4gICAgICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuaXNVbmRvY2tlZCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKGUgPT4gQ29udGVudFByZXZpZXdTZXJ2aWNlLmNsb3NlV2luKCkpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmKG9wZW4pIHtcclxuICAgICAgdGhpcy5sb2FkRG9jdW1lbnQodGhpcy5wcmV2aWV3VXJpLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5XaW5kb3coc3JjOiBzdHJpbmcsIGNsZWFuID0gZmFsc2UpIHtcclxuICAgIENvbnRlbnRQcmV2aWV3U2VydmljZS51bmRvY2tXaW4oc3JjKTtcclxuICAgIGlmIChjbGVhbikge1xyXG4gICAgICB3aGlsZSAodGhpcy51bmRvY2tXaW4uZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKSB7XHJcbiAgICAgICAgdGhpcy51bmRvY2tXaW4uZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLnVuZG9ja1dpbi5kb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKCFzcmMgJiYgIXRoaXMudW5kb2NrV2luLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNuby1maWxlJykpIHtcclxuICAgICAgdGhpcy51bmRvY2tXaW4uZG9jdW1lbnQud3JpdGUoXHJcbiAgICAgICAgYDxkaXYgaWQ9XCJuby1maWxlXCIgc3R5bGU9XCJvcGFjaXR5OiAwLjA2OyBkaXNwbGF5OiBmbGV4OyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIj5cclxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTI4XCIgaGVpZ2h0PVwiMTI4XCIgdmlld0JveD1cIjAgMCA0OCA0OFwiPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0yOSA0SDE0LjZjLS44IDAtMS41LjItMiAuNmwyNy4yIDI3LjJ2LTE3TDI5IDR6bS0uNyAxMS42VjcuOGw3LjggNy44aC03Ljh6TTQzLjQgNDAuOGwtMi41IDIuNS0zLjUtMy41Yy0uNC4xLS44LjItMS4yLjJIMTQuNmMtMiBcclxuICAgICAgICAgIDAtMy42LTEuNi0zLjYtMy42VjEzLjVMNS45IDguNGwyLjUtMi41TDExIDguNGwyOC43IDI4LjcgMy4xIDMuMS42LjZ6XCIvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPGRpdj5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkRG9jdW1lbnQodXJpOiBzdHJpbmcsIGZvcmNlPzogYm9vbGVhbikge1xyXG4gICAgaWYgKGZvcmNlKSB7XHJcbiAgICAgIHRoaXMuaXNMYXJnZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFmb3JjZSAmJiAodGhpcy5kaXNhYmxlZCB8fCAhdXJpIHx8ICh1cmkgPT09IHRoaXMubGF0ZXN0VXJpICYmICF0aGlzLmhhc0Vycm9yKSkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sYXRlc3RVcmkgPSB1cmkgfHwgJyc7XHJcbiAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTm90U3VwcG9ydGVkID0gZmFsc2U7XHJcblxyXG4gICAgXHJcblxyXG4gICAgaWYgKHRoaXMuaXNVbmRvY2tlZCkge1xyXG4gICAgICB0aGlzLm9wZW5XaW5kb3codGhpcy5sYXRlc3RVcmkpO1xyXG4gICAgICBjb25zdCBvbmxvYWQgPSAoKSA9PiB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24odGhpcy52aWV3ZXI/LmxvYWQsICdpZnJhbWUsIGNvbXBvbmVudCcsIFt0aGlzLnVuZG9ja1dpbiwgdGhpc10pO1xyXG4gICAgICB0aGlzLmlmcmFtZUluaXQodGhpcy51bmRvY2tXaW4sIHRoaXMudmlld2VyPy5sb2FkICYmIG9ubG9hZCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0xhcmdlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc01lZGlhKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuaWZyYW1lTWVkaWEubmF0aXZlRWxlbWVudCwgJ3NyYycsIHRoaXMubGF0ZXN0VXJpKTtcclxuICAgICAgY29uc3Qgb25sb2FkID0gKCkgPT4gdGhpcy5wbHVnaW5zU2VydmljZS5hcHBseUZ1bmN0aW9uKHRoaXMudmlld2VyPy5sb2FkLCAnaWZyYW1lLCBjb21wb25lbnQnLCBbdGhpcy5pZnJhbWVNZWRpYS5uYXRpdmVFbGVtZW50LCB0aGlzXSk7XHJcbiAgICAgIHRoaXMuaWZyYW1lSW5pdCh0aGlzLmlmcmFtZU1lZGlhLm5hdGl2ZUVsZW1lbnQsIHRoaXMudmlld2VyPy5sb2FkICYmIG9ubG9hZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMucGRmanMpIHtcclxuICAgICAgICB0aGlzLnBkZmpzID0gdGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudDtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnBkZmpzLCAnc3JjJywgTWVkaWFDb21wb25lbnQuUERGX1ZJRVdFUi5yZXBsYWNlKC9cXD8uKi8sICc/ZmlsZT0mJykpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMucGRmanMsICdsb2FkJywgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uT3B0aW9ucy5zZXQoJ3NpZGViYXJWaWV3T25Mb2FkJywgMCk7XHJcbiAgICAgICAgICB0aGlzLnBkZmpzLmNvbnRlbnRXaW5kb3cuUERGVmlld2VyQXBwbGljYXRpb25PcHRpb25zLnNldCgndmlld09uTG9hZCcsIGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnMuc2V0KCdsb2NhbGUnLCBDb250ZW50UHJldmlld1NlcnZpY2UubWFwTGFuZyh0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZykpO1xyXG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LmRvY3VtZW50LndlYkwxMG4uc2V0TGFuZ3VhZ2UoQ29udGVudFByZXZpZXdTZXJ2aWNlLm1hcExhbmcodGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcpKTtcclxuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbi5faW5pdGlhbGl6ZUwxMG4oKTtcclxuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnMuc2V0KCd2aWV3ZXJDc3NUaGVtZScsIDEpO1xyXG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uLl9mb3JjZUNzc1RoZW1lKCk7XHJcbiAgICAgICAgICB0aGlzLnBkZmpzLmNvbnRlbnRXaW5kb3cuUERGVmlld2VyQXBwbGljYXRpb24uYXBwQ29uZmlnLnZpZXdlckNvbnRhaW5lclxyXG4gICAgICAgICAgICAuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VudGVyJywgZSA9PiB3aW5kb3cuZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRHJhZ0V2ZW50KCdkcmFnZW50ZXInLCBlKSkpO1xyXG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uLmFwcENvbmZpZy52aWV3ZXJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIGUgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5vcGVuUGRmVmlld2VyKHRoaXMubGF0ZXN0VXJpKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnBkZmpzLmNvbnRlbnRXaW5kb3cgJiYgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uLnBkZlNpZGViYXIuY2xvc2UoKTtcclxuICAgICAgICB0aGlzLm9wZW5QZGZWaWV3ZXIodGhpcy5sYXRlc3RVcmkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3VzdG9tIHNlYXJjaCBpbnNpZGUgUERGLkpTIGJhc2VkIG9uIHNlYXJjaCB0ZXJtXHJcbiAgICogQHBhcmFtIHRlcm0gc2VhcmNoIHRlcm1cclxuICAgKiBAcGFyYW0gd2luIGlmcmFtZSB3aW5kb3dcclxuICAgKi9cclxuICAgcHJpdmF0ZSBzZWFyY2hQREYodGVybSA9ICcnLCB3aW46IGFueSkge1xyXG4gICAgLy8gcmVtb3ZlIGFsbCBzcGVjaWFsIGNoYXJhY3RlcnNcclxuICAgIHRlcm0gPSAodGVybSB8fCAnJykucmVwbGFjZSgvW1xcXCJ8XFwqXS9nLCAnJykudHJpbSgpO1xyXG4gICAgaWYgKHRlcm0gJiYgd2luPy5QREZWaWV3ZXJBcHBsaWNhdGlvbj8uYXBwQ29uZmlnPy5maW5kQmFyKSB7XHJcbiAgICAgIC8vIHdpbi5QREZWaWV3ZXJBcHBsaWNhdGlvbi5maW5kQ29udHJvbGxlci5leGVjdXRlQ29tbWFuZCgnZmluZCcsIHtcclxuICAgICAgLy8gICBjYXNlU2Vuc2l0aXZlOiBmYWxzZSxcclxuICAgICAgLy8gICBmaW5kUHJldmlvdXM6IHVuZGVmaW5lZCxcclxuICAgICAgLy8gICBoaWdobGlnaHRBbGw6IHRydWUsXHJcbiAgICAgIC8vICAgcGhyYXNlU2VhcmNoOiB0cnVlLFxyXG4gICAgICAvLyAgIHF1ZXJ5OiB0ZXJtXHJcbiAgICAgIC8vIH0pO1xyXG4gICAgICB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uYXBwQ29uZmlnLmZpbmRCYXIuZmluZEZpZWxkLnZhbHVlID0gdGVybTtcclxuICAgICAgd2luLlBERlZpZXdlckFwcGxpY2F0aW9uLmFwcENvbmZpZy5maW5kQmFyLmhpZ2hsaWdodEFsbENoZWNrYm94LmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uYXBwQ29uZmlnLmZpbmRCYXIuY2FzZVNlbnNpdGl2ZUNoZWNrYm94LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJldmVudERyb3BFdmVudCh3aW46IGFueSkge1xyXG4gICAgaWYgKHRoaXMuaWZyYW1lPy5zcmM/LnN0YXJ0c1dpdGgod2luZG93LmxvY2F0aW9uLm9yaWdpbikpIHtcclxuICAgICAgd2luPy5kb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIChlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpKTtcclxuICAgICAgLy8gZGlzcGFjaCBkcmFnICYgZHJvcCBldmVudHMgdG8gbWFpbiB3aW5kb3dcclxuICAgICAgd2luPy5kb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VudGVyJywgKGUpID0+IHtcclxuICAgICAgICB3aW5kb3cuZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRHJhZ0V2ZW50KCdkcmFnZW50ZXInLCBlKSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB3aW5kb3cuZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRHJhZ0V2ZW50KCdkcmFnbGVhdmUnLCBlKSksIDEwKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpZnJhbWVJbml0KGlmcmFtZSA9IHRoaXMuaWZyYW1lLCBvbmxvYWQ/OiBGdW5jdGlvbikge1xyXG4gICAgaWYgKGlmcmFtZSkge1xyXG4gICAgICBpZnJhbWUuX2luaXQgfHwgZnJvbUV2ZW50KGlmcmFtZSwgJ2xvYWQnKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgd2luID0gdGhpcy5zZXRBcGkoaWZyYW1lKTsgICAgICAgICAgXHJcbiAgICAgICAgICBvbmxvYWQgJiYgb25sb2FkKCk7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgLy8gdGhpcy5sb2FkaW5nID0gZmFsc2U7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoUERGKHRoaXMuc2VhcmNoVGVybSwgd2luKTtcclxuICAgICAgICAgICAgdGhpcy5wcmV2ZW50RHJvcEV2ZW50KHdpbik7XHJcbiAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICBpZnJhbWUuX2luaXQgPSAhIXRoaXMuc2V0QXBpKGlmcmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEFwaShpZnJhbWU6IGFueSkge1xyXG4gICAgLy8gc2V0IGFwaSB0byBpZnJhbWUgd2luZG93XHJcbiAgICBjb25zdCB3aW4gPSBpZnJhbWU/LmNvbnRlbnRXaW5kb3cgfHwgaWZyYW1lO1xyXG4gICAgd2luWydhcGknXSA9IHdpbmRvd1snYXBpJ107XHJcbiAgICByZXR1cm4gd2luO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyByZXR1cm4gQ29udGVudFByZXZpZXdTZXJ2aWNlLnVuZG9ja1dpbkFjdGl2ZSgpICYmIHRoaXMub3BlbldpbmRvdygnJywgdHJ1ZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
391
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbWVkaWEvbWVkaWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUM3RSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWEsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFDTCxNQUFNLEVBRU4sYUFBYSxFQUNiLGdCQUFnQixFQUdoQixVQUFVLEVBQ1YsY0FBYyxFQUNmLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBeUIvRSxNQUFNLE9BQU8sY0FBZSxTQUFRLG9CQUFvQjtJQW9KdEQsWUFBbUIsU0FBMkIsRUFDcEMsR0FBZSxFQUNmLFFBQW1CLEVBQ25CLE1BQXFCLEVBQ3JCLE9BQWUsRUFDZixNQUFjLEVBQ2QsY0FBOEIsRUFDOUIsT0FBdUI7UUFDL0IsS0FBSyxFQUFFLENBQUM7UUFSUyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNwQyxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixXQUFNLEdB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QUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELGVBQWU7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNULCtFQUErRTtJQUNqRixDQUFDOztBQXJaTSwyQkFBWSxHQUFHLHlIQUF5SCxDQUFDO0FBQ3pJLHlCQUFVLEdBQUcsc09BQXNPLENBQUM7O1lBVDVQLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkFDcEIsaXVFQUFxQztnQkFFckMsU0FBUyxFQUFFLENBQUMscUJBQXFCLENBQUM7O2FBQ25DOzs7WUFsQ0MsZ0JBQWdCO1lBR2hCLFVBQVU7WUFSMEMsU0FBUztZQUk3RCxhQUFhO1lBSndFLE1BQU07WUFFM0YsTUFBTTtZQUhBLGNBQWM7WUFVcEIsY0FBYzs7OzZCQXFGYixLQUFLOzZCQU1MLEtBQUs7eUJBR0wsS0FBSzttQkFDTCxXQUFXLFNBQUMsWUFBWTt5QkFFeEIsU0FBUyxTQUFDLFlBQVk7cUJBQ3RCLFNBQVMsU0FBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDOzBCQUNsQyxTQUFTLFNBQUMsYUFBYSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQzs2QkFFdkMsS0FBSyxTQUFDLGFBQWE7NEJBTW5CLEtBQUssU0FBQyxZQUFZO3VCQUtsQixLQUFLO3lCQVVMLEtBQUs7MEJBVUwsS0FBSzt3QkFjTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQbHVnaW5zU2VydmljZX0gZnJvbSAnLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQsIE9uRGVzdHJveSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb25maWcsXHJcbiAgT2JqZWN0VHlwZSxcclxuICBTeXN0ZW1TZXJ2aWNlLFxyXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgRG1zT2JqZWN0LFxyXG4gIERtc09iamVjdEF0dGFjaG1lbnQsXHJcbiAgRG1zU2VydmljZSxcclxuICBCYWNrZW5kU2VydmljZVxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7dGFrZVVudGlsLCB0YWtlV2hpbGUsIGNhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRmlsZVNpemVQaXBlIH0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGlwZXMvZmlsZXNpemUucGlwZSc7XHJcbmltcG9ydCB7IENvbnRlbnRQcmV2aWV3U2VydmljZSB9IGZyb20gJy4vY29udGVudC1wcmV2aWV3LnNlcnZpY2UnO1xyXG5pbXBvcnQge1Vuc3Vic2NyaWJlT25EZXN0cm95fSBmcm9tICcuLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdlckNvbmZpZyB7XHJcbiAgbWltZVR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBmaWxlRXh0ZW5zaW9uPzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgdmlld2VyOiBzdHJpbmc7XHJcbiAgZXJyb3I/OiBib29sZWFuO1xyXG4gIHR5cGU/OiAnY29tcGFyZScgfCAnZXh0ZW5kJyB8ICdlcnJvcicgfCAnZGVmYXVsdCc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBQcmV2aWV3RmlsZSB7XHJcbiAgdXJpOiBzdHJpbmc7XHJcbiAgdXJpUGRmOiBzdHJpbmc7XHJcbiAgbWltZXR5cGU6IHN0cmluZztcclxuICBtaW1lZ3JvdXA6IHN0cmluZztcclxuICBzaXplOiBudW1iZXI7XHJcbiAgcGF0aD86IHN0cmluZztcclxuICBtZWRpYVR5cGVOYW1lPzogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLW1lZGlhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVkaWEuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21lZGlhLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbQ29udGVudFByZXZpZXdTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVkaWFDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHN0YXRpYyBWSURFT19WSUVXRVIgPSAnYXNzZXRzL19kZWZhdWx0L2FwaS92aWRlby8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX0nO1xyXG4gIHN0YXRpYyBQREZfVklFV0VSID0gJ2Fzc2V0cy9fZGVmYXVsdC9hcGkvcGRmL3dlYi92aWV3ZXIuaHRtbD9maWxlPSZwYXRoPSR7cGF0aH0mcGF0aFBkZj0ke3BhdGhQZGZ9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX0mY3NzPSUyM3Rvb2xiYXJWaWV3ZXJSaWdodCUyMCUyM3ByaW50JTdCZGlzcGxheSUzQWJsb2NrIWltcG9ydGFudCUzQiU3RCc7XHJcblxyXG4gIHByaXZhdGUgU0laRV9MSU1JVCA9IDEwMjQgKiAxMDI0ICogMTA7IC8vIDEwTUJcclxuICBwcml2YXRlIHBkZmpzOiBhbnk7XHJcbiAgbGF0ZXN0VXJpOiBzdHJpbmc7XHJcbiAgc2xpZGVVcmk6IHN0cmluZztcclxuICB2aWV3ZXI6IGFueTtcclxuICBkbXNPYmplY3RUaXRsZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3ByZXZpZXdVcmk6IHN0cmluZztcclxuICBwcml2YXRlIF9kbXNPYmplY3Q6IERtc09iamVjdDtcclxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGZpbGVTaXplUGlwZTogRmlsZVNpemVQaXBlO1xyXG4gIGN1cnJlbnRJbmRleDogbnVtYmVyO1xyXG4gIGF0dGFjaG1lbnRzOiBEbXNPYmplY3RBdHRhY2htZW50W10gPSBbXTtcclxuICBpc01lZGlhID0gZmFsc2U7XHJcbiAgaXNPY3RldFN0cmVhbSA9IGZhbHNlO1xyXG4gIGlzTm90U3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgaXNMYXJnZSA9IGZhbHNlO1xyXG4gIGhhc0Vycm9yID0gZmFsc2U7XHJcbiAgYXR0YWNobWVudHNMb2FkaW5nOiBTdWJzY3JpcHRpb247XHJcbiAgYXR0YWNobWVudHNTaG93bjogYm9vbGVhbjtcclxuICBzZWFyY2hUZXJtOiBzdHJpbmc7XHJcbiAgbWVkaWFUeXBlOiBPYmplY3RUeXBlO1xyXG4gIGN1c3RvbUNvbmZpZzogYW55W10gPSBbXTtcclxuXHJcbiAgZGVmYXVsdFZpZXdlcnMgPSBbXHJcbiAgICB7IFwiZmlsZUV4dGVuc2lvblwiOiBbXCJqc1wiLCBcImpzb25cIl0sIFwidmlld2VyXCI6IFwiYXNzZXRzL19kZWZhdWx0L2FwaS9tb25hY28vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9Jmxhbmd1YWdlPWphdmFzY3JpcHRcIiB9LFxyXG4gICAgeyBcIm1pbWVUeXBlXCI6IFtcImFwcGxpY2F0aW9uL2pzb25cIl0sIFwidmlld2VyXCI6IFwiYXNzZXRzL19kZWZhdWx0L2FwaS9tb25hY28vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9Jmxhbmd1YWdlPWphdmFzY3JpcHRcIiB9LFxyXG4gICAgeyBcIm1pbWVUeXBlXCI6IFtcInRleHQvcGxhaW5cIl0sIFwidmlld2VyXCI6IFwiYXNzZXRzL19kZWZhdWx0L2FwaS9tb25hY28vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCIgfSxcclxuICAgIHsgXCJtaW1lVHlwZVwiOiBbXCJ0ZXh0L3htbFwiXSwgXCJ2aWV3ZXJcIjogXCJhc3NldHMvX2RlZmF1bHQvYXBpL21vbmFjby8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX0mbGFuZ3VhZ2U9eG1sXCIgfSxcclxuICAgIHsgXCJtaW1lVHlwZVwiOiBbXCJ0ZXh0L2phdmFcIl0sIFwidmlld2VyXCI6IFwiYXNzZXRzL19kZWZhdWx0L2FwaS9tb25hY28vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9Jmxhbmd1YWdlPWphdmFcIiB9LFxyXG4gICAgeyBcIm1pbWVUeXBlXCI6IFtcInRleHQvamF2YXNjcmlwdFwiXSwgXCJ2aWV3ZXJcIjogXCJhc3NldHMvX2RlZmF1bHQvYXBpL21vbmFjby8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX0mbGFuZ3VhZ2U9amF2YXNjcmlwdFwiIH0sXHJcbiAgICB7IFwibWltZVR5cGVcIjogW1widGV4dC9odG1sXCJdLCBcInZpZXdlclwiOiBcImFzc2V0cy9fZGVmYXVsdC9hcGkvbW9uYWNvLz9wYXRoPSR7cGF0aH0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfSZsYW5ndWFnZT1odG1sXCIgfSxcclxuICAgIHtcclxuICAgICAgXCJtaW1lVHlwZVwiOiBbXCJ0ZXh0L21hcmtkb3duXCIsIFwidGV4dC94LXdlYi1tYXJrZG93blwiLCBcInRleHQveC1tYXJrZG93blwiXSxcclxuICAgICAgXCJ2aWV3ZXJcIjogXCJhc3NldHMvX2RlZmF1bHQvYXBpL21vbmFjby8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX0mbGFuZ3VhZ2U9bWFya2Rvd25cIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJtaW1lVHlwZVwiOiBbXCJhdWRpby9tcDNcIiwgXCJhdWRpby93ZWJtXCIsIFwiYXVkaW8vb2dnXCIsIFwiYXVkaW8vbXBlZ1wiLCBcInZpZGVvL21wNFwiLCBcInZpZGVvL3dlYm1cIiwgXCJ2aWRlby9vZ2dcIiwgXCJhcHBsaWNhdGlvbi9vZ2dcIl0sXHJcbiAgICAgIFwidmlld2VyXCI6IFwiYXNzZXRzL19kZWZhdWx0L2FwaS92aWRlby8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJtaW1lVHlwZVwiOiBbXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvYXBuZ1wiLCBcImltYWdlL2dpZlwiLCBcImltYWdlL3N2Zyt4bWxcIiwgXCJpbWFnZS93ZWJwXCJdLFxyXG4gICAgICBcInZpZXdlclwiOiBcImFzc2V0cy9fZGVmYXVsdC9hcGkvaW1nLz9wYXRoPSR7cGF0aH0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfVwiXHJcbiAgICB9LFxyXG4gICAgeyBcInZpZXdlclwiOiBcIigpID0+IHBhcmFtZXRlcnMuZGVmYXVsdFZpZXdlciArICcjJ1wiIH0sXHJcbiAgICB7IFwiZXJyb3JcIjogdHJ1ZSwgXCJ0eXBlXCI6IFwiZXJyb3JcIiwgXCJ2aWV3ZXJcIjogXCJhc3NldHMvX2RlZmF1bHQvYXBpL2Vycm9yLz9wYXRoPSR7cGF0aH0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfVwiIH1cclxuICBdO1xyXG5cclxuICBpc1VuZG9ja2VkOiBib29sZWFuO1xyXG4gIFxyXG4gIEBJbnB1dCgpIHVuZG9ja0Rpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIGdldCB1bmRvY2tXaW4oKTogV2luZG93IHtcclxuICAgIHJldHVybiBDb250ZW50UHJldmlld1NlcnZpY2UuZ2V0VW5kb2NrV2luKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBlbmFibGVDbG9zZUJ0biA9IGZhbHNlO1xyXG4gIC8vIGJ5IGRlZmF1bHQsIHRoZSB2aWV3ZXIgaWdub3JlcyB0aGUgdmVyc2lvbiBvZiB0aGUgZG1zIG9iamVjdC4gVGhpcyB3aWxsIGFsd2F5cyBzaG93IHRoZSBsYXRlc3QgdmVyc2lvbi5cclxuICAvLyBXZSBuZWVkIHRoaXMgdG8gYmUgYWJsZSB0byByZWZyZXNoIHRoZSB2aWV3ZXIgYmVjYXVzZSBvdGhlcndpc2UgcGRmanMgd29ya2VyIHdpbGwgZmFpbC5cclxuICBASW5wdXQoKSB1c2VWZXJzaW9uID0gZmFsc2U7XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5vcGVuJykgb3BlbjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29kZXN5c3RlbScpIGNvZGVzeXN0ZW07XHJcbiAgQFZpZXdDaGlsZCgnaWZyYW1lJywge3N0YXRpYzogdHJ1ZX0pIGlmcmFtZTtcclxuICBAVmlld0NoaWxkKCdpZnJhbWVNZWRpYScsIHtzdGF0aWM6IHRydWV9KSBpZnJhbWVNZWRpYTtcclxuXHJcbiAgQElucHV0KCdhdHRhY2htZW50cycpXHJcbiAgc2V0IHNldEF0dGFjaG1lbnRzKGF0dGFjaG1lbnRzKSB7XHJcbiAgICB0aGlzLmF0dGFjaG1lbnRzID0gYXR0YWNobWVudHM7XHJcbiAgICB0aGlzLmF0dGFjaG1lbnRzU2hvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnc2VhcmNoVGVybScpXHJcbiAgc2V0IHNldFNlYXJjaFRlcm0oc2VhcmNoVGVybSkge1xyXG4gICAgdGhpcy5zZWFyY2hUZXJtID0gc2VhcmNoVGVybSB8fCAnJztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRpc2FibGVkKGRpc2FibGVkKSB7XHJcbiAgICB0aGlzLl9kaXNhYmxlZCA9ICEhZGlzYWJsZWQ7XHJcbiAgICB0aGlzLnRvb2dsZVZpZXdlcigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcHJldmlld1VyaSh1cmk6IHN0cmluZykge1xyXG4gICAgdGhpcy5fcHJldmlld1VyaSA9IHVyaTtcclxuICAgIHRoaXMudG9vZ2xlVmlld2VyKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgcHJldmlld1VyaSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9wcmV2aWV3VXJpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcHJldmlld0ZpbGUoZmlsZTogUHJldmlld0ZpbGUpIHtcclxuICAgIGlmIChmaWxlKSB7XHJcbiAgICAgIHRoaXMudmlld2VyID0gdGhpcy5nZXRWaWV3ZXIoZmlsZSk7XHJcbiAgICAgIHRoaXMuaXNNZWRpYSA9IHRoaXMudmlld2VyLnZpZXdlciAhPT0gTWVkaWFDb21wb25lbnQuUERGX1ZJRVdFUjtcclxuICAgICAgdGhpcy5pc09jdGV0U3RyZWFtID0gISFmaWxlLm1pbWVncm91cD8ubWF0Y2goL29jdGV0LXN0cmVhbS8pO1xyXG4gICAgICB0aGlzLmlzTGFyZ2UgPSBmaWxlLnNpemUgJiYgZmlsZS5zaXplID4gdGhpcy5TSVpFX0xJTUlUO1xyXG4gICAgICB0aGlzLm1lZGlhVHlwZSA9IGZpbGUubWVkaWFUeXBlTmFtZSAmJiB0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlKGZpbGUubWVkaWFUeXBlTmFtZSk7XHJcbiAgICAgIHRoaXMucHJldmlld1VyaSA9IHRoaXMuaXNNZWRpYSA/IHRoaXMudmlld2VyLnByZXZpZXdVcmkgOiBmaWxlLnVyaVBkZjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucHJldmlld1VyaSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZG1zT2JqZWN0KGl0ZW06IERtc09iamVjdCkge1xyXG4gICAgdGhpcy5fZG1zT2JqZWN0ID0gaXRlbTtcclxuICAgIHRoaXMuZG1zT2JqZWN0VGl0bGUgPSBpdGVtLnRpdGxlIHx8ICcuLi4nO1xyXG5cclxuICAgIHRoaXMuc2V0QXR0YWNobWVudHMgPSBbXTtcclxuICAgIGlmICh0aGlzLmF0dGFjaG1lbnRzTG9hZGluZykge1xyXG4gICAgICAvLyBjYW5jZWwgYW55IHBlbmRpbmcgcmVxdWVzdHNcclxuICAgICAgdGhpcy5hdHRhY2htZW50c0xvYWRpbmcudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmIChpdGVtLmNvbnRlbnQgJiYgaXRlbS5jb250ZW50LmNvbnRlbnRzICYmIGl0ZW0uY29udGVudC5jb250ZW50cy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgZmlsZSA9IGl0ZW0uY29udGVudC5jb250ZW50c1swXSB8fCB7fTtcclxuXHJcbiAgICAgIHRoaXMucHJldmlld0ZpbGUgPSB7XHJcbiAgICAgICAgdXJpOiB0aGlzLmRtcy5nZXRQcmV2aWV3KGl0ZW0uY29udGVudC5pZCwgaXRlbS5jb250ZW50LnR5cGUsIHRoaXMudXNlVmVyc2lvbiA/IGl0ZW0udmVyc2lvbiA6IG51bGwpLFxyXG4gICAgICAgIHVyaVBkZjogdGhpcy5kbXMuZ2V0UHJldmlldyhpdGVtLmNvbnRlbnQuaWQsIGl0ZW0uY29udGVudC50eXBlLCB0aGlzLnVzZVZlcnNpb24gPyBpdGVtLnZlcnNpb24gOiBudWxsLCAnUERGJyksXHJcbiAgICAgICAgbWltZXR5cGU6IGZpbGUubWltZXR5cGUsXHJcbiAgICAgICAgbWltZWdyb3VwOiBmaWxlLm1pbWVncm91cCxcclxuICAgICAgICBzaXplOiBmaWxlLnNpemUsXHJcbiAgICAgICAgcGF0aDogZmlsZS5wYXRoLFxyXG4gICAgICAgIG1lZGlhVHlwZU5hbWU6IGl0ZW0udHlwZU5hbWVcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmICghIWZpbGUubWltZWdyb3VwPy5tYXRjaCgvXm1haWx8b2N0ZXQtc3RyZWFtLykpIHtcclxuICAgICAgICB0aGlzLnNsaWRlVXJpID0gdGhpcy5kbXMuZ2V0U2xpZGUoaXRlbS5jb250ZW50LmlkLCBpdGVtLmNvbnRlbnQudHlwZSwgdGhpcy51c2VWZXJzaW9uID8gaXRlbS52ZXJzaW9uIDogbnVsbCwgMjU2KTtcclxuICAgICAgICB0aGlzLmF0dGFjaG1lbnRzTG9hZGluZyA9IHRoaXMuZG1zLmdldEF0dGFjaG1lbnRzKGl0ZW0pLnN1YnNjcmliZShhID0+IHRoaXMuc2V0QXR0YWNobWVudHMgPSBhKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucHJldmlld1VyaSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgZG1zOiBEbXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBzeXN0ZW06IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWcsXHJcbiAgICBwcml2YXRlIHBsdWdpbnNTZXJ2aWNlOiBQbHVnaW5zU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5maWxlU2l6ZVBpcGUgPSBuZXcgRmlsZVNpemVQaXBlKHRyYW5zbGF0ZSk7XHJcbiAgICB0aGlzLlNJWkVfTElNSVQgPSB0aGlzLmNvbmZpZy5nZXRSYXcoJ3ByZXZpZXcuZmlsZVNpemVMaW1pdCcpIHx8IHRoaXMuU0laRV9MSU1JVDtcclxuICAgIHRoaXMuY3VzdG9tQ29uZmlnID0gKHRoaXMuY29uZmlnLmdldFJhdygncHJldmlldy52aWV3ZXJzJykgfHwgW10pLmNvbmNhdCh0aGlzLmRlZmF1bHRWaWV3ZXJzKTtcclxuICAgIFxyXG4gICAgdGhpcy5wbHVnaW5zU2VydmljZS5hcGkuY29udGVudC5jYXRjaEVycm9yKCkuc3Vic2NyaWJlKChldnQ6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGVyciwgd2luLCBwYXJhbWV0ZXJzIH0gPSBldnQuZGF0YTtcclxuICAgICAgY29uc3QgdXJpID0gdGhpcy5wbHVnaW5zU2VydmljZS5hcHBseUZ1bmN0aW9uKHRoaXMuY3VzdG9tQ29uZmlnPy5maW5kKCh2KSA9PiB2LmVycm9yKT8udmlld2VyLCAnYXBpLCBlcnIsIHdpbiwgcGFyYW1ldGVycycsIFtcclxuICAgICAgICB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwaSxcclxuICAgICAgICBlcnIsXHJcbiAgICAgICAgd2luLFxyXG4gICAgICAgIHBhcmFtZXRlcnNcclxuICAgICAgXSk7XHJcblxyXG4gICAgICB1cmkgJiYgdGhpcy5sb2FkRG9jdW1lbnQodGhpcy5yZXNvbHZlVXJpKHVyaSwgcGFyYW1ldGVycyksIHRydWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKENvbnRlbnRQcmV2aWV3U2VydmljZS51bmRvY2tXaW5BY3RpdmUoKSkge1xyXG4gICAgICB0aGlzLnVuZG9jayhmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBdHRhY2htZW50KGF0dGFjaG1lbnQ/LCBmb3JjZT8pIHtcclxuICAgIGNvbnN0IHByZXZpZXdVcmkgPSBhdHRhY2htZW50ICYmIHRoaXMuaXNNZWRpYSA/IHRoaXMuZ2V0Vmlld2VyKHt1cmlQZGYgOiBhdHRhY2htZW50Py5wcmV2aWV3VXJpfSBhcyBQcmV2aWV3RmlsZSkucHJldmlld1VyaSA6IGF0dGFjaG1lbnQ/LnByZXZpZXdVcmk7XHJcbiAgICB0aGlzLmxvYWREb2N1bWVudChwcmV2aWV3VXJpIHx8IHRoaXMucHJldmlld1VyaSwgZm9yY2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvb2dsZVZpZXdlcigpIHtcclxuICAgIHRoaXMub3BlbiA9ICF0aGlzLmRpc2FibGVkICYmICEhdGhpcy5wcmV2aWV3VXJpO1xyXG4gICAgaWYgKHRoaXMudW5kb2NrRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5pc1VuZG9ja2VkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcGVuIHx8IHRoaXMuaXNVbmRvY2tlZCkge1xyXG4gICAgICB0aGlzLmxvYWREb2N1bWVudCh0aGlzLnByZXZpZXdVcmksIHRoaXMuaXNVbmRvY2tlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMubG9hZERvY3VtZW50KHRoaXMucHJldmlld1VyaSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9wZW5QZGZWaWV3ZXIodXJpOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbi5vcGVuKHVyaSkudGhlbigoKSA9PiAodGhpcy5oYXNFcnJvciA9IGZhbHNlKSkuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICB0aGlzLmhhc0Vycm9yID0gIXRoaXMuaXNPY3RldFN0cmVhbTtcclxuICAgICAgdGhpcy5pc05vdFN1cHBvcnRlZCA9IHRoaXMuaXNPY3RldFN0cmVhbTtcclxuICAgIH0pO1xyXG4gICAgLy8gdGhpcy5zZWFyY2goKTtcclxuICB9XHJcblxyXG4gIGdldFZpZXdlcihmaWxlOiBQcmV2aWV3RmlsZSk6IGFueSB7XHJcbiAgICBjb25zdCBpc1ZpZGVvID0gISFmaWxlLm1pbWVncm91cD8ubWF0Y2goL15hdWRpb3xedmlkZW8vKTtcclxuICAgIGNvbnN0IGRlZmF1bHRWaWV3ZXIgPSBpc1ZpZGVvID8gTWVkaWFDb21wb25lbnQuVklERU9fVklFV0VSIDogTWVkaWFDb21wb25lbnQuUERGX1ZJRVdFUjtcclxuICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlLnBhdGg/LmluY2x1ZGVzKCcuJykgPyBmaWxlLnBhdGguc3BsaXQoJy4nKS5wb3AoKSA6ICcnO1xyXG4gICAgY29uc3QgbWltZVR5cGUgPSBmaWxlLm1pbWV0eXBlO1xyXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jdXN0b21Db25maWcuZmluZCgoYzogVmlld2VyQ29uZmlnKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1hdGNoTVQgPSAhYy5taW1lVHlwZSB8fCAodHlwZW9mIGMubWltZVR5cGUgPT09ICdzdHJpbmcnID8gW2MubWltZVR5cGVdIDogYy5taW1lVHlwZSkuaW5jbHVkZXMobWltZVR5cGU/LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICBjb25zdCBtYXRjaEZFID0gIWMuZmlsZUV4dGVuc2lvbiB8fCAodHlwZW9mIGMuZmlsZUV4dGVuc2lvbiA9PT0gJ3N0cmluZycgPyBbYy5maWxlRXh0ZW5zaW9uXSA6IGMuZmlsZUV4dGVuc2lvbikuaW5jbHVkZXMoKGZpbGVFeHRlbnNpb24pLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICByZXR1cm4gbWF0Y2hNVCAmJiBtYXRjaEZFICYmICghYy50eXBlIHx8IGMudHlwZSA9PT0gJ2RlZmF1bHQnKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7XHJcbiAgICAgIGZpbGUsXHJcbiAgICAgIHBhdGg6IGxvY2F0aW9uLm9yaWdpbiArIGZpbGUudXJpLFxyXG4gICAgICBwYXRoUGRmOiBsb2NhdGlvbi5vcmlnaW4gKyBmaWxlLnVyaVBkZixcclxuICAgICAgdmlld2VyOiBjb25maWc/LnZpZXdlciB8fCBkZWZhdWx0Vmlld2VyLFxyXG4gICAgICBsb2FkOiBjb25maWc/LmxvYWQsXHJcbiAgICAgIGZpbGVFeHRlbnNpb24sXHJcbiAgICAgIG1pbWVUeXBlLFxyXG4gICAgICB0aGVtZTogJycsXHJcbiAgICAgIGRlZmF1bHRWaWV3ZXIsXHJcbiAgICAgIHByZXZpZXdVcmk6ICcnXHJcbiAgICB9O1xyXG4gICAgcGFyYW1ldGVycy52aWV3ZXIgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24ocGFyYW1ldGVycy52aWV3ZXIsICdjb21wb25lbnQsIGRtc09iamVjdCwgcGFyYW1ldGVycycsIFt0aGlzLCB0aGlzLl9kbXNPYmplY3QsIHBhcmFtZXRlcnNdKSB8fCBkZWZhdWx0Vmlld2VyO1xyXG5cclxuICAgIGNvbnN0IGV4dGVuZCA9IHRoaXMuY3VzdG9tQ29uZmlnLmZpbmQoKGMpID0+IGMudHlwZSA9PT0gJ2V4dGVuZCcpO1xyXG4gICAgaWYgKGV4dGVuZCkgcGFyYW1ldGVycy52aWV3ZXIgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24oZXh0ZW5kLnZpZXdlciwgJ2NvbXBvbmVudCwgZG1zT2JqZWN0LCBwYXJhbWV0ZXJzJywgW3RoaXMsIHRoaXMuX2Rtc09iamVjdCwgcGFyYW1ldGVyc10pO1xyXG5cclxuICAgIHBhcmFtZXRlcnMucHJldmlld1VyaSA9IHRoaXMucmVzb2x2ZVVyaShwYXJhbWV0ZXJzLnZpZXdlciwgcGFyYW1ldGVycyk7XHJcbiAgICByZXR1cm4gcGFyYW1ldGVycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzb2x2ZVVyaSh2aWV3ZXI6IHN0cmluZywgcGFyYW1ldGVyczogYW55KSB7XHJcbiAgICByZXR1cm4gKHZpZXdlciA/IGRvY3VtZW50LmJhc2VVUkkgOiAnJykgKyB2aWV3ZXJcclxuICAgIC5yZXBsYWNlKCcke29yaWdpbmFsUGF0aH0nLCBwYXJhbWV0ZXJzLnBhdGgpXHJcbiAgICAucmVwbGFjZSgnJHtwYXRofScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLnBhdGgpKVxyXG4gICAgLnJlcGxhY2UoJyR7cGF0aFBkZn0nLCBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy5wYXRoUGRmKSlcclxuICAgIC5yZXBsYWNlKCcke2ZpbGVFeHRlbnNpb259JywgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnMuZmlsZUV4dGVuc2lvbikpXHJcbiAgICAucmVwbGFjZSgnJHttaW1lVHlwZX0nLCBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy5taW1lVHlwZSkpXHJcbiAgICAucmVwbGFjZSgnJHt0aGVtZX0nLCBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy50aGVtZSkpXHJcbiAgICAucmVwbGFjZSgnJHtsYW5nfScsIENvbnRlbnRQcmV2aWV3U2VydmljZS5tYXBMYW5nKHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nKSk7XHJcbiAgfVxyXG5cclxuICB1bmRvY2sob3BlbiA9IHRydWUpIHtcclxuICAgIGlmICh0aGlzLnVuZG9ja0Rpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaXNVbmRvY2tlZCA9ICF0aGlzLmlzVW5kb2NrZWQ7XHJcbiAgICBpZiAoIXRoaXMuaXNVbmRvY2tlZCkge1xyXG4gICAgICBDb250ZW50UHJldmlld1NlcnZpY2UuY2xvc2VXaW4oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihfID0+IHtcclxuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnVuZG9ja1dpbiAmJiAhQ29udGVudFByZXZpZXdTZXJ2aWNlLnVuZG9ja1dpbkFjdGl2ZSgpKSB7XHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xyXG4gICAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuaXNVbmRvY2tlZCAmJiB0aGlzLnVuZG9jaygpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICBmcm9tRXZlbnQod2luZG93LCAnYmVmb3JldW5sb2FkJylcclxuICAgICAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLmlzVW5kb2NrZWQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShlID0+IENvbnRlbnRQcmV2aWV3U2VydmljZS5jbG9zZVdpbigpKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZihvcGVuKSB7XHJcbiAgICAgIHRoaXMubG9hZERvY3VtZW50KHRoaXMucHJldmlld1VyaSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuV2luZG93KHNyYzogc3RyaW5nLCBjbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBDb250ZW50UHJldmlld1NlcnZpY2UudW5kb2NrV2luKHNyYyk7XHJcbiAgICBpZiAoY2xlYW4pIHtcclxuICAgICAgd2hpbGUgKHRoaXMudW5kb2NrV2luLmRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCkge1xyXG4gICAgICAgIHRoaXMudW5kb2NrV2luLmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy51bmRvY2tXaW4uZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICghc3JjICYmICF0aGlzLnVuZG9ja1dpbi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbm8tZmlsZScpKSB7XHJcbiAgICAgIHRoaXMudW5kb2NrV2luLmRvY3VtZW50LndyaXRlKFxyXG4gICAgICAgIGA8ZGl2IGlkPVwibm8tZmlsZVwiIHN0eWxlPVwib3BhY2l0eTogMC4wNjsgZGlzcGxheTogZmxleDsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyOFwiIGhlaWdodD1cIjEyOFwiIHZpZXdCb3g9XCIwIDAgNDggNDhcIj5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMjkgNEgxNC42Yy0uOCAwLTEuNS4yLTIgLjZsMjcuMiAyNy4ydi0xN0wyOSA0em0tLjcgMTEuNlY3LjhsNy44IDcuOGgtNy44ek00My40IDQwLjhsLTIuNSAyLjUtMy41LTMuNWMtLjQuMS0uOC4yLTEuMi4ySDE0LjZjLTIgXHJcbiAgICAgICAgICAwLTMuNi0xLjYtMy42LTMuNlYxMy41TDUuOSA4LjRsMi41LTIuNUwxMSA4LjRsMjguNyAyOC43IDMuMSAzLjEuNi42elwiLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxkaXY+YFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZERvY3VtZW50KHVyaTogc3RyaW5nLCBmb3JjZT86IGJvb2xlYW4pIHtcclxuICAgIGlmIChmb3JjZSkge1xyXG4gICAgICB0aGlzLmlzTGFyZ2UgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICghZm9yY2UgJiYgKHRoaXMuZGlzYWJsZWQgfHwgIXVyaSB8fCAodXJpID09PSB0aGlzLmxhdGVzdFVyaSAmJiAhdGhpcy5oYXNFcnJvcikpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMubGF0ZXN0VXJpID0gdXJpIHx8ICcnO1xyXG4gICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc05vdFN1cHBvcnRlZCA9IGZhbHNlO1xyXG5cclxuICAgIFxyXG5cclxuICAgIGlmICh0aGlzLmlzVW5kb2NrZWQpIHtcclxuICAgICAgdGhpcy5vcGVuV2luZG93KHRoaXMubGF0ZXN0VXJpKTtcclxuICAgICAgY29uc3Qgb25sb2FkID0gKCkgPT4gdGhpcy5wbHVnaW5zU2VydmljZS5hcHBseUZ1bmN0aW9uKHRoaXMudmlld2VyPy5sb2FkLCAnaWZyYW1lLCBjb21wb25lbnQnLCBbdGhpcy51bmRvY2tXaW4sIHRoaXNdKTtcclxuICAgICAgdGhpcy5pZnJhbWVJbml0KHRoaXMudW5kb2NrV2luLCB0aGlzLnZpZXdlcj8ubG9hZCAmJiBvbmxvYWQpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNMYXJnZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNNZWRpYSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmlmcmFtZU1lZGlhLm5hdGl2ZUVsZW1lbnQsICdzcmMnLCB0aGlzLmxhdGVzdFVyaSk7XHJcbiAgICAgIGNvbnN0IG9ubG9hZCA9ICgpID0+IHRoaXMucGx1Z2luc1NlcnZpY2UuYXBwbHlGdW5jdGlvbih0aGlzLnZpZXdlcj8ubG9hZCwgJ2lmcmFtZSwgY29tcG9uZW50JywgW3RoaXMuaWZyYW1lTWVkaWEubmF0aXZlRWxlbWVudCwgdGhpc10pO1xyXG4gICAgICB0aGlzLmlmcmFtZUluaXQodGhpcy5pZnJhbWVNZWRpYS5uYXRpdmVFbGVtZW50LCB0aGlzLnZpZXdlcj8ubG9hZCAmJiBvbmxvYWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLnBkZmpzKSB7XHJcbiAgICAgICAgdGhpcy5wZGZqcyA9IHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5wZGZqcywgJ3NyYycsIE1lZGlhQ29tcG9uZW50LlBERl9WSUVXRVIucmVwbGFjZSgvXFw/LiovLCAnP2ZpbGU9JicpKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLnBkZmpzLCAnbG9hZCcsICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnMuc2V0KCdzaWRlYmFyVmlld09uTG9hZCcsIDApO1xyXG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uT3B0aW9ucy5zZXQoJ3ZpZXdPbkxvYWQnLCBmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLnBkZmpzLmNvbnRlbnRXaW5kb3cuUERGVmlld2VyQXBwbGljYXRpb25PcHRpb25zLnNldCgnbG9jYWxlJywgQ29udGVudFByZXZpZXdTZXJ2aWNlLm1hcExhbmcodGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcpKTtcclxuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5kb2N1bWVudC53ZWJMMTBuLnNldExhbmd1YWdlKENvbnRlbnRQcmV2aWV3U2VydmljZS5tYXBMYW5nKHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nKSk7XHJcbiAgICAgICAgICB0aGlzLnBkZmpzLmNvbnRlbnRXaW5kb3cuUERGVmlld2VyQXBwbGljYXRpb24uX2luaXRpYWxpemVMMTBuKCk7XHJcbiAgICAgICAgICB0aGlzLnBkZmpzLmNvbnRlbnRXaW5kb3cuUERGVmlld2VyQXBwbGljYXRpb25PcHRpb25zLnNldCgndmlld2VyQ3NzVGhlbWUnLCAxKTtcclxuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbi5fZm9yY2VDc3NUaGVtZSgpO1xyXG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uLmFwcENvbmZpZy52aWV3ZXJDb250YWluZXJcclxuICAgICAgICAgICAgLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIGUgPT4gd2luZG93LmRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IERyYWdFdmVudCgnZHJhZ2VudGVyJywgZSkpKTtcclxuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbi5hcHBDb25maWcudmlld2VyQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCkpO1xyXG5cclxuICAgICAgICAgIHRoaXMub3BlblBkZlZpZXdlcih0aGlzLmxhdGVzdFVyaSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZGZqcy5jb250ZW50V2luZG93ICYmIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbikge1xyXG4gICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbi5wZGZTaWRlYmFyLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5vcGVuUGRmVmlld2VyKHRoaXMubGF0ZXN0VXJpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1c3RvbSBzZWFyY2ggaW5zaWRlIFBERi5KUyBiYXNlZCBvbiBzZWFyY2ggdGVybVxyXG4gICAqIEBwYXJhbSB0ZXJtIHNlYXJjaCB0ZXJtXHJcbiAgICogQHBhcmFtIHdpbiBpZnJhbWUgd2luZG93XHJcbiAgICovXHJcbiAgIHByaXZhdGUgc2VhcmNoUERGKHRlcm0gPSAnJywgd2luOiBhbnkpIHtcclxuICAgIC8vIHJlbW92ZSBhbGwgc3BlY2lhbCBjaGFyYWN0ZXJzXHJcbiAgICB0ZXJtID0gKHRlcm0gfHwgJycpLnJlcGxhY2UoL1tcXFwifFxcKl0vZywgJycpLnRyaW0oKTtcclxuICAgIGlmICh0ZXJtICYmIHdpbj8uUERGVmlld2VyQXBwbGljYXRpb24/LmFwcENvbmZpZz8uZmluZEJhcikge1xyXG4gICAgICAvLyB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uZmluZENvbnRyb2xsZXIuZXhlY3V0ZUNvbW1hbmQoJ2ZpbmQnLCB7XHJcbiAgICAgIC8vICAgY2FzZVNlbnNpdGl2ZTogZmFsc2UsXHJcbiAgICAgIC8vICAgZmluZFByZXZpb3VzOiB1bmRlZmluZWQsXHJcbiAgICAgIC8vICAgaGlnaGxpZ2h0QWxsOiB0cnVlLFxyXG4gICAgICAvLyAgIHBocmFzZVNlYXJjaDogdHJ1ZSxcclxuICAgICAgLy8gICBxdWVyeTogdGVybVxyXG4gICAgICAvLyB9KTtcclxuICAgICAgd2luLlBERlZpZXdlckFwcGxpY2F0aW9uLmFwcENvbmZpZy5maW5kQmFyLmZpbmRGaWVsZC52YWx1ZSA9IHRlcm07XHJcbiAgICAgIHdpbi5QREZWaWV3ZXJBcHBsaWNhdGlvbi5hcHBDb25maWcuZmluZEJhci5oaWdobGlnaHRBbGxDaGVja2JveC5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgd2luLlBERlZpZXdlckFwcGxpY2F0aW9uLmFwcENvbmZpZy5maW5kQmFyLmNhc2VTZW5zaXRpdmVDaGVja2JveC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByZXZlbnREcm9wRXZlbnQod2luOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmlmcmFtZT8uc3JjPy5zdGFydHNXaXRoKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pKSB7XHJcbiAgICAgIHdpbj8uZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCAoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSk7XHJcbiAgICAgIC8vIGRpc3BhY2ggZHJhZyAmIGRyb3AgZXZlbnRzIHRvIG1haW4gd2luZG93XHJcbiAgICAgIHdpbj8uZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIChlKSA9PiB7XHJcbiAgICAgICAgd2luZG93LmRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IERyYWdFdmVudCgnZHJhZ2VudGVyJywgZSkpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gd2luZG93LmRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IERyYWdFdmVudCgnZHJhZ2xlYXZlJywgZSkpLCAxMCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWZyYW1lSW5pdChpZnJhbWUgPSB0aGlzLmlmcmFtZSwgb25sb2FkPzogRnVuY3Rpb24pIHtcclxuICAgIGlmIChpZnJhbWUpIHtcclxuICAgICAgaWZyYW1lLl9pbml0IHx8IGZyb21FdmVudChpZnJhbWUsICdsb2FkJylcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHdpbiA9IHRoaXMuc2V0QXBpKGlmcmFtZSk7ICAgICAgICAgIFxyXG4gICAgICAgICAgb25sb2FkICYmIG9ubG9hZCgpO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubG9hZGluZyA9IGZhbHNlOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFBERih0aGlzLnNlYXJjaFRlcm0sIHdpbik7XHJcbiAgICAgICAgICAgIHRoaXMucHJldmVudERyb3BFdmVudCh3aW4pO1xyXG4gICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgaWZyYW1lLl9pbml0ID0gISF0aGlzLnNldEFwaShpZnJhbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRBcGkoaWZyYW1lOiBhbnkpIHtcclxuICAgIC8vIHNldCBhcGkgdG8gaWZyYW1lIHdpbmRvd1xyXG4gICAgY29uc3Qgd2luID0gaWZyYW1lPy5jb250ZW50V2luZG93IHx8IGlmcmFtZTtcclxuICAgIHdpblsnYXBpJ10gPSB3aW5kb3dbJ2FwaSddO1xyXG4gICAgcmV0dXJuIHdpbjtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gcmV0dXJuIENvbnRlbnRQcmV2aWV3U2VydmljZS51bmRvY2tXaW5BY3RpdmUoKSAmJiB0aGlzLm9wZW5XaW5kb3coJycsIHRydWUpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19