@smarterplan/ngx-smarterplan-core 1.4.17 → 1.4.18

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 (98) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/csv-export/csv-export.component.mjs +3 -3
  3. package/esm2022/lib/components/loader/loader.component.mjs +3 -3
  4. package/esm2022/lib/components/menu-bar/avatar/avatar.component.mjs +1 -1
  5. package/esm2022/lib/components/menu-bar/menu-bar.component.mjs +3 -3
  6. package/esm2022/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +3 -3
  7. package/esm2022/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +3 -3
  8. package/esm2022/lib/components/search-bar/search-bar.component.mjs +3 -3
  9. package/esm2022/lib/components/support-modal/support-modal.component.mjs +3 -3
  10. package/esm2022/lib/config.mjs +1 -1
  11. package/esm2022/lib/helpers.service.mjs +1 -1
  12. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
  13. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
  14. package/esm2022/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
  15. package/esm2022/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
  16. package/esm2022/lib/matterport-extensions/scene-component/SceneComponent.mjs +1 -1
  17. package/esm2022/lib/matterport-extensions/security-camera/SecurityCamera.mjs +22 -22
  18. package/esm2022/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
  19. package/esm2022/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +22 -22
  20. package/esm2022/lib/mattertagData.mjs +10 -1
  21. package/esm2022/lib/ngx-smarterplan-core.module.mjs +1 -1
  22. package/esm2022/lib/ngx-smarterplan-core.service.mjs +1 -1
  23. package/esm2022/lib/pipes/duration-to-string.pipe.mjs +1 -1
  24. package/esm2022/lib/pipes/format-date-number-to-digits.pipe.mjs +1 -1
  25. package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +1 -1
  26. package/esm2022/lib/pipes/safe-url.pipe.mjs +1 -1
  27. package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +1 -1
  28. package/esm2022/lib/pipes/username-from-id.pipe.mjs +1 -1
  29. package/esm2022/lib/services/amplify-cache.service.mjs +1 -1
  30. package/esm2022/lib/services/base-tab.service.mjs +1 -1
  31. package/esm2022/lib/services/baseVisibility.service.mjs +1 -1
  32. package/esm2022/lib/services/content.service.mjs +1 -1
  33. package/esm2022/lib/services/filter.service.mjs +1 -1
  34. package/esm2022/lib/services/intervention.service.mjs +1 -1
  35. package/esm2022/lib/services/locale.service.mjs +1 -1
  36. package/esm2022/lib/services/matterport-import.service.mjs +10 -3
  37. package/esm2022/lib/services/matterport-measurement.service.mjs +1 -1
  38. package/esm2022/lib/services/matterport-navigation.service.mjs +1 -1
  39. package/esm2022/lib/services/matterport-object3d.service.mjs +1 -1
  40. package/esm2022/lib/services/matterport-pointer.service.mjs +6 -6
  41. package/esm2022/lib/services/matterport-tag-copy.service.mjs +455 -9
  42. package/esm2022/lib/services/matterport-tag.service.mjs +99 -10
  43. package/esm2022/lib/services/matterport.service.mjs +83 -48
  44. package/esm2022/lib/services/models/affectation.service.mjs +1 -1
  45. package/esm2022/lib/services/models/base-object.service.mjs +1 -1
  46. package/esm2022/lib/services/models/capture.service.mjs +1 -1
  47. package/esm2022/lib/services/models/comment.service.mjs +1 -1
  48. package/esm2022/lib/services/models/domain.service.mjs +1 -1
  49. package/esm2022/lib/services/models/equipment.service.mjs +1 -1
  50. package/esm2022/lib/services/models/event.service.mjs +1 -1
  51. package/esm2022/lib/services/models/feature.service.mjs +1 -1
  52. package/esm2022/lib/services/models/hashtag.service.mjs +1 -1
  53. package/esm2022/lib/services/models/layer.service.mjs +1 -1
  54. package/esm2022/lib/services/models/measurement.service.mjs +1 -1
  55. package/esm2022/lib/services/models/mission.service.mjs +1 -1
  56. package/esm2022/lib/services/models/navigation.service.mjs +1 -1
  57. package/esm2022/lib/services/models/node.service.mjs +1 -1
  58. package/esm2022/lib/services/models/object3D.service.mjs +1 -1
  59. package/esm2022/lib/services/models/operation.service.mjs +1 -1
  60. package/esm2022/lib/services/models/organisation.service.mjs +1 -1
  61. package/esm2022/lib/services/models/plan.service.mjs +1 -1
  62. package/esm2022/lib/services/models/poi.service.mjs +62 -50
  63. package/esm2022/lib/services/models/profile.service.mjs +1 -1
  64. package/esm2022/lib/services/models/property.service.mjs +1 -1
  65. package/esm2022/lib/services/models/space.service.mjs +1 -1
  66. package/esm2022/lib/services/models/template.service.mjs +1 -1
  67. package/esm2022/lib/services/models/ticket.service.mjs +1 -1
  68. package/esm2022/lib/services/models/visit.service.mjs +1 -1
  69. package/esm2022/lib/services/models/zone.service.mjs +9 -5
  70. package/esm2022/lib/services/navigator.service.mjs +1 -1
  71. package/esm2022/lib/services/s3.service.mjs +1 -1
  72. package/esm2022/lib/services/search.service.mjs +1 -1
  73. package/esm2022/lib/services/support.service.mjs +1 -1
  74. package/esm2022/lib/services/tag.service.mjs +16 -16
  75. package/esm2022/lib/services/threejs-import.service.mjs +1 -1
  76. package/esm2022/lib/services/threejs.service.mjs +1 -1
  77. package/esm2022/lib/services/user.service.mjs +1 -1
  78. package/esm2022/lib/services/utils/matterport-transform.util.mjs +1 -1
  79. package/esm2022/lib/services/validators.service.mjs +1 -1
  80. package/esm2022/lib/services/viewer.service.mjs +1 -1
  81. package/esm2022/lib/services/zone-drawer.service.mjs +1 -1
  82. package/esm2022/lib/services/zoneChange.service.mjs +1 -1
  83. package/esm2022/lib/tokens/matterport-sdk-key.token.mjs +1 -1
  84. package/esm2022/lib/types.service.mjs +1 -1
  85. package/esm2022/lib/validators/email.directive.mjs +1 -1
  86. package/esm2022/lib/validators/no-empty.directive.mjs +1 -1
  87. package/esm2022/lib/validators/number.directive.mjs +1 -1
  88. package/esm2022/lib/validators/text.directive.mjs +1 -1
  89. package/esm2022/public-api.mjs +1 -1
  90. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +793 -193
  91. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  92. package/lib/mattertagData.d.ts +4 -0
  93. package/lib/services/matterport-tag-copy.service.d.ts +128 -2
  94. package/lib/services/matterport-tag.service.d.ts +24 -1
  95. package/lib/services/matterport.service.d.ts +12 -3
  96. package/lib/services/models/poi.service.d.ts +1 -0
  97. package/package.json +1 -1
  98. package/src/assets/vs-app.json +67 -67
@@ -363,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
363
363
  providedIn: 'root',
364
364
  }]
