@veloceapps/sdk 8.0.0-17 → 8.0.0-171

Sign up to get free protection for your applications and to get access to all the features.
Files changed (347) hide show
  1. package/README.md +0 -1
  2. package/cms/README.md +0 -20
  3. package/cms/cms.actions.d.ts +7 -1
  4. package/cms/components/preview/preview.component.d.ts +2 -3
  5. package/cms/components/preview/preview.types.d.ts +4 -0
  6. package/cms/index.d.ts +1 -0
  7. package/cms/modules/runtime/services/runtime.service.d.ts +1 -1
  8. package/cms/services/index.d.ts +0 -1
  9. package/cms/types/index.d.ts +0 -1
  10. package/cms/utils/element-metadata-worker.d.ts +11 -0
  11. package/cms/utils/elements-resolver.d.ts +0 -2
  12. package/cms/utils/index.d.ts +3 -0
  13. package/cms/utils/transpilation-worker.d.ts +13 -0
  14. package/cms/vendor-map.d.ts +26 -15
  15. package/core/README.md +20 -0
  16. package/core/modules/configuration/configuration.module.d.ts +2 -1
  17. package/core/modules/configuration/helpers.d.ts +4 -3
  18. package/core/modules/configuration/index.d.ts +1 -1
  19. package/core/modules/configuration/services/configuration-runtime.service.d.ts +1 -1
  20. package/core/modules/configuration/services/configuration-state.service.d.ts +51 -0
  21. package/core/modules/configuration/services/configuration.service.d.ts +10 -5
  22. package/core/modules/configuration/types/configuration.types.d.ts +4 -0
  23. package/core/modules/flow-configuration/flow-configuration.module.d.ts +2 -1
  24. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +5 -0
  25. package/core/pipes/action-code.pipe.d.ts +8 -0
  26. package/core/pipes/date.pipe.d.ts +2 -1
  27. package/core/pipes/index.d.ts +1 -0
  28. package/core/pipes/pipes.module.d.ts +2 -1
  29. package/core/services/context.service.d.ts +4 -0
  30. package/core/services/flow-info.service.d.ts +29 -0
  31. package/core/services/flow-state-configuration.service.d.ts +19 -0
  32. package/core/services/flow-state.service.d.ts +79 -0
  33. package/core/services/index.d.ts +4 -1
  34. package/core/services/quote-draft.service.d.ts +8 -1
  35. package/core/services/runtime-settings.service.d.ts +4 -1
  36. package/core/types/flow-customization.types.d.ts +22 -0
  37. package/core/types/flow-state.types.d.ts +6 -0
  38. package/core/types/formatting-settings.types.d.ts +2 -0
  39. package/core/types/index.d.ts +3 -0
  40. package/{cms → core}/types/integration.types.d.ts +1 -0
  41. package/core/types/pipe.types.d.ts +1 -0
  42. package/core/utils/line-item.utils.d.ts +0 -1
  43. package/esm2020/cms/cms.actions.mjs +15 -1
  44. package/esm2020/cms/components/element-children/element-children.component.mjs +3 -3
  45. package/esm2020/cms/components/element-children/element-children.module.mjs +4 -4
  46. package/esm2020/cms/components/element-drop-handle/element-drop-handle.component.mjs +3 -3
  47. package/esm2020/cms/components/element-drop-handle/element-drop-handle.module.mjs +4 -4
  48. package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +6 -6
  49. package/esm2020/cms/components/element-renderer/element-renderer.module.mjs +4 -4
  50. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +5 -5
  51. package/esm2020/cms/components/plugin.component.mjs +3 -3
  52. package/esm2020/cms/components/preview/preview.component.mjs +11 -11
  53. package/esm2020/cms/components/preview/preview.module.mjs +6 -6
  54. package/esm2020/cms/components/preview/preview.types.mjs +1 -1
  55. package/esm2020/cms/directives/custom-template.directive.mjs +7 -7
  56. package/esm2020/cms/index.mjs +2 -1
  57. package/esm2020/cms/launcher.module.mjs +7 -7
  58. package/esm2020/cms/modules/federated/federated-host.directive.mjs +3 -3
  59. package/esm2020/cms/modules/federated/federated.component.mjs +3 -3
  60. package/esm2020/cms/modules/federated/federated.module.mjs +4 -4
  61. package/esm2020/cms/modules/migrations/migrations.mjs +2 -2
  62. package/esm2020/cms/modules/migrations/migrations.module.mjs +4 -4
  63. package/esm2020/cms/modules/migrations/services/migrations.service.mjs +9 -5
  64. package/esm2020/cms/modules/runtime/runtime.module.mjs +4 -4
  65. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +14 -10
  66. package/esm2020/cms/modules/runtime/services/runtime-editor.service.mjs +3 -3
  67. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +7 -7
  68. package/esm2020/cms/plugins/configuration.plugin.mjs +11 -7
  69. package/esm2020/cms/plugins/element-hover.plugin.mjs +3 -3
  70. package/esm2020/cms/plugins/io.plugin.mjs +3 -3
  71. package/esm2020/cms/plugins/page.plugin.mjs +3 -3
  72. package/esm2020/cms/plugins/region.plugin.mjs +3 -3
  73. package/esm2020/cms/plugins/script.plugin.mjs +3 -3
  74. package/esm2020/cms/services/element-context.service.mjs +3 -3
  75. package/esm2020/cms/services/index.mjs +1 -2
  76. package/esm2020/cms/services/io-provider.service.mjs +13 -12
  77. package/esm2020/cms/services/resources.service.mjs +3 -3
  78. package/esm2020/cms/services/templates.service.mjs +13 -12
  79. package/esm2020/cms/types/index.mjs +1 -2
  80. package/esm2020/cms/utils/element-metadata-worker.mjs +31 -0
  81. package/esm2020/cms/utils/elements-resolver.mjs +14 -28
  82. package/esm2020/cms/utils/index.mjs +4 -1
  83. package/esm2020/cms/utils/path.utils.mjs +3 -3
  84. package/esm2020/cms/utils/transpilation-worker.mjs +52 -0
  85. package/esm2020/cms/vendor-map.mjs +18 -6
  86. package/esm2020/core/core.module.mjs +16 -9
  87. package/esm2020/core/directives/directives.module.mjs +4 -4
  88. package/esm2020/core/directives/primeng-calendar.directive.mjs +3 -3
  89. package/esm2020/core/modules/configuration/configuration.module.mjs +9 -25
  90. package/esm2020/core/modules/configuration/helpers.mjs +28 -3
  91. package/esm2020/core/modules/configuration/index.mjs +2 -2
  92. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +11 -14
  93. package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +299 -0
  94. package/esm2020/core/modules/configuration/services/configuration.service.mjs +70 -47
  95. package/esm2020/core/modules/configuration/services/runtime-context.service.mjs +9 -9
  96. package/esm2020/core/modules/configuration/types/configuration.types.mjs +1 -1
  97. package/esm2020/core/modules/flow-configuration/flow-configuration.module.mjs +8 -8
  98. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +13 -10
  99. package/esm2020/core/modules/flow-configuration/services/flow-update.service.mjs +3 -3
  100. package/esm2020/core/pipes/action-code.pipe.mjs +20 -0
  101. package/esm2020/core/pipes/date.pipe.mjs +13 -7
  102. package/esm2020/core/pipes/index.mjs +2 -1
  103. package/esm2020/core/pipes/number.pipe.mjs +3 -3
  104. package/esm2020/core/pipes/pipes.module.mjs +8 -7
  105. package/esm2020/core/pipes/price.pipe.mjs +3 -3
  106. package/esm2020/core/services/context.service.mjs +34 -7
  107. package/esm2020/core/services/flow-info.service.mjs +99 -0
  108. package/esm2020/core/services/flow-state-configuration.service.mjs +53 -0
  109. package/esm2020/core/services/flow-state.service.mjs +502 -0
  110. package/esm2020/core/services/index.mjs +5 -2
  111. package/esm2020/core/services/integration.state.mjs +36 -0
  112. package/esm2020/core/services/product-images.service.mjs +6 -7
  113. package/esm2020/core/services/quote-draft.service.mjs +33 -9
  114. package/esm2020/core/services/runtime-settings.service.mjs +21 -7
  115. package/esm2020/core/types/flow-customization.types.mjs +3 -0
  116. package/esm2020/core/types/flow-state.types.mjs +2 -0
  117. package/esm2020/core/types/formatting-settings.types.mjs +1 -1
  118. package/esm2020/core/types/index.mjs +4 -1
  119. package/esm2020/core/types/integration.types.mjs +2 -0
  120. package/esm2020/core/types/pipe.types.mjs +2 -0
  121. package/esm2020/core/utils/line-item.utils.mjs +30 -15
  122. package/esm2020/src/components/dialog/dialog.component.mjs +3 -3
  123. package/esm2020/src/components/dialog/dialog.module.mjs +4 -4
  124. package/esm2020/src/components/doc-gen/doc-gen.component.mjs +51 -51
  125. package/esm2020/src/components/doc-gen/doc-gen.module.mjs +4 -4
  126. package/esm2020/src/components/flow-header/flow-header.component.mjs +108 -0
  127. package/esm2020/src/components/flow-header/flow-header.module.mjs +19 -0
  128. package/esm2020/src/components/flow-header/index.mjs +2 -0
  129. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +39 -45
  130. package/esm2020/src/components/guided-selling/guided-selling.module.mjs +4 -4
  131. package/esm2020/src/configure-primeng.mjs +33 -0
  132. package/esm2020/src/flow-routing.module.mjs +66 -75
  133. package/esm2020/src/flow.component.mjs +24 -33
  134. package/esm2020/src/flow.module.mjs +11 -9
  135. package/esm2020/src/guards/context.guard.mjs +9 -14
  136. package/esm2020/src/guards/flow.guard.mjs +37 -0
  137. package/esm2020/src/guards/product-unload.guard.mjs +7 -4
  138. package/esm2020/src/guards/root.guard.mjs +17 -13
  139. package/esm2020/src/pages/assets/assets.component.mjs +34 -38
  140. package/esm2020/src/pages/assets/assets.module.mjs +4 -4
  141. package/esm2020/src/pages/catalog/catalog.component.mjs +34 -38
  142. package/esm2020/src/pages/catalog/catalog.module.mjs +4 -4
  143. package/esm2020/src/pages/debug/debug.component.mjs +12 -16
  144. package/esm2020/src/pages/debug/debug.module.mjs +4 -4
  145. package/esm2020/src/pages/empty-account/empty-account.component.mjs +3 -3
  146. package/esm2020/src/pages/empty-account/empty-account.module.mjs +4 -4
  147. package/esm2020/src/pages/product/product.component.mjs +24 -14
  148. package/esm2020/src/pages/product/product.module.mjs +4 -4
  149. package/esm2020/src/pages/record-not-found/record-not-found.component.mjs +8 -5
  150. package/esm2020/src/pages/record-not-found/record-not-found.module.mjs +4 -4
  151. package/esm2020/src/pages/remote/remote.component.mjs +20 -20
  152. package/esm2020/src/pages/remote/remote.module.mjs +4 -4
  153. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +35 -39
  154. package/esm2020/src/pages/shopping-cart/shopping-cart.module.mjs +4 -4
  155. package/esm2020/src/resolvers/flow.resolver.mjs +39 -51
  156. package/esm2020/src/resolvers/quote.resolver.mjs +57 -65
  157. package/esm2020/src/services/doc-gen.service.mjs +7 -6
  158. package/esm2020/src/services/flow-dialog.service.mjs +23 -8
  159. package/esm2020/src/services/flow-router.service.mjs +59 -18
  160. package/esm2020/src/services/flow.service.mjs +72 -25
  161. package/esm2020/src/services/guided-selling.service.mjs +8 -7
  162. package/esm2020/src/services/index.mjs +3 -1
  163. package/esm2020/src/types/index.mjs +1 -2
  164. package/esm2020/src/utils/flow.utils.mjs +6 -2
  165. package/fesm2015/veloceapps-sdk-cms.mjs +355 -271
  166. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  167. package/fesm2015/veloceapps-sdk-core.mjs +1639 -781
  168. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  169. package/fesm2015/veloceapps-sdk.mjs +828 -1541
  170. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  171. package/fesm2020/veloceapps-sdk-cms.mjs +357 -283
  172. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  173. package/fesm2020/veloceapps-sdk-core.mjs +1780 -958
  174. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  175. package/fesm2020/veloceapps-sdk.mjs +888 -1599
  176. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  177. package/package.json +7 -14
  178. package/src/components/doc-gen/doc-gen.component.d.ts +8 -9
  179. package/src/components/flow-header/flow-header.component.d.ts +25 -0
  180. package/src/components/flow-header/flow-header.module.d.ts +9 -0
  181. package/src/components/flow-header/index.d.ts +1 -0
  182. package/src/components/guided-selling/guided-selling.component.d.ts +6 -8
  183. package/src/configure-primeng.d.ts +1 -0
  184. package/src/flow-routing.module.d.ts +6 -7
  185. package/src/flow.component.d.ts +7 -11
  186. package/src/flow.module.d.ts +2 -2
  187. package/src/guards/context.guard.d.ts +4 -5
  188. package/src/guards/flow.guard.d.ts +2 -0
  189. package/src/guards/product-unload.guard.d.ts +2 -2
  190. package/src/guards/root.guard.d.ts +0 -1
  191. package/src/pages/assets/assets.component.d.ts +5 -7
  192. package/src/pages/catalog/catalog.component.d.ts +5 -7
  193. package/src/pages/debug/debug.component.d.ts +5 -8
  194. package/src/pages/product/product.component.d.ts +7 -6
  195. package/src/pages/record-not-found/record-not-found.component.d.ts +2 -0
  196. package/src/pages/remote/remote.component.d.ts +2 -3
  197. package/src/pages/shopping-cart/shopping-cart.component.d.ts +5 -7
  198. package/src/resolvers/flow.resolver.d.ts +6 -7
  199. package/src/resolvers/quote.resolver.d.ts +7 -12
  200. package/src/services/doc-gen.service.d.ts +1 -1
  201. package/src/services/flow-dialog.service.d.ts +5 -2
  202. package/src/services/flow-router.service.d.ts +7 -3
  203. package/src/services/flow.service.d.ts +10 -4
  204. package/src/services/guided-selling.service.d.ts +1 -1
  205. package/src/services/index.d.ts +2 -0
  206. package/src/types/index.d.ts +0 -1
  207. package/core/modules/configuration/services/configuration.state.d.ts +0 -30
  208. package/core/services/metric-calculation/metric-calculation.service.d.ts +0 -25
  209. package/core/services/metric-calculation/metric-calculation.types.d.ts +0 -1
  210. package/core/services/metric-calculation/metric-calculation.utils.d.ts +0 -5
  211. package/esm2020/cms/services/integration.state.mjs +0 -37
  212. package/esm2020/cms/types/integration.types.mjs +0 -2
  213. package/esm2020/core/modules/configuration/services/configuration.state.mjs +0 -142
  214. package/esm2020/core/services/metric-calculation/metric-calculation.service.mjs +0 -85
  215. package/esm2020/core/services/metric-calculation/metric-calculation.types.mjs +0 -2
  216. package/esm2020/core/services/metric-calculation/metric-calculation.utils.mjs +0 -42
  217. package/esm2020/runtime/components/component-preview/component-preview.component.mjs +0 -125
  218. package/esm2020/runtime/components/index.mjs +0 -5
  219. package/esm2020/runtime/components/section-renderer/section-renderer.component.mjs +0 -67
  220. package/esm2020/runtime/components/ui-runtime/runtime.component.mjs +0 -440
  221. package/esm2020/runtime/components/ui-runtime-preview/runtime-preview.component.mjs +0 -108
  222. package/esm2020/runtime/execution/components/children-placeholder/children-placeholder.component.mjs +0 -60
  223. package/esm2020/runtime/execution/components/context-provider/context-provider.component.mjs +0 -39
  224. package/esm2020/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.mjs +0 -67
  225. package/esm2020/runtime/execution/components/federated/federated.component.mjs +0 -74
  226. package/esm2020/runtime/execution/components/velo-attribute/velo-attribute.component.mjs +0 -60
  227. package/esm2020/runtime/execution/components/velo-multiselect/velo-multiselect.component.mjs +0 -130
  228. package/esm2020/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.mjs +0 -72
  229. package/esm2020/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.mjs +0 -97
  230. package/esm2020/runtime/execution/components/velo-port-radio/velo-port-radio.component.mjs +0 -142
  231. package/esm2020/runtime/execution/components/velo-type/velo-type.component.mjs +0 -119
  232. package/esm2020/runtime/execution/directives/section-script.directive.mjs +0 -247
  233. package/esm2020/runtime/execution/directives/sf-query.directive.mjs +0 -35
  234. package/esm2020/runtime/execution/directives/velo-attribute.directive.mjs +0 -88
  235. package/esm2020/runtime/execution/directives/velo-port.directive.mjs +0 -376
  236. package/esm2020/runtime/execution/directives/vl-approval.directive.mjs +0 -23
  237. package/esm2020/runtime/execution/directives/vl-document-attachments.directive.mjs +0 -36
  238. package/esm2020/runtime/execution/directives/vl-document-templates.directive.mjs +0 -60
  239. package/esm2020/runtime/execution/directives/vl-quote.directive.mjs +0 -42
  240. package/esm2020/runtime/execution/directives/vl-ramp.directive.mjs +0 -55
  241. package/esm2020/runtime/execution/runtime-execution.module.mjs +0 -133
  242. package/esm2020/runtime/execution/utils/federated.util.mjs +0 -32
  243. package/esm2020/runtime/index.mjs +0 -5
  244. package/esm2020/runtime/runtime.module.mjs +0 -74
  245. package/esm2020/runtime/services/cart.service.mjs +0 -29
  246. package/esm2020/runtime/services/collapsible-state.service.mjs +0 -34
  247. package/esm2020/runtime/services/configuration.service.mjs +0 -119
  248. package/esm2020/runtime/services/current-state.service.mjs +0 -17
  249. package/esm2020/runtime/services/form-scope.service.mjs +0 -30
  250. package/esm2020/runtime/services/index.mjs +0 -4
  251. package/esm2020/runtime/services/product-model-cache.service.mjs +0 -31
  252. package/esm2020/runtime/services/runtime-context.service.mjs +0 -60
  253. package/esm2020/runtime/services/runtime-form.service.mjs +0 -219
  254. package/esm2020/runtime/services/runtime.service.mjs +0 -115
  255. package/esm2020/runtime/services/section-helper.service.mjs +0 -27
  256. package/esm2020/runtime/services/section-scope.service.mjs +0 -36
  257. package/esm2020/runtime/services/section-store.service.mjs +0 -22
  258. package/esm2020/runtime/services/section.service.mjs +0 -117
  259. package/esm2020/runtime/types/bound-data.types.mjs +0 -7
  260. package/esm2020/runtime/types/index.mjs +0 -3
  261. package/esm2020/runtime/types/quote-states.types.mjs +0 -2
  262. package/esm2020/runtime/types/runtime.types.mjs +0 -2
  263. package/esm2020/runtime/types/script-registry.types.mjs +0 -51
  264. package/esm2020/runtime/utils/line-item.util.mjs +0 -270
  265. package/esm2020/runtime/utils/section.utils.mjs +0 -26
  266. package/esm2020/runtime/utils/sections-binder.helper.mjs +0 -105
  267. package/esm2020/runtime/veloceapps-sdk-runtime.mjs +0 -5
  268. package/esm2020/src/components/header/cart-overlay/cart-preview.component.mjs +0 -119
  269. package/esm2020/src/components/header/cart-overlay/cart-preview.module.mjs +0 -47
  270. package/esm2020/src/components/header/header.component.mjs +0 -355
  271. package/esm2020/src/components/header/header.module.mjs +0 -52
  272. package/esm2020/src/components/header/header.types.mjs +0 -2
  273. package/esm2020/src/components/header/metrics/index.mjs +0 -2
  274. package/esm2020/src/components/header/metrics/metrics.component.mjs +0 -255
  275. package/esm2020/src/components/header/metrics/metrics.definitions.mjs +0 -2
  276. package/esm2020/src/components/header/metrics/metrics.module.mjs +0 -69
  277. package/esm2020/src/pages/legacy-product/legacy-product.component.mjs +0 -137
  278. package/esm2020/src/pages/legacy-product/legacy-product.module.mjs +0 -19
  279. package/esm2020/src/types/flow-customization.types.mjs +0 -3
  280. package/fesm2015/veloceapps-sdk-runtime.mjs +0 -3770
  281. package/fesm2015/veloceapps-sdk-runtime.mjs.map +0 -1
  282. package/fesm2020/veloceapps-sdk-runtime.mjs +0 -3767
  283. package/fesm2020/veloceapps-sdk-runtime.mjs.map +0 -1
  284. package/runtime/README.md +0 -5
  285. package/runtime/components/component-preview/component-preview.component.d.ts +0 -27
  286. package/runtime/components/index.d.ts +0 -4
  287. package/runtime/components/section-renderer/section-renderer.component.d.ts +0 -25
  288. package/runtime/components/ui-runtime/runtime.component.d.ts +0 -53
  289. package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +0 -27
  290. package/runtime/execution/components/children-placeholder/children-placeholder.component.d.ts +0 -30
  291. package/runtime/execution/components/context-provider/context-provider.component.d.ts +0 -14
  292. package/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.d.ts +0 -25
  293. package/runtime/execution/components/federated/federated.component.d.ts +0 -36
  294. package/runtime/execution/components/velo-attribute/velo-attribute.component.d.ts +0 -19
  295. package/runtime/execution/components/velo-multiselect/velo-multiselect.component.d.ts +0 -35
  296. package/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.d.ts +0 -22
  297. package/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.d.ts +0 -22
  298. package/runtime/execution/components/velo-port-radio/velo-port-radio.component.d.ts +0 -28
  299. package/runtime/execution/components/velo-type/velo-type.component.d.ts +0 -31
  300. package/runtime/execution/directives/section-script.directive.d.ts +0 -59
  301. package/runtime/execution/directives/sf-query.directive.d.ts +0 -15
  302. package/runtime/execution/directives/velo-attribute.directive.d.ts +0 -26
  303. package/runtime/execution/directives/velo-port.directive.d.ts +0 -74
  304. package/runtime/execution/directives/vl-approval.directive.d.ts +0 -10
  305. package/runtime/execution/directives/vl-document-attachments.directive.d.ts +0 -15
  306. package/runtime/execution/directives/vl-document-templates.directive.d.ts +0 -33
  307. package/runtime/execution/directives/vl-quote.directive.d.ts +0 -14
  308. package/runtime/execution/directives/vl-ramp.directive.d.ts +0 -15
  309. package/runtime/execution/runtime-execution.module.d.ts +0 -25
  310. package/runtime/execution/utils/federated.util.d.ts +0 -6
  311. package/runtime/index.d.ts +0 -4
  312. package/runtime/runtime.module.d.ts +0 -16
  313. package/runtime/services/cart.service.d.ts +0 -15
  314. package/runtime/services/collapsible-state.service.d.ts +0 -15
  315. package/runtime/services/configuration.service.d.ts +0 -20
  316. package/runtime/services/current-state.service.d.ts +0 -8
  317. package/runtime/services/form-scope.service.d.ts +0 -20
  318. package/runtime/services/index.d.ts +0 -3
  319. package/runtime/services/product-model-cache.service.d.ts +0 -14
  320. package/runtime/services/runtime-context.service.d.ts +0 -16
  321. package/runtime/services/runtime-form.service.d.ts +0 -24
  322. package/runtime/services/runtime.service.d.ts +0 -44
  323. package/runtime/services/section-helper.service.d.ts +0 -8
  324. package/runtime/services/section-scope.service.d.ts +0 -14
  325. package/runtime/services/section-store.service.d.ts +0 -11
  326. package/runtime/services/section.service.d.ts +0 -30
  327. package/runtime/types/bound-data.types.d.ts +0 -13
  328. package/runtime/types/index.d.ts +0 -2
  329. package/runtime/types/quote-states.types.d.ts +0 -6
  330. package/runtime/types/runtime.types.d.ts +0 -19
  331. package/runtime/types/script-registry.types.d.ts +0 -13
  332. package/runtime/utils/line-item.util.d.ts +0 -34
  333. package/runtime/utils/section.utils.d.ts +0 -2
  334. package/runtime/utils/sections-binder.helper.d.ts +0 -16
  335. package/src/components/header/cart-overlay/cart-preview.component.d.ts +0 -36
  336. package/src/components/header/cart-overlay/cart-preview.module.d.ts +0 -14
  337. package/src/components/header/header.component.d.ts +0 -70
  338. package/src/components/header/header.module.d.ts +0 -16
  339. package/src/components/header/header.types.d.ts +0 -20
  340. package/src/components/header/metrics/index.d.ts +0 -1
  341. package/src/components/header/metrics/metrics.component.d.ts +0 -67
  342. package/src/components/header/metrics/metrics.definitions.d.ts +0 -1
  343. package/src/components/header/metrics/metrics.module.d.ts +0 -18
  344. package/src/pages/legacy-product/legacy-product.component.d.ts +0 -37
  345. package/src/pages/legacy-product/legacy-product.module.d.ts +0 -9
  346. package/src/types/flow-customization.types.d.ts +0 -12
  347. /package/{cms → core}/services/integration.state.d.ts +0 -0
