@wavemaker/app-ng-runtime 11.14.3-rc.6401 → 11.15.0-2.247

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 (177) hide show
  1. package/build-task/bundles/index.umd.js +13 -2
  2. package/build-task/esm2022/input/default/checkbox/checkbox.build.mjs +9 -2
  3. package/build-task/esm2022/input/default/radioset/radioset.build.mjs +6 -2
  4. package/build-task/fesm2022/index.mjs +13 -2
  5. package/build-task/fesm2022/index.mjs.map +1 -1
  6. package/components/base/bundles/index.umd.js +271 -128
  7. package/components/base/esm2022/public_api.mjs +2 -2
  8. package/components/base/esm2022/utils/autolayout-utils.mjs +252 -0
  9. package/components/base/esm2022/utils/live-utils.mjs +10 -7
  10. package/components/base/esm2022/utils/widget-utils.mjs +8 -1
  11. package/components/base/esm2022/widgets/common/base/base.component.mjs +7 -8
  12. package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +4 -1
  13. package/components/base/esm2022/widgets/common/container/container.directive.mjs +28 -150
  14. package/components/base/esm2022/widgets/common/container/container.props.mjs +6 -2
  15. package/components/base/fesm2022/index.mjs +273 -129
  16. package/components/base/fesm2022/index.mjs.map +1 -1
  17. package/components/base/public_api.d.ts +1 -1
  18. package/components/base/utils/autolayout-utils.d.ts +29 -0
  19. package/components/base/utils/widget-utils.d.ts +1 -0
  20. package/components/base/widgets/common/container/container.directive.d.ts +7 -9
  21. package/components/basic/label/bundles/index.umd.js +4 -0
  22. package/components/basic/label/esm2022/label.directive.mjs +5 -1
  23. package/components/basic/label/fesm2022/index.mjs +4 -0
  24. package/components/basic/label/fesm2022/index.mjs.map +1 -1
  25. package/components/basic/search/bundles/index.umd.js +13 -11
  26. package/components/basic/search/esm2022/search.component.mjs +14 -12
  27. package/components/basic/search/fesm2022/index.mjs +13 -11
  28. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  29. package/components/chart/bundles/index.umd.js +2 -2
  30. package/components/chart/esm2022/chart.utils.mjs +3 -3
  31. package/components/chart/fesm2022/index.mjs +2 -2
  32. package/components/chart/fesm2022/index.mjs.map +1 -1
  33. package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +2 -0
  34. package/components/containers/accordion/accordion.directive.d.ts +4 -0
  35. package/components/containers/accordion/bundles/index.umd.js +34 -0
  36. package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +6 -2
  37. package/components/containers/accordion/esm2022/accordion.directive.mjs +32 -2
  38. package/components/containers/accordion/fesm2022/index.mjs +36 -2
  39. package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  40. package/components/containers/tabs/bundles/index.umd.js +34 -0
  41. package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +6 -2
  42. package/components/containers/tabs/esm2022/tabs.component.mjs +33 -4
  43. package/components/containers/tabs/fesm2022/index.mjs +36 -2
  44. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  45. package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +2 -0
  46. package/components/containers/tabs/tabs.component.d.ts +5 -1
  47. package/components/containers/wizard/bundles/index.umd.js +46 -2
  48. package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +8 -2
  49. package/components/containers/wizard/esm2022/wizard.component.mjs +42 -4
  50. package/components/containers/wizard/fesm2022/index.mjs +48 -4
  51. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  52. package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +4 -0
  53. package/components/containers/wizard/wizard.component.d.ts +1 -0
  54. package/components/data/form/bundles/index.umd.js +28 -1
  55. package/components/data/form/esm2022/form-field/form-field.directive.mjs +4 -1
  56. package/components/data/form/esm2022/form.component.mjs +24 -2
  57. package/components/data/form/esm2022/form.props.mjs +3 -2
  58. package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +2 -1
  59. package/components/data/form/fesm2022/index.mjs +29 -2
  60. package/components/data/form/fesm2022/index.mjs.map +1 -1
  61. package/components/data/form/form.component.d.ts +3 -0
  62. package/components/data/list/bundles/index.umd.js +0 -9
  63. package/components/data/list/esm2022/list-item.directive.mjs +1 -10
  64. package/components/data/list/fesm2022/index.mjs +0 -9
  65. package/components/data/list/fesm2022/index.mjs.map +1 -1
  66. package/components/data/pagination/bundles/index.umd.js +6 -2
  67. package/components/data/pagination/esm2022/pagination.component.mjs +7 -3
  68. package/components/data/pagination/fesm2022/index.mjs +6 -2
  69. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  70. package/components/data/table/bundles/index.umd.js +22 -5
  71. package/components/data/table/esm2022/table.component.mjs +23 -6
  72. package/components/data/table/fesm2022/index.mjs +22 -5
  73. package/components/data/table/fesm2022/index.mjs.map +1 -1
  74. package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +6 -2
  75. package/components/dialogs/alert-dialog/bundles/index.umd.js +18 -8
  76. package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +17 -7
  77. package/components/dialogs/alert-dialog/fesm2022/index.mjs +15 -5
  78. package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  79. package/components/input/checkbox/bundles/index.umd.js +12 -3
  80. package/components/input/checkbox/checkbox.component.d.ts +2 -0
  81. package/components/input/checkbox/esm2022/checkbox.component.mjs +9 -3
  82. package/components/input/checkbox/esm2022/checkbox.props.mjs +5 -2
  83. package/components/input/checkbox/fesm2022/index.mjs +12 -3
  84. package/components/input/checkbox/fesm2022/index.mjs.map +1 -1
  85. package/components/input/checkboxset/bundles/index.umd.js +12 -1
  86. package/components/input/checkboxset/checkboxset.component.d.ts +1 -0
  87. package/components/input/checkboxset/esm2022/checkboxset.component.mjs +11 -1
  88. package/components/input/checkboxset/esm2022/checkboxset.props.mjs +3 -2
  89. package/components/input/checkboxset/fesm2022/index.mjs +12 -1
  90. package/components/input/checkboxset/fesm2022/index.mjs.map +1 -1
  91. package/components/input/epoch/base-date-time/base-date-time.component.d.ts +0 -1
  92. package/components/input/epoch/base-date-time/bundles/index.umd.js +29 -27
  93. package/components/input/epoch/base-date-time/esm2022/base-date-time.component.mjs +30 -28
  94. package/components/input/epoch/base-date-time/fesm2022/index.mjs +29 -27
  95. package/components/input/epoch/base-date-time/fesm2022/index.mjs.map +1 -1
  96. package/components/input/epoch/date/bundles/index.umd.js +4 -3
  97. package/components/input/epoch/date/esm2022/date.component.mjs +5 -4
  98. package/components/input/epoch/date/fesm2022/index.mjs +4 -3
  99. package/components/input/epoch/date/fesm2022/index.mjs.map +1 -1
  100. package/components/input/epoch/date-time/bundles/index.umd.js +5 -4
  101. package/components/input/epoch/date-time/esm2022/date-time.component.mjs +7 -6
  102. package/components/input/epoch/date-time/fesm2022/index.mjs +6 -5
  103. package/components/input/epoch/date-time/fesm2022/index.mjs.map +1 -1
  104. package/components/input/file-upload/bundles/index.umd.js +1 -1
  105. package/components/input/file-upload/esm2022/file-upload.props.mjs +2 -2
  106. package/components/input/file-upload/fesm2022/index.mjs +1 -1
  107. package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  108. package/components/input/radioset/bundles/index.umd.js +13 -1
  109. package/components/input/radioset/esm2022/radioset.component.mjs +11 -1
  110. package/components/input/radioset/esm2022/radioset.props.mjs +4 -2
  111. package/components/input/radioset/fesm2022/index.mjs +13 -1
  112. package/components/input/radioset/fesm2022/index.mjs.map +1 -1
  113. package/components/input/radioset/radioset.component.d.ts +1 -0
  114. package/components/input/slider/bundles/index.umd.js +86 -16
  115. package/components/input/slider/esm2022/slider.component.mjs +76 -9
  116. package/components/input/slider/esm2022/slider.props.mjs +5 -1
  117. package/components/input/slider/fesm2022/index.mjs +79 -8
  118. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  119. package/components/input/slider/slider.component.d.ts +12 -3
  120. package/components/input/text/bundles/index.umd.js +28 -3
  121. package/components/input/text/esm2022/input-text/input-text.component.mjs +10 -3
  122. package/components/input/text/esm2022/input-text/input-text.props.mjs +5 -2
  123. package/components/input/text/esm2022/number-locale/number-locale.mjs +16 -1
  124. package/components/input/text/fesm2022/index.mjs +28 -3
  125. package/components/input/text/fesm2022/index.mjs.map +1 -1
  126. package/components/input/text/input-text/input-text.component.d.ts +5 -0
  127. package/components/input/text/number-locale/number-locale.d.ts +12 -0
  128. package/components/navigation/breadcrumb/bundles/index.umd.js +2 -2
  129. package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +3 -3
  130. package/components/navigation/breadcrumb/fesm2022/index.mjs +2 -2
  131. package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  132. package/components/navigation/popover/bundles/index.umd.js +12 -0
  133. package/components/navigation/popover/esm2022/popover.component.mjs +13 -1
  134. package/components/navigation/popover/fesm2022/index.mjs +12 -0
  135. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  136. package/components/navigation/popover/popover.component.d.ts +2 -0
  137. package/components/page/default/bundles/index.umd.js +0 -4
  138. package/components/page/default/esm2022/router-outlet.directive.mjs +1 -5
  139. package/components/page/default/fesm2022/index.mjs +0 -4
  140. package/components/page/default/fesm2022/index.mjs.map +1 -1
  141. package/components/page/header/bundles/index.umd.js +4 -3
  142. package/components/page/header/esm2022/header.component.mjs +5 -4
  143. package/components/page/header/fesm2022/index.mjs +4 -3
  144. package/components/page/header/fesm2022/index.mjs.map +1 -1
  145. package/components/page/header/header.component.d.ts +2 -1
  146. package/core/bundles/index.umd.js +90 -6
  147. package/core/enums/enums.d.ts +1 -0
  148. package/core/esm2022/enums/enums.mjs +2 -1
  149. package/core/esm2022/utils/build-utils.mjs +5 -1
  150. package/core/esm2022/utils/utils.mjs +5 -2
  151. package/core/esm2022/utils/watcher.mjs +83 -4
  152. package/core/fesm2022/index.mjs +91 -4
  153. package/core/fesm2022/index.mjs.map +1 -1
  154. package/core/utils/watcher.d.ts +2 -0
  155. package/npm-shrinkwrap.json +2 -2
  156. package/oAuth/esm2022/oAuth.service.mjs +1 -1
  157. package/oAuth/fesm2022/index.mjs.map +1 -1
  158. package/oAuth/oAuth.service.d.ts +1 -1
  159. package/package-lock.json +2 -2
  160. package/package.json +1 -1
  161. package/runtime/base/bundles/index.umd.js +33 -31
  162. package/runtime/base/components/base-prefab.component.d.ts +6 -4
  163. package/runtime/base/esm2022/components/app-component/app.component.mjs +1 -1
  164. package/runtime/base/esm2022/components/base-page.component.mjs +2 -5
  165. package/runtime/base/esm2022/components/base-partial.component.mjs +2 -2
  166. package/runtime/base/esm2022/components/base-prefab.component.mjs +20 -12
  167. package/runtime/base/esm2022/components/base-spa-page.component.mjs +1 -4
  168. package/runtime/base/esm2022/services/http-interceptor.services.mjs +14 -13
  169. package/runtime/base/fesm2022/index.mjs +34 -31
  170. package/runtime/base/fesm2022/index.mjs.map +1 -1
  171. package/runtime/base/runtime-base.module.d.ts +2 -1
  172. package/runtime/dynamic/app/app.config.d.ts +1 -1
  173. package/runtime/dynamic/bundles/index.umd.js +1 -1
  174. package/runtime/dynamic/esm2022/app/app.config.mjs +7 -7
  175. package/runtime/dynamic/fesm2022/index.mjs +2 -2
  176. package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  177. package/scripts/datatable/datatable.js +17 -15
@@ -259,10 +259,7 @@ export class BasePageComponent extends FragmentMonitor {
259
259
  ngOnDestroy() {
260
260
  // MEMORY LEAK FIX: Unwatch all Page-scoped watchers for THIS specific page when page is destroyed
261
261
  if (this.pageName) {
262
- const removedCount = $unwatchAllByScope('Page', this.pageName);
263
- if (removedCount > 0) {
264
- console.log(`🧹 Cleaned up ${removedCount} Page-scoped watcher(s) for page ${this.pageName}`);
265
- }
262
+ $unwatchAllByScope('Page', this.pageName);
266
263
  }
267
264
  //this.captureApplicationThumbnail();
268
265
  this.savePageSnapShot();
@@ -387,4 +384,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
387
384
  type: HostListener,
388
385
  args: ['window:beforeunload']
389
386
  }] } });