365
365
  }], ctorParameters: () => [] });
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC1uYXZpZ2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21hdHRlcnBvcnQtbmF2aWdhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFLMUMsTUFBTSxPQUFPLDJCQUEyQjtJQUMvQixlQUFlLEdBQVEsSUFBSSxDQUFDO0lBQzVCLE1BQU0sR0FBeUIsSUFBSSxDQUFDO0lBQ3BDLE1BQU0sR0FBaUUsSUFBSSxDQUFDO0lBQzVFLGVBQWUsR0FBYSxFQUFFLENBQUM7SUFFL0IsWUFBWSxHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzlDLG1CQUFtQixHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7SUFDdkQsMEVBQTBFO0lBQ25FLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUyxDQUFDO0lBRXJDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDMUIsaUJBQWlCLEdBQWUsVUFBVSxDQUFDLE9BQU8sQ0FBQztJQUNuRCxZQUFZLEdBQVUsRUFBRSxDQUFDO0lBQ2hDLDRHQUE0RztJQUNyRyxvQkFBb0IsR0FBa0IsSUFBSSxDQUFDO0lBRWxELDZDQUE2QztJQUM3QyxxR0FBcUc7SUFDckcsMkdBQTJHO0lBQ25HLFNBQVMsR0FBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMzQyxTQUFTLEdBQXdCLElBQUksR0FBRyxF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LENBQUMsTUFBTSxDQUFDO2dCQUMzQyxNQUFNO1lBQ1IsS0FBSyxvQkFBb0I7Z0JBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO2dCQUNsRCxNQUFNO1lBQ1I7Z0JBQ0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDaEQsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEQsQ0FBQzt3R0FuWFUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsY0FGMUIsTUFBTTs7NEZBRVAsMkJBQTJCO2tCQUh2QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2FtZXJhTW9kZSB9IGZyb20gJy4uL3R5cGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgd2FpdCB9IGZyb20gJy4uL2hlbHBlcnMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNYXR0ZXJwb3J0TmF2aWdhdGlvblNlcnZpY2Uge1xuICBwdWJsaWMgc3dlZXBDb2xsZWN0aW9uOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgc3dlZXBzOiBBcnJheTxzdHJpbmc+IHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBmbG9vcnM6IEFycmF5PHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBzZXF1ZW5jZTogbnVtYmVyIH0+IHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBmb3JiaWRkZW5Td2VlcHM6IHN0cmluZ1tdID0gW107XG5cbiAgcHVibGljIGN1cnJlbnRTd2VlcDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHVibGljIG9uQ2FtZXJhTW9kZUNoYW5nZWQgPSBuZXcgU3ViamVjdDxDYW1lcmFNb2RlPigpO1xuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIHNldCBvZiBjdXJyZW50IHJvb21zIGNoYW5nZXMgKHNkay5Sb29tLmN1cnJlbnQpLiAqL1xuICBwdWJsaWMgb25Sb29tQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PGFueVtdPigpO1xuXG4gIHB1YmxpYyBpblRyYW5zaXRpb25Nb2RlID0gZmFsc2U7XG4gIHB1YmxpYyBpblRyYW5zaXRpb25Td2VlcCA9IGZhbHNlO1xuICBwdWJsaWMgY3VycmVudENhbWVyYU1vZGU6IENhbWVyYU1vZGUgPSBDYW1lcmFNb2RlLk9VVFNJREU7XG4gIHB1YmxpYyBjdXJyZW50Um9vbXM6IGFueVtdID0gW107XG4gIC8qKiBTZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGZsb29yIGN1cnJlbnRseSB2aXNpYmxlIGluIHNkay5GbG9vci5jdXJyZW50IChudWxsID0gc2luZ2xlLWZsb29yIG9yIHVua25vd24pLiAqL1xuICBwdWJsaWMgY3VycmVudEZsb29yU2VxdWVuY2U6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIC8vIOKUgOKUgCBCaWRpcmVjdGlvbmFsIHNpZCDihpQgdXVpZCBsb29rdXAgbWFwcyDilIDilIBcbiAgLy8gc2lkICA9IHNob3J0IHJ1bnRpbWUga2V5IHVzZWQgYnkgTWF0dGVycG9ydCBTREsgKGNvbGxlY3Rpb24ga2V5cywgU3dlZXAubW92ZVRvLCBDYW1lcmEucG9zZS5zd2VlcClcbiAgLy8gdXVpZCA9IHBlcnNpc3RlbnQgaWRlbnRpZmllciBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlICh6b25lLnN3ZWVwSURzLCBwb2kubWF0dGVycG9ydFN3ZWVwSUQsIHN0YXJ0U3dlZXBJRClcbiAgcHJpdmF0ZSBzaWRUb1V1aWQ6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgdXVpZFRvU2lkOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgLy8g4pSA4pSAIFN3ZWVwIElEIHRyYW5zbGF0aW9uIGhlbHBlcnMg4pSA4pSAXG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgYmlkaXJlY3Rpb25hbCBzaWQg4oaUIHV1aWQgbWFwcyBmcm9tIHRoZSBzd2VlcCBjb2xsZWN0aW9uLlxuICAgKiBNdXN0IGJlIGNhbGxlZCBldmVyeSB0aW1lIHRoZSBzd2VlcCBjb2xsZWN0aW9uIGlzIHVwZGF0ZWQuXG4gICAqL1xuICBidWlsZFN3ZWVwSWRNYXBzKGNvbGxlY3Rpb246IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2lkVG9VdWlkLmNsZWFyKCk7XG4gICAgdGhpcy51dWlkVG9TaWQuY2xlYXIoKTtcbiAgICBpZiAoIWNvbGxlY3Rpb24pIHJldHVybjtcbiAgICBmb3IgKGNvbnN0IHNpZCBvZiBPYmplY3Qua2V5cyhjb2xsZWN0aW9uKSkge1xuICAgICAgY29uc3Qgc3dlZXBEYXRhID0gY29sbGVjdGlvbltzaWRdO1xuICAgICAgY29uc3QgdXVpZCA9IHN3ZWVwRGF0YT8udXVpZDtcbiAgICAgIGlmICh1dWlkICYmIHV1aWQgIT09IHNpZCkge1xuICAgICAgICB0aGlzLnNpZFRvVXVpZC5zZXQoc2lkLCB1dWlkKTtcbiAgICAgICAgdGhpcy51dWlkVG9TaWQuc2V0KHV1aWQsIHNpZCk7XG4gICAgICB9XG4gICAgICAvLyBBbHNvIG1hcCBzaWTihpJzaWQgYW5kIHV1aWTihpJ1dWlkIGZvciBwYXNzLXRocm91Z2ggY2FzZXNcbiAgICAgIHRoaXMuc2lkVG9VdWlkLnNldChzaWQsIHV1aWQgfHwgc2lkKTtcbiAgICAgIGlmICh1dWlkKSB7XG4gICAgICAgIHRoaXMudXVpZFRvU2lkLnNldCh1dWlkLCBzaWQpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYFtNYXR0ZXJwb3J0TmF2aWdhdGlvbl0gQnVpbHQgc3dlZXAgSUQgbWFwczogJHt0aGlzLnNpZFRvVXVpZC5zaXplfSBzaWRzLCAke3RoaXMudXVpZFRvU2lkLnNpemV9IHV1aWRzYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGFueSBzd2VlcCBpZGVudGlmaWVyIChzaWQgb3IgdXVpZCkgdG8gdGhlIFNESyBydW50aW1lICoqc2lkKiouXG4gICAqIFRoaXMgaXMgd2hhdCBzZGsuU3dlZXAubW92ZVRvKCkgYW5kIHNkay5Td2VlcC5kaXNhYmxlKCkgZXhwZWN0LlxuICAgKiBGYWxscyBiYWNrIHRvIHRoZSBpbnB1dCBpZiBubyBtYXBwaW5nIGV4aXN0cy5cbiAgICovXG4gIHJlc29sdmVTd2VlcFNpZChpZE9yVXVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWlkT3JVdWlkKSByZXR1cm4gaWRPclV1aWQ7XG4gICAgLy8gSWYgaXQncyBhbHJlYWR5IGEga25vd24gc2lkIChleGlzdHMgYXMgYSBrZXkgaW4gc3dlZXBDb2xsZWN0aW9uKSwgcmV0dXJuIGl0XG4gICAgaWYgKHRoaXMuc2lkVG9VdWlkLmhhcyhpZE9yVXVpZCkpIHJldHVybiBpZE9yVXVpZDtcbiAgICAvLyBPdGhlcndpc2UgdHJ5IHRvIG1hcCBmcm9tIHV1aWQg4oaSIHNpZFxuICAgIHJldHVybiB0aGlzLnV1aWRUb1NpZC5nZXQoaWRPclV1aWQpID8/IGlkT3JVdWlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGFueSBzd2VlcCBpZGVudGlmaWVyIChzaWQgb3IgdXVpZCkgdG8gdGhlIHBlcnNpc3RlbnQgKip1dWlkKiouXG4gICAqIFRoaXMgaXMgd2hhdCB0aGUgZGF0YWJhc2Ugc3RvcmVzICh6b25lLnN3ZWVwSURzLCBwb2kubWF0dGVycG9ydFN3ZWVwSUQpLlxuICAgKiBGYWxscyBiYWNrIHRvIHRoZSBpbnB1dCBpZiBubyBtYXBwaW5nIGV4aXN0cy5cbiAgICovXG4gIHJlc29sdmVTd2VlcFV1aWQoc2lkT3JVdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghc2lkT3JVdWlkKSByZXR1cm4gc2lkT3JVdWlkO1xuICAgIC8vIElmIGl0J3MgYWxyZWFkeSBhIGtub3duIHV1aWQsIHJldHVybiBpdFxuICAgIGlmICh0aGlzLnV1aWRUb1NpZC5oYXMoc2lkT3JVdWlkKSkgcmV0dXJuIHNpZE9yVXVpZDtcbiAgICAvLyBPdGhlcndpc2UgdHJ5IHRvIG1hcCBmcm9tIHNpZCDihpIgdXVpZFxuICAgIHJldHVybiB0aGlzLnNpZFRvVXVpZC5nZXQoc2lkT3JVdWlkKSA/PyBzaWRPclV1aWQ7XG4gIH1cblxuICBhc3luYyBhY3Rpb25fdG9vbGJveF9mbG9vcnBsYW4oc2RrOiBhbnkpIHtcbiAgICBpZiAodGhpcy5pblRyYW5zaXRpb25Nb2RlIHx8IHRoaXMuaW5UcmFuc2l0aW9uU3dlZXApIHtcbiAgICAgIGNvbnNvbGUubG9nKCd2aWV3ZXIgaXMgaW4gdHJhbnNpdGlvbiwgY2Fubm90IGdvIGZsb29ycGxhbicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgc2RrLk1vZGUubW92ZVRvKCdtb2RlLmZsb29ycGxhbicpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdjYW5ub3QgZ28gdG8gZmxvb3JwbGFuJywgZSk7XG4gICAgfVxuICB9XG5cbiAgYWN0aW9uX3Rvb2xib3hfaW5zaWRlX3ZpZXcoc2RrOiBhbnkpIHtcbiAgICBzZGsuTW9kZS5tb3ZlVG8oJ21vZGUuaW5zaWRlJyk7XG4gIH1cblxuICBhY3Rpb25TaG93QWxsRmxvb3JzKHNkazogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIHNkay5GbG9vci5zaG93QWxsKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coJ2Nhbm5vdCBzaG93IGFsbCBmbG9vcnMnLCBlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBhY3Rpb25fdG9vbGJveF9kb2xsaG91c2Uoc2RrOiBhbnkpIHtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmluVHJhbnNpdGlvbk1vZGUgfHwgdGhpcy5pblRyYW5zaXRpb25Td2VlcCkge1xuICAgICAgICBjb25zb2xlLmxvZygndmlld2VyIGlzIGluIHRyYW5zaXRpb24sIGNhbm5vdCBnbyBkb2xsaG91c2UnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc2RrLk1vZGUubW92ZVRvKCdtb2RlLmRvbGxob3VzZScpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZygnY2Fubm90IGdvIHRvIGRvbGxob3VzZScsIGUpO1xuICAgICAgfVxuICAgIH0sIDEyMDApO1xuICB9XG5cbiAgYXN5bmMgYWN0aW9uX2dvX3RvX2Zsb29yKHNkazogYW55LCBmbG9vck5hbWU6IHN0cmluZywgbWF0dGVycG9ydEZsb29yU2VxdWVuY2U6IG51bWJlciA9IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuZmxvb3JzKSB7XG4gICAgICBjb25zb2xlLmxvZygnRmxvb3IgYXJlIG5vdCBsb2FkZWQgeWV0Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBmbG9vck1hdHRlcnBvcnQgPSB0aGlzLmZsb29ycy5maW5kKFxuICAgICAgKGZsb29yKSA9PiBmbG9vci5zZXF1ZW5jZSA9PT0gbWF0dGVycG9ydEZsb29yU2VxdWVuY2VcbiAgICApO1xuICAgIGlmICghZmxvb3JNYXR0ZXJwb3J0KSB7XG4gICAgICBmbG9vck1hdHRlcnBvcnQgPSB0aGlzLmZsb29ycy5maW5kKFxuICAgICAgICAoZmxvb3IpID0+IGZsb29yTmFtZS5pbmNsdWRlcyhmbG9vci5uYW1lKSAmJiBmbG9vci5uYW1lICE9ICcnXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWZsb29yTWF0dGVycG9ydCkge1xuICAgICAgZmxvb3JNYXR0ZXJwb3J0ID0gdGhpcy5mbG9vcnMuZmluZCgoZmxvb3IpID0+XG4gICAgICAgIGZsb29yTmFtZS5pbmNsdWRlcyhmbG9vci5pZClcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChmbG9vck1hdHRlcnBvcnQpIHtcbiAgICAgIGxldCByZXRyeSA9IHRydWU7XG4gICAgICB3aGlsZSAocmV0cnkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBmbG9vckluZGV4ID0gYXdhaXQgc2RrLkZsb29yLm1vdmVUbyhmbG9vck1hdHRlcnBvcnQuc2VxdWVuY2UpO1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoXCJtb3ZlZCB0byBmbG9vckluZGV4XCIsIGZsb29ySW5kZXgpO1xuICAgICAgICAgIHJldHJ5ID0gZmFsc2U7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Nhbm5vdCBtb3ZlIHRvIEZsb29yJywgZXJyb3IpO1xuICAgICAgICAgIGF3YWl0IHdhaXQoMTAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ05vIG1hdHRlcnBvcnQgZmxvb3IgZm91bmQgdG8gbW92ZSB0bycpO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhcImFjdGlvbl9nb190b19mbG9vci5mbG9vck1hdHRlcnBvcnRcIiwgZmxvb3JNYXR0ZXJwb3J0KTtcbiAgICBjb25zb2xlLmxvZyhcImFjdGlvbl9nb190b19mbG9vci5mbG9vck5hbWVcIiwgZmxvb3JOYW1lKTtcbiAgICBjb25zb2xlLmxvZyhcImFjdGlvbl9nb190b19mbG9vci5tYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZVwiLCBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgdG8gYSBzd2VlcC4gVGhlIGNhbGxlciBjYW4gcGFzcyBlaXRoZXIgYSBzaWQgb3IgYSB1dWlkO1xuICAgKiB0aGlzIG1ldGhvZCByZXNvbHZlcyBpdCB0byB0aGUgU0RLIHNpZCBiZWZvcmUgY2FsbGluZyBTd2VlcC5tb3ZlVG8oKS5cbiAgICovXG4gIGFzeW5jIGFjdGlvbl9nb190b19zd2VlcChzZGs6IGFueSwgc3dlZXA6IHN0cmluZywgcm90YXRpb24/OiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0gfCBudWxsKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRTaWQgPSB0aGlzLnJlc29sdmVTd2VlcFNpZChzd2VlcCk7XG4gICAgaWYgKHRoaXMuZm9yYmlkZGVuU3dlZXBzLmluY2x1ZGVzKHN3ZWVwKSB8fCB0aGlzLmZvcmJpZGRlblN3ZWVwcy5pbmNsdWRlcyhyZXNvbHZlZFNpZCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCd1c2VyIGlzIG5vdCBhbGxvd2VkIHRvIGdvIHRvIHRoaXMgc3dlZXAnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzRGV2TW9kZSgpICYmIHJlc29sdmVkU2lkICE9PSBzd2VlcCkge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW2FjdGlvbl9nb190b19zd2VlcF0gUmVzb2x2ZWQgdXVpZCBcIiR7c3dlZXB9XCIg4oaSIHNpZCBcIiR7cmVzb2x2ZWRTaWR9XCJgKTtcbiAgICB9XG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmluVHJhbnNpdGlvblN3ZWVwID0gdHJ1ZTtcbiAgICAgICAgYXdhaXQgc2RrLlN3ZWVwLm1vdmVUbyhyZXNvbHZlZFNpZCwge1xuICAgICAgICAgIHRyYW5zaXRpb246IHNkay5DYW1lcmEuVHJhbnNpdGlvblR5cGUuSU5TVEFOVCxcbiAgICAgICAgICB0cmFuc2l0aW9uVGltZTogMTUwMFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMuaW5UcmFuc2l0aW9uU3dlZXAgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5sb2coJ0Nhbm5vdCBtb3ZlIHRvIHN3ZWVwJywgZXJyb3IpO1xuICAgICAgfVxuICAgICAgaWYgKHJvdGF0aW9uKSB7XG4gICAgICAgIGF3YWl0IHNkay5DYW1lcmEuc2V0Um90YXRpb24ocm90YXRpb24sIHsgc3BlZWQ6IDEwMCB9KTtcbiAgICAgIH1cbiAgICB9LCAxMDAwKTtcbiAgICBjb25zb2xlLmxvZyhcImFjdGlvbl9nb190b19zd2VlcC5zd2VlcFwiLCBzd2VlcCk7XG4gICAgY29uc29sZS5sb2coXCJhY3Rpb25fZ29fdG9fc3dlZXAucm90YXRpb25cIiwgcm90YXRpb24pO1xuICAgIGNvbnNvbGUubG9nKFwiYWN0aW9uX2dvX3RvX3N3ZWVwLnJlc29sdmVkU2lkXCIsIHJlc29sdmVkU2lkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIGZvcmJpZGRlbiBzd2VlcHMuIFJlc29sdmVzIGVhY2ggc3dlZXAgSUQgdG8gc2lkIGJlZm9yZSBjYWxsaW5nIFNESy5cbiAgICovXG4gIGFzeW5jIHJlbW92ZUZvcmJpZGRlblN3ZWVwcyhzZGs6IGFueSwgZm9yYmlkZGVuU3dlZXBzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZm9yYmlkZGVuU3dlZXBzID0gWy4uLmZvcmJpZGRlblN3ZWVwc107XG4gICAgbGV0IHJlbW92ZWQgPSAwO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgZm9yYmlkZGVuU3dlZXBzLm1hcChhc3luYyAoc3dlZXApID0+IHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRTaWQgPSB0aGlzLnJlc29sdmVTd2VlcFNpZChzd2VlcCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgc2RrLlN3ZWVwLmRpc2FibGUocmVzb2x2ZWRTaWQpO1xuICAgICAgICAgIHJlbW92ZWQgKz0gMTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZygncmVtb3ZlZCBzd2VlcHM6JywgcmVtb3ZlZCk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSB0byBhIHBvc2l0aW9uXG4gICAqIEBwYXJhbSBzZGsgXG4gICAqIEBwYXJhbSBwb3NpdGlvbiBcbiAgICogQHBhcmFtIHJvdGF0aW9uIFxuICAgKiBAcGFyYW0gb3B0aW9ucyBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBtb3ZlX3RvX3Bvc2l0aW9uKFxuICAgIHNkazogYW55LFxuICAgIHBvc2l0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXIgfSxcbiAgICByb3RhdGlvbjogeyB5YXc6IG51bWJlcjsgcGl0Y2g/OiBudW1iZXI7IHJvbGw/OiBudW1iZXIgfSB8IG51bGwsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIHRyYW5zaXRpb24/OiAnRkxZJyB8ICdJTlNUQU5UJyB8ICdJTU1FRElBVEUnO1xuICAgICAgZHVyYXRpb25Ncz86IG51bWJlcjtcbiAgICAgIGFuZ2xlc0luRGVncmVlcz86IGJvb2xlYW47XG4gICAgICBvZmZzZXQ/OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXIgfTtcbiAgICB9XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFZhbGlkYXRlIFNES1xuICAgIGlmICghc2RrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdHRlcnBvcnQgU0RLIGluc3RhbmNlIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgLy8gTWVyZ2Ugb3B0aW9ucyB3aXRoIGRlZmF1bHRzXG4gICAgY29uc3Qge1xuICAgICAgdHJhbnNpdGlvbiA9ICdGTFknLFxuICAgICAgZHVyYXRpb25NcyA9IDgwMCxcbiAgICAgIGFuZ2xlc0luRGVncmVlcyA9IHRydWUsXG4gICAgICBvZmZzZXQgPSB7IHg6IDAsIHk6IDAsIHo6IDAgfVxuICAgIH0gPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgY29uc3QgZGVnVG9SYWQgPSAoZDogbnVtYmVyKSA9PiBkICogTWF0aC5QSSAvIDE4MDtcblxuICAgIC8vIFByZXBhcmUgcm90YXRpb24gdmFsdWVzIChkZWZhdWx0IHRvIDAgd2hlbiBub3QgcHJvdmlkZWQpXG4gICAgY29uc3QgeWF3ID0gcm90YXRpb24/LnlhdyA/PyAwO1xuICAgIGNvbnN0IHBpdGNoID0gcm90YXRpb24/LnBpdGNoID8/IDA7XG4gICAgY29uc3Qgcm9sbCA9IHJvdGF0aW9uPy5yb2xsID8/IDA7XG5cbiAgICAvLyBDb252ZXJ0IHRvIHJhZGlhbnMgaWYgYW5nbGVzIGFyZSBwcm92aWRlZCBpbiBkZWdyZWVzXG4gICAgY29uc3Qgcm90WWF3ID0gYW5nbGVzSW5EZWdyZWVzID8gZGVnVG9SYWQoeWF3KSA6IHlhdztcbiAgICBjb25zdCByb3RQaXRjaCA9IGFuZ2xlc0luRGVncmVlcyA/IGRlZ1RvUmFkKHBpdGNoKSA6IHBpdGNoO1xuICAgIGNvbnN0IHJvdFJvbGwgPSBhbmdsZXNJbkRlZ3JlZXMgPyBkZWdUb1JhZChyb2xsKSA6IHJvbGw7XG5cbiAgICAvLyBQcmVzZXJ2ZSBwcmV2aW91cyB0cmFuc2l0aW9uIGZsYWcgYW5kIG1hcmsgYXMgaW4tdHJhbnNpdGlvblxuICAgIGNvbnN0IHByZXZJblRyYW5zaXRpb24gPSB0aGlzLmluVHJhbnNpdGlvbk1vZGU7XG4gICAgdGhpcy5pblRyYW5zaXRpb25Nb2RlID0gdHJ1ZTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBBdHRlbXB0IHRvIHVzZSBDYW1lcmEubG9va0F0IHdoZW4gYXZhaWxhYmxlXG4gICAgICBpZiAoc2RrPy5DYW1lcmE/Lmxvb2tBdCkge1xuICAgICAgICBjb25zdCBsb29rQXRPcHRzOiBhbnkgPSB7fTtcbiAgICAgICAgLy8gUHJlZmVyIFNESyBjb25zdGFudHMgd2hlbiBhdmFpbGFibGUsIG90aGVyd2lzZSB1c2UgZmFsbGJhY2sgc3RyaW5nXG4gICAgICAgIGlmIChzZGsuQ2FtZXJhLlRyYW5zaXRpb25UeXBlICYmIHNkay5DYW1lcmEuVHJhbnNpdGlvblR5cGVbdHJhbnNpdGlvbl0pIHtcbiAgICAgICAgICBsb29rQXRPcHRzLnRyYW5zaXRpb24gPSBzZGsuQ2FtZXJhLlRyYW5zaXRpb25UeXBlW3RyYW5zaXRpb25dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvb2tBdE9wdHMudHJhbnNpdGlvbiA9IHRyYW5zaXRpb247XG4gICAgICAgIH1cbiAgICAgICAgbG9va0F0T3B0cy5kdXJhdGlvbiA9IGR1cmF0aW9uTXM7XG4gICAgICAgIGlmIChvZmZzZXQpIGxvb2tBdE9wdHMub2Zmc2V0ID0gb2Zmc2V0O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgc2RrLkNhbWVyYS5sb29rQXQocG9zaXRpb24sIGxvb2tBdE9wdHMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAvLyBJZiBsb29rQXQgZmFpbHMsIGNvbnRpbnVlIHRvIGZhbGxiYWNrcyBiZWxvd1xuICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkgY29uc29sZS5kZWJ1ZygnQ2FtZXJhLmxvb2tBdCBmYWlsZWQsIGZhbGxpbmcgYmFjayB0byBzZXRTdGF0ZScsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSWYgbG9va0F0IGlzIG5vdCBwcmVzZW50IG9yIGZhaWxlZCwgdHJ5IHNldFN0YXRlIGZvciBwb3NpdGlvblxuICAgICAgaWYgKCFzZGs/LkNhbWVyYT8ubG9va0F0ICYmIHNkaz8uQ2FtZXJhPy5zZXRTdGF0ZSkge1xuICAgICAgICBjb25zdCBzdGF0ZVBvczogYW55ID0ge1xuICAgICAgICAgIHBvc2l0aW9uOiB7IHg6IHBvc2l0aW9uLngsIHk6IHBvc2l0aW9uLnksIHo6IHBvc2l0aW9uLnogfVxuICAgICAgICB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHNkay5DYW1lcmEuc2V0U3RhdGUoc3RhdGVQb3MpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIGNvbnNvbGUuZGVidWcoJ0NhbWVyYS5zZXRTdGF0ZShwb3NpdGlvbikgZmFpbGVkJywgZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBcHBseSByb3RhdGlvbiBpZiBwcm92aWRlZFxuICAgICAgaWYgKHJvdGF0aW9uKSB7XG4gICAgICAgIC8vIFByZWZlciBzZXRSb3RhdGlvbiB3aGVuIGF2YWlsYWJsZVxuICAgICAgICBpZiAoc2RrPy5DYW1lcmE/LnNldFJvdGF0aW9uKSB7XG4gICAgICAgICAgLy8gVHJ5IFZlY3RvcjIgc2lnbmF0dXJlIHsgeDogeWF3LCB5OiBwaXRjaCB9IGZpcnN0XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHNkay5DYW1lcmEuc2V0Um90YXRpb24oeyB4OiByb3RZYXcsIHk6IHJvdFBpdGNoIH0sIHsgc3BlZWQ6IE1hdGgubWF4KDEwLCBNYXRoLmZsb29yKGR1cmF0aW9uTXMgLyAxMCkpIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycjEpIHtcbiAgICAgICAgICAgIC8vIElmIHRoYXQgZmFpbHMsIHRyeSBWZWN0b3IzIHNpZ25hdHVyZSB7IHg6IHBpdGNoLCB5OiB5YXcsIHo6IHJvbGwgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgc2RrLkNhbWVyYS5zZXRSb3RhdGlvbih7IHg6IHJvdFBpdGNoLCB5OiByb3RZYXcsIHo6IHJvdFJvbGwgfSwgeyBzcGVlZDogTWF0aC5tYXgoMTAsIE1hdGguZmxvb3IoZHVyYXRpb25NcyAvIDEwKSkgfSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIyKSB7XG4gICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkgY29uc29sZS5kZWJ1ZygnQ2FtZXJhLnNldFJvdGF0aW9uIGZhaWxlZCB3aXRoIG11bHRpcGxlIHNpZ25hdHVyZXMnLCBlcnIxLCBlcnIyKTtcbiAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8gc2V0U3RhdGUgd2l0aCByb3RhdGlvbiBpZiBhdmFpbGFibGVcbiAgICAgICAgICAgICAgaWYgKHNkaz8uQ2FtZXJhPy5zZXRTdGF0ZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBhd2FpdCBzZGsuQ2FtZXJhLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgcm90YXRpb246IHsgeDogcm90UGl0Y2gsIHk6IHJvdFlhdywgejogcm90Um9sbCB9LFxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogeyB4OiBwb3NpdGlvbi54LCB5OiBwb3NpdGlvbi55LCB6OiBwb3NpdGlvbi56IH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycjMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkgY29uc29sZS5kZWJ1ZygnRmFsbGJhY2sgQ2FtZXJhLnNldFN0YXRlKHJvdGF0aW9uKSBmYWlsZWQnLCBlcnIzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc2RrPy5DYW1lcmE/LnNldFN0YXRlKSB7XG4gICAgICAgICAgLy8gSWYgc2V0Um90YXRpb24gaXMgbm90IGF2YWlsYWJsZSwgdXNlIHNldFN0YXRlIHRvIGFwcGx5IHJvdGF0aW9uXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHNkay5DYW1lcmEuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICByb3RhdGlvbjogeyB4OiByb3RQaXRjaCwgeTogcm90WWF3LCB6OiByb3RSb2xsIH0sXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiB7IHg6IHBvc2l0aW9uLngsIHk6IHBvc2l0aW9uLnksIHo6IHBvc2l0aW9uLnogfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIGNvbnNvbGUuZGVidWcoJ0NhbWVyYS5zZXRTdGF0ZShyb3RhdGlvbikgZmFpbGVkJywgZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSBjb25zb2xlLndhcm4oJ05vIG1ldGhvZCBhdmFpbGFibGUgdG8gYXBwbHkgcm90YXRpb24gKHNldFJvdGF0aW9uL3NldFN0YXRlIG5vdCBmb3VuZCknKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBXYWl0IGEgYml0IHRvIGFsbG93IHRyYW5zaXRpb24gYW5pbWF0aW9ucyB0byBjb21wbGV0ZVxuICAgICAgYXdhaXQgd2FpdChkdXJhdGlvbk1zICsgMTIwKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIFJlLXRocm93IGFmdGVyIGVuc3VyaW5nIGZsYWdzIGFyZSByZXN0b3JlZCBpbiBmaW5hbGx5XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIFJlc3RvcmUgcHJldmlvdXMgdHJhbnNpdGlvbiBmbGFnXG4gICAgICB0aGlzLmluVHJhbnNpdGlvbk1vZGUgPSBwcmV2SW5UcmFuc2l0aW9uO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgc3dlZXAgYXMgYSAqKnV1aWQqKiAoZm9yIGRhdGFiYXNlIG1hdGNoaW5nKS5cbiAgICogVGhlIFNESydzIHBvc2VDYW1lcmEuc3dlZXAgaXMgYSBzaWQ7IHdlIHRyYW5zbGF0ZSBpdC5cbiAgICovXG4gIGdldEN1cnJlbnRTd2VlcChwb3NlQ2FtZXJhOiBhbnkpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBzaWQgPSBwb3NlQ2FtZXJhPy5zd2VlcCB8fCBudWxsO1xuICAgIGlmICghc2lkKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU3dlZXBVdWlkKHNpZCk7XG4gIH1cblxuICBzZXRDYW1lcmFNb2RlKG1vZGU6IHN0cmluZykge1xuICAgIHRoaXMuaW5UcmFuc2l0aW9uU3dlZXAgPSBmYWxzZTtcbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgIGNhc2UgJ21vZGUuZG9sbGhvdXNlJzpcbiAgICAgICAgdGhpcy5jdXJyZW50Q2FtZXJhTW9kZSA9IENhbWVyYU1vZGUuRE9MTEhPVVNFO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21vZGUuZmxvb3JwbGFuJzpcbiAgICAgICAgdGhpcy5jdXJyZW50Q2FtZXJhTW9kZSA9IENhbWVyYU1vZGUuRkxPT1JQTEFOO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21vZGUuaW5zaWRlJzpcbiAgICAgICAgdGhpcy5jdXJyZW50Q2FtZXJhTW9kZSA9IENhbWVyYU1vZGUuSU5TSURFO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21vZGUudHJhbnNpdGlvbmluZyc6XG4gICAgICAgIHRoaXMuY3VycmVudENhbWVyYU1vZGUgPSBDYW1lcmFNb2RlLlRSQU5TSVRJT05JTkc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5jdXJyZW50Q2FtZXJhTW9kZSA9IENhbWVyYU1vZGUuT1VUU0lERTtcbiAgICB9XG4gICAgdGhpcy5vbkNhbWVyYU1vZGVDaGFuZ2VkLm5leHQodGhpcy5jdXJyZW50Q2FtZXJhTW9kZSk7XG4gIH1cbn1cbiJdfQ==
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC1uYXZpZ2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21hdHRlcnBvcnQtbmF2aWdhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFLMUMsTUFBTSxPQUFPLDJCQUEyQjtJQUMvQixlQUFlLEdBQVEsSUFBSSxDQUFDO0lBQzVCLE1BQU0sR0FBeUIsSUFBSSxDQUFDO0lBQ3BDLE1BQU0sR0FBaUUsSUFBSSxDQUFDO0lBQzVFLGVBQWUsR0FBYSxFQUFFLENBQUM7SUFFL0IsWUFBWSxHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzlDLG1CQUFtQixHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7SUFDdkQsMEVBQTBFO0lBQ25FLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUyxDQUFDO0lBRXJDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDMUIsaUJBQWlCLEdBQWUsVUFBVSxDQUFDLE9BQU8sQ0FBQztJQUNuRCxZQUFZLEdBQVUsRUFBRSxDQUFDO0lBQ2hDLDRHQUE0RztJQUNyRyxvQkFBb0IsR0FBa0IsSUFBSSxDQUFDO0lBRWxELDZDQUE2QztJQUM3QyxxR0FBcUc7SUFDckcsMkdBQTJHO0lBQ25HLFNBQVMsR0FBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMzQyxTQUFTLEdBQXdCLElBQUksR0FBRyxF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LENBQUMsTUFBTSxDQUFDO2dCQUMzQyxNQUFNO1lBQ1IsS0FBSyxvQkFBb0I7Z0JBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO2dCQUNsRCxNQUFNO1lBQ1I7Z0JBQ0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDaEQsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEQsQ0FBQzt3R0FuWFUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsY0FGMUIsTUFBTTs7NEZBRVAsMkJBQTJCO2tCQUh2QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENhbWVyYU1vZGUgfSBmcm9tICcuLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgd2FpdCB9IGZyb20gJy4uL2hlbHBlcnMuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0dGVycG9ydE5hdmlnYXRpb25TZXJ2aWNlIHtcclxuICBwdWJsaWMgc3dlZXBDb2xsZWN0aW9uOiBhbnkgPSBudWxsO1xyXG4gIHB1YmxpYyBzd2VlcHM6IEFycmF5PHN0cmluZz4gfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgZmxvb3JzOiBBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgc2VxdWVuY2U6IG51bWJlciB9PiB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyBmb3JiaWRkZW5Td2VlcHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50U3dlZXA6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHVibGljIG9uQ2FtZXJhTW9kZUNoYW5nZWQgPSBuZXcgU3ViamVjdDxDYW1lcmFNb2RlPigpO1xyXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgc2V0IG9mIGN1cnJlbnQgcm9vbXMgY2hhbmdlcyAoc2RrLlJvb20uY3VycmVudCkuICovXHJcbiAgcHVibGljIG9uUm9vbUNoYW5nZWQgPSBuZXcgU3ViamVjdDxhbnlbXT4oKTtcclxuXHJcbiAgcHVibGljIGluVHJhbnNpdGlvbk1vZGUgPSBmYWxzZTtcclxuICBwdWJsaWMgaW5UcmFuc2l0aW9uU3dlZXAgPSBmYWxzZTtcclxuICBwdWJsaWMgY3VycmVudENhbWVyYU1vZGU6IENhbWVyYU1vZGUgPSBDYW1lcmFNb2RlLk9VVFNJREU7XHJcbiAgcHVibGljIGN1cnJlbnRSb29tczogYW55W10gPSBbXTtcclxuICAvKiogU2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBmbG9vciBjdXJyZW50bHkgdmlzaWJsZSBpbiBzZGsuRmxvb3IuY3VycmVudCAobnVsbCA9IHNpbmdsZS1mbG9vciBvciB1bmtub3duKS4gKi9cclxuICBwdWJsaWMgY3VycmVudEZsb29yU2VxdWVuY2U6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyDilIDilIAgQmlkaXJlY3Rpb25hbCBzaWQg4oaUIHV1aWQgbG9va3VwIG1hcHMg4pSA4pSAXHJcbiAgLy8gc2lkICA9IHNob3J0IHJ1bnRpbWUga2V5IHVzZWQgYnkgTWF0dGVycG9ydCBTREsgKGNvbGxlY3Rpb24ga2V5cywgU3dlZXAubW92ZVRvLCBDYW1lcmEucG9zZS5zd2VlcClcclxuICAvLyB1dWlkID0gcGVyc2lzdGVudCBpZGVudGlmaWVyIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UgKHpvbmUuc3dlZXBJRHMsIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCwgc3RhcnRTd2VlcElEKVxyXG4gIHByaXZhdGUgc2lkVG9VdWlkOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgdXVpZFRvU2lkOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAvLyDilIDilIAgU3dlZXAgSUQgdHJhbnNsYXRpb24gaGVscGVycyDilIDilIBcclxuXHJcbiAgLyoqXHJcbiAgICogQnVpbGRzIHRoZSBiaWRpcmVjdGlvbmFsIHNpZCDihpQgdXVpZCBtYXBzIGZyb20gdGhlIHN3ZWVwIGNvbGxlY3Rpb24uXHJcbiAgICogTXVzdCBiZSBjYWxsZWQgZXZlcnkgdGltZSB0aGUgc3dlZXAgY29sbGVjdGlvbiBpcyB1cGRhdGVkLlxyXG4gICAqL1xyXG4gIGJ1aWxkU3dlZXBJZE1hcHMoY29sbGVjdGlvbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNpZFRvVXVpZC5jbGVhcigpO1xyXG4gICAgdGhpcy51dWlkVG9TaWQuY2xlYXIoKTtcclxuICAgIGlmICghY29sbGVjdGlvbikgcmV0dXJuO1xyXG4gICAgZm9yIChjb25zdCBzaWQgb2YgT2JqZWN0LmtleXMoY29sbGVjdGlvbikpIHtcclxuICAgICAgY29uc3Qgc3dlZXBEYXRhID0gY29sbGVjdGlvbltzaWRdO1xyXG4gICAgICBjb25zdCB1dWlkID0gc3dlZXBEYXRhPy51dWlkO1xyXG4gICAgICBpZiAodXVpZCAmJiB1dWlkICE9PSBzaWQpIHtcclxuICAgICAgICB0aGlzLnNpZFRvVXVpZC5zZXQoc2lkLCB1dWlkKTtcclxuICAgICAgICB0aGlzLnV1aWRUb1NpZC5zZXQodXVpZCwgc2lkKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBBbHNvIG1hcCBzaWTihpJzaWQgYW5kIHV1aWTihpJ1dWlkIGZvciBwYXNzLXRocm91Z2ggY2FzZXNcclxuICAgICAgdGhpcy5zaWRUb1V1aWQuc2V0KHNpZCwgdXVpZCB8fCBzaWQpO1xyXG4gICAgICBpZiAodXVpZCkge1xyXG4gICAgICAgIHRoaXMudXVpZFRvU2lkLnNldCh1dWlkLCBzaWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhgW01hdHRlcnBvcnROYXZpZ2F0aW9uXSBCdWlsdCBzd2VlcCBJRCBtYXBzOiAke3RoaXMuc2lkVG9VdWlkLnNpemV9IHNpZHMsICR7dGhpcy51dWlkVG9TaWQuc2l6ZX0gdXVpZHNgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc29sdmVzIGFueSBzd2VlcCBpZGVudGlmaWVyIChzaWQgb3IgdXVpZCkgdG8gdGhlIFNESyBydW50aW1lICoqc2lkKiouXHJcbiAgICogVGhpcyBpcyB3aGF0IHNkay5Td2VlcC5tb3ZlVG8oKSBhbmQgc2RrLlN3ZWVwLmRpc2FibGUoKSBleHBlY3QuXHJcbiAgICogRmFsbHMgYmFjayB0byB0aGUgaW5wdXQgaWYgbm8gbWFwcGluZyBleGlzdHMuXHJcbiAgICovXHJcbiAgcmVzb2x2ZVN3ZWVwU2lkKGlkT3JVdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFpZE9yVXVpZCkgcmV0dXJuIGlkT3JVdWlkO1xyXG4gICAgLy8gSWYgaXQncyBhbHJlYWR5IGEga25vd24gc2lkIChleGlzdHMgYXMgYSBrZXkgaW4gc3dlZXBDb2xsZWN0aW9uKSwgcmV0dXJuIGl0XHJcbiAgICBpZiAodGhpcy5zaWRUb1V1aWQuaGFzKGlkT3JVdWlkKSkgcmV0dXJuIGlkT3JVdWlkO1xyXG4gICAgLy8gT3RoZXJ3aXNlIHRyeSB0byBtYXAgZnJvbSB1dWlkIOKGkiBzaWRcclxuICAgIHJldHVybiB0aGlzLnV1aWRUb1NpZC5nZXQoaWRPclV1aWQpID8/IGlkT3JVdWlkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzb2x2ZXMgYW55IHN3ZWVwIGlkZW50aWZpZXIgKHNpZCBvciB1dWlkKSB0byB0aGUgcGVyc2lzdGVudCAqKnV1aWQqKi5cclxuICAgKiBUaGlzIGlzIHdoYXQgdGhlIGRhdGFiYXNlIHN0b3JlcyAoem9uZS5zd2VlcElEcywgcG9pLm1hdHRlcnBvcnRTd2VlcElEKS5cclxuICAgKiBGYWxscyBiYWNrIHRvIHRoZSBpbnB1dCBpZiBubyBtYXBwaW5nIGV4aXN0cy5cclxuICAgKi9cclxuICByZXNvbHZlU3dlZXBVdWlkKHNpZE9yVXVpZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghc2lkT3JVdWlkKSByZXR1cm4gc2lkT3JVdWlkO1xyXG4gICAgLy8gSWYgaXQncyBhbHJlYWR5IGEga25vd24gdXVpZCwgcmV0dXJuIGl0XHJcbiAgICBpZiAodGhpcy51dWlkVG9TaWQuaGFzKHNpZE9yVXVpZCkpIHJldHVybiBzaWRPclV1aWQ7XHJcbiAgICAvLyBPdGhlcndpc2UgdHJ5IHRvIG1hcCBmcm9tIHNpZCDihpIgdXVpZFxyXG4gICAgcmV0dXJuIHRoaXMuc2lkVG9VdWlkLmdldChzaWRPclV1aWQpID8/IHNpZE9yVXVpZDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFjdGlvbl90b29sYm94X2Zsb29ycGxhbihzZGs6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuaW5UcmFuc2l0aW9uTW9kZSB8fCB0aGlzLmluVHJhbnNpdGlvblN3ZWVwKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCd2aWV3ZXIgaXMgaW4gdHJhbnNpdGlvbiwgY2Fubm90IGdvIGZsb29ycGxhbicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCBzZGsuTW9kZS5tb3ZlVG8oJ21vZGUuZmxvb3JwbGFuJyk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdjYW5ub3QgZ28gdG8gZmxvb3JwbGFuJywgZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb25fdG9vbGJveF9pbnNpZGVfdmlldyhzZGs6IGFueSkge1xyXG4gICAgc2RrLk1vZGUubW92ZVRvKCdtb2RlLmluc2lkZScpO1xyXG4gIH1cclxuXHJcbiAgYWN0aW9uU2hvd0FsbEZsb29ycyhzZGs6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgc2RrLkZsb29yLnNob3dBbGwoKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5sb2coJ2Nhbm5vdCBzaG93IGFsbCBmbG9vcnMnLCBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGFjdGlvbl90b29sYm94X2RvbGxob3VzZShzZGs6IGFueSkge1xyXG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmluVHJhbnNpdGlvbk1vZGUgfHwgdGhpcy5pblRyYW5zaXRpb25Td2VlcCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCd2aWV3ZXIgaXMgaW4gdHJhbnNpdGlvbiwgY2Fubm90IGdvIGRvbGxob3VzZScpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IHNkay5Nb2RlLm1vdmVUbygnbW9kZS5kb2xsaG91c2UnKTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdjYW5ub3QgZ28gdG8gZG9sbGhvdXNlJywgZSk7XHJcbiAgICAgIH1cclxuICAgIH0sIDEyMDApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWN0aW9uX2dvX3RvX2Zsb29yKHNkazogYW55LCBmbG9vck5hbWU6IHN0cmluZywgbWF0dGVycG9ydEZsb29yU2VxdWVuY2U6IG51bWJlciA9IG51bGwpIHtcclxuICAgIGlmICghdGhpcy5mbG9vcnMpIHtcclxuICAgICAgY29uc29sZS5sb2coJ0Zsb29yIGFyZSBub3QgbG9hZGVkIHlldCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZmxvb3JNYXR0ZXJwb3J0ID0gdGhpcy5mbG9vcnMuZmluZChcclxuICAgICAgKGZsb29yKSA9PiBmbG9vci5zZXF1ZW5jZSA9PT0gbWF0dGVycG9ydEZsb29yU2VxdWVuY2VcclxuICAgICk7XHJcbiAgICBpZiAoIWZsb29yTWF0dGVycG9ydCkge1xyXG4gICAgICBmbG9vck1hdHRlcnBvcnQgPSB0aGlzLmZsb29ycy5maW5kKFxyXG4gICAgICAgIChmbG9vcikgPT4gZmxvb3JOYW1lLmluY2x1ZGVzKGZsb29yLm5hbWUpICYmIGZsb29yLm5hbWUgIT0gJydcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICghZmxvb3JNYXR0ZXJwb3J0KSB7XHJcbiAgICAgIGZsb29yTWF0dGVycG9ydCA9IHRoaXMuZmxvb3JzLmZpbmQoKGZsb29yKSA9PlxyXG4gICAgICAgIGZsb29yTmFtZS5pbmNsdWRlcyhmbG9vci5pZClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChmbG9vck1hdHRlcnBvcnQpIHtcclxuICAgICAgbGV0IHJldHJ5ID0gdHJ1ZTtcclxuICAgICAgd2hpbGUgKHJldHJ5KSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbnN0IGZsb29ySW5kZXggPSBhd2FpdCBzZGsuRmxvb3IubW92ZVRvKGZsb29yTWF0dGVycG9ydC5zZXF1ZW5jZSk7XHJcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKFwibW92ZWQgdG8gZmxvb3JJbmRleFwiLCBmbG9vckluZGV4KTtcclxuICAgICAgICAgIHJldHJ5ID0gZmFsc2U7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdDYW5ub3QgbW92ZSB0byBGbG9vcicsIGVycm9yKTtcclxuICAgICAgICAgIGF3YWl0IHdhaXQoMTAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignTm8gbWF0dGVycG9ydCBmbG9vciBmb3VuZCB0byBtb3ZlIHRvJyk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcImFjdGlvbl9nb190b19mbG9vci5mbG9vck1hdHRlcnBvcnRcIiwgZmxvb3JNYXR0ZXJwb3J0KTtcclxuICAgIGNvbnNvbGUubG9nKFwiYWN0aW9uX2dvX3RvX2Zsb29yLmZsb29yTmFtZVwiLCBmbG9vck5hbWUpO1xyXG4gICAgY29uc29sZS5sb2coXCJhY3Rpb25fZ29fdG9fZmxvb3IubWF0dGVycG9ydEZsb29yU2VxdWVuY2VcIiwgbWF0dGVycG9ydEZsb29yU2VxdWVuY2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGUgdG8gYSBzd2VlcC4gVGhlIGNhbGxlciBjYW4gcGFzcyBlaXRoZXIgYSBzaWQgb3IgYSB1dWlkO1xyXG4gICAqIHRoaXMgbWV0aG9kIHJlc29sdmVzIGl0IHRvIHRoZSBTREsgc2lkIGJlZm9yZSBjYWxsaW5nIFN3ZWVwLm1vdmVUbygpLlxyXG4gICAqL1xyXG4gIGFzeW5jIGFjdGlvbl9nb190b19zd2VlcChzZGs6IGFueSwgc3dlZXA6IHN0cmluZywgcm90YXRpb24/OiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0gfCBudWxsKSB7XHJcbiAgICBjb25zdCByZXNvbHZlZFNpZCA9IHRoaXMucmVzb2x2ZVN3ZWVwU2lkKHN3ZWVwKTtcclxuICAgIGlmICh0aGlzLmZvcmJpZGRlblN3ZWVwcy5pbmNsdWRlcyhzd2VlcCkgfHwgdGhpcy5mb3JiaWRkZW5Td2VlcHMuaW5jbHVkZXMocmVzb2x2ZWRTaWQpKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCd1c2VyIGlzIG5vdCBhbGxvd2VkIHRvIGdvIHRvIHRoaXMgc3dlZXAnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzRGV2TW9kZSgpICYmIHJlc29sdmVkU2lkICE9PSBzd2VlcCkge1xyXG4gICAgICBjb25zb2xlLmRlYnVnKGBbYWN0aW9uX2dvX3RvX3N3ZWVwXSBSZXNvbHZlZCB1dWlkIFwiJHtzd2VlcH1cIiDihpIgc2lkIFwiJHtyZXNvbHZlZFNpZH1cImApO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5pblRyYW5zaXRpb25Td2VlcCA9IHRydWU7XHJcbiAgICAgICAgYXdhaXQgc2RrLlN3ZWVwLm1vdmVUbyhyZXNvbHZlZFNpZCwge1xyXG4gICAgICAgICAgdHJhbnNpdGlvbjogc2RrLkNhbWVyYS5UcmFuc2l0aW9uVHlwZS5JTlNUQU5ULFxyXG4gICAgICAgICAgdHJhbnNpdGlvblRpbWU6IDE1MDBcclxuICAgICAgICB9KTtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB0aGlzLmluVHJhbnNpdGlvblN3ZWVwID0gZmFsc2U7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0Nhbm5vdCBtb3ZlIHRvIHN3ZWVwJywgZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyb3RhdGlvbikge1xyXG4gICAgICAgIGF3YWl0IHNkay5DYW1lcmEuc2V0Um90YXRpb24ocm90YXRpb24sIHsgc3BlZWQ6IDEwMCB9KTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwMCk7XHJcbiAgICBjb25zb2xlLmxvZyhcImFjdGlvbl9nb190b19zd2VlcC5zd2VlcFwiLCBzd2VlcCk7XHJcbiAgICBjb25zb2xlLmxvZyhcImFjdGlvbl9nb190b19zd2VlcC5yb3RhdGlvblwiLCByb3RhdGlvbik7XHJcbiAgICBjb25zb2xlLmxvZyhcImFjdGlvbl9nb190b19zd2VlcC5yZXNvbHZlZFNpZFwiLCByZXNvbHZlZFNpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNhYmxlIGZvcmJpZGRlbiBzd2VlcHMuIFJlc29sdmVzIGVhY2ggc3dlZXAgSUQgdG8gc2lkIGJlZm9yZSBjYWxsaW5nIFNESy5cclxuICAgKi9cclxuICBhc3luYyByZW1vdmVGb3JiaWRkZW5Td2VlcHMoc2RrOiBhbnksIGZvcmJpZGRlblN3ZWVwczogc3RyaW5nW10pIHtcclxuICAgIHRoaXMuZm9yYmlkZGVuU3dlZXBzID0gWy4uLmZvcmJpZGRlblN3ZWVwc107XHJcbiAgICBsZXQgcmVtb3ZlZCA9IDA7XHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgZm9yYmlkZGVuU3dlZXBzLm1hcChhc3luYyAoc3dlZXApID0+IHtcclxuICAgICAgICBjb25zdCByZXNvbHZlZFNpZCA9IHRoaXMucmVzb2x2ZVN3ZWVwU2lkKHN3ZWVwKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgYXdhaXQgc2RrLlN3ZWVwLmRpc2FibGUocmVzb2x2ZWRTaWQpO1xyXG4gICAgICAgICAgcmVtb3ZlZCArPSAxO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIGNvbnNvbGUubG9nKCdyZW1vdmVkIHN3ZWVwczonLCByZW1vdmVkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdmUgdG8gYSBwb3NpdGlvblxyXG4gICAqIEBwYXJhbSBzZGsgXHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIFxyXG4gICAqIEBwYXJhbSByb3RhdGlvbiBcclxuICAgKiBAcGFyYW0gb3B0aW9ucyBcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgbW92ZV90b19wb3NpdGlvbihcclxuICAgIHNkazogYW55LFxyXG4gICAgcG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlciB9LFxyXG4gICAgcm90YXRpb246IHsgeWF3OiBudW1iZXI7IHBpdGNoPzogbnVtYmVyOyByb2xsPzogbnVtYmVyIH0gfCBudWxsLFxyXG4gICAgb3B0aW9ucz86IHtcclxuICAgICAgdHJhbnNpdGlvbj86ICdGTFknIHwgJ0lOU1RBTlQnIHwgJ0lNTUVESUFURSc7XHJcbiAgICAgIGR1cmF0aW9uTXM/OiBudW1iZXI7XHJcbiAgICAgIGFuZ2xlc0luRGVncmVlcz86IGJvb2xlYW47XHJcbiAgICAgIG9mZnNldD86IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlciB9O1xyXG4gICAgfVxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gVmFsaWRhdGUgU0RLXHJcbiAgICBpZiAoIXNkaykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdHRlcnBvcnQgU0RLIGluc3RhbmNlIGlzIHJlcXVpcmVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTWVyZ2Ugb3B0aW9ucyB3aXRoIGRlZmF1bHRzXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHRyYW5zaXRpb24gPSAnRkxZJyxcclxuICAgICAgZHVyYXRpb25NcyA9IDgwMCxcclxuICAgICAgYW5nbGVzSW5EZWdyZWVzID0gdHJ1ZSxcclxuICAgICAgb2Zmc2V0ID0geyB4OiAwLCB5OiAwLCB6OiAwIH1cclxuICAgIH0gPSBvcHRpb25zIHx8IHt9O1xyXG5cclxuICAgIGNvbnN0IGRlZ1RvUmFkID0gKGQ6IG51bWJlcikgPT4gZCAqIE1hdGguUEkgLyAxODA7XHJcblxyXG4gICAgLy8gUHJlcGFyZSByb3RhdGlvbiB2YWx1ZXMgKGRlZmF1bHQgdG8gMCB3aGVuIG5vdCBwcm92aWRlZClcclxuICAgIGNvbnN0IHlhdyA9IHJvdGF0aW9uPy55YXcgPz8gMDtcclxuICAgIGNvbnN0IHBpdGNoID0gcm90YXRpb24/LnBpdGNoID8/IDA7XHJcbiAgICBjb25zdCByb2xsID0gcm90YXRpb24/LnJvbGwgPz8gMDtcclxuXHJcbiAgICAvLyBDb252ZXJ0IHRvIHJhZGlhbnMgaWYgYW5nbGVzIGFyZSBwcm92aWRlZCBpbiBkZWdyZWVzXHJcbiAgICBjb25zdCByb3RZYXcgPSBhbmdsZXNJbkRlZ3JlZXMgPyBkZWdUb1JhZCh5YXcpIDogeWF3O1xyXG4gICAgY29uc3Qgcm90UGl0Y2ggPSBhbmdsZXNJbkRlZ3JlZXMgPyBkZWdUb1JhZChwaXRjaCkgOiBwaXRjaDtcclxuICAgIGNvbnN0IHJvdFJvbGwgPSBhbmdsZXNJbkRlZ3JlZXMgPyBkZWdUb1JhZChyb2xsKSA6IHJvbGw7XHJcblxyXG4gICAgLy8gUHJlc2VydmUgcHJldmlvdXMgdHJhbnNpdGlvbiBmbGFnIGFuZCBtYXJrIGFzIGluLXRyYW5zaXRpb25cclxuICAgIGNvbnN0IHByZXZJblRyYW5zaXRpb24gPSB0aGlzLmluVHJhbnNpdGlvbk1vZGU7XHJcbiAgICB0aGlzLmluVHJhbnNpdGlvbk1vZGUgPSB0cnVlO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIEF0dGVtcHQgdG8gdXNlIENhbWVyYS5sb29rQXQgd2hlbiBhdmFpbGFibGVcclxuICAgICAgaWYgKHNkaz8uQ2FtZXJhPy5sb29rQXQpIHtcclxuICAgICAgICBjb25zdCBsb29rQXRPcHRzOiBhbnkgPSB7fTtcclxuICAgICAgICAvLyBQcmVmZXIgU0RLIGNvbnN0YW50cyB3aGVuIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHVzZSBmYWxsYmFjayBzdHJpbmdcclxuICAgICAgICBpZiAoc2RrLkNhbWVyYS5UcmFuc2l0aW9uVHlwZSAmJiBzZGsuQ2FtZXJhLlRyYW5zaXRpb25UeXBlW3RyYW5zaXRpb25dKSB7XHJcbiAgICAgICAgICBsb29rQXRPcHRzLnRyYW5zaXRpb24gPSBzZGsuQ2FtZXJhLlRyYW5zaXRpb25UeXBlW3RyYW5zaXRpb25dO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsb29rQXRPcHRzLnRyYW5zaXRpb24gPSB0cmFuc2l0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsb29rQXRPcHRzLmR1cmF0aW9uID0gZHVyYXRpb25NcztcclxuICAgICAgICBpZiAob2Zmc2V0KSBsb29rQXRPcHRzLm9mZnNldCA9IG9mZnNldDtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGF3YWl0IHNkay5DYW1lcmEubG9va0F0KHBvc2l0aW9uLCBsb29rQXRPcHRzKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgIC8vIElmIGxvb2tBdCBmYWlscywgY29udGludWUgdG8gZmFsbGJhY2tzIGJlbG93XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIGNvbnNvbGUuZGVidWcoJ0NhbWVyYS5sb29rQXQgZmFpbGVkLCBmYWxsaW5nIGJhY2sgdG8gc2V0U3RhdGUnLCBlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gSWYgbG9va0F0IGlzIG5vdCBwcmVzZW50IG9yIGZhaWxlZCwgdHJ5IHNldFN0YXRlIGZvciBwb3NpdGlvblxyXG4gICAgICBpZiAoIXNkaz8uQ2FtZXJhPy5sb29rQXQgJiYgc2RrPy5DYW1lcmE/LnNldFN0YXRlKSB7XHJcbiAgICAgICAgY29uc3Qgc3RhdGVQb3M6IGFueSA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7IHg6IHBvc2l0aW9uLngsIHk6IHBvc2l0aW9uLnksIHo6IHBvc2l0aW9uLnogfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGF3YWl0IHNkay5DYW1lcmEuc2V0U3RhdGUoc3RhdGVQb3MpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSBjb25zb2xlLmRlYnVnKCdDYW1lcmEuc2V0U3RhdGUocG9zaXRpb24pIGZhaWxlZCcsIGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBBcHBseSByb3RhdGlvbiBpZiBwcm92aWRlZFxyXG4gICAgICBpZiAocm90YXRpb24pIHtcclxuICAgICAgICAvLyBQcmVmZXIgc2V0Um90YXRpb24gd2hlbiBhdmFpbGFibGVcclxuICAgICAgICBpZiAoc2RrPy5DYW1lcmE/LnNldFJvdGF0aW9uKSB7XHJcbiAgICAgICAgICAvLyBUcnkgVmVjdG9yMiBzaWduYXR1cmUgeyB4OiB5YXcsIHk6IHBpdGNoIH0gZmlyc3RcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHNkay5DYW1lcmEuc2V0Um90YXRpb24oeyB4OiByb3RZYXcsIHk6IHJvdFBpdGNoIH0sIHsgc3BlZWQ6IE1hdGgubWF4KDEwLCBNYXRoLmZsb29yKGR1cmF0aW9uTXMgLyAxMCkpIH0pO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyMSkge1xyXG4gICAgICAgICAgICAvLyBJZiB0aGF0IGZhaWxzLCB0cnkgVmVjdG9yMyBzaWduYXR1cmUgeyB4OiBwaXRjaCwgeTogeWF3LCB6OiByb2xsIH1cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBhd2FpdCBzZGsuQ2FtZXJhLnNldFJvdGF0aW9uKHsgeDogcm90UGl0Y2gsIHk6IHJvdFlhdywgejogcm90Um9sbCB9LCB7IHNwZWVkOiBNYXRoLm1heCgxMCwgTWF0aC5mbG9vcihkdXJhdGlvbk1zIC8gMTApKSB9KTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyMikge1xyXG4gICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkgY29uc29sZS5kZWJ1ZygnQ2FtZXJhLnNldFJvdGF0aW9uIGZhaWxlZCB3aXRoIG11bHRpcGxlIHNpZ25hdHVyZXMnLCBlcnIxLCBlcnIyKTtcclxuICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBzZXRTdGF0ZSB3aXRoIHJvdGF0aW9uIGlmIGF2YWlsYWJsZVxyXG4gICAgICAgICAgICAgIGlmIChzZGs/LkNhbWVyYT8uc2V0U3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHNkay5DYW1lcmEuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOiB7IHg6IHJvdFBpdGNoLCB5OiByb3RZYXcsIHo6IHJvdFJvbGwgfSxcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogeyB4OiBwb3NpdGlvbi54LCB5OiBwb3NpdGlvbi55LCB6OiBwb3NpdGlvbi56IH1cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkgY29uc29sZS5kZWJ1ZygnRmFsbGJhY2sgQ2FtZXJhLnNldFN0YXRlKHJvdGF0aW9uKSBmYWlsZWQnLCBlcnIzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHNkaz8uQ2FtZXJhPy5zZXRTdGF0ZSkge1xyXG4gICAgICAgICAgLy8gSWYgc2V0Um90YXRpb24gaXMgbm90IGF2YWlsYWJsZSwgdXNlIHNldFN0YXRlIHRvIGFwcGx5IHJvdGF0aW9uXHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBzZGsuQ2FtZXJhLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICByb3RhdGlvbjogeyB4OiByb3RQaXRjaCwgeTogcm90WWF3LCB6OiByb3RSb2xsIH0sXHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IHsgeDogcG9zaXRpb24ueCwgeTogcG9zaXRpb24ueSwgejogcG9zaXRpb24ueiB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkgY29uc29sZS5kZWJ1ZygnQ2FtZXJhLnNldFN0YXRlKHJvdGF0aW9uKSBmYWlsZWQnLCBlcnIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIGNvbnNvbGUud2FybignTm8gbWV0aG9kIGF2YWlsYWJsZSB0byBhcHBseSByb3RhdGlvbiAoc2V0Um90YXRpb24vc2V0U3RhdGUgbm90IGZvdW5kKScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gV2FpdCBhIGJpdCB0byBhbGxvdyB0cmFuc2l0aW9uIGFuaW1hdGlvbnMgdG8gY29tcGxldGVcclxuICAgICAgYXdhaXQgd2FpdChkdXJhdGlvbk1zICsgMTIwKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAvLyBSZS10aHJvdyBhZnRlciBlbnN1cmluZyBmbGFncyBhcmUgcmVzdG9yZWQgaW4gZmluYWxseVxyXG4gICAgICB0aHJvdyBlcnI7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICAvLyBSZXN0b3JlIHByZXZpb3VzIHRyYW5zaXRpb24gZmxhZ1xyXG4gICAgICB0aGlzLmluVHJhbnNpdGlvbk1vZGUgPSBwcmV2SW5UcmFuc2l0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgc3dlZXAgYXMgYSAqKnV1aWQqKiAoZm9yIGRhdGFiYXNlIG1hdGNoaW5nKS5cclxuICAgKiBUaGUgU0RLJ3MgcG9zZUNhbWVyYS5zd2VlcCBpcyBhIHNpZDsgd2UgdHJhbnNsYXRlIGl0LlxyXG4gICAqL1xyXG4gIGdldEN1cnJlbnRTd2VlcChwb3NlQ2FtZXJhOiBhbnkpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGNvbnN0IHNpZCA9IHBvc2VDYW1lcmE/LnN3ZWVwIHx8IG51bGw7XHJcbiAgICBpZiAoIXNpZCkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU3dlZXBVdWlkKHNpZCk7XHJcbiAgfVxyXG5cclxuICBzZXRDYW1lcmFNb2RlKG1vZGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5pblRyYW5zaXRpb25Td2VlcCA9IGZhbHNlO1xyXG4gICAgc3dpdGNoIChtb2RlKSB7XHJcbiAgICAgIGNhc2UgJ21vZGUuZG9sbGhvdXNlJzpcclxuICAgICAgICB0aGlzLmN1cnJlbnRDYW1lcmFNb2RlID0gQ2FtZXJhTW9kZS5ET0xMSE9VU0U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21vZGUuZmxvb3JwbGFuJzpcclxuICAgICAgICB0aGlzLmN1cnJlbnRDYW1lcmFNb2RlID0gQ2FtZXJhTW9kZS5GTE9PUlBMQU47XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21vZGUuaW5zaWRlJzpcclxuICAgICAgICB0aGlzLmN1cnJlbnRDYW1lcmFNb2RlID0gQ2FtZXJhTW9kZS5JTlNJREU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21vZGUudHJhbnNpdGlvbmluZyc6XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Q2FtZXJhTW9kZSA9IENhbWVyYU1vZGUuVFJBTlNJVElPTklORztcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLmN1cnJlbnRDYW1lcmFNb2RlID0gQ2FtZXJhTW9kZS5PVVRTSURFO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbkNhbWVyYU1vZGVDaGFuZ2VkLm5leHQodGhpcy5jdXJyZW50Q2FtZXJhTW9kZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -231,4 +231,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
231
231
  providedIn: 'root',
