@smarterplan/ngx-smarterplan-core 1.4.4 → 1.4.6

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 (79) hide show
  1. package/esm2022/lib/components/csv-export/csv-export.component.mjs +5 -6
  2. package/esm2022/lib/components/loader/loader.component.mjs +7 -8
  3. package/esm2022/lib/components/menu-bar/avatar/avatar.component.mjs +6 -7
  4. package/esm2022/lib/components/menu-bar/menu-bar.component.mjs +7 -8
  5. package/esm2022/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +8 -9
  6. package/esm2022/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +6 -7
  7. package/esm2022/lib/components/search-bar/search-bar.component.mjs +6 -7
  8. package/esm2022/lib/components/support-modal/support-modal.component.mjs +6 -7
  9. package/esm2022/lib/helpers.service.mjs +1 -1
  10. package/esm2022/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +1 -1
  11. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
  12. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
  13. package/esm2022/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
  14. package/esm2022/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
  15. package/esm2022/lib/matterport-extensions/security-camera/SecurityCamera.mjs +1 -1
  16. package/esm2022/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
  17. package/esm2022/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +1 -1
  18. package/esm2022/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +1 -1
  19. package/esm2022/lib/mattertagData.mjs +1 -1
  20. package/esm2022/lib/ngx-smarterplan-core.module.mjs +6 -7
  21. package/esm2022/lib/ngx-smarterplan-core.service.mjs +6 -7
  22. package/esm2022/lib/pipes/duration-to-string.pipe.mjs +6 -7
  23. package/esm2022/lib/pipes/format-date-number-to-digits.pipe.mjs +6 -7
  24. package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +6 -7
  25. package/esm2022/lib/pipes/safe-url.pipe.mjs +6 -7
  26. package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +9 -10
  27. package/esm2022/lib/pipes/username-from-id.pipe.mjs +6 -7
  28. package/esm2022/lib/services/amplify-cache.service.mjs +7 -8
  29. package/esm2022/lib/services/base-tab.service.mjs +6 -7
  30. package/esm2022/lib/services/baseVisibility.service.mjs +6 -7
  31. package/esm2022/lib/services/content.service.mjs +6 -7
  32. package/esm2022/lib/services/filter.service.mjs +6 -7
  33. package/esm2022/lib/services/intervention.service.mjs +6 -7
  34. package/esm2022/lib/services/locale.service.mjs +9 -10
  35. package/esm2022/lib/services/matterport-import.service.mjs +6 -7
  36. package/esm2022/lib/services/matterport.service.mjs +7 -8
  37. package/esm2022/lib/services/models/affectation.service.mjs +7 -8
  38. package/esm2022/lib/services/models/base-object.service.mjs +6 -7
  39. package/esm2022/lib/services/models/capture.service.mjs +7 -8
  40. package/esm2022/lib/services/models/comment.service.mjs +7 -8
  41. package/esm2022/lib/services/models/domain.service.mjs +7 -8
  42. package/esm2022/lib/services/models/equipment.service.mjs +7 -8
  43. package/esm2022/lib/services/models/event.service.mjs +7 -8
  44. package/esm2022/lib/services/models/feature.service.mjs +7 -8
  45. package/esm2022/lib/services/models/hashtag.service.mjs +7 -8
  46. package/esm2022/lib/services/models/layer.service.mjs +7 -8
  47. package/esm2022/lib/services/models/measurement.service.mjs +7 -8
  48. package/esm2022/lib/services/models/mission.service.mjs +7 -8
  49. package/esm2022/lib/services/models/navigation.service.mjs +7 -8
  50. package/esm2022/lib/services/models/node.service.mjs +7 -8
  51. package/esm2022/lib/services/models/object3D.service.mjs +7 -8
  52. package/esm2022/lib/services/models/operation.service.mjs +7 -8
  53. package/esm2022/lib/services/models/organisation.service.mjs +7 -8
  54. package/esm2022/lib/services/models/plan.service.mjs +8 -10
  55. package/esm2022/lib/services/models/poi.service.mjs +7 -8
  56. package/esm2022/lib/services/models/profile.service.mjs +7 -8
  57. package/esm2022/lib/services/models/property.service.mjs +7 -8
  58. package/esm2022/lib/services/models/space.service.mjs +7 -8
  59. package/esm2022/lib/services/models/template.service.mjs +7 -8
  60. package/esm2022/lib/services/models/ticket.service.mjs +7 -8
  61. package/esm2022/lib/services/models/visit.service.mjs +6 -7
  62. package/esm2022/lib/services/models/zone.service.mjs +7 -8
  63. package/esm2022/lib/services/navigator.service.mjs +6 -7
  64. package/esm2022/lib/services/s3.service.mjs +1 -1
  65. package/esm2022/lib/services/search.service.mjs +6 -7
  66. package/esm2022/lib/services/support.service.mjs +6 -7
  67. package/esm2022/lib/services/tag.service.mjs +6 -7
  68. package/esm2022/lib/services/user.service.mjs +9 -10
  69. package/esm2022/lib/services/validators.service.mjs +6 -7
  70. package/esm2022/lib/services/viewer.service.mjs +6 -7
  71. package/esm2022/lib/services/zone-drawer.service.mjs +1 -1
  72. package/esm2022/lib/services/zoneChange.service.mjs +6 -7
  73. package/esm2022/lib/types.service.mjs +1 -1
  74. package/esm2022/lib/validators/no-empty.directive.mjs +1 -1
  75. package/esm2022/lib/validators/number.directive.mjs +1 -1
  76. package/esm2022/lib/validators/text.directive.mjs +1 -1
  77. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +277 -278
  78. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  79. package/package.json +26 -6
@@ -3,7 +3,7 @@
3
3
  import { Injectable } from '@angular/core';
4
4
  import { PoiType, } from '../types.service';
5
5
  import * as i0 from "@angular/core";