390
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9iYXNlLXBhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFHTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsR0FBRyxFQUNILHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFlBQVksRUFDWixJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsWUFBWSxFQUNaLFFBQVEsRUFDWCxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRCxPQUFPLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFNdkMsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxlQUFlO0lBRC9EOztRQWtCSSwyQkFBc0IsR0FBRyxL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SUFBSSxFQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1IsSUFBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVDLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM5QyxDQUFDO0lBQ0wsQ0FBQzsrR0FwYmlCLGlCQUFpQjttR0FBakIsaUJBQWlCLDRJQW1CeEIsYUFBYTs7NEZBbkJOLGlCQUFpQjtrQkFEdEMsU0FBUzs4QkFvQm9CLGFBQWE7c0JBQXRDLFNBQVM7dUJBQUMsYUFBYTtnQkFpUHhCLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1xuICAgICR1bndhdGNoQWxsQnlTY29wZSxcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsXG4gICAgQXBwLFxuICAgIGdldFdtUHJvamVjdFByb3BlcnRpZXMsXG4gICAgaXNBbmRyb2lkLFxuICAgIGlzSW9zLFxuICAgIG11dGVXYXRjaGVycyxcbiAgICBub29wLFxuICAgIHJlZ2lzdGVyRm5CeUV4cHIsXG4gICAgU2NyaXB0TG9hZGVyU2VydmljZSxcbiAgICB1bk11dGVXYXRjaGVycyxcbiAgICBVdGlsc1NlcnZpY2UsXG4gICAgVmlld3BvcnRcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtQYWdlRGlyZWN0aXZlfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlJztcblxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y29tbW9uUGFydGlhbFdpZGdldHN9IGZyb20gJy4vYmFzZS1wYXJ0aWFsLmNvbXBvbmVudCc7XG5cblxuaW1wb3J0IHtWYXJpYWJsZXNTZXJ2aWNlfSBmcm9tICdAd20vdmFyaWFibGVzJztcbmltcG9ydCB7QXBwTWFuYWdlclNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2FwcC5tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtGcmFnbWVudE1vbml0b3J9IGZyb20gJy4uL3V0aWwvZnJhZ21lbnQtbW9uaXRvcic7XG5pbXBvcnQge0NBQ0hFX1BBR0V9IGZyb20gJy4uL3V0aWwvd20tcm91dGUtcmV1c2Utc3RyYXRlZ3knO1xuaW1wb3J0IHtlYWNoLCBleHRlbmR9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZGVjbGFyZSBjb25zdCAkO1xuZGVjbGFyZSBjb25zdCBodG1sMmNhbnZhcztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVBhZ2VDb21wb25lbnQgZXh0ZW5kcyBGcmFnbWVudE1vbml0b3IgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICAgIHN0YXRpYyBsYXN0UGFnZVNuYXBTaG90ID0gbnVsbDtcbiAgICBXaWRnZXRzOiBhbnk7XG4gICAgVmFyaWFibGVzOiBhbnk7XG4gICAgQWN0aW9uczogYW55O1xuICAgIEFwcDogQXBwO1xuICAgIGluamVjdG9yOiBJbmplY3RvcjtcbiAgICBwYWdlTmFtZTogc3RyaW5nO1xuICAgIGFjdGl2ZVBhZ2VOYW1lOiBzdHJpbmc7XG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICAgIGFwcE1hbmFnZXI6IEFwcE1hbmFnZXJTZXJ2aWNlO1xuICAgIG5hdmlnYXRpb25TZXJ2aWNlOiBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlO1xuICAgIHJvdXRlcjogUm91dGVyO1xuICAgIHBhZ2VQYXJhbXM6IGFueTtcbiAgICBzaG93UGFnZUNvbnRlbnQ6IGJvb2xlYW47XG4gICAgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2U7XG4gICAgYXBwTG9jYWxlOiBhbnk7XG4gICAgc3RhcnR1cFZhcmlhYmxlc0xvYWRlZCA9IGZhbHNlO1xuICAgIHBhZ2VUcmFuc2l0aW9uQ29tcGxldGVkID0gZmFsc2U7XG4gICAgQFZpZXdDaGlsZChQYWdlRGlyZWN0aXZlKSBwYWdlRGlyZWN0aXZlO1xuICAgICRwYWdlO1xuICAgIHNjcmlwdExvYWRlclNlcnZpY2U6IFNjcmlwdExvYWRlclNlcnZpY2U7XG4gICAgVmlld3BvcnQ6IFZpZXdwb3J0O1xuXG4gICAgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICAgIHZpZXdJbml0JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgZm9ybWF0c0J5TG9jYWxlID0geyd0aW1lem9uZSc6ICcnfTtcblxuXG4gICAgYWJzdHJhY3QgZXZhbFVzZXJTY3JpcHQocHJlZmFiQ29udGV4dDogYW55LCBhcHBDb250ZXh0OiBhbnksIHV0aWxzOiBhbnkpO1xuICAgIGFic3RyYWN0IGdldFZhcmlhYmxlcygpO1xuICAgIGFic3RyYWN0IGdldEV4cHJlc3Npb25zKCk7XG5cbiAgICBpbml0KCkge1xuXG4gICAgICAgIG11dGVXYXRjaGVycygpO1xuXG4gICAgICAgIHRoaXMuQXBwID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcCkgOiBpbmplY3QoQXBwKTtcbiAgICAgICAgdGhpcy5yb3V0ZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBY3RpdmF0ZWRSb3V0ZSkgOiBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXIgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQXBwTWFuYWdlclNlcnZpY2UpIDogaW5qZWN0KEFwcE1hbmFnZXJTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlKSA6IGluamVjdChBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFNjcmlwdExvYWRlclNlcnZpY2UpIDogaW5qZWN0KFNjcmlwdExvYWRlclNlcnZpY2UpO1xuICAgICAgICB0aGlzLmkxOG5TZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFic3RyYWN0STE4blNlcnZpY2UpIDogaW5qZWN0KEFic3RyYWN0STE4blNlcnZpY2UpO1xuICAgICAgICB0aGlzLnJvdXRlciA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpIDogaW5qZWN0KFJvdXRlcik7XG4gICAgICAgIHRoaXMuVmlld3BvcnQgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVmlld3BvcnQpIDogaW5qZWN0KFZpZXdwb3J0KTtcblxuICAgICAgICAvLyByZWdpc3RlciBmdW5jdGlvbnMgZm9yIGJpbmRpbmcgZXZhbHVhdGlvblxuICAgICAgICB0aGlzLnJlZ2lzdGVyRXhwcmVzc2lvbnMoKTtcbiAgICAgICAgdGhpcy5pbml0VXNlclNjcmlwdCgpO1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJXaWRnZXRzKCk7XG4gICAgICAgIHRoaXMuaW5pdFZhcmlhYmxlcygpO1xuXG4gICAgICAgIHRoaXMuQXBwLmxhc3RBY3RpdmVQYWdlTmFtZSA9IHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lO1xuICAgICAgICB0aGlzLkFwcC5hY3RpdmVQYWdlTmFtZSA9IHRoaXMucGFnZU5hbWU7XG4gICAgICAgIHRoaXMuQXBwLmFjdGl2ZVBhZ2UgPSB0aGlzO1xuICAgICAgICB0aGlzLmFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5wYWdlTmFtZTsgLy8gVG9kbzogcmVtb3ZlIHRoaXNcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyUGFnZVBhcmFtcygpO1xuICAgICAgICB0aGlzLmRlZmluZUkxOG5Qcm9wcygpO1xuICAgICAgICBzdXBlci5pbml0KCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJXaWRnZXRzKCkge1xuICAgICAgICAvLyBjb21tb24gcGFydGlhbCB3aWRnZXRzIHNob3VsZCBiZSBhY2Nlc3NpYmxlIGZyb20gcGFnZVxuICAgICAgICB0aGlzLldpZGdldHMgPSBPYmplY3QuY3JlYXRlKGNvbW1vblBhcnRpYWxXaWRnZXRzKTtcblxuICAgICAgICAvLyBleHBvc2UgY3VycmVudCBwYWdlIHdpZGdldHMgb24gYXBwXG4gICAgICAgICh0aGlzLkFwcCBhcyBhbnkpLldpZGdldHMgPSBPYmplY3QuY3JlYXRlKHRoaXMuV2lkZ2V0cyk7XG4gICAgfVxuXG4gICAgaW5pdFVzZXJTY3JpcHQoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmV2YWxVc2VyU2NyaXB0KHRoaXMsIHRoaXMuQXBwLCB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVXRpbHNTZXJ2aWNlKSA6IGluamVjdChVdGlsc1NlcnZpY2UpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgaW4gZXZhbHVhdGluZyBwYWdlICgke3RoaXMucGFnZU5hbWV9KSBzY3JpcHRcXG5gLCBlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyUGFnZVBhcmFtcygpIHtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHRoaXMucGFnZVBhcmFtcyA9ICh0aGlzLkFwcCBhcyBhbnkpLnBhZ2VQYXJhbXMgPSBleHRlbmQoe30sIHBhcmFtcykpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICByZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihmbjogRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4gZm4oKSk7XG4gICAgfVxuXG4gICAgZGVmaW5lSTE4blByb3BzKCkge1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IHRoaXMuaTE4blNlcnZpY2UuZ2V0QXBwTG9jYWxlKCk7XG4gICAgfVxuXG4gICAgaW5pdFZhcmlhYmxlcygpIHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVzU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChWYXJpYWJsZXNTZXJ2aWNlKSA6IGluamVjdChWYXJpYWJsZXNTZXJ2aWNlKTtcblxuICAgICAgICAvLyBnZXQgdmFyaWFibGVzIGFuZCBhY3Rpb25zIGluc3RhbmNlcyBmb3IgdGhlIHBhZ2VcbiAgICAgICAgY29uc3QgdmFyaWFibGVDb2xsZWN0aW9uID0gdmFyaWFibGVzU2VydmljZS5yZWdpc3Rlcih0aGlzLnBhZ2VOYW1lLCB0aGlzLmdldFZhcmlhYmxlcygpLCB0aGlzKTtcblxuICAgICAgICAvLyBjcmVhdGUgbmFtZXNwYWNlIGZvciBWYXJpYWJsZXMgbmFkIEFjdGlvbnMgb24gcGFnZS9wYXJ0aWFsLCB3aGljaCBpbmhlcml0cyB0aGUgVmFyaWFibGVzIGFuZCBBY3Rpb25zIGZyb20gQXBwIGluc3RhbmNlXG4gICAgICAgIHRoaXMuVmFyaWFibGVzID0gT2JqZWN0LmNyZWF0ZSh0aGlzLkFwcC5WYXJpYWJsZXMpO1xuICAgICAgICB0aGlzLkFjdGlvbnMgPSBPYmplY3QuY3JlYXRlKHRoaXMuQXBwLkFjdGlvbnMpO1xuXG4gICAgICAgIC8vIGFzc2lnbiBhbGwgdGhlIHBhZ2UgdmFyaWFibGVzIHRvIHRoZSBwYWdlSW5zdGFuY2VcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVDb2xsZWN0aW9uLlZhcmlhYmxlcykuZm9yRWFjaCgoW25hbWUsIHZhcmlhYmxlXSkgPT4gdGhpcy5WYXJpYWJsZXNbbmFtZV0gPSB2YXJpYWJsZSk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlQ29sbGVjdGlvbi5BY3Rpb25zKS5mb3JFYWNoKChbbmFtZSwgYWN0aW9uXSkgPT4gdGhpcy5BY3Rpb25zW25hbWVdID0gYWN0aW9uKTtcblxuXG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy52aWV3SW5pdCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmFwcE1hbmFnZXIuaXNBcHBWYXJpYWJsZXNGaXJlZCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVDb2xsZWN0aW9uLmNhbGxiYWNrKHRoaXMuQXBwLlZhcmlhYmxlcykuY2F0Y2gobm9vcCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwTWFuYWdlci5ub3RpZnkoJ2FwcC12YXJpYWJsZXMtZGF0YS1sb2FkZWQnLCB7cGFnZU5hbWU6IHRoaXMucGFnZU5hbWV9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodGhpcy5BcHAuQWN0aW9ucyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLmFwcFZhcmlhYmxlc1JlYWR5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLmlzQXBwVmFyaWFibGVzRmlyZWQodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhcmlhYmxlQ29sbGVjdGlvbi5jYWxsYmFjayh2YXJpYWJsZUNvbGxlY3Rpb24uVmFyaWFibGVzKVxuICAgICAgICAgICAgICAgIC5jYXRjaChub29wKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgncGFnZS12YXJpYWJsZXMtZGF0YS1sb2FkZWQnLCB7cGFnZU5hbWU6IHRoaXMucGFnZU5hbWV9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydHVwVmFyaWFibGVzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaGlkZSB0aGUgbG9hZGVyIG9ubHkgYWZ0ZXIgdGhlIHNvbWUgc2V0VGltZW91dCBmb3Igc21vb3RoIHBhZ2UgbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpO1xuXG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0VGltZXpvbmUobG9jYWxlKSB7XG4gICAgICAgIHRoaXMuaTE4blNlcnZpY2Uuc2V0VGltZXpvbmUobG9jYWxlLCB0aGlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmdW5jdGlvbiB0byByZWdpc3RlciBiaW5kIGV4cHJlc3Npb25zIGdlbmVyYXRlZCBpbiB0aGlzIHBhZ2UgaW5zdGFuY2VcbiAgICAgKiBnZXRFeHByZXNzaW9ucyBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHRoZSBnZW5lcmF0ZWQgcGFnZS5jb21wLnRzIGZpbGVcbiAgICAgKiBAcGFyYW0gZXhwcmVzc2lvbnMsIG1hcCBvZiBiaW5kIGV4cHJlc3Npb24gdnMgZ2VuZXJhdGVkIGZ1bmN0aW9uXG4gICAgICovXG4gICAgcmVnaXN0ZXJFeHByZXNzaW9ucygpIHtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbnMgPSB0aGlzLmdldEV4cHJlc3Npb25zKCk7XG4gICAgICAgIGVhY2goZXhwcmVzc2lvbnMsIChmbiwgZXhwcikgPT4ge1xuICAgICAgICAgICAgcmVnaXN0ZXJGbkJ5RXhwcihleHByLCBmblswXSwgZm5bMV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBydW5QYWdlVHJhbnNpdGlvbih0cmFuc2l0aW9uPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyYW5zaXRpb24gPSB0cmFuc2l0aW9uIHx8IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0UGFnZVRyYW5zaXRpb24oKTtcbiAgICAgICAgY29uc3QgbGFzdFBhZ2UgPSBCYXNlUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uXG4gICAgICAgICAgICAgICAgJiYgIXRyYW5zaXRpb24uc3RhcnRzV2l0aCgnbm9uZScpXG4gICAgICAgICAgICAgICAgJiYgbGFzdFBhZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCAkdGFyZ2V0ID0gbGFzdFBhZ2UucGFyZW50KCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb25UcmFuc2l0aW9uRW5kID0gKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmUgJiYgIShlICYmIGUucHNldWRvRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXQub2ZmKCdhbmltYXRpb25lbmQnLCBvblRyYW5zaXRpb25FbmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldC5yZW1vdmVDbGFzcyh0cmFuc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXQuY2hpbGRyZW4oKS5maXJzdCgpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24gPSAncGFnZS10cmFuc2l0aW9uIHBhZ2UtdHJhbnNpdGlvbi0nICsgdHJhbnNpdGlvbjtcbiAgICAgICAgICAgICAgICBsYXN0UGFnZS5hZGRDbGFzcygncGFnZS1leGl0Jyk7XG4gICAgICAgICAgICAgICAgdGhpcy4kcGFnZS5hZGRDbGFzcygncGFnZS1lbnRyeScpO1xuICAgICAgICAgICAgICAgICR0YXJnZXQuYWRkQ2xhc3ModHJhbnNpdGlvbik7XG4gICAgICAgICAgICAgICAgJHRhcmdldC5vbignYW5pbWF0aW9uZW5kJywgb25UcmFuc2l0aW9uRW5kKTtcbiAgICAgICAgICAgICAgICAvLyBXYWl0IGZvciBhIG1heGltdW0gb2YgMSBzZWNvbmQgZm9yIHRyYW5zaXRpb24gdG8gZW5kLlxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQob25UcmFuc2l0aW9uRW5kLCAxMDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuJHBhZ2UgJiYgdGhpcy4kcGFnZS5yZW1vdmVDbGFzcygncGFnZS1lbnRyeScpO1xuICAgICAgICAgICAgaWYgKGxhc3RQYWdlKSB7XG4gICAgICAgICAgICAgICAgbGFzdFBhZ2UucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgQmFzZVBhZ2VDb21wb25lbnQubGFzdFBhZ2VTbmFwU2hvdCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBhZ2VUcmFuc2l0aW9uQ29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW52b2tlT25SZWFkeSgpIHtcbiAgICAgICAgdGhpcy5vblJlYWR5KCk7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlci5ub3RpZnkoJ3BhZ2VSZWFkeScsIHsnbmFtZScgOiB0aGlzLnBhZ2VOYW1lLCBpbnN0YW5jZTogdGhpc30pO1xuICAgICAgICAodGhpcy5BcHAub25QYWdlUmVhZHkgfHwgbm9vcCkodGhpcy5wYWdlTmFtZSwgdGhpcyk7XG5cbiAgICAgICAgY29uc3QgaG9tZVBhZ2UgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCk/LmhvbWVQYWdlO1xuICAgICAgICBpZiAod2luZG93LnRvcC5uYW1lICE9PSB3aW5kb3cubmFtZSAmJiBob21lUGFnZSA9PT0gdGhpcy5wYWdlTmFtZSkge1xuICAgICAgICAgICAgd2luZG93LnRvcC5wb3N0TWVzc2FnZSh7a2V5OiAnb25Ib21lcGFnZUxvYWQnfSwgXCIqXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkU2NyaXB0cygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzY3JpcHRzUmVxdWlyZWQgPSB0aGlzLnBhZ2VEaXJlY3RpdmUgJiYgdGhpcy5wYWdlRGlyZWN0aXZlLiRlbGVtZW50LmF0dHIoJ3NjcmlwdHMtdG8tbG9hZCcpO1xuICAgICAgICAgICAgaWYgKHNjcmlwdHNSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NyaXB0TG9hZGVyU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAubG9hZCguLi5zY3JpcHRzUmVxdWlyZWQuc3BsaXQoJywnKSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXN0b3JlTGFzdFBhZ2VTbmFwc2hvdCgpIHt9XG5cbiAgICBwcml2YXRlIHNhdmVQYWdlU25hcFNob3QoKSB7XG4gICAgICAgIGlmIChCYXNlUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90KSB7XG4gICAgICAgICAgICBCYXNlUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90LnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlU2Nyb2xsUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGZuID0gKCRlbCwga2V5LCByZWN1cnNpdmUgPSB0cnVlLCAkdGFyZ2V0ID0gJGVsKSAgPT4ge1xuICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICRlbC5jaGlsZHJlbigpLmVhY2goKGksIHYpID0+IGZuKCQodiksIGtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB4OiAkdGFyZ2V0LnNjcm9sbExlZnQoKSxcbiAgICAgICAgICAgICAgICB5OiAkdGFyZ2V0LnNjcm9sbFRvcCgpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYoc2Nyb2xsRGF0YS54ID4gMCB8fCBzY3JvbGxEYXRhLnkgPiAwKSB7XG4gICAgICAgICAgICAgICAgJGVsLmF0dHIoa2V5LCBzY3JvbGxEYXRhLnggKyAnLCcgKyBzY3JvbGxEYXRhLnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBmbih0aGlzLiRwYWdlLCAnZGF0YS1zY3JvbGwtcG9zaXRpb24nKTtcbiAgICAgICAgdGhpcy4kcGFnZS5hdHRyKCdkYXRhLXdpbmRvdy1zY3JvbGwtcG9zaXRpb24nLCB3aW5kb3cuc2Nyb2xsWCArICcsJyArIHdpbmRvdy5zY3JvbGxZKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3QgZm4gPSAoJGVsLCBrZXksIHJlY3Vyc2l2ZSAgPSB0cnVlLCAkdGFyZ2V0ID0gJGVsKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxEYXRhID0gKCRlbC5hdHRyKGtleSkgfHwgJycpLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICBpZihzY3JvbGxEYXRhLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAkdGFyZ2V0LnNjcm9sbExlZnQoc2Nyb2xsRGF0YVswXSk7XG4gICAgICAgICAgICAgICAgJHRhcmdldC5zY3JvbGxUb3Aoc2Nyb2xsRGF0YVsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkZWwucmVtb3ZlQXR0cihrZXkpO1xuICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICRlbC5jaGlsZHJlbigpLmVhY2goKGksIHYpID0+IGZuKCQodiksIGtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBmbih0aGlzLiRwYWdlLCAnZGF0YS1zY3JvbGwtcG9zaXRpb24nKTtcbiAgICAgICAgZm4odGhpcy4kcGFnZSwgJ2RhdGEtd2luZG93LXNjcm9sbC1wb3NpdGlvbicsIGZhbHNlLCAkKHdpbmRvdykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNhbkRlYWN0aXZhdGUgaXMgY2FsbGVkIGJlZm9yZSBhIHJvdXRlIGNoYW5nZS5cbiAgICAgKiBUaGlzIHdpbGwgaW50ZXJuYWxseSBjYWxsIG9uQmVmb3JlUGFnZUxlYXZlIG1ldGhvZCBwcmVzZW50XG4gICAgICogYXQgcGFnZSBsZXZlbCBhbmQgYXBwIGxldmVsIGluIHRoZSBhcHBsaWNhdGlvbiBhbmQgZGVjaWRlXG4gICAgICogd2hldGhlciB0byBjaGFuZ2Ugcm91dGUgb3Igbm90IGJhc2VkIG9uIHJldHVybiB2YWx1ZS5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJylcbiAgICBjYW5EZWFjdGl2YXRlKG5leHRTdGF0ZT86IHN0cmluZyl7XG4gICAgICAgIGxldCByZXRWYWw7XG4gICAgICAgIC8vIENhbGxpbmcgb25CZWZvcmVQYWdlTGVhdmUgbWV0aG9kIHByZXNlbnQgYXQgcGFnZSBsZXZlbFxuICAgICAgICByZXRWYWwgPSB0aGlzLm9uQmVmb3JlUGFnZUxlYXZlKCk7XG4gICAgICAgIC8vIENhbGxpbmcgb25CZWZvcmVQYWdlTGVhdmUgbWV0aG9kIHByZXNlbnQgYXQgYXBwIGxldmVsIG9ubHkgaWYgcGFnZSBsZXZlbCBtZXRob2QgcmV0dXJuIHRydWVcbiAgICAgICAgLy8gb3IgaWYgdGhlcmUgaXMgbm8gcGFnZSBsZXZlbCBtZXRob2RcbiAgICAgICAgaWYgKHJldFZhbCAhPT0gZmFsc2UgKSB7XG4gICAgICAgICAgICByZXRWYWwgPSAgKHRoaXMuQXBwLm9uQmVmb3JlUGFnZUxlYXZlIHx8IG5vb3ApKHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lLCB0aGlzLkFwcC5hY3RpdmVQYWdlLCBuZXh0U3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWwgPT09IHVuZGVmaW5lZCA/IHRydWUgOiByZXRWYWw7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbQ0FDSEVfUEFHRV0gPSB0aGlzLmNhblJldXNlKCk7XG4gICAgICAgIGlmICh0aGlzLnBhZ2VEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuJHBhZ2UgPSB0aGlzLnBhZ2VEaXJlY3RpdmUuJGVsZW1lbnQucGFyZW50KCk7XG4gICAgICAgICAgICBpZiAoaXNJb3MoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHBhZ2UuYWRkQ2xhc3MoJ2lvcy1wYWdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNBbmRyb2lkKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRwYWdlLmFkZENsYXNzKCdhbmRyb2lkLXBhZ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc3RvcmVMYXN0UGFnZVNuYXBzaG90KCk7XG4gICAgICAgIHRoaXMubG9hZFNjcmlwdHMoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucnVuUGFnZVRyYW5zaXRpb24oKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMgYXMgYW55KS5jb21waWxlUGFnZUNvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25QYWdlQ29udGVudFJlYWR5ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZnJhZ21lbnRzTG9hZGVkJC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9rZU9uUmVhZHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bk11dGVXYXRjaGVycygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0luaXQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblBhZ2VDb250ZW50UmVhZHkgPSBub29wO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFVud2F0Y2ggYWxsIFBhZ2Utc2NvcGVkIHdhdGNoZXJzIGZvciBUSElTIHNwZWNpZmljIHBhZ2Ugd2hlbiBwYWdlIGlzIGRlc3Ryb3llZFxuICAgICAgICBpZiAodGhpcy5wYWdlTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgcmVtb3ZlZENvdW50ID0gJHVud2F0Y2hBbGxCeVNjb3BlKCdQYWdlJywgdGhpcy5wYWdlTmFtZSk7XG4gICAgICAgICAgICBpZiAocmVtb3ZlZENvdW50ID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGDwn6e5IENsZWFuZWQgdXAgJHtyZW1vdmVkQ291bnR9IFBhZ2Utc2NvcGVkIHdhdGNoZXIocykgZm9yIHBhZ2UgJHt0aGlzLnBhZ2VOYW1lfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vdGhpcy5jYXB0dXJlQXBwbGljYXRpb25UaHVtYm5haWwoKTtcbiAgICAgICAgdGhpcy5zYXZlUGFnZVNuYXBTaG90KCk7XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDb21wbGV0ZSBTdWJqZWN0cyB0byByZWxlYXNlIHN1YnNjcmlwdGlvbnNcbiAgICAgICAgaWYgKHRoaXMuZGVzdHJveSQpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnZpZXdJbml0JCkge1xuICAgICAgICAgICAgdGhpcy52aWV3SW5pdCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIHRoaXMudmlld0luaXQkID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ2xlYXIgcmVmZXJlbmNlcyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrc1xuICAgICAgICB0aGlzLldpZGdldHMgPSBudWxsO1xuICAgICAgICB0aGlzLlZhcmlhYmxlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuQWN0aW9ucyA9IG51bGw7XG4gICAgICAgIHRoaXMuQXBwID0gbnVsbDtcbiAgICAgICAgdGhpcy5yb3V0ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlciA9IG51bGw7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UgPSBudWxsO1xuICAgICAgICB0aGlzLnJvdXRlciA9IG51bGw7XG4gICAgICAgIHRoaXMucGFnZVBhcmFtcyA9IG51bGw7XG4gICAgICAgIHRoaXMuaTE4blNlcnZpY2UgPSBudWxsO1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IG51bGw7XG4gICAgICAgIHRoaXMucGFnZURpcmVjdGl2ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuJHBhZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLnNjcmlwdExvYWRlclNlcnZpY2UgPSBudWxsO1xuICAgICAgICB0aGlzLlZpZXdwb3J0ID0gbnVsbDtcblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFudXAgRnJhZ21lbnRNb25pdG9yIHJlc291cmNlc1xuICAgICAgICB0aGlzLmNsZWFudXBGcmFnbWVudE1vbml0b3IoKTtcbiAgICB9XG5cbiAgICBjYXB0dXJlQXBwbGljYXRpb25UaHVtYm5haWwoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzO1xuICAgICAgICBsZXQgY2FwdHVyZUFwcGxpY2F0aW9uVGh1bWJuYWlsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXB0dXJlQXBwbGljYXRpb25UaHVtYm5haWxcIikgPT09IFwidHJ1ZVwiID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICBpZiAoY2FwdHVyZUFwcGxpY2F0aW9uVGh1bWJuYWlsICYmIHRoaXMuQXBwLmxhbmRpbmdQYWdlTmFtZSA9PT0gdGhpcy5wYWdlTmFtZSAmJiAhKDxhbnk+dGhpcykuQXBwLmlzQXBwbGljYXRpb25UaHVtYm5haWxDYXB0dXJlZCkge1xuICAgICAgICAgICAgaHRtbDJjYW52YXMoZG9jdW1lbnQuYm9keSlcbiAgICAgICAgICAgICAgICAudGhlbihjYW52YXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgKDxhbnk+cm9vdCkuQXBwLmlzQXBwbGljYXRpb25UaHVtYm5haWxDYXB0dXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzY3JlZW5zaG90VXJsID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHNjcmVlbnNob3RVcmwpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBhLmhyZWYgPSBzY3JlZW5zaG90VXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYS5kb3dubG9hZCA9IFwic2NyZWVuc2hvdC5qcGdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGh0bWwyY2FudmFzIHRoZW4gYmxvY2s6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBodG1sMmNhbnZhcyBwcm9taXNlOicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25SZWFkeSgpIHt9XG5cbiAgICBvbkJlZm9yZVBhZ2VSZWFkeSgpIHt9XG5cbiAgICBvbkJlZm9yZVBhZ2VMZWF2ZSgpIHt9XG5cbiAgICBvblBhZ2VDb250ZW50UmVhZHkoKSB7fVxuXG4gICAgY2FuUmV1c2UoKSB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLnBhZ2VEaXJlY3RpdmUgJiYgdGhpcy5wYWdlRGlyZWN0aXZlLmNhY2hlKTtcbiAgICB9XG5cbiAgICBtdXRlKCkge1xuICAgICAgICBjb25zdCBtID0gbyA9PiB7IG8gJiYgby5tdXRlICYmIG8ubXV0ZSgpOyB9O1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgbSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIG0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgbSk7XG4gICAgfVxuXG4gICAgdW5tdXRlKGMgPSB0aGlzKSB7XG4gICAgICAgIGNvbnN0IHVtID0gbyA9PiB7IG8gJiYgby51bm11dGUgJiYgby51bm11dGUoKTsgfTtcbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHVtKTtcbiAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgdW0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgdW0pO1xuICAgIH1cblxuICAgIG5nT25BdHRhY2goKSB7XG4gICAgICAgIHRoaXMucm91dGUuc25hcHNob3QuZGF0YVtDQUNIRV9QQUdFXSA9IHRoaXMuY2FuUmV1c2UoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclBhZ2VQYXJhbXMoKTtcbiAgICAgICAgdGhpcy5BcHAubGFzdEFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5BcHAuYWN0aXZlUGFnZU5hbWU7XG4gICAgICAgIHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5wYWdlTmFtZTtcbiAgICAgICAgdGhpcy5BcHAuYWN0aXZlUGFnZSA9IHRoaXM7XG4gICAgICAgIHRoaXMuYWN0aXZlUGFnZU5hbWUgPSB0aGlzLnBhZ2VOYW1lO1xuICAgICAgICB0aGlzLnJlc3RvcmVMYXN0UGFnZVNuYXBzaG90KCk7XG4gICAgICAgIHRoaXMudW5tdXRlKCk7XG4gICAgICAgIC8vIGV4cG9zZSBjdXJyZW50IHBhZ2Ugd2lkZ2V0cyBvbiBhcHBcbiAgICAgICAgKHRoaXMuQXBwIGFzIGFueSkuV2lkZ2V0cyA9IE9iamVjdC5jcmVhdGUodGhpcy5XaWRnZXRzKTtcbiAgICAgICAgaWYodGhpcy5wYWdlRGlyZWN0aXZlICYmIHRoaXMucGFnZURpcmVjdGl2ZS5yZWZyZXNoZGF0YW9uYXR0YWNoKSB7XG4gICAgICAgICAgICBjb25zdCByZWZyZXNoID0gdiA9PiB7IHYgJiYgdi5zdGFydFVwZGF0ZSAmJiB2Lmludm9rZSAmJiB2Lmludm9rZSgpOyB9O1xuICAgICAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgcmVmcmVzaCk7XG4gICAgICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgcmVmcmVzaCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ydW5QYWdlVHJhbnNpdGlvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCAxMDApO1xuICAgICAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHcgPT4gdyAmJiB3Lm5nT25BdHRhY2ggJiYgdy5uZ09uQXR0YWNoKCkpO1xuICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgncGFnZUF0dGFjaCcsIHsnbmFtZScgOiB0aGlzLnBhZ2VOYW1lLCBpbnN0YW5jZTogdGhpc30pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGV0YWNoKCkge1xuICAgICAgICB0aGlzLnNhdmVTY3JvbGxQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLnNhdmVQYWdlU25hcFNob3QoKTtcbiAgICAgICAgdGhpcy5tdXRlKCk7XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB3ID0+IHcgJiYgdy5uZ09uRGV0YWNoICYmIHcubmdPbkRldGFjaCgpKTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgncGFnZURldGFjaCcsIHsnbmFtZScgOiB0aGlzLnBhZ2VOYW1lLCBpbnN0YW5jZTogdGhpc30pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5vbkJlZm9yZVBhZ2VSZWFkeSgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBjbGVhcigpIHtcbiAgICAgICAgaWYoQmFzZVBhZ2VDb21wb25lbnQubGFzdFBhZ2VTbmFwU2hvdCkge1xuICAgICAgICAgICAgQmFzZVBhZ2VDb21wb25lbnQubGFzdFBhZ2VTbmFwU2hvdC5yZW1vdmUoKTtcbiAgICAgICAgICAgIEJhc2VQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3QgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
387
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9iYXNlLXBhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFHTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsR0FBRyxFQUNILHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFlBQVksRUFDWixJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsWUFBWSxFQUNaLFFBQVEsRUFDWCxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRCxPQUFPLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFNdkMsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxlQUFlO0lBRC9EOztRQWtCSSwyQkFBc0IsR0FBRyxL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QUUsQ0FBQztZQUNwQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QyxpQkFBaUIsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDOUMsQ0FBQztJQUNMLENBQUM7K0dBamJpQixpQkFBaUI7bUdBQWpCLGlCQUFpQiw0SUFtQnhCLGFBQWE7OzRGQW5CTixpQkFBaUI7a0JBRHRDLFNBQVM7OEJBb0JvQixhQUFhO3NCQUF0QyxTQUFTO3VCQUFDLGFBQWE7Z0JBaVB4QixhQUFhO3NCQURaLFlBQVk7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtcbiAgICAkdW53YXRjaEFsbEJ5U2NvcGUsXG4gICAgQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIEFwcCxcbiAgICBnZXRXbVByb2plY3RQcm9wZXJ0aWVzLFxuICAgIGlzQW5kcm9pZCxcbiAgICBpc0lvcyxcbiAgICBtdXRlV2F0Y2hlcnMsXG4gICAgbm9vcCxcbiAgICByZWdpc3RlckZuQnlFeHByLFxuICAgIFNjcmlwdExvYWRlclNlcnZpY2UsXG4gICAgdW5NdXRlV2F0Y2hlcnMsXG4gICAgVXRpbHNTZXJ2aWNlLFxuICAgIFZpZXdwb3J0XG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7UGFnZURpcmVjdGl2ZX0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcGFnZSc7XG5cbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NvbW1vblBhcnRpYWxXaWRnZXRzfSBmcm9tICcuL2Jhc2UtcGFydGlhbC5jb21wb25lbnQnO1xuXG5cbmltcG9ydCB7VmFyaWFibGVzU2VydmljZX0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5pbXBvcnQge0FwcE1hbmFnZXJTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHAubWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7RnJhZ21lbnRNb25pdG9yfSBmcm9tICcuLi91dGlsL2ZyYWdtZW50LW1vbml0b3InO1xuaW1wb3J0IHtDQUNIRV9QQUdFfSBmcm9tICcuLi91dGlsL3dtLXJvdXRlLXJldXNlLXN0cmF0ZWd5JztcbmltcG9ydCB7ZWFjaCwgZXh0ZW5kfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmRlY2xhcmUgY29uc3QgJDtcbmRlY2xhcmUgY29uc3QgaHRtbDJjYW52YXM7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VQYWdlQ29tcG9uZW50IGV4dGVuZHMgRnJhZ21lbnRNb25pdG9yIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBzdGF0aWMgbGFzdFBhZ2VTbmFwU2hvdCA9IG51bGw7XG4gICAgV2lkZ2V0czogYW55O1xuICAgIFZhcmlhYmxlczogYW55O1xuICAgIEFjdGlvbnM6IGFueTtcbiAgICBBcHA6IEFwcDtcbiAgICBpbmplY3RvcjogSW5qZWN0b3I7XG4gICAgcGFnZU5hbWU6IHN0cmluZztcbiAgICBhY3RpdmVQYWdlTmFtZTogc3RyaW5nO1xuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcbiAgICBhcHBNYW5hZ2VyOiBBcHBNYW5hZ2VyU2VydmljZTtcbiAgICBuYXZpZ2F0aW9uU2VydmljZTogQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZTtcbiAgICByb3V0ZXI6IFJvdXRlcjtcbiAgICBwYWdlUGFyYW1zOiBhbnk7XG4gICAgc2hvd1BhZ2VDb250ZW50OiBib29sZWFuO1xuICAgIGkxOG5TZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlO1xuICAgIGFwcExvY2FsZTogYW55O1xuICAgIHN0YXJ0dXBWYXJpYWJsZXNMb2FkZWQgPSBmYWxzZTtcbiAgICBwYWdlVHJhbnNpdGlvbkNvbXBsZXRlZCA9IGZhbHNlO1xuICAgIEBWaWV3Q2hpbGQoUGFnZURpcmVjdGl2ZSkgcGFnZURpcmVjdGl2ZTtcbiAgICAkcGFnZTtcbiAgICBzY3JpcHRMb2FkZXJTZXJ2aWNlOiBTY3JpcHRMb2FkZXJTZXJ2aWNlO1xuICAgIFZpZXdwb3J0OiBWaWV3cG9ydDtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgICB2aWV3SW5pdCQgPSBuZXcgU3ViamVjdCgpO1xuICAgIGZvcm1hdHNCeUxvY2FsZSA9IHsndGltZXpvbmUnOiAnJ307XG5cblxuICAgIGFic3RyYWN0IGV2YWxVc2VyU2NyaXB0KHByZWZhYkNvbnRleHQ6IGFueSwgYXBwQ29udGV4dDogYW55LCB1dGlsczogYW55KTtcbiAgICBhYnN0cmFjdCBnZXRWYXJpYWJsZXMoKTtcbiAgICBhYnN0cmFjdCBnZXRFeHByZXNzaW9ucygpO1xuXG4gICAgaW5pdCgpIHtcblxuICAgICAgICBtdXRlV2F0Y2hlcnMoKTtcblxuICAgICAgICB0aGlzLkFwcCA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBcHApIDogaW5qZWN0KEFwcCk7XG4gICAgICAgIHRoaXMucm91dGUgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQWN0aXZhdGVkUm91dGUpIDogaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcE1hbmFnZXJTZXJ2aWNlKSA6IGluamVjdChBcHBNYW5hZ2VyU2VydmljZSk7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSkgOiBpbmplY3QoQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSk7XG4gICAgICAgIHRoaXMuc2NyaXB0TG9hZGVyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChTY3JpcHRMb2FkZXJTZXJ2aWNlKSA6IGluamVjdChTY3JpcHRMb2FkZXJTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5pMThuU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBYnN0cmFjdEkxOG5TZXJ2aWNlKSA6IGluamVjdChBYnN0cmFjdEkxOG5TZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKSA6IGluamVjdChSb3V0ZXIpO1xuICAgICAgICB0aGlzLlZpZXdwb3J0ID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFZpZXdwb3J0KSA6IGluamVjdChWaWV3cG9ydCk7XG5cbiAgICAgICAgLy8gcmVnaXN0ZXIgZnVuY3Rpb25zIGZvciBiaW5kaW5nIGV2YWx1YXRpb25cbiAgICAgICAgdGhpcy5yZWdpc3RlckV4cHJlc3Npb25zKCk7XG4gICAgICAgIHRoaXMuaW5pdFVzZXJTY3JpcHQoKTtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyV2lkZ2V0cygpO1xuICAgICAgICB0aGlzLmluaXRWYXJpYWJsZXMoKTtcblxuICAgICAgICB0aGlzLkFwcC5sYXN0QWN0aXZlUGFnZU5hbWUgPSB0aGlzLkFwcC5hY3RpdmVQYWdlTmFtZTtcbiAgICAgICAgdGhpcy5BcHAuYWN0aXZlUGFnZU5hbWUgPSB0aGlzLnBhZ2VOYW1lO1xuICAgICAgICB0aGlzLkFwcC5hY3RpdmVQYWdlID0gdGhpcztcbiAgICAgICAgdGhpcy5hY3RpdmVQYWdlTmFtZSA9IHRoaXMucGFnZU5hbWU7IC8vIFRvZG86IHJlbW92ZSB0aGlzXG5cbiAgICAgICAgdGhpcy5yZWdpc3RlclBhZ2VQYXJhbXMoKTtcbiAgICAgICAgdGhpcy5kZWZpbmVJMThuUHJvcHMoKTtcbiAgICAgICAgc3VwZXIuaW5pdCgpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyV2lkZ2V0cygpIHtcbiAgICAgICAgLy8gY29tbW9uIHBhcnRpYWwgd2lkZ2V0cyBzaG91bGQgYmUgYWNjZXNzaWJsZSBmcm9tIHBhZ2VcbiAgICAgICAgdGhpcy5XaWRnZXRzID0gT2JqZWN0LmNyZWF0ZShjb21tb25QYXJ0aWFsV2lkZ2V0cyk7XG5cbiAgICAgICAgLy8gZXhwb3NlIGN1cnJlbnQgcGFnZSB3aWRnZXRzIG9uIGFwcFxuICAgICAgICAodGhpcy5BcHAgYXMgYW55KS5XaWRnZXRzID0gT2JqZWN0LmNyZWF0ZSh0aGlzLldpZGdldHMpO1xuICAgIH1cblxuICAgIGluaXRVc2VyU2NyaXB0KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5ldmFsVXNlclNjcmlwdCh0aGlzLCB0aGlzLkFwcCwgdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFV0aWxzU2VydmljZSkgOiBpbmplY3QoVXRpbHNTZXJ2aWNlKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGluIGV2YWx1YXRpbmcgcGFnZSAoJHt0aGlzLnBhZ2VOYW1lfSkgc2NyaXB0XFxuYCwgZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3RlclBhZ2VQYXJhbXMoKSB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB0aGlzLnBhZ2VQYXJhbXMgPSAodGhpcy5BcHAgYXMgYW55KS5wYWdlUGFyYW1zID0gZXh0ZW5kKHt9LCBwYXJhbXMpKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoZm46IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IGZuKCkpO1xuICAgIH1cblxuICAgIGRlZmluZUkxOG5Qcm9wcygpIHtcbiAgICAgICAgdGhpcy5hcHBMb2NhbGUgPSB0aGlzLmkxOG5TZXJ2aWNlLmdldEFwcExvY2FsZSgpO1xuICAgIH1cblxuICAgIGluaXRWYXJpYWJsZXMoKSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVmFyaWFibGVzU2VydmljZSkgOiBpbmplY3QoVmFyaWFibGVzU2VydmljZSk7XG5cbiAgICAgICAgLy8gZ2V0IHZhcmlhYmxlcyBhbmQgYWN0aW9ucyBpbnN0YW5jZXMgZm9yIHRoZSBwYWdlXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlQ29sbGVjdGlvbiA9IHZhcmlhYmxlc1NlcnZpY2UucmVnaXN0ZXIodGhpcy5wYWdlTmFtZSwgdGhpcy5nZXRWYXJpYWJsZXMoKSwgdGhpcyk7XG5cbiAgICAgICAgLy8gY3JlYXRlIG5hbWVzcGFjZSBmb3IgVmFyaWFibGVzIG5hZCBBY3Rpb25zIG9uIHBhZ2UvcGFydGlhbCwgd2hpY2ggaW5oZXJpdHMgdGhlIFZhcmlhYmxlcyBhbmQgQWN0aW9ucyBmcm9tIEFwcCBpbnN0YW5jZVxuICAgICAgICB0aGlzLlZhcmlhYmxlcyA9IE9iamVjdC5jcmVhdGUodGhpcy5BcHAuVmFyaWFibGVzKTtcbiAgICAgICAgdGhpcy5BY3Rpb25zID0gT2JqZWN0LmNyZWF0ZSh0aGlzLkFwcC5BY3Rpb25zKTtcblxuICAgICAgICAvLyBhc3NpZ24gYWxsIHRoZSBwYWdlIHZhcmlhYmxlcyB0byB0aGUgcGFnZUluc3RhbmNlXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlQ29sbGVjdGlvbi5WYXJpYWJsZXMpLmZvckVhY2goKFtuYW1lLCB2YXJpYWJsZV0pID0+IHRoaXMuVmFyaWFibGVzW25hbWVdID0gdmFyaWFibGUpO1xuICAgICAgICBPYmplY3QuZW50cmllcyh2YXJpYWJsZUNvbGxlY3Rpb24uQWN0aW9ucykuZm9yRWFjaCgoW25hbWUsIGFjdGlvbl0pID0+IHRoaXMuQWN0aW9uc1tuYW1lXSA9IGFjdGlvbik7XG5cblxuXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMudmlld0luaXQkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiB7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5hcHBNYW5hZ2VyLmlzQXBwVmFyaWFibGVzRmlyZWQoKSkge1xuICAgICAgICAgICAgICAgIHZhcmlhYmxlQ29sbGVjdGlvbi5jYWxsYmFjayh0aGlzLkFwcC5WYXJpYWJsZXMpLmNhdGNoKG5vb3ApLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIubm90aWZ5KCdhcHAtdmFyaWFibGVzLWRhdGEtbG9hZGVkJywge3BhZ2VOYW1lOiB0aGlzLnBhZ2VOYW1lfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVDb2xsZWN0aW9uLmNhbGxiYWNrKHRoaXMuQXBwLkFjdGlvbnMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwTWFuYWdlci5hcHBWYXJpYWJsZXNSZWFkeSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwTWFuYWdlci5pc0FwcFZhcmlhYmxlc0ZpcmVkKHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodmFyaWFibGVDb2xsZWN0aW9uLlZhcmlhYmxlcylcbiAgICAgICAgICAgICAgICAuY2F0Y2gobm9vcClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwTWFuYWdlci5ub3RpZnkoJ3BhZ2UtdmFyaWFibGVzLWRhdGEtbG9hZGVkJywge3BhZ2VOYW1lOiB0aGlzLnBhZ2VOYW1lfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnR1cFZhcmlhYmxlc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIC8vIGhpZGUgdGhlIGxvYWRlciBvbmx5IGFmdGVyIHRoZSBzb21lIHNldFRpbWVvdXQgZm9yIHNtb290aCBwYWdlIGxvYWQuXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyaWFibGVDb2xsZWN0aW9uLmNhbGxiYWNrKHZhcmlhYmxlQ29sbGVjdGlvbi5BY3Rpb25zKTtcblxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFRpbWV6b25lKGxvY2FsZSkge1xuICAgICAgICB0aGlzLmkxOG5TZXJ2aWNlLnNldFRpbWV6b25lKGxvY2FsZSwgdGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZnVuY3Rpb24gdG8gcmVnaXN0ZXIgYmluZCBleHByZXNzaW9ucyBnZW5lcmF0ZWQgaW4gdGhpcyBwYWdlIGluc3RhbmNlXG4gICAgICogZ2V0RXhwcmVzc2lvbnMgZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiB0aGUgZ2VuZXJhdGVkIHBhZ2UuY29tcC50cyBmaWxlXG4gICAgICogQHBhcmFtIGV4cHJlc3Npb25zLCBtYXAgb2YgYmluZCBleHByZXNzaW9uIHZzIGdlbmVyYXRlZCBmdW5jdGlvblxuICAgICAqL1xuICAgIHJlZ2lzdGVyRXhwcmVzc2lvbnMoKSB7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zID0gdGhpcy5nZXRFeHByZXNzaW9ucygpO1xuICAgICAgICBlYWNoKGV4cHJlc3Npb25zLCAoZm4sIGV4cHIpID0+IHtcbiAgICAgICAgICAgIHJlZ2lzdGVyRm5CeUV4cHIoZXhwciwgZm5bMF0sIGZuWzFdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcnVuUGFnZVRyYW5zaXRpb24odHJhbnNpdGlvbj86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cmFuc2l0aW9uID0gdHJhbnNpdGlvbiB8fCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldFBhZ2VUcmFuc2l0aW9uKCk7XG4gICAgICAgIGNvbnN0IGxhc3RQYWdlID0gQmFzZVBhZ2VDb21wb25lbnQubGFzdFBhZ2VTbmFwU2hvdFxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICBpZiAodHJhbnNpdGlvblxuICAgICAgICAgICAgICAgICYmICF0cmFuc2l0aW9uLnN0YXJ0c1dpdGgoJ25vbmUnKVxuICAgICAgICAgICAgICAgICYmIGxhc3RQYWdlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgJHRhcmdldCA9IGxhc3RQYWdlLnBhcmVudCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9uVHJhbnNpdGlvbkVuZCA9IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNvbHZlICYmICEoZSAmJiBlLnBzZXVkb0VsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0Lm9mZignYW5pbWF0aW9uZW5kJywgb25UcmFuc2l0aW9uRW5kKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXQucmVtb3ZlQ2xhc3ModHJhbnNpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0LmNoaWxkcmVuKCkuZmlyc3QoKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uID0gJ3BhZ2UtdHJhbnNpdGlvbiBwYWdlLXRyYW5zaXRpb24tJyArIHRyYW5zaXRpb247XG4gICAgICAgICAgICAgICAgbGFzdFBhZ2UuYWRkQ2xhc3MoJ3BhZ2UtZXhpdCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuJHBhZ2UuYWRkQ2xhc3MoJ3BhZ2UtZW50cnknKTtcbiAgICAgICAgICAgICAgICAkdGFyZ2V0LmFkZENsYXNzKHRyYW5zaXRpb24pO1xuICAgICAgICAgICAgICAgICR0YXJnZXQub24oJ2FuaW1hdGlvbmVuZCcsIG9uVHJhbnNpdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgYSBtYXhpbXVtIG9mIDEgc2Vjb25kIGZvciB0cmFuc2l0aW9uIHRvIGVuZC5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KG9uVHJhbnNpdGlvbkVuZCwgMTAwMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiRwYWdlICYmIHRoaXMuJHBhZ2UucmVtb3ZlQ2xhc3MoJ3BhZ2UtZW50cnknKTtcbiAgICAgICAgICAgIGlmIChsYXN0UGFnZSkge1xuICAgICAgICAgICAgICAgIGxhc3RQYWdlLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIEJhc2VQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3QgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wYWdlVHJhbnNpdGlvbkNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGludm9rZU9uUmVhZHkoKSB7XG4gICAgICAgIHRoaXMub25SZWFkeSgpO1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXIubm90aWZ5KCdwYWdlUmVhZHknLCB7J25hbWUnIDogdGhpcy5wYWdlTmFtZSwgaW5zdGFuY2U6IHRoaXN9KTtcbiAgICAgICAgKHRoaXMuQXBwLm9uUGFnZVJlYWR5IHx8IG5vb3ApKHRoaXMucGFnZU5hbWUsIHRoaXMpO1xuXG4gICAgICAgIGNvbnN0IGhvbWVQYWdlID0gZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpPy5ob21lUGFnZTtcbiAgICAgICAgaWYgKHdpbmRvdy50b3AubmFtZSAhPT0gd2luZG93Lm5hbWUgJiYgaG9tZVBhZ2UgPT09IHRoaXMucGFnZU5hbWUpIHtcbiAgICAgICAgICAgIHdpbmRvdy50b3AucG9zdE1lc3NhZ2Uoe2tleTogJ29uSG9tZXBhZ2VMb2FkJ30sIFwiKlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFNjcmlwdHMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NyaXB0c1JlcXVpcmVkID0gdGhpcy5wYWdlRGlyZWN0aXZlICYmIHRoaXMucGFnZURpcmVjdGl2ZS4kZWxlbWVudC5hdHRyKCdzY3JpcHRzLXRvLWxvYWQnKTtcbiAgICAgICAgICAgIGlmIChzY3JpcHRzUmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmlwdExvYWRlclNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLmxvYWQoLi4uc2NyaXB0c1JlcXVpcmVkLnNwbGl0KCcsJykpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc29sdmUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzdG9yZUxhc3RQYWdlU25hcHNob3QoKSB7fVxuXG4gICAgcHJpdmF0ZSBzYXZlUGFnZVNuYXBTaG90KCkge1xuICAgICAgICBpZiAoQmFzZVBhZ2VDb21wb25lbnQubGFzdFBhZ2VTbmFwU2hvdCkge1xuICAgICAgICAgICAgQmFzZVBhZ2VDb21wb25lbnQubGFzdFBhZ2VTbmFwU2hvdC5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2F2ZVNjcm9sbFBvc2l0aW9uKCkge1xuICAgICAgICBjb25zdCBmbiA9ICgkZWwsIGtleSwgcmVjdXJzaXZlID0gdHJ1ZSwgJHRhcmdldCA9ICRlbCkgID0+IHtcbiAgICAgICAgICAgIGlmIChyZWN1cnNpdmUpIHtcbiAgICAgICAgICAgICAgICAkZWwuY2hpbGRyZW4oKS5lYWNoKChpLCB2KSA9PiBmbigkKHYpLCBrZXkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbERhdGEgPSB7XG4gICAgICAgICAgICAgICAgeDogJHRhcmdldC5zY3JvbGxMZWZ0KCksXG4gICAgICAgICAgICAgICAgeTogJHRhcmdldC5zY3JvbGxUb3AoKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmKHNjcm9sbERhdGEueCA+IDAgfHwgc2Nyb2xsRGF0YS55ID4gMCkge1xuICAgICAgICAgICAgICAgICRlbC5hdHRyKGtleSwgc2Nyb2xsRGF0YS54ICsgJywnICsgc2Nyb2xsRGF0YS55KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZm4odGhpcy4kcGFnZSwgJ2RhdGEtc2Nyb2xsLXBvc2l0aW9uJyk7XG4gICAgICAgIHRoaXMuJHBhZ2UuYXR0cignZGF0YS13aW5kb3ctc2Nyb2xsLXBvc2l0aW9uJywgd2luZG93LnNjcm9sbFggKyAnLCcgKyB3aW5kb3cuc2Nyb2xsWSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGZuID0gKCRlbCwga2V5LCByZWN1cnNpdmUgID0gdHJ1ZSwgJHRhcmdldCA9ICRlbCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsRGF0YSA9ICgkZWwuYXR0cihrZXkpIHx8ICcnKS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgaWYoc2Nyb2xsRGF0YS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgJHRhcmdldC5zY3JvbGxMZWZ0KHNjcm9sbERhdGFbMF0pO1xuICAgICAgICAgICAgICAgICR0YXJnZXQuc2Nyb2xsVG9wKHNjcm9sbERhdGFbMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGVsLnJlbW92ZUF0dHIoa2V5KTtcbiAgICAgICAgICAgIGlmIChyZWN1cnNpdmUpIHtcbiAgICAgICAgICAgICAgICAkZWwuY2hpbGRyZW4oKS5lYWNoKChpLCB2KSA9PiBmbigkKHYpLCBrZXkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZm4odGhpcy4kcGFnZSwgJ2RhdGEtc2Nyb2xsLXBvc2l0aW9uJyk7XG4gICAgICAgIGZuKHRoaXMuJHBhZ2UsICdkYXRhLXdpbmRvdy1zY3JvbGwtcG9zaXRpb24nLCBmYWxzZSwgJCh3aW5kb3cpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjYW5EZWFjdGl2YXRlIGlzIGNhbGxlZCBiZWZvcmUgYSByb3V0ZSBjaGFuZ2UuXG4gICAgICogVGhpcyB3aWxsIGludGVybmFsbHkgY2FsbCBvbkJlZm9yZVBhZ2VMZWF2ZSBtZXRob2QgcHJlc2VudFxuICAgICAqIGF0IHBhZ2UgbGV2ZWwgYW5kIGFwcCBsZXZlbCBpbiB0aGUgYXBwbGljYXRpb24gYW5kIGRlY2lkZVxuICAgICAqIHdoZXRoZXIgdG8gY2hhbmdlIHJvdXRlIG9yIG5vdCBiYXNlZCBvbiByZXR1cm4gdmFsdWUuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcpXG4gICAgY2FuRGVhY3RpdmF0ZShuZXh0U3RhdGU/OiBzdHJpbmcpe1xuICAgICAgICBsZXQgcmV0VmFsO1xuICAgICAgICAvLyBDYWxsaW5nIG9uQmVmb3JlUGFnZUxlYXZlIG1ldGhvZCBwcmVzZW50IGF0IHBhZ2UgbGV2ZWxcbiAgICAgICAgcmV0VmFsID0gdGhpcy5vbkJlZm9yZVBhZ2VMZWF2ZSgpO1xuICAgICAgICAvLyBDYWxsaW5nIG9uQmVmb3JlUGFnZUxlYXZlIG1ldGhvZCBwcmVzZW50IGF0IGFwcCBsZXZlbCBvbmx5IGlmIHBhZ2UgbGV2ZWwgbWV0aG9kIHJldHVybiB0cnVlXG4gICAgICAgIC8vIG9yIGlmIHRoZXJlIGlzIG5vIHBhZ2UgbGV2ZWwgbWV0aG9kXG4gICAgICAgIGlmIChyZXRWYWwgIT09IGZhbHNlICkge1xuICAgICAgICAgICAgcmV0VmFsID0gICh0aGlzLkFwcC5vbkJlZm9yZVBhZ2VMZWF2ZSB8fCBub29wKSh0aGlzLkFwcC5hY3RpdmVQYWdlTmFtZSwgdGhpcy5BcHAuYWN0aXZlUGFnZSwgbmV4dFN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsID09PSB1bmRlZmluZWQgPyB0cnVlIDogcmV0VmFsO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhW0NBQ0hFX1BBR0VdID0gdGhpcy5jYW5SZXVzZSgpO1xuICAgICAgICBpZiAodGhpcy5wYWdlRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLiRwYWdlID0gdGhpcy5wYWdlRGlyZWN0aXZlLiRlbGVtZW50LnBhcmVudCgpO1xuICAgICAgICAgICAgaWYgKGlzSW9zKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRwYWdlLmFkZENsYXNzKCdpb3MtcGFnZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQW5kcm9pZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kcGFnZS5hZGRDbGFzcygnYW5kcm9pZC1wYWdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXN0b3JlTGFzdFBhZ2VTbmFwc2hvdCgpO1xuICAgICAgICB0aGlzLmxvYWRTY3JpcHRzKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJ1blBhZ2VUcmFuc2l0aW9uKClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzIGFzIGFueSkuY29tcGlsZVBhZ2VDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZUNvbnRlbnRSZWFkeSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZyYWdtZW50c0xvYWRlZCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VPblJlYWR5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5NdXRlV2F0Y2hlcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdJbml0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25QYWdlQ29udGVudFJlYWR5ID0gbm9vcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBVbndhdGNoIGFsbCBQYWdlLXNjb3BlZCB3YXRjaGVycyBmb3IgVEhJUyBzcGVjaWZpYyBwYWdlIHdoZW4gcGFnZSBpcyBkZXN0cm95ZWRcbiAgICAgICAgaWYgKHRoaXMucGFnZU5hbWUpIHtcbiAgICAgICAgICAgICR1bndhdGNoQWxsQnlTY29wZSgnUGFnZScsIHRoaXMucGFnZU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vdGhpcy5jYXB0dXJlQXBwbGljYXRpb25UaHVtYm5haWwoKTtcbiAgICAgICAgdGhpcy5zYXZlUGFnZVNuYXBTaG90KCk7XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDb21wbGV0ZSBTdWJqZWN0cyB0byByZWxlYXNlIHN1YnNjcmlwdGlvbnNcbiAgICAgICAgaWYgKHRoaXMuZGVzdHJveSQpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnZpZXdJbml0JCkge1xuICAgICAgICAgICAgdGhpcy52aWV3SW5pdCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIHRoaXMudmlld0luaXQkID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ2xlYXIgcmVmZXJlbmNlcyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrc1xuICAgICAgICB0aGlzLldpZGdldHMgPSBudWxsO1xuICAgICAgICB0aGlzLlZhcmlhYmxlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuQWN0aW9ucyA9IG51bGw7XG4gICAgICAgIHRoaXMuQXBwID0gbnVsbDtcbiAgICAgICAgdGhpcy5yb3V0ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlciA9IG51bGw7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UgPSBudWxsO1xuICAgICAgICB0aGlzLnJvdXRlciA9IG51bGw7XG4gICAgICAgIHRoaXMucGFnZVBhcmFtcyA9IG51bGw7XG4gICAgICAgIHRoaXMuaTE4blNlcnZpY2UgPSBudWxsO1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IG51bGw7XG4gICAgICAgIHRoaXMucGFnZURpcmVjdGl2ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuJHBhZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLnNjcmlwdExvYWRlclNlcnZpY2UgPSBudWxsO1xuICAgICAgICB0aGlzLlZpZXdwb3J0ID0gbnVsbDtcblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFudXAgRnJhZ21lbnRNb25pdG9yIHJlc291cmNlc1xuICAgICAgICB0aGlzLmNsZWFudXBGcmFnbWVudE1vbml0b3IoKTtcbiAgICB9XG5cbiAgICBjYXB0dXJlQXBwbGljYXRpb25UaHVtYm5haWwoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzO1xuICAgICAgICBsZXQgY2FwdHVyZUFwcGxpY2F0aW9uVGh1bWJuYWlsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXB0dXJlQXBwbGljYXRpb25UaHVtYm5haWxcIikgPT09IFwidHJ1ZVwiID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICBpZiAoY2FwdHVyZUFwcGxpY2F0aW9uVGh1bWJuYWlsICYmIHRoaXMuQXBwLmxhbmRpbmdQYWdlTmFtZSA9PT0gdGhpcy5wYWdlTmFtZSAmJiAhKDxhbnk+dGhpcykuQXBwLmlzQXBwbGljYXRpb25UaHVtYm5haWxDYXB0dXJlZCkge1xuICAgICAgICAgICAgaHRtbDJjYW52YXMoZG9jdW1lbnQuYm9keSlcbiAgICAgICAgICAgICAgICAudGhlbihjYW52YXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgKDxhbnk+cm9vdCkuQXBwLmlzQXBwbGljYXRpb25UaHVtYm5haWxDYXB0dXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzY3JlZW5zaG90VXJsID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHNjcmVlbnNob3RVcmwpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBhLmhyZWYgPSBzY3JlZW5zaG90VXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYS5kb3dubG9hZCA9IFwic2NyZWVuc2hvdC5qcGdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGh0bWwyY2FudmFzIHRoZW4gYmxvY2s6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBodG1sMmNhbnZhcyBwcm9taXNlOicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25SZWFkeSgpIHt9XG5cbiAgICBvbkJlZm9yZVBhZ2VSZWFkeSgpIHt9XG5cbiAgICBvbkJlZm9yZVBhZ2VMZWF2ZSgpIHt9XG5cbiAgICBvblBhZ2VDb250ZW50UmVhZHkoKSB7fVxuXG4gICAgY2FuUmV1c2UoKSB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLnBhZ2VEaXJlY3RpdmUgJiYgdGhpcy5wYWdlRGlyZWN0aXZlLmNhY2hlKTtcbiAgICB9XG5cbiAgICBtdXRlKCkge1xuICAgICAgICBjb25zdCBtID0gbyA9PiB7IG8gJiYgby5tdXRlICYmIG8ubXV0ZSgpOyB9O1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgbSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIG0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgbSk7XG4gICAgfVxuXG4gICAgdW5tdXRlKGMgPSB0aGlzKSB7XG4gICAgICAgIGNvbnN0IHVtID0gbyA9PiB7IG8gJiYgby51bm11dGUgJiYgby51bm11dGUoKTsgfTtcbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHVtKTtcbiAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgdW0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgdW0pO1xuICAgIH1cblxuICAgIG5nT25BdHRhY2goKSB7XG4gICAgICAgIHRoaXMucm91dGUuc25hcHNob3QuZGF0YVtDQUNIRV9QQUdFXSA9IHRoaXMuY2FuUmV1c2UoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclBhZ2VQYXJhbXMoKTtcbiAgICAgICAgdGhpcy5BcHAubGFzdEFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5BcHAuYWN0aXZlUGFnZU5hbWU7XG4gICAgICAgIHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5wYWdlTmFtZTtcbiAgICAgICAgdGhpcy5BcHAuYWN0aXZlUGFnZSA9IHRoaXM7XG4gICAgICAgIHRoaXMuYWN0aXZlUGFnZU5hbWUgPSB0aGlzLnBhZ2VOYW1lO1xuICAgICAgICB0aGlzLnJlc3RvcmVMYXN0UGFnZVNuYXBzaG90KCk7XG4gICAgICAgIHRoaXMudW5tdXRlKCk7XG4gICAgICAgIC8vIGV4cG9zZSBjdXJyZW50IHBhZ2Ugd2lkZ2V0cyBvbiBhcHBcbiAgICAgICAgKHRoaXMuQXBwIGFzIGFueSkuV2lkZ2V0cyA9IE9iamVjdC5jcmVhdGUodGhpcy5XaWRnZXRzKTtcbiAgICAgICAgaWYodGhpcy5wYWdlRGlyZWN0aXZlICYmIHRoaXMucGFnZURpcmVjdGl2ZS5yZWZyZXNoZGF0YW9uYXR0YWNoKSB7XG4gICAgICAgICAgICBjb25zdCByZWZyZXNoID0gdiA9PiB7IHYgJiYgdi5zdGFydFVwZGF0ZSAmJiB2Lmludm9rZSAmJiB2Lmludm9rZSgpOyB9O1xuICAgICAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgcmVmcmVzaCk7XG4gICAgICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgcmVmcmVzaCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ydW5QYWdlVHJhbnNpdGlvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCAxMDApO1xuICAgICAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHcgPT4gdyAmJiB3Lm5nT25BdHRhY2ggJiYgdy5uZ09uQXR0YWNoKCkpO1xuICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgncGFnZUF0dGFjaCcsIHsnbmFtZScgOiB0aGlzLnBhZ2VOYW1lLCBpbnN0YW5jZTogdGhpc30pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGV0YWNoKCkge1xuICAgICAgICB0aGlzLnNhdmVTY3JvbGxQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLnNhdmVQYWdlU25hcFNob3QoKTtcbiAgICAgICAgdGhpcy5tdXRlKCk7XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB3ID0+IHcgJiYgdy5uZ09uRGV0YWNoICYmIHcubmdPbkRldGFjaCgpKTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgncGFnZURldGFjaCcsIHsnbmFtZScgOiB0aGlzLnBhZ2VOYW1lLCBpbnN0YW5jZTogdGhpc30pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5vbkJlZm9yZVBhZ2VSZWFkeSgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBjbGVhcigpIHtcbiAgICAgICAgaWYoQmFzZVBhZ2VDb21wb25lbnQubGFzdFBhZ2VTbmFwU2hvdCkge1xuICAgICAgICAgICAgQmFzZVBhZ2VDb21wb25lbnQubGFzdFBhZ2VTbmFwU2hvdC5yZW1vdmUoKTtcbiAgICAgICAgICAgIEJhc2VQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3QgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -133,7 +133,7 @@ export class BasePartialComponent extends FragmentMonitor {
133
133
  }