232
232
  }]
233
233
  }], ctorParameters: () => [] });
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC1vYmplY3QzZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tYXR0ZXJwb3J0LW9iamVjdDNkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWEsT0FBTyxFQUFxQixNQUFNLGtCQUFrQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUt2RSxNQUFNLE9BQU8seUJBQXlCO0lBQzdCLG9CQUFvQixHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ25ELHlCQUF5QixHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3hELFlBQVksQ0FBTSxDQUFDLGtCQUFrQjtJQUNyQyxhQUFhLENBQU07SUFDbkIsc0JBQXNCLENBQU07SUFDNUIsY0FBYyxDQUFNO0lBQ3BCLFlBQVksQ0FBTTtJQUNsQixpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFFaEMsZ0JBQWdCLENBQUM7SUFFakIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQVE7UUFDL0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFFdEMsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3RFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FDZixHQUFRLEVBQ1IsR0FBYyxFQUNkLElBQTZCO1FBRTdCLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ25DLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXZELElBQUksd0JBQXdCLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLGlCQUFpQixDQUFDLENBQUM7WUFDbEUsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssaUJBQWlCLENBQUMsQ0FBQztZQUMxRCxJQUFJLDZCQUE2QixHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsQ0FBQztZQUM3RCxJQUFJLGdCQUFnQixHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQztZQUVsRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE1BQU0sT0FBTyxHQUFHO2dCQUNkLEdBQUcsRUFBRSw2QkFBNkIsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUU7Z0JBQy9HLGFBQWEsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN6QyxhQUFhLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDekMsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsZUFBZSxFQUFFLElBQUk7YUFDdEIsQ0FBQztZQUVGLFFBQVEsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuQixLQUFLLE1BQU0sQ0FBQztnQkFBQyxLQUFLLEtBQUs7b0JBQUUsU0FBUyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQzVGLEtBQUssTUFBTSxDQUFDO2dCQUFDLEtBQUssS0FBSztvQkFBRSxTQUFTLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQUMsTUFBTTtnQkFDNUYsS0FBSyxPQUFPLENBQUM7Z0JBQUMsS0FBSyxNQUFNLENBQUM7Z0JBQUMsS0FBSyxNQUFNLENBQUM7Z0JBQUMsS0FBSyxLQUFLO29CQUFFLFNBQVMsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFBQyxNQUFNO2dCQUN4SCxLQUFLLE1BQU0sQ0FBQztnQkFBQyxLQUFLLEtBQUs7b0JBQUUsU0FBUyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQzVGO29CQUFTLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztvQkFBQyxNQUFNO1lBQ3RELENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMzQixNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3pDLFVBQVUsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUU7b0JBQ3pDLFNBQVMsRUFBRSxDQUFDO29CQUNaLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO2lCQUNsQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUNqQyxDQUFDO1lBRUQsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0UsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0UsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFakUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztZQUNsQyxDQUFDO1lBRUQsSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsNEJBQTRCLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoSCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2xFLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQzlDLENBQUM7aUJBQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2xCLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUVwQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFdEUsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO2dCQUM3QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFO29CQUMzRCxXQUFXLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsa0JBQWtCO29CQUNuRixlQUFlLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtvQkFDaEQsZUFBZSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO29CQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRTtpQkFDaEQsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxzQkFBc0IsR0FBRyxRQUFRLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sRUFBRSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNsQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDekUsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7Z0JBQ3hDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN0QyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDdEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDaEMsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbkMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUMxQyxFQUFFLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdkYsQ0FBQztZQUVELElBQUksNkJBQTZCLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzVFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdkYsQ0FBQztZQUVELFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBWTtRQUMvQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksR0FBRztZQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsbUNBQW1DLENBQUMsSUFBWTtRQUM5QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdEIsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMzQixHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDeEIsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELHNCQUFzQixDQUFDLFFBQWE7UUFDbEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxJQUFJLEdBQUc7WUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ2xELENBQUM7SUFFRCxlQUFlLENBQUMsUUFBYTtRQUMzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQUMsR0FBUSxFQUFFLFFBQWEsRUFBRSxpQkFBcUYsRUFBRSxlQUE4QyxFQUFFLHFCQUFpQyxFQUFFLG1CQUFtRTtRQUNoUyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sU0FBUyxHQUFHO1lBQ2hCLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQzlDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUTtZQUN0QixTQUFTLEVBQUUsUUFBUTtTQUNiLENBQUM7UUFDVCxNQUFNLFFBQVEsR0FBRyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQWtCLENBQUM7UUFDbEQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQUMsT0FBTyxHQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdEIsSUFBSSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0MsTUFBTSxlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLHFCQUFxQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELDBCQUEwQixDQUFDLElBQVk7UUFDckMsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsVUFBZTtRQUN4QyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksVUFBVSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzdHLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLDRCQUE0QixDQUNoQyxHQUFRLEVBQ1IsU0FBYyxFQUNkLFdBQWdCLEVBQ2hCLElBQXNDLEVBQ3RDLE9BQWdCLEVBQ2hCLFdBQW9CO1FBRXBCLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRCxJQUFJLEdBQUcsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsU0FBUyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDOUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3ZDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUM3QixTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDckMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RELElBQUksQ0FBQztvQkFDSCxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDeEUsQ0FBQztnQkFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0RBQWdELENBQUMsQ0FBQztnQkFDaEUsQ0FBQztnQkFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDN0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO3dHQXJPVSx5QkFBeUI7NEdBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzs0RkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU9iamVjdDNELCBQb2lUeXBlLCBQT0ksIERiT2JqZWN0VHlwZSB9IGZyb20gJy4uL3R5cGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JqZWN0M0QgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZXN0VGhlcm1vc3RhdCB9IGZyb20gJy4uL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvTmVzdFRoZXJtb3N0YXQnO1xuaW1wb3J0IHsgUGxhbmVSZW5kZXJlciB9IGZyb20gJy4uL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvUGxhbmVSZW5kZXJlcic7XG5pbXBvcnQgeyBDYW52YXNSZW5kZXJlciB9IGZyb20gXCIuLi9tYXR0ZXJwb3J0LWV4dGVuc2lvbnMvbmVzdC10aGVybW9zdGF0L0NhbnZhc1JlbmRlcmVyXCI7XG5pbXBvcnQgeyBUdlBsYXllciB9IGZyb20gXCIuLi9tYXR0ZXJwb3J0LWV4dGVuc2lvbnMvdHYtcGxheWVyL1R2UGxheWVyXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNYXR0ZXJwb3J0T2JqZWN0M0RTZXJ2aWNlIHtcbiAgcHVibGljIGRpY3Rpb25uYXJ5T2JqZWN0czNEOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgZGljdGlvbm5hcnlTY2VuZU9iamVjdHMzRDogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoKTtcbiAgcHVibGljIGxhc3RPYmplY3QzRDogYW55OyAvLyBUaHJlZSBKUyBvYmplY3RcbiAgcHVibGljIG9iamVjdENvbnRyb2w6IGFueTtcbiAgcHVibGljIHNlY3VyaXR5Q2FtZXJhQW5pbWF0b3I6IGFueTtcbiAgcHVibGljIGF6aW11dGhhbENyb3duOiBhbnk7XG4gIHB1YmxpYyB0aHJlZUpTU2NlbmU6IGFueTtcbiAgcHVibGljIG5vTGlnaHRGb3JPYmplY3RzID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGFzeW5jIGluaXQzRE9iamVjdFZpZXdlcihzZGs6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IFtzY2VuZU9iamVjdF0gPSBhd2FpdCBzZGsuU2NlbmUuY3JlYXRlT2JqZWN0cygxKTtcbiAgICBjb25zdCBub2RlID0gc2NlbmVPYmplY3QuYWRkTm9kZSgpO1xuICAgIG5vZGUuc3RhcnQoKTtcbiAgICB0aGlzLnRocmVlSlNTY2VuZSA9IG5vZGUub2JqM0QucGFyZW50O1xuXG4gICAgY29uc3Qgbm9kZUNvbnRyb2wgPSBzY2VuZU9iamVjdC5hZGROb2RlKCk7XG4gICAgdGhpcy5vYmplY3RDb250cm9sID0gbm9kZUNvbnRyb2wuYWRkQ29tcG9uZW50KCdtcC50cmFuc2Zvcm1Db250cm9scycpO1xuICAgIG5vZGVDb250cm9sLnN0YXJ0KCk7XG4gIH1cblxuICBhc3luYyBhZGQzRE9iamVjdChcbiAgICBzZGs6IGFueSxcbiAgICBvYmo6IElPYmplY3QzRCxcbiAgICBtb2RlPzogJ3RyYW5zbGF0ZScgfCAncm90YXRlJ1xuICApOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgW3NjZW5lT2JqZWN0XSA9IGF3YWl0IHNkay5TY2VuZS5jcmVhdGVPYmplY3RzKDEpO1xuXG4gICAgICBsZXQgaXNBbmltYXRlZFNlY3VyaXR5Q2FtZXJhID0gKG9iai5vYmplY3QgPT09IFwic2VjdXJpdHlfY2FtZXJhXCIpO1xuICAgICAgbGV0IGlzTmVzdFRoZXJtb3N0YXQgPSAob2JqLm9iamVjdCA9PT0gXCJuZXN0X3RoZXJtb3N0YXRcIik7XG4gICAgICBsZXQgaXNTbWFydGVycGxhblByb21vdGlvbmFsVmlkZW8gPSAob2JqLm9iamVjdCA9PT0gJ3ZpZGVvJyk7XG4gICAgICBsZXQgaXNBemltdXRoYWxDcm93biA9IChvYmoub2JqZWN0ID09PSAnYXppbXV0aCcpO1xuXG4gICAgICBjb25zdCBtb2RlbE5vZGUgPSBzY2VuZU9iamVjdC5hZGROb2RlKCk7XG4gICAgICBsZXQgY29tcG9uZW50ID0gbnVsbDtcbiAgICAgIGNvbnN0IGluaXRpYWwgPSB7XG4gICAgICAgIHVybDogYC9hc3NldHMvM0RvYmplY3RzL29iamVjdHMvJHtvYmoub2JqZWN0fSR7b2JqLmZvcm1hdC5pbmRleE9mKCcuJykgPT09IC0xID8gJy4nICsgb2JqLmZvcm1hdCA6IG9iai5mb3JtYXR9YCxcbiAgICAgICAgbG9jYWxSb3RhdGlvbjogeyBcInhcIjogMCwgXCJ5XCI6IDAsIFwielwiOiAwIH0sXG4gICAgICAgIGxvY2FsUG9zaXRpb246IHsgXCJ4XCI6IDAsIFwieVwiOiAwLCBcInpcIjogMCB9LFxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICBjb2xsaWRlckVuYWJsZWQ6IHRydWVcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAob2JqLmZvcm1hdCkge1xuICAgICAgICBjYXNlICcub2JqJzogY2FzZSAnb2JqJzogY29tcG9uZW50ID0gbW9kZWxOb2RlLmFkZENvbXBvbmVudCgnbXAub2JqTG9hZGVyJywgaW5pdGlhbCk7IGJyZWFrO1xuICAgICAgICBjYXNlICcuZmJ4JzogY2FzZSAnZmJ4JzogY29tcG9uZW50ID0gbW9kZWxOb2RlLmFkZENvbXBvbmVudCgnbXAuZmJ4TG9hZGVyJywgaW5pdGlhbCk7IGJyZWFrO1xuICAgICAgICBjYXNlICcuZ2x0Zic6IGNhc2UgJ2dsdGYnOiBjYXNlICcuZ2xiJzogY2FzZSAnZ2xiJzogY29tcG9uZW50ID0gbW9kZWxOb2RlLmFkZENvbXBvbmVudCgnbXAuZ2x0ZkxvYWRlcicsIGluaXRpYWwpOyBicmVhaztcbiAgICAgICAgY2FzZSAnLmRhZSc6IGNhc2UgJ2RhZSc6IGNvbXBvbmVudCA9IG1vZGVsTm9kZS5hZGRDb21wb25lbnQoJ21wLmRhZUxvYWRlcicsIGluaXRpYWwpOyBicmVhaztcbiAgICAgICAgZGVmYXVsdDogY29uc29sZS5sb2coJ0Zvcm1hdCBub3Qgc3VwcG9ydGVkJyk7IGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5ub0xpZ2h0Rm9yT2JqZWN0cykge1xuICAgICAgICBjb25zdCBsaWdodHNOb2RlID0gc2NlbmVPYmplY3QuYWRkTm9kZSgpO1xuICAgICAgICBsaWdodHNOb2RlLmFkZENvbXBvbmVudCgnbXAuYW1iaWVudExpZ2h0Jywge1xuICAgICAgICAgIGludGVuc2l0eTogMSxcbiAgICAgICAgICBjb2xvcjogeyByOiAxLjAsIGc6IDEuMCwgYjogMS4wIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm5vTGlnaHRGb3JPYmplY3RzID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIG1vZGVsTm9kZS5vYmozRC5wb3NpdGlvbi5zZXQob2JqLnBvc2l0aW9uLngsIG9iai5wb3NpdGlvbi55LCBvYmoucG9zaXRpb24ueik7XG4gICAgICBtb2RlbE5vZGUub2JqM0Qucm90YXRpb24uc2V0KG9iai5yb3RhdGlvbi54LCBvYmoucm90YXRpb24ueSwgb2JqLnJvdGF0aW9uLnopO1xuICAgICAgbW9kZWxOb2RlLm9iajNELnNjYWxlLnNldChvYmouc2NhbGUueCwgb2JqLnNjYWxlLnksIG9iai5zY2FsZS56KTtcblxuICAgICAgaWYgKGlzQXppbXV0aGFsQ3Jvd24pIHtcbiAgICAgICAgdGhpcy5hemltdXRoYWxDcm93biA9IG1vZGVsTm9kZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgJiYgIWlzTmVzdFRoZXJtb3N0YXQpIHtcbiAgICAgICAgdGhpcy5hdHRhY2hHaXptb0NvbnRyb2xUbzNET2JqZWN0KHNkaywgbW9kZWxOb2RlLCBzY2VuZU9iamVjdCwgbW9kZSwgdHJ1ZSwgdHJ1ZSkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubGFzdE9iamVjdDNEICYmIHR5cGVvZiB0aGlzLmxhc3RPYmplY3QzRC5pZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbW9kZWxOb2RlLm9iajNELnV1aWQgPSB0aGlzLmxhc3RPYmplY3QzRC5pZDtcbiAgICAgIH0gZWxzZSBpZiAob2JqLmlkKSB7XG4gICAgICAgIG1vZGVsTm9kZS5vYmozRC51dWlkID0gb2JqLmlkO1xuICAgICAgfVxuICAgICAgdGhpcy5sYXN0T2JqZWN0M0QgPSBtb2RlbE5vZGUub2JqM0Q7XG5cbiAgICAgIHRoaXMuZGljdGlvbm5hcnlPYmplY3RzM0Quc2V0KG1vZGVsTm9kZS5vYmozRC51dWlkLCBtb2RlbE5vZGUpO1xuICAgICAgdGhpcy5kaWN0aW9ubmFyeVNjZW5lT2JqZWN0czNELnNldChtb2RlbE5vZGUub2JqM0QudXVpZCwgc2NlbmVPYmplY3QpO1xuXG4gICAgICBpZiAoaXNBbmltYXRlZFNlY3VyaXR5Q2FtZXJhKSB7XG4gICAgICAgIGNvbnN0IGFuaW1hdG9yID0gbW9kZWxOb2RlLmFkZENvbXBvbmVudCgnbXAuc2VjdXJpdHlDYW1lcmEnLCB7XG4gICAgICAgICAgXCJuZWFyUGxhbmVcIjogMC4xLCBcImZhclBsYW5lXCI6IDEwLCBcImhvcml6b250YWxGT1ZcIjogNTIsIFwiYXNwZWN0XCI6IDEuNzc3Nzc3Nzc3Nzc3Nzc3NyxcbiAgICAgICAgICBcImxvY2FsUG9zaXRpb25cIjogeyBcInhcIjogMC4zLCBcInlcIjogMC4xOCwgXCJ6XCI6IDAgfSxcbiAgICAgICAgICBcImxvY2FsUm90YXRpb25cIjogeyBcInhcIjogLTE1LCBcInlcIjogLTkwLCBcInpcIjogMCB9LFxuICAgICAgICAgIFwiY29sb3JcIjogNjUyODAsIFwicGFuUGVyaW9kXCI6IDUsIFwicGFuQW5nbGVcIjogLTQ1XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlY3VyaXR5Q2FtZXJhQW5pbWF0b3IgPSBhbmltYXRvcjtcbiAgICAgICAgaWYgKCFvYmoudmlld0ZydXN0dW0pIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgYW5pbWF0b3IudG9nZ2xlVmlld0ZydXN0dW0oKTsgfSwgMTAwMCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzTmVzdFRoZXJtb3N0YXQpIHtcbiAgICAgICAgY29uc3QgY3YgPSBuZXcgQ2FudmFzUmVuZGVyZXIoKTsgY3Yub25Jbml0KCk7XG4gICAgICAgIGNvbnN0IHBsYW5lID0gbmV3IFBsYW5lUmVuZGVyZXIoKTtcbiAgICAgICAgcGxhbmUub3V0cHV0cyA9IHsgb2JqZWN0Um9vdDogbmV3IE9iamVjdDNEKCksIGNvbGxpZGVyOiBuZXcgT2JqZWN0M0QoKSB9O1xuICAgICAgICBjb25zdCBpbnB1dFRleHR1cmUgPSBjdi5vdXRwdXRzLnRleHR1cmU7XG4gICAgICAgIHBsYW5lLnNldFJvb3RTY2VuZSh0aGlzLnRocmVlSlNTY2VuZSk7XG4gICAgICAgIHBsYW5lLm9uSW5pdChtb2RlbE5vZGUsIGlucHV0VGV4dHVyZSk7XG4gICAgICAgIGNvbnN0IHNjID0gbmV3IE5lc3RUaGVybW9zdGF0KCk7XG4gICAgICAgIHNjLnNldENvbXBvbmVudChjb21wb25lbnQsIHBsYW5lLCBjdik7XG4gICAgICAgIHNjLnNldFJvb3RTY2VuZSh0aGlzLnRocmVlSlNTY2VuZSk7XG4gICAgICAgIHNjLm9uSW5pdChtb2RlbE5vZGUsIHBsYW5lLCBpbnB1dFRleHR1cmUpO1xuICAgICAgICBjdi5zZXRDYW52YXNOZXN0VGhlcm1vc3RhdFBhaW50ZXIoc2MpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgc2MuaW5wdXRzLmxvYWRpbmdTdGF0ZSA9IFwiTG9hZGVkXCI7IHNjLm9uSW5wdXRzVXBkYXRlZCgpOyB9LCA1MDAwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzU21hcnRlcnBsYW5Qcm9tb3Rpb25hbFZpZGVvKSB7XG4gICAgICAgIGNvbnN0IHNjID0gbmV3IFR2UGxheWVyKCk7IHNjLnNldENvbXBvbmVudChjb21wb25lbnQpOyBzYy5vbkluaXQobW9kZWxOb2RlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHNjLmlucHV0cy5sb2FkaW5nU3RhdGUgPSBcIkxvYWRlZFwiOyBzYy5vbklucHV0c1VwZGF0ZWQoKTsgfSwgNTAwMCk7XG4gICAgICB9XG5cbiAgICAgIHNjZW5lT2JqZWN0LnN0YXJ0KCk7XG4gICAgICByZXNvbHZlKHRoaXMubGFzdE9iamVjdDNEKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZU9iamVjdDNEKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG9iaiA9IHRoaXMuZGljdGlvbm5hcnlPYmplY3RzM0QuZ2V0KHV1aWQpO1xuICAgIGlmIChvYmopIG9iai5vYmozRC52aXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBnZXRPYmplY3QzRE1vZGVsTm9kZUZyb21EaWN0aW9ubmFyeSh1dWlkOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBvYmogPSB0aGlzLmRpY3Rpb25uYXJ5T2JqZWN0czNELmdldCh1dWlkKTtcbiAgICBpZiAoIW9iaikgcmV0dXJuIG51bGw7XG4gICAgaWYgKG9iai5vYmozRC51dWlkICE9IHV1aWQpIHtcbiAgICAgIG9iai5vYmozRC51dWlkID0gdXVpZDtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHRvZ2dsZU9iamVjdFZpc2liaWxpdHkob2JqZWN0SWQ6IGFueSkge1xuICAgIGxldCBvYmogPSB0aGlzLmRpY3Rpb25uYXJ5T2JqZWN0czNELmdldChvYmplY3RJZCk7XG4gICAgaWYgKG9iaikgb2JqLm9iajNELnZpc2libGUgPSAhb2JqLm9iajNELnZpc2libGU7XG4gIH1cblxuICBpc09iamVjdFZpc2libGUob2JqZWN0SWQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGxldCBvYmogPSB0aGlzLmRpY3Rpb25uYXJ5T2JqZWN0czNELmdldChvYmplY3RJZCk7XG4gICAgcmV0dXJuIG9iaiA/IG9iai5vYmozRC52aXNpYmxlIDogZmFsc2U7XG4gIH1cblxuICBhc3luYyBwb2ludENhbWVyYVRvM0RPYmplY3Qoc2RrOiBhbnksIG9iamVjdElkOiBhbnksIGNyZWF0ZVRhZ0NhbGxiYWNrOiAodGFnVHlwZTogUG9pVHlwZSwgb2JqZWN0OiBEYk9iamVjdFR5cGUsIHBvaTogUE9JKSA9PiBQcm9taXNlPGFueT4sIGdvVG9UYWdDYWxsYmFjazogKHNpZDogc3RyaW5nKSA9PiBQcm9taXNlPGFueT4sIGRlbGV0ZUxhc3RUYWdDYWxsYmFjazogKCkgPT4gdm9pZCwgZ2V0VGFnRnJvbUVsZW1lbnRJZDogKGlkOiBzdHJpbmcpID0+IHsgdGFnOiBzdHJpbmcsIHN3ZWVwOiBzdHJpbmcgfSkge1xuICAgIGxldCBvYmogPSB0aGlzLmRpY3Rpb25uYXJ5T2JqZWN0czNELmdldChvYmplY3RJZCk7XG4gICAgY29uc3QgcG9pT2JqZWN0ID0ge1xuICAgICAgY29vcmRpbmF0ZTogSlNPTi5zdHJpbmdpZnkob2JqLm9iajNELnBvc2l0aW9uKSxcbiAgICAgIHR5cGU6IFBvaVR5cGUuT0JKRUNUM0QsXG4gICAgICBlbGVtZW50SUQ6IG9iamVjdElkLFxuICAgIH0gYXMgUE9JO1xuICAgIGNvbnN0IG9iamVjdERiID0geyBpZDogb2JqZWN0SWQgfSBhcyBEYk9iamVjdFR5cGU7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNyZWF0ZVRhZ0NhbGxiYWNrKFBvaVR5cGUuT0JKRUNUM0QsIG9iamVjdERiLCBwb2lPYmplY3QpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7IH1cblxuICAgIGxldCByZXN1bHQgPSBnZXRUYWdGcm9tRWxlbWVudElkKG9iamVjdElkKTtcbiAgICBhd2FpdCBnb1RvVGFnQ2FsbGJhY2socmVzdWx0LnRhZyk7XG4gICAgZGVsZXRlTGFzdFRhZ0NhbGxiYWNrKCk7XG4gIH1cblxuICBnZXRTY2VuZU5vZGVGcm9tT2JqZWN0M0RJZCh1dWlkOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmRpY3Rpb25uYXJ5U2NlbmVPYmplY3RzM0QuZ2V0KHV1aWQpO1xuICB9XG5cbiAgYXN5bmMgZGlzcGxheUF6aW11dGFsQ3Jvd24ocG9zZUNhbWVyYTogYW55KSB7XG4gICAgaWYgKHRoaXMuYXppbXV0aGFsQ3Jvd24gJiYgcG9zZUNhbWVyYSkge1xuICAgICAgdGhpcy5hemltdXRoYWxDcm93bi5vYmozRC5wb3NpdGlvbi5zZXQocG9zZUNhbWVyYS5wb3NpdGlvbi54LCBwb3NlQ2FtZXJhLnBvc2l0aW9uLnksIHBvc2VDYW1lcmEucG9zaXRpb24ueilcbiAgICB9XG4gIH1cblxuICBhc3luYyBhdHRhY2hHaXptb0NvbnRyb2xUbzNET2JqZWN0KFxuICAgIHNkazogYW55LFxuICAgIG1vZGVsTm9kZTogYW55LFxuICAgIHNjZW5lT2JqZWN0OiBhbnksXG4gICAgbW9kZTogJ3RyYW5zbGF0ZScgfCAncm90YXRlJyB8ICdzY2FsZScsXG4gICAgdmlzaWJsZTogYm9vbGVhbixcbiAgICBpc05ld09iamVjdDogYm9vbGVhblxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGxldCBub2RlID0gc2NlbmVPYmplY3QuYWRkTm9kZSgpO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgW25ld1NjZW5lT2JqZWN0XSA9IGF3YWl0IHNkay5TY2VuZS5jcmVhdGVPYmplY3RzKDEpO1xuICAgICAgbm9kZSA9IG5ld1NjZW5lT2JqZWN0LmFkZE5vZGUoKTtcbiAgICB9XG4gICAgY29uc3QgbXlDb250cm9sID0gbm9kZS5hZGRDb21wb25lbnQoJ21wLnRyYW5zZm9ybUNvbnRyb2xzJyk7XG4gICAgbm9kZS5zdGFydCgpO1xuICAgIG15Q29udHJvbC50cmFuc2Zvcm1Db250cm9scy52aXNpYmxlID0gdmlzaWJsZTtcbiAgICBteUNvbnRyb2wuaW5wdXRzLnNlbGVjdGlvbiA9IG1vZGVsTm9kZTtcbiAgICBteUNvbnRyb2wuaW5wdXRzLm1vZGUgPSBtb2RlO1xuICAgIG1vZGVsTm9kZS5vYmozRC5jb250cm9scyA9IG15Q29udHJvbDtcbiAgICBpZiAoaXNOZXdPYmplY3QpIHtcbiAgICAgIGlmICghdGhpcy5sYXN0T2JqZWN0M0QgfHwgIXRoaXMubGFzdE9iamVjdDNELmNvbnRyb2xzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbW9kZWxOb2RlLm9iajNELnV1aWQgPSB0aGlzLmxhc3RPYmplY3QzRC51dWlkIHx8IHRoaXMubGFzdE9iamVjdDNELmlkO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYGlkIG9iaiBpbiBTY2VuZSB3YXMgbm90IGFzc2lnbmVkIHRvIGlkIGZyb20gREJgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxhc3RPYmplY3QzRCA9IG1vZGVsTm9kZS5vYmozRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sYXN0T2JqZWN0M0QgPSBtb2RlbE5vZGUub2JqM0Q7XG4gICAgfVxuICAgIHJldHVybiBtb2RlbE5vZGU7XG4gIH1cblxuICByZW1vdmVHaXptb0Zyb21MYXN0T2JqZWN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxhc3RPYmplY3QzRCAmJiB0aGlzLmxhc3RPYmplY3QzRC5jb250cm9scykge1xuICAgICAgdGhpcy5sYXN0T2JqZWN0M0QuY29udHJvbHMudHJhbnNmb3JtQ29udHJvbHMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy5sYXN0T2JqZWN0M0QuY29udHJvbHMudHJhbnNmb3JtQ29udHJvbHMuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5sYXN0T2JqZWN0M0QuY29udHJvbHMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVZpZXdGcnVzdHVtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlY3VyaXR5Q2FtZXJhQW5pbWF0b3IpIHtcbiAgICAgIHRoaXMuc2VjdXJpdHlDYW1lcmFBbmltYXRvci50b2dnbGVWaWV3RnJ1c3R1bSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuZGljdGlvbm5hcnlPYmplY3RzM0QuY2xlYXIoKTtcbiAgICB0aGlzLmRpY3Rpb25uYXJ5U2NlbmVPYmplY3RzM0QuY2xlYXIoKTtcbiAgICB0aGlzLmxhc3RPYmplY3QzRCA9IG51bGw7XG4gICAgdGhpcy5hemltdXRoYWxDcm93biA9IG51bGw7XG4gICAgdGhpcy5zZWN1cml0eUNhbWVyYUFuaW1hdG9yID0gbnVsbDtcbiAgICB0aGlzLm5vTGlnaHRGb3JPYmplY3RzID0gdHJ1ZTtcbiAgfVxufVxuIl19
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC1vYmplY3QzZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tYXR0ZXJwb3J0LW9iamVjdDNkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWEsT0FBTyxFQUFxQixNQUFNLGtCQUFrQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUt2RSxNQUFNLE9BQU8seUJBQXlCO0lBQzdCLG9CQUFvQixHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ25ELHlCQUF5QixHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3hELFlBQVksQ0FBTSxDQUFDLGtCQUFrQjtJQUNyQyxhQUFhLENBQU07SUFDbkIsc0JBQXNCLENBQU07SUFDNUIsY0FBYyxDQUFNO0lBQ3BCLFlBQVksQ0FBTTtJQUNsQixpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFFaEMsZ0JBQWdCLENBQUM7SUFFakIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQVE7UUFDL0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FB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QUcsSUFBSSxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO3dHQXJPVSx5QkFBeUI7NEdBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzs0RkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJT2JqZWN0M0QsIFBvaVR5cGUsIFBPSSwgRGJPYmplY3RUeXBlIH0gZnJvbSAnLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IE9iamVjdDNEIH0gZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQgeyBOZXN0VGhlcm1vc3RhdCB9IGZyb20gJy4uL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvTmVzdFRoZXJtb3N0YXQnO1xyXG5pbXBvcnQgeyBQbGFuZVJlbmRlcmVyIH0gZnJvbSAnLi4vbWF0dGVycG9ydC1leHRlbnNpb25zL25lc3QtdGhlcm1vc3RhdC9QbGFuZVJlbmRlcmVyJztcclxuaW1wb3J0IHsgQ2FudmFzUmVuZGVyZXIgfSBmcm9tIFwiLi4vbWF0dGVycG9ydC1leHRlbnNpb25zL25lc3QtdGhlcm1vc3RhdC9DYW52YXNSZW5kZXJlclwiO1xyXG5pbXBvcnQgeyBUdlBsYXllciB9IGZyb20gXCIuLi9tYXR0ZXJwb3J0LWV4dGVuc2lvbnMvdHYtcGxheWVyL1R2UGxheWVyXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0dGVycG9ydE9iamVjdDNEU2VydmljZSB7XHJcbiAgcHVibGljIGRpY3Rpb25uYXJ5T2JqZWN0czNEOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xyXG4gIHB1YmxpYyBkaWN0aW9ubmFyeVNjZW5lT2JqZWN0czNEOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xyXG4gIHB1YmxpYyBsYXN0T2JqZWN0M0Q6IGFueTsgLy8gVGhyZWUgSlMgb2JqZWN0XHJcbiAgcHVibGljIG9iamVjdENvbnRyb2w6IGFueTtcclxuICBwdWJsaWMgc2VjdXJpdHlDYW1lcmFBbmltYXRvcjogYW55O1xyXG4gIHB1YmxpYyBhemltdXRoYWxDcm93bjogYW55O1xyXG4gIHB1YmxpYyB0aHJlZUpTU2NlbmU6IGFueTtcclxuICBwdWJsaWMgbm9MaWdodEZvck9iamVjdHMgPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBhc3luYyBpbml0M0RPYmplY3RWaWV3ZXIoc2RrOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IFtzY2VuZU9iamVjdF0gPSBhd2FpdCBzZGsuU2NlbmUuY3JlYXRlT2JqZWN0cygxKTtcclxuICAgIGNvbnN0IG5vZGUgPSBzY2VuZU9iamVjdC5hZGROb2RlKCk7XHJcbiAgICBub2RlLnN0YXJ0KCk7XHJcbiAgICB0aGlzLnRocmVlSlNTY2VuZSA9IG5vZGUub2JqM0QucGFyZW50O1xyXG5cclxuICAgIGNvbnN0IG5vZGVDb250cm9sID0gc2NlbmVPYmplY3QuYWRkTm9kZSgpO1xyXG4gICAgdGhpcy5vYmplY3RDb250cm9sID0gbm9kZUNvbnRyb2wuYWRkQ29tcG9uZW50KCdtcC50cmFuc2Zvcm1Db250cm9scycpO1xyXG4gICAgbm9kZUNvbnRyb2wuc3RhcnQoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFkZDNET2JqZWN0KFxyXG4gICAgc2RrOiBhbnksXHJcbiAgICBvYmo6IElPYmplY3QzRCxcclxuICAgIG1vZGU/OiAndHJhbnNsYXRlJyB8ICdyb3RhdGUnXHJcbiAgKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBjb25zdCBbc2NlbmVPYmplY3RdID0gYXdhaXQgc2RrLlNjZW5lLmNyZWF0ZU9iamVjdHMoMSk7XHJcblxyXG4gICAgICBsZXQgaXNBbmltYXRlZFNlY3VyaXR5Q2FtZXJhID0gKG9iai5vYmplY3QgPT09IFwic2VjdXJpdHlfY2FtZXJhXCIpO1xyXG4gICAgICBsZXQgaXNOZXN0VGhlcm1vc3RhdCA9IChvYmoub2JqZWN0ID09PSBcIm5lc3RfdGhlcm1vc3RhdFwiKTtcclxuICAgICAgbGV0IGlzU21hcnRlcnBsYW5Qcm9tb3Rpb25hbFZpZGVvID0gKG9iai5vYmplY3QgPT09ICd2aWRlbycpO1xyXG4gICAgICBsZXQgaXNBemltdXRoYWxDcm93biA9IChvYmoub2JqZWN0ID09PSAnYXppbXV0aCcpO1xyXG5cclxuICAgICAgY29uc3QgbW9kZWxOb2RlID0gc2NlbmVPYmplY3QuYWRkTm9kZSgpO1xyXG4gICAgICBsZXQgY29tcG9uZW50ID0gbnVsbDtcclxuICAgICAgY29uc3QgaW5pdGlhbCA9IHtcclxuICAgICAgICB1cmw6IGAvYXNzZXRzLzNEb2JqZWN0cy9vYmplY3RzLyR7b2JqLm9iamVjdH0ke29iai5mb3JtYXQuaW5kZXhPZignLicpID09PSAtMSA/ICcuJyArIG9iai5mb3JtYXQgOiBvYmouZm9ybWF0fWAsXHJcbiAgICAgICAgbG9jYWxSb3RhdGlvbjogeyBcInhcIjogMCwgXCJ5XCI6IDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgbG9jYWxQb3NpdGlvbjogeyBcInhcIjogMCwgXCJ5XCI6IDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBjb2xsaWRlckVuYWJsZWQ6IHRydWVcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHN3aXRjaCAob2JqLmZvcm1hdCkge1xyXG4gICAgICAgIGNhc2UgJy5vYmonOiBjYXNlICdvYmonOiBjb21wb25lbnQgPSBtb2RlbE5vZGUuYWRkQ29tcG9uZW50KCdtcC5vYmpMb2FkZXInLCBpbml0aWFsKTsgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnLmZieCc6IGNhc2UgJ2ZieCc6IGNvbXBvbmVudCA9IG1vZGVsTm9kZS5hZGRDb21wb25lbnQoJ21wLmZieExvYWRlcicsIGluaXRpYWwpOyBicmVhaztcclxuICAgICAgICBjYXNlICcuZ2x0Zic6IGNhc2UgJ2dsdGYnOiBjYXNlICcuZ2xiJzogY2FzZSAnZ2xiJzogY29tcG9uZW50ID0gbW9kZWxOb2RlLmFkZENvbXBvbmVudCgnbXAuZ2x0ZkxvYWRlcicsIGluaXRpYWwpOyBicmVhaztcclxuICAgICAgICBjYXNlICcuZGFlJzogY2FzZSAnZGFlJzogY29tcG9uZW50ID0gbW9kZWxOb2RlLmFkZENvbXBvbmVudCgnbXAuZGFlTG9hZGVyJywgaW5pdGlhbCk7IGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6IGNvbnNvbGUubG9nKCdGb3JtYXQgbm90IHN1cHBvcnRlZCcpOyBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMubm9MaWdodEZvck9iamVjdHMpIHtcclxuICAgICAgICBjb25zdCBsaWdodHNOb2RlID0gc2NlbmVPYmplY3QuYWRkTm9kZSgpO1xyXG4gICAgICAgIGxpZ2h0c05vZGUuYWRkQ29tcG9uZW50KCdtcC5hbWJpZW50TGlnaHQnLCB7XHJcbiAgICAgICAgICBpbnRlbnNpdHk6IDEsXHJcbiAgICAgICAgICBjb2xvcjogeyByOiAxLjAsIGc6IDEuMCwgYjogMS4wIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5ub0xpZ2h0Rm9yT2JqZWN0cyA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBtb2RlbE5vZGUub2JqM0QucG9zaXRpb24uc2V0KG9iai5wb3NpdGlvbi54LCBvYmoucG9zaXRpb24ueSwgb2JqLnBvc2l0aW9uLnopO1xyXG4gICAgICBtb2RlbE5vZGUub2JqM0Qucm90YXRpb24uc2V0KG9iai5yb3RhdGlvbi54LCBvYmoucm90YXRpb24ueSwgb2JqLnJvdGF0aW9uLnopO1xyXG4gICAgICBtb2RlbE5vZGUub2JqM0Quc2NhbGUuc2V0KG9iai5zY2FsZS54LCBvYmouc2NhbGUueSwgb2JqLnNjYWxlLnopO1xyXG5cclxuICAgICAgaWYgKGlzQXppbXV0aGFsQ3Jvd24pIHtcclxuICAgICAgICB0aGlzLmF6aW11dGhhbENyb3duID0gbW9kZWxOb2RlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAobW9kZSAmJiAhaXNOZXN0VGhlcm1vc3RhdCkge1xyXG4gICAgICAgIHRoaXMuYXR0YWNoR2l6bW9Db250cm9sVG8zRE9iamVjdChzZGssIG1vZGVsTm9kZSwgc2NlbmVPYmplY3QsIG1vZGUsIHRydWUsIHRydWUpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmxhc3RPYmplY3QzRCAmJiB0eXBlb2YgdGhpcy5sYXN0T2JqZWN0M0QuaWQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgbW9kZWxOb2RlLm9iajNELnV1aWQgPSB0aGlzLmxhc3RPYmplY3QzRC5pZDtcclxuICAgICAgfSBlbHNlIGlmIChvYmouaWQpIHtcclxuICAgICAgICBtb2RlbE5vZGUub2JqM0QudXVpZCA9IG9iai5pZDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxhc3RPYmplY3QzRCA9IG1vZGVsTm9kZS5vYmozRDtcclxuXHJcbiAgICAgIHRoaXMuZGljdGlvbm5hcnlPYmplY3RzM0Quc2V0KG1vZGVsTm9kZS5vYmozRC51dWlkLCBtb2RlbE5vZGUpO1xyXG4gICAgICB0aGlzLmRpY3Rpb25uYXJ5U2NlbmVPYmplY3RzM0Quc2V0KG1vZGVsTm9kZS5vYmozRC51dWlkLCBzY2VuZU9iamVjdCk7XHJcblxyXG4gICAgICBpZiAoaXNBbmltYXRlZFNlY3VyaXR5Q2FtZXJhKSB7XHJcbiAgICAgICAgY29uc3QgYW5pbWF0b3IgPSBtb2RlbE5vZGUuYWRkQ29tcG9uZW50KCdtcC5zZWN1cml0eUNhbWVyYScsIHtcclxuICAgICAgICAgIFwibmVhclBsYW5lXCI6IDAuMSwgXCJmYXJQbGFuZVwiOiAxMCwgXCJob3Jpem9udGFsRk9WXCI6IDUyLCBcImFzcGVjdFwiOiAxLjc3Nzc3Nzc3Nzc3Nzc3NzcsXHJcbiAgICAgICAgICBcImxvY2FsUG9zaXRpb25cIjogeyBcInhcIjogMC4zLCBcInlcIjogMC4xOCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgIFwibG9jYWxSb3RhdGlvblwiOiB7IFwieFwiOiAtMTUsIFwieVwiOiAtOTAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICBcImNvbG9yXCI6IDY1MjgwLCBcInBhblBlcmlvZFwiOiA1LCBcInBhbkFuZ2xlXCI6IC00NVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2VjdXJpdHlDYW1lcmFBbmltYXRvciA9IGFuaW1hdG9yO1xyXG4gICAgICAgIGlmICghb2JqLnZpZXdGcnVzdHVtKSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgYW5pbWF0b3IudG9nZ2xlVmlld0ZydXN0dW0oKTsgfSwgMTAwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNOZXN0VGhlcm1vc3RhdCkge1xyXG4gICAgICAgIGNvbnN0IGN2ID0gbmV3IENhbnZhc1JlbmRlcmVyKCk7IGN2Lm9uSW5pdCgpO1xyXG4gICAgICAgIGNvbnN0IHBsYW5lID0gbmV3IFBsYW5lUmVuZGVyZXIoKTtcclxuICAgICAgICBwbGFuZS5vdXRwdXRzID0geyBvYmplY3RSb290OiBuZXcgT2JqZWN0M0QoKSwgY29sbGlkZXI6IG5ldyBPYmplY3QzRCgpIH07XHJcbiAgICAgICAgY29uc3QgaW5wdXRUZXh0dXJlID0gY3Yub3V0cHV0cy50ZXh0dXJlO1xyXG4gICAgICAgIHBsYW5lLnNldFJvb3RTY2VuZSh0aGlzLnRocmVlSlNTY2VuZSk7XHJcbiAgICAgICAgcGxhbmUub25Jbml0KG1vZGVsTm9kZSwgaW5wdXRUZXh0dXJlKTtcclxuICAgICAgICBjb25zdCBzYyA9IG5ldyBOZXN0VGhlcm1vc3RhdCgpO1xyXG4gICAgICAgIHNjLnNldENvbXBvbmVudChjb21wb25lbnQsIHBsYW5lLCBjdik7XHJcbiAgICAgICAgc2Muc2V0Um9vdFNjZW5lKHRoaXMudGhyZWVKU1NjZW5lKTtcclxuICAgICAgICBzYy5vbkluaXQobW9kZWxOb2RlLCBwbGFuZSwgaW5wdXRUZXh0dXJlKTtcclxuICAgICAgICBjdi5zZXRDYW52YXNOZXN0VGhlcm1vc3RhdFBhaW50ZXIoc2MpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBzYy5pbnB1dHMubG9hZGluZ1N0YXRlID0gXCJMb2FkZWRcIjsgc2Mub25JbnB1dHNVcGRhdGVkKCk7IH0sIDUwMDApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNTbWFydGVycGxhblByb21vdGlvbmFsVmlkZW8pIHtcclxuICAgICAgICBjb25zdCBzYyA9IG5ldyBUdlBsYXllcigpOyBzYy5zZXRDb21wb25lbnQoY29tcG9uZW50KTsgc2Mub25Jbml0KG1vZGVsTm9kZSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHNjLmlucHV0cy5sb2FkaW5nU3RhdGUgPSBcIkxvYWRlZFwiOyBzYy5vbklucHV0c1VwZGF0ZWQoKTsgfSwgNTAwMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNjZW5lT2JqZWN0LnN0YXJ0KCk7XHJcbiAgICAgIHJlc29sdmUodGhpcy5sYXN0T2JqZWN0M0QpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBkZWxldGVPYmplY3QzRCh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IG9iaiA9IHRoaXMuZGljdGlvbm5hcnlPYmplY3RzM0QuZ2V0KHV1aWQpO1xyXG4gICAgaWYgKG9iaikgb2JqLm9iajNELnZpc2libGUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldE9iamVjdDNETW9kZWxOb2RlRnJvbURpY3Rpb25uYXJ5KHV1aWQ6IHN0cmluZyk6IGFueSB7XHJcbiAgICBsZXQgb2JqID0gdGhpcy5kaWN0aW9ubmFyeU9iamVjdHMzRC5nZXQodXVpZCk7XHJcbiAgICBpZiAoIW9iaikgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAob2JqLm9iajNELnV1aWQgIT0gdXVpZCkge1xyXG4gICAgICBvYmoub2JqM0QudXVpZCA9IHV1aWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlT2JqZWN0VmlzaWJpbGl0eShvYmplY3RJZDogYW55KSB7XHJcbiAgICBsZXQgb2JqID0gdGhpcy5kaWN0aW9ubmFyeU9iamVjdHMzRC5nZXQob2JqZWN0SWQpO1xyXG4gICAgaWYgKG9iaikgb2JqLm9iajNELnZpc2libGUgPSAhb2JqLm9iajNELnZpc2libGU7XHJcbiAgfVxyXG5cclxuICBpc09iamVjdFZpc2libGUob2JqZWN0SWQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IG9iaiA9IHRoaXMuZGljdGlvbm5hcnlPYmplY3RzM0QuZ2V0KG9iamVjdElkKTtcclxuICAgIHJldHVybiBvYmogPyBvYmoub2JqM0QudmlzaWJsZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcG9pbnRDYW1lcmFUbzNET2JqZWN0KHNkazogYW55LCBvYmplY3RJZDogYW55LCBjcmVhdGVUYWdDYWxsYmFjazogKHRhZ1R5cGU6IFBvaVR5cGUsIG9iamVjdDogRGJPYmplY3RUeXBlLCBwb2k6IFBPSSkgPT4gUHJvbWlzZTxhbnk+LCBnb1RvVGFnQ2FsbGJhY2s6IChzaWQ6IHN0cmluZykgPT4gUHJvbWlzZTxhbnk+LCBkZWxldGVMYXN0VGFnQ2FsbGJhY2s6ICgpID0+IHZvaWQsIGdldFRhZ0Zyb21FbGVtZW50SWQ6IChpZDogc3RyaW5nKSA9PiB7IHRhZzogc3RyaW5nLCBzd2VlcDogc3RyaW5nIH0pIHtcclxuICAgIGxldCBvYmogPSB0aGlzLmRpY3Rpb25uYXJ5T2JqZWN0czNELmdldChvYmplY3RJZCk7XHJcbiAgICBjb25zdCBwb2lPYmplY3QgPSB7XHJcbiAgICAgIGNvb3JkaW5hdGU6IEpTT04uc3RyaW5naWZ5KG9iai5vYmozRC5wb3NpdGlvbiksXHJcbiAgICAgIHR5cGU6IFBvaVR5cGUuT0JKRUNUM0QsXHJcbiAgICAgIGVsZW1lbnRJRDogb2JqZWN0SWQsXHJcbiAgICB9IGFzIFBPSTtcclxuICAgIGNvbnN0IG9iamVjdERiID0geyBpZDogb2JqZWN0SWQgfSBhcyBEYk9iamVjdFR5cGU7XHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCBjcmVhdGVUYWdDYWxsYmFjayhQb2lUeXBlLk9CSkVDVDNELCBvYmplY3REYiwgcG9pT2JqZWN0KTtcclxuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7IH1cclxuXHJcbiAgICBsZXQgcmVzdWx0ID0gZ2V0VGFnRnJvbUVsZW1lbnRJZChvYmplY3RJZCk7XHJcbiAgICBhd2FpdCBnb1RvVGFnQ2FsbGJhY2socmVzdWx0LnRhZyk7XHJcbiAgICBkZWxldGVMYXN0VGFnQ2FsbGJhY2soKTtcclxuICB9XHJcblxyXG4gIGdldFNjZW5lTm9kZUZyb21PYmplY3QzRElkKHV1aWQ6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5kaWN0aW9ubmFyeVNjZW5lT2JqZWN0czNELmdldCh1dWlkKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRpc3BsYXlBemltdXRhbENyb3duKHBvc2VDYW1lcmE6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuYXppbXV0aGFsQ3Jvd24gJiYgcG9zZUNhbWVyYSkge1xyXG4gICAgICB0aGlzLmF6aW11dGhhbENyb3duLm9iajNELnBvc2l0aW9uLnNldChwb3NlQ2FtZXJhLnBvc2l0aW9uLngsIHBvc2VDYW1lcmEucG9zaXRpb24ueSwgcG9zZUNhbWVyYS5wb3NpdGlvbi56KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYXR0YWNoR2l6bW9Db250cm9sVG8zRE9iamVjdChcclxuICAgIHNkazogYW55LFxyXG4gICAgbW9kZWxOb2RlOiBhbnksXHJcbiAgICBzY2VuZU9iamVjdDogYW55LFxyXG4gICAgbW9kZTogJ3RyYW5zbGF0ZScgfCAncm90YXRlJyB8ICdzY2FsZScsXHJcbiAgICB2aXNpYmxlOiBib29sZWFuLFxyXG4gICAgaXNOZXdPYmplY3Q6IGJvb2xlYW5cclxuICApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgbGV0IG5vZGUgPSBzY2VuZU9iamVjdC5hZGROb2RlKCk7XHJcbiAgICBpZiAoIW5vZGUpIHtcclxuICAgICAgY29uc3QgW25ld1NjZW5lT2JqZWN0XSA9IGF3YWl0IHNkay5TY2VuZS5jcmVhdGVPYmplY3RzKDEpO1xyXG4gICAgICBub2RlID0gbmV3U2NlbmVPYmplY3QuYWRkTm9kZSgpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbXlDb250cm9sID0gbm9kZS5hZGRDb21wb25lbnQoJ21wLnRyYW5zZm9ybUNvbnRyb2xzJyk7XHJcbiAgICBub2RlLnN0YXJ0KCk7XHJcbiAgICBteUNvbnRyb2wudHJhbnNmb3JtQ29udHJvbHMudmlzaWJsZSA9IHZpc2libGU7XHJcbiAgICBteUNvbnRyb2wuaW5wdXRzLnNlbGVjdGlvbiA9IG1vZGVsTm9kZTtcclxuICAgIG15Q29udHJvbC5pbnB1dHMubW9kZSA9IG1vZGU7XHJcbiAgICBtb2RlbE5vZGUub2JqM0QuY29udHJvbHMgPSBteUNvbnRyb2w7XHJcbiAgICBpZiAoaXNOZXdPYmplY3QpIHtcclxuICAgICAgaWYgKCF0aGlzLmxhc3RPYmplY3QzRCB8fCAhdGhpcy5sYXN0T2JqZWN0M0QuY29udHJvbHMpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgbW9kZWxOb2RlLm9iajNELnV1aWQgPSB0aGlzLmxhc3RPYmplY3QzRC51dWlkIHx8IHRoaXMubGFzdE9iamVjdDNELmlkO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGBpZCBvYmogaW4gU2NlbmUgd2FzIG5vdCBhc3NpZ25lZCB0byBpZCBmcm9tIERCYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdE9iamVjdDNEID0gbW9kZWxOb2RlLm9iajNEO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxhc3RPYmplY3QzRCA9IG1vZGVsTm9kZS5vYmozRDtcclxuICAgIH1cclxuICAgIHJldHVybiBtb2RlbE5vZGU7XHJcbiAgfVxyXG5cclxuICByZW1vdmVHaXptb0Zyb21MYXN0T2JqZWN0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubGFzdE9iamVjdDNEICYmIHRoaXMubGFzdE9iamVjdDNELmNvbnRyb2xzKSB7XHJcbiAgICAgIHRoaXMubGFzdE9iamVjdDNELmNvbnRyb2xzLnRyYW5zZm9ybUNvbnRyb2xzLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5sYXN0T2JqZWN0M0QuY29udHJvbHMudHJhbnNmb3JtQ29udHJvbHMuZGlzcG9zZSgpO1xyXG4gICAgICB0aGlzLmxhc3RPYmplY3QzRC5jb250cm9scyA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVWaWV3RnJ1c3R1bSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlY3VyaXR5Q2FtZXJhQW5pbWF0b3IpIHtcclxuICAgICAgdGhpcy5zZWN1cml0eUNhbWVyYUFuaW1hdG9yLnRvZ2dsZVZpZXdGcnVzdHVtKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhcigpIHtcclxuICAgIHRoaXMuZGljdGlvbm5hcnlPYmplY3RzM0QuY2xlYXIoKTtcclxuICAgIHRoaXMuZGljdGlvbm5hcnlTY2VuZU9iamVjdHMzRC5jbGVhcigpO1xyXG4gICAgdGhpcy5sYXN0T2JqZWN0M0QgPSBudWxsO1xyXG4gICAgdGhpcy5hemltdXRoYWxDcm93biA9IG51bGw7XHJcbiAgICB0aGlzLnNlY3VyaXR5Q2FtZXJhQW5pbWF0b3IgPSBudWxsO1xyXG4gICAgdGhpcy5ub0xpZ2h0Rm9yT2JqZWN0cyA9IHRydWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -93,11 +93,11 @@ export class MatterportPointerService {
93
93
  }