@@ -16,15 +16,20 @@ export const getDefaultLineItem = (context, uiDefinitionProperties, qty = 1) =>
16
16
  ...(uiDefinitionProperties.offeringId ? { offeringId: uiDefinitionProperties.offeringId } : {}),
17
17
  };
18
18
  };
19
- export const getGuidedSellingConfigurationRequest = (data) => {
19
+ export const getGuidedSellingConfigurationRequest = (data, context) => {
20
+ const _context = { ...context };
21
+ delete _context.configurationToken;
22
+ const properties = { ...context.properties };
23
+ delete properties['ConfigurationToken'];
20
24
  return {
21
25
  mode: 'SEARCH',
22
26
  step: 'START',
23
27
  attributeDomainMode: 'ALL',
24
28
  context: {
25
- headerId: 'TestId',
29
+ ..._context,
26
30
  mode: ConfigurationContextMode.TEST,
27
31
  properties: {
32
+ ...properties,
28
33
  ModelId: data.modelId,
29
34
  Name: 'Veloce Guided Selling',
30
35
  PricingEnabled: 'false',
@@ -45,4 +50,24 @@ export const getGuidedSellingConfigurationRequest = (data) => {
45
50
  },
46
51
  };
47
52
  };
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9jb25maWd1cmF0aW9uL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHdCQUF3QixFQUl4QixJQUFJLEdBQ0wsTUFBTSxrQkFBa0IsQ0FBQztBQUkxQixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxPQUF1QixFQUN2QixzQkFBeUMsRUFDekMsR0FBRyxHQUFHLENBQUMsRUFDRyxFQUFFO0lBQ1osTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLE1BQU0sVUFBVSxHQUFnQixFQUFFLENBQUM7SUFDbkMsTUFBTSxTQUFTLEdBQWUsRUFBRSxDQUFDO0lBRWpDLE9BQU87UUFDTCxFQUFFO1FBQ0YsSUFBSSxFQUFFLHNCQUFzQixDQUFDLFFBQVEsSUFBSSxFQUFFO1FBQzNDLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLEdBQUc7UUFDSCxVQUFVO1FBQ1YsU0FBUztRQUNULFdBQVcsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksT0FBTyxDQUFDLFdBQVc7UUFDdkUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRTtRQUNsQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3BGLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsQ0FBQyxJQUE2QixFQUF3QixFQUFFO0lBQzFHLE9BQU87UUFDTCxJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSxPQUFPO1FBQ2IsbUJBQW1CLEVBQUUsS0FBSztRQUMxQixPQUFPLEVBQUU7WUFDUCxRQUFRLEVBQUUsUUFBUTtZQUNsQixJQUFJLEVBQUUsd0JBQXdCLENBQUMsSUFBSTtZQUNuQyxVQUFVLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNyQixJQUFJLEVBQUUsdUJBQXVCO2dCQUM3QixjQUFjLEVBQUUsT0FBTztnQkFDdkIsV0FBVyxFQUFFLE1BQU07YUFDcEI7U0FDRjtRQUNELFFBQVEsRUFBRTtZQUNSLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2YsR0FBRyxFQUFFLENBQUM7WUFDTixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDcEIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJO2dCQUNKLEtBQUs7Z0JBQ0wsU0FBUyxFQUFFLE1BQU07YUFDbEIsQ0FBQyxDQUFDO1NBQ1E7S0FDZCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXR0cmlidXRlLFxuICBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUsXG4gIENvbmZpZ3VyYXRpb25SZXF1ZXN0LFxuICBMaW5lSXRlbSxcbiAgVUlEZWZpbml0aW9uUHJvcHMsXG4gIFVVSUQsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgUnVudGltZUNvbnRleHQgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSB9IGZyb20gJy4vdHlwZXMvY29uZmlndXJhdGlvbi50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0TGluZUl0ZW0gPSAoXG4gIGNvbnRleHQ6IFJ1bnRpbWVDb250ZXh0LFxuICB1aURlZmluaXRpb25Qcm9wZXJ0aWVzOiBVSURlZmluaXRpb25Qcm9wcyxcbiAgcXR5ID0gMSxcbik6IExpbmVJdGVtID0+IHtcbiAgY29uc3QgaWQgPSBVVUlELlVVSUQoKTtcbiAgY29uc3QgYXR0cmlidXRlczogQXR0cmlidXRlW10gPSBbXTtcbiAgY29uc3QgbGluZUl0ZW1zOiBMaW5lSXRlbVtdID0gW107XG5cbiAgcmV0dXJuIHtcbiAgICBpZCxcbiAgICB0eXBlOiB1aURlZmluaXRpb25Qcm9wZXJ0aWVzLnJvb3RUeXBlID8/ICcnLFxuICAgIGNmZ1N0YXR1czogJ0RlZmF1bHQnLFxuICAgIGFjdGlvbkNvZGU6ICdBREQnLFxuICAgIHF0eSxcbiAgICBhdHRyaWJ1dGVzLFxuICAgIGxpbmVJdGVtcyxcbiAgICBwcm9kdWN0TmFtZTogY29udGV4dC5wcm9wZXJ0aWVzPy5bJ2Rpc3BsYXlOYW1lJ10gfHwgY29udGV4dC5wcm9kdWN0TmFtZSxcbiAgICBwcm9kdWN0SWQ6IGNvbnRleHQucHJvZHVjdElkID8/ICcnLFxuICAgIC4uLih1aURlZmluaXRpb25Qcm9wZXJ0aWVzLm9mZmVyaW5nSWQgPyB7IG9mZmVyaW5nSWQ6IHVpRGVmaW5pdGlvblByb3BlcnRpZXMub2ZmZXJpbmdJZCB9IDoge30pLFxuICB9IGFzIExpbmVJdGVtO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEd1aWRlZFNlbGxpbmdDb25maWd1cmF0aW9uUmVxdWVzdCA9IChkYXRhOiBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSk6IENvbmZpZ3VyYXRpb25SZXF1ZXN0ID0+IHtcbiAgcmV0dXJuIHtcbiAgICBtb2RlOiAnU0VBUkNIJyxcbiAgICBzdGVwOiAnU1RBUlQnLFxuICAgIGF0dHJpYnV0ZURvbWFpbk1vZGU6ICdBTEwnLFxuICAgIGNvbnRleHQ6IHtcbiAgICAgIGhlYWRlcklkOiAnVGVzdElkJyxcbiAgICAgIG1vZGU6IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5URVNULFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBNb2RlbElkOiBkYXRhLm1vZGVsSWQsXG4gICAgICAgIE5hbWU6ICdWZWxvY2UgR3VpZGVkIFNlbGxpbmcnLFxuICAgICAgICBQcmljaW5nRW5hYmxlZDogJ2ZhbHNlJyxcbiAgICAgICAgUnVudGltZU1vZGU6ICdURVNUJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBsaW5lSXRlbToge1xuICAgICAgYWN0aW9uQ29kZTogJ0FERCcsXG4gICAgICBjZmdTdGF0dXM6ICdEZWZhdWx0JyxcbiAgICAgIGlkOiBVVUlELlVVSUQoKSxcbiAgICAgIHF0eTogMSxcbiAgICAgIHR5cGU6IGRhdGEubW9kZWxUeXBlLFxuICAgICAgYXR0cmlidXRlczogT2JqZWN0LmVudHJpZXMoZGF0YS5hdHRyaWJ1dGVzTWFwKS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+ICh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBjZmdTdGF0dXM6ICdVc2VyJyxcbiAgICAgIH0pKSxcbiAgICB9IGFzIExpbmVJdGVtLFxuICB9O1xufTtcbiJdfQ==
53
+ export const generateConfigurationLineItem = (props, qty = 1) => {
54
+ const id = UUID.UUID();
55
+ const attributes = Object.entries(props.attributesMap ?? {}).map(([name, value]) => ({
56
+ name,
57
+ value,
58
+ cfgStatus: 'User',
59
+ }));
60
+ const lineItems = [];
61
+ return {
62
+ id,
63
+ type: props.product.typeName ?? '',
64
+ cfgStatus: 'Default',
65
+ actionCode: 'ADD',
66
+ qty,
67
+ attributes,
68
+ lineItems,
69
+ productName: props.product.name,
70
+ productId: props.product.id ?? '',
71
+ };
72
+ };
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9jb25maWd1cmF0aW9uL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHdCQUF3QixFQUl4QixJQUFJLEdBQ0wsTUFBTSxrQkFBa0IsQ0FBQztBQUkxQixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxPQUF1QixFQUN2QixzQkFBeUMsRUFDekMsR0FBRyxHQUFHLENBQUMsRUFDRyxFQUFFO0lBQ1osTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLE1BQU0sVUFBVSxHQUFnQixFQUFFLENBQUM7SUFDbkMsTUFBTSxTQUFTLEdBQWUsRUFBRSxDQUFDO0lBRWpDLE9BQU87UUFDTCxFQUFFO1FBQ0YsSUFBSSxFQUFFLHNCQUFzQixDQUFDLFFBQVEsSUFBSSxFQUFFO1FBQzNDLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLEdBQUc7UUFDSCxVQUFVO1FBQ1YsU0FBUztRQUNULFdBQVcsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksT0FBTyxDQUFDLFdBQVc7UUFDdkUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRTtRQUNsQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3BGLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsQ0FDbEQsSUFBNkIsRUFDN0IsT0FBNkIsRUFDUCxFQUFFO0lBQ3hCLE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxPQUFPLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztJQUVuQyxNQUFNLFVBQVUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzdDLE9BQU8sVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFeEMsT0FBTztRQUNMLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBSSxFQUFFLE9BQU87UUFDYixtQkFBbUIsRUFBRSxLQUFLO1FBQzFCLE9BQU8sRUFBRTtZQUNQLEdBQUcsUUFBUTtZQUNYLElBQUksRUFBRSx3QkFBd0IsQ0FBQyxJQUFJO1lBQ25DLFVBQVUsRUFBRTtnQkFDVixHQUFHLFVBQVU7Z0JBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNyQixJQUFJLEVBQUUsdUJBQXVCO2dCQUM3QixjQUFjLEVBQUUsT0FBTztnQkFDdkIsV0FBVyxFQUFFLE1BQU07YUFDcEI7U0FDRjtRQUNELFFBQVEsRUFBRTtZQUNSLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2YsR0FBRyxFQUFFLENBQUM7WUFDTixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDcEIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJO2dCQUNKLEtBQUs7Z0JBQ0wsU0FBUyxFQUFFLE1BQU07YUFDbEIsQ0FBQyxDQUFDO1NBQ1E7S0FDZCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxLQUE0QixFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQVksRUFBRTtJQUMvRixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLElBQUk7UUFDSixLQUFLO1FBQ0wsU0FBUyxFQUFFLE1BQU07S0FDbEIsQ0FBQyxDQUFDLENBQUM7SUFDSixNQUFNLFNBQVMsR0FBZSxFQUFFLENBQUM7SUFFakMsT0FBTztRQUNMLEVBQUU7UUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRTtRQUNsQyxTQUFTLEVBQUUsU0FBUztRQUNwQixVQUFVLEVBQUUsS0FBSztRQUNqQixHQUFHO1FBQ0gsVUFBVTtRQUNWLFNBQVM7UUFDVCxXQUFXLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJO1FBQy9CLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFO0tBQ3RCLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXR0cmlidXRlLFxuICBDb25maWd1cmF0aW9uQ29udGV4dCxcbiAgQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLFxuICBDb25maWd1cmF0aW9uUmVxdWVzdCxcbiAgTGluZUl0ZW0sXG4gIFVJRGVmaW5pdGlvblByb3BzLFxuICBVVUlELFxufSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IFJ1bnRpbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgR3VpZGVkU2VsbGluZ1N1Ym1pdERhdGEsIE5ld0NvbmZpZ3VyYXRpb25Qcm9wcyB9IGZyb20gJy4vdHlwZXMvY29uZmlndXJhdGlvbi50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0TGluZUl0ZW0gPSAoXG4gIGNvbnRleHQ6IFJ1bnRpbWVDb250ZXh0LFxuICB1aURlZmluaXRpb25Qcm9wZXJ0aWVzOiBVSURlZmluaXRpb25Qcm9wcyxcbiAgcXR5ID0gMSxcbik6IExpbmVJdGVtID0+IHtcbiAgY29uc3QgaWQgPSBVVUlELlVVSUQoKTtcbiAgY29uc3QgYXR0cmlidXRlczogQXR0cmlidXRlW10gPSBbXTtcbiAgY29uc3QgbGluZUl0ZW1zOiBMaW5lSXRlbVtdID0gW107XG5cbiAgcmV0dXJuIHtcbiAgICBpZCxcbiAgICB0eXBlOiB1aURlZmluaXRpb25Qcm9wZXJ0aWVzLnJvb3RUeXBlID8/ICcnLFxuICAgIGNmZ1N0YXR1czogJ0RlZmF1bHQnLFxuICAgIGFjdGlvbkNvZGU6ICdBREQnLFxuICAgIHF0eSxcbiAgICBhdHRyaWJ1dGVzLFxuICAgIGxpbmVJdGVtcyxcbiAgICBwcm9kdWN0TmFtZTogY29udGV4dC5wcm9wZXJ0aWVzPy5bJ2Rpc3BsYXlOYW1lJ10gfHwgY29udGV4dC5wcm9kdWN0TmFtZSxcbiAgICBwcm9kdWN0SWQ6IGNvbnRleHQucHJvZHVjdElkID8/ICcnLFxuICAgIC4uLih1aURlZmluaXRpb25Qcm9wZXJ0aWVzLm9mZmVyaW5nSWQgPyB7IG9mZmVyaW5nSWQ6IHVpRGVmaW5pdGlvblByb3BlcnRpZXMub2ZmZXJpbmdJZCB9IDoge30pLFxuICB9IGFzIExpbmVJdGVtO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEd1aWRlZFNlbGxpbmdDb25maWd1cmF0aW9uUmVxdWVzdCA9IChcbiAgZGF0YTogR3VpZGVkU2VsbGluZ1N1Ym1pdERhdGEsXG4gIGNvbnRleHQ6IENvbmZpZ3VyYXRpb25Db250ZXh0LFxuKTogQ29uZmlndXJhdGlvblJlcXVlc3QgPT4ge1xuICBjb25zdCBfY29udGV4dCA9IHsgLi4uY29udGV4dCB9O1xuICBkZWxldGUgX2NvbnRleHQuY29uZmlndXJhdGlvblRva2VuO1xuXG4gIGNvbnN0IHByb3BlcnRpZXMgPSB7IC4uLmNvbnRleHQucHJvcGVydGllcyB9O1xuICBkZWxldGUgcHJvcGVydGllc1snQ29uZmlndXJhdGlvblRva2VuJ107XG5cbiAgcmV0dXJuIHtcbiAgICBtb2RlOiAnU0VBUkNIJyxcbiAgICBzdGVwOiAnU1RBUlQnLFxuICAgIGF0dHJpYnV0ZURvbWFpbk1vZGU6ICdBTEwnLFxuICAgIGNvbnRleHQ6IHtcbiAgICAgIC4uLl9jb250ZXh0LFxuICAgICAgbW9kZTogQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLlRFU1QsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIC4uLnByb3BlcnRpZXMsXG4gICAgICAgIE1vZGVsSWQ6IGRhdGEubW9kZWxJZCxcbiAgICAgICAgTmFtZTogJ1ZlbG9jZSBHdWlkZWQgU2VsbGluZycsXG4gICAgICAgIFByaWNpbmdFbmFibGVkOiAnZmFsc2UnLFxuICAgICAgICBSdW50aW1lTW9kZTogJ1RFU1QnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGxpbmVJdGVtOiB7XG4gICAgICBhY3Rpb25Db2RlOiAnQUREJyxcbiAgICAgIGNmZ1N0YXR1czogJ0RlZmF1bHQnLFxuICAgICAgaWQ6IFVVSUQuVVVJRCgpLFxuICAgICAgcXR5OiAxLFxuICAgICAgdHlwZTogZGF0YS5tb2RlbFR5cGUsXG4gICAgICBhdHRyaWJ1dGVzOiBPYmplY3QuZW50cmllcyhkYXRhLmF0dHJpYnV0ZXNNYXApLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gKHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGNmZ1N0YXR1czogJ1VzZXInLFxuICAgICAgfSkpLFxuICAgIH0gYXMgTGluZUl0ZW0sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVDb25maWd1cmF0aW9uTGluZUl0ZW0gPSAocHJvcHM6IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcywgcXR5ID0gMSk6IExpbmVJdGVtID0+IHtcbiAgY29uc3QgaWQgPSBVVUlELlVVSUQoKTtcbiAgY29uc3QgYXR0cmlidXRlcyA9IE9iamVjdC5lbnRyaWVzKHByb3BzLmF0dHJpYnV0ZXNNYXAgPz8ge30pLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gKHtcbiAgICBuYW1lLFxuICAgIHZhbHVlLFxuICAgIGNmZ1N0YXR1czogJ1VzZXInLFxuICB9KSk7XG4gIGNvbnN0IGxpbmVJdGVtczogTGluZUl0ZW1bXSA9IFtdO1xuXG4gIHJldHVybiB7XG4gICAgaWQsXG4gICAgdHlwZTogcHJvcHMucHJvZHVjdC50eXBlTmFtZSA/PyAnJyxcbiAgICBjZmdTdGF0dXM6ICdEZWZhdWx0JyxcbiAgICBhY3Rpb25Db2RlOiAnQUREJyxcbiAgICBxdHksXG4gICAgYXR0cmlidXRlcyxcbiAgICBsaW5lSXRlbXMsXG4gICAgcHJvZHVjdE5hbWU6IHByb3BzLnByb2R1Y3QubmFtZSxcbiAgICBwcm9kdWN0SWQ6IHByb3BzLnByb2R1Y3QuaWQgPz8gJycsXG4gIH0gYXMgTGluZUl0ZW07XG59O1xuIl19
@@ -1,7 +1,7 @@
1
1
  export * from './helpers';
2
2
  export * from './services/configuration-runtime.service';
3
3
  export * from './services/configuration.service';
4
- export * from './services/configuration.state';
4
+ export * from './services/configuration-state.service';
5
5
  export * from './types/configuration-runtime.types';
6
6
  export * from './types/configuration.types';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL21vZHVsZXMvY29uZmlndXJhdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLXJ1bnRpbWUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbmZpZ3VyYXRpb24uc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9jb25maWd1cmF0aW9uLXJ1bnRpbWUudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9jb25maWd1cmF0aW9uLnR5cGVzJztcbiJdfQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL21vZHVsZXMvY29uZmlndXJhdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLXJ1bnRpbWUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbmZpZ3VyYXRpb24tc3RhdGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2NvbmZpZ3VyYXRpb24tcnVudGltZS50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZXMnO1xuIl19
@@ -1,14 +1,14 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { ConfigurationApiService } from '@veloceapps/api';
3
- import { ConfigurationContextMode, RuntimeModel, SalesforceIdUtils, getUIDefinitionProperties, } from '@veloceapps/core';
3
+ import { RuntimeModel, SalesforceIdUtils } from '@veloceapps/core';
4
4
  import { combineLatest } from 'rxjs';
5
5
  import { first, map, tap } from 'rxjs/operators';
6
- import { ContextService } from '../../../services/context.service';
6
+ import { ContextService } from '../../../services';
7
7
  import { RuntimeMode } from '../../../types';
8
8
  import { RuntimeContextService } from './runtime-context.service';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "@veloceapps/api";
11
- import * as i2 from "../../../services/context.service";
11
+ import * as i2 from "../../../services";
12
12
  import * as i3 from "./runtime-context.service";
13
13
  export class ConfigurationRuntimeService {
14
14
  constructor(apiService, contextService, runtimeContextService) {
@@ -25,23 +25,20 @@ export class ConfigurationRuntimeService {
25
25
  this.uiDefinitionProperties = {};
26
26
  }
27
27
  initTestMode(uiDefinitionContainer) {
28
- this.uiDefinitionProperties = getUIDefinitionProperties(uiDefinitionContainer);
28
+ this.uiDefinitionProperties = uiDefinitionContainer.source.properties ?? {};
29
29
  const uiDefinitionExternals = uiDefinitionContainer.source.externals ?? {};
30
30
  return combineLatest([
31
31
  this.apiService.getRuntimeDataByModelId(uiDefinitionContainer.modelId),
32
- this.contextService.create('TestId', ConfigurationContextMode.TEST),
32
+ this.contextService.initTestMode(),
33
33
  ]).pipe(first(), map(([runtimeData, context]) => {
34
34
  this.contextService.update({
35
35
  properties: {
36
36
  ...this.runtimeContext?.properties,
37
37
  ...context.properties,
38
38
  ModelId: uiDefinitionContainer.modelId,
39
- RuntimeMode: ConfigurationContextMode.TEST,
40
39
  PricingEnabled: this.uiDefinitionProperties.pricingEnabled ? 'true' : 'false',
41
- StartDate: new Date().toISOString().substring(0, 10),
42
40
  PriceListId: this.uiDefinitionProperties.priceList,
43
41
  offeringId: this.uiDefinitionProperties.offeringId,
44
- standalone: 'true',
45
42
  ...uiDefinitionExternals,
46
43
  },
47
44
  });
@@ -58,7 +55,7 @@ export class ConfigurationRuntimeService {
58
55
  this.initializationProps = props;
59
56
  const context = this.contextService.resolve();
60
57
  return this.runtimeContextService.getRuntimeContext(props.productId, props.offeringId).pipe(tap(runtimeContext => {
61
- this.uiDefinitionProperties = getUIDefinitionProperties(runtimeContext.uiDefinitionContainer);
58
+ this.uiDefinitionProperties = runtimeContext.uiDefinitionContainer?.source.properties ?? {};
62
59
  const { PriceListId } = context.properties ?? {};
63
60
  const mergeContext = {
64
61
  ...runtimeContext,
@@ -86,7 +83,7 @@ export class ConfigurationRuntimeService {
86
83
  return;
87
84
  }
88
85
  this._runtimeContext.uiDefinitionContainer = uiDefinitionContainer;
89
- this.uiDefinitionProperties = getUIDefinitionProperties(uiDefinitionContainer);
86
+ this.uiDefinitionProperties = uiDefinitionContainer.source.properties ?? {};
90
87
  }
91
88
  id15to18(propertyName, source) {
92
89
  if (!source) {
@@ -107,9 +104,9 @@ export class ConfigurationRuntimeService {
107
104
  return this._runtimeContext;
108
105
  }
109
106
  }
110
- ConfigurationRuntimeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ConfigurationRuntimeService, deps: [{ token: i1.ConfigurationApiService }, { token: i2.ContextService }, { token: i3.RuntimeContextService }], target: i0.ɵɵFactoryTarget.Injectable });
111
- ConfigurationRuntimeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ConfigurationRuntimeService });
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ConfigurationRuntimeService, decorators: [{
107
+ ConfigurationRuntimeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationRuntimeService, deps: [{ token: i1.ConfigurationApiService }, { token: i2.ContextService }, { token: i3.RuntimeContextService }], target: i0.ɵɵFactoryTarget.Injectable });
108
+ ConfigurationRuntimeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationRuntimeService });
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationRuntimeService, decorators: [{
113
110
  type: Injectable
114
111
  }], ctorParameters: function () { return [{ type: i1.ConfigurationApiService }, { type: i2.ContextService }, { type: i3.RuntimeContextService }]; } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1ydW50aW1lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL21vZHVsZXMvY29uZmlndXJhdGlvbi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLXJ1bnRpbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsWUFBWSxFQUNaLGlCQUFpQixFQUdqQix5QkFBeUIsR0FDMUIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQUdsRSxNQUFNLE9BQU8sMkJBQTJCO0lBT3RDLFlBQ1UsVUFBbUMsRUFDbkMsY0FBOEIsRUFDOUIscUJBQTRDO1FBRjVDLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBUjlDLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBR3hCLDJCQUFzQixHQUFzQixFQUFFLENBQUM7SUFNbkQsQ0FBQztJQUVHLEtBQUs7UUFDVixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsZUFB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RTtZQUNwRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQzs7d0hBN0hVLDJCQUEyQjs0SEFBM0IsMkJBQTJCOzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUsXG4gIFJ1bnRpbWVNb2RlbCxcbiAgU2FsZXNmb3JjZUlkVXRpbHMsXG4gIFVJRGVmaW5pdGlvbkNvbnRhaW5lcixcbiAgVUlEZWZpbml0aW9uUHJvcHMsXG4gIGdldFVJRGVmaW5pdGlvblByb3BlcnRpZXMsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBSdW50aW1lQ29udGV4dCwgUnVudGltZU1vZGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBSdW50aW1lSW5pdGlhbGl6YXRpb25Qcm9wcyB9IGZyb20gJy4uL3R5cGVzL2NvbmZpZ3VyYXRpb24tcnVudGltZS50eXBlcyc7XG5pbXBvcnQgeyBSdW50aW1lQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL3J1bnRpbWUtY29udGV4dC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSB7XG4gIHByaXZhdGUgX3J1bnRpbWVDb250ZXh0PzogUnVudGltZUNvbnRleHQ7XG4gIHByaXZhdGUgX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgaW5pdGlhbGl6YXRpb25Qcm9wcz86IFJ1bnRpbWVJbml0aWFsaXphdGlvblByb3BzO1xuICBwdWJsaWMgdWlEZWZpbml0aW9uUHJvcGVydGllczogVUlEZWZpbml0aW9uUHJvcHMgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IENvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcnVudGltZUNvbnRleHRTZXJ2aWNlOiBSdW50aW1lQ29udGV4dFNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5faXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMuX3J1bnRpbWVDb250ZXh0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaW5pdGlhbGl6YXRpb25Qcm9wcyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnVpRGVmaW5pdGlvblByb3BlcnRpZXMgPSB7fTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0VGVzdE1vZGUodWlEZWZpbml0aW9uQ29udGFpbmVyOiBVSURlZmluaXRpb25Db250YWluZXIpOiBPYnNlcnZhYmxlPFJ1bnRpbWVDb250ZXh0PiB7XG4gICAgdGhpcy51aURlZmluaXRpb25Qcm9wZXJ0aWVzID0gZ2V0VUlEZWZpbml0aW9uUHJvcGVydGllcyh1aURlZmluaXRpb25Db250YWluZXIpO1xuICAgIGNvbnN0IHVpRGVmaW5pdGlvbkV4dGVybmFscyA9IHVpRGVmaW5pdGlvbkNvbnRhaW5lci5zb3VyY2UuZXh0ZXJuYWxzID8/IHt9O1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5hcGlTZXJ2aWNlLmdldFJ1bnRpbWVEYXRhQnlNb2RlbElkKHVpRGVmaW5pdGlvbkNvbnRhaW5lci5tb2RlbElkKSxcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY3JlYXRlKCdUZXN0SWQnLCBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuVEVTVCksXG4gICAgXSkucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBtYXAoKFtydW50aW1lRGF0YSwgY29udGV4dF0pID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUoe1xuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIC4uLnRoaXMucnVudGltZUNvbnRleHQ/LnByb3BlcnRpZXMsXG4gICAgICAgICAgICAuLi5jb250ZXh0LnByb3BlcnRpZXMsXG4gICAgICAgICAgICBNb2RlbElkOiB1aURlZmluaXRpb25Db250YWluZXIubW9kZWxJZCxcbiAgICAgICAgICAgIFJ1bnRpbWVNb2RlOiBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuVEVTVCxcbiAgICAgICAgICAgIFByaWNpbmdFbmFibGVkOiB0aGlzLnVpRGVmaW5pdGlvblByb3BlcnRpZXMucHJpY2luZ0VuYWJsZWQgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICAgICAgU3RhcnREYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDEwKSxcbiAgICAgICAgICAgIFByaWNlTGlzdElkOiB0aGlzLnVpRGVmaW5pdGlvblByb3BlcnRpZXMucHJpY2VMaXN0LFxuICAgICAgICAgICAgb2ZmZXJpbmdJZDogdGhpcy51aURlZmluaXRpb25Qcm9wZXJ0aWVzLm9mZmVyaW5nSWQsXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAndHJ1ZScsXG4gICAgICAgICAgICAuLi51aURlZmluaXRpb25FeHRlcm5hbHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fcnVudGltZUNvbnRleHQgPSB7XG4gICAgICAgICAgbW9kZWxJZDogdWlEZWZpbml0aW9uQ29udGFpbmVyLm1vZGVsSWQsXG4gICAgICAgICAgcnVudGltZU1vZGVsOiBSdW50aW1lTW9kZWwuY3JlYXRlKHJ1bnRpbWVEYXRhLnR5cGVzLCBydW50aW1lRGF0YS5wcm9kdWN0cyksXG4gICAgICAgICAgcnVudGltZU1vZGU6IFJ1bnRpbWVNb2RlLlRFU1QsXG4gICAgICAgICAgdWlEZWZpbml0aW9uQ29udGFpbmVyLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9ydW50aW1lQ29udGV4dDtcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+ICh0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZSkpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgaW5pdChwcm9wczogUnVudGltZUluaXRpYWxpemF0aW9uUHJvcHMpOiBPYnNlcnZhYmxlPFJ1bnRpbWVDb250ZXh0PiB7XG4gICAgdGhpcy5pbml0aWFsaXphdGlvblByb3BzID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpO1xuXG4gICAgcmV0dXJuIHRoaXMucnVudGltZUNvbnRleHRTZXJ2aWNlLmdldFJ1bnRpbWVDb250ZXh0KHByb3BzLnByb2R1Y3RJZCwgcHJvcHMub2ZmZXJpbmdJZCkucGlwZShcbiAgICAgIHRhcChydW50aW1lQ29udGV4dCA9PiB7XG4gICAgICAgIHRoaXMudWlEZWZpbml0aW9uUHJvcGVydGllcyA9IGdldFVJRGVmaW5pdGlvblByb3BlcnRpZXMocnVudGltZUNvbnRleHQudWlEZWZpbml0aW9uQ29udGFpbmVyKTtcbiAgICAgICAgY29uc3QgeyBQcmljZUxpc3RJZCB9ID0gY29udGV4dC5wcm9wZXJ0aWVzID8/IHt9O1xuXG4gICAgICAgIGNvbnN0IG1lcmdlQ29udGV4dDogUnVudGltZUNvbnRleHQgPSB7XG4gICAgICAgICAgLi4ucnVudGltZUNvbnRleHQsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgLi4ucnVudGltZUNvbnRleHQucHJvcGVydGllcyxcbiAgICAgICAgICAgIC4uLmNvbnRleHQucHJvcGVydGllcyxcbiAgICAgICAgICAgIFByaWNpbmdFbmFibGVkOiBQcmljZUxpc3RJZCA/ICd0cnVlJyA6ICdmYWxzZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmlkMTV0bzE4KCdBY2NvdW50SWQnLCBtZXJnZUNvbnRleHQucHJvcGVydGllcyk7XG4gICAgICAgIHRoaXMuX3J1bnRpbWVDb250ZXh0ID0gbWVyZ2VDb250ZXh0O1xuXG4gICAgICAgIGlmIChjb250ZXh0LnByb3BlcnRpZXMgJiYgdGhpcy5fcnVudGltZUNvbnRleHQucHJvcGVydGllcz8uU3RhcnREYXRlKSB7XG4gICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUoe1xuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAuLi50aGlzLl9ydW50aW1lQ29udGV4dC5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi5jb250ZXh0LnByb3BlcnRpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bnRpbWVDb250ZXh0O1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4gKHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSB0cnVlKSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZVVJRGVmaW5pdGlvbih1aURlZmluaXRpb25Db250YWluZXI6IFVJRGVmaW5pdGlvbkNvbnRhaW5lcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcnVudGltZUNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9ydW50aW1lQ29udGV4dC51aURlZmluaXRpb25Db250YWluZXIgPSB1aURlZmluaXRpb25Db250YWluZXI7XG4gICAgdGhpcy51aURlZmluaXRpb25Qcm9wZXJ0aWVzID0gZ2V0VUlEZWZpbml0aW9uUHJvcGVydGllcyh1aURlZmluaXRpb25Db250YWluZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBpZDE1dG8xOChwcm9wZXJ0eU5hbWU6IHN0cmluZywgc291cmNlPzogRGljdGlvbmFyeTxhbnk+KTogdm9pZCB7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHNvdXJjZVtwcm9wZXJ0eU5hbWVdO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID09PSAxNSkge1xuICAgICAgc291cmNlW3Byb3BlcnR5TmFtZV0gPSBTYWxlc2ZvcmNlSWRVdGlscy5nZW5lcmF0ZUlkMThGcm9tSWQxNSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0luaXRpYWxpemVkO1xuICB9XG5cbiAgcHVibGljIGdldCBydW50aW1lTW9kZWwoKTogUnVudGltZU1vZGVsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lQ29udGV4dD8ucnVudGltZU1vZGVsO1xuICB9XG5cbiAgcHVibGljIGdldCBydW50aW1lQ29udGV4dCgpOiBSdW50aW1lQ29udGV4dCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3J1bnRpbWVDb250ZXh0O1xuICB9XG59XG4iXX0=
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1ydW50aW1lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL21vZHVsZXMvY29uZmlndXJhdGlvbi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLXJ1bnRpbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQTRDLE1BQU0sa0JBQWtCLENBQUM7QUFFN0csT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFHbEUsTUFBTSxPQUFPLDJCQUEyQjtJQU90QyxZQUNVLFVBQW1DLEVBQ25DLGNBQThCLEVBQzlCLHFCQUE0QztRQUY1QyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQVI5QyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUd4QiwyQkFBc0IsR0FBc0IsRUFBRSxDQUFDO0lBTW5ELENBQUM7SUFFRyxLQUFLO1FBQ1YsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7UUFDakMsSUFB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QVk7UUFDckIsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDOzt3SEExSFUsMkJBQTJCOzRIQUEzQiwyQkFBMkI7MkZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7IFJ1bnRpbWVNb2RlbCwgU2FsZXNmb3JjZUlkVXRpbHMsIFVJRGVmaW5pdGlvbkNvbnRhaW5lciwgVUlEZWZpbml0aW9uUHJvcHMgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlyc3QsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSdW50aW1lQ29udGV4dCwgUnVudGltZU1vZGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBSdW50aW1lSW5pdGlhbGl6YXRpb25Qcm9wcyB9IGZyb20gJy4uL3R5cGVzL2NvbmZpZ3VyYXRpb24tcnVudGltZS50eXBlcyc7XG5pbXBvcnQgeyBSdW50aW1lQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL3J1bnRpbWUtY29udGV4dC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSB7XG4gIHByaXZhdGUgX3J1bnRpbWVDb250ZXh0PzogUnVudGltZUNvbnRleHQ7XG4gIHByaXZhdGUgX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgaW5pdGlhbGl6YXRpb25Qcm9wcz86IFJ1bnRpbWVJbml0aWFsaXphdGlvblByb3BzO1xuICBwdWJsaWMgdWlEZWZpbml0aW9uUHJvcGVydGllczogVUlEZWZpbml0aW9uUHJvcHMgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IENvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcnVudGltZUNvbnRleHRTZXJ2aWNlOiBSdW50aW1lQ29udGV4dFNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5faXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMuX3J1bnRpbWVDb250ZXh0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaW5pdGlhbGl6YXRpb25Qcm9wcyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnVpRGVmaW5pdGlvblByb3BlcnRpZXMgPSB7fTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0VGVzdE1vZGUodWlEZWZpbml0aW9uQ29udGFpbmVyOiBVSURlZmluaXRpb25Db250YWluZXIpOiBPYnNlcnZhYmxlPFJ1bnRpbWVDb250ZXh0PiB7XG4gICAgdGhpcy51aURlZmluaXRpb25Qcm9wZXJ0aWVzID0gdWlEZWZpbml0aW9uQ29udGFpbmVyLnNvdXJjZS5wcm9wZXJ0aWVzID8/IHt9O1xuICAgIGNvbnN0IHVpRGVmaW5pdGlvbkV4dGVybmFscyA9IHVpRGVmaW5pdGlvbkNvbnRhaW5lci5zb3VyY2UuZXh0ZXJuYWxzID8/IHt9O1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5hcGlTZXJ2aWNlLmdldFJ1bnRpbWVEYXRhQnlNb2RlbElkKHVpRGVmaW5pdGlvbkNvbnRhaW5lci5tb2RlbElkKSxcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuaW5pdFRlc3RNb2RlKCksXG4gICAgXSkucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBtYXAoKFtydW50aW1lRGF0YSwgY29udGV4dF0pID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUoe1xuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIC4uLnRoaXMucnVudGltZUNvbnRleHQ/LnByb3BlcnRpZXMsXG4gICAgICAgICAgICAuLi5jb250ZXh0LnByb3BlcnRpZXMsXG4gICAgICAgICAgICBNb2RlbElkOiB1aURlZmluaXRpb25Db250YWluZXIubW9kZWxJZCxcbiAgICAgICAgICAgIFByaWNpbmdFbmFibGVkOiB0aGlzLnVpRGVmaW5pdGlvblByb3BlcnRpZXMucHJpY2luZ0VuYWJsZWQgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICAgICAgUHJpY2VMaXN0SWQ6IHRoaXMudWlEZWZpbml0aW9uUHJvcGVydGllcy5wcmljZUxpc3QsXG4gICAgICAgICAgICBvZmZlcmluZ0lkOiB0aGlzLnVpRGVmaW5pdGlvblByb3BlcnRpZXMub2ZmZXJpbmdJZCxcbiAgICAgICAgICAgIC4uLnVpRGVmaW5pdGlvbkV4dGVybmFscyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9ydW50aW1lQ29udGV4dCA9IHtcbiAgICAgICAgICBtb2RlbElkOiB1aURlZmluaXRpb25Db250YWluZXIubW9kZWxJZCxcbiAgICAgICAgICBydW50aW1lTW9kZWw6IFJ1bnRpbWVNb2RlbC5jcmVhdGUocnVudGltZURhdGEudHlwZXMsIHJ1bnRpbWVEYXRhLnByb2R1Y3RzKSxcbiAgICAgICAgICBydW50aW1lTW9kZTogUnVudGltZU1vZGUuVEVTVCxcbiAgICAgICAgICB1aURlZmluaXRpb25Db250YWluZXIsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bnRpbWVDb250ZXh0O1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4gKHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSB0cnVlKSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0KHByb3BzOiBSdW50aW1lSW5pdGlhbGl6YXRpb25Qcm9wcyk6IE9ic2VydmFibGU8UnVudGltZUNvbnRleHQ+IHtcbiAgICB0aGlzLmluaXRpYWxpemF0aW9uUHJvcHMgPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCk7XG5cbiAgICByZXR1cm4gdGhpcy5ydW50aW1lQ29udGV4dFNlcnZpY2UuZ2V0UnVudGltZUNvbnRleHQocHJvcHMucHJvZHVjdElkLCBwcm9wcy5vZmZlcmluZ0lkKS5waXBlKFxuICAgICAgdGFwKHJ1bnRpbWVDb250ZXh0ID0+IHtcbiAgICAgICAgdGhpcy51aURlZmluaXRpb25Qcm9wZXJ0aWVzID0gcnVudGltZUNvbnRleHQudWlEZWZpbml0aW9uQ29udGFpbmVyPy5zb3VyY2UucHJvcGVydGllcyA/PyB7fTtcbiAgICAgICAgY29uc3QgeyBQcmljZUxpc3RJZCB9ID0gY29udGV4dC5wcm9wZXJ0aWVzID8/IHt9O1xuXG4gICAgICAgIGNvbnN0IG1lcmdlQ29udGV4dDogUnVudGltZUNvbnRleHQgPSB7XG4gICAgICAgICAgLi4ucnVudGltZUNvbnRleHQsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgLi4ucnVudGltZUNvbnRleHQucHJvcGVydGllcyxcbiAgICAgICAgICAgIC4uLmNvbnRleHQucHJvcGVydGllcyxcbiAgICAgICAgICAgIFByaWNpbmdFbmFibGVkOiBQcmljZUxpc3RJZCA/ICd0cnVlJyA6ICdmYWxzZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmlkMTV0bzE4KCdBY2NvdW50SWQnLCBtZXJnZUNvbnRleHQucHJvcGVydGllcyk7XG4gICAgICAgIHRoaXMuX3J1bnRpbWVDb250ZXh0ID0gbWVyZ2VDb250ZXh0O1xuXG4gICAgICAgIGlmIChjb250ZXh0LnByb3BlcnRpZXMgJiYgdGhpcy5fcnVudGltZUNvbnRleHQucHJvcGVydGllcz8uU3RhcnREYXRlKSB7XG4gICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUoe1xuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAuLi50aGlzLl9ydW50aW1lQ29udGV4dC5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi5jb250ZXh0LnByb3BlcnRpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bnRpbWVDb250ZXh0O1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4gKHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSB0cnVlKSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZVVJRGVmaW5pdGlvbih1aURlZmluaXRpb25Db250YWluZXI6IFVJRGVmaW5pdGlvbkNvbnRhaW5lcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcnVudGltZUNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9ydW50aW1lQ29udGV4dC51aURlZmluaXRpb25Db250YWluZXIgPSB1aURlZmluaXRpb25Db250YWluZXI7XG4gICAgdGhpcy51aURlZmluaXRpb25Qcm9wZXJ0aWVzID0gdWlEZWZpbml0aW9uQ29udGFpbmVyLnNvdXJjZS5wcm9wZXJ0aWVzID8/IHt9O1xuICB9XG5cbiAgcHJpdmF0ZSBpZDE1dG8xOChwcm9wZXJ0eU5hbWU6IHN0cmluZywgc291cmNlPzogRGljdGlvbmFyeTxhbnk+KTogdm9pZCB7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHNvdXJjZVtwcm9wZXJ0eU5hbWVdO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID09PSAxNSkge1xuICAgICAgc291cmNlW3Byb3BlcnR5TmFtZV0gPSBTYWxlc2ZvcmNlSWRVdGlscy5nZW5lcmF0ZUlkMThGcm9tSWQxNSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0luaXRpYWxpemVkO1xuICB9XG5cbiAgcHVibGljIGdldCBydW50aW1lTW9kZWwoKTogUnVudGltZU1vZGVsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lQ29udGV4dD8ucnVudGltZU1vZGVsO1xuICB9XG5cbiAgcHVibGljIGdldCBydW50aW1lQ29udGV4dCgpOiBSdW50aW1lQ29udGV4dCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3J1bnRpbWVDb250ZXh0O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,299 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { FlowStateApiService, QuoteApiService } from '@veloceapps/api';
3
+ import { ToastService, ToastType } from '@veloceapps/components';
4
+ import { EntityUtil, UUID, } from '@veloceapps/core';
5
+ import { assign, cloneDeep } from 'lodash';
6
+ import { BehaviorSubject, Subject, distinctUntilChanged, filter, finalize, map, of, switchMap, takeUntil, tap, } from 'rxjs';
7
+ import { FlowInfoService, FlowStateService, QuoteDraftService } from '../../../services';
8
+ import { FlowConfigurationService } from '../../flow-configuration';
9
+ import { ConfigurationRuntimeService } from './configuration-runtime.service';
10
+ import { ConfigurationService } from './configuration.service';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "./configuration-runtime.service";
13
+ import * as i2 from "./configuration.service";
14
+ import * as i3 from "../../../services";
15
+ import * as i4 from "@veloceapps/components";
16
+ import * as i5 from "../../flow-configuration";
17
+ import * as i6 from "@veloceapps/api";
18
+ export class ConfigurationStateService {
19
+ constructor(configurationRuntimeService, configurationService, quoteDraftService, toastService, flowStateService, flowInfoService, flowConfigurationService, flowStateApiService, quoteApiService) {
20
+ this.configurationRuntimeService = configurationRuntimeService;
21
+ this.configurationService = configurationService;
22
+ this.quoteDraftService = quoteDraftService;
23
+ this.toastService = toastService;
24
+ this.flowStateService = flowStateService;
25
+ this.flowInfoService = flowInfoService;
26
+ this.flowConfigurationService = flowConfigurationService;
27
+ this.flowStateApiService = flowStateApiService;
28
+ this.quoteApiService = quoteApiService;
29
+ this.isInitialized$ = new BehaviorSubject(false);
30
+ this.canceledConfiguration$ = new Subject();
31
+ this.NOT_INITIALIZED = Symbol();
32
+ this.executedFunctions = {};
33
+ this.stateId = null;
34
+ this.ownerId = '';
35
+ this.subscriptions = {};
36
+ this.configurationStore = {};
37
+ }
38
+ init$() {
39
+ let request$;
40
+ if (this.flowStateService.stateId && this.isStatefulConfiguration) {
41
+ request$ = this.initStateful$();
42
+ }
43
+ else {
44
+ request$ = this.initStateless$();
45
+ }
46
+ return request$.pipe(finalize(() => {
47
+ this.isInitialized$.next(true);
48
+ this.canceledConfiguration$ = new Subject();
49
+ }));
50
+ }
51
+ cleanup() {
52
+ this.stateId = null;
53
+ this.configurationStore = {};
54
+ this.configurationService.reset();
55
+ }
56
+ execute$(req, forceSubscriptions) {
57
+ const fullRequest = cloneDeep(req);
58
+ if (fullRequest.actions?.length || forceSubscriptions) {
59
+ for (const subscription of Object.values(this.subscriptions)) {
60
+ fullRequest.selectors = assign(fullRequest.selectors, subscription.request.selectors);
61
+ }
62
+ }
63
+ let execution$;
64
+ if (this.isStatefulConfiguration) {
65
+ execution$ = this.executeStateful$(fullRequest);
66
+ }
67
+ else {
68
+ execution$ = this.executeStateless$(fullRequest);
69
+ }
70
+ return execution$.pipe(tap(result => this.handleSelectorsResponse(result.selectors)));
71
+ }
72
+ handleSelectorsResponse(selectors) {
73
+ Object.entries(selectors).forEach(([requestId, selectorResult]) => {
74
+ if (!selectorResult.success) {
75
+ this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });
76
+ }
77
+ const subscription$ = this.subscriptions[requestId]?.data$;
78
+ if (subscription$) {
79
+ subscription$.next(selectorResult);
80
+ }
81
+ });
82
+ }
83
+ dispatch$(actionName, inputData = {}) {
84
+ return this.execute$({ actions: [{ apiName: actionName, inputData, ownerId: this.ownerId }] });
85
+ }
86
+ select$(selectorName, inputData = {}) {
87
+ const requestId = UUID.UUID();
88
+ return this.execute$({
89
+ selectors: {
90
+ [requestId]: {
91
+ apiName: selectorName,
92
+ inputData,
93
+ ownerId: this.ownerId,
94
+ },
95
+ },
96
+ }).pipe(map(response => response.selectors[requestId]));
97
+ }
98
+ subscribe$(selectorName, inputData = {}, options) {
99
+ const requestId = UUID.UUID();
100
+ let subscription = this.subscriptions[requestId];
101
+ if (!subscription) {
102
+ const request = {
103
+ selectors: {
104
+ [requestId]: {
105
+ apiName: selectorName,
106
+ inputData,
107
+ ownerId: this.ownerId,
108
+ },
109
+ },
110
+ };
111
+ subscription = {
112
+ request,
113
+ data$: new BehaviorSubject(this.NOT_INITIALIZED),
114
+ };
115
+ this.subscriptions[requestId] = subscription;
116
+ if (!options?.cold) {
117
+ this.execute$(request).subscribe();
118
+ }
119
+ }
120
+ return subscription.data$.pipe(filter(data => data != this.NOT_INITIALIZED), map(data => data), distinctUntilChanged(), finalize(() => {
121
+ if (!this.subscriptions[requestId]?.data$.observed) {
122
+ delete this.subscriptions[requestId];
123
+ }
124
+ }), takeUntil(this.canceledConfiguration$));
125
+ }
126
+ saveConfiguration(quoteId, flow) {
127
+ if (this.isStatefulConfiguration) {
128
+ return this.flowStateApiService
129
+ .saveConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '')
130
+ .pipe(switchMap(r => this.flowStateService.executeRequest$({}, true).pipe(map(() => r))));
131
+ }
132
+ else {
133
+ if (!flow) {
134
+ if (!quoteId) {
135
+ return of({ quoteId: '' });
136
+ }
137
+ const rootLineItem = this.configurationService.getSnapshot();
138
+ const currentState = rootLineItem ? [rootLineItem] : [];
139
+ return this.quoteApiService
140
+ .getQuoteDraft(quoteId)
141
+ .pipe(switchMap(quoteDraft => this.quoteApiService.upsertQuote({ ...quoteDraft, currentState })));
142
+ }
143
+ else {
144
+ const quoteDraft = this.quoteDraftService.quoteDraft;
145
+ const lineItem = this.configurationService.getSnapshot();
146
+ if (!quoteDraft || !lineItem) {
147
+ return of({ quoteId: '' });
148
+ }
149
+ const isNewLineItem = quoteDraft.currentState.every(li => li.id !== lineItem.id);
150
+ let updatedState;
151
+ if (isNewLineItem) {
152
+ updatedState = [...quoteDraft.currentState, lineItem];
153
+ }
154
+ else {
155
+ updatedState = quoteDraft.currentState.map(li => (li.id === lineItem.id ? lineItem : li));
156
+ }
157
+ return this.flowConfigurationService
158
+ .calculate$({ ...quoteDraft, currentState: updatedState })
159
+ .pipe(map(() => ({ quoteId: '' })));
160
+ }
161
+ }
162
+ }
163
+ cancelConfiguration() {
164
+ if (!this.isInitialized$.value) {
165
+ return of(undefined);
166
+ }
167
+ this.canceledConfiguration$.next();
168
+ this.canceledConfiguration$.complete();
169
+ this.subscriptions = {};
170
+ this.isInitialized$.next(false);
171
+ if (!this.isInitialized$.value || !this.isStatefulConfiguration) {
172
+ return of(undefined);
173
+ }
174
+ return this.flowStateApiService.cancelConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '');
175
+ }
176
+ get isStatefulConfiguration() {
177
+ return this.flowInfoService.flow?.properties.stateful ?? false;
178
+ }
179
+ initStateful$() {
180
+ this.ownerId = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer?.id ?? '';
181
+ const lineItemId = this.configurationRuntimeService.runtimeContext?.properties?.lineItemId;
182
+ if (!this.flowStateService.stateId) {
183
+ return of(undefined);
184
+ }
185
+ const container = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer;
186
+ const lineItem = this.configurationService.generateLineItem();
187
+ let request$;
188
+ if (!lineItemId) {
189
+ request$ = this.flowStateApiService.newConfiguration(this.flowStateService.stateId, {
190
+ lineItem,
191
+ actionsOverride: container?.actions?.map(processor => ({ ...processor, ownerId: this.ownerId })),
192
+ selectorsOverride: container?.selectors?.map(processor => ({ ...processor, ownerId: this.ownerId })),
193
+ });
194
+ }
195
+ else {
196
+ request$ = this.flowStateApiService.startConfiguration(this.flowStateService.stateId, {
197
+ lineItemId,
198
+ actionsOverride: container?.actions?.map(processor => ({ ...processor, ownerId: this.ownerId })),
199
+ selectorsOverride: container?.selectors?.map(processor => ({ ...processor, ownerId: this.ownerId })),
200
+ });
201
+ }
202
+ return request$.pipe(map(r => {
203
+ this.stateId = r.stateId;
204
+ return undefined;
205
+ }));
206
+ }
207
+ initStateless$() {
208
+ return this.configurationService.configure().pipe(map(() => undefined));
209
+ }
210
+ executeStateless$(request) {
211
+ return of(undefined).pipe(switchMap(() => {
212
+ // Apply actions and execute configuration/price call
213
+ // No need to run configuration if no actions in the request
214
+ if (!request.actions?.length) {
215
+ return of(undefined);
216
+ }
217
+ let configurationRequest = this.configurationService.generateRequest();
218
+ request.actions.forEach(action => {
219
+ try {
220
+ configurationRequest = this.executeActionScript(configurationRequest, action) ?? configurationRequest;
221
+ }
222
+ catch (e) {
223
+ console.error(e);
224
+ this.toastService.add({ severity: ToastType.error, summary: String(e) });
225
+ throw e;
226
+ }
227
+ });
228
+ return this.configurationService.configureRequest$(configurationRequest);
229
+ }), map(() => {
230
+ // Run selectors and apply them to the state
231
+ const configurationState = cloneDeep(this.configurationService.stateSnapshot);
232
+ if (!configurationState) {
233
+ return { stateId: '', selectors: {} };
234
+ }
235
+ const selectorsResult = EntityUtil.entries(request.selectors ?? {}).reduce((result, [key, selector]) => {
236
+ try {
237
+ result.selectors[key] = {
238
+ success: true,
239
+ result: this.executeSelectorScript(configurationState, selector),
240
+ };
241
+ }
242
+ catch (e) {
243
+ console.error(e);
244
+ result.selectors[key] = {
245
+ success: false,
246
+ errorMessage: String(e),
247
+ };
248
+ }
249
+ return result;
250
+ }, { stateId: '', selectors: {} });
251
+ return selectorsResult;
252
+ }));
253
+ }
254
+ executeStateful$(request) {
255
+ if (!this.flowStateService.stateId || !this.stateId) {
256
+ return of();
257
+ }
258
+ return this.flowStateApiService.executeConfiguration(this.flowStateService.stateId, this.stateId, request).pipe(tap(response => {
259
+ this.stateId = response.stateId;
260
+ }));
261
+ }
262
+ executeActionScript(request, processor) {
263
+ const { actions } = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer ?? {};
264
+ const configurationProcessor = actions?.find(action => action.apiName === processor.apiName);
265
+ if (!configurationProcessor?.script) {
266
+ throw `ConfigurationProcessor ${processor.apiName} not found`;
267
+ }
268
+ return this.executeProcessorScript(request, configurationProcessor, processor.inputData);
269
+ }
270
+ executeSelectorScript(request, processor) {
271
+ const { selectors } = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer ?? {};
272
+ const configurationProcessor = selectors?.find(selector => selector.apiName === processor.apiName);
273
+ if (!configurationProcessor?.script) {
274
+ throw `ConfigurationProcessor ${processor.apiName} not found`;
275
+ }
276
+ return this.executeProcessorScript(request, configurationProcessor, processor.inputData);
277
+ }
278
+ executeProcessorScript(request, configurationProcessor, inputData) {
279
+ let functionToExecute = this.executedFunctions[configurationProcessor.apiName];
280
+ if (!functionToExecute) {
281
+ const script = `${configurationProcessor.script}\nreturn transform;`;
282
+ const sourceMap = `\n//# sourceURL=${configurationProcessor.apiName}.js`;
283
+ functionToExecute = new Function(script + sourceMap)();
284
+ this.executedFunctions[configurationProcessor.apiName] = functionToExecute;
285
+ }
286
+ return functionToExecute({
287
+ request,
288
+ inputData,
289
+ flowStore: this.flowStateService.getFlowStore(),
290
+ configurationStore: this.configurationStore,
291
+ });
292
+ }
293
+ }
294
+ ConfigurationStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationStateService, deps: [{ token: i1.ConfigurationRuntimeService }, { token: i2.ConfigurationService }, { token: i3.QuoteDraftService }, { token: i4.ToastService }, { token: i3.FlowStateService }, { token: i3.FlowInfoService }, { token: i5.FlowConfigurationService }, { token: i6.FlowStateApiService }, { token: i6.QuoteApiService }], target: i0.ɵɵFactoryTarget.Injectable });
295
+ ConfigurationStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationStateService });
296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationStateService, decorators: [{
297
+ type: Injectable
298
+ }], ctorParameters: function () { return [{ type: i1.ConfigurationRuntimeService }, { type: i2.ConfigurationService }, { type: i3.QuoteDraftService }, { type: i4.ToastService }, { type: i3.FlowStateService }, { type: i3.FlowInfoService }, { type: i5.FlowConfigurationService }, { type: i6.FlowStateApiService }, { type: i6.QuoteApiService }]; } });
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUtMLFVBQVUsRUFNVixJQUFJLEdBQ0wsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQWMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsZUFBZSxFQUVmLE9BQU8sRUFDUCxvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBQ0gsRUFBRSxFQUNGLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXpGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7OztBQVEvRCxNQUFNLE9BQU8seUJBQXlCO0lBWXBDLFlBQ1UsMkJBQXdELEVBQ3hELG9CQUEwQyxFQUMxQyxpQkFBb0MsRUFDcEMsWUFBMEIsRUFDMUIsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLHdCQUFrRCxFQUNsRCxtQkFBd0MsRUFDeEMsZUFBZ0M7UUFSaEMsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXBCbkMsbUJBQWMsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDL0UsMkJBQXNCLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbEQsb0JBQWUsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUVwQyxzQkFBaUIsR0FBK0MsRUFBRSxDQUFDO1FBQ25FLFlBQU8sR0FBa0IsSUFBSSxDQUFDO1FBQzlCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixrQkFBYSxHQUFzQyxFQUFFLENBQUM7UUFDdEQsdUJBQWtCLEdBQTRCLEVBQUUsQ0FBQztJQVl0RCxDQUFDO0lBRUcsS0FBSztRQUNWLElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUNqRSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ2pDO2FBQU07WUFDTCxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ2xDO1FBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNsQixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVNLFFBQVEsQ0FDYixHQUFpQyxFQUNqQyxrQkFBNEI7UUFFNUIsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLElBQUksa0JBQWtCLEVBQUU7WUFDckQsS0FBSyxNQUFNLFlBQVksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDNUQsV0FBVyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3ZGO1NBQ0Y7UUFFRCxJQUFJLFVBQVUsQ0FBQztRQUVmLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQ2hDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDakQ7YUFBTTtZQUNMLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDbEQ7UUFFRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVPLHVCQUF1QixDQUFDLFNBQTZEO1FBQzNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLEVBQUUsRUFBRTtZQUNoRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtnQkFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7YUFDNUY7WUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUMzRCxJQUFJLGFBQWEsRUFBRTtnQkFDakIsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFNBQVMsQ0FBQyxVQUFrQixFQUFFLFlBQXFCLEVBQUU7UUFDMUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFTSxPQUFPLENBQ1osWUFBb0IsRUFDcEIsWUFBcUIsRUFBRTtRQUV2QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFOUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ25CLFNBQVMsRUFBRTtnQkFDVCxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUNYLE9BQU8sRUFBRSxZQUFZO29CQUNyQixTQUFTO29CQUNULE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztpQkFDdEI7YUFDRjtTQUNGLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQXdDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFTSxVQUFVLENBQ2YsWUFBb0IsRUFDcEIsWUFBcUIsRUFBRSxFQUN2QixPQUFzQztRQUV0QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFOUIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE1BQU0sT0FBTyxHQUFpQztnQkFDNUMsU0FBUyxFQUFFO29CQUNULENBQUMsU0FBUyxDQUFDLEVBQUU7d0JBQ1gsT0FBTyxFQUFFLFlBQVk7d0JBQ3JCLFNBQVM7d0JBQ1QsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO3FCQUN0QjtpQkFDRjthQUNGLENBQUM7WUFFRixZQUFZLEdBQUc7Z0JBQ2IsT0FBTztnQkFDUCxLQUFLLEVBQUUsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUMxRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxZQUFZLENBQUM7WUFFN0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDcEM7U0FDRjtRQUVELE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQzVDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQTJDLENBQUMsRUFDeEQsb0JBQW9CLEVBQUUsRUFDdEIsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN0QztRQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FDdkMsQ0FBQztJQUNKLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxPQUFnQixFQUFFLElBQWM7UUFDdkQsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDaEMsT0FBTyxJQUFJLENBQUMsbUJBQW1CO2lCQUM1QixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztpQkFDMUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDWixPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUM1QjtnQkFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQzdELE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUV4RCxPQUFPLElBQUksQ0FBQyxlQUFlO3FCQUN4QixhQUFhLENBQUMsT0FBTyxDQUFDO3FCQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLFVBQVUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyRztpQkFBTTtnQkFDTCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDO2dCQUNyRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBRXpELElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQzVCLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQzVCO2dCQUVELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRWpGLElBQUksWUFBd0IsQ0FBQztnQkFDN0IsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLFlBQVksR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztpQkFDdkQ7cUJBQU07b0JBQ0wsWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDM0Y7Z0JBRUQsT0FBTyxJQUFJLENBQUMsd0JBQXdCO3FCQUNqQyxVQUFVLENBQUMsRUFBRSxHQUFHLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLENBQUM7cUJBQ3pELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2QztTQUNGO0lBQ0gsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUU7WUFDOUIsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdEI7UUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUMvRCxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN0QjtRQUNELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0csQ0FBQztJQUVELElBQVksdUJBQXVCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7SUFDakUsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsY0FBYyxFQUFFLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDaEcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDO1FBQzNGLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO1lBQ2xDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3RCO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGNBQWMsRUFBRSxxQkFBcUIsQ0FBQztRQUV6RixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUU5RCxJQUFJLFFBQThDLENBQUM7UUFFbkQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtnQkFDbEYsUUFBUTtnQkFDUixlQUFlLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDckcsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtnQkFDcEYsVUFBVTtnQkFDVixlQUFlLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDckcsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQ2xCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUN6QixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWM7UUFDcEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxPQUFxQztRQUM3RCxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixxREFBcUQ7WUFDckQsNERBQTREO1lBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRTtnQkFDNUIsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDdEI7WUFFRCxJQUFJLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2RSxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDL0IsSUFBSTtvQkFDRixvQkFBb0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLElBQUksb0JBQW9CLENBQUM7aUJBQ3ZHO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3pFLE1BQU0sQ0FBQyxDQUFDO2lCQUNUO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCw0Q0FBNEM7WUFDNUMsTUFBTSxrQkFBa0IsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtnQkFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDO2FBQ3ZDO1lBRUQsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDeEUsQ0FBQyxNQUFnQyxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3BELElBQUk7b0JBQ0YsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRzt3QkFDdEIsT0FBTyxFQUFFLElBQUk7d0JBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUM7cUJBQ2pFLENBQUM7aUJBQ0g7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRzt3QkFDdEIsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7cUJBQ3hCLENBQUM7aUJBQ0g7Z0JBRUQsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQyxFQUNELEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQy9CLENBQUM7WUFFRixPQUFPLGVBQWUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQXFDO1FBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNuRCxPQUFPLEVBQUUsRUFBRSxDQUFDO1NBQ2I7UUFFRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM3RyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUE2QixFQUFFLFNBQWlDO1FBQzFGLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsY0FBYyxFQUFFLHFCQUFxQixJQUFJLEVBQUUsQ0FBQztRQUNqRyxNQUFNLHNCQUFzQixHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU3RixJQUFJLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxFQUFFO1lBQ25DLE1BQU0sMEJBQTBCLFNBQVMsQ0FBQyxPQUFPLFlBQVksQ0FBQztTQUMvRDtRQUVELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUF5QixDQUFDO0lBQ25ILENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxPQUF1QixFQUFFLFNBQWlDO1FBQ3RGLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsY0FBYyxFQUFFLHFCQUFxQixJQUFJLEVBQUUsQ0FBQztRQUNuRyxNQUFNLHNCQUFzQixHQUFHLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxFQUFFO1lBQ25DLE1BQU0sMEJBQTBCLFNBQVMsQ0FBQyxPQUFPLFlBQVksQ0FBQztTQUMvRDtRQUVELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVPLHNCQUFzQixDQUM1QixPQUE4QyxFQUM5QyxzQkFBOEMsRUFDOUMsU0FBa0I7UUFFbEIsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3RCLE1BQU0sTUFBTSxHQUFHLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxxQkFBcUIsQ0FBQztZQUNyRSxNQUFNLFNBQVMsR0FBRyxtQkFBbUIsc0JBQXNCLENBQUMsT0FBTyxLQUFLLENBQUM7WUFDekUsaUJBQWlCLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxFQUFvQyxDQUFDO1lBQ3pGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztTQUM1RTtRQUVELE9BQU8saUJBQWlCLENBQUM7WUFDdkIsT0FBTztZQUNQLFNBQVM7WUFDVCxTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRTtZQUMvQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1NBQzVDLENBQUMsQ0FBQztJQUNMLENBQUM7O3NIQS9WVSx5QkFBeUI7MEhBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxvd1N0YXRlQXBpU2VydmljZSwgUXVvdGVBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSwgVG9hc3RUeXBlIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uUHJvY2Vzc29yLFxuICBDb25maWd1cmF0aW9uUHJvY2Vzc29yU2NyaXB0Rm4sXG4gIENvbmZpZ3VyYXRpb25SZXF1ZXN0LFxuICBDb25maWd1cmVQcmljZSxcbiAgRW50aXR5VXRpbCxcbiAgRmxvd1N0YXRlRXhlY3V0YWJsZURUTyxcbiAgRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyxcbiAgRmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0LFxuICBGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlLFxuICBMaW5lSXRlbSxcbiAgVVVJRCxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5LCBhc3NpZ24sIGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIGZpbmFsaXplLFxuICBtYXAsXG4gIG9mLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZsb3dJbmZvU2VydmljZSwgRmxvd1N0YXRlU2VydmljZSwgUXVvdGVEcmFmdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBGbG93U3RhdGVTdWJzY3JpcHRpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZmxvdy1zdGF0ZS50eXBlcyc7XG5pbXBvcnQgeyBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9mbG93LWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWd1cmF0aW9uLXJ1bnRpbWUuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcblxudHlwZSBTdGF0ZVN1YnNjcmlwdGlvbiA9IHtcbiAgcmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTztcbiAgZGF0YSQ6IEJlaGF2aW9yU3ViamVjdDx1bmtub3duPjtcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uU3RhdGVTZXJ2aWNlIHtcbiAgcHVibGljIGlzSW5pdGlhbGl6ZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGNhbmNlbGVkQ29uZmlndXJhdGlvbiQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgTk9UX0lOSVRJQUxJWkVEID0gU3ltYm9sKCk7XG5cbiAgcHJpdmF0ZSBleGVjdXRlZEZ1bmN0aW9uczogRGljdGlvbmFyeTxDb25maWd1cmF0aW9uUHJvY2Vzc29yU2NyaXB0Rm4+ID0ge307XG4gIHByaXZhdGUgc3RhdGVJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgb3duZXJJZCA9ICcnO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFJlY29yZDxzdHJpbmcsIFN0YXRlU3Vic2NyaXB0aW9uPiA9IHt9O1xuICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TdG9yZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZTogQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93Q29uZmlndXJhdGlvblNlcnZpY2U6IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dTdGF0ZUFwaVNlcnZpY2U6IEZsb3dTdGF0ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZUFwaVNlcnZpY2U6IFF1b3RlQXBpU2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBpbml0JCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBsZXQgcmVxdWVzdCQ7XG4gICAgaWYgKHRoaXMuZmxvd1N0YXRlU2VydmljZS5zdGF0ZUlkICYmIHRoaXMuaXNTdGF0ZWZ1bENvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHJlcXVlc3QkID0gdGhpcy5pbml0U3RhdGVmdWwkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QkID0gdGhpcy5pbml0U3RhdGVsZXNzJCgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0JC5waXBlKFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuY2FuY2VsZWRDb25maWd1cmF0aW9uJCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNsZWFudXAoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUlkID0gbnVsbDtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdG9yZSA9IHt9O1xuICAgIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UucmVzZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBleGVjdXRlJChcbiAgICByZXE6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8sXG4gICAgZm9yY2VTdWJzY3JpcHRpb25zPzogYm9vbGVhbixcbiAgKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+IHtcbiAgICBjb25zdCBmdWxsUmVxdWVzdCA9IGNsb25lRGVlcChyZXEpO1xuICAgIGlmIChmdWxsUmVxdWVzdC5hY3Rpb25zPy5sZW5ndGggfHwgZm9yY2VTdWJzY3JpcHRpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiBPYmplY3QudmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9ucykpIHtcbiAgICAgICAgZnVsbFJlcXVlc3Quc2VsZWN0b3JzID0gYXNzaWduKGZ1bGxSZXF1ZXN0LnNlbGVjdG9ycywgc3Vic2NyaXB0aW9uLnJlcXVlc3Quc2VsZWN0b3JzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgZXhlY3V0aW9uJDtcblxuICAgIGlmICh0aGlzLmlzU3RhdGVmdWxDb25maWd1cmF0aW9uKSB7XG4gICAgICBleGVjdXRpb24kID0gdGhpcy5leGVjdXRlU3RhdGVmdWwkKGZ1bGxSZXF1ZXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhlY3V0aW9uJCA9IHRoaXMuZXhlY3V0ZVN0YXRlbGVzcyQoZnVsbFJlcXVlc3QpO1xuICAgIH1cblxuICAgIHJldHVybiBleGVjdXRpb24kLnBpcGUodGFwKHJlc3VsdCA9PiB0aGlzLmhhbmRsZVNlbGVjdG9yc1Jlc3BvbnNlKHJlc3VsdC5zZWxlY3RvcnMpKSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNlbGVjdG9yc1Jlc3BvbnNlKHNlbGVjdG9yczogUmVjb3JkPHN0cmluZywgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZTx1bmtub3duPj4pOiB2b2lkIHtcbiAgICBPYmplY3QuZW50cmllcyhzZWxlY3RvcnMpLmZvckVhY2goKFtyZXF1ZXN0SWQsIHNlbGVjdG9yUmVzdWx0XSkgPT4ge1xuICAgICAgaWYgKCFzZWxlY3RvclJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiBUb2FzdFR5cGUuZXJyb3IsIHN1bW1hcnk6IHNlbGVjdG9yUmVzdWx0LmVycm9yTWVzc2FnZSB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uJCA9IHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdPy5kYXRhJDtcbiAgICAgIGlmIChzdWJzY3JpcHRpb24kKSB7XG4gICAgICAgIHN1YnNjcmlwdGlvbiQubmV4dChzZWxlY3RvclJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZGlzcGF0Y2gkKGFjdGlvbk5hbWU6IHN0cmluZywgaW5wdXREYXRhOiB1bmtub3duID0ge30pOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGUkKHsgYWN0aW9uczogW3sgYXBpTmFtZTogYWN0aW9uTmFtZSwgaW5wdXREYXRhLCBvd25lcklkOiB0aGlzLm93bmVySWQgfV0gfSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0JDxSZXNwb25zZSA9IHVua25vd24+KFxuICAgIHNlbGVjdG9yTmFtZTogc3RyaW5nLFxuICAgIGlucHV0RGF0YTogdW5rbm93biA9IHt9LFxuICApOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+PiB7XG4gICAgY29uc3QgcmVxdWVzdElkID0gVVVJRC5VVUlEKCk7XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlJCh7XG4gICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgW3JlcXVlc3RJZF06IHtcbiAgICAgICAgICBhcGlOYW1lOiBzZWxlY3Rvck5hbWUsXG4gICAgICAgICAgaW5wdXREYXRhLFxuICAgICAgICAgIG93bmVySWQ6IHRoaXMub3duZXJJZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSkucGlwZShtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2Uuc2VsZWN0b3JzW3JlcXVlc3RJZF0gYXMgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZTxSZXNwb25zZT4pKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJzY3JpYmUkPFJlc3BvbnNlID0gdW5rbm93bj4oXG4gICAgc2VsZWN0b3JOYW1lOiBzdHJpbmcsXG4gICAgaW5wdXREYXRhOiB1bmtub3duID0ge30sXG4gICAgb3B0aW9ucz86IEZsb3dTdGF0ZVN1YnNjcmlwdGlvbk9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8Rmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZTxSZXNwb25zZT4+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSBVVUlELlVVSUQoKTtcblxuICAgIGxldCBzdWJzY3JpcHRpb24gPSB0aGlzLnN1YnNjcmlwdGlvbnNbcmVxdWVzdElkXTtcbiAgICBpZiAoIXN1YnNjcmlwdGlvbikge1xuICAgICAgY29uc3QgcmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyA9IHtcbiAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgW3JlcXVlc3RJZF06IHtcbiAgICAgICAgICAgIGFwaU5hbWU6IHNlbGVjdG9yTmFtZSxcbiAgICAgICAgICAgIGlucHV0RGF0YSxcbiAgICAgICAgICAgIG93bmVySWQ6IHRoaXMub3duZXJJZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgc3Vic2NyaXB0aW9uID0ge1xuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBkYXRhJDogbmV3IEJlaGF2aW9yU3ViamVjdDx1bmtub3duPih0aGlzLk5PVF9JTklUSUFMSVpFRCksXG4gICAgICB9O1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF0gPSBzdWJzY3JpcHRpb247XG5cbiAgICAgIGlmICghb3B0aW9ucz8uY29sZCkge1xuICAgICAgICB0aGlzLmV4ZWN1dGUkKHJlcXVlc3QpLnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdWJzY3JpcHRpb24uZGF0YSQucGlwZShcbiAgICAgIGZpbHRlcihkYXRhID0+IGRhdGEgIT0gdGhpcy5OT1RfSU5JVElBTElaRUQpLFxuICAgICAgbWFwKGRhdGEgPT4gZGF0YSBhcyBGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlPFJlc3BvbnNlPiksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdPy5kYXRhJC5vYnNlcnZlZCkge1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLnN1YnNjcmlwdGlvbnNbcmVxdWVzdElkXTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwodGhpcy5jYW5jZWxlZENvbmZpZ3VyYXRpb24kKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNhdmVDb25maWd1cmF0aW9uKHF1b3RlSWQ/OiBzdHJpbmcsIGZsb3c/OiBib29sZWFuKTogT2JzZXJ2YWJsZTx7IHF1b3RlSWQ6IHN0cmluZyB9PiB7XG4gICAgaWYgKHRoaXMuaXNTdGF0ZWZ1bENvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmZsb3dTdGF0ZUFwaVNlcnZpY2VcbiAgICAgICAgLnNhdmVDb25maWd1cmF0aW9uKHRoaXMuZmxvd1N0YXRlU2VydmljZS5zdGF0ZUlkID8/ICcnLCB0aGlzLnN0YXRlSWQgPz8gJycpXG4gICAgICAgIC5waXBlKHN3aXRjaE1hcChyID0+IHRoaXMuZmxvd1N0YXRlU2VydmljZS5leGVjdXRlUmVxdWVzdCQoe30sIHRydWUpLnBpcGUobWFwKCgpID0+IHIpKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWZsb3cpIHtcbiAgICAgICAgaWYgKCFxdW90ZUlkKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHsgcXVvdGVJZDogJycgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm9vdExpbmVJdGVtID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5nZXRTbmFwc2hvdCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSByb290TGluZUl0ZW0gPyBbcm9vdExpbmVJdGVtXSA6IFtdO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnF1b3RlQXBpU2VydmljZVxuICAgICAgICAgIC5nZXRRdW90ZURyYWZ0KHF1b3RlSWQpXG4gICAgICAgICAgLnBpcGUoc3dpdGNoTWFwKHF1b3RlRHJhZnQgPT4gdGhpcy5xdW90ZUFwaVNlcnZpY2UudXBzZXJ0UXVvdGUoeyAuLi5xdW90ZURyYWZ0LCBjdXJyZW50U3RhdGUgfSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgICAgIGNvbnN0IGxpbmVJdGVtID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5nZXRTbmFwc2hvdCgpO1xuXG4gICAgICAgIGlmICghcXVvdGVEcmFmdCB8fCAhbGluZUl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gb2YoeyBxdW90ZUlkOiAnJyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzTmV3TGluZUl0ZW0gPSBxdW90ZURyYWZ0LmN1cnJlbnRTdGF0ZS5ldmVyeShsaSA9PiBsaS5pZCAhPT0gbGluZUl0ZW0uaWQpO1xuXG4gICAgICAgIGxldCB1cGRhdGVkU3RhdGU6IExpbmVJdGVtW107XG4gICAgICAgIGlmIChpc05ld0xpbmVJdGVtKSB7XG4gICAgICAgICAgdXBkYXRlZFN0YXRlID0gWy4uLnF1b3RlRHJhZnQuY3VycmVudFN0YXRlLCBsaW5lSXRlbV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBkYXRlZFN0YXRlID0gcXVvdGVEcmFmdC5jdXJyZW50U3RhdGUubWFwKGxpID0+IChsaS5pZCA9PT0gbGluZUl0ZW0uaWQgPyBsaW5lSXRlbSA6IGxpKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5mbG93Q29uZmlndXJhdGlvblNlcnZpY2VcbiAgICAgICAgICAuY2FsY3VsYXRlJCh7IC4uLnF1b3RlRHJhZnQsIGN1cnJlbnRTdGF0ZTogdXBkYXRlZFN0YXRlIH0pXG4gICAgICAgICAgLnBpcGUobWFwKCgpID0+ICh7IHF1b3RlSWQ6ICcnIH0pKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhbmNlbENvbmZpZ3VyYXRpb24oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQkLnZhbHVlKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhbmNlbGVkQ29uZmlndXJhdGlvbiQubmV4dCgpO1xuICAgIHRoaXMuY2FuY2VsZWRDb25maWd1cmF0aW9uJC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IHt9O1xuXG4gICAgdGhpcy5pc0luaXRpYWxpemVkJC5uZXh0KGZhbHNlKTtcbiAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXplZCQudmFsdWUgfHwgIXRoaXMuaXNTdGF0ZWZ1bENvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLmNhbmNlbENvbmZpZ3VyYXRpb24odGhpcy5mbG93U3RhdGVTZXJ2aWNlLnN0YXRlSWQgPz8gJycsIHRoaXMuc3RhdGVJZCA/PyAnJyk7XG4gIH1cblxuICBwcml2YXRlIGdldCBpc1N0YXRlZnVsQ29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdz8ucHJvcGVydGllcy5zdGF0ZWZ1bCA/PyBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN0YXRlZnVsJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICB0aGlzLm93bmVySWQgPSB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5ydW50aW1lQ29udGV4dD8udWlEZWZpbml0aW9uQ29udGFpbmVyPy5pZCA/PyAnJztcbiAgICBjb25zdCBsaW5lSXRlbUlkID0gdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UucnVudGltZUNvbnRleHQ/LnByb3BlcnRpZXM/LmxpbmVJdGVtSWQ7XG4gICAgaWYgKCF0aGlzLmZsb3dTdGF0ZVNlcnZpY2Uuc3RhdGVJZCkge1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UucnVudGltZUNvbnRleHQ/LnVpRGVmaW5pdGlvbkNvbnRhaW5lcjtcblxuICAgIGNvbnN0IGxpbmVJdGVtID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5nZW5lcmF0ZUxpbmVJdGVtKCk7XG5cbiAgICBsZXQgcmVxdWVzdCQ6IE9ic2VydmFibGU8Rmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0PjtcblxuICAgIGlmICghbGluZUl0ZW1JZCkge1xuICAgICAgcmVxdWVzdCQgPSB0aGlzLmZsb3dTdGF0ZUFwaVNlcnZpY2UubmV3Q29uZmlndXJhdGlvbih0aGlzLmZsb3dTdGF0ZVNlcnZpY2Uuc3RhdGVJZCwge1xuICAgICAgICBsaW5lSXRlbSxcbiAgICAgICAgYWN0aW9uc092ZXJyaWRlOiBjb250YWluZXI/LmFjdGlvbnM/Lm1hcChwcm9jZXNzb3IgPT4gKHsgLi4ucHJvY2Vzc29yLCBvd25lcklkOiB0aGlzLm93bmVySWQgfSkpLFxuICAgICAgICBzZWxlY3RvcnNPdmVycmlkZTogY29udGFpbmVyPy5zZWxlY3RvcnM/Lm1hcChwcm9jZXNzb3IgPT4gKHsgLi4ucHJvY2Vzc29yLCBvd25lcklkOiB0aGlzLm93bmVySWQgfSkpLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QkID0gdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLnN0YXJ0Q29uZmlndXJhdGlvbih0aGlzLmZsb3dTdGF0ZVNlcnZpY2Uuc3RhdGVJZCwge1xuICAgICAgICBsaW5lSXRlbUlkLFxuICAgICAgICBhY3Rpb25zT3ZlcnJpZGU6IGNvbnRhaW5lcj8uYWN0aW9ucz8ubWFwKHByb2Nlc3NvciA9PiAoeyAuLi5wcm9jZXNzb3IsIG93bmVySWQ6IHRoaXMub3duZXJJZCB9KSksXG4gICAgICAgIHNlbGVjdG9yc092ZXJyaWRlOiBjb250YWluZXI/LnNlbGVjdG9ycz8ubWFwKHByb2Nlc3NvciA9PiAoeyAuLi5wcm9jZXNzb3IsIG93bmVySWQ6IHRoaXMub3duZXJJZCB9KSksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxdWVzdCQucGlwZShcbiAgICAgIG1hcChyID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZUlkID0gci5zdGF0ZUlkO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN0YXRlbGVzcyQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuY29uZmlndXJlKCkucGlwZShtYXAoKCkgPT4gdW5kZWZpbmVkKSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdGF0ZWxlc3MkKHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8pOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdD4ge1xuICAgIHJldHVybiBvZih1bmRlZmluZWQpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAvLyBBcHBseSBhY3Rpb25zIGFuZCBleGVjdXRlIGNvbmZpZ3VyYXRpb24vcHJpY2UgY2FsbFxuICAgICAgICAvLyBObyBuZWVkIHRvIHJ1biBjb25maWd1cmF0aW9uIGlmIG5vIGFjdGlvbnMgaW4gdGhlIHJlcXVlc3RcbiAgICAgICAgaWYgKCFyZXF1ZXN0LmFjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNvbmZpZ3VyYXRpb25SZXF1ZXN0ID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5nZW5lcmF0ZVJlcXVlc3QoKTtcbiAgICAgICAgcmVxdWVzdC5hY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uZmlndXJhdGlvblJlcXVlc3QgPSB0aGlzLmV4ZWN1dGVBY3Rpb25TY3JpcHQoY29uZmlndXJhdGlvblJlcXVlc3QsIGFjdGlvbikgPz8gY29uZmlndXJhdGlvblJlcXVlc3Q7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiBUb2FzdFR5cGUuZXJyb3IsIHN1bW1hcnk6IFN0cmluZyhlKSB9KTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5jb25maWd1cmVSZXF1ZXN0JChjb25maWd1cmF0aW9uUmVxdWVzdCk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIC8vIFJ1biBzZWxlY3RvcnMgYW5kIGFwcGx5IHRoZW0gdG8gdGhlIHN0YXRlXG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25TdGF0ZSA9IGNsb25lRGVlcCh0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLnN0YXRlU25hcHNob3QpO1xuICAgICAgICBpZiAoIWNvbmZpZ3VyYXRpb25TdGF0ZSkge1xuICAgICAgICAgIHJldHVybiB7IHN0YXRlSWQ6ICcnLCBzZWxlY3RvcnM6IHt9IH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWxlY3RvcnNSZXN1bHQgPSBFbnRpdHlVdGlsLmVudHJpZXMocmVxdWVzdC5zZWxlY3RvcnMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAocmVzdWx0OiBGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQsIFtrZXksIHNlbGVjdG9yXSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmVzdWx0LnNlbGVjdG9yc1trZXldID0ge1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgcmVzdWx0OiB0aGlzLmV4ZWN1dGVTZWxlY3RvclNjcmlwdChjb25maWd1cmF0aW9uU3RhdGUsIHNlbGVjdG9yKSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgcmVzdWx0LnNlbGVjdG9yc1trZXldID0ge1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZTogU3RyaW5nKGUpLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBzdGF0ZUlkOiAnJywgc2VsZWN0b3JzOiB7fSB9LFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RvcnNSZXN1bHQ7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU3RhdGVmdWwkKHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8pOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdD4ge1xuICAgIGlmICghdGhpcy5mbG93U3RhdGVTZXJ2aWNlLnN0YXRlSWQgfHwgIXRoaXMuc3RhdGVJZCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvd1N0YXRlQXBpU2VydmljZS5leGVjdXRlQ29uZmlndXJhdGlvbih0aGlzLmZsb3dTdGF0ZVNlcnZpY2Uuc3RhdGVJZCwgdGhpcy5zdGF0ZUlkLCByZXF1ZXN0KS5waXBlKFxuICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZUlkID0gcmVzcG9uc2Uuc3RhdGVJZDtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVBY3Rpb25TY3JpcHQocmVxdWVzdDogQ29uZmlndXJhdGlvblJlcXVlc3QsIHByb2Nlc3NvcjogRmxvd1N0YXRlRXhlY3V0YWJsZURUTyk6IENvbmZpZ3VyYXRpb25SZXF1ZXN0IHtcbiAgICBjb25zdCB7IGFjdGlvbnMgfSA9IHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnJ1bnRpbWVDb250ZXh0Py51aURlZmluaXRpb25Db250YWluZXIgPz8ge307XG4gICAgY29uc3QgY29uZmlndXJhdGlvblByb2Nlc3NvciA9IGFjdGlvbnM/LmZpbmQoYWN0aW9uID0+IGFjdGlvbi5hcGlOYW1lID09PSBwcm9jZXNzb3IuYXBpTmFtZSk7XG5cbiAgICBpZiAoIWNvbmZpZ3VyYXRpb25Qcm9jZXNzb3I/LnNjcmlwdCkge1xuICAgICAgdGhyb3cgYENvbmZpZ3VyYXRpb25Qcm9jZXNzb3IgJHtwcm9jZXNzb3IuYXBpTmFtZX0gbm90IGZvdW5kYDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUHJvY2Vzc29yU2NyaXB0KHJlcXVlc3QsIGNvbmZpZ3VyYXRpb25Qcm9jZXNzb3IsIHByb2Nlc3Nvci5pbnB1dERhdGEpIGFzIENvbmZpZ3VyYXRpb25SZXF1ZXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU2VsZWN0b3JTY3JpcHQocmVxdWVzdDogQ29uZmlndXJlUHJpY2UsIHByb2Nlc3NvcjogRmxvd1N0YXRlRXhlY3V0YWJsZURUTyk6IHVua25vd24ge1xuICAgIGNvbnN0IHsgc2VsZWN0b3JzIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5ydW50aW1lQ29udGV4dD8udWlEZWZpbml0aW9uQ29udGFpbmVyID8/IHt9O1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25Qcm9jZXNzb3IgPSBzZWxlY3RvcnM/LmZpbmQoc2VsZWN0b3IgPT4gc2VsZWN0b3IuYXBpTmFtZSA9PT0gcHJvY2Vzc29yLmFwaU5hbWUpO1xuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uUHJvY2Vzc29yPy5zY3JpcHQpIHtcbiAgICAgIHRocm93IGBDb25maWd1cmF0aW9uUHJvY2Vzc29yICR7cHJvY2Vzc29yLmFwaU5hbWV9IG5vdCBmb3VuZGA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVByb2Nlc3NvclNjcmlwdChyZXF1ZXN0LCBjb25maWd1cmF0aW9uUHJvY2Vzc29yLCBwcm9jZXNzb3IuaW5wdXREYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZVByb2Nlc3NvclNjcmlwdChcbiAgICByZXF1ZXN0OiBDb25maWd1cmF0aW9uUmVxdWVzdCB8IENvbmZpZ3VyZVByaWNlLFxuICAgIGNvbmZpZ3VyYXRpb25Qcm9jZXNzb3I6IENvbmZpZ3VyYXRpb25Qcm9jZXNzb3IsXG4gICAgaW5wdXREYXRhOiB1bmtub3duLFxuICApOiB1bmtub3duIHtcbiAgICBsZXQgZnVuY3Rpb25Ub0V4ZWN1dGUgPSB0aGlzLmV4ZWN1dGVkRnVuY3Rpb25zW2NvbmZpZ3VyYXRpb25Qcm9jZXNzb3IuYXBpTmFtZV07XG4gICAgaWYgKCFmdW5jdGlvblRvRXhlY3V0ZSkge1xuICAgICAgY29uc3Qgc2NyaXB0ID0gYCR7Y29uZmlndXJhdGlvblByb2Nlc3Nvci5zY3JpcHR9XFxucmV0dXJuIHRyYW5zZm9ybTtgO1xuICAgICAgY29uc3Qgc291cmNlTWFwID0gYFxcbi8vIyBzb3VyY2VVUkw9JHtjb25maWd1cmF0aW9uUHJvY2Vzc29yLmFwaU5hbWV9LmpzYDtcbiAgICAgIGZ1bmN0aW9uVG9FeGVjdXRlID0gbmV3IEZ1bmN0aW9uKHNjcmlwdCArIHNvdXJjZU1hcCkoKSBhcyBDb25maWd1cmF0aW9uUHJvY2Vzc29yU2NyaXB0Rm47XG4gICAgICB0aGlzLmV4ZWN1dGVkRnVuY3Rpb25zW2NvbmZpZ3VyYXRpb25Qcm9jZXNzb3IuYXBpTmFtZV0gPSBmdW5jdGlvblRvRXhlY3V0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb25Ub0V4ZWN1dGUoe1xuICAgICAgcmVxdWVzdCxcbiAgICAgIGlucHV0RGF0YSxcbiAgICAgIGZsb3dTdG9yZTogdGhpcy5mbG93U3RhdGVTZXJ2aWNlLmdldEZsb3dTdG9yZSgpLFxuICAgICAgY29uZmlndXJhdGlvblN0b3JlOiB0aGlzLmNvbmZpZ3VyYXRpb25TdG9yZSxcbiAgICB9KTtcbiAgfVxufVxuIl19