134
134
  loadScripts() {
135
135
  return new Promise((resolve) => {
136
- const scriptsRequired = this.partialDirective.$element.attr('scripts-to-load');
136
+ const scriptsRequired = this.partialDirective?.$element.attr('scripts-to-load');
137
137
  if (scriptsRequired) {
138
138
  this.scriptLoaderService
139
139
  .load(...scriptsRequired.split(','))
@@ -229,4 +229,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
229
229
  type: ViewChild,
230
230
  args: [PartialDirective]
231
231
  }] } });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wYXJ0aWFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9iYXNlLXBhcnRpYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJSCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFDSCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUVuQixHQUFHLEVBQ0gsSUFBSSxFQUNKLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLGdCQUFnQixFQUNuQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFFL0IsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBR3ZDLE1BQU0sT0FBZ0Isb0JBQXFCLFNBQVEsZUFBZTtJQURsRTs7UUFzQkksbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHdkIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7S0FzUDdCO0lBOU9HLDBCQUEwQjtRQUN0QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLElBQUks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SUFBSSxDQUFDO1FBRXZCLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVSxDQUFDLFdBQVc7UUFDbEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBTztJQUNmLENBQUM7K0dBOVFpQixvQkFBb0I7bUdBQXBCLG9CQUFvQiw0RUFnQjNCLGdCQUFnQjs7NEZBaEJULG9CQUFvQjtrQkFEekMsU0FBUzs4QkFpQnVCLGdCQUFnQjtzQkFBNUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZCxcbiAgICBEaXJlY3RpdmUsXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICAkaW52b2tlV2F0Y2hlcnMsXG4gICAgJHVud2F0Y2hBbGxCeVNjb3BlLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSxcbiAgICBBcHAsXG4gICAgbm9vcCxcbiAgICBWaWV3cG9ydCxcbiAgICBTY3JpcHRMb2FkZXJTZXJ2aWNlLFxuICAgIFV0aWxzU2VydmljZSxcbiAgICByZWdpc3RlckZuQnlFeHByXG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IFBhcnRpYWxEaXJlY3RpdmUsIFdpZGdldFJlZn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBQYWdlRGlyZWN0aXZlLCBTcGFQYWdlRGlyZWN0aXZlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcGFnZSc7XG5pbXBvcnQge1ByZWZhYkRpcmVjdGl2ZX0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcHJlZmFiJztcbmltcG9ydCB7IFZhcmlhYmxlc1NlcnZpY2UgfSBmcm9tICdAd20vdmFyaWFibGVzJztcblxuaW1wb3J0IHsgRnJhZ21lbnRNb25pdG9yIH0gZnJvbSAnLi4vdXRpbC9mcmFnbWVudC1tb25pdG9yJztcbmltcG9ydCB7IEFwcE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwLm1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQge2VhY2h9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZXhwb3J0IGNvbnN0IGNvbW1vblBhcnRpYWxXaWRnZXRzID0ge307XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VQYXJ0aWFsQ29tcG9uZW50IGV4dGVuZHMgRnJhZ21lbnRNb25pdG9yIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBXaWRnZXRzOiBhbnk7XG4gICAgVmFyaWFibGVzOiBhbnk7XG4gICAgQWN0aW9uczogYW55O1xuICAgIEFwcDogQXBwO1xuICAgIGluamVjdG9yOiBJbmplY3RvcjtcbiAgICBwYXJ0aWFsTmFtZTogc3RyaW5nO1xuICAgIGFjdGl2ZVBhZ2VOYW1lOiBzdHJpbmc7XG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICAgIGFwcE1hbmFnZXI6IEFwcE1hbmFnZXJTZXJ2aWNlO1xuICAgIG5hdmlnYXRpb25TZXJ2aWNlOiBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlO1xuICAgIHJvdXRlcjogUm91dGVyO1xuICAgIHBhZ2VQYXJhbXM6IGFueTtcbiAgICBjb250YWluZXJXaWRnZXQ6IGFueTtcbiAgICBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZTtcbiAgICBhcHBMb2NhbGU6IGFueTtcbiAgICBAVmlld0NoaWxkKFBhcnRpYWxEaXJlY3RpdmUpIHBhcnRpYWxEaXJlY3RpdmU7XG4gICAgcGFnZURpcmVjdGl2ZTogUGFnZURpcmVjdGl2ZSB8IFNwYVBhZ2VEaXJlY3RpdmU7XG4gICAgUHJlZmFiOiBQcmVmYWJEaXJlY3RpdmU7XG4gICAgc2NyaXB0TG9hZGVyU2VydmljZTogU2NyaXB0TG9hZGVyU2VydmljZTtcbiAgICBWaWV3cG9ydDogVmlld3BvcnQ7XG4gICAgY29tcGlsZUNvbnRlbnQgPSBmYWxzZTtcbiAgICBzcGE6IGJvb2xlYW47XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgdmlld0luaXQkID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIHZpZXdQYXJlbnQ6IGFueTtcblxuICAgIGFic3RyYWN0IGV2YWxVc2VyU2NyaXB0KHByZWZhYkNvbnRleHQ6IGFueSwgYXBwQ29udGV4dDogYW55LCB1dGlsczogYW55KTtcblxuICAgIGFic3RyYWN0IGdldFZhcmlhYmxlcygpO1xuICAgIGFic3RyYWN0IGdldEV4cHJlc3Npb25zKCk7XG5cbiAgICBnZXRDb250YWluZXJXaWRnZXRJbmplY3RvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyV2lkZ2V0LmluaiB8fCB0aGlzLmNvbnRhaW5lcldpZGdldC5pbmplY3RvcjtcbiAgICB9XG5cbiAgICBpbml0KCkge1xuXG4gICAgICAgIHRoaXMuQXBwID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcCkgOiBpbmplY3QoQXBwKTtcbiAgICAgICAgLy9tYWtpbmcgdGhlIGNvZGUgY29tcGF0aWJsZSBpbiBib3RoIHRoZSBKSVQgYW5kIEFPVCBtb2Rlc1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldCA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChXaWRnZXRSZWYpIDogaW5qZWN0KFdpZGdldFJlZik7XG4gICAgICAgIHRoaXMuaTE4blNlcnZpY2UgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQWJzdHJhY3RJMThuU2VydmljZSkgOiBpbmplY3QoQWJzdHJhY3RJMThuU2VydmljZSk7XG4gICAgICAgIHRoaXMuc2NyaXB0TG9hZGVyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChTY3JpcHRMb2FkZXJTZXJ2aWNlKSA6IGluamVjdChTY3JpcHRMb2FkZXJTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5WaWV3cG9ydCA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChWaWV3cG9ydCkgOiBpbmplY3QoVmlld3BvcnQpO1xuICAgICAgICAvLyB0aGlzLnZpZXdDb250YWluZXJSZWYgPSB0aGlzLmdldENvbnRhaW5lcldpZGdldEluamVjdG9yKCkuZ2V0KFZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICAvLyBSZXBsYWNpbmcgdGhpcy5nZXRDb250YWluZXJXaWRnZXRJbmplY3RvcigpLnZpZXcuY29tcG9uZW50IGFzIHZpZXdQYXJlbnRcbiAgICAgICAgLy8gdGhpcy52aWV3UGFyZW50ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLnBhcmVudEluamVjdG9yLl9sVmlld1s4XTtcbiAgICAgICAgdGhpcy52aWV3UGFyZW50ID0gdGhpcy5jb250YWluZXJXaWRnZXQudmlld1BhcmVudDtcblxuICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50LnJlZ2lzdGVyRnJhZ21lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudmlld1BhcmVudC5yZWdpc3RlckZyYWdtZW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZWdpc3RlciBmdW5jdGlvbnMgZm9yIGJpbmRpbmcgZXZhbHVhdGlvblxuICAgICAgICB0aGlzLnJlZ2lzdGVyRXhwcmVzc2lvbnMoKTtcbiAgICAgICAgdGhpcy5pbml0VXNlclNjcmlwdCgpO1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJXaWRnZXRzKCk7XG4gICAgICAgIHRoaXMuaW5pdFZhcmlhYmxlcygpO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlUGFnZU5hbWUgPSB0aGlzLkFwcC5hY3RpdmVQYWdlTmFtZTsgLy8gVG9kbzogcmVtb3ZlIHRoaXNcbiAgICAgICAgdGhpcy5yZWdpc3RlclBhZ2VQYXJhbXMoKTtcblxuICAgICAgICB0aGlzLmRlZmluZUkxOG5Qcm9wcygpO1xuXG4gICAgICAgIHRoaXMudmlld0luaXQkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VQYXJhbXMgPSB0aGlzLmNvbnRhaW5lcldpZGdldC5wYXJ0aWFsUGFyYW1zO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZih0aGlzLnNwYSkge1xuICAgICAgICAgICAgdGhpcy5wYWdlRGlyZWN0aXZlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFNwYVBhZ2VEaXJlY3RpdmUpIDogaW5qZWN0KFNwYVBhZ2VEaXJlY3RpdmUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wYWdlRGlyZWN0aXZlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFBhZ2VEaXJlY3RpdmUpIDogaW5qZWN0KFBhZ2VEaXJlY3RpdmUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBhZ2VEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIodGhpcy5wYWdlRGlyZWN0aXZlLnN1YnNjcmliZSgnYXR0YWNoJywgZGF0YSA9PiB0aGlzLm5nT25BdHRhY2goZGF0YS5yZWZyZXNoRGF0YSkpKTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIodGhpcy5wYWdlRGlyZWN0aXZlLnN1YnNjcmliZSgnZGV0YWNoJywgKCkgPT4gdGhpcy5uZ09uRGV0YWNoKCkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLmluaXQoKTtcbiAgICB9XG5cbiAgICByZWdpc3RlcldpZGdldHMoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcnRpYWxOYW1lID09PSAnQ29tbW9uJykge1xuICAgICAgICAgICAgdGhpcy5XaWRnZXRzID0gY29tbW9uUGFydGlhbFdpZGdldHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLldpZGdldHMgPSBPYmplY3QuY3JlYXRlKGNvbW1vblBhcnRpYWxXaWRnZXRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LldpZGdldHMgPSB0aGlzLldpZGdldHM7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoZm46IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IGZuKCkpO1xuICAgIH1cblxuICAgIGluaXRVc2VyU2NyaXB0KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gcGFydGlhbHMgaW5zaWRlIHByZWZhYiBzaG91bGQgaGF2ZSBhY2Nlc3MgdG8gUHJlZmFiIHByb3BlcnRpZXMgYW5kIGV2ZW50c1xuICAgICAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudC5wcmVmYWJOYW1lKSB7XG4gICAgICAgICAgICAgICAgLy8gZm9yIHBhcnRpYWwgd2l0aGluIHBhcnRpYWwgd2l0aGluIHByZWZhYnMsIGp1c3QgYXNzaWduIHRoZSBwYXJlbnQgcGFydGlhbCdzIHByZWZhYiBvYmplY3RcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50LlByZWZhYikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLlByZWZhYiA9IHRoaXMudmlld1BhcmVudC5QcmVmYWI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5QcmVmYWIgPSB0aGlzLnZpZXdQYXJlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ldmFsVXNlclNjcmlwdCh0aGlzLCB0aGlzLkFwcCwgdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFV0aWxzU2VydmljZSkgOiBpbmplY3QoVXRpbHNTZXJ2aWNlKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGluIGV2YWx1YXRpbmcgcGFydGlhbCAoJHt0aGlzLnBhcnRpYWxOYW1lfSkgc2NyaXB0XFxuYCwgZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0VmFyaWFibGVzKCkge1xuICAgICAgICBjb25zdCB2YXJpYWJsZXNTZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFZhcmlhYmxlc1NlcnZpY2UpIDogaW5qZWN0KFZhcmlhYmxlc1NlcnZpY2UpO1xuXG4gICAgICAgIC8vIGdldCB2YXJpYWJsZXMgYW5kIGFjdGlvbnMgaW5zdGFuY2VzIGZvciB0aGUgcGFnZVxuICAgICAgICBjb25zdCB2YXJpYWJsZUNvbGxlY3Rpb24gPSB2YXJpYWJsZXNTZXJ2aWNlLnJlZ2lzdGVyKHRoaXMucGFydGlhbE5hbWUsIHRoaXMuZ2V0VmFyaWFibGVzKCksIHRoaXMpO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBuYW1lc3BhY2UgZm9yIFZhcmlhYmxlcyBuYWQgQWN0aW9ucyBvbiBwYWdlL3BhcnRpYWwsIHdoaWNoIGluaGVyaXRzIHRoZSBWYXJpYWJsZXMgYW5kIEFjdGlvbnMgZnJvbSBBcHAgaW5zdGFuY2VcbiAgICAgICAgdGhpcy5WYXJpYWJsZXMgPSBPYmplY3QuY3JlYXRlKHRoaXMuQXBwLlZhcmlhYmxlcyk7XG4gICAgICAgIHRoaXMuQWN0aW9ucyA9IE9iamVjdC5jcmVhdGUodGhpcy5BcHAuQWN0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQuVmFyaWFibGVzID0gdGhpcy5WYXJpYWJsZXM7XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LkFjdGlvbnMgPSB0aGlzLkFjdGlvbnM7XG5cbiAgICAgICAgLy8gYXNzaWduIGFsbCB0aGUgcGFnZSB2YXJpYWJsZXMgdG8gdGhlIHBhZ2VJbnN0YW5jZVxuICAgICAgICBPYmplY3QuZW50cmllcyh2YXJpYWJsZUNvbGxlY3Rpb24uVmFyaWFibGVzKS5mb3JFYWNoKChbbmFtZSwgdmFyaWFibGVdKSA9PiB0aGlzLlZhcmlhYmxlc1tuYW1lXSA9IHZhcmlhYmxlKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpLmZvckVhY2goKFtuYW1lLCBhY3Rpb25dKSA9PiB0aGlzLkFjdGlvbnNbbmFtZV0gPSBhY3Rpb24pO1xuXG5cbiAgICAgICAgdGhpcy52aWV3SW5pdCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHtcbiAgICAgICAgICAgIC8vIFRFTVA6IHRyaWdnZXJpbmcgd2F0Y2hlcnMgc28gdmFyaWFibGVzIHdhdGNoaW5nIG92ZXIgcGFyYW1zIGFyZSB1cGRhdGVkXG4gICAgICAgICAgICAkaW52b2tlV2F0Y2hlcnModHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodmFyaWFibGVDb2xsZWN0aW9uLlZhcmlhYmxlcykuY2F0Y2gobm9vcCk7XG4gICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmdW5jdGlvbiB0byByZWdpc3RlciBiaW5kIGV4cHJlc3Npb25zIGdlbmVyYXRlZCBpbiB0aGlzIHBhcnRpYWwgaW5zdGFuY2VcbiAgICAgKiBnZXRFeHByZXNzaW9ucyBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHRoZSBnZW5lcmF0ZWQgcGFnZS5jb21wLnRzIGZpbGVcbiAgICAgKiBAcGFyYW0gZXhwcmVzc2lvbnMsIG1hcCBvZiBiaW5kIGV4cHJlc3Npb24gdnMgZ2VuZXJhdGVkIGZ1bmN0aW9uXG4gICAgICovXG4gICAgcmVnaXN0ZXJFeHByZXNzaW9ucygpIHtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbnMgPSB0aGlzLmdldEV4cHJlc3Npb25zKCk7XG4gICAgICAgIGVhY2goZXhwcmVzc2lvbnMsIChmbiwgZXhwcikgPT4ge1xuICAgICAgICAgICAgcmVnaXN0ZXJGbkJ5RXhwcihleHByLCBmblswXSwgZm5bMV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWdpc3RlclBhZ2VQYXJhbXMoKSB7XG4gICAgICAgIHRoaXMucGFnZVBhcmFtcyA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LnBhcnRpYWxQYXJhbXM7XG4gICAgfVxuXG4gICAgZGVmaW5lSTE4blByb3BzKCkge1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IHRoaXMuaTE4blNlcnZpY2UuZ2V0QXBwTG9jYWxlKCk7XG4gICAgfVxuXG4gICAgaW52b2tlT25SZWFkeSgpIHtcbiAgICAgICAgbGV0IHBhcmFtcztcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyV2lkZ2V0LnVzZXJDb21wb25lbnRQYXJhbXMpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LnVzZXJDb21wb25lbnRQYXJhbXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblJlYWR5KHBhcmFtcyk7XG4gICAgICAgIGlmICh0aGlzLnZpZXdQYXJlbnQucmVzb2x2ZUZyYWdtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQucmVzb2x2ZUZyYWdtZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRTY3JpcHRzKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdHNSZXF1aXJlZCA9IHRoaXMucGFydGlhbERpcmVjdGl2ZS4kZWxlbWVudC5hdHRyKCdzY3JpcHRzLXRvLWxvYWQnKTtcbiAgICAgICAgICAgIGlmIChzY3JpcHRzUmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmlwdExvYWRlclNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLmxvYWQoLi4uc2NyaXB0c1JlcXVpcmVkLnNwbGl0KCcsJykpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc29sdmUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG11dGUoKSB7XG4gICAgICAgIGNvbnN0IG0gPSBvID0+IHsgbyAmJiBvLm11dGUgJiYgby5tdXRlKCk7IH07XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCBtKTtcbiAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgbSk7XG4gICAgICAgIGVhY2godGhpcy5BY3Rpb25zLCBtKTtcbiAgICB9XG5cbiAgICB1bm11dGUoKSB7XG4gICAgICAgIGNvbnN0IHVtID0gbyA9PiB7IG8gJiYgby51bm11dGUgJiYgby51bm11dGUoKTsgfTtcbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHVtKTtcbiAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgdW0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgdW0pO1xuICAgIH1cblxuICAgIC8vIG5nT25Jbml0KCkge1xuICAgIC8vICAgICB0aGlzLmluaXQoKTtcbiAgICAvLyB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZFNjcmlwdHMoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcGlsZUNvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3SW5pdCQuY29tcGxldGUoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZnJhZ21lbnRzTG9hZGVkJC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4gdGhpcy5pbnZva2VPblJlYWR5KCkpO1xuXG4gICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBVbndhdGNoIGFsbCBQYXJ0aWFsLXNjb3BlZCB3YXRjaGVycyBmb3IgVEhJUyBzcGVjaWZpYyBwYXJ0aWFsIHdoZW4gcGFydGlhbCBpcyBkZXN0cm95ZWRcbiAgICAgICAgLy8gT25seSB1bndhdGNoIHdhdGNoZXJzIGZvciB0aGlzIHBhcnRpYWwsIG5vdCBhbGwgcGFydGlhbHMgKG90aGVyIHBhcnRpYWxzIG1heSBzdGlsbCBiZSBvbiB0aGUgcGFnZSlcbiAgICAgICAgaWYgKHRoaXMucGFydGlhbE5hbWUpIHtcbiAgICAgICAgICAgICR1bndhdGNoQWxsQnlTY29wZSgnUGFydGlhbCcsIHRoaXMucGFydGlhbE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ29tcGxldGUgU3ViamVjdHMgdG8gcmVsZWFzZSBzdWJzY3JpcHRpb25zXG4gICAgICAgIGlmICh0aGlzLmRlc3Ryb3kkKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3kkID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52aWV3SW5pdCQpIHtcbiAgICAgICAgICAgIHRoaXMudmlld0luaXQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB0aGlzLnZpZXdJbml0JCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIHJlZmVyZW5jZXMgdG8gcHJldmVudCBtZW1vcnkgbGVha3NcbiAgICAgICAgdGhpcy5XaWRnZXRzID0gbnVsbDtcbiAgICAgICAgdGhpcy5WYXJpYWJsZXMgPSBudWxsO1xuICAgICAgICB0aGlzLkFjdGlvbnMgPSBudWxsO1xuICAgICAgICB0aGlzLkFwcCA9IG51bGw7XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5pMThuU2VydmljZSA9IG51bGw7XG4gICAgICAgIHRoaXMuYXBwTG9jYWxlID0gbnVsbDtcbiAgICAgICAgdGhpcy5wYXJ0aWFsRGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgdGhpcy5wYWdlRGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgdGhpcy5QcmVmYWIgPSBudWxsO1xuICAgICAgICB0aGlzLnNjcmlwdExvYWRlclNlcnZpY2UgPSBudWxsO1xuICAgICAgICB0aGlzLlZpZXdwb3J0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5yb3V0ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlciA9IG51bGw7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UgPSBudWxsO1xuICAgICAgICB0aGlzLnJvdXRlciA9IG51bGw7XG4gICAgICAgIHRoaXMucGFnZVBhcmFtcyA9IG51bGw7XG4gICAgICAgIHRoaXMudmlld1BhcmVudCA9IG51bGw7XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhbnVwIEZyYWdtZW50TW9uaXRvciByZXNvdXJjZXNcbiAgICAgICAgdGhpcy5jbGVhbnVwRnJhZ21lbnRNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgbmdPbkF0dGFjaChyZWZyZXNoRGF0YSkge1xuICAgICAgICB0aGlzLnVubXV0ZSgpO1xuICAgICAgICBpZiAocmVmcmVzaERhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZnJlc2ggPSB2ID0+IHsgdiAmJiB2LnN0YXJ0VXBkYXRlICYmIHYuaW52b2tlICYmIHYuaW52b2tlKCk7IH07XG4gICAgICAgICAgICBlYWNoKHRoaXMuVmFyaWFibGVzLCByZWZyZXNoKTtcbiAgICAgICAgICAgIGVhY2godGhpcy5BY3Rpb25zLCByZWZyZXNoKTtcbiAgICAgICAgfVxuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgdyA9PiB3ICYmIHcubmdPbkF0dGFjaCAmJiB3Lm5nT25BdHRhY2goKSk7XG4gICAgfVxuXG4gICAgbmdPbkRldGFjaCgpIHtcbiAgICAgICAgdGhpcy5tdXRlKCk7XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB3ID0+IHcgJiYgdy5uZ09uRGV0YWNoICYmIHcubmdPbkRldGFjaCgpKTtcbiAgICB9XG5cbiAgICBvblJlYWR5KHBhcmFtcz8pIHtcbiAgICB9XG59XG4iXX0=
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wYXJ0aWFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9iYXNlLXBhcnRpYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJSCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFDSCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUVuQixHQUFHLEVBQ0gsSUFBSSxFQUNKLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLGdCQUFnQixFQUNuQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFFL0IsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBR3ZDLE1BQU0sT0FBZ0Isb0JBQXFCLFNBQVEsZUFBZTtJQURsRTs7UUFzQkksbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHdkIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7S0F1UDdCO0lBL09HLDBCQUEwQjtRQUN0QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLElBQUks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SUFBSSxDQUFDO1FBRXZCLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVSxDQUFDLFdBQVc7UUFDbEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBTztJQUNmLENBQUM7K0dBL1FpQixvQkFBb0I7bUdBQXBCLG9CQUFvQiw0RUFnQjNCLGdCQUFnQjs7NEZBaEJULG9CQUFvQjtrQkFEekMsU0FBUzs4QkFpQnVCLGdCQUFnQjtzQkFBNUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZCxcbiAgICBEaXJlY3RpdmUsXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICAkaW52b2tlV2F0Y2hlcnMsXG4gICAgJHVud2F0Y2hBbGxCeVNjb3BlLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSxcbiAgICBBcHAsXG4gICAgbm9vcCxcbiAgICBWaWV3cG9ydCxcbiAgICBTY3JpcHRMb2FkZXJTZXJ2aWNlLFxuICAgIFV0aWxzU2VydmljZSxcbiAgICByZWdpc3RlckZuQnlFeHByXG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IFBhcnRpYWxEaXJlY3RpdmUsIFdpZGdldFJlZn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBQYWdlRGlyZWN0aXZlLCBTcGFQYWdlRGlyZWN0aXZlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcGFnZSc7XG5pbXBvcnQge1ByZWZhYkRpcmVjdGl2ZX0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcHJlZmFiJztcbmltcG9ydCB7IFZhcmlhYmxlc1NlcnZpY2UgfSBmcm9tICdAd20vdmFyaWFibGVzJztcblxuaW1wb3J0IHsgRnJhZ21lbnRNb25pdG9yIH0gZnJvbSAnLi4vdXRpbC9mcmFnbWVudC1tb25pdG9yJztcbmltcG9ydCB7IEFwcE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwLm1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQge2VhY2h9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZXhwb3J0IGNvbnN0IGNvbW1vblBhcnRpYWxXaWRnZXRzID0ge307XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VQYXJ0aWFsQ29tcG9uZW50IGV4dGVuZHMgRnJhZ21lbnRNb25pdG9yIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBXaWRnZXRzOiBhbnk7XG4gICAgVmFyaWFibGVzOiBhbnk7XG4gICAgQWN0aW9uczogYW55O1xuICAgIEFwcDogQXBwO1xuICAgIGluamVjdG9yOiBJbmplY3RvcjtcbiAgICBwYXJ0aWFsTmFtZTogc3RyaW5nO1xuICAgIGFjdGl2ZVBhZ2VOYW1lOiBzdHJpbmc7XG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICAgIGFwcE1hbmFnZXI6IEFwcE1hbmFnZXJTZXJ2aWNlO1xuICAgIG5hdmlnYXRpb25TZXJ2aWNlOiBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlO1xuICAgIHJvdXRlcjogUm91dGVyO1xuICAgIHBhZ2VQYXJhbXM6IGFueTtcbiAgICBjb250YWluZXJXaWRnZXQ6IGFueTtcbiAgICBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZTtcbiAgICBhcHBMb2NhbGU6IGFueTtcbiAgICBAVmlld0NoaWxkKFBhcnRpYWxEaXJlY3RpdmUpIHBhcnRpYWxEaXJlY3RpdmU7XG4gICAgcGFnZURpcmVjdGl2ZTogUGFnZURpcmVjdGl2ZSB8IFNwYVBhZ2VEaXJlY3RpdmU7XG4gICAgUHJlZmFiOiBQcmVmYWJEaXJlY3RpdmU7XG4gICAgc2NyaXB0TG9hZGVyU2VydmljZTogU2NyaXB0TG9hZGVyU2VydmljZTtcbiAgICBWaWV3cG9ydDogVmlld3BvcnQ7XG4gICAgY29tcGlsZUNvbnRlbnQgPSBmYWxzZTtcbiAgICBzcGE6IGJvb2xlYW47XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgdmlld0luaXQkID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIHZpZXdQYXJlbnQ6IGFueTtcblxuICAgIGFic3RyYWN0IGV2YWxVc2VyU2NyaXB0KHByZWZhYkNvbnRleHQ6IGFueSwgYXBwQ29udGV4dDogYW55LCB1dGlsczogYW55KTtcblxuICAgIGFic3RyYWN0IGdldFZhcmlhYmxlcygpO1xuICAgIGFic3RyYWN0IGdldEV4cHJlc3Npb25zKCk7XG5cbiAgICBnZXRDb250YWluZXJXaWRnZXRJbmplY3RvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyV2lkZ2V0LmluaiB8fCB0aGlzLmNvbnRhaW5lcldpZGdldC5pbmplY3RvcjtcbiAgICB9XG5cbiAgICBpbml0KCkge1xuXG4gICAgICAgIHRoaXMuQXBwID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcCkgOiBpbmplY3QoQXBwKTtcbiAgICAgICAgLy9tYWtpbmcgdGhlIGNvZGUgY29tcGF0aWJsZSBpbiBib3RoIHRoZSBKSVQgYW5kIEFPVCBtb2Rlc1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldCA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChXaWRnZXRSZWYpIDogaW5qZWN0KFdpZGdldFJlZik7XG4gICAgICAgIHRoaXMuaTE4blNlcnZpY2UgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQWJzdHJhY3RJMThuU2VydmljZSkgOiBpbmplY3QoQWJzdHJhY3RJMThuU2VydmljZSk7XG4gICAgICAgIHRoaXMuc2NyaXB0TG9hZGVyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChTY3JpcHRMb2FkZXJTZXJ2aWNlKSA6IGluamVjdChTY3JpcHRMb2FkZXJTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5WaWV3cG9ydCA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChWaWV3cG9ydCkgOiBpbmplY3QoVmlld3BvcnQpO1xuICAgICAgICAvLyB0aGlzLnZpZXdDb250YWluZXJSZWYgPSB0aGlzLmdldENvbnRhaW5lcldpZGdldEluamVjdG9yKCkuZ2V0KFZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICAvLyBSZXBsYWNpbmcgdGhpcy5nZXRDb250YWluZXJXaWRnZXRJbmplY3RvcigpLnZpZXcuY29tcG9uZW50IGFzIHZpZXdQYXJlbnRcbiAgICAgICAgLy8gdGhpcy52aWV3UGFyZW50ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLnBhcmVudEluamVjdG9yLl9sVmlld1s4XTtcbiAgICAgICAgdGhpcy52aWV3UGFyZW50ID0gdGhpcy5jb250YWluZXJXaWRnZXQudmlld1BhcmVudDtcblxuICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50LnJlZ2lzdGVyRnJhZ21lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudmlld1BhcmVudC5yZWdpc3RlckZyYWdtZW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZWdpc3RlciBmdW5jdGlvbnMgZm9yIGJpbmRpbmcgZXZhbHVhdGlvblxuICAgICAgICB0aGlzLnJlZ2lzdGVyRXhwcmVzc2lvbnMoKTtcbiAgICAgICAgdGhpcy5pbml0VXNlclNjcmlwdCgpO1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJXaWRnZXRzKCk7XG4gICAgICAgIHRoaXMuaW5pdFZhcmlhYmxlcygpO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlUGFnZU5hbWUgPSB0aGlzLkFwcC5hY3RpdmVQYWdlTmFtZTsgLy8gVG9kbzogcmVtb3ZlIHRoaXNcbiAgICAgICAgdGhpcy5yZWdpc3RlclBhZ2VQYXJhbXMoKTtcblxuICAgICAgICB0aGlzLmRlZmluZUkxOG5Qcm9wcygpO1xuXG4gICAgICAgIHRoaXMudmlld0luaXQkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VQYXJhbXMgPSB0aGlzLmNvbnRhaW5lcldpZGdldC5wYXJ0aWFsUGFyYW1zO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZih0aGlzLnNwYSkge1xuICAgICAgICAgICAgdGhpcy5wYWdlRGlyZWN0aXZlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFNwYVBhZ2VEaXJlY3RpdmUpIDogaW5qZWN0KFNwYVBhZ2VEaXJlY3RpdmUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wYWdlRGlyZWN0aXZlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFBhZ2VEaXJlY3RpdmUpIDogaW5qZWN0KFBhZ2VEaXJlY3RpdmUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBhZ2VEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIodGhpcy5wYWdlRGlyZWN0aXZlLnN1YnNjcmliZSgnYXR0YWNoJywgZGF0YSA9PiB0aGlzLm5nT25BdHRhY2goZGF0YS5yZWZyZXNoRGF0YSkpKTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIodGhpcy5wYWdlRGlyZWN0aXZlLnN1YnNjcmliZSgnZGV0YWNoJywgKCkgPT4gdGhpcy5uZ09uRGV0YWNoKCkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLmluaXQoKTtcbiAgICB9XG5cbiAgICByZWdpc3RlcldpZGdldHMoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcnRpYWxOYW1lID09PSAnQ29tbW9uJykge1xuICAgICAgICAgICAgdGhpcy5XaWRnZXRzID0gY29tbW9uUGFydGlhbFdpZGdldHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLldpZGdldHMgPSBPYmplY3QuY3JlYXRlKGNvbW1vblBhcnRpYWxXaWRnZXRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LldpZGdldHMgPSB0aGlzLldpZGdldHM7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoZm46IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IGZuKCkpO1xuICAgIH1cblxuICAgIGluaXRVc2VyU2NyaXB0KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gcGFydGlhbHMgaW5zaWRlIHByZWZhYiBzaG91bGQgaGF2ZSBhY2Nlc3MgdG8gUHJlZmFiIHByb3BlcnRpZXMgYW5kIGV2ZW50c1xuICAgICAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudC5wcmVmYWJOYW1lKSB7XG4gICAgICAgICAgICAgICAgLy8gZm9yIHBhcnRpYWwgd2l0aGluIHBhcnRpYWwgd2l0aGluIHByZWZhYnMsIGp1c3QgYXNzaWduIHRoZSBwYXJlbnQgcGFydGlhbCdzIHByZWZhYiBvYmplY3RcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50LlByZWZhYikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLlByZWZhYiA9IHRoaXMudmlld1BhcmVudC5QcmVmYWI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5QcmVmYWIgPSB0aGlzLnZpZXdQYXJlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ldmFsVXNlclNjcmlwdCh0aGlzLCB0aGlzLkFwcCwgdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFV0aWxzU2VydmljZSkgOiBpbmplY3QoVXRpbHNTZXJ2aWNlKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGluIGV2YWx1YXRpbmcgcGFydGlhbCAoJHt0aGlzLnBhcnRpYWxOYW1lfSkgc2NyaXB0XFxuYCwgZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0VmFyaWFibGVzKCkge1xuICAgICAgICBjb25zdCB2YXJpYWJsZXNTZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFZhcmlhYmxlc1NlcnZpY2UpIDogaW5qZWN0KFZhcmlhYmxlc1NlcnZpY2UpO1xuXG4gICAgICAgIC8vIGdldCB2YXJpYWJsZXMgYW5kIGFjdGlvbnMgaW5zdGFuY2VzIGZvciB0aGUgcGFnZVxuICAgICAgICBjb25zdCB2YXJpYWJsZUNvbGxlY3Rpb24gPSB2YXJpYWJsZXNTZXJ2aWNlLnJlZ2lzdGVyKHRoaXMucGFydGlhbE5hbWUsIHRoaXMuZ2V0VmFyaWFibGVzKCksIHRoaXMpO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBuYW1lc3BhY2UgZm9yIFZhcmlhYmxlcyBuYWQgQWN0aW9ucyBvbiBwYWdlL3BhcnRpYWwsIHdoaWNoIGluaGVyaXRzIHRoZSBWYXJpYWJsZXMgYW5kIEFjdGlvbnMgZnJvbSBBcHAgaW5zdGFuY2VcbiAgICAgICAgdGhpcy5WYXJpYWJsZXMgPSBPYmplY3QuY3JlYXRlKHRoaXMuQXBwLlZhcmlhYmxlcyk7XG4gICAgICAgIHRoaXMuQWN0aW9ucyA9IE9iamVjdC5jcmVhdGUodGhpcy5BcHAuQWN0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQuVmFyaWFibGVzID0gdGhpcy5WYXJpYWJsZXM7XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LkFjdGlvbnMgPSB0aGlzLkFjdGlvbnM7XG5cbiAgICAgICAgLy8gYXNzaWduIGFsbCB0aGUgcGFnZSB2YXJpYWJsZXMgdG8gdGhlIHBhZ2VJbnN0YW5jZVxuICAgICAgICBPYmplY3QuZW50cmllcyh2YXJpYWJsZUNvbGxlY3Rpb24uVmFyaWFibGVzKS5mb3JFYWNoKChbbmFtZSwgdmFyaWFibGVdKSA9PiB0aGlzLlZhcmlhYmxlc1tuYW1lXSA9IHZhcmlhYmxlKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpLmZvckVhY2goKFtuYW1lLCBhY3Rpb25dKSA9PiB0aGlzLkFjdGlvbnNbbmFtZV0gPSBhY3Rpb24pO1xuXG5cbiAgICAgICAgdGhpcy52aWV3SW5pdCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHtcbiAgICAgICAgICAgIC8vIFRFTVA6IHRyaWdnZXJpbmcgd2F0Y2hlcnMgc28gdmFyaWFibGVzIHdhdGNoaW5nIG92ZXIgcGFyYW1zIGFyZSB1cGRhdGVkXG4gICAgICAgICAgICAkaW52b2tlV2F0Y2hlcnModHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodmFyaWFibGVDb2xsZWN0aW9uLlZhcmlhYmxlcykuY2F0Y2gobm9vcCk7XG4gICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmdW5jdGlvbiB0byByZWdpc3RlciBiaW5kIGV4cHJlc3Npb25zIGdlbmVyYXRlZCBpbiB0aGlzIHBhcnRpYWwgaW5zdGFuY2VcbiAgICAgKiBnZXRFeHByZXNzaW9ucyBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHRoZSBnZW5lcmF0ZWQgcGFnZS5jb21wLnRzIGZpbGVcbiAgICAgKiBAcGFyYW0gZXhwcmVzc2lvbnMsIG1hcCBvZiBiaW5kIGV4cHJlc3Npb24gdnMgZ2VuZXJhdGVkIGZ1bmN0aW9uXG4gICAgICovXG4gICAgcmVnaXN0ZXJFeHByZXNzaW9ucygpIHtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbnMgPSB0aGlzLmdldEV4cHJlc3Npb25zKCk7XG4gICAgICAgIGVhY2goZXhwcmVzc2lvbnMsIChmbiwgZXhwcikgPT4ge1xuICAgICAgICAgICAgcmVnaXN0ZXJGbkJ5RXhwcihleHByLCBmblswXSwgZm5bMV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWdpc3RlclBhZ2VQYXJhbXMoKSB7XG4gICAgICAgIHRoaXMucGFnZVBhcmFtcyA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LnBhcnRpYWxQYXJhbXM7XG4gICAgfVxuXG4gICAgZGVmaW5lSTE4blByb3BzKCkge1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IHRoaXMuaTE4blNlcnZpY2UuZ2V0QXBwTG9jYWxlKCk7XG4gICAgfVxuXG4gICAgaW52b2tlT25SZWFkeSgpIHtcbiAgICAgICAgbGV0IHBhcmFtcztcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyV2lkZ2V0LnVzZXJDb21wb25lbnRQYXJhbXMpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LnVzZXJDb21wb25lbnRQYXJhbXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblJlYWR5KHBhcmFtcyk7XG4gICAgICAgIGlmICh0aGlzLnZpZXdQYXJlbnQucmVzb2x2ZUZyYWdtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQucmVzb2x2ZUZyYWdtZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRTY3JpcHRzKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdHNSZXF1aXJlZCA9IHRoaXMucGFydGlhbERpcmVjdGl2ZT8uJGVsZW1lbnQuYXR0cignc2NyaXB0cy10by1sb2FkJyk7XG4gICAgICAgICAgICBpZiAoc2NyaXB0c1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5sb2FkKC4uLnNjcmlwdHNSZXF1aXJlZC5zcGxpdCgnLCcpKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNvbHZlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBtdXRlKCkge1xuICAgICAgICBjb25zdCBtID0gbyA9PiB7IG8gJiYgby5tdXRlICYmIG8ubXV0ZSgpOyB9O1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgbSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIG0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgbSk7XG4gICAgfVxuXG4gICAgdW5tdXRlKCkge1xuICAgICAgICBjb25zdCB1bSA9IG8gPT4geyBvICYmIG8udW5tdXRlICYmIG8udW5tdXRlKCk7IH07XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB1bSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIHVtKTtcbiAgICAgICAgZWFjaCh0aGlzLkFjdGlvbnMsIHVtKTtcbiAgICB9XG5cbiAgICAvLyBuZ09uSW5pdCgpIHtcbiAgICAvLyAgICAgdGhpcy5pbml0KCk7XG4gICAgLy8gfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRTY3JpcHRzKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbXBpbGVDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmlld0luaXQkLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmZyYWdtZW50c0xvYWRlZCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHRoaXMuaW52b2tlT25SZWFkeSgpKTtcblxuICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogVW53YXRjaCBhbGwgUGFydGlhbC1zY29wZWQgd2F0Y2hlcnMgZm9yIFRISVMgc3BlY2lmaWMgcGFydGlhbCB3aGVuIHBhcnRpYWwgaXMgZGVzdHJveWVkXG4gICAgICAgIC8vIE9ubHkgdW53YXRjaCB3YXRjaGVycyBmb3IgdGhpcyBwYXJ0aWFsLCBub3QgYWxsIHBhcnRpYWxzIChvdGhlciBwYXJ0aWFscyBtYXkgc3RpbGwgYmUgb24gdGhlIHBhZ2UpXG4gICAgICAgIGlmICh0aGlzLnBhcnRpYWxOYW1lKSB7XG4gICAgICAgICAgICAkdW53YXRjaEFsbEJ5U2NvcGUoJ1BhcnRpYWwnLCB0aGlzLnBhcnRpYWxOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ29tcGxldGUgU3ViamVjdHMgdG8gcmVsZWFzZSBzdWJzY3JpcHRpb25zXG4gICAgICAgIGlmICh0aGlzLmRlc3Ryb3kkKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3kkID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52aWV3SW5pdCQpIHtcbiAgICAgICAgICAgIHRoaXMudmlld0luaXQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB0aGlzLnZpZXdJbml0JCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIHJlZmVyZW5jZXMgdG8gcHJldmVudCBtZW1vcnkgbGVha3NcbiAgICAgICAgdGhpcy5XaWRnZXRzID0gbnVsbDtcbiAgICAgICAgdGhpcy5WYXJpYWJsZXMgPSBudWxsO1xuICAgICAgICB0aGlzLkFjdGlvbnMgPSBudWxsO1xuICAgICAgICB0aGlzLkFwcCA9IG51bGw7XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5pMThuU2VydmljZSA9IG51bGw7XG4gICAgICAgIHRoaXMuYXBwTG9jYWxlID0gbnVsbDtcbiAgICAgICAgdGhpcy5wYXJ0aWFsRGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgdGhpcy5wYWdlRGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgdGhpcy5QcmVmYWIgPSBudWxsO1xuICAgICAgICB0aGlzLnNjcmlwdExvYWRlclNlcnZpY2UgPSBudWxsO1xuICAgICAgICB0aGlzLlZpZXdwb3J0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5yb3V0ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlciA9IG51bGw7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UgPSBudWxsO1xuICAgICAgICB0aGlzLnJvdXRlciA9IG51bGw7XG4gICAgICAgIHRoaXMucGFnZVBhcmFtcyA9IG51bGw7XG4gICAgICAgIHRoaXMudmlld1BhcmVudCA9IG51bGw7XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhbnVwIEZyYWdtZW50TW9uaXRvciByZXNvdXJjZXNcbiAgICAgICAgdGhpcy5jbGVhbnVwRnJhZ21lbnRNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgbmdPbkF0dGFjaChyZWZyZXNoRGF0YSkge1xuICAgICAgICB0aGlzLnVubXV0ZSgpO1xuICAgICAgICBpZiAocmVmcmVzaERhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZnJlc2ggPSB2ID0+IHsgdiAmJiB2LnN0YXJ0VXBkYXRlICYmIHYuaW52b2tlICYmIHYuaW52b2tlKCk7IH07XG4gICAgICAgICAgICBlYWNoKHRoaXMuVmFyaWFibGVzLCByZWZyZXNoKTtcbiAgICAgICAgICAgIGVhY2godGhpcy5BY3Rpb25zLCByZWZyZXNoKTtcbiAgICAgICAgfVxuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgdyA9PiB3ICYmIHcubmdPbkF0dGFjaCAmJiB3Lm5nT25BdHRhY2goKSk7XG4gICAgfVxuXG4gICAgbmdPbkRldGFjaCgpIHtcbiAgICAgICAgdGhpcy5tdXRlKCk7XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB3ID0+IHcgJiYgdy5uZ09uRGV0YWNoICYmIHcubmdPbkRldGFjaCgpKTtcbiAgICB9XG5cbiAgICBvblJlYWR5KHBhcmFtcz8pIHtcbiAgICB9XG59XG4iXX0=
@@ -13,6 +13,7 @@ export class BasePrefabComponent extends FragmentMonitor {
13
13
  constructor() {
14
14
  super(...arguments);
15
15
  this.compileContent = false;
16
+ this.scriptsLoaded = false;
16
17
  this.destroy$ = new Subject();
17
18
  this.viewInit$ = new Subject();
18
19
  }
@@ -162,6 +163,10 @@ export class BasePrefabComponent extends FragmentMonitor {
162
163
  }
163
164
  loadScripts() {
164
165
  return new Promise((resolve) => {
166
+ if (!this.prefabContainerDirective) {
167
+ resolve();
168
+ return;
169
+ }
165
170
  const scriptsRequired = this.prefabContainerDirective.$element.attr('scripts-to-load');
166
171
  if (scriptsRequired) {
167
172
  this.scriptLoaderService
@@ -198,16 +203,19 @@ export class BasePrefabComponent extends FragmentMonitor {
198
203
  this.mute();
199
204
  each(this.Widgets, w => w && w.ngOnDetach && w.ngOnDetach());
200
205
  }
201
- ngAfterViewInit() {
202
- this.loadScripts().then(() => {
203
- this.compileContent = true;
204
- this.registerChangeListeners();
205
- setTimeout(() => {
206
- // trigger viewInit$.complete after a timeout so that the widget listeners are ready before Variable xhr call.
207
- this.viewInit$.complete();
208
- this.fragmentsLoaded$.subscribe(noop, noop, () => this.invokeOnReady());
209
- }, 100);
210
- });
206
+ ngAfterViewChecked() {
207
+ if (!this.scriptsLoaded && this.prefabContainerDirective) {
208
+ this.scriptsLoaded = true;
209
+ this.loadScripts().then(() => {
210
+ this.compileContent = true;
211
+ this.registerChangeListeners();
212
+ setTimeout(() => {
213
+ // trigger viewInit$.complete after a timeout so that the widget listeners are ready before Variable xhr call.
214
+ this.viewInit$.complete();
215
+ this.fragmentsLoaded$.subscribe(noop, noop, () => this.invokeOnReady());
216
+ }, 100);
217
+ });
218
+ }
211
219
  }
212
220
  ngOnDestroy() {
213
221
  // MEMORY LEAK FIX: Unwatch all Prefab-scoped watchers for THIS specific prefab when prefab is destroyed
@@ -251,6 +259,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
251
259
  type: Directive
252
260
  }], propDecorators: { prefabContainerDirective: [{
253
261
  type: ViewChild,
254
- args: [PrefabContainerDirective]
262
+ args: [PrefabContainerDirective, { static: false }]
255
263
  }] } });
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcmVmYWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9jb21wb25lbnRzL2Jhc2UtcHJlZmFiLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJCLE1BQU0sRUFBYSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNILE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLEdBQUcsRUFDSCxJQUFJLEVBQ0osSUFBSSxFQUNKLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osZUFBZSxFQUNmLFFBQVEsRUFDUixnQkFBZ0IsRUFDbkIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFHakQsTUFBTSxPQUFnQixtQkFBb0IsU0FBUSxlQUFlO0lBRGpFOztRQWVJLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBS3ZCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFB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RyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFFdkIscURBQXFEO1FBQ3JELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsZ0JBQWdCLEtBQUksQ0FBQztJQUVyQixPQUFPLEtBQUksQ0FBQzsrR0FuU00sbUJBQW1CO21HQUFuQixtQkFBbUIsb0ZBWTFCLHdCQUF3Qjs7NEZBWmpCLG1CQUFtQjtrQkFEeEMsU0FBUzs4QkFhK0Isd0JBQXdCO3NCQUE1RCxTQUFTO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIEluamVjdG9yLCBpbmplY3QsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICAkd2F0Y2gsXG4gICAgJHVud2F0Y2hBbGxCeVNjb3BlLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQXBwLFxuICAgIGlzSUUsXG4gICAgbm9vcCxcbiAgICBTY3JpcHRMb2FkZXJTZXJ2aWNlLFxuICAgIFV0aWxzU2VydmljZSxcbiAgICAkaW52b2tlV2F0Y2hlcnMsXG4gICAgVmlld3BvcnQsXG4gICAgcmVnaXN0ZXJGbkJ5RXhwclxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBXaWRnZXRSZWZ9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgUGFnZURpcmVjdGl2ZSwgU3BhUGFnZURpcmVjdGl2ZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3BhZ2UnO1xuaW1wb3J0IHsgUHJlZmFiQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcHJlZmFiJztcbmltcG9ydCB7IFZhcmlhYmxlc1NlcnZpY2UgfSBmcm9tICdAd20vdmFyaWFibGVzJztcblxuaW1wb3J0IHsgUHJlZmFiTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcmVmYWItbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZyYWdtZW50TW9uaXRvciB9IGZyb20gJy4uL3V0aWwvZnJhZ21lbnQtbW9uaXRvcic7XG5pbXBvcnQge2VhY2gsIHN0YXJ0c1dpdGgsIHRyaW19IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVByZWZhYkNvbXBvbmVudCBleHRlbmRzIEZyYWdtZW50TW9uaXRvciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgV2lkZ2V0czogYW55O1xuICAgIFZhcmlhYmxlczogYW55O1xuICAgIEFjdGlvbnM6IGFueTtcbiAgICBBcHA6IEFwcDtcbiAgICBpbmplY3RvcjogSW5qZWN0b3I7XG4gICAgY29udGFpbmVyV2lkZ2V0OiBhbnk7XG4gICAgcHJlZmFiTW5ncjogUHJlZmFiTWFuYWdlclNlcnZpY2U7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBwcmVmYWJOYW1lOiBzdHJpbmc7XG4gICAgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2U7XG4gICAgYXBwTG9jYWxlOiBhbnk7XG4gICAgQFZpZXdDaGlsZChQcmVmYWJDb250YWluZXJEaXJlY3RpdmUpIHByZWZhYkNvbnRhaW5lckRpcmVjdGl2ZTtcbiAgICBzY3JpcHRMb2FkZXJTZXJ2aWNlOiBTY3JpcHRMb2FkZXJTZXJ2aWNlO1xuICAgIGNvbXBpbGVDb250ZW50ID0gZmFsc2U7XG4gICAgcGFnZURpcmVjdGl2ZTogUGFnZURpcmVjdGl2ZSB8IFNwYVBhZ2VEaXJlY3RpdmU7XG4gICAgVmlld3BvcnQ6IFZpZXdwb3J0O1xuICAgIHNwYTogYm9vbGVhbjtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgICB2aWV3SW5pdCQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJpdmF0ZSB2aWV3UGFyZW50OiBhbnk7XG5cbiAgICBhYnN0cmFjdCBldmFsVXNlclNjcmlwdChwcmVmYWJDb250ZXh0OiBhbnksIGFwcENvbnRleHQ6IGFueSwgdXRpbHM6IGFueSk7XG4gICAgYWJzdHJhY3QgZ2V0VmFyaWFibGVzKCk7XG4gICAgYWJzdHJhY3QgZ2V0RXhwcmVzc2lvbnMoKTtcblxuICAgIGdldENvbnRhaW5lcldpZGdldEluamVjdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXJXaWRnZXQuaW5qIHx8IHRoaXMuY29udGFpbmVyV2lkZ2V0LmluamVjdG9yO1xuICAgIH1cblxuICAgIGluaXQoKSB7XG4gICAgICAgIHRoaXMuQXBwID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwKTtcbiAgICAgICAgLy9tYWtpbmcgdGhlIGNvZGUgY29tcGF0aWJsZSBpbiBib3RoIHRoZSBKSVQgYW5kIEFPVCBtb2Rlc1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldCA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChXaWRnZXRSZWYpIDogaW5qZWN0KFdpZGdldFJlZik7XG5cbiAgICAgICAgdGhpcy5wcmVmYWJNbmdyID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFByZWZhYk1hbmFnZXJTZXJ2aWNlKSA6IGluamVjdChQcmVmYWJNYW5hZ2VyU2VydmljZSk7XG4gICAgICAgIHRoaXMuaTE4blNlcnZpY2UgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQWJzdHJhY3RJMThuU2VydmljZSkgOiBpbmplY3QoQWJzdHJhY3RJMThuU2VydmljZSk7XG4gICAgICAgIHRoaXMuc2NyaXB0TG9hZGVyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChTY3JpcHRMb2FkZXJTZXJ2aWNlKSA6IGluamVjdChTY3JpcHRMb2FkZXJTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5WaWV3cG9ydCA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChWaWV3cG9ydCkgOiBpbmplY3QoVmlld3BvcnQpO1xuXG4gICAgICAgIHRoaXMudmlld1BhcmVudCA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LnZpZXdQYXJlbnQ7XG5cbiAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudC5yZWdpc3RlckZyYWdtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQucmVnaXN0ZXJGcmFnbWVudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc3BhKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VEaXJlY3RpdmUgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoU3BhUGFnZURpcmVjdGl2ZSkgOiBpbmplY3QoU3BhUGFnZURpcmVjdGl2ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VEaXJlY3RpdmUgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoUGFnZURpcmVjdGl2ZSkgOiBpbmplY3QoUGFnZURpcmVjdGl2ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGFnZURpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcih0aGlzLnBhZ2VEaXJlY3RpdmUuc3Vic2NyaWJlKCdhdHRhY2gnLCBkYXRhID0+IHRoaXMubmdPbkF0dGFjaChkYXRhLnJlZnJlc2hEYXRhKSkpO1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcih0aGlzLnBhZ2VEaXJlY3RpdmUuc3Vic2NyaWJlKCdkZXRhY2gnLCAoKSA9PiB0aGlzLm5nT25EZXRhY2goKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVnaXN0ZXIgZnVuY3Rpb25zIGZvciBiaW5kaW5nIGV2YWx1YXRpb25cbiAgICAgICAgdGhpcy5yZWdpc3RlckV4cHJlc3Npb25zKCk7XG4gICAgICAgIHRoaXMuaW5pdFVzZXJTY3JpcHQoKTtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyV2lkZ2V0cygpO1xuICAgICAgICB0aGlzLmluaXRWYXJpYWJsZXMoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclByb3BzKCk7XG4gICAgICAgIHRoaXMuZGVmaW5lSTE4blByb3BzKCk7XG4gICAgICAgIHN1cGVyLmluaXQoKTtcbiAgICB9XG5cbiAgICByZWdpc3RlcldpZGdldHMoKSB7XG4gICAgICAgIHRoaXMuV2lkZ2V0cyA9IHt9O1xuICAgICAgICB0aGlzLldpZGdldHMgPSB7fTt0aGlzLmNvbnRhaW5lcldpZGdldC5XaWRnZXRzID0gdGhpcy5XaWRnZXRzO1xuICAgIH1cblxuICAgIGluaXRVc2VyU2NyaXB0KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5ldmFsVXNlclNjcmlwdCh0aGlzLCB0aGlzLkFwcCwgdGhpcy5pbmplY3Rvci5nZXQoVXRpbHNTZXJ2aWNlKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGluIGV2YWx1YXRpbmcgcHJlZmFiICgke3RoaXMucHJlZmFiTmFtZX0pIHNjcmlwdFxcbmAsIGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJDaGFuZ2VMaXN0ZW5lcnMoKSB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LnJlZ2lzdGVyUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcih0aGlzLm9uUHJvcGVydHlDaGFuZ2UpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5yZWdpc3RlclN0eWxlQ2hhbmdlTGlzdGVuZXIodGhpcy5vblByb3BlcnR5Q2hhbmdlKTtcbiAgICB9XG5cbiAgICByZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihmbjogRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4gZm4oKSk7XG4gICAgfVxuXG4gICAgZGVmaW5lSTE4blByb3BzKCkge1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IHRoaXMuaTE4blNlcnZpY2UuZ2V0UHJlZmFiTG9jYWxlQnVuZGxlKHRoaXMucHJlZmFiTmFtZSk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJQcm9wcygpIHtcbiAgICAgICAgdGhpcy5wcmVmYWJNbmdyLmdldENvbmZpZyh0aGlzLnByZWZhYk5hbWUpXG4gICAgICAgICAgICAudGhlbihjb25maWcgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlOYW1lID0gY29uZmlnLmRpc3BsYXlOYW1lO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcygoY29uZmlnLnByb3BlcnRpZXMgfHwge30pKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKFtrZXksIHByb3BdOiBbc3RyaW5nLCBhbnldKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV4cHI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0cmltKHByb3AudmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgodmFsdWUsICdiaW5kOicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIgPSB2YWx1ZS5yZXBsYWNlKCdiaW5kOicsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywga2V5LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4gdGhpcy5jb250YWluZXJXaWRnZXRba2V5XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBudiA9PiB0aGlzLmNvbnRhaW5lcldpZGdldC53aWRnZXRba2V5XSA9IG52XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1tUb2RvLUNTUF06IGV4cHIgd2lsbCBiZSBnZW5lcmF0ZWQgd2l0aCBwcmVmYWIuY29tcC5leHByLnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2F0Y2goZXhwciwgdGhpcywge30sIG52ID0+IHRoaXMuY29udGFpbmVyV2lkZ2V0LndpZGdldFtrZXldID0gbnYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoKGNvbmZpZy5ldmVudHMgfHwge30pKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKFtrZXksIHByb3BdOiBbc3RyaW5nLCBhbnldKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1trZXldID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZlbnROYW1lID0ga2V5LnN1YnN0cigyKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5pbnZva2VFdmVudENhbGxiYWNrKGV2ZW50TmFtZSwgeyRldmVudDogYXJnc1swXSwgJGRhdGE6IGFyZ3NbMV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoKGNvbmZpZy5tZXRob2RzIHx8IHt9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChba2V5LCBwcm9wXTogW3N0cmluZywgYW55XSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0W2tleV0gPSAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNba2V5XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW2tleV0uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgZXJyb3IgaW4gZXhlY3V0aW5nIHByZWZhYi0ke3RoaXMucHJlZmFiTmFtZX0gbWV0aG9kLSR7a2V5fWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5zZXRQcm9wcyhjb25maWcpO1xuICAgICAgICAgICAgICAgIC8vIFJlYXNzaWduaW5nIHRoZSBwcm94eSBoYW5kbGVyIGZvciBwcmVmYWIgaW5ib3VuZCBwcm9wZXJ0aWVzIGFzIHdlXG4gICAgICAgICAgICAgICAgLy8gd2lsbCBnZXQgdGhlbSBvbmx5IGFmdGVyIHRoZSBwcmVmYWIgY29uZmlnIGNhbGwuXG4gICAgICAgICAgICAgICAgaWYgKGlzSUUoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC53aWRnZXQgPSB0aGlzLmNvbnRhaW5lcldpZGdldC5jcmVhdGVQcm94eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluaXRWYXJpYWJsZXMoKSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChWYXJpYWJsZXNTZXJ2aWNlKTtcblxuICAgICAgICAvLyBnZXQgdmFyaWFibGVzIGFuZCBhY3Rpb25zIGluc3RhbmNlcyBmb3IgdGhlIHBhZ2VcbiAgICAgICAgY29uc3QgdmFyaWFibGVDb2xsZWN0aW9uID0gdmFyaWFibGVzU2VydmljZS5yZWdpc3Rlcih0aGlzLnByZWZhYk5hbWUsIHRoaXMuZ2V0VmFyaWFibGVzKCksIHRoaXMpO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBuYW1lc3BhY2UgZm9yIFZhcmlhYmxlcyBuYWQgQWN0aW9ucyBvbiBwYWdlL3BhcnRpYWwsIHdoaWNoIGluaGVyaXRzIHRoZSBWYXJpYWJsZXMgYW5kIEFjdGlvbnMgZnJvbSBBcHAgaW5zdGFuY2VcbiAgICAgICAgdGhpcy5WYXJpYWJsZXMgPSB7fTtcbiAgICAgICAgdGhpcy5BY3Rpb25zID0ge307XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LlZhcmlhYmxlcyA9IHRoaXMuVmFyaWFibGVzO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5BY3Rpb25zID0gdGhpcy5BY3Rpb25zO1xuXG4gICAgICAgIC8vIGFzc2lnbiBhbGwgdGhlIHBhZ2UgdmFyaWFibGVzIHRvIHRoZSBwYWdlSW5zdGFuY2VcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVDb2xsZWN0aW9uLlZhcmlhYmxlcykuZm9yRWFjaCgoW25hbWUsIHZhcmlhYmxlXSkgPT4gdGhpcy5WYXJpYWJsZXNbbmFtZV0gPSB2YXJpYWJsZSk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlQ29sbGVjdGlvbi5BY3Rpb25zKS5mb3JFYWNoKChbbmFtZSwgYWN0aW9uXSkgPT4gdGhpcy5BY3Rpb25zW25hbWVdID0gYWN0aW9uKTtcblxuXG4gICAgICAgIHRoaXMudmlld0luaXQkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiB7XG4gICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodmFyaWFibGVDb2xsZWN0aW9uLlZhcmlhYmxlcykuY2F0Y2gobm9vcCk7XG4gICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmdW5jdGlvbiB0byByZWdpc3RlciBiaW5kIGV4cHJlc3Npb25zIGdlbmVyYXRlZCBpbiB0aGlzIHBhZ2UgaW5zdGFuY2VcbiAgICAgKiBnZXRFeHByZXNzaW9ucyBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHRoZSBnZW5lcmF0ZWQgcGFnZS5jb21wLnRzIGZpbGVcbiAgICAgKiBAcGFyYW0gZXhwcmVzc2lvbnMsIG1hcCBvZiBiaW5kIGV4cHJlc3Npb24gdnMgZ2VuZXJhdGVkIGZ1bmN0aW9uXG4gICAgICovXG4gICAgcmVnaXN0ZXJFeHByZXNzaW9ucygpIHtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbnMgPSB0aGlzLmdldEV4cHJlc3Npb25zKCk7XG4gICAgICAgIGVhY2goZXhwcmVzc2lvbnMsIChmbiwgZXhwcikgPT4ge1xuICAgICAgICAgICAgcmVnaXN0ZXJGbkJ5RXhwcihleHByLCBmblswXSwgZm5bMV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbnZva2VPblJlYWR5KCkge1xuICAgICAgICAvLyB0cmlnZ2VyaW5nIHdhdGNoZXJzIHNvIHZhcmlhYmxlcyBhbmQgcHJvcGVydGllcnMgd2F0Y2hpbmcgb3ZlciBhbiBleHByZXNzaW9uIGFyZSB1cGRhdGVkXG4gICAgICAgICRpbnZva2VXYXRjaGVycyh0cnVlLCB0cnVlKTtcbiAgICAgICAgdGhpcy5vblJlYWR5KCk7XG4gICAgICAgIGlmICh0aGlzLnZpZXdQYXJlbnQucmVzb2x2ZUZyYWdtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQucmVzb2x2ZUZyYWdtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQuaW52b2tlRXZlbnRDYWxsYmFjaygnbG9hZCcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFNjcmlwdHMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NyaXB0c1JlcXVpcmVkID0gdGhpcy5wcmVmYWJDb250YWluZXJEaXJlY3RpdmUuJGVsZW1lbnQuYXR0cignc2NyaXB0cy10by1sb2FkJyk7XG4gICAgICAgICAgICBpZiAoc2NyaXB0c1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5sb2FkKC4uLnNjcmlwdHNSZXF1aXJlZC5zcGxpdCgnLCcpKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNvbHZlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBtdXRlKCkge1xuICAgICAgICBjb25zdCBtID0gbyA9PiB7IG8gJiYgby5tdXRlICYmIG8ubXV0ZSgpOyB9O1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgbSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIG0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgbSk7XG4gICAgfVxuXG4gICAgdW5tdXRlKCkge1xuICAgICAgICBjb25zdCB1bSA9IG8gPT4geyBvICYmIG8udW5tdXRlICYmIG8udW5tdXRlKCk7IH07XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB1bSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIHVtKTtcbiAgICAgICAgZWFjaCh0aGlzLkFjdGlvbnMsIHVtKTtcbiAgICB9XG5cbiAgICBuZ09uQXR0YWNoKHJlZnJlc2hEYXRhKSB7XG4gICAgICAgIHRoaXMudW5tdXRlKCk7XG4gICAgICAgIGlmKHJlZnJlc2hEYXRhKSB7XG4gICAgICAgICAgICBjb25zdCByZWZyZXNoID0gdiA9PiB7IHYgJiYgdi5zdGFydFVwZGF0ZSAmJiB2Lmludm9rZSAmJiB2Lmludm9rZSgpOyB9O1xuICAgICAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgcmVmcmVzaCk7XG4gICAgICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgcmVmcmVzaCk7XG4gICAgICAgIH1cbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHcgPT4gdyAmJiB3Lm5nT25BdHRhY2ggJiYgdy5uZ09uQXR0YWNoKCkpO1xuICAgIH1cblxuICAgIG5nT25EZXRhY2goKSB7XG4gICAgICAgIHRoaXMubXV0ZSgpO1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgdyA9PiB3ICYmIHcubmdPbkRldGFjaCAmJiB3Lm5nT25EZXRhY2goKSk7XG4gICAgfVxuXG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZFNjcmlwdHMoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcGlsZUNvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckNoYW5nZUxpc3RlbmVycygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gdHJpZ2dlciB2aWV3SW5pdCQuY29tcGxldGUgYWZ0ZXIgYSB0aW1lb3V0IHNvIHRoYXQgdGhlIHdpZGdldCBsaXN0ZW5lcnMgYXJlIHJlYWR5IGJlZm9yZSBWYXJpYWJsZSB4aHIgY2FsbC5cbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdJbml0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZnJhZ21lbnRzTG9hZGVkJC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4gdGhpcy5pbnZva2VPblJlYWR5KCkpO1xuICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogVW53YXRjaCBhbGwgUHJlZmFiLXNjb3BlZCB3YXRjaGVycyBmb3IgVEhJUyBzcGVjaWZpYyBwcmVmYWIgd2hlbiBwcmVmYWIgaXMgZGVzdHJveWVkXG4gICAgICAgIC8vIE9ubHkgdW53YXRjaCB3YXRjaGVycyBmb3IgdGhpcyBwcmVmYWIsIG5vdCBhbGwgcHJlZmFicyAob3RoZXIgcHJlZmFicyBtYXkgc3RpbGwgYmUgb24gdGhlIHBhZ2UpXG4gICAgICAgIGlmICh0aGlzLnByZWZhYk5hbWUpIHtcbiAgICAgICAgICAgICR1bndhdGNoQWxsQnlTY29wZSgnUHJlZmFiJywgdGhpcy5wcmVmYWJOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENvbXBsZXRlIFN1YmplY3RzIHRvIHJlbGVhc2Ugc3Vic2NyaXB0aW9uc1xuICAgICAgICBpZiAodGhpcy5kZXN0cm95JCkge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95JCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmlld0luaXQkKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdJbml0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgdGhpcy52aWV3SW5pdCQgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciByZWZlcmVuY2VzIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzXG4gICAgICAgIHRoaXMuV2lkZ2V0cyA9IG51bGw7XG4gICAgICAgIHRoaXMuVmFyaWFibGVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5BY3Rpb25zID0gbnVsbDtcbiAgICAgICAgdGhpcy5BcHAgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldCA9IG51bGw7XG4gICAgICAgIHRoaXMucHJlZmFiTW5nciA9IG51bGw7XG4gICAgICAgIHRoaXMuaTE4blNlcnZpY2UgPSBudWxsO1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IG51bGw7XG4gICAgICAgIHRoaXMucHJlZmFiQ29udGFpbmVyRGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5wYWdlRGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgdGhpcy5WaWV3cG9ydCA9IG51bGw7XG4gICAgICAgIHRoaXMudmlld1BhcmVudCA9IG51bGw7XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhbnVwIEZyYWdtZW50TW9uaXRvciByZXNvdXJjZXNcbiAgICAgICAgdGhpcy5jbGVhbnVwRnJhZ21lbnRNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgLy8gdXNlciBvdmVycmlkZXMgdGhpc1xuICAgIG9uUHJvcGVydHlDaGFuZ2UoKSB7fVxuXG4gICAgb25SZWFkeSgpIHt9XG5cbn1cbiJdfQ==
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcmVmYWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9jb21wb25lbnRzL2Jhc2UtcHJlZmFiLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksTUFBTSxFQUFhLFNBQVMsRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNILE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLEdBQUcsRUFDSCxJQUFJLEVBQ0osSUFBSSxFQUNKLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osZUFBZSxFQUNmLFFBQVEsRUFDUixnQkFBZ0IsRUFDbkIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFHakQsTUFBTSxPQUFnQixtQkFBb0IsU0FBUSxlQUFlO0lBRGpFOztRQWVJLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBSWYsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFOUIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFD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QVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBRXZCLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLGdCQUFnQixLQUFJLENBQUM7SUFFckIsT0FBTyxLQUFJLENBQUM7K0dBNVNNLG1CQUFtQjttR0FBbkIsbUJBQW1CLG9GQVkxQix3QkFBd0I7OzRGQVpqQixtQkFBbUI7a0JBRHhDLFNBQVM7OEJBYWtELHdCQUF3QjtzQkFBL0UsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgaW5qZWN0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgRGlyZWN0aXZlLCBBZnRlclZpZXdDaGVja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgJHdhdGNoLFxuICAgICR1bndhdGNoQWxsQnlTY29wZSxcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIEFwcCxcbiAgICBpc0lFLFxuICAgIG5vb3AsXG4gICAgU2NyaXB0TG9hZGVyU2VydmljZSxcbiAgICBVdGlsc1NlcnZpY2UsXG4gICAgJGludm9rZVdhdGNoZXJzLFxuICAgIFZpZXdwb3J0LFxuICAgIHJlZ2lzdGVyRm5CeUV4cHJcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgV2lkZ2V0UmVmfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IFBhZ2VEaXJlY3RpdmUsIFNwYVBhZ2VEaXJlY3RpdmUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7IFByZWZhYkNvbnRhaW5lckRpcmVjdGl2ZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3ByZWZhYic7XG5pbXBvcnQgeyBWYXJpYWJsZXNTZXJ2aWNlIH0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5cbmltcG9ydCB7IFByZWZhYk1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJlZmFiLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGcmFnbWVudE1vbml0b3IgfSBmcm9tICcuLi91dGlsL2ZyYWdtZW50LW1vbml0b3InO1xuaW1wb3J0IHtlYWNoLCBzdGFydHNXaXRoLCB0cmltfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VQcmVmYWJDb21wb25lbnQgZXh0ZW5kcyBGcmFnbWVudE1vbml0b3IgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3kge1xuICAgIFdpZGdldHM6IGFueTtcbiAgICBWYXJpYWJsZXM6IGFueTtcbiAgICBBY3Rpb25zOiBhbnk7XG4gICAgQXBwOiBBcHA7XG4gICAgaW5qZWN0b3I6IEluamVjdG9yO1xuICAgIGNvbnRhaW5lcldpZGdldDogYW55O1xuICAgIHByZWZhYk1uZ3I6IFByZWZhYk1hbmFnZXJTZXJ2aWNlO1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgcHJlZmFiTmFtZTogc3RyaW5nO1xuICAgIGkxOG5TZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlO1xuICAgIGFwcExvY2FsZTogYW55O1xuICAgIEBWaWV3Q2hpbGQoUHJlZmFiQ29udGFpbmVyRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJlZmFiQ29udGFpbmVyRGlyZWN0aXZlPzogUHJlZmFiQ29udGFpbmVyRGlyZWN0aXZlO1xuICAgIHNjcmlwdExvYWRlclNlcnZpY2U6IFNjcmlwdExvYWRlclNlcnZpY2U7XG4gICAgY29tcGlsZUNvbnRlbnQgPSBmYWxzZTtcbiAgICBwYWdlRGlyZWN0aXZlOiBQYWdlRGlyZWN0aXZlIHwgU3BhUGFnZURpcmVjdGl2ZTtcbiAgICBWaWV3cG9ydDogVmlld3BvcnQ7XG4gICAgc3BhOiBib29sZWFuO1xuICAgIHByaXZhdGUgc2NyaXB0c0xvYWRlZCA9IGZhbHNlO1xuXG4gICAgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICAgIHZpZXdJbml0JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwcml2YXRlIHZpZXdQYXJlbnQ6IGFueTtcblxuICAgIGFic3RyYWN0IGV2YWxVc2VyU2NyaXB0KHByZWZhYkNvbnRleHQ6IGFueSwgYXBwQ29udGV4dDogYW55LCB1dGlsczogYW55KTtcbiAgICBhYnN0cmFjdCBnZXRWYXJpYWJsZXMoKTtcbiAgICBhYnN0cmFjdCBnZXRFeHByZXNzaW9ucygpO1xuXG4gICAgZ2V0Q29udGFpbmVyV2lkZ2V0SW5qZWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lcldpZGdldC5pbmogfHwgdGhpcy5jb250YWluZXJXaWRnZXQuaW5qZWN0b3I7XG4gICAgfVxuXG4gICAgaW5pdCgpIHtcbiAgICAgICAgdGhpcy5BcHAgPSB0aGlzLmluamVjdG9yLmdldChBcHApO1xuICAgICAgICAvL21ha2luZyB0aGUgY29kZSBjb21wYXRpYmxlIGluIGJvdGggdGhlIEpJVCBhbmQgQU9UIG1vZGVzXG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0ID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFdpZGdldFJlZikgOiBpbmplY3QoV2lkZ2V0UmVmKTtcblxuICAgICAgICB0aGlzLnByZWZhYk1uZ3IgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoUHJlZmFiTWFuYWdlclNlcnZpY2UpIDogaW5qZWN0KFByZWZhYk1hbmFnZXJTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5pMThuU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBYnN0cmFjdEkxOG5TZXJ2aWNlKSA6IGluamVjdChBYnN0cmFjdEkxOG5TZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFNjcmlwdExvYWRlclNlcnZpY2UpIDogaW5qZWN0KFNjcmlwdExvYWRlclNlcnZpY2UpO1xuICAgICAgICB0aGlzLlZpZXdwb3J0ID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFZpZXdwb3J0KSA6IGluamVjdChWaWV3cG9ydCk7XG5cbiAgICAgICAgdGhpcy52aWV3UGFyZW50ID0gdGhpcy5jb250YWluZXJXaWRnZXQudmlld1BhcmVudDtcblxuICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50LnJlZ2lzdGVyRnJhZ21lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudmlld1BhcmVudC5yZWdpc3RlckZyYWdtZW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zcGEpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZURpcmVjdGl2ZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChTcGFQYWdlRGlyZWN0aXZlKSA6IGluamVjdChTcGFQYWdlRGlyZWN0aXZlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGFnZURpcmVjdGl2ZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChQYWdlRGlyZWN0aXZlKSA6IGluamVjdChQYWdlRGlyZWN0aXZlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYWdlRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKHRoaXMucGFnZURpcmVjdGl2ZS5zdWJzY3JpYmUoJ2F0dGFjaCcsIGRhdGEgPT4gdGhpcy5uZ09uQXR0YWNoKGRhdGEucmVmcmVzaERhdGEpKSk7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKHRoaXMucGFnZURpcmVjdGl2ZS5zdWJzY3JpYmUoJ2RldGFjaCcsICgpID0+IHRoaXMubmdPbkRldGFjaCgpKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZWdpc3RlciBmdW5jdGlvbnMgZm9yIGJpbmRpbmcgZXZhbHVhdGlvblxuICAgICAgICB0aGlzLnJlZ2lzdGVyRXhwcmVzc2lvbnMoKTtcbiAgICAgICAgdGhpcy5pbml0VXNlclNjcmlwdCgpO1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJXaWRnZXRzKCk7XG4gICAgICAgIHRoaXMuaW5pdFZhcmlhYmxlcygpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyUHJvcHMoKTtcbiAgICAgICAgdGhpcy5kZWZpbmVJMThuUHJvcHMoKTtcbiAgICAgICAgc3VwZXIuaW5pdCgpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyV2lkZ2V0cygpIHtcbiAgICAgICAgdGhpcy5XaWRnZXRzID0ge307XG4gICAgICAgIHRoaXMuV2lkZ2V0cyA9IHt9O3RoaXMuY29udGFpbmVyV2lkZ2V0LldpZGdldHMgPSB0aGlzLldpZGdldHM7XG4gICAgfVxuXG4gICAgaW5pdFVzZXJTY3JpcHQoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmV2YWxVc2VyU2NyaXB0KHRoaXMsIHRoaXMuQXBwLCB0aGlzLmluamVjdG9yLmdldChVdGlsc1NlcnZpY2UpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgaW4gZXZhbHVhdGluZyBwcmVmYWIgKCR7dGhpcy5wcmVmYWJOYW1lfSkgc2NyaXB0XFxuYCwgZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3RlckNoYW5nZUxpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQucmVnaXN0ZXJQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyKHRoaXMub25Qcm9wZXJ0eUNoYW5nZSk7XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LnJlZ2lzdGVyU3R5bGVDaGFuZ2VMaXN0ZW5lcih0aGlzLm9uUHJvcGVydHlDaGFuZ2UpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKGZuOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiBmbigpKTtcbiAgICB9XG5cbiAgICBkZWZpbmVJMThuUHJvcHMoKSB7XG4gICAgICAgIHRoaXMuYXBwTG9jYWxlID0gdGhpcy5pMThuU2VydmljZS5nZXRQcmVmYWJMb2NhbGVCdW5kbGUodGhpcy5wcmVmYWJOYW1lKTtcbiAgICB9XG5cbiAgICByZWdpc3RlclByb3BzKCkge1xuICAgICAgICB0aGlzLnByZWZhYk1uZ3IuZ2V0Q29uZmlnKHRoaXMucHJlZmFiTmFtZSlcbiAgICAgICAgICAgIC50aGVuKGNvbmZpZyA9PiB7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU5hbWUgPSBjb25maWcuZGlzcGxheU5hbWU7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKChjb25maWcucHJvcGVydGllcyB8fCB7fSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoW2tleSwgcHJvcF06IFtzdHJpbmcsIGFueV0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXhwcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRyaW0ocHJvcC52YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRzV2l0aCh2YWx1ZSwgJ2JpbmQ6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwciA9IHZhbHVlLnJlcGxhY2UoJ2JpbmQ6JywgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBrZXksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmNvbnRhaW5lcldpZGdldFtrZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IG52ID0+IHRoaXMuY29udGFpbmVyV2lkZ2V0LndpZGdldFtrZXldID0gbnZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHByKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vW1RvZG8tQ1NQXTogZXhwciB3aWxsIGJlIGdlbmVyYXRlZCB3aXRoIHByZWZhYi5jb21wLmV4cHIudHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3YXRjaChleHByLCB0aGlzLCB7fSwgbnYgPT4gdGhpcy5jb250YWluZXJXaWRnZXQud2lkZ2V0W2tleV0gPSBudilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcygoY29uZmlnLmV2ZW50cyB8fCB7fSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoW2tleSwgcHJvcF06IFtzdHJpbmcsIGFueV0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2tleV0gPSAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBldmVudE5hbWUgPSBrZXkuc3Vic3RyKDIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0Lmludm9rZUV2ZW50Q2FsbGJhY2soZXZlbnROYW1lLCB7JGV2ZW50OiBhcmdzWzBdLCAkZGF0YTogYXJnc1sxXX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcygoY29uZmlnLm1ldGhvZHMgfHwge30pKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKFtrZXksIHByb3BdOiBbc3RyaW5nLCBhbnldKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXRba2V5XSA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1trZXldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNba2V5XS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBlcnJvciBpbiBleGVjdXRpbmcgcHJlZmFiLSR7dGhpcy5wcmVmYWJOYW1lfSBtZXRob2QtJHtrZXl9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LnNldFByb3BzKGNvbmZpZyk7XG4gICAgICAgICAgICAgICAgLy8gUmVhc3NpZ25pbmcgdGhlIHByb3h5IGhhbmRsZXIgZm9yIHByZWZhYiBpbmJvdW5kIHByb3BlcnRpZXMgYXMgd2VcbiAgICAgICAgICAgICAgICAvLyB3aWxsIGdldCB0aGVtIG9ubHkgYWZ0ZXIgdGhlIHByZWZhYiBjb25maWcgY2FsbC5cbiAgICAgICAgICAgICAgICBpZiAoaXNJRSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LndpZGdldCA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LmNyZWF0ZVByb3h5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5pdFZhcmlhYmxlcygpIHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVzU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFZhcmlhYmxlc1NlcnZpY2UpO1xuXG4gICAgICAgIC8vIGdldCB2YXJpYWJsZXMgYW5kIGFjdGlvbnMgaW5zdGFuY2VzIGZvciB0aGUgcGFnZVxuICAgICAgICBjb25zdCB2YXJpYWJsZUNvbGxlY3Rpb24gPSB2YXJpYWJsZXNTZXJ2aWNlLnJlZ2lzdGVyKHRoaXMucHJlZmFiTmFtZSwgdGhpcy5nZXRWYXJpYWJsZXMoKSwgdGhpcyk7XG5cbiAgICAgICAgLy8gY3JlYXRlIG5hbWVzcGFjZSBmb3IgVmFyaWFibGVzIG5hZCBBY3Rpb25zIG9uIHBhZ2UvcGFydGlhbCwgd2hpY2ggaW5oZXJpdHMgdGhlIFZhcmlhYmxlcyBhbmQgQWN0aW9ucyBmcm9tIEFwcCBpbnN0YW5jZVxuICAgICAgICB0aGlzLlZhcmlhYmxlcyA9IHt9O1xuICAgICAgICB0aGlzLkFjdGlvbnMgPSB7fTtcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQuVmFyaWFibGVzID0gdGhpcy5WYXJpYWJsZXM7XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LkFjdGlvbnMgPSB0aGlzLkFjdGlvbnM7XG5cbiAgICAgICAgLy8gYXNzaWduIGFsbCB0aGUgcGFnZSB2YXJpYWJsZXMgdG8gdGhlIHBhZ2VJbnN0YW5jZVxuICAgICAgICBPYmplY3QuZW50cmllcyh2YXJpYWJsZUNvbGxlY3Rpb24uVmFyaWFibGVzKS5mb3JFYWNoKChbbmFtZSwgdmFyaWFibGVdKSA9PiB0aGlzLlZhcmlhYmxlc1tuYW1lXSA9IHZhcmlhYmxlKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpLmZvckVhY2goKFtuYW1lLCBhY3Rpb25dKSA9PiB0aGlzLkFjdGlvbnNbbmFtZV0gPSBhY3Rpb24pO1xuXG5cbiAgICAgICAgdGhpcy52aWV3SW5pdCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHtcbiAgICAgICAgICAgIHZhcmlhYmxlQ29sbGVjdGlvbi5jYWxsYmFjayh2YXJpYWJsZUNvbGxlY3Rpb24uVmFyaWFibGVzKS5jYXRjaChub29wKTtcbiAgICAgICAgICAgIHZhcmlhYmxlQ29sbGVjdGlvbi5jYWxsYmFjayh2YXJpYWJsZUNvbGxlY3Rpb24uQWN0aW9ucyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIGJpbmQgZXhwcmVzc2lvbnMgZ2VuZXJhdGVkIGluIHRoaXMgcGFnZSBpbnN0YW5jZVxuICAgICAqIGdldEV4cHJlc3Npb25zIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gdGhlIGdlbmVyYXRlZCBwYWdlLmNvbXAudHMgZmlsZVxuICAgICAqIEBwYXJhbSBleHByZXNzaW9ucywgbWFwIG9mIGJpbmQgZXhwcmVzc2lvbiB2cyBnZW5lcmF0ZWQgZnVuY3Rpb25cbiAgICAgKi9cbiAgICByZWdpc3RlckV4cHJlc3Npb25zKCkge1xuICAgICAgICBjb25zdCBleHByZXNzaW9ucyA9IHRoaXMuZ2V0RXhwcmVzc2lvbnMoKTtcbiAgICAgICAgZWFjaChleHByZXNzaW9ucywgKGZuLCBleHByKSA9PiB7XG4gICAgICAgICAgICByZWdpc3RlckZuQnlFeHByKGV4cHIsIGZuWzBdLCBmblsxXSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGludm9rZU9uUmVhZHkoKSB7XG4gICAgICAgIC8vIHRyaWdnZXJpbmcgd2F0Y2hlcnMgc28gdmFyaWFibGVzIGFuZCBwcm9wZXJ0aWVycyB3YXRjaGluZyBvdmVyIGFuIGV4cHJlc3Npb24gYXJlIHVwZGF0ZWRcbiAgICAgICAgJGludm9rZVdhdGNoZXJzKHRydWUsIHRydWUpO1xuICAgICAgICB0aGlzLm9uUmVhZHkoKTtcbiAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudC5yZXNvbHZlRnJhZ21lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudmlld1BhcmVudC5yZXNvbHZlRnJhZ21lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5pbnZva2VFdmVudENhbGxiYWNrKCdsb2FkJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkU2NyaXB0cygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucHJlZmFiQ29udGFpbmVyRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2NyaXB0c1JlcXVpcmVkID0gdGhpcy5wcmVmYWJDb250YWluZXJEaXJlY3RpdmUuJGVsZW1lbnQuYXR0cignc2NyaXB0cy10by1sb2FkJyk7XG4gICAgICAgICAgICBpZiAoc2NyaXB0c1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5sb2FkKC4uLnNjcmlwdHNSZXF1aXJlZC5zcGxpdCgnLCcpKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNvbHZlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBtdXRlKCkge1xuICAgICAgICBjb25zdCBtID0gbyA9PiB7IG8gJiYgby5tdXRlICYmIG8ubXV0ZSgpOyB9O1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgbSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIG0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgbSk7XG4gICAgfVxuXG4gICAgdW5tdXRlKCkge1xuICAgICAgICBjb25zdCB1bSA9IG8gPT4geyBvICYmIG8udW5tdXRlICYmIG8udW5tdXRlKCk7IH07XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB1bSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIHVtKTtcbiAgICAgICAgZWFjaCh0aGlzLkFjdGlvbnMsIHVtKTtcbiAgICB9XG5cbiAgICBuZ09uQXR0YWNoKHJlZnJlc2hEYXRhKSB7XG4gICAgICAgIHRoaXMudW5tdXRlKCk7XG4gICAgICAgIGlmKHJlZnJlc2hEYXRhKSB7XG4gICAgICAgICAgICBjb25zdCByZWZyZXNoID0gdiA9PiB7IHYgJiYgdi5zdGFydFVwZGF0ZSAmJiB2Lmludm9rZSAmJiB2Lmludm9rZSgpOyB9O1xuICAgICAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgcmVmcmVzaCk7XG4gICAgICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgcmVmcmVzaCk7XG4gICAgICAgIH1cbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHcgPT4gdyAmJiB3Lm5nT25BdHRhY2ggJiYgdy5uZ09uQXR0YWNoKCkpO1xuICAgIH1cblxuICAgIG5nT25EZXRhY2goKSB7XG4gICAgICAgIHRoaXMubXV0ZSgpO1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgdyA9PiB3ICYmIHcubmdPbkRldGFjaCAmJiB3Lm5nT25EZXRhY2goKSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2NyaXB0c0xvYWRlZCAmJiB0aGlzLnByZWZhYkNvbnRhaW5lckRpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5zY3JpcHRzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubG9hZFNjcmlwdHMoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBpbGVDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyQ2hhbmdlTGlzdGVuZXJzKCk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgdmlld0luaXQkLmNvbXBsZXRlIGFmdGVyIGEgdGltZW91dCBzbyB0aGF0IHRoZSB3aWRnZXQgbGlzdGVuZXJzIGFyZSByZWFkeSBiZWZvcmUgVmFyaWFibGUgeGhyIGNhbGwuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0luaXQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJhZ21lbnRzTG9hZGVkJC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4gdGhpcy5pbnZva2VPblJlYWR5KCkpO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFVud2F0Y2ggYWxsIFByZWZhYi1zY29wZWQgd2F0Y2hlcnMgZm9yIFRISVMgc3BlY2lmaWMgcHJlZmFiIHdoZW4gcHJlZmFiIGlzIGRlc3Ryb3llZFxuICAgICAgICAvLyBPbmx5IHVud2F0Y2ggd2F0Y2hlcnMgZm9yIHRoaXMgcHJlZmFiLCBub3QgYWxsIHByZWZhYnMgKG90aGVyIHByZWZhYnMgbWF5IHN0aWxsIGJlIG9uIHRoZSBwYWdlKVxuICAgICAgICBpZiAodGhpcy5wcmVmYWJOYW1lKSB7XG4gICAgICAgICAgICAkdW53YXRjaEFsbEJ5U2NvcGUoJ1ByZWZhYicsIHRoaXMucHJlZmFiTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENvbXBsZXRlIFN1YmplY3RzIHRvIHJlbGVhc2Ugc3Vic2NyaXB0aW9uc1xuICAgICAgICBpZiAodGhpcy5kZXN0cm95JCkge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95JCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmlld0luaXQkKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdJbml0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgdGhpcy52aWV3SW5pdCQgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciByZWZlcmVuY2VzIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzXG4gICAgICAgIHRoaXMuV2lkZ2V0cyA9IG51bGw7XG4gICAgICAgIHRoaXMuVmFyaWFibGVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5BY3Rpb25zID0gbnVsbDtcbiAgICAgICAgdGhpcy5BcHAgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldCA9IG51bGw7XG4gICAgICAgIHRoaXMucHJlZmFiTW5nciA9IG51bGw7XG4gICAgICAgIHRoaXMuaTE4blNlcnZpY2UgPSBudWxsO1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IG51bGw7XG4gICAgICAgIHRoaXMucHJlZmFiQ29udGFpbmVyRGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5wYWdlRGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgdGhpcy5WaWV3cG9ydCA9IG51bGw7XG4gICAgICAgIHRoaXMudmlld1BhcmVudCA9IG51bGw7XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhbnVwIEZyYWdtZW50TW9uaXRvciByZXNvdXJjZXNcbiAgICAgICAgdGhpcy5jbGVhbnVwRnJhZ21lbnRNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgLy8gdXNlciBvdmVycmlkZXMgdGhpc1xuICAgIG9uUHJvcGVydHlDaGFuZ2UoKSB7fVxuXG4gICAgb25SZWFkeSgpIHt9XG5cbn1cbiJdfQ==