94
94
  updateCursorDisplay(poseMatterport) {
95
95
  if (this.textDisplayCursorPositionPanel && poseMatterport) {
96
- this.textDisplayCursorPositionPanel.innerHTML = `position:
97
- ${pointToString(poseMatterport.position)}\n
98
- normal:
99
- ${pointToString(poseMatterport.normal)}\n
100
- floorId:
96
+ this.textDisplayCursorPositionPanel.innerHTML = `position:
97
+ ${pointToString(poseMatterport.position)}\n
98
+ normal:
99
+ ${pointToString(poseMatterport.normal)}\n
100
+ floorId:
101
101
  ${poseMatterport.floorId}`;
102
102
  if (this.getCursorPositionButton) {
103
103
  this.getCursorPositionButton.style.display = 'none';
@@ -127,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
127
127
  providedIn: 'root',
128
128
  }]
129
129
  }], ctorParameters: () => [] });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC1wb2ludGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21hdHRlcnBvcnQtcG9pbnRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUtuRCxNQUFNLE9BQU8sd0JBQXdCO0lBQzNCLGFBQWEsR0FBdUIsSUFBSSxDQUFDO0lBQ3pDLHVCQUF1QixHQUF1QixJQUFJLENBQUM7SUFDbkQsOEJBQThCLEdBQXVCLElBQUksQ0FBQztJQUUxRCw2QkFBNkIsR0FBRyxLQUFLLENBQUM7SUFDdEMsNkJBQTZCLENBQU07SUFDbkMsWUFBWSxDQUFNO0lBQ2xCLHlCQUF5QixDQUFNO0lBRXZDLGdCQUFnQixDQUFDO0lBRWpCLElBQUksQ0FDRixTQUFzQixFQUN0QixhQUEwQixFQUMxQix1QkFBb0MsRUFDcEMsOEJBQTJDLEVBQzNDLFNBSUM7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7UUFDdkQsSUFBSSxDQUFDLDhCQUE4QixHQUFHLDhCQUE4QixDQUFDO1FBRXJFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLENB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Q0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hGLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsZ0NBQWdDLENBQUMsS0FBYztRQUM3QyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsS0FBSyxDQUFDO0lBQzdDLENBQUM7d0dBdkpVLHdCQUF3Qjs0R0FBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwb2ludFRvU3RyaW5nIH0gZnJvbSAnLi4vaGVscGVycy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hdHRlcnBvcnRQb2ludGVyU2VydmljZSB7XG4gIHByaXZhdGUgcG9pbnRlckJ1dHRvbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBnZXRDdXJzb3JQb3NpdGlvbkJ1dHRvbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB0ZXh0RGlzcGxheUN1cnNvclBvc2l0aW9uUGFuZWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBjdXJzb3JQb3NpdGlvbkJ1dHRvbkRpc3BsYXllZCA9IGZhbHNlO1xuICBwcml2YXRlIGludGVydmFsQ3Vyc29yUG9pbnRlclBvc2l0aW9uOiBhbnk7XG4gIHByaXZhdGUgdGltZXJQb2ludGVyOiBhbnk7XG4gIHByaXZhdGUgb2xkUG9zZU1hdHRlcnBvcnRQb3NpdGlvbjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgaW5pdChcbiAgICBjb250YWluZXI6IEhUTUxFbGVtZW50LFxuICAgIHBvaW50ZXJCdXR0b246IEhUTUxFbGVtZW50LFxuICAgIGdldEN1cnNvclBvc2l0aW9uQnV0dG9uOiBIVE1MRWxlbWVudCxcbiAgICB0ZXh0RGlzcGxheUN1cnNvclBvc2l0aW9uUGFuZWw6IEhUTUxFbGVtZW50LFxuICAgIGNhbGxiYWNrczoge1xuICAgICAgb25MZWZ0Q2xpY2s6IChldnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgICBvblJpZ2h0Q2xpY2s6IChldnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgICBvbk1pZGRsZUNsaWNrOiAoZXZ0OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIH1cbiAgKSB7XG4gICAgdGhpcy5wb2ludGVyQnV0dG9uID0gcG9pbnRlckJ1dHRvbjtcbiAgICB0aGlzLmdldEN1cnNvclBvc2l0aW9uQnV0dG9uID0gZ2V0Q3Vyc29yUG9zaXRpb25CdXR0b247XG4gICAgdGhpcy50ZXh0RGlzcGxheUN1cnNvclBvc2l0aW9uUGFuZWwgPSB0ZXh0RGlzcGxheUN1cnNvclBvc2l0aW9uUGFuZWw7XG5cbiAgICBpZiAodGhpcy5wb2ludGVyQnV0dG9uKSB7XG4gICAgICB0aGlzLnBvaW50ZXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjYWxsYmFja3Mub25MZWZ0Q2xpY2spO1xuICAgICAgdGhpcy5wb2ludGVyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgY2FsbGJhY2tzLm9uUmlnaHRDbGljayk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2V0Q3Vyc29yUG9zaXRpb25CdXR0b24pIHtcbiAgICAgIHRoaXMuZ2V0Q3Vyc29yUG9zaXRpb25CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjYWxsYmFja3Mub25NaWRkbGVDbGljayk7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRQb2ludGVyVHJpY2soc2RrOiBhbnksIGNvbnRhaW5lcjogYW55LCBnZXRQb3NlOiAoKSA9PiBhbnksIGdldFBvc2VDYW1lcmE6ICgpID0+IGFueSwgZ2V0SW50ZXJhY3Rpb25Nb2RlOiAoKSA9PiBudW1iZXIsIGdldE1hdHRlcnRhZ1RvRm9sbG93OiAoKSA9PiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy50aW1lclBvaW50ZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVBvaW50ZXJUcmljayhzZGssIGNvbnRhaW5lciwgZ2V0UG9zZSgpLCBnZXRQb3NlQ2FtZXJhKCksIGdldEludGVyYWN0aW9uTW9kZSgpLCBnZXRNYXR0ZXJ0YWdUb0ZvbGxvdygpKTtcbiAgICB9LCA1MCk7XG4gIH1cblxuICBzdG9wUG9pbnRlclRyaWNrKCkge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lclBvaW50ZXIpO1xuICB9XG5cbiAgc3RhcnRBZG1pbkN1cnNvclRyYWNrZXIoc2RrOiBhbnksIGNvbnRhaW5lcjogYW55LCBnZXRQb3NlOiAoKSA9PiBhbnksIGdldFBvc2VDYW1lcmE6ICgpID0+IGFueSkge1xuICAgIGlmICghIXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb25CdXR0b24gJiZcbiAgICAgIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2RldicpICE9PSAtMSB8fCBkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2xvY2FsaG9zdCcpICE9PSAtMSkpIHtcbiAgICAgIHRoaXMuaW50ZXJ2YWxDdXJzb3JQb2ludGVyUG9zaXRpb24gPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBvc2VNYXR0ZXJwb3J0ID0gZ2V0UG9zZSgpO1xuICAgICAgICBpZiAoIXBvc2VNYXR0ZXJwb3J0KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgbmV4dFNob3cgPSBwb3NlTWF0dGVycG9ydC50aW1lICsgMTAwMDtcbiAgICAgICAgaWYgKG5ldyBEYXRlKCkuZ2V0VGltZSgpID4gbmV4dFNob3cpIHtcbiAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbkJ1dHRvbkRpc3BsYXllZCkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3Qgc2l6ZSA9IHtcbiAgICAgICAgICAgIHc6IGNvbnRhaW5lci5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgIGg6IGNvbnRhaW5lci5jbGllbnRIZWlnaHQsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBjb29yZCA9IHNkay5Db252ZXJzaW9uLndvcmxkVG9TY3JlZW4ocG9zZU1hdHRlcnBvcnQucG9zaXRpb24sIGdldFBvc2VDYW1lcmEoKSwgc2l6ZSk7XG4gICAgICAgICAgdGhpcy5nZXRDdXJzb3JQb3NpdGlvbkJ1dHRvbiEuc3R5bGUubGVmdCA9IGAke2Nvb3JkLnggLSAyNX1weGA7XG4gICAgICAgICAgdGhpcy5nZXRDdXJzb3JQb3NpdGlvbkJ1dHRvbiEuc3R5bGUudG9wID0gYCR7Y29vcmQueSAtIDIyfXB4YDtcbiAgICAgICAgICB0aGlzLmdldEN1cnNvclBvc2l0aW9uQnV0dG9uIS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uQnV0dG9uRGlzcGxheWVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSwgNTAwKTtcbiAgICB9XG4gIH1cblxuICBzdG9wQWRtaW5DdXJzb3JUcmFja2VyKCkge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbEN1cnNvclBvaW50ZXJQb3NpdGlvbik7XG4gIH1cblxuICB1cGRhdGVQb2ludGVyVHJpY2soc2RrOiBhbnksIGNvbnRhaW5lcjogYW55LCBwb3NlTWF0dGVycG9ydDogYW55LCBwb3NlQ2FtZXJhOiBhbnksIGludGVyYWN0aW9uTW9kZTogbnVtYmVyLCBtYXR0ZXJ0YWdUb0ZvbGxvdzogc3RyaW5nIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5wb2ludGVyQnV0dG9uKSByZXR1cm47XG5cbiAgICBpZiAoXG4gICAgICBpbnRlcmFjdGlvbk1vZGUgIT09IDAgJiYgLy8gVmlld2VySW50ZXJhY3Rpb25zLkRFRkFVTFRcbiAgICAgIG1hdHRlcnRhZ1RvRm9sbG93ICYmXG4gICAgICBwb3NlTWF0dGVycG9ydCAmJlxuICAgICAgdGhpcy5nZXREaXN0UG9zaXRpb24oc2RrLCBjb250YWluZXIsIHBvc2VDYW1lcmEsIHBvc2VNYXR0ZXJwb3J0LnBvc2l0aW9uLCB0aGlzLm9sZFBvc2VNYXR0ZXJwb3J0UG9zaXRpb24pID4gMjVcbiAgICApIHtcbiAgICAgIHRoaXMucG9pbnRlckJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXG4gICAgICBjb25zdCBzaXplID0ge1xuICAgICAgICB3OiBjb250YWluZXIuY2xpZW50V2lkdGgsXG4gICAgICAgIGg6IGNvbnRhaW5lci5jbGllbnRIZWlnaHQsXG4gICAgICB9O1xuICAgICAgY29uc3QgY29vcmRzID0gc2RrLkNvbnZlcnNpb24ud29ybGRUb1NjcmVlbihcbiAgICAgICAgcG9zZU1hdHRlcnBvcnQucG9zaXRpb24sXG4gICAgICAgIHBvc2VDYW1lcmEsXG4gICAgICAgIHNpemVcbiAgICAgICk7XG4gICAgICB0aGlzLnBvaW50ZXJCdXR0b24uc3R5bGUubGVmdCA9IGAke2Nvb3Jkcy54ICogTWF0aC5zaWduKGNvb3Jkcy54KSAtIDI1fXB4YDtcbiAgICAgIHRoaXMucG9pbnRlckJ1dHRvbi5zdHlsZS50b3AgPSBgJHtjb29yZHMueSAqIE1hdGguc2lnbihjb29yZHMueCkgLSAyNX1weGA7XG4gICAgICB0aGlzLm9sZFBvc2VNYXR0ZXJwb3J0UG9zaXRpb24gPSB7XG4gICAgICAgIC4uLnBvc2VNYXR0ZXJwb3J0LnBvc2l0aW9uLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb2ludGVyQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIH1cbiAgfVxuXG4gIGdldERpc3RQb3NpdGlvbihzZGs6IGFueSwgY29udGFpbmVyOiBhbnksIHBvc2VDYW1lcmE6IGFueSwgcG9zMTogYW55LCBwb3MyOiBhbnkpIHtcbiAgICBpZiAoIXBvczEgfHwgIXBvczIpIHJldHVybiAxMDA7IC8vIEZvcmNlIHVwZGF0ZSBpZiBvbmUgaXMgbWlzc2luZ1xuICAgIGNvbnN0IHNpemUgPSB7XG4gICAgICB3OiBjb250YWluZXIuY2xpZW50V2lkdGgsXG4gICAgICBoOiBjb250YWluZXIuY2xpZW50SGVpZ2h0LFxuICAgIH07XG4gICAgY29uc3QgY29vcmRzMSA9IHNkay5Db252ZXJzaW9uLndvcmxkVG9TY3JlZW4ocG9zMSwgcG9zZUNhbWVyYSwgc2l6ZSk7XG4gICAgY29uc3QgY29vcmRzMiA9IHNkay5Db252ZXJzaW9uLndvcmxkVG9TY3JlZW4ocG9zMiwgcG9zZUNhbWVyYSwgc2l6ZSk7XG4gICAgcmV0dXJuIE1hdGguc3FydChcbiAgICAgIChjb29yZHMxLnggLSBjb29yZHMyLngpICoqIDIgKyAoY29vcmRzMS55IC0gY29vcmRzMi55KSAqKiAyXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZUN1cnNvckRpc3BsYXkocG9zZU1hdHRlcnBvcnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnRleHREaXNwbGF5Q3Vyc29yUG9zaXRpb25QYW5lbCAmJiBwb3NlTWF0dGVycG9ydCkge1xuICAgICAgdGhpcy50ZXh0RGlzcGxheUN1cnNvclBvc2l0aW9uUGFuZWwuaW5uZXJIVE1MID0gYHBvc2l0aW9uOlxuICAgICAgICAgICAke3BvaW50VG9TdHJpbmcocG9zZU1hdHRlcnBvcnQucG9zaXRpb24pfVxcblxuICAgICAgICAgICBub3JtYWw6XG4gICAgICAgICAgICR7cG9pbnRUb1N0cmluZyhwb3NlTWF0dGVycG9ydC5ub3JtYWwpfVxcblxuICAgICAgICAgICBmbG9vcklkOlxuICAgICAgICAgICAke3Bvc2VNYXR0ZXJwb3J0LmZsb29ySWR9YDtcbiAgICAgIGlmICh0aGlzLmdldEN1cnNvclBvc2l0aW9uQnV0dG9uKSB7XG4gICAgICAgIHRoaXMuZ2V0Q3Vyc29yUG9zaXRpb25CdXR0b24uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbGVhcihjYWxsYmFja3M6IHtcbiAgICBvbkxlZnRDbGljazogKGV2dDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICBvblJpZ2h0Q2xpY2s6IChldnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgb25NaWRkbGVDbGljazogKGV2dDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgfSkge1xuICAgIGlmICh0aGlzLnBvaW50ZXJCdXR0b24pIHtcbiAgICAgIHRoaXMucG9pbnRlckJ1dHRvbi5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGNhbGxiYWNrcy5vbkxlZnRDbGljayk7XG4gICAgICB0aGlzLnBvaW50ZXJCdXR0b24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCBjYWxsYmFja3Mub25SaWdodENsaWNrKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZ2V0Q3Vyc29yUG9zaXRpb25CdXR0b24pIHtcbiAgICAgIHRoaXMuZ2V0Q3Vyc29yUG9zaXRpb25CdXR0b24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjYWxsYmFja3Mub25NaWRkbGVDbGljayk7XG4gICAgfVxuICAgIHRoaXMuc3RvcFBvaW50ZXJUcmljaygpO1xuICAgIHRoaXMuc3RvcEFkbWluQ3Vyc29yVHJhY2tlcigpO1xuICB9XG5cbiAgc2V0Q3Vyc29yUG9zaXRpb25CdXR0b25EaXNwbGF5ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmN1cnNvclBvc2l0aW9uQnV0dG9uRGlzcGxheWVkID0gdmFsdWU7XG4gIH1cbn1cbiJdfQ==
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC1wb2ludGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21hdHRlcnBvcnQtcG9pbnRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUtuRCxNQUFNLE9BQU8sd0JBQXdCO0lBQzNCLGFBQWEsR0FBdUIsSUFBSSxDQUFDO0lBQ3pDLHVCQUF1QixHQUF1QixJQUFJLENBQUM7SUFDbkQsOEJBQThCLEdBQXVCLElBQUksQ0FBQztJQUUxRCw2QkFBNkIsR0FBRyxLQUFLLENBQUM7SUFDdEMsNkJBQTZCLENBQU07SUFDbkMsWUFBWSxDQUFNO0lBQ2xCLHlCQUF5QixDQUFNO0lBRXZDLGdCQUFnQixDQUFDO0lBRWpCLElBQUksQ0FDRixTQUFzQixFQUN0QixhQUEwQixFQUMxQix1QkFBb0MsRUFDcEMsOEJBQTJDLEVBQzNDLFNBSUM7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7UUFDdkQsSUFBSSxDQUFDLDhCQUE4QixHQUFHLDhCQUE4QixDQUFDO1FBRXJFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLENB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Q0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hGLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsZ0NBQWdDLENBQUMsS0FBYztRQUM3QyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsS0FBSyxDQUFDO0lBQzdDLENBQUM7d0dBdkpVLHdCQUF3Qjs0R0FBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHBvaW50VG9TdHJpbmcgfSBmcm9tICcuLi9oZWxwZXJzLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdHRlcnBvcnRQb2ludGVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBwb2ludGVyQnV0dG9uOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZ2V0Q3Vyc29yUG9zaXRpb25CdXR0b246IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSB0ZXh0RGlzcGxheUN1cnNvclBvc2l0aW9uUGFuZWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgY3Vyc29yUG9zaXRpb25CdXR0b25EaXNwbGF5ZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIGludGVydmFsQ3Vyc29yUG9pbnRlclBvc2l0aW9uOiBhbnk7XHJcbiAgcHJpdmF0ZSB0aW1lclBvaW50ZXI6IGFueTtcclxuICBwcml2YXRlIG9sZFBvc2VNYXR0ZXJwb3J0UG9zaXRpb246IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgaW5pdChcclxuICAgIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXHJcbiAgICBwb2ludGVyQnV0dG9uOiBIVE1MRWxlbWVudCxcclxuICAgIGdldEN1cnNvclBvc2l0aW9uQnV0dG9uOiBIVE1MRWxlbWVudCxcclxuICAgIHRleHREaXNwbGF5Q3Vyc29yUG9zaXRpb25QYW5lbDogSFRNTEVsZW1lbnQsXHJcbiAgICBjYWxsYmFja3M6IHtcclxuICAgICAgb25MZWZ0Q2xpY2s6IChldnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XHJcbiAgICAgIG9uUmlnaHRDbGljazogKGV2dDogTW91c2VFdmVudCkgPT4gdm9pZDtcclxuICAgICAgb25NaWRkbGVDbGljazogKGV2dDogTW91c2VFdmVudCkgPT4gdm9pZDtcclxuICAgIH1cclxuICApIHtcclxuICAgIHRoaXMucG9pbnRlckJ1dHRvbiA9IHBvaW50ZXJCdXR0b247XHJcbiAgICB0aGlzLmdldEN1cnNvclBvc2l0aW9uQnV0dG9uID0gZ2V0Q3Vyc29yUG9zaXRpb25CdXR0b247XHJcbiAgICB0aGlzLnRleHREaXNwbGF5Q3Vyc29yUG9zaXRpb25QYW5lbCA9IHRleHREaXNwbGF5Q3Vyc29yUG9zaXRpb25QYW5lbDtcclxuXHJcbiAgICBpZiAodGhpcy5wb2ludGVyQnV0dG9uKSB7XHJcbiAgICAgIHRoaXMucG9pbnRlckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNhbGxiYWNrcy5vbkxlZnRDbGljayk7XHJcbiAgICAgIHRoaXMucG9pbnRlckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIGNhbGxiYWNrcy5vblJpZ2h0Q2xpY2spO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmdldEN1cnNvclBvc2l0aW9uQnV0dG9uKSB7XHJcbiAgICAgIHRoaXMuZ2V0Q3Vyc29yUG9zaXRpb25CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjYWxsYmFja3Mub25NaWRkbGVDbGljayk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGFydFBvaW50ZXJUcmljayhzZGs6IGFueSwgY29udGFpbmVyOiBhbnksIGdldFBvc2U6ICgpID0+IGFueSwgZ2V0UG9zZUNhbWVyYTogKCkgPT4gYW55LCBnZXRJbnRlcmFjdGlvbk1vZGU6ICgpID0+IG51bWJlciwgZ2V0TWF0dGVydGFnVG9Gb2xsb3c6ICgpID0+IHN0cmluZyB8IG51bGwpIHtcclxuICAgIHRoaXMudGltZXJQb2ludGVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZVBvaW50ZXJUcmljayhzZGssIGNvbnRhaW5lciwgZ2V0UG9zZSgpLCBnZXRQb3NlQ2FtZXJhKCksIGdldEludGVyYWN0aW9uTW9kZSgpLCBnZXRNYXR0ZXJ0YWdUb0ZvbGxvdygpKTtcclxuICAgIH0sIDUwKTtcclxuICB9XHJcblxyXG4gIHN0b3BQb2ludGVyVHJpY2soKSB7XHJcbiAgICBjbGVhckludGVydmFsKHRoaXMudGltZXJQb2ludGVyKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0QWRtaW5DdXJzb3JUcmFja2VyKHNkazogYW55LCBjb250YWluZXI6IGFueSwgZ2V0UG9zZTogKCkgPT4gYW55LCBnZXRQb3NlQ2FtZXJhOiAoKSA9PiBhbnkpIHtcclxuICAgIGlmICghIXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb25CdXR0b24gJiZcclxuICAgICAgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignZGV2JykgIT09IC0xIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignbG9jYWxob3N0JykgIT09IC0xKSkge1xyXG4gICAgICB0aGlzLmludGVydmFsQ3Vyc29yUG9pbnRlclBvc2l0aW9uID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBvc2VNYXR0ZXJwb3J0ID0gZ2V0UG9zZSgpO1xyXG4gICAgICAgIGlmICghcG9zZU1hdHRlcnBvcnQpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgbmV4dFNob3cgPSBwb3NlTWF0dGVycG9ydC50aW1lICsgMTAwMDtcclxuICAgICAgICBpZiAobmV3IERhdGUoKS5nZXRUaW1lKCkgPiBuZXh0U2hvdykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb25CdXR0b25EaXNwbGF5ZWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgICBjb25zdCBzaXplID0ge1xyXG4gICAgICAgICAgICB3OiBjb250YWluZXIuY2xpZW50V2lkdGgsXHJcbiAgICAgICAgICAgIGg6IGNvbnRhaW5lci5jbGllbnRIZWlnaHQsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgY29uc3QgY29vcmQgPSBzZGsuQ29udmVyc2lvbi53b3JsZFRvU2NyZWVuKHBvc2VNYXR0ZXJwb3J0LnBvc2l0aW9uLCBnZXRQb3NlQ2FtZXJhKCksIHNpemUpO1xyXG4gICAgICAgICAgdGhpcy5nZXRDdXJzb3JQb3NpdGlvbkJ1dHRvbiEuc3R5bGUubGVmdCA9IGAke2Nvb3JkLnggLSAyNX1weGA7XHJcbiAgICAgICAgICB0aGlzLmdldEN1cnNvclBvc2l0aW9uQnV0dG9uIS5zdHlsZS50b3AgPSBgJHtjb29yZC55IC0gMjJ9cHhgO1xyXG4gICAgICAgICAgdGhpcy5nZXRDdXJzb3JQb3NpdGlvbkJ1dHRvbiEuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uQnV0dG9uRGlzcGxheWVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDUwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdG9wQWRtaW5DdXJzb3JUcmFja2VyKCkge1xyXG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsQ3Vyc29yUG9pbnRlclBvc2l0aW9uKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVBvaW50ZXJUcmljayhzZGs6IGFueSwgY29udGFpbmVyOiBhbnksIHBvc2VNYXR0ZXJwb3J0OiBhbnksIHBvc2VDYW1lcmE6IGFueSwgaW50ZXJhY3Rpb25Nb2RlOiBudW1iZXIsIG1hdHRlcnRhZ1RvRm9sbG93OiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICBpZiAoIXRoaXMucG9pbnRlckJ1dHRvbikgcmV0dXJuO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgaW50ZXJhY3Rpb25Nb2RlICE9PSAwICYmIC8vIFZpZXdlckludGVyYWN0aW9ucy5ERUZBVUxUXHJcbiAgICAgIG1hdHRlcnRhZ1RvRm9sbG93ICYmXHJcbiAgICAgIHBvc2VNYXR0ZXJwb3J0ICYmXHJcbiAgICAgIHRoaXMuZ2V0RGlzdFBvc2l0aW9uKHNkaywgY29udGFpbmVyLCBwb3NlQ2FtZXJhLCBwb3NlTWF0dGVycG9ydC5wb3NpdGlvbiwgdGhpcy5vbGRQb3NlTWF0dGVycG9ydFBvc2l0aW9uKSA+IDI1XHJcbiAgICApIHtcclxuICAgICAgdGhpcy5wb2ludGVyQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcblxyXG4gICAgICBjb25zdCBzaXplID0ge1xyXG4gICAgICAgIHc6IGNvbnRhaW5lci5jbGllbnRXaWR0aCxcclxuICAgICAgICBoOiBjb250YWluZXIuY2xpZW50SGVpZ2h0LFxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBjb29yZHMgPSBzZGsuQ29udmVyc2lvbi53b3JsZFRvU2NyZWVuKFxyXG4gICAgICAgIHBvc2VNYXR0ZXJwb3J0LnBvc2l0aW9uLFxyXG4gICAgICAgIHBvc2VDYW1lcmEsXHJcbiAgICAgICAgc2l6ZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnBvaW50ZXJCdXR0b24uc3R5bGUubGVmdCA9IGAke2Nvb3Jkcy54ICogTWF0aC5zaWduKGNvb3Jkcy54KSAtIDI1fXB4YDtcclxuICAgICAgdGhpcy5wb2ludGVyQnV0dG9uLnN0eWxlLnRvcCA9IGAke2Nvb3Jkcy55ICogTWF0aC5zaWduKGNvb3Jkcy54KSAtIDI1fXB4YDtcclxuICAgICAgdGhpcy5vbGRQb3NlTWF0dGVycG9ydFBvc2l0aW9uID0ge1xyXG4gICAgICAgIC4uLnBvc2VNYXR0ZXJwb3J0LnBvc2l0aW9uLFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wb2ludGVyQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RGlzdFBvc2l0aW9uKHNkazogYW55LCBjb250YWluZXI6IGFueSwgcG9zZUNhbWVyYTogYW55LCBwb3MxOiBhbnksIHBvczI6IGFueSkge1xyXG4gICAgaWYgKCFwb3MxIHx8ICFwb3MyKSByZXR1cm4gMTAwOyAvLyBGb3JjZSB1cGRhdGUgaWYgb25lIGlzIG1pc3NpbmdcclxuICAgIGNvbnN0IHNpemUgPSB7XHJcbiAgICAgIHc6IGNvbnRhaW5lci5jbGllbnRXaWR0aCxcclxuICAgICAgaDogY29udGFpbmVyLmNsaWVudEhlaWdodCxcclxuICAgIH07XHJcbiAgICBjb25zdCBjb29yZHMxID0gc2RrLkNvbnZlcnNpb24ud29ybGRUb1NjcmVlbihwb3MxLCBwb3NlQ2FtZXJhLCBzaXplKTtcclxuICAgIGNvbnN0IGNvb3JkczIgPSBzZGsuQ29udmVyc2lvbi53b3JsZFRvU2NyZWVuKHBvczIsIHBvc2VDYW1lcmEsIHNpemUpO1xyXG4gICAgcmV0dXJuIE1hdGguc3FydChcclxuICAgICAgKGNvb3JkczEueCAtIGNvb3JkczIueCkgKiogMiArIChjb29yZHMxLnkgLSBjb29yZHMyLnkpICoqIDJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDdXJzb3JEaXNwbGF5KHBvc2VNYXR0ZXJwb3J0OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnRleHREaXNwbGF5Q3Vyc29yUG9zaXRpb25QYW5lbCAmJiBwb3NlTWF0dGVycG9ydCkge1xyXG4gICAgICB0aGlzLnRleHREaXNwbGF5Q3Vyc29yUG9zaXRpb25QYW5lbC5pbm5lckhUTUwgPSBgcG9zaXRpb246XHJcbiAgICAgICAgICAgJHtwb2ludFRvU3RyaW5nKHBvc2VNYXR0ZXJwb3J0LnBvc2l0aW9uKX1cXG5cclxuICAgICAgICAgICBub3JtYWw6XHJcbiAgICAgICAgICAgJHtwb2ludFRvU3RyaW5nKHBvc2VNYXR0ZXJwb3J0Lm5vcm1hbCl9XFxuXHJcbiAgICAgICAgICAgZmxvb3JJZDpcclxuICAgICAgICAgICAke3Bvc2VNYXR0ZXJwb3J0LmZsb29ySWR9YDtcclxuICAgICAgaWYgKHRoaXMuZ2V0Q3Vyc29yUG9zaXRpb25CdXR0b24pIHtcclxuICAgICAgICB0aGlzLmdldEN1cnNvclBvc2l0aW9uQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyKGNhbGxiYWNrczoge1xyXG4gICAgb25MZWZ0Q2xpY2s6IChldnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XHJcbiAgICBvblJpZ2h0Q2xpY2s6IChldnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XHJcbiAgICBvbk1pZGRsZUNsaWNrOiAoZXZ0OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xyXG4gIH0pIHtcclxuICAgIGlmICh0aGlzLnBvaW50ZXJCdXR0b24pIHtcclxuICAgICAgdGhpcy5wb2ludGVyQnV0dG9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2FsbGJhY2tzLm9uTGVmdENsaWNrKTtcclxuICAgICAgdGhpcy5wb2ludGVyQnV0dG9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgY2FsbGJhY2tzLm9uUmlnaHRDbGljayk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5nZXRDdXJzb3JQb3NpdGlvbkJ1dHRvbikge1xyXG4gICAgICB0aGlzLmdldEN1cnNvclBvc2l0aW9uQnV0dG9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2FsbGJhY2tzLm9uTWlkZGxlQ2xpY2spO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdG9wUG9pbnRlclRyaWNrKCk7XHJcbiAgICB0aGlzLnN0b3BBZG1pbkN1cnNvclRyYWNrZXIoKTtcclxuICB9XHJcblxyXG4gIHNldEN1cnNvclBvc2l0aW9uQnV0dG9uRGlzcGxheWVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmN1cnNvclBvc2l0aW9uQnV0dG9uRGlzcGxheWVkID0gdmFsdWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==