6
- class BaseTagService {
6
+ export class BaseTagService {
7
7
  constructor() { }
8
8
  async getHtmlToInject(tagType, object) {
9
9
  throw new Error(`getHtmlToInject is not implemented in the base class.
@@ -99,14 +99,13 @@ class BaseTagService {
99
99
  throw new Error(`onActionYoutubeClick is not implemented in the base class.
100
100
  Please override this method in your extended class.`);
101
101
  }
102
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseTagService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
103
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseTagService, providedIn: 'root' });
102
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseTagService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
103
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseTagService, providedIn: 'root' });
104
104
  }
105
- export { BaseTagService };
106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseTagService, decorators: [{
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseTagService, decorators: [{
107
106
  type: Injectable,
108
107
  args: [{
109
108
  providedIn: 'root',
110
109
  }]
111
- }], ctorParameters: function () { return []; } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3RhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBTUwsT0FBTyxHQUlSLE1BQU0sa0JBQWtCLENBQUM7O0FBRTFCLE1BSWEsY0FBYztJQUN6QixnQkFBZSxDQUFDO0lBRWhCLEtBQUssQ0FBQyxlQUFlLENBQ25CLE9BQWdCLEVBQ2hCLE1BQW9CO1FBRXBCLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBb0IsRUFBRSxPQUFnQjtRQUN4RCxRQUFRLE9BQU8sRUFBRTtZQUNmLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNuQixPQUFPLFNBQVMsTUFBTSxDQUFDLE9BQU8sV0FBVyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDdEQ7WUFDRCxLQUFLLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdEIsT0FBTyxTQUFTLE1BQU0sQ0FBQyxPQUFPLFVBQVUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ3JEO1lBQ0QsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3BCLE9BQU8sU0FBUyxNQUFNLENBQUMsT0FBTyxnQkFBZ0IsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQzNEO1lBQ0QsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pCLE9BQU8sU0FBUyxNQUFNLENBQUMsT0FBTyxZQUFZLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUN2RDtZQUNELEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqQixPQUFPLFNBQVMsTUFBTSxDQUFDLE9BQU8sZ0JBQWdCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUMzRDtZQUNEO2dCQUNFLE9BQU8sRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQixDQUFDLEtBQWdCO1FBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQWM7UUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQzs2RUFDeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBZ0I7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQzs2RUFDeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsT0FBZ0I7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQzs2RUFDeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWdCO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUM7NkVBQ3lELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE9BQWdCO1FBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUM7NkVBQ3lELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFVBQWtCO1FBQzdDLE1BQU0sSUFBSSxLQUFLLENBQ2IsOERBQThELENBQy9ELENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsT0FBcUIsRUFBRSxHQUFRO1FBQ3ZELDJDQUEyQztRQUMzQyxzQkFBc0I7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQzs2RUFDeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBTSxFQUFFLE9BQWdCO1FBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsZ0NBQWdDLENBQzlCLE9BQWdCLEVBQ2hCLFdBQXdCO1FBRXhCLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsTUFBb0I7UUFJM0MsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFXO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsY0FBc0I7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFXO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsY0FBc0I7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFXO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsR0FBVztRQUM5QixNQUFNLElBQUksS0FBSyxDQUFDOzREQUN3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQzt3R0E1SFUsY0FBYzs0R0FBZCxjQUFjLGNBSGIsTUFBTTs7U0FHUCxjQUFjOzRGQUFkLGNBQWM7a0JBSjFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY2FzZS1kZWNsYXJhdGlvbnMgKi9cclxuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29tbWVudCxcclxuICBEYk9iamVjdFR5cGUsXHJcbiAgRXF1aXBtZW50LFxyXG4gIEZlYXR1cmUsXHJcbiAgUE9JLFxyXG4gIFBvaVR5cGUsXHJcbiAgVGFnQWN0aW9uLFxyXG4gIFRpY2tldCxcclxuICBDb21tZW50VHlwZSxcclxufSBmcm9tICcuLi90eXBlcy5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsIFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEJhc2VUYWdTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIGFzeW5jIGdldEh0bWxUb0luamVjdChcclxuICAgIHRhZ1R5cGU6IFBvaVR5cGUsXHJcbiAgICBvYmplY3Q6IERiT2JqZWN0VHlwZVxyXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGdldEh0bWxUb0luamVjdCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuIFxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXJsRm9yU2VlRGV0YWlscyhvYmplY3Q6IERiT2JqZWN0VHlwZSwgdGFnVHlwZTogUG9pVHlwZSk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHRhZ1R5cGUpIHtcclxuICAgICAgY2FzZSBQb2lUeXBlLlRJQ0tFVDoge1xyXG4gICAgICAgIHJldHVybiBgdmlzaXQvJHtvYmplY3Quc3BhY2VJRH0vZGV0YWlsLyR7b2JqZWN0LmlkfWA7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBQb2lUeXBlLkVRVUlQTUVOVDoge1xyXG4gICAgICAgIHJldHVybiBgdmlzaXQvJHtvYmplY3Quc3BhY2VJRH0vZXF1aXAvJHtvYmplY3QuaWR9YDtcclxuICAgICAgfVxyXG4gICAgICBjYXNlIFBvaVR5cGUuTUVBU1VSRToge1xyXG4gICAgICAgIHJldHVybiBgdmlzaXQvJHtvYmplY3Quc3BhY2VJRH0vbWVhc3VyZW1lbnQvJHtvYmplY3QuaWR9YDtcclxuICAgICAgfVxyXG4gICAgICBjYXNlIFBvaVR5cGUuREFUQToge1xyXG4gICAgICAgIHJldHVybiBgdmlzaXQvJHtvYmplY3Quc3BhY2VJRH0vZmVhdHVyZS8ke29iamVjdC5pZH1gO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgUG9pVHlwZS5ERVNLOiB7XHJcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9hZGRfYm9va2luZy8ke29iamVjdC5pZH1gO1xyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJlcGFyZUVxdWlwbWVudEh0bWwoZXF1aXA6IEVxdWlwbWVudCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXBhcmVFcXVpcG1lbnRIdG1sIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy4gXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBwcmVwYXJlVGlja2V0SHRtbCh0aWNrZXQ6IFRpY2tldCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXBhcmVUaWNrZXRIdG1sIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHByZXBhcmVGZWF0dXJlSHRtbChmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZUZlYXR1cmVIdG1sIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHByZXBhcmVNZWFzdXJlbWVudEh0bWwobWVhc3VyZTogQ29tbWVudCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXBhcmVNZWFzdXJlbWVudEh0bWwgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJlcGFyZURlc2tIdG1sKGZlYXR1cmU6IEZlYXR1cmUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBwcmVwYXJlRGVza0h0bWwgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJlcGFyZUluZGljYXRvckh0bWwoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXBhcmVEZXNrSHRtbCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRTaWduZWRUYWdJY29uU291cmNlKHRhZ0ljb25TcmM6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICBgZ2V0U2lnbmVkVGFnSWNvblNvdXJjZSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuYFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEljb25UYWdJbWFnZUZvckZlYXR1cmUoZmVhdHVyZTogRGJPYmplY3RUeXBlLCBwb2k6IFBPSSk6IHN0cmluZyB7XHJcbiAgICAvLyBjb25zdCB0YWdJY29uID0gSlNPTi5wYXJzZShwb2kudGFnSWNvbik7XHJcbiAgICAvLyByZXR1cm4gdGFnSWNvbi5zcmM7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGdldEljb25UYWdJbWFnZUZvckZlYXR1cmUgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2NyaXB0Rm9yVGFnKG9iamVjdCwgdGFnVHlwZTogUG9pVHlwZSk6IHN0cmluZyB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGdldFNjcmlwdEZvclRhZyBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuIFxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuICBnZXRBbm5leGVGb3JDb21tZW50VHlwZUluRmVhdHVyZShcclxuICAgIGZlYXR1cmU6IEZlYXR1cmUsXHJcbiAgICBjb21tZW50VHlwZTogQ29tbWVudFR5cGVcclxuICApOiBzdHJpbmcge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBnZXRBbm5leGVGb3JDb21tZW50VHlwZUluRmVhdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuIFxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgZ2V0QmlsbGJvYXJkTWVkaWFUb0VtYmVkKG9iamVjdDogRGJPYmplY3RUeXBlKToge1xyXG4gICAgY29tbWVudDogQ29tbWVudDtcclxuICAgIHRhZ0Rlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgfSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGdldEJpbGxib2FyZE1lZGlhVG9FbWJlZCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuIFxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25EZXRhaWxDbGljayh1cmw6IHN0cmluZykge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvbkRldGFpbENsaWNrIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy4gXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkF1ZGlvQ2xpY2soYXVkaW9Db21tZW50SUQ6IHN0cmluZykge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvbkRldGFpbENsaWNrIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy4gXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvblZpZGVvQ2xpY2sodXJsOiBzdHJpbmcpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgb25BY3Rpb25WaWRlb0NsaWNrIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy4gXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkltYWdlQ2xpY2soaW1hZ2VDb21tZW50SUQ6IHN0cmluZykge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvbkltYWdlQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25Eb2NDbGljayh1cmw6IHN0cmluZykge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvbkRvY0NsaWNrIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy4gXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbllvdXR1YmVDbGljayh1cmw6IHN0cmluZykge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvbllvdXR1YmVDbGljayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuIFxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxufVxyXG4iXX0=
110
+ }], ctorParameters: () => [] });
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3RhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBTUwsT0FBTyxHQUlSLE1BQU0sa0JBQWtCLENBQUM7O0FBTTFCLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLGdCQUFlLENBQUM7SUFFaEIsS0FBSyxDQUFDLGVBQWUsQ0FDbkIsT0FBZ0IsRUFDaEIsTUFBb0I7UUFFcEIsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFvQixFQUFFLE9BQWdCO1FBQ3hELFFBQVEsT0FBTyxFQUFFLENBQUM7WUFDaEIsS0FBSyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDcEIsT0FBTyxTQUFTLE1BQU0sQ0FBQyxPQUFPLFdBQVcsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3ZELENBQUM7WUFDRCxLQUFLLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixPQUFPLFNBQVMsTUFBTSxDQUFDLE9BQU8sVUFBVSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEQsQ0FBQztZQUNELEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ3JCLE9BQU8sU0FBUyxNQUFNLENBQUMsT0FBTyxnQkFBZ0IsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVELENBQUM7WUFDRCxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixPQUFPLFNBQVMsTUFBTSxDQUFDLE9BQU8sWUFBWSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEQsQ0FBQztZQUNELEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLE9BQU8sU0FBUyxNQUFNLENBQUMsT0FBTyxnQkFBZ0IsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVELENBQUM7WUFDRDtnQkFDRSxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQixDQUFDLEtBQWdCO1FBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQWM7UUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQzs2RUFDeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBZ0I7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQzs2RUFDeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsT0FBZ0I7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQzs2RUFDeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWdCO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUM7NkVBQ3lELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE9BQWdCO1FBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUM7NkVBQ3lELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFVBQWtCO1FBQzdDLE1BQU0sSUFBSSxLQUFLLENBQ2IsOERBQThELENBQy9ELENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsT0FBcUIsRUFBRSxHQUFRO1FBQ3ZELDJDQUEyQztRQUMzQyxzQkFBc0I7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQzs2RUFDeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBTSxFQUFFLE9BQWdCO1FBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsZ0NBQWdDLENBQzlCLE9BQWdCLEVBQ2hCLFdBQXdCO1FBRXhCLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsTUFBb0I7UUFJM0MsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFXO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsY0FBc0I7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFXO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsY0FBc0I7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFXO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsR0FBVztRQUM5QixNQUFNLElBQUksS0FBSyxDQUFDOzREQUN3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQzt3R0E1SFUsY0FBYzs0R0FBZCxjQUFjLGNBSGIsTUFBTTs7NEZBR1AsY0FBYztrQkFKMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb21tZW50LFxyXG4gIERiT2JqZWN0VHlwZSxcclxuICBFcXVpcG1lbnQsXHJcbiAgRmVhdHVyZSxcclxuICBQT0ksXHJcbiAgUG9pVHlwZSxcclxuICBUYWdBY3Rpb24sXHJcbiAgVGlja2V0LFxyXG4gIENvbW1lbnRUeXBlLFxyXG59IGZyb20gJy4uL3R5cGVzLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JywgXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQmFzZVRhZ1NlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgYXN5bmMgZ2V0SHRtbFRvSW5qZWN0KFxyXG4gICAgdGFnVHlwZTogUG9pVHlwZSxcclxuICAgIG9iamVjdDogRGJPYmplY3RUeXBlXHJcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgZ2V0SHRtbFRvSW5qZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy4gXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBnZXRVcmxGb3JTZWVEZXRhaWxzKG9iamVjdDogRGJPYmplY3RUeXBlLCB0YWdUeXBlOiBQb2lUeXBlKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodGFnVHlwZSkge1xyXG4gICAgICBjYXNlIFBvaVR5cGUuVElDS0VUOiB7XHJcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9kZXRhaWwvJHtvYmplY3QuaWR9YDtcclxuICAgICAgfVxyXG4gICAgICBjYXNlIFBvaVR5cGUuRVFVSVBNRU5UOiB7XHJcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9lcXVpcC8ke29iamVjdC5pZH1gO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgUG9pVHlwZS5NRUFTVVJFOiB7XHJcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9tZWFzdXJlbWVudC8ke29iamVjdC5pZH1gO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgUG9pVHlwZS5EQVRBOiB7XHJcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9mZWF0dXJlLyR7b2JqZWN0LmlkfWA7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBQb2lUeXBlLkRFU0s6IHtcclxuICAgICAgICByZXR1cm4gYHZpc2l0LyR7b2JqZWN0LnNwYWNlSUR9L2FkZF9ib29raW5nLyR7b2JqZWN0LmlkfWA7XHJcbiAgICAgIH1cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBwcmVwYXJlRXF1aXBtZW50SHRtbChlcXVpcDogRXF1aXBtZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZUVxdWlwbWVudEh0bWwgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLiBcclxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHByZXBhcmVUaWNrZXRIdG1sKHRpY2tldDogVGlja2V0KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZVRpY2tldEh0bWwgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJlcGFyZUZlYXR1cmVIdG1sKGZlYXR1cmU6IEZlYXR1cmUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBwcmVwYXJlRmVhdHVyZUh0bWwgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJlcGFyZU1lYXN1cmVtZW50SHRtbChtZWFzdXJlOiBDb21tZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZU1lYXN1cmVtZW50SHRtbCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBwcmVwYXJlRGVza0h0bWwoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXBhcmVEZXNrSHRtbCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBwcmVwYXJlSW5kaWNhdG9ySHRtbChmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZURlc2tIdG1sIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFNpZ25lZFRhZ0ljb25Tb3VyY2UodGFnSWNvblNyYzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgIGBnZXRTaWduZWRUYWdJY29uU291cmNlIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5gXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWNvblRhZ0ltYWdlRm9yRmVhdHVyZShmZWF0dXJlOiBEYk9iamVjdFR5cGUsIHBvaTogUE9JKTogc3RyaW5nIHtcclxuICAgIC8vIGNvbnN0IHRhZ0ljb24gPSBKU09OLnBhcnNlKHBvaS50YWdJY29uKTtcclxuICAgIC8vIHJldHVybiB0YWdJY29uLnNyYztcclxuICAgIHRocm93IG5ldyBFcnJvcihgZ2V0SWNvblRhZ0ltYWdlRm9yRmVhdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBnZXRTY3JpcHRGb3JUYWcob2JqZWN0LCB0YWdUeXBlOiBQb2lUeXBlKTogc3RyaW5nIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgZ2V0U2NyaXB0Rm9yVGFnIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy4gXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG4gIGdldEFubmV4ZUZvckNvbW1lbnRUeXBlSW5GZWF0dXJlKFxyXG4gICAgZmVhdHVyZTogRmVhdHVyZSxcclxuICAgIGNvbW1lbnRUeXBlOiBDb21tZW50VHlwZVxyXG4gICk6IHN0cmluZyB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGdldEFubmV4ZUZvckNvbW1lbnRUeXBlSW5GZWF0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy4gXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBnZXRCaWxsYm9hcmRNZWRpYVRvRW1iZWQob2JqZWN0OiBEYk9iamVjdFR5cGUpOiB7XHJcbiAgICBjb21tZW50OiBDb21tZW50O1xyXG4gICAgdGFnRGVzY3JpcHRpb246IHN0cmluZztcclxuICB9IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgZ2V0QmlsbGJvYXJkTWVkaWFUb0VtYmVkIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy4gXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkRldGFpbENsaWNrKHVybDogc3RyaW5nKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9uQWN0aW9uRGV0YWlsQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLiBcclxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uQXVkaW9DbGljayhhdWRpb0NvbW1lbnRJRDogc3RyaW5nKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9uQWN0aW9uRGV0YWlsQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLiBcclxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uVmlkZW9DbGljayh1cmw6IHN0cmluZykge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvblZpZGVvQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLiBcclxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uSW1hZ2VDbGljayhpbWFnZUNvbW1lbnRJRDogc3RyaW5nKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9uQWN0aW9uSW1hZ2VDbGljayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkRvY0NsaWNrKHVybDogc3RyaW5nKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9uQWN0aW9uRG9jQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLiBcclxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uWW91dHViZUNsaWNrKHVybDogc3RyaW5nKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9uQWN0aW9uWW91dHViZUNsaWNrIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy4gXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -15,7 +15,7 @@ import * as i7 from "../types.service";
15
15
  /**
16
16
  * UserService handles user's lifecycle, from creation to deletion
17
17
  */
18
- class BaseUserService {
18
+ export class BaseUserService {
19
19
  profileService;
20
20
  missionService;
21
21
  propertyService;
@@ -91,7 +91,7 @@ class BaseUserService {
91
91
  email: u.email.trim(),
92
92
  given_name: u.firstName,
93
93
  family_name: u.lastName,
94
- zoneinfo: "fr",
94
+ zoneinfo: "fr", // @todo deal with zoneinfo and locale
95
95
  locale: "fr",
96
96
  "custom:prevalidated": "false",
97
97
  };
@@ -103,7 +103,7 @@ class BaseUserService {
103
103
  let error;
104
104
  try {
105
105
  const { userSub } = await Auth.signUp({
106
- username: u.email,
106
+ username: u.email, // username should be an email they say
107
107
  password,
108
108
  attributes,
109
109
  clientMetadata: {
@@ -497,17 +497,16 @@ class BaseUserService {
497
497
  getSpModule() {
498
498
  return this.spModule;
499
499
  }
500
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseUserService, deps: [{ token: i1.ProfileService }, { token: i2.MissionService }, { token: i3.PropertyService }, { token: i4.Router }, { token: i5.Location }, { token: i0.NgZone }, { token: i6.TranslateService }, { token: 'SPModule' }], target: i0.ɵɵFactoryTarget.Injectable });
501
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseUserService, providedIn: "root" });
500
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseUserService, deps: [{ token: i1.ProfileService }, { token: i2.MissionService }, { token: i3.PropertyService }, { token: i4.Router }, { token: i5.Location }, { token: i0.NgZone }, { token: i6.TranslateService }, { token: 'SPModule' }], target: i0.ɵɵFactoryTarget.Injectable });
501
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseUserService, providedIn: "root" });
502
502
  }
503
- export { BaseUserService };
504
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseUserService, decorators: [{
503
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseUserService, decorators: [{
505
504
  type: Injectable,
506
505
  args: [{
507
506
  providedIn: "root",
508
507
  }]
509
- }], ctorParameters: function () { return [{ type: i1.ProfileService }, { type: i2.MissionService }, { type: i3.PropertyService }, { type: i4.Router }, { type: i5.Location }, { type: i0.NgZone }, { type: i6.TranslateService }, { type: i7.SpModule, decorators: [{
508
+ }], ctorParameters: () => [{ type: i1.ProfileService }, { type: i2.MissionService }, { type: i3.PropertyService }, { type: i4.Router }, { type: i5.Location }, { type: i0.NgZone }, { type: i6.TranslateService }, { type: i7.SpModule, decorators: [{
510
509
  type: Inject,
511
510
  args: ['SPModule']
512
- }] }]; } });
513
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQixPQUFPLEVBQUUsV0FBVyxFQUFrQyxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUNqSixPQUFPLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXhLLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7O0FBVW5DOztHQUVHO0FBQ0gsTUFHYSxlQUFlO0lBd0JaO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBNUJaLFNBQVMsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVyRCxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWpCLFFBQVEsR0FBRztRQUNQLFVBQVUsQ0FBQyxLQUFLO1FBQ2hCLFVBQVUsQ0FBQyxPQUFPO1FBQ2xCLFVBQVUsQ0FBQyxLQUFLO1FBQ2hCLFVBQVUsQ0FBQyxZQUFZO0tBQzFCLENBQUM7SUFFRixlQUFlLENBQVk7SUFFM0Isa0JBQWtCLENBQVU7SUFFNUIsa0JBQWtCLENBQVU7SUFFNUIsRUFBRSxHQUFrQixJQUFJLENBQUM7SUFFekIsUUFBUSxDQUFXO0lBRW5CLFlBQ1ksY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIs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QUMsY0FBYyxDQUFDLEVBQUU7UUFDbkIsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztZQUNwQyxFQUFFLEVBQUUsRUFBRTtZQUNOLEtBQUssRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQWdCO1FBQzlCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQzt3R0E5a0JRLGVBQWUsaU5BK0JaLFVBQVU7NEdBL0JiLGVBQWUsY0FGWixNQUFNOztTQUVULGVBQWU7NEZBQWYsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQWdDUSxNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHsgTGV2ZWxTdGF0dXMsIE1pc3Npb24sIE9yZ2FuaXNhdGlvbiwgUHJvZmlsZSwgUHJvZmlsZUVudGl0eSwgUHJvZmlsZVN0YXR1cywgUHJvcGVydHlUeXBlLCBSb2xlU3RhdHVzLCBTcE1vZHVsZSB9IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGVudW1Ub0FycmF5LCBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQsIGdldEhpZ2hlc3RMZXZlbEZvck1pc3Npb25zLCBnZXRIaWdoZXN0Um9sZUZvck1pc3Npb25zLCBnZXRMZXZlbHNCZWxvdywgZ2V0Um9sZXNCZWxvd0Zvck1hbmFnZXIgfSBmcm9tIFwiLi4vaGVscGVycy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb2ZpbGVTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL3Byb2ZpbGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBNaXNzaW9uU2VydmljZSB9IGZyb20gXCIuL21vZGVscy9taXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUHJvcGVydHlTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL3Byb3BlcnR5LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tIFwibHV4b25cIjtcclxuaW1wb3J0IHsgQXV0aCB9IGZyb20gXCJhd3MtYW1wbGlmeVwiO1xyXG5cclxuaW50ZXJmYWNlIENyZWF0ZVVzZXIge1xyXG4gICAgZW1haWw6IHN0cmluZztcclxuICAgIHBob25lPzogc3RyaW5nO1xyXG4gICAgbGFzdE5hbWU6IHN0cmluZztcclxuICAgIGZpcnN0TmFtZTogc3RyaW5nO1xyXG4gICAgcGFzc3dvcmQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBVc2VyU2VydmljZSBoYW5kbGVzIHVzZXIncyBsaWZlY3ljbGUsIGZyb20gY3JlYXRpb24gdG8gZGVsZXRpb25cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZVVzZXJTZXJ2aWNlIHtcclxuXHJcbiAgICBpc0NoYW5nZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICAgIHVwZGF0aW5nID0gZmFsc2U7XHJcblxyXG4gICAgbWFuYWdlcnMgPSBbXHJcbiAgICAgICAgUm9sZVN0YXR1cy5BRE1JTixcclxuICAgICAgICBSb2xlU3RhdHVzLk1BTkFHRVIsXHJcbiAgICAgICAgUm9sZVN0YXR1cy5PV05FUixcclxuICAgICAgICBSb2xlU3RhdHVzLkdVSURFX01VU0VVTSxcclxuICAgIF07XHJcblxyXG4gICAgY3VycmVudE1pc3Npb25zOiBNaXNzaW9uW107XHJcblxyXG4gICAgbGFzdEV4cGlyZWRNaXNzaW9uOiBNaXNzaW9uO1xyXG5cclxuICAgIG5leHRNaXNzaW9uVG9TdGFydDogTWlzc2lvbjtcclxuXHJcbiAgICBjdTogUHJvZmlsZUVudGl0eSA9IG51bGw7XHJcblxyXG4gICAgc3BNb2R1bGU6IFNwTW9kdWxlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbWlzc2lvblNlcnZpY2U6IE1pc3Npb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcHJvcGVydHlTZXJ2aWNlOiBQcm9wZXJ0eVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgIEBJbmplY3QoJ1NQTW9kdWxlJykgc3BNb2R1bGVJbmplY3RlZDogU3BNb2R1bGUsXHJcbiAgICApIHtcclxuICAgICAgICAvLyB0aGlzLmNoZWNrQ29ubmVjdGVkQVdTVXNlcigpO1xyXG4gICAgICAgIHRoaXMubWlzc2lvblNlcnZpY2UuY3VycmVudE1pc3Npb25zVXBkYXRlZC5zdWJzY3JpYmUoYXN5bmMgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TWlzc2lvbnMgPVxyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS5pbnN0YW50TWlzc2lvbnNPZkN1cnJlbnQodGhpcy5jdS5pZCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNDaGFuZ2VkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zcE1vZHVsZSA9IHNwTW9kdWxlSW5qZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgaWYgQVdTIHVzZXIgaXMgY29ubmVjdGVkIGFuZCBhc3NpZ25nIGl0IHRvIGN1cnJlbnQgdXNlciAodGhpcy5jdSlcclxuICAgICoqL1xyXG4gICAgYXN5bmMgY2hlY2tDb25uZWN0ZWRBV1NVc2VyKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jdSkge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImNoZWNrIEFXUyB1c2VyXCIpO1xyXG4gICAgICAgICAgICBsZXQgY2F1ID0gbnVsbDtcclxuICAgICAgICAgICAgbGV0IHVzZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnVwZGF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2F1ID0gYXdhaXQgQXV0aC5jdXJyZW50QXV0aGVudGljYXRlZFVzZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImNvbm5lY3RlZFwiLCBjYXUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHVzZXIgPSBhd2FpdCB0aGlzLmN1cnJlbnQoY2F1KTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImN1cnJlbnQgb2YgdXNlclNlcnZpY2VcIiwgdXNlcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XHJcbiAgICAgICAgICAgIGlmICghdXNlciAmJiAhdGhpcy51cGRhdGluZykge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJubyB1c2VyIGluIGNoZWNrIGNvbm5lY3RlZCBhd3MgdXNlclwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImF1dGhcIl0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogY3JlYXRlVXNlciBzcGF3bnMgYSBuZXcgVXNlciwgYWxvbmcgd2l0aDpcclxuICAgICAqIC0gYSBwcm9wZXIgQVdTQ29nbml0byBzaWdudXBcclxuICAgICAqIC0gYSBQcm9maWxlIGVudHJ5IGhvbGRpbmcgdGhlIEFXU0NvZ25pdG8gSURcclxuICAgICAqIC0gYSBNaXNzaW9uIGVudHJ5IGhvbGRpbmcgdGhlIE9yZ2FuaXNhdGlvbiBJRFxyXG4gICAgICpcclxuICAgICAqIEBzZWUgMTc0XHJcbiAgICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9saWIvYXV0aC9lbWFpbHBhc3N3b3JkL3EvcGxhdGZvcm0vanMjc2lnbi11cFxyXG4gICAgICogQHRvZG8gd29uZGVyIGlmIHdlIGNhbiBtYXNoIHRvZ2V0aGVyIFByb2ZpbGUsIE1pc3Npb24gYW5kIFVzZXIgZW50cmllc1xyXG4gICAgICogQHBhcmFtIHUgVXNlciB0byBiZSBjcmVhdGVkXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGNyZWF0ZVVzZXJBV1NhbmRQcm9maWxlKFxyXG4gICAgICAgIHU6IHtcclxuICAgICAgICAgICAgZW1haWw6IHN0cmluZztcclxuICAgICAgICAgICAgcGhvbmU6IHN0cmluZztcclxuICAgICAgICAgICAgbGFzdE5hbWU6IHN0cmluZztcclxuICAgICAgICAgICAgZmlyc3ROYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHBhc3N3b3JkPzogc3RyaW5nO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHJldmFsaWRhdGVkOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICApOiBQcm9taXNlPFByb2ZpbGU+IHtcclxuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0ge1xyXG4gICAgICAgICAgICBlbWFpbDogdS5lbWFpbC50cmltKCksXHJcbiAgICAgICAgICAgIGdpdmVuX25hbWU6IHUuZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICBmYW1pbHlfbmFtZTogdS5sYXN0TmFtZSxcclxuICAgICAgICAgICAgem9uZWluZm86IFwiZnJcIiwgLy8gQHRvZG8gZGVhbCB3aXRoIHpvbmVpbmZvIGFuZCBsb2NhbGVcclxuICAgICAgICAgICAgbG9jYWxlOiBcImZyXCIsXHJcbiAgICAgICAgICAgIFwiY3VzdG9tOnByZXZhbGlkYXRlZFwiOiBcImZhbHNlXCIsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAocHJldmFsaWRhdGVkKSB7XHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZXNbXCJjdXN0b206cHJldmFsaWRhdGVkXCJdID0gXCJ0cnVlXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEFXU0NvZ25pdG9cclxuICAgICAgICBjb25zdCBwYXNzd29yZCA9IHUucGFzc3dvcmQgPyB1LnBhc3N3b3JkIDogXCJ0ZW1wb3JhcnlwXCI7XHJcbiAgICAgICAgbGV0IGVycm9yO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdXNlclN1YiB9ID0gYXdhaXQgQXV0aC5zaWduVXAoe1xyXG4gICAgICAgICAgICAgICAgdXNlcm5hbWU6IHUuZW1haWwsIC8vIHVzZXJuYW1lIHNob3VsZCBiZSBhbiBlbWFpbCB0aGV5IHNheVxyXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLFxyXG4gICAgICAgICAgICAgICAgY2xpZW50TWV0YWRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICBwaG9uZTogdS5waG9uZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAodXNlclN1Yikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUHJvZmlsZSh1c2VyU3ViLCB1KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yXzogYW55KSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoZXJyb3JfLmNvZGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJJbnZhbGlkUGFzc3dvcmRFeGNlcHRpb25cIjpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci53cm9uZ19wYXNzd29yZFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIlVzZXJOb3RDb25maXJtZWRFeGNlcHRpb25cIjpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci51c2VyX25vdF9jb25maXJtZWRcIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBcImF1dGguZXJyb3IuaW52YWxpZF9wYXJhbWV0ZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvcl8ubWVzc2FnZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQVdTIFNpZ24gVVAgZXJyb3IgOiAke2Vycm9yfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogLSBDcmVhdGVzIEFXUyB1c2VyIGluIENvZ25pdG8gZm9yIEhvdGVsIFVzZXIgUG9vbCBTY2hlbWEgKG9ubHkgZW1haWwgaXMgcmVxdWlyZWQpXHJcbiAgICAgKiAtIENyZWF0ZXMgUHJvZmlsZSBpbiBEeW5hbW9EQlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB1IFVzZXIgdG8gYmUgY3JlYXRlZFxyXG4gICAgICovXHJcbiAgICBhc3luYyBjcmVhdGVIb3RlbFVzZXJBV1NhbmRQcm9maWxlKFxyXG4gICAgICAgIHVzZXI6IHtcclxuICAgICAgICAgICAgZW1haWw6IHN0cmluZztcclxuICAgICAgICAgICAgbGFzdE5hbWU6IHN0cmluZztcclxuICAgICAgICAgICAgZmlyc3ROYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgfSxcclxuICAgICk6IFByb21pc2U8UHJvZmlsZT4ge1xyXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7XHJcbiAgICAgICAgICAgIGVtYWlsOiB1c2VyLmVtYWlsLnRyaW0oKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gQVdTQ29nbml0b1xyXG4gICAgICAgIGNvbnN0IHBhc3N3b3JkID0gXCJ0ZW1wb3JhcnlwXCI7XHJcbiAgICAgICAgbGV0IGVycm9yO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdXNlclN1YiB9ID0gYXdhaXQgQXV0aC5zaWduVXAoe1xyXG4gICAgICAgICAgICAgICAgdXNlcm5hbWU6IHVzZXIuZW1haWwudHJpbSgpLFxyXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKHVzZXJTdWIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVByb2ZpbGUodXNlclN1YiwgdXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlcnJvcl86IGFueSkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGVycm9yXy5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiSW52YWxpZFBhc3N3b3JkRXhjZXB0aW9uXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBcImF1dGguZXJyb3Iud3JvbmdfcGFzc3dvcmRcIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJVc2VyTm90Q29uZmlybWVkRXhjZXB0aW9uXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBcImF1dGguZXJyb3IudXNlcl9ub3RfY29uZmlybWVkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gXCJhdXRoLmVycm9yLmludmFsaWRfcGFyYW1ldGVyXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gZXJyb3JfLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc29sZS5sb2coYEFXUyBTaWduIFVQIGVycm9yIDogJHtlcnJvcn1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGVQcm9maWxlKFxyXG4gICAgICAgIGF3c1VzZXJJRDogc3RyaW5nLFxyXG4gICAgICAgIHU6IENyZWF0ZVVzZXIsXHJcbiAgICApOiBQcm9taXNlPFByb2ZpbGU+IHtcclxuICAgICAgICBjb25zdCBwcm9maWxlID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5jcmVhdGVQcm9maWxlKHtcclxuICAgICAgICAgICAgdXNlcklEOiBhd3NVc2VySUQsXHJcbiAgICAgICAgICAgIG1ldGFkYXRhOiBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICBlbWFpbDogdS5lbWFpbCxcclxuICAgICAgICAgICAgICAgIHBob25lOiB1LnBob25lLFxyXG4gICAgICAgICAgICAgICAgbGFzdE5hbWU6IHUubGFzdE5hbWUsXHJcbiAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IHUuZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgc3RhdHVzOiBQcm9maWxlU3RhdHVzLldBSVRJTkdfRk9SX0FDVElWQVRJT04sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHByb2ZpbGU7XHJcbiAgICB9XHJcblxyXG4gICAgY3VycmVudE9yZ2FuaXNhdGlvbihzcGFjZUlEOiBzdHJpbmcgPSBudWxsKTogT3JnYW5pc2F0aW9uIHtcclxuICAgICAgICBpZiAodGhpcy5jdSkge1xyXG4gICAgICAgICAgICBpZiAoIXNwYWNlSUQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9uc1swXS5vcmdhbmlzYXRpb247XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb24oc3BhY2VJRCkub3JnYW5pc2F0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjdXJyZW50KFxyXG4gICAgICAgIHVzZXIsXHJcbiAgICAgICAgZmFzdENvbm5lY3Q6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgICk6IFByb21pc2U8UHJvZmlsZUVudGl0eSB8IG51bGw+IHtcclxuICAgICAgICBpZiAoIXRoaXMuY3UgJiYgIXRoaXMudXBkYXRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY3UgPSBhd2FpdCB0aGlzLnVzZXJGcm9tQVdTSUQodXNlci51c2VybmFtZSk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jdSAmJiB1c2VyLmF0dHJpYnV0ZXMuZW1haWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICAgICAgIGBObyBwcm9maWxlIGZvciB1c2VySUQg8J+UqiAke3VzZXIuYXR0cmlidXRlcy5lbWFpbH1gLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gcHJvZmlsZXMsIHByb2ZpbGVzLml0ZW1zLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICAgICAgICAgLy8gSXQncyBtYXliZSB0aGUg8J+kriBjYXNlIHdoZXJlIHRoZSBwcm9maWxlIGhhcyBiZWVuIHNhdmVkIHdpdGggYW4gZW1haWxcclxuICAgICAgICAgICAgICAgIC8vIGluc3RlYWQgb2YgYW4gaGFzaGVkIGlkXHJcbiAgICAgICAgICAgICAgICAvLyBJZiBmb3VuZCwgd2UgbmVlZCB0byByZXBsYWNlIHRoZSBpZCBpbiBib3RoIHRoZSBQcm9maWxlXHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbWFpbFByb2ZpbGUgPSBhd2FpdCB0aGlzLnVzZXJGcm9tQVdTSUQoXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlci5hdHRyaWJ1dGVzLmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmIChlbWFpbFByb2ZpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgYPCfkY8gZG9pbmcgdGhlIHNwYWNlaGlwIHJldmVyc2FsIGVtYWlsIG9uICR7dXNlci5hdHRyaWJ1dGVzLmVtYWlsfWAsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1ID0gYXdhaXQgdGhpcy51c2VyRnJvbUFXU0lEKHVzZXIudXNlcm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jdSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgQXV0aC5zaWduT3V0KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBtaXNzaW9ucyA9IGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UuaW5zdGFudE1pc3Npb25zT2ZDdXJyZW50KFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdS5pZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNaXNzaW9ucyA9IG1pc3Npb25zO1xyXG4gICAgICAgICAgICBsZXQgb2tUb0xvZ2luID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKCFmYXN0Q29ubmVjdCAmJiAhdGhpcy5oYXNNYW5hZ2VyUm9sZUluQW55TWlzc2lvbigpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBhY2Nlc3MgdG9rZW4gaWYgbm90IEZhc3QgY29ubmVjdCAoZmFzdCBjb25uZWN0IGlzIGZvciB0aGUgZ3Vlc3QgY29ubmVjdGlvbiB2aWEgbGluaygvcmVkaXJlY3Q/dXNlcj0pKVxyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2tzIHZpc2l0b3JzKG11c2V1bSBvciBub3QpLCBvY2N1cGFudHMsIHNlcnZpY2VcclxuICAgICAgICAgICAgICAgIG9rVG9Mb2dpbiA9IGF3YWl0IHRoaXMuY2hlY2tBY2Nlc3NUb2tlbihcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLnNpZ25JblVzZXJTZXNzaW9uLmFjY2Vzc1Rva2VuLmp3dFRva2VuLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIW9rVG9Mb2dpbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRNaXNzaW9ucyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgQXV0aC5zaWduT3V0KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByb2ZpbGUoe1xyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuY3UuaWQsXHJcbiAgICAgICAgICAgICAgICBsYXN0Q29ubmVjdGVkQXQ6IERhdGUubm93KCksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoIW1pc3Npb25zICYmIHRoaXMubG9jYXRpb24ucGF0aCgpICE9PSBcIi9uby1taXNzaW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL25vLW1pc3Npb25cIl0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJ1c2VyIGlzIGNoYW5nZWQgZW1pdHRpbmdcIik7XHJcbiAgICAgICAgICAgIHRoaXMuaXNDaGFuZ2VkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3U7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXNlckZyb21BV1NJRCh1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8UHJvZmlsZUVudGl0eSB8IG51bGw+IHtcclxuICAgICAgICBjb25zdCBwcm9maWxlID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRQcm9maWxlRnJvbUFXU0lEKHVzZXJJZCk7XHJcbiAgICAgICAgaWYgKHByb2ZpbGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9maWxlRW50aXR5KHByb2ZpbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1c2VyRnJvbVVzZXJJRCh1c2VySUQ6IHN0cmluZyk6IFByb21pc2U8UHJvZmlsZUVudGl0eSB8IG51bGw+IHtcclxuICAgICAgICBjb25zdCBwcm9maWxlID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRQcm9maWxlKHVzZXJJRCk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9maWxlRW50aXR5KHByb2ZpbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGN1cnJlbnRNaXNzaW9uKHNwYWNlSUQ6IHN0cmluZyk6IE1pc3Npb24ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICByZXR1cm4gbWlzc2lvbjtcclxuICAgIH1cclxuXHJcbiAgICBpc01hbmFnZXIoc3BhY2VJRDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMuZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGlmIChtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1hbmFnZXJzLmluY2x1ZGVzKG1pc3Npb24ucm9sZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpc1NlcnZpY2Uoc3BhY2VJRDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMuZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGlmIChtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtaXNzaW9uLnJvbGUgPT09IFJvbGVTdGF0dXMuU0VSVklDRTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlzQWRtaW4oc3BhY2VJRDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMuZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGlmIChtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtaXNzaW9uLnJvbGUgPT09IFJvbGVTdGF0dXMuQURNSU47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpc1NtYXJ0ZXJQbGFuKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzcE1pc3Npb25zID0gdGhpcy5jdXJyZW50TWlzc2lvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAobSkgPT5cclxuICAgICAgICAgICAgICAgIG0ub3JnYW5pc2F0aW9uSUQgPT09IFwiNmUyODIwMWYtNDY3OS00YzI5LTlkMmQtOGEzMjVmNTdjZWU5XCIgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMubWFuYWdlcnMuaW5jbHVkZXMobS5yb2xlKSxcclxuICAgICAgICApOyAvLyBJRCBvZiBTbWFydGVyUGxhblxyXG4gICAgICAgIHJldHVybiBzcE1pc3Npb25zLmxlbmd0aCA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTUEFkbWluKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzcE1pc3Npb25zID0gdGhpcy5jdXJyZW50TWlzc2lvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAobSkgPT5cclxuICAgICAgICAgICAgICAgIG0ub3JnYW5pc2F0aW9uSUQgPT09IFwiNmUyODIwMWYtNDY3OS00YzI5LTlkMmQtOGEzMjVmNTdjZWU5XCIgJiZcclxuICAgICAgICAgICAgICAgIG0ucm9sZSA9PT0gUm9sZVN0YXR1cy5BRE1JTixcclxuICAgICAgICApOyAvLyBJRCBvZiBTbWFydGVyUGxhblxyXG4gICAgICAgIHJldHVybiBzcE1pc3Npb25zLmxlbmd0aCA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IE1pc3Npb24ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9ucy5maW5kKChtKSA9PiBtLnNwYWNlSUQgPT09IHNwYWNlSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc01hbmFnZXJSb2xlSW5BbnlNaXNzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuc29tZSgobWlzKSA9PlxyXG4gICAgICAgICAgICB0aGlzLm1hbmFnZXJzLmluY2x1ZGVzKG1pcy5yb2xlKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc1NlcnZpY2VSb2xlSW5BbnlNaXNzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuc29tZShcclxuICAgICAgICAgICAgKG1pcykgPT4gbWlzLnJvbGUgPT09IFJvbGVTdGF0dXMuU0VSVklDRSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc0FkbWluUm9sZUluQW55TWlzc2lvbigpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLnNvbWUoXHJcbiAgICAgICAgICAgIChtaXMpID0+IG1pcy5yb2xlID09PSBSb2xlU3RhdHVzLkFETUlOLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlT3JVcGRhdGVNaXNzaW9uRm9yT3JnV2l0aFByb3BlcnR5KFxyXG4gICAgICAgIG1pc3Npb25JbnB1dDogTWlzc2lvbixcclxuICAgICAgICBvcmdJRDogc3RyaW5nLFxyXG4gICAgICAgIGNyZWF0ZTogYm9vbGVhbiA9IHRydWUsXHJcbiAgICApOiBQcm9taXNlPE1pc3Npb24+IHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gYXdhaXQgKGNyZWF0ZVxyXG4gICAgICAgICAgICA/IHRoaXMubWlzc2lvblNlcnZpY2UuY3JlYXRlKG1pc3Npb25JbnB1dClcclxuICAgICAgICAgICAgOiB0aGlzLm1pc3Npb25TZXJ2aWNlLnVwZGF0ZShtaXNzaW9uSW5wdXQpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWFuYWdlcnMuaW5jbHVkZXMobWlzc2lvbi5yb2xlKSAmJiBtaXNzaW9uLnNwYWNlSUQpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvcGVydGllcyA9XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnByb3BlcnR5U2VydmljZS5nZXRQcm9wZXJ0aWVzRm9yT3JnYW5pc2F0aW9uKG9yZ0lEKTtcclxuICAgICAgICAgICAgY29uc3QgcHJvcGVydHlTcGFjZUlEcyA9IHByb3BlcnRpZXMubWFwKFxyXG4gICAgICAgICAgICAgICAgKHByb3BlcnR5XykgPT4gcHJvcGVydHlfLnNwYWNlSUQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eVNwYWNlSURzLmluY2x1ZGVzKG1pc3Npb24uc3BhY2VJRCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtaXNzaW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHdlIGRlbGVnYXRlIHRoZSByaWdodHMgb2YgdGhlIHNwYWNlXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmNyZWF0ZVByb3BlcnR5KHtcclxuICAgICAgICAgICAgICAgIHNwYWNlSUQ6IG1pc3Npb24uc3BhY2VJRCxcclxuICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbklEOiBvcmdJRCxcclxuICAgICAgICAgICAgICAgIHR5cGU6IFByb3BlcnR5VHlwZS5TSEFSRUQsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbWlzc2lvbjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzb2Z0RGVsZXRlVXNlcih1c2VySUQ6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zID0gYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS5nZXRNaXNzaW9uc0Zyb21Vc2VySUQodXNlcklEKTtcclxuICAgICAgICBpZiAobWlzc2lvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7IGlkOiB1c2VySUQsIGRlbGV0ZWRBdDogRGF0ZS5ub3coKSB9KTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJQcm9maWxlIHNvZnQgZGVsZXRlZFwiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiB0aGUgUHJvZmlsZSAoYnkgaWQpIGNhbiBiZSByZW1vdmVkIGNvbXBsZXRlbHkgZnJvbSB0aGUgREIgKG5vIG1pc3Npb25zIGluIHRoZSBEQilcclxuICAgICAqIEBwYXJhbSBwcm9maWxlSURcclxuICAgICAqIEByZXR1cm5zIGJvb2xlYW5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgY2FuSGFyZERlbGV0ZVVzZXIocHJvZmlsZUlEOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICBjb25zdCBtaXNzaW9ucyA9IChhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLmdldE1pc3Npb25zRnJvbVVzZXJJRChwcm9maWxlSUQpKTtcclxuICAgICAgICByZXR1cm4gbWlzc2lvbnMubGVuZ3RoID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGhhcmREZWxldGVVc2VyKHVzZXJJRDogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgZGVsZXRlZCA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZGVsZXRlUHJvZmlsZSh1c2VySUQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiUHJvZmlsZSBoYXJkIGRlbGV0ZWRcIik7XHJcbiAgICAgICAgcmV0dXJuIGRlbGV0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TWFuYWdlck1pc3Npb25zKCk6IE1pc3Npb25bXSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9ucy5maWx0ZXIoKG1pcykgPT5cclxuICAgICAgICAgICAgdGhpcy5tYW5hZ2Vycy5pbmNsdWRlcyhtaXMucm9sZSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBdmFsYWJsZUxldmVsc0ZvckN1cnJlbnRVc2VyKCk6IExldmVsU3RhdHVzW10ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtMZXZlbFN0YXR1cy5NSU5JTVVNXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbGV2ZWxzID0gZW51bVRvQXJyYXkoTGV2ZWxTdGF0dXMpO1xyXG4gICAgICAgIGNvbnN0IGhpZ2hlc3RMZXZlbCA9IGdldEhpZ2hlc3RMZXZlbEZvck1pc3Npb25zKHRoaXMuY3VycmVudE1pc3Npb25zKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGxldmVscy5maWx0ZXIoKGxldmVsKSA9PlxyXG4gICAgICAgICAgICBnZXRMZXZlbHNCZWxvdyhoaWdoZXN0TGV2ZWwpLmluY2x1ZGVzKGxldmVsKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEF2YWlsYWJsZVJvbGVzRm9yQ3VycmVudFVzZXIoKTogUm9sZVN0YXR1c1tdIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbUm9sZVN0YXR1cy5WSVNJVE9SXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgcm9sZXMgPSBlbnVtVG9BcnJheShSb2xlU3RhdHVzKTtcclxuICAgICAgICBjb25zdCBoaWdoZXN0Um9sZSA9IGdldEhpZ2hlc3RSb2xlRm9yTWlzc2lvbnModGhpcy5jdXJyZW50TWlzc2lvbnMpO1xyXG4gICAgICAgIHJldHVybiByb2xlcy5maWx0ZXIoKHJvbGUpID0+XHJcbiAgICAgICAgICAgIGdldFJvbGVzQmVsb3dGb3JNYW5hZ2VyKGhpZ2hlc3RSb2xlKS5pbmNsdWRlcyhyb2xlKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUZXN0IGlmIHRoZSB1c2VyIGhhdmUgdGhlIHJvbGUgZ2l2ZW4gaW4gcGFyYW1ldGVyIDogXCJyb2xlU3RhdHVzXCIgKi9cclxuICAgIGlzUm9sZShyb2xlU3RhdHVzOiBSb2xlU3RhdHVzKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9ucy5zb21lKChtKSA9PiBtLnJvbGUgPT09IHJvbGVTdGF0dXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzR3VpZGUoc3BhY2VJRDogc3RyaW5nID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChzcGFjZUlEKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICAgICAgaWYgKG1pc3Npb24pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtaXNzaW9uLnJvbGUgPT09IFJvbGVTdGF0dXMuR1VJREVfTVVTRVVNO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmlzUm9sZShSb2xlU3RhdHVzLkdVSURFX01VU0VVTSk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNNdXNldW1WaXNpdG9yKHNwYWNlSUQ6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoc3BhY2VJRCkge1xyXG4gICAgICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgICAgIGlmIChtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzc2lvbi5yb2xlID09PSBSb2xlU3RhdHVzLlZJU0lUT1JfTVVTRVVNO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmlzUm9sZShSb2xlU3RhdHVzLlZJU0lUT1JfTVVTRVVNKTtcclxuICAgIH1cclxuXHJcbiAgICBpc09jY3VwYW50KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzUm9sZShSb2xlU3RhdHVzLk9DQ1VQQU5UKTtcclxuICAgIH1cclxuXHJcbiAgICBpc1Zpc2l0b3Ioc3BhY2VJRDogc3RyaW5nID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChzcGFjZUlEKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICAgICAgaWYgKG1pc3Npb24pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtaXNzaW9uLnJvbGUgPT09IFJvbGVTdGF0dXMuVklTSVRPUjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5pc1JvbGUoUm9sZVN0YXR1cy5WSVNJVE9SKTtcclxuICAgIH1cclxuXHJcbiAgICBpc011c2V1bVVzZXIoc3BhY2VJRDogc3RyaW5nID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzR3VpZGUoc3BhY2VJRCkgfHwgdGhpcy5pc011c2V1bVZpc2l0b3Ioc3BhY2VJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFzT25seU11c2V1bVJvbGUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9ucy5ldmVyeShcclxuICAgICAgICAgICAgICAgIChtKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIG0ucm9sZSA9PT0gUm9sZVN0YXR1cy5HVUlERV9NVVNFVU0gfHxcclxuICAgICAgICAgICAgICAgICAgICBtLnJvbGUgPT09IFJvbGVTdGF0dXMuVklTSVRPUl9NVVNFVU0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBwcm9maWxlRm9yTWFpbChtYWlsOiBzdHJpbmcpOiBQcm9taXNlPFByb2ZpbGU+IHtcclxuICAgICAgICBjb25zdCB1c2Vyc1dpdGhNYWlsID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRVc2Vyc0Zvck1haWwobWFpbCk7XHJcbiAgICAgICAgcmV0dXJuIHVzZXJzV2l0aE1haWwubGVuZ3RoID4gMCA/IHVzZXJzV2l0aE1haWxbMF0gOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGN1cnJlbnRPcmRlcmVkT3JnTGlzdCgpOiBPcmdhbmlzYXRpb25bXSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG9yZGVyZWRPcmdMaXN0ID0gdGhpcy5jdXJyZW50TWlzc2lvbnMubWFwKFxyXG4gICAgICAgICAgICAobWlzKSA9PiBtaXMub3JkZXJlZE9yZ2FuaXNhdGlvbixcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQob3JkZXJlZE9yZ0xpc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIHVzZXJIYXNBY2Nlc3NUb0FsbFpvbmVzSW5TcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uc0ZvclNwYWNlID0gdGhpcy5jdXJyZW50TWlzc2lvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAobWlzKSA9PiBtaXMuc3BhY2VJRCA9PT0gc3BhY2VJRCxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9uc0ZvclNwYWNlLnNvbWUoXHJcbiAgICAgICAgICAgIChtaXNzaW9uKSA9PlxyXG4gICAgICAgICAgICAgICAgIW1pc3Npb24uem9uZUlEIHx8IChtaXNzaW9uLnpvbmUgJiYgIW1pc3Npb24uem9uZS5wYXJlbnRJRCksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBsb2dvdXRDdXJyZW50QW5kU2lnbk91dEF1dGgoKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVQcm9maWxlKHtcclxuICAgICAgICAgICAgaWQ6IHRoaXMuY3UuaWQsXHJcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY3UgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1pc3Npb25zID0gbnVsbDtcclxuICAgICAgICB0aGlzLmlzQ2hhbmdlZC5uZXh0KGZhbHNlKTtcclxuICAgICAgICBhd2FpdCBBdXRoLnNpZ25PdXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBsb2dvdXRDdXJyZW50V2lodG91dEF1dGgoKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVQcm9maWxlKHtcclxuICAgICAgICAgICAgaWQ6IHRoaXMuY3UuaWQsXHJcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY3UgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1pc3Npb25zID0gbnVsbDtcclxuICAgICAgICB0aGlzLmlzQ2hhbmdlZC5uZXh0KGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjaGVja0FjY2Vzc1Rva2VuKGp3dFRva2VuOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICBjb25zdCBub3cgPSBEYXRlVGltZS5sb2NhbCgpO1xyXG4gICAgICAgIGlmICh0aGlzLmN1LnRva2VuICYmIHRoaXMuY3UudG9rZW5FeHBpcmVkQXQgPiBub3cudG9NaWxsaXMoKSkge1xyXG4gICAgICAgICAgICAvLyBjaGVjayB0b2tlblxyXG4gICAgICAgICAgICBpZiAodGhpcy5jdS50b2tlbiA9PT0gand0VG9rZW4pIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwic2FtZSBhd3MgdG9rZW5cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhbGVydCh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYXV0aC5lcnJvci5hY3RpdmVUb2tlblwiKSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVQcm9maWxlKHtcclxuICAgICAgICAgICAgaWQ6IHRoaXMuY3UuaWQsXHJcbiAgICAgICAgICAgIHRva2VuRXhwaXJlZEF0OiBub3cucGx1cyh7IG1pbnV0ZXM6IDUgfSkudG9NaWxsaXMoKSxcclxuICAgICAgICAgICAgdG9rZW46IGp3dFRva2VuLFxyXG4gICAgICAgICAgICBzdGF0dXM6IFByb2ZpbGVTdGF0dXMuQUNUSVZFLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNsZWFyVXNlclRva2VuKGlkKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVQcm9maWxlKHtcclxuICAgICAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgICAgICB0b2tlbjogbnVsbCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVDdXJyZW50VXNlcihwcm9maWxlOiBQcm9maWxlKSB7XHJcbiAgICAgICAgdGhpcy5jdSA9IG5ldyBQcm9maWxlRW50aXR5KHByb2ZpbGUpO1xyXG4gICAgICAgIHRoaXMuaXNDaGFuZ2VkLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3BNb2R1bGUoKTogU3BNb2R1bGUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNwTW9kdWxlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
511
+ }] }] });
512
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQixPQUFPLEVBQUUsV0FBVyxFQUFrQyxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUNqSixPQUFPLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXhLLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7O0FBVW5DOztHQUVHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUF3Qlo7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUE1QlosU0FBUyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO0lBRXJELFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsUUFBUSxHQUFHO1FBQ1AsVUFBVSxDQUFDLEtBQUs7UUFDaEIsVUFBVSxDQUFDLE9BQU87UUFDbEIsVUFBVSxDQUFDLEtBQUs7UUFDaEIsVUFBVSxDQUFDLFlBQVk7S0FDMUIsQ0FBQztJQUVGLGVBQWUsQ0FBWTtJQUUzQixrQkFBa0IsQ0FBVTtJQUU1QixrQkFBa0IsQ0FBVTtJQUU1QixFQUFFLEdBQWtCLElBQUksQ0FBQztJQUV6QixRQUFRLENBQVc7SUFFbkIsWUFDWSxjQUE4QixFQUM5QixjQUE4QixF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RkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBZ0NRLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBMZXZlbFN0YXR1cywgTWlzc2lvbiwgT3JnYW5pc2F0aW9uLCBQcm9maWxlLCBQcm9maWxlRW50aXR5LCBQcm9maWxlU3RhdHVzLCBQcm9wZXJ0eVR5cGUsIFJvbGVTdGF0dXMsIFNwTW9kdWxlIH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgZW51bVRvQXJyYXksIGZpbHRlclVuaXF1ZUFycmF5QnlJRCwgZ2V0SGlnaGVzdExldmVsRm9yTWlzc2lvbnMsIGdldEhpZ2hlc3RSb2xlRm9yTWlzc2lvbnMsIGdldExldmVsc0JlbG93LCBnZXRSb2xlc0JlbG93Rm9yTWFuYWdlciB9IGZyb20gXCIuLi9oZWxwZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUHJvZmlsZVNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvcHJvZmlsZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL21pc3Npb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eVNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvcHJvcGVydHkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xyXG5pbXBvcnQgeyBBdXRoIH0gZnJvbSBcImF3cy1hbXBsaWZ5XCI7XHJcblxyXG5pbnRlcmZhY2UgQ3JlYXRlVXNlciB7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgcGhvbmU/OiBzdHJpbmc7XHJcbiAgICBsYXN0TmFtZTogc3RyaW5nO1xyXG4gICAgZmlyc3ROYW1lOiBzdHJpbmc7XHJcbiAgICBwYXNzd29yZD86IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFVzZXJTZXJ2aWNlIGhhbmRsZXMgdXNlcidzIGxpZmVjeWNsZSwgZnJvbSBjcmVhdGlvbiB0byBkZWxldGlvblxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlVXNlclNlcnZpY2Uge1xyXG5cclxuICAgIGlzQ2hhbmdlZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gICAgdXBkYXRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBtYW5hZ2VycyA9IFtcclxuICAgICAgICBSb2xlU3RhdHVzLkFETUlOLFxyXG4gICAgICAgIFJvbGVTdGF0dXMuTUFOQUdFUixcclxuICAgICAgICBSb2xlU3RhdHVzLk9XTkVSLFxyXG4gICAgICAgIFJvbGVTdGF0dXMuR1VJREVfTVVTRVVNLFxyXG4gICAgXTtcclxuXHJcbiAgICBjdXJyZW50TWlzc2lvbnM6IE1pc3Npb25bXTtcclxuXHJcbiAgICBsYXN0RXhwaXJlZE1pc3Npb246IE1pc3Npb247XHJcblxyXG4gICAgbmV4dE1pc3Npb25Ub1N0YXJ0OiBNaXNzaW9uO1xyXG5cclxuICAgIGN1OiBQcm9maWxlRW50aXR5ID0gbnVsbDtcclxuXHJcbiAgICBzcE1vZHVsZTogU3BNb2R1bGU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBtaXNzaW9uU2VydmljZTogTWlzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBwcm9wZXJ0eVNlcnZpY2U6IFByb3BlcnR5U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdCgnU1BNb2R1bGUnKSBzcE1vZHVsZUluamVjdGVkOiBTcE1vZHVsZSxcclxuICAgICkge1xyXG4gICAgICAgIC8vIHRoaXMuY2hlY2tDb25uZWN0ZWRBV1NVc2VyKCk7XHJcbiAgICAgICAgdGhpcy5taXNzaW9uU2VydmljZS5jdXJyZW50TWlzc2lvbnNVcGRhdGVkLnN1YnNjcmliZShhc3luYyAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNaXNzaW9ucyA9XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLmluc3RhbnRNaXNzaW9uc09mQ3VycmVudCh0aGlzLmN1LmlkKTtcclxuICAgICAgICAgICAgdGhpcy5pc0NoYW5nZWQubmV4dCh0cnVlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNwTW9kdWxlID0gc3BNb2R1bGVJbmplY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiBBV1MgdXNlciBpcyBjb25uZWN0ZWQgYW5kIGFzc2lnbmcgaXQgdG8gY3VycmVudCB1c2VyICh0aGlzLmN1KVxyXG4gICAgKiovXHJcbiAgICBhc3luYyBjaGVja0Nvbm5lY3RlZEFXU1VzZXIoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1KSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiY2hlY2sgQVdTIHVzZXJcIik7XHJcbiAgICAgICAgICAgIGxldCBjYXUgPSBudWxsO1xyXG4gICAgICAgICAgICBsZXQgdXNlciA9IG51bGw7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudXBkYXRpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXUgPSBhd2FpdCBBdXRoLmN1cnJlbnRBdXRoZW50aWNhdGVkVXNlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiY29ubmVjdGVkXCIsIGNhdSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdXNlciA9IGF3YWl0IHRoaXMuY3VycmVudChjYXUpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiY3VycmVudCBvZiB1c2VyU2VydmljZVwiLCB1c2VyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cclxuICAgICAgICAgICAgaWYgKCF1c2VyICYmICF0aGlzLnVwZGF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIm5vIHVzZXIgaW4gY2hlY2sgY29ubmVjdGVkIGF3cyB1c2VyXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiYXV0aFwiXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjcmVhdGVVc2VyIHNwYXducyBhIG5ldyBVc2VyLCBhbG9uZyB3aXRoOlxyXG4gICAgICogLSBhIHByb3BlciBBV1NDb2duaXRvIHNpZ251cFxyXG4gICAgICogLSBhIFByb2ZpbGUgZW50cnkgaG9sZGluZyB0aGUgQVdTQ29nbml0byBJRFxyXG4gICAgICogLSBhIE1pc3Npb24gZW50cnkgaG9sZGluZyB0aGUgT3JnYW5pc2F0aW9uIElEXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSAxNzRcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2xpYi9hdXRoL2VtYWlscGFzc3dvcmQvcS9wbGF0Zm9ybS9qcyNzaWduLXVwXHJcbiAgICAgKiBAdG9kbyB3b25kZXIgaWYgd2UgY2FuIG1hc2ggdG9nZXRoZXIgUHJvZmlsZSwgTWlzc2lvbiBhbmQgVXNlciBlbnRyaWVzXHJcbiAgICAgKiBAcGFyYW0gdSBVc2VyIHRvIGJlIGNyZWF0ZWRcclxuICAgICAqL1xyXG4gICAgYXN5bmMgY3JlYXRlVXNlckFXU2FuZFByb2ZpbGUoXHJcbiAgICAgICAgdToge1xyXG4gICAgICAgICAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgICAgICAgICBwaG9uZTogc3RyaW5nO1xyXG4gICAgICAgICAgICBsYXN0TmFtZTogc3RyaW5nO1xyXG4gICAgICAgICAgICBmaXJzdE5hbWU6IHN0cmluZztcclxuICAgICAgICAgICAgcGFzc3dvcmQ/OiBzdHJpbmc7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcmV2YWxpZGF0ZWQ6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgICk6IFByb21pc2U8UHJvZmlsZT4ge1xyXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7XHJcbiAgICAgICAgICAgIGVtYWlsOiB1LmVtYWlsLnRyaW0oKSxcclxuICAgICAgICAgICAgZ2l2ZW5fbmFtZTogdS5maXJzdE5hbWUsXHJcbiAgICAgICAgICAgIGZhbWlseV9uYW1lOiB1Lmxhc3ROYW1lLFxyXG4gICAgICAgICAgICB6b25laW5mbzogXCJmclwiLCAvLyBAdG9kbyBkZWFsIHdpdGggem9uZWluZm8gYW5kIGxvY2FsZVxyXG4gICAgICAgICAgICBsb2NhbGU6IFwiZnJcIixcclxuICAgICAgICAgICAgXCJjdXN0b206cHJldmFsaWRhdGVkXCI6IFwiZmFsc2VcIixcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChwcmV2YWxpZGF0ZWQpIHtcclxuICAgICAgICAgICAgYXR0cmlidXRlc1tcImN1c3RvbTpwcmV2YWxpZGF0ZWRcIl0gPSBcInRydWVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gQVdTQ29nbml0b1xyXG4gICAgICAgIGNvbnN0IHBhc3N3b3JkID0gdS5wYXNzd29yZCA/IHUucGFzc3dvcmQgOiBcInRlbXBvcmFyeXBcIjtcclxuICAgICAgICBsZXQgZXJyb3I7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgeyB1c2VyU3ViIH0gPSBhd2FpdCBBdXRoLnNpZ25VcCh7XHJcbiAgICAgICAgICAgICAgICB1c2VybmFtZTogdS5lbWFpbCwgLy8gdXNlcm5hbWUgc2hvdWxkIGJlIGFuIGVtYWlsIHRoZXkgc2F5XHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZCxcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMsXHJcbiAgICAgICAgICAgICAgICBjbGllbnRNZXRhZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIHBob25lOiB1LnBob25lLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICh1c2VyU3ViKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVQcm9maWxlKHVzZXJTdWIsIHUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3JfOiBhbnkpIHtcclxuICAgICAgICAgICAgc3dpdGNoIChlcnJvcl8uY29kZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkludmFsaWRQYXNzd29yZEV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gXCJhdXRoLmVycm9yLndyb25nX3Bhc3N3b3JkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiVXNlck5vdENvbmZpcm1lZEV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gXCJhdXRoLmVycm9yLnVzZXJfbm90X2NvbmZpcm1lZFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb25cIjpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci5pbnZhbGlkX3BhcmFtZXRlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGVycm9yXy5tZXNzYWdlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBV1MgU2lnbiBVUCBlcnJvciA6ICR7ZXJyb3J9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAtIENyZWF0ZXMgQVdTIHVzZXIgaW4gQ29nbml0byBmb3IgSG90ZWwgVXNlciBQb29sIFNjaGVtYSAob25seSBlbWFpbCBpcyByZXF1aXJlZClcclxuICAgICAqIC0gQ3JlYXRlcyBQcm9maWxlIGluIER5bmFtb0RCXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHUgVXNlciB0byBiZSBjcmVhdGVkXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGNyZWF0ZUhvdGVsVXNlckFXU2FuZFByb2ZpbGUoXHJcbiAgICAgICAgdXNlcjoge1xyXG4gICAgICAgICAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgICAgICAgICBsYXN0TmFtZTogc3RyaW5nO1xyXG4gICAgICAgICAgICBmaXJzdE5hbWU6IHN0cmluZztcclxuICAgICAgICB9LFxyXG4gICAgKTogUHJvbWlzZTxQcm9maWxlPiB7XHJcbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHtcclxuICAgICAgICAgICAgZW1haWw6IHVzZXIuZW1haWwudHJpbSgpXHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBBV1NDb2duaXRvXHJcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSBcInRlbXBvcmFyeXBcIjtcclxuICAgICAgICBsZXQgZXJyb3I7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgeyB1c2VyU3ViIH0gPSBhd2FpdCBBdXRoLnNpZ25VcCh7XHJcbiAgICAgICAgICAgICAgICB1c2VybmFtZTogdXNlci5lbWFpbC50cmltKCksXHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZCxcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAodXNlclN1Yikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUHJvZmlsZSh1c2VyU3ViLCB1c2VyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yXzogYW55KSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoZXJyb3JfLmNvZGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJJbnZhbGlkUGFzc3dvcmRFeGNlcHRpb25cIjpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci53cm9uZ19wYXNzd29yZFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIlVzZXJOb3RDb25maXJtZWRFeGNlcHRpb25cIjpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci51c2VyX25vdF9jb25maXJtZWRcIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBcImF1dGguZXJyb3IuaW52YWxpZF9wYXJhbWV0ZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvcl8ubWVzc2FnZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQVdTIFNpZ24gVVAgZXJyb3IgOiAke2Vycm9yfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZVByb2ZpbGUoXHJcbiAgICAgICAgYXdzVXNlcklEOiBzdHJpbmcsXHJcbiAgICAgICAgdTogQ3JlYXRlVXNlcixcclxuICAgICk6IFByb21pc2U8UHJvZmlsZT4ge1xyXG4gICAgICAgIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmNyZWF0ZVByb2ZpbGUoe1xyXG4gICAgICAgICAgICB1c2VySUQ6IGF3c1VzZXJJRCxcclxuICAgICAgICAgICAgbWV0YWRhdGE6IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgIGVtYWlsOiB1LmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgcGhvbmU6IHUucGhvbmUsXHJcbiAgICAgICAgICAgICAgICBsYXN0TmFtZTogdS5sYXN0TmFtZSxcclxuICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogdS5maXJzdE5hbWUsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBzdGF0dXM6IFByb2ZpbGVTdGF0dXMuV0FJVElOR19GT1JfQUNUSVZBVElPTixcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcHJvZmlsZTtcclxuICAgIH1cclxuXHJcbiAgICBjdXJyZW50T3JnYW5pc2F0aW9uKHNwYWNlSUQ6IHN0cmluZyA9IG51bGwpOiBPcmdhbmlzYXRpb24ge1xyXG4gICAgICAgIGlmICh0aGlzLmN1KSB7XHJcbiAgICAgICAgICAgIGlmICghc3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zWzBdLm9yZ2FuaXNhdGlvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbihzcGFjZUlEKS5vcmdhbmlzYXRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGN1cnJlbnQoXHJcbiAgICAgICAgdXNlcixcclxuICAgICAgICBmYXN0Q29ubmVjdDogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgKTogUHJvbWlzZTxQcm9maWxlRW50aXR5IHwgbnVsbD4ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdSAmJiAhdGhpcy51cGRhdGluZykge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jdSA9IGF3YWl0IHRoaXMudXNlckZyb21BV1NJRCh1c2VyLnVzZXJuYW1lKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmN1ICYmIHVzZXIuYXR0cmlidXRlcy5lbWFpbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgICAgICAgYE5vIHByb2ZpbGUgZm9yIHVzZXJJRCDwn5SqICR7dXNlci5hdHRyaWJ1dGVzLmVtYWlsfWAsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgLy8gVGhlcmUncyBubyBwcm9maWxlcywgcHJvZmlsZXMuaXRlbXMubGVuZ3RoID09PSAwXHJcbiAgICAgICAgICAgICAgICAvLyBJdCdzIG1heWJlIHRoZSDwn6SuIGNhc2Ugd2hlcmUgdGhlIHByb2ZpbGUgaGFzIGJlZW4gc2F2ZWQgd2l0aCBhbiBlbWFpbFxyXG4gICAgICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiBhbiBoYXNoZWQgaWRcclxuICAgICAgICAgICAgICAgIC8vIElmIGZvdW5kLCB3ZSBuZWVkIHRvIHJlcGxhY2UgdGhlIGlkIGluIGJvdGggdGhlIFByb2ZpbGVcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVtYWlsUHJvZmlsZSA9IGF3YWl0IHRoaXMudXNlckZyb21BV1NJRChcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmF0dHJpYnV0ZXMuZW1haWwsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVtYWlsUHJvZmlsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBg8J+RjyBkb2luZyB0aGUgc3BhY2VoaXAgcmV2ZXJzYWwgZW1haWwgb24gJHt1c2VyLmF0dHJpYnV0ZXMuZW1haWx9YCxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3UgPSBhd2FpdCB0aGlzLnVzZXJGcm9tQVdTSUQodXNlci51c2VybmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmN1KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBBdXRoLnNpZ25PdXQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG1pc3Npb25zID0gYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS5pbnN0YW50TWlzc2lvbnNPZkN1cnJlbnQoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1LmlkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1pc3Npb25zID0gbWlzc2lvbnM7XHJcbiAgICAgICAgICAgIGxldCBva1RvTG9naW4gPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAoIWZhc3RDb25uZWN0ICYmICF0aGlzLmhhc01hbmFnZXJSb2xlSW5BbnlNaXNzaW9uKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGFjY2VzcyB0b2tlbiBpZiBub3QgRmFzdCBjb25uZWN0IChmYXN0IGNvbm5lY3QgaXMgZm9yIHRoZSBndWVzdCBjb25uZWN0aW9uIHZpYSBsaW5rKC9yZWRpcmVjdD91c2VyPSkpXHJcbiAgICAgICAgICAgICAgICAvLyBjaGVja3MgdmlzaXRvcnMobXVzZXVtIG9yIG5vdCksIG9jY3VwYW50cywgc2VydmljZVxyXG4gICAgICAgICAgICAgICAgb2tUb0xvZ2luID0gYXdhaXQgdGhpcy5jaGVja0FjY2Vzc1Rva2VuKFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXIuc2lnbkluVXNlclNlc3Npb24uYWNjZXNzVG9rZW4uand0VG9rZW4sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghb2tUb0xvZ2luKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1pc3Npb25zID0gW107XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBBdXRoLnNpZ25PdXQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7XHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5jdS5pZCxcclxuICAgICAgICAgICAgICAgIGxhc3RDb25uZWN0ZWRBdDogRGF0ZS5ub3coKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICghbWlzc2lvbnMgJiYgdGhpcy5sb2NhdGlvbi5wYXRoKCkgIT09IFwiL25vLW1pc3Npb25cIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbm8tbWlzc2lvblwiXSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInVzZXIgaXMgY2hhbmdlZCBlbWl0dGluZ1wiKTtcclxuICAgICAgICAgICAgdGhpcy5pc0NoYW5nZWQubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jdTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1c2VyRnJvbUFXU0lEKHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxQcm9maWxlRW50aXR5IHwgbnVsbD4ge1xyXG4gICAgICAgIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFByb2ZpbGVGcm9tQVdTSUQodXNlcklkKTtcclxuICAgICAgICBpZiAocHJvZmlsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb2ZpbGVFbnRpdHkocHJvZmlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVzZXJGcm9tVXNlcklEKHVzZXJJRDogc3RyaW5nKTogUHJvbWlzZTxQcm9maWxlRW50aXR5IHwgbnVsbD4ge1xyXG4gICAgICAgIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFByb2ZpbGUodXNlcklEKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb2ZpbGVFbnRpdHkocHJvZmlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3VycmVudE1pc3Npb24oc3BhY2VJRDogc3RyaW5nKTogTWlzc2lvbiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMuZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTWFuYWdlcihzcGFjZUlEOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgaWYgKG1pc3Npb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFuYWdlcnMuaW5jbHVkZXMobWlzc2lvbi5yb2xlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU2VydmljZShzcGFjZUlEOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgaWYgKG1pc3Npb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5TRVJWSUNFO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaXNBZG1pbihzcGFjZUlEOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgaWYgKG1pc3Npb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5BRE1JTjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU21hcnRlclBsYW4oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNwTWlzc2lvbnMgPSB0aGlzLmN1cnJlbnRNaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChtKSA9PlxyXG4gICAgICAgICAgICAgICAgbS5vcmdhbmlzYXRpb25JRCA9PT0gXCI2ZTI4MjAxZi00Njc5LTRjMjktOWQyZC04YTMyNWY1N2NlZTlcIiAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYW5hZ2Vycy5pbmNsdWRlcyhtLnJvbGUpLFxyXG4gICAgICAgICk7IC8vIElEIG9mIFNtYXJ0ZXJQbGFuXHJcbiAgICAgICAgcmV0dXJuIHNwTWlzc2lvbnMubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICBpc1NQQWRtaW4oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNwTWlzc2lvbnMgPSB0aGlzLmN1cnJlbnRNaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChtKSA9PlxyXG4gICAgICAgICAgICAgICAgbS5vcmdhbmlzYXRpb25JRCA9PT0gXCI2ZTI4MjAxZi00Njc5LTRjMjktOWQyZC04YTMyNWY1N2NlZTlcIiAmJlxyXG4gICAgICAgICAgICAgICAgbS5yb2xlID09PSBSb2xlU3RhdHVzLkFETUlOLFxyXG4gICAgICAgICk7IC8vIElEIG9mIFNtYXJ0ZXJQbGFuXHJcbiAgICAgICAgcmV0dXJuIHNwTWlzc2lvbnMubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogTWlzc2lvbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLmZpbmQoKG0pID0+IG0uc3BhY2VJRCA9PT0gc3BhY2VJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFzTWFuYWdlclJvbGVJbkFueU1pc3Npb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9ucy5zb21lKChtaXMpID0+XHJcbiAgICAgICAgICAgIHRoaXMubWFuYWdlcnMuaW5jbHVkZXMobWlzLnJvbGUpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFzU2VydmljZVJvbGVJbkFueU1pc3Npb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9ucy5zb21lKFxyXG4gICAgICAgICAgICAobWlzKSA9PiBtaXMucm9sZSA9PT0gUm9sZVN0YXR1cy5TRVJWSUNFLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFzQWRtaW5Sb2xlSW5BbnlNaXNzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuc29tZShcclxuICAgICAgICAgICAgKG1pcykgPT4gbWlzLnJvbGUgPT09IFJvbGVTdGF0dXMuQURNSU4sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGVPclVwZGF0ZU1pc3Npb25Gb3JPcmdXaXRoUHJvcGVydHkoXHJcbiAgICAgICAgbWlzc2lvbklucHV0OiBNaXNzaW9uLFxyXG4gICAgICAgIG9yZ0lEOiBzdHJpbmcsXHJcbiAgICAgICAgY3JlYXRlOiBib29sZWFuID0gdHJ1ZSxcclxuICAgICk6IFByb21pc2U8TWlzc2lvbj4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSBhd2FpdCAoY3JlYXRlXHJcbiAgICAgICAgICAgID8gdGhpcy5taXNzaW9uU2VydmljZS5jcmVhdGUobWlzc2lvbklucHV0KVxyXG4gICAgICAgICAgICA6IHRoaXMubWlzc2lvblNlcnZpY2UudXBkYXRlKG1pc3Npb25JbnB1dCkpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tYW5hZ2Vycy5pbmNsdWRlcyhtaXNzaW9uLnJvbGUpICYmIG1pc3Npb24uc3BhY2VJRCkge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID1cclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmdldFByb3BlcnRpZXNGb3JPcmdhbmlzYXRpb24ob3JnSUQpO1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eVNwYWNlSURzID0gcHJvcGVydGllcy5tYXAoXHJcbiAgICAgICAgICAgICAgICAocHJvcGVydHlfKSA9PiBwcm9wZXJ0eV8uc3BhY2VJRCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHByb3BlcnR5U3BhY2VJRHMuaW5jbHVkZXMobWlzc2lvbi5zcGFjZUlEKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npb247XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gd2UgZGVsZWdhdGUgdGhlIHJpZ2h0cyBvZiB0aGUgc3BhY2VcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuY3JlYXRlUHJvcGVydHkoe1xyXG4gICAgICAgICAgICAgICAgc3BhY2VJRDogbWlzc2lvbi5zcGFjZUlELFxyXG4gICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uSUQ6IG9yZ0lELFxyXG4gICAgICAgICAgICAgICAgdHlwZTogUHJvcGVydHlUeXBlLlNIQVJFRCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtaXNzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNvZnREZWxldGVVc2VyKHVzZXJJRDogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLmdldE1pc3Npb25zRnJvbVVzZXJJRCh1c2VySUQpO1xyXG4gICAgICAgIGlmIChtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVQcm9maWxlKHsgaWQ6IHVzZXJJRCwgZGVsZXRlZEF0OiBEYXRlLm5vdygpIH0pO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlByb2ZpbGUgc29mdCBkZWxldGVkXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIHRoZSBQcm9maWxlIChieSBpZCkgY2FuIGJlIHJlbW92ZWQgY29tcGxldGVseSBmcm9tIHRoZSBEQiAobm8gbWlzc2lvbnMgaW4gdGhlIERCKVxyXG4gICAgICogQHBhcmFtIHByb2ZpbGVJRFxyXG4gICAgICogQHJldHVybnMgYm9vbGVhblxyXG4gICAgICovXHJcbiAgICBhc3luYyBjYW5IYXJkRGVsZXRlVXNlcihwcm9maWxlSUQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zID0gKGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UuZ2V0TWlzc2lvbnNGcm9tVXNlcklEKHByb2ZpbGVJRCkpO1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9ucy5sZW5ndGggPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaGFyZERlbGV0ZVVzZXIodXNlcklEOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBkZWxldGVkID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5kZWxldGVQcm9maWxlKHVzZXJJRCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJQcm9maWxlIGhhcmQgZGVsZXRlZFwiKTtcclxuICAgICAgICByZXR1cm4gZGVsZXRlZDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNYW5hZ2VyTWlzc2lvbnMoKTogTWlzc2lvbltdIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLmZpbHRlcigobWlzKSA9PlxyXG4gICAgICAgICAgICB0aGlzLm1hbmFnZXJzLmluY2x1ZGVzKG1pcy5yb2xlKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEF2YWxhYmxlTGV2ZWxzRm9yQ3VycmVudFVzZXIoKTogTGV2ZWxTdGF0dXNbXSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gW0xldmVsU3RhdHVzLk1JTklNVU1dO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsZXZlbHMgPSBlbnVtVG9BcnJheShMZXZlbFN0YXR1cyk7XHJcbiAgICAgICAgY29uc3QgaGlnaGVzdExldmVsID0gZ2V0SGlnaGVzdExldmVsRm9yTWlzc2lvbnModGhpcy5jdXJyZW50TWlzc2lvbnMpO1xyXG5cclxuICAgICAgICByZXR1cm4gbGV2ZWxzLmZpbHRlcigobGV2ZWwpID0+XHJcbiAgICAgICAgICAgIGdldExldmVsc0JlbG93KGhpZ2hlc3RMZXZlbCkuaW5jbHVkZXMobGV2ZWwpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QXZhaWxhYmxlUm9sZXNGb3JDdXJyZW50VXNlcigpOiBSb2xlU3RhdHVzW10ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtSb2xlU3RhdHVzLlZJU0lUT1JdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByb2xlcyA9IGVudW1Ub0FycmF5KFJvbGVTdGF0dXMpO1xyXG4gICAgICAgIGNvbnN0IGhpZ2hlc3RSb2xlID0gZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucyh0aGlzLmN1cnJlbnRNaXNzaW9ucyk7XHJcbiAgICAgICAgcmV0dXJuIHJvbGVzLmZpbHRlcigocm9sZSkgPT5cclxuICAgICAgICAgICAgZ2V0Um9sZXNCZWxvd0Zvck1hbmFnZXIoaGlnaGVzdFJvbGUpLmluY2x1ZGVzKHJvbGUpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFRlc3QgaWYgdGhlIHVzZXIgaGF2ZSB0aGUgcm9sZSBnaXZlbiBpbiBwYXJhbWV0ZXIgOiBcInJvbGVTdGF0dXNcIiAqL1xyXG4gICAgaXNSb2xlKHJvbGVTdGF0dXM6IFJvbGVTdGF0dXMpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLnNvbWUoKG0pID0+IG0ucm9sZSA9PT0gcm9sZVN0YXR1cyk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNHdWlkZShzcGFjZUlEOiBzdHJpbmcgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHNwYWNlSUQpIHtcclxuICAgICAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMuZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgICAgICBpZiAobWlzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5HVUlERV9NVVNFVU07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSb2xlKFJvbGVTdGF0dXMuR1VJREVfTVVTRVVNKTtcclxuICAgIH1cclxuXHJcbiAgICBpc011c2V1bVZpc2l0b3Ioc3BhY2VJRDogc3RyaW5nID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChzcGFjZUlEKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICAgICAgaWYgKG1pc3Npb24pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtaXNzaW9uLnJvbGUgPT09IFJvbGVTdGF0dXMuVklTSVRPUl9NVVNFVU07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSb2xlKFJvbGVTdGF0dXMuVklTSVRPUl9NVVNFVU0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlzT2NjdXBhbnQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSb2xlKFJvbGVTdGF0dXMuT0NDVVBBTlQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzVmlzaXRvcihzcGFjZUlEOiBzdHJpbmcgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHNwYWNlSUQpIHtcclxuICAgICAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMuZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgICAgICBpZiAobWlzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5WSVNJVE9SO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmlzUm9sZShSb2xlU3RhdHVzLlZJU0lUT1IpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTXVzZXVtVXNlcihzcGFjZUlEOiBzdHJpbmcgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNHdWlkZShzcGFjZUlEKSB8fCB0aGlzLmlzTXVzZXVtVmlzaXRvcihzcGFjZUlEKTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNPbmx5TXVzZXVtUm9sZSgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLmV2ZXJ5KFxyXG4gICAgICAgICAgICAgICAgKG0pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgbS5yb2xlID09PSBSb2xlU3RhdHVzLkdVSURFX01VU0VVTSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIG0ucm9sZSA9PT0gUm9sZVN0YXR1cy5WSVNJVE9SX01VU0VVTSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHByb2ZpbGVGb3JNYWlsKG1haWw6IHN0cmluZyk6IFByb21pc2U8UHJvZmlsZT4ge1xyXG4gICAgICAgIGNvbnN0IHVzZXJzV2l0aE1haWwgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFVzZXJzRm9yTWFpbChtYWlsKTtcclxuICAgICAgICByZXR1cm4gdXNlcnNXaXRoTWFpbC5sZW5ndGggPiAwID8gdXNlcnNXaXRoTWFpbFswXSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY3VycmVudE9yZGVyZWRPcmdMaXN0KCk6IE9yZ2FuaXNhdGlvbltdIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgb3JkZXJlZE9yZ0xpc3QgPSB0aGlzLmN1cnJlbnRNaXNzaW9ucy5tYXAoXHJcbiAgICAgICAgICAgIChtaXMpID0+IG1pcy5vcmRlcmVkT3JnYW5pc2F0aW9uLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChvcmRlcmVkT3JnTGlzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXNlckhhc0FjY2Vzc1RvQWxsWm9uZXNJblNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zRm9yU3BhY2UgPSB0aGlzLmN1cnJlbnRNaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChtaXMpID0+IG1pcy5zcGFjZUlEID09PSBzcGFjZUlELFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb25zRm9yU3BhY2Uuc29tZShcclxuICAgICAgICAgICAgKG1pc3Npb24pID0+XHJcbiAgICAgICAgICAgICAgICAhbWlzc2lvbi56b25lSUQgfHwgKG1pc3Npb24uem9uZSAmJiAhbWlzc2lvbi56b25lLnBhcmVudElEKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvZ291dEN1cnJlbnRBbmRTaWduT3V0QXV0aCgpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByb2ZpbGUoe1xyXG4gICAgICAgICAgICBpZDogdGhpcy5jdS5pZCxcclxuICAgICAgICAgICAgdG9rZW46IG51bGwsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jdSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TWlzc2lvbnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaXNDaGFuZ2VkLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIGF3YWl0IEF1dGguc2lnbk91dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvZ291dEN1cnJlbnRXaWh0b3V0QXV0aCgpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByb2ZpbGUoe1xyXG4gICAgICAgICAgICBpZDogdGhpcy5jdS5pZCxcclxuICAgICAgICAgICAgdG9rZW46IG51bGwsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jdSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TWlzc2lvbnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaXNDaGFuZ2VkLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoZWNrQWNjZXNzVG9rZW4oand0VG9rZW46IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGVUaW1lLmxvY2FsKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuY3UudG9rZW4gJiYgdGhpcy5jdS50b2tlbkV4cGlyZWRBdCA+IG5vdy50b01pbGxpcygpKSB7XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIHRva2VuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1LnRva2VuID09PSBqd3RUb2tlbikge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJzYW1lIGF3cyB0b2tlblwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFsZXJ0KHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhdXRoLmVycm9yLmFjdGl2ZVRva2VuXCIpKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByb2ZpbGUoe1xyXG4gICAgICAgICAgICBpZDogdGhpcy5jdS5pZCxcclxuICAgICAgICAgICAgdG9rZW5FeHBpcmVkQXQ6IG5vdy5wbHVzKHsgbWludXRlczogNSB9KS50b01pbGxpcygpLFxyXG4gICAgICAgICAgICB0b2tlbjogand0VG9rZW4sXHJcbiAgICAgICAgICAgIHN0YXR1czogUHJvZmlsZVN0YXR1cy5BQ1RJVkUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2xlYXJVc2VyVG9rZW4oaWQpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByb2ZpbGUoe1xyXG4gICAgICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUN1cnJlbnRVc2VyKHByb2ZpbGU6IFByb2ZpbGUpIHtcclxuICAgICAgICB0aGlzLmN1ID0gbmV3IFByb2ZpbGVFbnRpdHkocHJvZmlsZSk7XHJcbiAgICAgICAgdGhpcy5pc0NoYW5nZWQubmV4dCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTcE1vZHVsZSgpOiBTcE1vZHVsZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3BNb2R1bGU7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- class ValidatorsService {
3
+ export class ValidatorsService {
4
4
  constructor() { }
5
5
  /**
6
6
  * return if control as error
@@ -38,14 +38,13 @@ class ValidatorsService {
38
38
  }
39
39
  return '';
40
40
  }
41
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidatorsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
42
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidatorsService, providedIn: 'root' });
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidatorsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
42
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidatorsService, providedIn: 'root' });
43
43
  }
44
- export { ValidatorsService };
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidatorsService, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidatorsService, decorators: [{
46
45
  type: Injectable,
47
46
  args: [{
48
47
  providedIn: 'root'
49
48
  }]
50
- }], ctorParameters: function () { return []; } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy92YWxpZGF0b3JzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0MsTUFHYSxpQkFBaUI7SUFFNUIsZ0JBQWdCLENBQUM7SUFFakI7Ozs7T0FJRztJQUNJLGNBQWMsQ0FBQyxPQUFPO1FBQzNCLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxRQUFRLENBQUMsT0FBTztRQUNyQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDbEIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDM0IsT0FBTyxvQkFBb0IsQ0FBQzthQUM3QjtZQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQzFCLE9BQU8sbUJBQW1CLENBQUM7YUFDNUI7WUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO2dCQUN2QixPQUFPLGdCQUFnQixDQUFDO2FBQ3pCO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtnQkFDeEIsT0FBTyxpQkFBaUIsQ0FBQzthQUMxQjtZQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7Z0JBQzVCLE9BQU8scUJBQXFCLENBQUM7YUFDOUI7WUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUN6QixPQUFPLGtCQUFrQixDQUFDO2FBQzNCO1NBQ0Y7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7d0dBekNVLGlCQUFpQjs0R0FBakIsaUJBQWlCLGNBRmhCLE1BQU07O1NBRVAsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdG9yc1NlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiByZXR1cm4gaWYgY29udHJvbCBhcyBlcnJvclxyXG4gICAqIEBwYXJhbSBjb250cm9sIFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBpc0NvbnRyb2xFcnJvcihjb250cm9sKSB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wudG91Y2hlZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiByZXR1cm4gZXJyb3Igb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sIFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRFcnJvcihjb250cm9sKSB7XHJcbiAgICBpZiAoY29udHJvbC5lcnJvcnMpIHtcclxuICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzLnJlcXVpcmVkKSB7XHJcbiAgICAgICAgcmV0dXJuICdlcnJvckZvcm0ucmVxdWlyZWQnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb250cm9sLmVycm9ycy5pc0VtcHR5KSB7XHJcbiAgICAgICAgcmV0dXJuICdlcnJvckZvcm0uaXNFbXB0eSc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzLnRleHQpIHtcclxuICAgICAgICByZXR1cm4gJ2Vycm9yRm9ybS50ZXh0JztcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC5lcnJvcnMuZW1haWwpIHtcclxuICAgICAgICByZXR1cm4gJ2Vycm9yRm9ybS5lbWFpbCc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzLm1heGxlbmd0aCkge1xyXG4gICAgICAgIHJldHVybiAnZXJyb3JGb3JtLm1heExlbmd0aCc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzLm51bWJlcikge1xyXG4gICAgICAgIHJldHVybiAnZXJyb3JGb3JtLm51bWJlcic7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19
49
+ }], ctorParameters: () => [] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy92YWxpZGF0b3JzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixnQkFBZ0IsQ0FBQztJQUVqQjs7OztPQUlHO0lBQ0ksY0FBYyxDQUFDLE9BQU87UUFDM0IsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxPQUFPO1FBQ3JCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxvQkFBb0IsQ0FBQztZQUM5QixDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMzQixPQUFPLG1CQUFtQixDQUFDO1lBQzdCLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sZ0JBQWdCLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxpQkFBaUIsQ0FBQztZQUMzQixDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM3QixPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sa0JBQWtCLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7d0dBekNVLGlCQUFpQjs0R0FBakIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3JzU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHJldHVybiBpZiBjb250cm9sIGFzIGVycm9yXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgcHVibGljIGlzQ29udHJvbEVycm9yKGNvbnRyb2wpIHtcclxuICAgIHJldHVybiAoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgY29udHJvbC50b3VjaGVkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHJldHVybiBlcnJvciBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgcHVibGljIGdldEVycm9yKGNvbnRyb2wpIHtcclxuICAgIGlmIChjb250cm9sLmVycm9ycykge1xyXG4gICAgICBpZiAoY29udHJvbC5lcnJvcnMucmVxdWlyZWQpIHtcclxuICAgICAgICByZXR1cm4gJ2Vycm9yRm9ybS5yZXF1aXJlZCc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzLmlzRW1wdHkpIHtcclxuICAgICAgICByZXR1cm4gJ2Vycm9yRm9ybS5pc0VtcHR5JztcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC5lcnJvcnMudGV4dCkge1xyXG4gICAgICAgIHJldHVybiAnZXJyb3JGb3JtLnRleHQnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb250cm9sLmVycm9ycy5lbWFpbCkge1xyXG4gICAgICAgIHJldHVybiAnZXJyb3JGb3JtLmVtYWlsJztcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC5lcnJvcnMubWF4bGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuICdlcnJvckZvcm0ubWF4TGVuZ3RoJztcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC5lcnJvcnMubnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuICdlcnJvckZvcm0ubnVtYmVyJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
@@ -10,7 +10,7 @@ import { ViewFrustumMeshType, makeViewFrustumMesh } from "../matterport-extensio
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "./models/poi.service";
12
12
  import * as i2 from "./matterport.service";
13
- class ViewerService {
13
+ export class ViewerService {
14
14
  poiService;
15
15
  matterportService;
16
16
  viewerMode = 'Matterport';
@@ -384,14 +384,13 @@ class ViewerService {
384
384
  isObject3DLoadedInPosition() {
385
385
  return this.isObjectLoaded;
386
386
  }
387
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewerService, deps: [{ token: i1.PoiService }, { token: i2.MatterportService }], target: i0.ɵɵFactoryTarget.Injectable });
388
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewerService, providedIn: 'root' });
387
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewerService, deps: [{ token: i1.PoiService }, { token: i2.MatterportService }], target: i0.ɵɵFactoryTarget.Injectable });
388
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewerService, providedIn: 'root' });
389
389
  }
390
- export { ViewerService };
391
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewerService, decorators: [{
390
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewerService, decorators: [{
392
391
  type: Injectable,
393
392
  args: [{
394
393
  providedIn: 'root',
395
394
  }]
396
- }], ctorParameters: function () { return [{ type: i1.PoiService }, { type: i2.MatterportService }]; } });
397
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3ZpZXdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQyw4QkFBOEI7QUFDOUIseUNBQXlDO0FBQ3pDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUdMLGtCQUFrQixFQUNsQixPQUFPLEVBS1AsUUFBUSxHQUNULE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDakgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sNERBQTRELENBQUM7Ozs7QUFHdEgsTUFHYSxhQUFhO0lBcURkO0lBQ0E7SUFyREYsVUFBVSxHQUFXLFlBQVksQ0FBQztJQUVuQyxjQUFjLENBQVM7SUFFdEIsT0FBTyxDQUFTO0lBRWpCLFVBQVUsR0FLWixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRVosWUFBWSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRS9DLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUV0QixXQUFXLENBQWdCO0lBRTNCLGNBQWMsQ0FBbUM7SUFFakQsYUFBYSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTdDLGFBQWEsR0FBRztRQUNyQixTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUsS0FBSztZQUNYLE1BQU0sRUFBRSxjQUFjO1lBQ3RCLElBQUk7WUFDSixDQUFDO1lBQ0QsSUFBSTtZQUNKLENBQUM7U0FDRjtRQUNELFNBQVMsRUFB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LENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO3dCQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzt3QkFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7cUJBQzVCO2dCQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ2IsQ0FBQztnQkFDRixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUMxQjtZQUNELE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHFCQUFxQixDQUFDLGVBQXlCO1FBQzdDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0lBRUQsMkJBQTJCLENBQUMsWUFBcUI7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUM7SUFDckMsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQzt3R0FwZVUsYUFBYTs0R0FBYixhQUFhLGNBRlosTUFBTTs7U0FFUCxhQUFhOzRGQUFiLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cclxuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cclxuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWF0dGVycG9ydFNlcnZpY2UgfSBmcm9tICcuL21hdHRlcnBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VUYWdTZXJ2aWNlIH0gZnJvbSAnLi90YWcuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgRGJPYmplY3RUeXBlLFxyXG4gIFBPSSxcclxuICBWaWV3ZXJJbnRlcmFjdGlvbnMsXHJcbiAgUG9pVHlwZSxcclxuICBDb21tZW50LFxyXG4gIEVxdWlwbWVudCxcclxuICBUaWNrZXQsXHJcbiAgRmVhdHVyZSxcclxuICBTcE1vZHVsZSxcclxufSBmcm9tICcuLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9pU2VydmljZSB9IGZyb20gJy4vbW9kZWxzL3BvaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbWFrZVNlY3VyaXR5Q2FtZXJhLCBzZWN1cml0eUNhbWVyYVR5cGUgfSBmcm9tIFwiLi4vbWF0dGVycG9ydC1leHRlbnNpb25zL3NlY3VyaXR5LWNhbWVyYS9TZWN1cml0eUNhbWVyYVwiO1xyXG5pbXBvcnQgeyBWaWV3RnJ1c3R1bU1lc2hUeXBlLCBtYWtlVmlld0ZydXN0dW1NZXNoIH0gZnJvbSBcIi4uL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy92aWV3LWZydXN0dW0tbWVzaC9WaWV3RnJ1c3R1bU1lc2hcIjtcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4vbmF2aWdhdG9yLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFZpZXdlclNlcnZpY2Uge1xyXG4gIHByaXZhdGUgdmlld2VyTW9kZTogc3RyaW5nID0gJ01hdHRlcnBvcnQnO1xyXG5cclxuICBwdWJsaWMgY3VycmVudE1vZGVsM0Q6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSB0b3VyVXJsOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyB2aWV3ZXJJc09uOiBTdWJqZWN0PHtcclxuICAgIHNwYWNlSUQ6IHN0cmluZyB8IG51bGw7XHJcbiAgICBtb2RlbDNEOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgc3dlZXA6IHN0cmluZyB8IG51bGw7XHJcbiAgICByb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgfSB8IG51bGw7XHJcbiAgfT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBwdWJsaWMgZGF0YUlzTG9hZGVkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHVibGljIGlzTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBzaG93aW5nVmlld2VyID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBzd2VlcFRvTW92ZTogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgcHVibGljIHJvdGF0aW9uVG9Nb3ZlOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB9IHwgbnVsbDtcclxuXHJcbiAgcHVibGljIGdvVG9UcmlnZ2VyZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBwdWJsaWMgdG9vbGJveFN0YXRlcyA9IHtcclxuICAgIGRvbGxob3VzZToge1xyXG4gICAgICBzdGF0OiBmYWxzZSxcclxuICAgICAgaWNvbklkOiAndWktZG9sbGhvdXNlJyxcclxuICAgICAgc2hvdygpIHtcclxuICAgICAgfSxcclxuICAgICAgaGlkZSgpIHtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBmbG9vcnBsYW46IHtcclxuICAgICAgc3RhdDogZmFsc2UsXHJcbiAgICB9LFxyXG4gICAgbWVzdXJlOiB7XHJcbiAgICAgIHN0YXQ6IGZhbHNlLFxyXG4gICAgICBpY29uSWQ6ICd1aS1tZXN1cmUnLFxyXG4gICAgICBzaG93KCkge1xyXG4gICAgICB9LFxyXG4gICAgICBoaWRlKCkge1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGZpbHRlcjoge1xyXG4gICAgICBzdGF0OiBmYWxzZSxcclxuICAgIH0sXHJcbiAgfTtcclxuICBwcml2YXRlIGlzT2JqZWN0TG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwb2lTZXJ2aWNlOiBQb2lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtYXR0ZXJwb3J0U2VydmljZTogTWF0dGVycG9ydFNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNldE1vZGUoJ01hdHRlcnBvcnQnKTtcclxuICB9XHJcblxyXG5cclxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICBVdGlsc1xyXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICBjaGVja01vZGUoaW5kZXhNb2RlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnZpZXdlck1vZGUgPT09IGluZGV4TW9kZTtcclxuICB9XHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgIFNldHRlcnNcclxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbiAgc2V0TW9kZShpbmRleE1vZGU6IHN0cmluZykge1xyXG4gICAgdGhpcy52aWV3ZXJNb2RlID0gaW5kZXhNb2RlO1xyXG4gIH1cclxuXHJcbiAgc2V0VG91clVybChcclxuICAgIG1vZGVsM2Q6IHN0cmluZyxcclxuICAgIHNob3dJY29uUGxhbjogYm9vbGVhbiA9IHRydWUsXHJcbiAgICBzaG93SWNvbkRvbGxob3VzZTogYm9vbGVhbiA9IHRydWUsXHJcbiAgICBzaG93SWNvbkZsb29yczogYm9vbGVhbiA9IHRydWUsXHJcbiAgICBlbmFibGVRdWlja1N0YXJ0OiBib29sZWFuID0gdHJ1ZVxyXG4gICkge1xyXG4gICAgLy8gdGhpcy50b3VyVXJsID0gYGh0dHBzOi8vbXkubWF0dGVycG9ydC5jb20vc2hvdy8/bT0ke21vZGVsM2R9JnBsYXk9MSZocj0wJmd0PTAmdGl0bGU9MCZsb2c9MCZicmFuZD0wJnNlYXJjaD0wJmFwcGxpY2F0aW9uS2V5PXFuOXdzYXN1eTVoMmZ6cmJybjFuenIwaWQmbWRzPTAmbmV3dGFncz0xYDtcclxuICAgIHRoaXMudG91clVybCA9IGAvYXNzZXRzL2J1bmRsZS9zaG93Y2FzZS5odG1sP209JHttb2RlbDNkfSZwbGF5PTEmaHI9MCZndD0wJnRpdGxlPTAmbG9nPTAmYnJhbmQ9MCZzZWFyY2g9MCZhcHBsaWNhdGlvbktleT1xbjl3c2FzdXk1aDJmenJicm4xbnpyMGlkJm1kcz0wJm5ld3RhZ3M9MWA7XHJcblxyXG4gICAgaWYgKCFzaG93SWNvblBsYW4pIHtcclxuICAgICAgdGhpcy50b3VyVXJsICs9ICcmZnA9MCc7XHJcbiAgICB9XHJcbiAgICBpZiAoIXNob3dJY29uRG9sbGhvdXNlKSB7XHJcbiAgICAgIHRoaXMudG91clVybCArPSAnJmRoPTAnO1xyXG4gICAgfVxyXG4gICAgaWYgKCFzaG93SWNvbkZsb29ycykge1xyXG4gICAgICB0aGlzLnRvdXJVcmwgKz0gJyZmPTAnO1xyXG4gICAgfVxyXG4gICAgaWYgKGVuYWJsZVF1aWNrU3RhcnQpIHtcclxuICAgICAgdGhpcy50b3VyVXJsICs9ICcmcXM9MSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBjbGVhckFsbCgpIHtcclxuICAgIC8vIHRoaXMuc3dlZXBUb01vdmUgPSBudWxsO1xyXG4gICAgLy8gdGhpcy5yb3RhdGlvblRvTW92ZSA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLnNob3dpbmdWaWV3ZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc0xvYWRlZCA9IGZhbHNlO1xyXG4gICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmNsZWFyQWxsKCk7XHJcbiAgICAgIHRoaXMudmlld2VySXNPbi5uZXh0KHtcclxuICAgICAgICBzcGFjZUlEOiBudWxsLFxyXG4gICAgICAgIG1vZGVsM0Q6IG51bGwsXHJcbiAgICAgICAgc3dlZXA6IG51bGwsXHJcbiAgICAgICAgcm90YXRpb246IG51bGwsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgR2V0dGVyc1xyXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICBnZXRNb2RlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmlld2VyTW9kZTtcclxuICB9XHJcblxyXG4gIGdldFZpZXdlclNlbGVjdGVkU2VydmljZSgpIHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIC8vIGlmICh0aGlzLmNoZWNrTW9kZShcIk1hdHRlcnBvcnRcIikpIHtcclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5nZXRNYXR0ZXJwb3J0U2VydmljZSgpO1xyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0TWF0dGVycG9ydFNlcnZpY2UoKTtcclxuICB9XHJcblxyXG4gIGdldFRvdXJVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50b3VyVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWF0dGVycG9ydFNlcnZpY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tYXR0ZXJwb3J0U2VydmljZTtcclxuICB9XHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgIEdlbmVyaWMgTWFpbiBhY3Rpb24gZnVuY3Rpb25zXHJcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgc2V0U3dlZXBUb01vdmUoc3dlZXA6IHN0cmluZykge1xyXG4gICAgdGhpcy5zd2VlcFRvTW92ZSA9IHN3ZWVwO1xyXG4gIH1cclxuXHJcbiAgc2V0Um90YXRpb25Ub01vdmUocm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH0pIHtcclxuICAgIHRoaXMucm90YXRpb25Ub01vdmUgPSByb3RhdGlvbjtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFjdGlvbl9tb3ZlX3RvX3RhZyhlbGVtZW50SWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRUYWdGcm9tRWxlbWVudElkKGVsZW1lbnRJZCk7XHJcbiAgICAgIGlmIChyZXN1bHQudGFnKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nb1RvVGFnKHJlc3VsdC50YWcpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXN1bHQuc3dlZXApIHtcclxuICAgICAgICB0aGlzLnN3ZWVwVG9Nb3ZlID0gcmVzdWx0LnN3ZWVwO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMgTWF0dGVydGFncyB0byBWaWV3ZXJcclxuICAgKiBAcGFyYW0gb2JqZWN0cyBMaXN0IG9mIG9iamVjdHMgKHRpY2tldHMsIGVxdWlwbWVudHMpIGV0YyB0byBiZSBhZGRlZCBhcyBNYXR0ZXJ0YWdzXHJcbiAgICovXHJcbiAgYXN5bmMgYWRkT2JqZWN0VGFnc1RvVmlld2VyKG9iamVjdHM6IERiT2JqZWN0VHlwZVtdKSB7XHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgb2JqZWN0cy5tYXAoYXN5bmMgKG9iamVjdCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5nZXRQb2lCeUVsZW1lbnRJZChvYmplY3QuaWQhKTtcclxuICAgICAgICBpZiAocG9pICYmIHBvaS5jb29yZGluYXRlKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmFjdGlvbkFkZE9iamVjdEZyb21QT0kob2JqZWN0LCBwb2kpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBhY3Rpb25BZGRPYmplY3RGcm9tUE9JKG9iamVjdDogRGJPYmplY3RUeXBlLCBwb2k6IFBPSSkge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY3JlYXRlTWF0dGVydGFnRnJvbVBPSShcclxuICAgICAgICBwb2kudHlwZSEsXHJcbiAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgIHBvaVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgLy8gQ3VwaXhcclxuICAgIC8vIFRPRE9cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFjdGlvbl9kZWxldGVfZWxlbWVudChlbGVtZW50OiBEYk9iamVjdFR5cGUpIHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZGVsZXRlTWF0dGVydGFnRm9yT2JqZWN0KGVsZW1lbnQuaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlIHRhZyBwbGFjZW1lbnQgbWVudSB0byBhZGQgYSBuZXcgZWxlbWVudCBkZXBlbmRpbmcgb24gaXRzIHR5cGUgKFRJQ0tFVCwgREFUQSwgRVFVSVBNRU5UIGV0YylcclxuICAgKi9cclxuICBhc3luYyBhY3Rpb25BZGROZXdFbGVtZW50VG9WaWV3ZXIocG9pVHlwZTogUG9pVHlwZSkge1xyXG4gICAgdGhpcy5hY3Rpb25fdG9vbGJveF9pbnNpZGVfdmlldygpO1xyXG5cclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSAmJlxyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEludGVyYWN0aW9uTW9kZSgpID09PSBWaWV3ZXJJbnRlcmFjdGlvbnMuREVGQVVMVFxyXG4gICAgKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWRkTWF0dGVydGFnV2hlbkFkZGluZyhwb2lUeXBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExhdW5jaGVzIHRoZSByZXBvc2l0aW9uaW5nIG9mIGFuIGV4aXN0aW5nIE1hdHRlcnRhZyByZWxhdGVkIHRvIHBhcmFtZXRlciBvYmplY3RcclxuICAgKiBAcGFyYW0gZWxlbWVudCBvYmplY3QgKFRJQ0tFVCwgRVFVSVBNRU5ULCBGRUFUVVJFLCBldGMpXHJcbiAgICogQHBhcmFtIHBvaVR5cGUgdHlwZSBvZiBvYmplY3RcclxuICAgKi9cclxuICBhc3luYyBhY3Rpb25SZXBvc2l0aW9uRWxlbWVudEluVmlld2VyKFxyXG4gICAgZWxlbWVudDogRGJPYmplY3RUeXBlLFxyXG4gICAgcG9pVHlwZTogUG9pVHlwZVxyXG4gICkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpICYmXHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0SW50ZXJhY3Rpb25Nb2RlKCkgPT09IFZpZXdlckludGVyYWN0aW9ucy5ERUZBVUxUXHJcbiAgICApIHtcclxuICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hZGRNYXR0ZXJ0YWdXaGVuUmVwb3NpdGlvbmluZyhwb2lUeXBlLCBlbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZSB0aWNrZXQgcGxhY2VtZW50IG1lbnUgdG8gYWRkIGEgbmV3IHRpY2tldFxyXG4gICAqL1xyXG4gIGFjdGlvbl9jYW5jZWxlZCgpIHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY2FuY2VsRm9sbG93aW5nQ3Vyc29yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb25fdG9vbGJveF9pbnNpZGVfdmlldygpIHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX3Rvb2xib3hfaW5zaWRlX3ZpZXcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGlvblNob3dBbGxGbG9vcnMoKSB7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvblNob3dBbGxGbG9vcnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGlvbl90b29sYm94X2RvbGxob3VzZSgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRJbnRlcmFjdGlvbk1vZGUoKSAhPT0gVmlld2VySW50ZXJhY3Rpb25zLkRFRkFVTFRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGlvbl9jYW5jZWxlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aW9uX3Rvb2xib3hfY2FuY2VsX21lc3VyZSgpO1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fdG9vbGJveF9kb2xsaG91c2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGFjdGlvbl9mbG9vcnBsYW4oKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0SW50ZXJhY3Rpb25Nb2RlKCkgIT09IFZpZXdlckludGVyYWN0aW9ucy5ERUZBVUxUXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hY3Rpb25fY2FuY2VsZWQoKTtcclxuICAgIH1cclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX3Rvb2xib3hfZmxvb3JwbGFuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb25fdG9vbGJveF9tZXN1cmUoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0SW50ZXJhY3Rpb25Nb2RlKCkgIT09IFZpZXdlckludGVyYWN0aW9ucy5ERUZBVUxUXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hY3Rpb25fY2FuY2VsZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvbl90b29sYm94X2luc2lkZV92aWV3KCk7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl90b29sYm94X21lc3VyZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uX3Rvb2xib3hfY2FuY2VsX21lc3VyZSgpIHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX3Rvb2xib3hfY2FuY2VsX21lc3VyZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWN0aW9uX3VwZGF0ZV9wb2koXHJcbiAgICBwb2k6IFBPSSxcclxuICAgIGlzVmFsaWQ6IGJvb2xlYW4sXHJcbiAgICBlbGVtZW50OiBEYk9iamVjdFR5cGVcclxuICApOiBQcm9taXNlPFBPST4ge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgICBjb25zdCBsYXN0VGFnID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5tYXR0ZXJ0YWdUb0ZvbGxvd1xyXG4gICAgICAgICAgPyB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLm1hdHRlcnRhZ1RvRm9sbG93XHJcbiAgICAgICAgICA6IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0TGFzdFRhZygpO1xyXG4gICAgICAgIGlmICghbGFzdFRhZykge1xyXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwb2kpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRNYXR0ZXJUYWdEYXRhRm9yTWF0dGVydGFnKGxhc3RUYWcpO1xyXG4gICAgICAgIGlmICghdGFnRGF0YSkge1xyXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwb2kpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcG9pTWV0YWRhdGEgPSAoISFwb2kgJiYgcG9pLm1ldGFkYXRhKSA/IEpTT04ucGFyc2UocG9pLm1ldGFkYXRhKSA6IHt9O1xyXG4gICAgICAgIHBvaU1ldGFkYXRhLm5vcm1hbCA9IHRhZ0RhdGEuZ2V0Tm9ybWFsKCk7XHJcbiAgICAgICAgaWYgKCFwb2kpIHtcclxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwb2lJbnB1dCA9IHtcclxuICAgICAgICAgIGlkOiBwb2kuaWQsXHJcbiAgICAgICAgICBjb29yZGluYXRlOiB0YWdEYXRhLmdldENvb3JkaW5hdGVTdHJpbmcoKSxcclxuICAgICAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiB0YWdEYXRhLmdldFN3ZWVwSUQoKSxcclxuICAgICAgICAgIG1ldGFkYXRhOiBKU09OLnN0cmluZ2lmeShwb2lNZXRhZGF0YSksXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCB1cGRhdGVkUG9pOiBQT0kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UudXBkYXRlUG9pKHBvaUlucHV0KTtcclxuICAgICAgICB0YWdEYXRhLnNldFBvaSh1cGRhdGVkUG9pKTtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnNldE9iamVjdEFuZFBvaUluVGFnKGxhc3RUYWcsIGVsZW1lbnQsIFBvaVR5cGUuREVTSywgdXBkYXRlZFBvaSk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5pbmplY3RIdG1sSW5UYWcoXHJcbiAgICAgICAgICBwb2kudHlwZSEsXHJcbiAgICAgICAgICBlbGVtZW50LFxyXG4gICAgICAgICAgbGFzdFRhZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5zZXRUYWdJY29uQW5kT3BhY2l0eShsYXN0VGFnLCB0YWdEYXRhKTtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdvVG9UYWcobGFzdFRhZyk7XHJcblxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodXBkYXRlZFBvaSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5kZWxldGVMYXN0TWF0dGVydGFnKCk7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocG9pKTtcclxuICAgIH1cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocG9pKTtcclxuICB9XHJcblxyXG4gIGVkaXRPbmx5VGFnU3R5bGVGb3JQb2kocG9pOiBQT0ksIG9iamVjdDogRGJPYmplY3RUeXBlKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCB0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRUYWdGcm9tRWxlbWVudElkKHBvaS5lbGVtZW50SUQpO1xyXG4gICAgICBpZiAodGFnRGF0YS50YWcpIHtcclxuICAgICAgICBjb25zdCBtYXR0ZXJ0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRNYXR0ZXJUYWdEYXRhRm9yTWF0dGVydGFnKFxyXG4gICAgICAgICAgdGFnRGF0YS50YWdcclxuICAgICAgICApO1xyXG4gICAgICAgIG1hdHRlcnRhZ0RhdGEuc2V0T2JqZWN0KG9iamVjdCwgUG9pVHlwZS5ST09NKTtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnNldFRhZ0ljb25BbmRPcGFjaXR5KHRhZ0RhdGEudGFnLCBtYXR0ZXJ0YWdEYXRhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkSWNvbkFuZFNldEZvclBvaShwb2k6IFBPSSwgaWNvblBhdGg6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgY29uc3QgdGFnRGF0YSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0VGFnRnJvbUVsZW1lbnRJZChwb2kuZWxlbWVudElEKTtcclxuICAgICAgaWYgKHRhZ0RhdGEudGFnKSB7XHJcbiAgICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hZGROZXdJY29uQW5kU2V0Rm9yVGFnKHRhZ0RhdGEudGFnLCBpY29uUGF0aCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVRvUmVnaXN0cmVkSWNvbkZvclBvaShwb2k6IFBPSSwgaWNvbk5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgY29uc3QgdGFnRGF0YSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0VGFnRnJvbUVsZW1lbnRJZChwb2kuZWxlbWVudElEKTtcclxuICAgICAgaWYgKHRhZ0RhdGEudGFnKSB7XHJcbiAgICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5zZXRSZWdpc3RyZWRJY29uRm9yVGFnKHRhZ0RhdGEudGFnLCBpY29uTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZUh0bWxUYWdGb3JQb2lXaXRoT2JqZWN0KHBvaTogUE9JLCBvYmplY3Q6IERiT2JqZWN0VHlwZSkge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgY29uc3QgdGFnRGF0YSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0VGFnRnJvbUVsZW1lbnRJZChwb2kuZWxlbWVudElEKTtcclxuICAgICAgaWYgKHRhZ0RhdGEudGFnKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS51cGRhdGVJbmplY3RlZEh0bWxGb3JUYWdJRChcclxuICAgICAgICAgIHRhZ0RhdGEudGFnLFxyXG4gICAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgICAgcG9pLnR5cGVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNb3ZlIGFuIGV4aXN0aW5nIHBvaSBpbiBNYXR0ZXJwb3J0XHJcbiAgICogQHBhcmFtIHBvaVxyXG4gICAqIEBwYXJhbSBlbGVtZW50XHJcbiAgICovXHJcbiAgYXN5bmMgYWN0aW9uX21vdmVfcG9pX3Zpc3VhbGx5KFxyXG4gICAgcG9pOiBQT0ksXHJcbiAgICBlbGVtZW50OiBUaWNrZXQgfCBGZWF0dXJlIHwgRXF1aXBtZW50IHwgQ29tbWVudFxyXG4gICkge1xyXG4gICAgYXdhaXQgdGhpcy5hY3Rpb25fZGVsZXRlX2VsZW1lbnQoZWxlbWVudCk7XHJcbiAgICBhd2FpdCB0aGlzLmFjdGlvbkFkZE9iamVjdEZyb21QT0koZWxlbWVudCwgcG9pKTtcclxuICB9XHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIEN1cGl4XHJcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIE1hdHRlcnBvcnRcclxuICAgIGh0dHBzOi8vbWF0dGVycG9ydC5naXRodWIuaW8vc2hvd2Nhc2Utc2RrL2RvY3Mvc2RrL3JlZmVyZW5jZS9jdXJyZW50L21vZHVsZXMvbWF0dGVydGFnLmh0bWwjYWRkXHJcbiAgICBodHRwczovL21hdHRlcnBvcnQuZ2l0aHViLmlvL3Nob3djYXNlLXNkay9kb2NzL3Nkay9yZWZlcmVuY2UvY3VycmVudC9tb2R1bGVzL21hdHRlcnRhZy5odG1sI3JlbW92ZVxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gIGFzeW5jIGluaXRNYXR0ZXJwb3J0U2RrKFxyXG4gICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgbW9kZWwzRDogc3RyaW5nLFxyXG4gICAgdGFnU2VydmljZTogQmFzZVRhZ1NlcnZpY2UsXHJcbiAgICBtb2R1bGU6IFNwTW9kdWxlID0gU3BNb2R1bGUuSU1NT1xyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5pc0xvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jdXJyZW50U3BhY2VJRCA9IHNwYWNlSUQ7XHJcbiAgICBpZiAodGhpcy5tYXR0ZXJwb3J0U2VydmljZS5zZGspIHtcclxuICAgICAgYXdhaXQgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMubWF0dGVycG9ydFNlcnZpY2VcclxuICAgICAgLmluaXRTZGsodGFnU2VydmljZSwgbW9kdWxlKVxyXG4gICAgICAudGhlbihhc3luYyAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgeyBzZGsgfSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2U7XHJcblxyXG4gICAgICAgICAgLy8gVE9ETzogYWRkIGNvbmRpdGlvbiB3aGV0aGVyIHdlIHdhbnQgdG8gZW5hYmxlIGl0IG9yIG5vdFxyXG4gICAgICAgICAgLy8gQWRkaXRpb25uYWwgZXh0ZW5zaW9ucyBmb3IgTWF0dGVycG9ydFxyXG4gICAgICAgICAgLy8gMS4gU2VjdXJpdHkgQ2FtZXJhIHdpdGggRnJ1c3R1bSAoRk9WKVxyXG4gICAgICAgICAgLy8gMi4gVE9ETyByZWdpc3RlciBhbGwgbmV3IE1hdHRlcnBvcnQgZXh0ZW5zaW9ucyBoZXJlIChuZXN0U2Vuc29yLCBsb2RzLCBzbG90cywgLi4uKVxyXG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgICAgICBzZGsuU2NlbmUucmVnaXN0ZXIoc2VjdXJpdHlDYW1lcmFUeXBlLCBtYWtlU2VjdXJpdHlDYW1lcmEuYmluZChzZGsuU2NlbmUpKSxcclxuICAgICAgICAgICAgc2RrLlNjZW5lLnJlZ2lzdGVyKFZpZXdGcnVzdHVtTWVzaFR5cGUsIG1ha2VWaWV3RnJ1c3R1bU1lc2guYmluZChzZGsuU2NlbmUpKVxyXG4gICAgICAgICAgXSk7XHJcblxyXG4gICAgICAgICAgc2RrLkFwcC5zdGF0ZS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChhcHBTdGF0ZSkge1xyXG4gICAgICAgICAgICAgIC8vIGFwcCBzdGF0ZSBoYXMgY2hhbmdlZFxyXG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdUaGUgY3VycmVudCBwaGFzZTogJywgYXBwU3RhdGUucGhhc2UpO1xyXG4gICAgICAgICAgICAgIGlmIChhcHBTdGF0ZS5waGFzZSA9PT0gc2RrLkFwcC5QaGFzZS5QTEFZSU5HKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnVGhlIGFwcCBpcyBwbGF5aW5nJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dpbmdWaWV3ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3ZXJJc09uLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICAgICAgICBtb2RlbDNELFxyXG4gICAgICAgICAgICAgICAgICBzd2VlcDogdGhpcy5zd2VlcFRvTW92ZSxcclxuICAgICAgICAgICAgICAgICAgcm90YXRpb246IHRoaXMucm90YXRpb25Ub01vdmUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUlzTG9hZGVkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3dlZXBUb01vdmUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3RhdGlvblRvTW92ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LmJpbmQodGhpcylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZvcmJpZGRlblN3ZWVwcyhmb3JiaWRkZW5Td2VlcHM6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnJlbW92ZUZvcmJpZGRlblN3ZWVwcyhmb3JiaWRkZW5Td2VlcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0T2JqZWN0M0RMb2FkZWRJblBvc2l0aW9uKG9iamVjdExvYWRlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc09iamVjdExvYWRlZCA9IG9iamVjdExvYWRlZDtcclxuICB9XHJcblxyXG4gIGlzT2JqZWN0M0RMb2FkZWRJblBvc2l0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNPYmplY3RMb2FkZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
395
+ }], ctorParameters: () => [{ type: i1.PoiService }, { type: i2.MatterportService }] });
396
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3ZpZXdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQyw4QkFBOEI7QUFDOUIseUNBQXlDO0FBQ3pDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUdMLGtCQUFrQixFQUNsQixPQUFPLEVBS1AsUUFBUSxHQUNULE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDakgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sNERBQTRELENBQUM7Ozs7QUFNdEgsTUFBTSxPQUFPLGFBQWE7SUFxRGQ7SUFDQTtJQXJERixVQUFVLEdBQVcsWUFBWSxDQUFDO0lBRW5DLGNBQWMsQ0FBUztJQUV0QixPQUFPLENBQVM7SUFFakIsVUFBVSxHQUtaLElBQUksT0FBTyxFQUFFLENBQUM7SUFFWixZQUFZLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFL0MsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUVqQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFdBQVcsQ0FBZ0I7SUFFM0IsY0FBYyxDQUFtQztJQUVqRCxhQUFhLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFN0MsYUFBYSxHQUFHO1FBQ3JCLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxLQUFLO1lBQ1gsTUFBTSxFQUFFLGNBQWM7WUFDdEIsSUFBSTtZQUNKLENBQUM7WUFDRCxJQUFJO1lBQ0osQ0FBQztTQUNGO1FBQ0QsU0FB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O0lBQ3JDLENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7d0dBcGVVLGFBQWE7NEdBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cclxuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cclxuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWF0dGVycG9ydFNlcnZpY2UgfSBmcm9tICcuL21hdHRlcnBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VUYWdTZXJ2aWNlIH0gZnJvbSAnLi90YWcuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgRGJPYmplY3RUeXBlLFxyXG4gIFBPSSxcclxuICBWaWV3ZXJJbnRlcmFjdGlvbnMsXHJcbiAgUG9pVHlwZSxcclxuICBDb21tZW50LFxyXG4gIEVxdWlwbWVudCxcclxuICBUaWNrZXQsXHJcbiAgRmVhdHVyZSxcclxuICBTcE1vZHVsZSxcclxufSBmcm9tICcuLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9pU2VydmljZSB9IGZyb20gJy4vbW9kZWxzL3BvaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbWFrZVNlY3VyaXR5Q2FtZXJhLCBzZWN1cml0eUNhbWVyYVR5cGUgfSBmcm9tIFwiLi4vbWF0dGVycG9ydC1leHRlbnNpb25zL3NlY3VyaXR5LWNhbWVyYS9TZWN1cml0eUNhbWVyYVwiO1xyXG5pbXBvcnQgeyBWaWV3RnJ1c3R1bU1lc2hUeXBlLCBtYWtlVmlld0ZydXN0dW1NZXNoIH0gZnJvbSBcIi4uL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy92aWV3LWZydXN0dW0tbWVzaC9WaWV3RnJ1c3R1bU1lc2hcIjtcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4vbmF2aWdhdG9yLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFZpZXdlclNlcnZpY2Uge1xyXG4gIHByaXZhdGUgdmlld2VyTW9kZTogc3RyaW5nID0gJ01hdHRlcnBvcnQnO1xyXG5cclxuICBwdWJsaWMgY3VycmVudE1vZGVsM0Q6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSB0b3VyVXJsOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyB2aWV3ZXJJc09uOiBTdWJqZWN0PHtcclxuICAgIHNwYWNlSUQ6IHN0cmluZyB8IG51bGw7XHJcbiAgICBtb2RlbDNEOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgc3dlZXA6IHN0cmluZyB8IG51bGw7XHJcbiAgICByb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgfSB8IG51bGw7XHJcbiAgfT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBwdWJsaWMgZGF0YUlzTG9hZGVkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHVibGljIGlzTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBzaG93aW5nVmlld2VyID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBzd2VlcFRvTW92ZTogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgcHVibGljIHJvdGF0aW9uVG9Nb3ZlOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB9IHwgbnVsbDtcclxuXHJcbiAgcHVibGljIGdvVG9UcmlnZ2VyZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBwdWJsaWMgdG9vbGJveFN0YXRlcyA9IHtcclxuICAgIGRvbGxob3VzZToge1xyXG4gICAgICBzdGF0OiBmYWxzZSxcclxuICAgICAgaWNvbklkOiAndWktZG9sbGhvdXNlJyxcclxuICAgICAgc2hvdygpIHtcclxuICAgICAgfSxcclxuICAgICAgaGlkZSgpIHtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBmbG9vcnBsYW46IHtcclxuICAgICAgc3RhdDogZmFsc2UsXHJcbiAgICB9LFxyXG4gICAgbWVzdXJlOiB7XHJcbiAgICAgIHN0YXQ6IGZhbHNlLFxyXG4gICAgICBpY29uSWQ6ICd1aS1tZXN1cmUnLFxyXG4gICAgICBzaG93KCkge1xyXG4gICAgICB9LFxyXG4gICAgICBoaWRlKCkge1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGZpbHRlcjoge1xyXG4gICAgICBzdGF0OiBmYWxzZSxcclxuICAgIH0sXHJcbiAgfTtcclxuICBwcml2YXRlIGlzT2JqZWN0TG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwb2lTZXJ2aWNlOiBQb2lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtYXR0ZXJwb3J0U2VydmljZTogTWF0dGVycG9ydFNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNldE1vZGUoJ01hdHRlcnBvcnQnKTtcclxuICB9XHJcblxyXG5cclxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICBVdGlsc1xyXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICBjaGVja01vZGUoaW5kZXhNb2RlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnZpZXdlck1vZGUgPT09IGluZGV4TW9kZTtcclxuICB9XHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgIFNldHRlcnNcclxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbiAgc2V0TW9kZShpbmRleE1vZGU6IHN0cmluZykge1xyXG4gICAgdGhpcy52aWV3ZXJNb2RlID0gaW5kZXhNb2RlO1xyXG4gIH1cclxuXHJcbiAgc2V0VG91clVybChcclxuICAgIG1vZGVsM2Q6IHN0cmluZyxcclxuICAgIHNob3dJY29uUGxhbjogYm9vbGVhbiA9IHRydWUsXHJcbiAgICBzaG93SWNvbkRvbGxob3VzZTogYm9vbGVhbiA9IHRydWUsXHJcbiAgICBzaG93SWNvbkZsb29yczogYm9vbGVhbiA9IHRydWUsXHJcbiAgICBlbmFibGVRdWlja1N0YXJ0OiBib29sZWFuID0gdHJ1ZVxyXG4gICkge1xyXG4gICAgLy8gdGhpcy50b3VyVXJsID0gYGh0dHBzOi8vbXkubWF0dGVycG9ydC5jb20vc2hvdy8/bT0ke21vZGVsM2R9JnBsYXk9MSZocj0wJmd0PTAmdGl0bGU9MCZsb2c9MCZicmFuZD0wJnNlYXJjaD0wJmFwcGxpY2F0aW9uS2V5PXFuOXdzYXN1eTVoMmZ6cmJybjFuenIwaWQmbWRzPTAmbmV3dGFncz0xYDtcclxuICAgIHRoaXMudG91clVybCA9IGAvYXNzZXRzL2J1bmRsZS9zaG93Y2FzZS5odG1sP209JHttb2RlbDNkfSZwbGF5PTEmaHI9MCZndD0wJnRpdGxlPTAmbG9nPTAmYnJhbmQ9MCZzZWFyY2g9MCZhcHBsaWNhdGlvbktleT1xbjl3c2FzdXk1aDJmenJicm4xbnpyMGlkJm1kcz0wJm5ld3RhZ3M9MWA7XHJcblxyXG4gICAgaWYgKCFzaG93SWNvblBsYW4pIHtcclxuICAgICAgdGhpcy50b3VyVXJsICs9ICcmZnA9MCc7XHJcbiAgICB9XHJcbiAgICBpZiAoIXNob3dJY29uRG9sbGhvdXNlKSB7XHJcbiAgICAgIHRoaXMudG91clVybCArPSAnJmRoPTAnO1xyXG4gICAgfVxyXG4gICAgaWYgKCFzaG93SWNvbkZsb29ycykge1xyXG4gICAgICB0aGlzLnRvdXJVcmwgKz0gJyZmPTAnO1xyXG4gICAgfVxyXG4gICAgaWYgKGVuYWJsZVF1aWNrU3RhcnQpIHtcclxuICAgICAgdGhpcy50b3VyVXJsICs9ICcmcXM9MSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBjbGVhckFsbCgpIHtcclxuICAgIC8vIHRoaXMuc3dlZXBUb01vdmUgPSBudWxsO1xyXG4gICAgLy8gdGhpcy5yb3RhdGlvblRvTW92ZSA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLnNob3dpbmdWaWV3ZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc0xvYWRlZCA9IGZhbHNlO1xyXG4gICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmNsZWFyQWxsKCk7XHJcbiAgICAgIHRoaXMudmlld2VySXNPbi5uZXh0KHtcclxuICAgICAgICBzcGFjZUlEOiBudWxsLFxyXG4gICAgICAgIG1vZGVsM0Q6IG51bGwsXHJcbiAgICAgICAgc3dlZXA6IG51bGwsXHJcbiAgICAgICAgcm90YXRpb246IG51bGwsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgR2V0dGVyc1xyXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICBnZXRNb2RlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmlld2VyTW9kZTtcclxuICB9XHJcblxyXG4gIGdldFZpZXdlclNlbGVjdGVkU2VydmljZSgpIHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIC8vIGlmICh0aGlzLmNoZWNrTW9kZShcIk1hdHRlcnBvcnRcIikpIHtcclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5nZXRNYXR0ZXJwb3J0U2VydmljZSgpO1xyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0TWF0dGVycG9ydFNlcnZpY2UoKTtcclxuICB9XHJcblxyXG4gIGdldFRvdXJVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50b3VyVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWF0dGVycG9ydFNlcnZpY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tYXR0ZXJwb3J0U2VydmljZTtcclxuICB9XHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgIEdlbmVyaWMgTWFpbiBhY3Rpb24gZnVuY3Rpb25zXHJcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgc2V0U3dlZXBUb01vdmUoc3dlZXA6IHN0cmluZykge1xyXG4gICAgdGhpcy5zd2VlcFRvTW92ZSA9IHN3ZWVwO1xyXG4gIH1cclxuXHJcbiAgc2V0Um90YXRpb25Ub01vdmUocm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH0pIHtcclxuICAgIHRoaXMucm90YXRpb25Ub01vdmUgPSByb3RhdGlvbjtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFjdGlvbl9tb3ZlX3RvX3RhZyhlbGVtZW50SWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRUYWdGcm9tRWxlbWVudElkKGVsZW1lbnRJZCk7XHJcbiAgICAgIGlmIChyZXN1bHQudGFnKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nb1RvVGFnKHJlc3VsdC50YWcpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXN1bHQuc3dlZXApIHtcclxuICAgICAgICB0aGlzLnN3ZWVwVG9Nb3ZlID0gcmVzdWx0LnN3ZWVwO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMgTWF0dGVydGFncyB0byBWaWV3ZXJcclxuICAgKiBAcGFyYW0gb2JqZWN0cyBMaXN0IG9mIG9iamVjdHMgKHRpY2tldHMsIGVxdWlwbWVudHMpIGV0YyB0byBiZSBhZGRlZCBhcyBNYXR0ZXJ0YWdzXHJcbiAgICovXHJcbiAgYXN5bmMgYWRkT2JqZWN0VGFnc1RvVmlld2VyKG9iamVjdHM6IERiT2JqZWN0VHlwZVtdKSB7XHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgb2JqZWN0cy5tYXAoYXN5bmMgKG9iamVjdCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5nZXRQb2lCeUVsZW1lbnRJZChvYmplY3QuaWQhKTtcclxuICAgICAgICBpZiAocG9pICYmIHBvaS5jb29yZGluYXRlKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmFjdGlvbkFkZE9iamVjdEZyb21QT0kob2JqZWN0LCBwb2kpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBhY3Rpb25BZGRPYmplY3RGcm9tUE9JKG9iamVjdDogRGJPYmplY3RUeXBlLCBwb2k6IFBPSSkge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY3JlYXRlTWF0dGVydGFnRnJvbVBPSShcclxuICAgICAgICBwb2kudHlwZSEsXHJcbiAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgIHBvaVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgLy8gQ3VwaXhcclxuICAgIC8vIFRPRE9cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFjdGlvbl9kZWxldGVfZWxlbWVudChlbGVtZW50OiBEYk9iamVjdFR5cGUpIHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZGVsZXRlTWF0dGVydGFnRm9yT2JqZWN0KGVsZW1lbnQuaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlIHRhZyBwbGFjZW1lbnQgbWVudSB0byBhZGQgYSBuZXcgZWxlbWVudCBkZXBlbmRpbmcgb24gaXRzIHR5cGUgKFRJQ0tFVCwgREFUQSwgRVFVSVBNRU5UIGV0YylcclxuICAgKi9cclxuICBhc3luYyBhY3Rpb25BZGROZXdFbGVtZW50VG9WaWV3ZXIocG9pVHlwZTogUG9pVHlwZSkge1xyXG4gICAgdGhpcy5hY3Rpb25fdG9vbGJveF9pbnNpZGVfdmlldygpO1xyXG5cclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSAmJlxyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEludGVyYWN0aW9uTW9kZSgpID09PSBWaWV3ZXJJbnRlcmFjdGlvbnMuREVGQVVMVFxyXG4gICAgKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWRkTWF0dGVydGFnV2hlbkFkZGluZyhwb2lUeXBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExhdW5jaGVzIHRoZSByZXBvc2l0aW9uaW5nIG9mIGFuIGV4aXN0aW5nIE1hdHRlcnRhZyByZWxhdGVkIHRvIHBhcmFtZXRlciBvYmplY3RcclxuICAgKiBAcGFyYW0gZWxlbWVudCBvYmplY3QgKFRJQ0tFVCwgRVFVSVBNRU5ULCBGRUFUVVJFLCBldGMpXHJcbiAgICogQHBhcmFtIHBvaVR5cGUgdHlwZSBvZiBvYmplY3RcclxuICAgKi9cclxuICBhc3luYyBhY3Rpb25SZXBvc2l0aW9uRWxlbWVudEluVmlld2VyKFxyXG4gICAgZWxlbWVudDogRGJPYmplY3RUeXBlLFxyXG4gICAgcG9pVHlwZTogUG9pVHlwZVxyXG4gICkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpICYmXHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0SW50ZXJhY3Rpb25Nb2RlKCkgPT09IFZpZXdlckludGVyYWN0aW9ucy5ERUZBVUxUXHJcbiAgICApIHtcclxuICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hZGRNYXR0ZXJ0YWdXaGVuUmVwb3NpdGlvbmluZyhwb2lUeXBlLCBlbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZSB0aWNrZXQgcGxhY2VtZW50IG1lbnUgdG8gYWRkIGEgbmV3IHRpY2tldFxyXG4gICAqL1xyXG4gIGFjdGlvbl9jYW5jZWxlZCgpIHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY2FuY2VsRm9sbG93aW5nQ3Vyc29yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb25fdG9vbGJveF9pbnNpZGVfdmlldygpIHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX3Rvb2xib3hfaW5zaWRlX3ZpZXcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGlvblNob3dBbGxGbG9vcnMoKSB7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvblNob3dBbGxGbG9vcnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGlvbl90b29sYm94X2RvbGxob3VzZSgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRJbnRlcmFjdGlvbk1vZGUoKSAhPT0gVmlld2VySW50ZXJhY3Rpb25zLkRFRkFVTFRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGlvbl9jYW5jZWxlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aW9uX3Rvb2xib3hfY2FuY2VsX21lc3VyZSgpO1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fdG9vbGJveF9kb2xsaG91c2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGFjdGlvbl9mbG9vcnBsYW4oKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0SW50ZXJhY3Rpb25Nb2RlKCkgIT09IFZpZXdlckludGVyYWN0aW9ucy5ERUZBVUxUXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hY3Rpb25fY2FuY2VsZWQoKTtcclxuICAgIH1cclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX3Rvb2xib3hfZmxvb3JwbGFuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb25fdG9vbGJveF9tZXN1cmUoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0SW50ZXJhY3Rpb25Nb2RlKCkgIT09IFZpZXdlckludGVyYWN0aW9ucy5ERUZBVUxUXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hY3Rpb25fY2FuY2VsZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvbl90b29sYm94X2luc2lkZV92aWV3KCk7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl90b29sYm94X21lc3VyZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uX3Rvb2xib3hfY2FuY2VsX21lc3VyZSgpIHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX3Rvb2xib3hfY2FuY2VsX21lc3VyZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWN0aW9uX3VwZGF0ZV9wb2koXHJcbiAgICBwb2k6IFBPSSxcclxuICAgIGlzVmFsaWQ6IGJvb2xlYW4sXHJcbiAgICBlbGVtZW50OiBEYk9iamVjdFR5cGVcclxuICApOiBQcm9taXNlPFBPST4ge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgICBjb25zdCBsYXN0VGFnID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5tYXR0ZXJ0YWdUb0ZvbGxvd1xyXG4gICAgICAgICAgPyB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLm1hdHRlcnRhZ1RvRm9sbG93XHJcbiAgICAgICAgICA6IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0TGFzdFRhZygpO1xyXG4gICAgICAgIGlmICghbGFzdFRhZykge1xyXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwb2kpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRNYXR0ZXJUYWdEYXRhRm9yTWF0dGVydGFnKGxhc3RUYWcpO1xyXG4gICAgICAgIGlmICghdGFnRGF0YSkge1xyXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwb2kpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcG9pTWV0YWRhdGEgPSAoISFwb2kgJiYgcG9pLm1ldGFkYXRhKSA/IEpTT04ucGFyc2UocG9pLm1ldGFkYXRhKSA6IHt9O1xyXG4gICAgICAgIHBvaU1ldGFkYXRhLm5vcm1hbCA9IHRhZ0RhdGEuZ2V0Tm9ybWFsKCk7XHJcbiAgICAgICAgaWYgKCFwb2kpIHtcclxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwb2lJbnB1dCA9IHtcclxuICAgICAgICAgIGlkOiBwb2kuaWQsXHJcbiAgICAgICAgICBjb29yZGluYXRlOiB0YWdEYXRhLmdldENvb3JkaW5hdGVTdHJpbmcoKSxcclxuICAgICAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiB0YWdEYXRhLmdldFN3ZWVwSUQoKSxcclxuICAgICAgICAgIG1ldGFkYXRhOiBKU09OLnN0cmluZ2lmeShwb2lNZXRhZGF0YSksXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCB1cGRhdGVkUG9pOiBQT0kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UudXBkYXRlUG9pKHBvaUlucHV0KTtcclxuICAgICAgICB0YWdEYXRhLnNldFBvaSh1cGRhdGVkUG9pKTtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnNldE9iamVjdEFuZFBvaUluVGFnKGxhc3RUYWcsIGVsZW1lbnQsIFBvaVR5cGUuREVTSywgdXBkYXRlZFBvaSk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5pbmplY3RIdG1sSW5UYWcoXHJcbiAgICAgICAgICBwb2kudHlwZSEsXHJcbiAgICAgICAgICBlbGVtZW50LFxyXG4gICAgICAgICAgbGFzdFRhZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5zZXRUYWdJY29uQW5kT3BhY2l0eShsYXN0VGFnLCB0YWdEYXRhKTtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdvVG9UYWcobGFzdFRhZyk7XHJcblxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodXBkYXRlZFBvaSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5kZWxldGVMYXN0TWF0dGVydGFnKCk7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocG9pKTtcclxuICAgIH1cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocG9pKTtcclxuICB9XHJcblxyXG4gIGVkaXRPbmx5VGFnU3R5bGVGb3JQb2kocG9pOiBQT0ksIG9iamVjdDogRGJPYmplY3RUeXBlKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCB0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRUYWdGcm9tRWxlbWVudElkKHBvaS5lbGVtZW50SUQpO1xyXG4gICAgICBpZiAodGFnRGF0YS50YWcpIHtcclxuICAgICAgICBjb25zdCBtYXR0ZXJ0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRNYXR0ZXJUYWdEYXRhRm9yTWF0dGVydGFnKFxyXG4gICAgICAgICAgdGFnRGF0YS50YWdcclxuICAgICAgICApO1xyXG4gICAgICAgIG1hdHRlcnRhZ0RhdGEuc2V0T2JqZWN0KG9iamVjdCwgUG9pVHlwZS5ST09NKTtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnNldFRhZ0ljb25BbmRPcGFjaXR5KHRhZ0RhdGEudGFnLCBtYXR0ZXJ0YWdEYXRhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkSWNvbkFuZFNldEZvclBvaShwb2k6IFBPSSwgaWNvblBhdGg6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgY29uc3QgdGFnRGF0YSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0VGFnRnJvbUVsZW1lbnRJZChwb2kuZWxlbWVudElEKTtcclxuICAgICAgaWYgKHRhZ0RhdGEudGFnKSB7XHJcbiAgICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hZGROZXdJY29uQW5kU2V0Rm9yVGFnKHRhZ0RhdGEudGFnLCBpY29uUGF0aCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVRvUmVnaXN0cmVkSWNvbkZvclBvaShwb2k6IFBPSSwgaWNvbk5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgY29uc3QgdGFnRGF0YSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0VGFnRnJvbUVsZW1lbnRJZChwb2kuZWxlbWVudElEKTtcclxuICAgICAgaWYgKHRhZ0RhdGEudGFnKSB7XHJcbiAgICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5zZXRSZWdpc3RyZWRJY29uRm9yVGFnKHRhZ0RhdGEudGFnLCBpY29uTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZUh0bWxUYWdGb3JQb2lXaXRoT2JqZWN0KHBvaTogUE9JLCBvYmplY3Q6IERiT2JqZWN0VHlwZSkge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgY29uc3QgdGFnRGF0YSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0VGFnRnJvbUVsZW1lbnRJZChwb2kuZWxlbWVudElEKTtcclxuICAgICAgaWYgKHRhZ0RhdGEudGFnKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS51cGRhdGVJbmplY3RlZEh0bWxGb3JUYWdJRChcclxuICAgICAgICAgIHRhZ0RhdGEudGFnLFxyXG4gICAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgICAgcG9pLnR5cGVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNb3ZlIGFuIGV4aXN0aW5nIHBvaSBpbiBNYXR0ZXJwb3J0XHJcbiAgICogQHBhcmFtIHBvaVxyXG4gICAqIEBwYXJhbSBlbGVtZW50XHJcbiAgICovXHJcbiAgYXN5bmMgYWN0aW9uX21vdmVfcG9pX3Zpc3VhbGx5KFxyXG4gICAgcG9pOiBQT0ksXHJcbiAgICBlbGVtZW50OiBUaWNrZXQgfCBGZWF0dXJlIHwgRXF1aXBtZW50IHwgQ29tbWVudFxyXG4gICkge1xyXG4gICAgYXdhaXQgdGhpcy5hY3Rpb25fZGVsZXRlX2VsZW1lbnQoZWxlbWVudCk7XHJcbiAgICBhd2FpdCB0aGlzLmFjdGlvbkFkZE9iamVjdEZyb21QT0koZWxlbWVudCwgcG9pKTtcclxuICB9XHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIEN1cGl4XHJcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIE1hdHRlcnBvcnRcclxuICAgIGh0dHBzOi8vbWF0dGVycG9ydC5naXRodWIuaW8vc2hvd2Nhc2Utc2RrL2RvY3Mvc2RrL3JlZmVyZW5jZS9jdXJyZW50L21vZHVsZXMvbWF0dGVydGFnLmh0bWwjYWRkXHJcbiAgICBodHRwczovL21hdHRlcnBvcnQuZ2l0aHViLmlvL3Nob3djYXNlLXNkay9kb2NzL3Nkay9yZWZlcmVuY2UvY3VycmVudC9tb2R1bGVzL21hdHRlcnRhZy5odG1sI3JlbW92ZVxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gIGFzeW5jIGluaXRNYXR0ZXJwb3J0U2RrKFxyXG4gICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgbW9kZWwzRDogc3RyaW5nLFxyXG4gICAgdGFnU2VydmljZTogQmFzZVRhZ1NlcnZpY2UsXHJcbiAgICBtb2R1bGU6IFNwTW9kdWxlID0gU3BNb2R1bGUuSU1NT1xyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5pc0xvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jdXJyZW50U3BhY2VJRCA9IHNwYWNlSUQ7XHJcbiAgICBpZiAodGhpcy5tYXR0ZXJwb3J0U2VydmljZS5zZGspIHtcclxuICAgICAgYXdhaXQgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMubWF0dGVycG9ydFNlcnZpY2VcclxuICAgICAgLmluaXRTZGsodGFnU2VydmljZSwgbW9kdWxlKVxyXG4gICAgICAudGhlbihhc3luYyAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgeyBzZGsgfSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2U7XHJcblxyXG4gICAgICAgICAgLy8gVE9ETzogYWRkIGNvbmRpdGlvbiB3aGV0aGVyIHdlIHdhbnQgdG8gZW5hYmxlIGl0IG9yIG5vdFxyXG4gICAgICAgICAgLy8gQWRkaXRpb25uYWwgZXh0ZW5zaW9ucyBmb3IgTWF0dGVycG9ydFxyXG4gICAgICAgICAgLy8gMS4gU2VjdXJpdHkgQ2FtZXJhIHdpdGggRnJ1c3R1bSAoRk9WKVxyXG4gICAgICAgICAgLy8gMi4gVE9ETyByZWdpc3RlciBhbGwgbmV3IE1hdHRlcnBvcnQgZXh0ZW5zaW9ucyBoZXJlIChuZXN0U2Vuc29yLCBsb2RzLCBzbG90cywgLi4uKVxyXG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgICAgICBzZGsuU2NlbmUucmVnaXN0ZXIoc2VjdXJpdHlDYW1lcmFUeXBlLCBtYWtlU2VjdXJpdHlDYW1lcmEuYmluZChzZGsuU2NlbmUpKSxcclxuICAgICAgICAgICAgc2RrLlNjZW5lLnJlZ2lzdGVyKFZpZXdGcnVzdHVtTWVzaFR5cGUsIG1ha2VWaWV3RnJ1c3R1bU1lc2guYmluZChzZGsuU2NlbmUpKVxyXG4gICAgICAgICAgXSk7XHJcblxyXG4gICAgICAgICAgc2RrLkFwcC5zdGF0ZS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChhcHBTdGF0ZSkge1xyXG4gICAgICAgICAgICAgIC8vIGFwcCBzdGF0ZSBoYXMgY2hhbmdlZFxyXG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdUaGUgY3VycmVudCBwaGFzZTogJywgYXBwU3RhdGUucGhhc2UpO1xyXG4gICAgICAgICAgICAgIGlmIChhcHBTdGF0ZS5waGFzZSA9PT0gc2RrLkFwcC5QaGFzZS5QTEFZSU5HKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnVGhlIGFwcCBpcyBwbGF5aW5nJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dpbmdWaWV3ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3ZXJJc09uLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICAgICAgICBtb2RlbDNELFxyXG4gICAgICAgICAgICAgICAgICBzd2VlcDogdGhpcy5zd2VlcFRvTW92ZSxcclxuICAgICAgICAgICAgICAgICAgcm90YXRpb246IHRoaXMucm90YXRpb25Ub01vdmUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUlzTG9hZGVkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3dlZXBUb01vdmUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3RhdGlvblRvTW92ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LmJpbmQodGhpcylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZvcmJpZGRlblN3ZWVwcyhmb3JiaWRkZW5Td2VlcHM6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnJlbW92ZUZvcmJpZGRlblN3ZWVwcyhmb3JiaWRkZW5Td2VlcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0T2JqZWN0M0RMb2FkZWRJblBvc2l0aW9uKG9iamVjdExvYWRlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc09iamVjdExvYWRlZCA9IG9iamVjdExvYWRlZDtcclxuICB9XHJcblxyXG4gIGlzT2JqZWN0M0RMb2FkZWRJblBvc2l0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNPYmplY3RMb2FkZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==