@veloceapps/sdk 8.0.0-19 → 8.0.0-191

Sign up to get free protection for your applications and to get access to all the features.
Files changed (312) hide show
  1. package/README.md +0 -1
  2. package/cms/README.md +0 -20
  3. package/cms/cms.actions.d.ts +15 -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/services/resources.service.d.ts +2 -0
  10. package/cms/types/index.d.ts +0 -1
  11. package/cms/utils/element-metadata-worker.d.ts +11 -0
  12. package/cms/utils/elements-resolver.d.ts +0 -2
  13. package/cms/utils/index.d.ts +3 -0
  14. package/cms/utils/transpilation-worker.d.ts +13 -0
  15. package/cms/vendor-map.d.ts +29 -19
  16. package/core/README.md +20 -0
  17. package/core/modules/configuration/configuration.module.d.ts +2 -1
  18. package/core/modules/configuration/helpers.d.ts +4 -3
  19. package/core/modules/configuration/index.d.ts +1 -1
  20. package/core/modules/configuration/services/configuration-runtime.service.d.ts +1 -1
  21. package/core/modules/configuration/services/configuration-state.service.d.ts +49 -0
  22. package/core/modules/configuration/services/configuration.service.d.ts +11 -6
  23. package/core/modules/configuration/types/configuration.types.d.ts +4 -0
  24. package/core/modules/flow-configuration/flow-configuration.module.d.ts +2 -1
  25. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +5 -0
  26. package/core/pipes/action-code.pipe.d.ts +8 -0
  27. package/core/pipes/date.pipe.d.ts +2 -1
  28. package/core/pipes/index.d.ts +1 -0
  29. package/core/pipes/pipes.module.d.ts +2 -1
  30. package/core/services/context.service.d.ts +4 -0
  31. package/core/services/flow-info.service.d.ts +29 -0
  32. package/core/services/flow-state-configuration.service.d.ts +19 -0
  33. package/core/services/flow-state.service.d.ts +80 -0
  34. package/core/services/index.d.ts +4 -1
  35. package/core/services/quote-draft.service.d.ts +12 -28
  36. package/core/services/runtime-settings.service.d.ts +4 -1
  37. package/core/types/flow-customization.types.d.ts +22 -0
  38. package/core/types/flow-state.types.d.ts +11 -0
  39. package/core/types/formatting-settings.types.d.ts +2 -0
  40. package/core/types/index.d.ts +3 -0
  41. package/{cms → core}/types/integration.types.d.ts +1 -1
  42. package/core/types/pipe.types.d.ts +1 -0
  43. package/core/utils/line-item.utils.d.ts +1 -3
  44. package/esm2020/cms/cms.actions.mjs +25 -1
  45. package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +3 -3
  46. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +3 -3
  47. package/esm2020/cms/components/preview/preview.component.mjs +10 -10
  48. package/esm2020/cms/components/preview/preview.module.mjs +2 -2
  49. package/esm2020/cms/components/preview/preview.types.mjs +1 -1
  50. package/esm2020/cms/index.mjs +2 -1
  51. package/esm2020/cms/launcher.module.mjs +4 -4
  52. package/esm2020/cms/modules/migrations/migrations.mjs +2 -2
  53. package/esm2020/cms/modules/migrations/services/migrations.service.mjs +6 -2
  54. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +11 -7
  55. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +4 -4
  56. package/esm2020/cms/plugins/configuration.plugin.mjs +8 -4
  57. package/esm2020/cms/services/index.mjs +1 -2
  58. package/esm2020/cms/services/io-provider.service.mjs +10 -9
  59. package/esm2020/cms/services/resources.service.mjs +10 -6
  60. package/esm2020/cms/services/templates.service.mjs +10 -9
  61. package/esm2020/cms/types/index.mjs +1 -2
  62. package/esm2020/cms/utils/element-metadata-worker.mjs +31 -0
  63. package/esm2020/cms/utils/elements-resolver.mjs +14 -28
  64. package/esm2020/cms/utils/index.mjs +4 -1
  65. package/esm2020/cms/utils/path.utils.mjs +3 -3
  66. package/esm2020/cms/utils/script.utils.mjs +19 -15
  67. package/esm2020/cms/utils/transpilation-worker.mjs +52 -0
  68. package/esm2020/cms/vendor-map.mjs +18 -6
  69. package/esm2020/core/core.module.mjs +12 -5
  70. package/esm2020/core/modules/configuration/configuration.module.mjs +7 -23
  71. package/esm2020/core/modules/configuration/helpers.mjs +28 -3
  72. package/esm2020/core/modules/configuration/index.mjs +2 -2
  73. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +8 -11
  74. package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +311 -0
  75. package/esm2020/core/modules/configuration/services/configuration.service.mjs +77 -52
  76. package/esm2020/core/modules/configuration/services/runtime-context.service.mjs +6 -6
  77. package/esm2020/core/modules/configuration/types/configuration.types.mjs +1 -1
  78. package/esm2020/core/modules/flow-configuration/flow-configuration.module.mjs +6 -6
  79. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +12 -9
  80. package/esm2020/core/pipes/action-code.pipe.mjs +20 -0
  81. package/esm2020/core/pipes/date.pipe.mjs +10 -4
  82. package/esm2020/core/pipes/index.mjs +2 -1
  83. package/esm2020/core/pipes/pipes.module.mjs +5 -4
  84. package/esm2020/core/services/context.service.mjs +32 -5
  85. package/esm2020/core/services/flow-info.service.mjs +99 -0
  86. package/esm2020/core/services/flow-state-configuration.service.mjs +53 -0
  87. package/esm2020/core/services/flow-state.service.mjs +512 -0
  88. package/esm2020/core/services/index.mjs +5 -2
  89. package/esm2020/core/services/integration.state.mjs +36 -0
  90. package/esm2020/core/services/product-images.service.mjs +4 -5
  91. package/esm2020/core/services/quote-draft.service.mjs +41 -90
  92. package/esm2020/core/services/runtime-settings.service.mjs +19 -5
  93. package/esm2020/core/types/flow-customization.types.mjs +3 -0
  94. package/esm2020/core/types/flow-state.types.mjs +2 -0
  95. package/esm2020/core/types/formatting-settings.types.mjs +1 -1
  96. package/esm2020/core/types/index.mjs +4 -1
  97. package/esm2020/core/types/integration.types.mjs +2 -0
  98. package/esm2020/core/types/pipe.types.mjs +2 -0
  99. package/esm2020/core/utils/line-item.utils.mjs +33 -32
  100. package/esm2020/src/components/doc-gen/doc-gen.component.mjs +49 -49
  101. package/esm2020/src/components/flow-header/flow-header.component.mjs +108 -0
  102. package/esm2020/src/components/flow-header/flow-header.module.mjs +19 -0
  103. package/esm2020/src/components/flow-header/index.mjs +2 -0
  104. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +37 -43
  105. package/esm2020/src/configure-primeng.mjs +33 -0
  106. package/esm2020/src/flow-routing.module.mjs +62 -71
  107. package/esm2020/src/flow.component.mjs +23 -32
  108. package/esm2020/src/flow.module.mjs +7 -5
  109. package/esm2020/src/guards/context.guard.mjs +6 -11
  110. package/esm2020/src/guards/flow.guard.mjs +37 -0
  111. package/esm2020/src/guards/product-unload.guard.mjs +4 -1
  112. package/esm2020/src/guards/root.guard.mjs +14 -10
  113. package/esm2020/src/pages/assets/assets.component.mjs +33 -37
  114. package/esm2020/src/pages/catalog/catalog.component.mjs +33 -37
  115. package/esm2020/src/pages/debug/debug.component.mjs +10 -14
  116. package/esm2020/src/pages/product/product.component.mjs +35 -22
  117. package/esm2020/src/pages/record-not-found/record-not-found.component.mjs +6 -3
  118. package/esm2020/src/pages/remote/remote.component.mjs +19 -19
  119. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +34 -38
  120. package/esm2020/src/resolvers/flow.resolver.mjs +37 -49
  121. package/esm2020/src/resolvers/quote.resolver.mjs +55 -63
  122. package/esm2020/src/services/doc-gen.service.mjs +4 -3
  123. package/esm2020/src/services/flow-dialog.service.mjs +21 -6
  124. package/esm2020/src/services/flow-router.service.mjs +57 -16
  125. package/esm2020/src/services/flow.service.mjs +82 -28
  126. package/esm2020/src/services/guided-selling.service.mjs +5 -4
  127. package/esm2020/src/services/index.mjs +3 -1
  128. package/esm2020/src/types/index.mjs +1 -2
  129. package/esm2020/src/utils/flow.utils.mjs +6 -2
  130. package/fesm2015/veloceapps-sdk-cms.mjs +296 -194
  131. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  132. package/fesm2015/veloceapps-sdk-core.mjs +1782 -984
  133. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  134. package/fesm2015/veloceapps-sdk.mjs +763 -1467
  135. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  136. package/fesm2020/veloceapps-sdk-cms.mjs +300 -208
  137. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  138. package/fesm2020/veloceapps-sdk-core.mjs +1570 -810
  139. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  140. package/fesm2020/veloceapps-sdk.mjs +825 -1526
  141. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  142. package/package.json +5 -12
  143. package/src/components/doc-gen/doc-gen.component.d.ts +8 -9
  144. package/src/components/flow-header/flow-header.component.d.ts +25 -0
  145. package/src/components/flow-header/flow-header.module.d.ts +9 -0
  146. package/src/components/flow-header/index.d.ts +1 -0
  147. package/src/components/guided-selling/guided-selling.component.d.ts +6 -8
  148. package/src/configure-primeng.d.ts +1 -0
  149. package/src/flow-routing.module.d.ts +6 -7
  150. package/src/flow.component.d.ts +7 -11
  151. package/src/flow.module.d.ts +2 -2
  152. package/src/guards/context.guard.d.ts +4 -5
  153. package/src/guards/flow.guard.d.ts +2 -0
  154. package/src/guards/product-unload.guard.d.ts +2 -2
  155. package/src/guards/root.guard.d.ts +0 -1
  156. package/src/pages/assets/assets.component.d.ts +5 -7
  157. package/src/pages/catalog/catalog.component.d.ts +5 -7
  158. package/src/pages/debug/debug.component.d.ts +5 -8
  159. package/src/pages/product/product.component.d.ts +8 -7
  160. package/src/pages/record-not-found/record-not-found.component.d.ts +2 -0
  161. package/src/pages/remote/remote.component.d.ts +2 -3
  162. package/src/pages/shopping-cart/shopping-cart.component.d.ts +5 -7
  163. package/src/resolvers/flow.resolver.d.ts +6 -7
  164. package/src/resolvers/quote.resolver.d.ts +7 -12
  165. package/src/services/doc-gen.service.d.ts +1 -1
  166. package/src/services/flow-dialog.service.d.ts +5 -2
  167. package/src/services/flow-router.service.d.ts +7 -3
  168. package/src/services/flow.service.d.ts +11 -4
  169. package/src/services/guided-selling.service.d.ts +1 -1
  170. package/src/services/index.d.ts +2 -0
  171. package/src/types/index.d.ts +0 -1
  172. package/core/modules/configuration/services/configuration.state.d.ts +0 -30
  173. package/core/services/metric-calculation/metric-calculation.service.d.ts +0 -25
  174. package/core/services/metric-calculation/metric-calculation.types.d.ts +0 -1
  175. package/core/services/metric-calculation/metric-calculation.utils.d.ts +0 -5
  176. package/esm2020/cms/services/integration.state.mjs +0 -37
  177. package/esm2020/cms/types/integration.types.mjs +0 -2
  178. package/esm2020/core/modules/configuration/services/configuration.state.mjs +0 -142
  179. package/esm2020/core/services/metric-calculation/metric-calculation.service.mjs +0 -85
  180. package/esm2020/core/services/metric-calculation/metric-calculation.types.mjs +0 -2
  181. package/esm2020/core/services/metric-calculation/metric-calculation.utils.mjs +0 -42
  182. package/esm2020/runtime/components/component-preview/component-preview.component.mjs +0 -125
  183. package/esm2020/runtime/components/index.mjs +0 -5
  184. package/esm2020/runtime/components/section-renderer/section-renderer.component.mjs +0 -67
  185. package/esm2020/runtime/components/ui-runtime/runtime.component.mjs +0 -440
  186. package/esm2020/runtime/components/ui-runtime-preview/runtime-preview.component.mjs +0 -108
  187. package/esm2020/runtime/execution/components/children-placeholder/children-placeholder.component.mjs +0 -60
  188. package/esm2020/runtime/execution/components/context-provider/context-provider.component.mjs +0 -39
  189. package/esm2020/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.mjs +0 -67
  190. package/esm2020/runtime/execution/components/federated/federated.component.mjs +0 -74
  191. package/esm2020/runtime/execution/components/velo-attribute/velo-attribute.component.mjs +0 -60
  192. package/esm2020/runtime/execution/components/velo-multiselect/velo-multiselect.component.mjs +0 -130
  193. package/esm2020/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.mjs +0 -72
  194. package/esm2020/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.mjs +0 -97
  195. package/esm2020/runtime/execution/components/velo-port-radio/velo-port-radio.component.mjs +0 -142
  196. package/esm2020/runtime/execution/components/velo-type/velo-type.component.mjs +0 -119
  197. package/esm2020/runtime/execution/directives/section-script.directive.mjs +0 -247
  198. package/esm2020/runtime/execution/directives/sf-query.directive.mjs +0 -35
  199. package/esm2020/runtime/execution/directives/velo-attribute.directive.mjs +0 -88
  200. package/esm2020/runtime/execution/directives/velo-port.directive.mjs +0 -376
  201. package/esm2020/runtime/execution/directives/vl-approval.directive.mjs +0 -23
  202. package/esm2020/runtime/execution/directives/vl-document-attachments.directive.mjs +0 -36
  203. package/esm2020/runtime/execution/directives/vl-document-templates.directive.mjs +0 -60
  204. package/esm2020/runtime/execution/directives/vl-quote.directive.mjs +0 -42
  205. package/esm2020/runtime/execution/directives/vl-ramp.directive.mjs +0 -55
  206. package/esm2020/runtime/execution/runtime-execution.module.mjs +0 -133
  207. package/esm2020/runtime/execution/utils/federated.util.mjs +0 -32
  208. package/esm2020/runtime/index.mjs +0 -5
  209. package/esm2020/runtime/runtime.module.mjs +0 -74
  210. package/esm2020/runtime/services/cart.service.mjs +0 -29
  211. package/esm2020/runtime/services/collapsible-state.service.mjs +0 -34
  212. package/esm2020/runtime/services/configuration.service.mjs +0 -119
  213. package/esm2020/runtime/services/current-state.service.mjs +0 -17
  214. package/esm2020/runtime/services/form-scope.service.mjs +0 -30
  215. package/esm2020/runtime/services/index.mjs +0 -4
  216. package/esm2020/runtime/services/product-model-cache.service.mjs +0 -31
  217. package/esm2020/runtime/services/runtime-context.service.mjs +0 -60
  218. package/esm2020/runtime/services/runtime-form.service.mjs +0 -219
  219. package/esm2020/runtime/services/runtime.service.mjs +0 -115
  220. package/esm2020/runtime/services/section-helper.service.mjs +0 -27
  221. package/esm2020/runtime/services/section-scope.service.mjs +0 -36
  222. package/esm2020/runtime/services/section-store.service.mjs +0 -22
  223. package/esm2020/runtime/services/section.service.mjs +0 -117
  224. package/esm2020/runtime/types/bound-data.types.mjs +0 -7
  225. package/esm2020/runtime/types/index.mjs +0 -3
  226. package/esm2020/runtime/types/quote-states.types.mjs +0 -2
  227. package/esm2020/runtime/types/runtime.types.mjs +0 -2
  228. package/esm2020/runtime/types/script-registry.types.mjs +0 -51
  229. package/esm2020/runtime/utils/line-item.util.mjs +0 -270
  230. package/esm2020/runtime/utils/section.utils.mjs +0 -26
  231. package/esm2020/runtime/utils/sections-binder.helper.mjs +0 -105
  232. package/esm2020/runtime/veloceapps-sdk-runtime.mjs +0 -5
  233. package/esm2020/src/components/header/cart-overlay/cart-preview.component.mjs +0 -119
  234. package/esm2020/src/components/header/cart-overlay/cart-preview.module.mjs +0 -47
  235. package/esm2020/src/components/header/header.component.mjs +0 -355
  236. package/esm2020/src/components/header/header.module.mjs +0 -52
  237. package/esm2020/src/components/header/header.types.mjs +0 -2
  238. package/esm2020/src/components/header/metrics/index.mjs +0 -2
  239. package/esm2020/src/components/header/metrics/metrics.component.mjs +0 -255
  240. package/esm2020/src/components/header/metrics/metrics.definitions.mjs +0 -2
  241. package/esm2020/src/components/header/metrics/metrics.module.mjs +0 -69
  242. package/esm2020/src/pages/legacy-product/legacy-product.component.mjs +0 -137
  243. package/esm2020/src/pages/legacy-product/legacy-product.module.mjs +0 -19
  244. package/esm2020/src/types/flow-customization.types.mjs +0 -3
  245. package/fesm2015/veloceapps-sdk-runtime.mjs +0 -3770
  246. package/fesm2015/veloceapps-sdk-runtime.mjs.map +0 -1
  247. package/fesm2020/veloceapps-sdk-runtime.mjs +0 -3767
  248. package/fesm2020/veloceapps-sdk-runtime.mjs.map +0 -1
  249. package/runtime/README.md +0 -5
  250. package/runtime/components/component-preview/component-preview.component.d.ts +0 -27
  251. package/runtime/components/index.d.ts +0 -4
  252. package/runtime/components/section-renderer/section-renderer.component.d.ts +0 -25
  253. package/runtime/components/ui-runtime/runtime.component.d.ts +0 -53
  254. package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +0 -27
  255. package/runtime/execution/components/children-placeholder/children-placeholder.component.d.ts +0 -30
  256. package/runtime/execution/components/context-provider/context-provider.component.d.ts +0 -14
  257. package/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.d.ts +0 -25
  258. package/runtime/execution/components/federated/federated.component.d.ts +0 -36
  259. package/runtime/execution/components/velo-attribute/velo-attribute.component.d.ts +0 -19
  260. package/runtime/execution/components/velo-multiselect/velo-multiselect.component.d.ts +0 -35
  261. package/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.d.ts +0 -22
  262. package/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.d.ts +0 -22
  263. package/runtime/execution/components/velo-port-radio/velo-port-radio.component.d.ts +0 -28
  264. package/runtime/execution/components/velo-type/velo-type.component.d.ts +0 -31
  265. package/runtime/execution/directives/section-script.directive.d.ts +0 -59
  266. package/runtime/execution/directives/sf-query.directive.d.ts +0 -15
  267. package/runtime/execution/directives/velo-attribute.directive.d.ts +0 -26
  268. package/runtime/execution/directives/velo-port.directive.d.ts +0 -74
  269. package/runtime/execution/directives/vl-approval.directive.d.ts +0 -10
  270. package/runtime/execution/directives/vl-document-attachments.directive.d.ts +0 -15
  271. package/runtime/execution/directives/vl-document-templates.directive.d.ts +0 -33
  272. package/runtime/execution/directives/vl-quote.directive.d.ts +0 -14
  273. package/runtime/execution/directives/vl-ramp.directive.d.ts +0 -15
  274. package/runtime/execution/runtime-execution.module.d.ts +0 -25
  275. package/runtime/execution/utils/federated.util.d.ts +0 -6
  276. package/runtime/index.d.ts +0 -4
  277. package/runtime/runtime.module.d.ts +0 -16
  278. package/runtime/services/cart.service.d.ts +0 -15
  279. package/runtime/services/collapsible-state.service.d.ts +0 -15
  280. package/runtime/services/configuration.service.d.ts +0 -20
  281. package/runtime/services/current-state.service.d.ts +0 -8
  282. package/runtime/services/form-scope.service.d.ts +0 -20
  283. package/runtime/services/index.d.ts +0 -3
  284. package/runtime/services/product-model-cache.service.d.ts +0 -14
  285. package/runtime/services/runtime-context.service.d.ts +0 -16
  286. package/runtime/services/runtime-form.service.d.ts +0 -24
  287. package/runtime/services/runtime.service.d.ts +0 -44
  288. package/runtime/services/section-helper.service.d.ts +0 -8
  289. package/runtime/services/section-scope.service.d.ts +0 -14
  290. package/runtime/services/section-store.service.d.ts +0 -11
  291. package/runtime/services/section.service.d.ts +0 -30
  292. package/runtime/types/bound-data.types.d.ts +0 -13
  293. package/runtime/types/index.d.ts +0 -2
  294. package/runtime/types/quote-states.types.d.ts +0 -6
  295. package/runtime/types/runtime.types.d.ts +0 -19
  296. package/runtime/types/script-registry.types.d.ts +0 -13
  297. package/runtime/utils/line-item.util.d.ts +0 -34
  298. package/runtime/utils/section.utils.d.ts +0 -2
  299. package/runtime/utils/sections-binder.helper.d.ts +0 -16
  300. package/src/components/header/cart-overlay/cart-preview.component.d.ts +0 -36
  301. package/src/components/header/cart-overlay/cart-preview.module.d.ts +0 -14
  302. package/src/components/header/header.component.d.ts +0 -70
  303. package/src/components/header/header.module.d.ts +0 -16
  304. package/src/components/header/header.types.d.ts +0 -20
  305. package/src/components/header/metrics/index.d.ts +0 -1
  306. package/src/components/header/metrics/metrics.component.d.ts +0 -67
  307. package/src/components/header/metrics/metrics.definitions.d.ts +0 -1
  308. package/src/components/header/metrics/metrics.module.d.ts +0 -18
  309. package/src/pages/legacy-product/legacy-product.component.d.ts +0 -37
  310. package/src/pages/legacy-product/legacy-product.module.d.ts +0 -9
  311. package/src/types/flow-customization.types.d.ts +0 -12
  312. /package/{cms → core}/services/integration.state.d.ts +0 -0
@@ -0,0 +1,19 @@
1
+ import { FlowStateApiService } from '@veloceapps/api';
2
+ import { Observable } from 'rxjs';
3
+ import { NewConfigurationProps } from '../modules/configuration';
4
+ import { FlowConfigurationService } from '../modules/flow-configuration';
5
+ import { FlowInfoService } from './flow-info.service';
6
+ import { FlowStateService } from './flow-state.service';
7
+ import * as i0 from "@angular/core";
8
+ export declare class FlowStateConfigurationService {
9
+ private flowInfoService;
10
+ private flowConfigurationService;
11
+ private flowStateApiService;
12
+ private flowStateService;
13
+ private configurationStateId$;
14
+ constructor(flowInfoService: FlowInfoService, flowConfigurationService: FlowConfigurationService, flowStateApiService: FlowStateApiService, flowStateService: FlowStateService);
15
+ get configurationStateId(): string | null;
16
+ addToCart$(props: NewConfigurationProps): Observable<void>;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<FlowStateConfigurationService, never>;
18
+ static ɵprov: i0.ɵɵInjectableDeclaration<FlowStateConfigurationService>;
19
+ }
@@ -0,0 +1,80 @@
1
+ import { ConfigurationProcessorsApiService, FlowStateApiService, QuoteApiService } from '@veloceapps/api';
2
+ import { ToastService } from '@veloceapps/components';
3
+ import { Charge, CompiledPricePlan, FlowStateExecutionRequest, FlowStateExecutionRequestDTO, FlowStateExecutionResult, FlowStateSelectorResponse, MetricRule, UITemplateType } from '@veloceapps/core';
4
+ import { Dictionary } from 'lodash';
5
+ import { Observable } from 'rxjs';
6
+ import { FlowConfigurationService } from '../modules';
7
+ import { FlowCustomization } from '../types/flow-customization.types';
8
+ import { FlowStateSubscriptionOptions } from '../types/flow-state.types';
9
+ import { ContextService } from './context.service';
10
+ import { FlowInfoService } from './flow-info.service';
11
+ import { QuoteDraftService } from './quote-draft.service';
12
+ import * as i0 from "@angular/core";
13
+ export declare class FlowStateService {
14
+ private contextService;
15
+ private quoteDraftService;
16
+ private flowInfoService;
17
+ private flowConfiguration;
18
+ private processorsApiService;
19
+ private flowStateApiService;
20
+ private quoteApiService;
21
+ private toastService;
22
+ private customizationService?;
23
+ charges$: Observable<Dictionary<Charge>>;
24
+ pricePlans$: Observable<Dictionary<CompiledPricePlan>>;
25
+ activeMetrics$: Observable<MetricRule[]>;
26
+ isPriceListLocked$: Observable<boolean>;
27
+ private readonly NOT_INITIALIZED;
28
+ private readonly EXECUTION_BUFFER_TIME;
29
+ private executedFunctions;
30
+ private stateId$;
31
+ private _hasStatefulUnsavedChanges;
32
+ private processors;
33
+ private subscriptions;
34
+ private flowStore;
35
+ private statefulExecutionInProgress$;
36
+ private statefulRequestStream$;
37
+ private statefulExecutionRequest$;
38
+ private cleanup$;
39
+ constructor(contextService: ContextService, quoteDraftService: QuoteDraftService, flowInfoService: FlowInfoService, flowConfiguration: FlowConfigurationService, processorsApiService: ConfigurationProcessorsApiService, flowStateApiService: FlowStateApiService, quoteApiService: QuoteApiService, toastService: ToastService, customizationService?: FlowCustomization | undefined);
40
+ init$(): Observable<void>;
41
+ cleanup(): void;
42
+ get hasUnsavedChanges(): boolean;
43
+ get stateId(): string | null;
44
+ get isExecutionInProgress$(): Observable<boolean>;
45
+ isInitialized$(): Observable<boolean>;
46
+ isInitialized(): boolean;
47
+ execute$(scope: UITemplateType, exec: FlowStateExecutionRequest): Observable<FlowStateExecutionResult['selectors']>;
48
+ dispatch$(scope: UITemplateType, action: string, inputData?: unknown): Observable<void>;
49
+ select$<Response = unknown>(scope: UITemplateType, selectorName: string, inputData?: unknown): Observable<FlowStateSelectorResponse<Response>>;
50
+ subscribe$<Response = unknown>(scope: UITemplateType, selectorName: string, inputData?: unknown, options?: FlowStateSubscriptionOptions): Observable<FlowStateSelectorResponse<Response>>;
51
+ save$(): Observable<{
52
+ quoteId: string;
53
+ }>;
54
+ submit$(): Observable<{
55
+ quoteId: string;
56
+ }>;
57
+ getFlowStore(): Record<string, unknown>;
58
+ private getOwnerIdByScope;
59
+ private getScopeByOwnerId;
60
+ private execToRequest;
61
+ executeRequest$(request: FlowStateExecutionRequestDTO, forceSubscriptions?: boolean): Observable<FlowStateExecutionResult>;
62
+ private handleSelectorsResponse;
63
+ private initStateful$;
64
+ private initBufferedRequest$;
65
+ private executeStateful$;
66
+ private initStateless$;
67
+ private calculate$;
68
+ private executeStateless$;
69
+ private executeStatelessActions;
70
+ private executeStatelessSelectors;
71
+ private getFlowSafe;
72
+ private initProcessors$;
73
+ private executeActionScript;
74
+ private executeSelectorScript;
75
+ private executeProcessorScript;
76
+ private generateRequestId;
77
+ private getDefaultExecutionRequestDTO;
78
+ static ɵfac: i0.ɵɵFactoryDeclaration<FlowStateService, [null, null, null, null, null, null, null, null, { optional: true; }]>;
79
+ static ɵprov: i0.ɵɵInjectableDeclaration<FlowStateService>;
80
+ }
@@ -1,5 +1,8 @@
1
1
  export * from './context.service';
2
- export * from './metric-calculation/metric-calculation.service';
2
+ export * from './flow-info.service';
3
+ export * from './flow-state.service';
4
+ export * from './flow-state-configuration.service';
5
+ export * from './integration.state';
3
6
  export * from './product-images.service';
4
7
  export * from './quote-draft.service';
5
8
  export * from './runtime-settings.service';
@@ -1,63 +1,47 @@
1
- import { PriceApiService, QuoteApiService } from '@veloceapps/api';
2
- import { LineItem, PriceList, PriceSummary, QuoteDraft } from '@veloceapps/core';
1
+ import { AccountApiService, QuoteApiService } from '@veloceapps/api';
2
+ import { AccountAssetsState, LineItem, PriceSummary, QuoteDraft } from '@veloceapps/core';
3
3
  import { Dictionary } from 'lodash';
4
4
  import { Observable } from 'rxjs';
5
5
  import { ContextService } from './context.service';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class QuoteDraftService {
8
8
  private context;
9
+ private accountApiService;
9
10
  private quoteApiService;
10
- private priceApiService;
11
11
  private quoteSubj$;
12
+ private assetsSubj$;
12
13
  private resetSubj$;
13
14
  private isInitializedSubj$;
14
15
  private initialCurrentState;
15
16
  private _hasUnsavedChanges;
17
+ get isInitialized$(): Observable<boolean>;
16
18
  get isInitialized(): boolean;
17
19
  set isInitialized(value: boolean);
18
20
  get hasUnsavedChanges(): boolean;
19
21
  set hasUnsavedChanges(value: boolean);
20
22
  get hasProducts$(): Observable<boolean>;
21
23
  get hasProducts(): boolean;
22
- allPriceLists: PriceList[];
23
- assetPriceLists: PriceList[];
24
+ get hasAssets$(): Observable<boolean>;
25
+ get hasAssets(): boolean;
26
+ get assetsState(): AccountAssetsState | null;
24
27
  reset$: Observable<boolean>;
25
- activePriceList$: Observable<PriceList | null>;
26
- constructor(context: ContextService, quoteApiService: QuoteApiService, priceApiService: PriceApiService);
28
+ constructor(context: ContextService, accountApiService: AccountApiService, quoteApiService: QuoteApiService);
27
29
  reset(): void;
28
- init(quoteId: string, params: Dictionary<string>): Observable<void>;
30
+ init(headerId: string, params: Dictionary<string>): Observable<void>;
31
+ finalizeInit(): void;
29
32
  setCurrentLineItemState(lineItems: LineItem[]): void;
30
33
  updateQuoteDraft(update: Partial<QuoteDraft>): void;
31
34
  updateByPriceSummary(priceSummary: PriceSummary): void;
35
+ setAssetsState(assetsState: AccountAssetsState): void;
32
36
  get quoteDraft$(): Observable<QuoteDraft>;
33
37
  get quoteDraft(): QuoteDraft | null;
34
- get quoteDraftForActivePriceList(): QuoteDraft | null;
35
38
  get currentState$(): Observable<LineItem[]>;
36
39
  get currentState(): LineItem[];
37
- /**
38
- * Stream of activeCurrentState
39
- */
40
- get activeCurrentState$(): Observable<LineItem[]>;
41
- /**
42
- * activeCurrentState is currentState passed through additional filters
43
- */
44
- get activeCurrentState(): LineItem[];
45
- /**
46
- * Stream of activeInitialState
47
- */
48
- get activeInitialState$(): Observable<LineItem[]>;
49
- /**
50
- * activeInitialState is initialState passed through additional filters
51
- */
52
- get activeInitialState(): LineItem[];
53
40
  get isStandalone(): boolean;
54
41
  get isStandalone$(): Observable<boolean>;
55
42
  getInitialCurrentState(): LineItem[];
56
43
  isEditMode$(): Observable<boolean>;
57
44
  isEditMode(): boolean;
58
- updateActivePriceList(priceListId: string): void;
59
- private populateActivePriceLists$;
60
- private filterByActivePriceList;
61
45
  private markAsUpdated;
62
46
  static ɵfac: i0.ɵɵFactoryDeclaration<QuoteDraftService, never>;
63
47
  static ɵprov: i0.ɵɵInjectableDeclaration<QuoteDraftService>;
@@ -1,5 +1,5 @@
1
1
  import { ConfigurationSettingsApiService } from '@veloceapps/api';
2
- import { RuntimeConfigurationSettings, RuntimeCurrencySettings } from '@veloceapps/core';
2
+ import { RuntimeConfigurationSettings, RuntimeCurrencySettings, ShoppingCartSetting } from '@veloceapps/core';
3
3
  import { Observable } from 'rxjs';
4
4
  import { FormattingSettings } from '../types';
5
5
  import * as i0 from "@angular/core";
@@ -8,14 +8,17 @@ export declare class RuntimeSettingsService {
8
8
  private configurationSettings$;
9
9
  private currencySettings$;
10
10
  private formattingSettings;
11
+ private shoppingCartSettings$;
11
12
  constructor(configurationSettingsApiService: ConfigurationSettingsApiService);
12
13
  create(): Observable<void>;
13
14
  initCurrency(iso?: string): void;
14
15
  getFormattingSettings(): FormattingSettings;
15
16
  getConfigurationSettings(): RuntimeConfigurationSettings;
17
+ getShoppingCartSettings(): ShoppingCartSetting[];
16
18
  getCurrencySettings(): RuntimeCurrencySettings;
17
19
  private parseConfigurationSettings;
18
20
  private getCurrencySymbol;
21
+ addShoppingCartSettings(settings: ShoppingCartSetting[]): void;
19
22
  static ɵfac: i0.ɵɵFactoryDeclaration<RuntimeSettingsService, never>;
20
23
  static ɵprov: i0.ɵɵInjectableDeclaration<RuntimeSettingsService>;
21
24
  }
@@ -0,0 +1,22 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { ConfigurationProcessor, TemplateComponentWithAttachments, UIDefinitionContainer, UITemplate } from '@veloceapps/core';
3
+ import { Observable } from 'rxjs';
4
+ export declare const FLOW_CUSTOMIZATION: InjectionToken<FlowCustomization>;
5
+ export interface FlowCustomization {
6
+ getUiDefinition?(productId: string): Observable<UIDefinitionContainer | null>;
7
+ /**
8
+ * @deprecated Use `getTemplateComponents` instead
9
+ */
10
+ getShoppingCartComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;
11
+ /**
12
+ * @deprecated Use `getTemplateComponents` instead
13
+ */
14
+ getCatalogComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;
15
+ /**
16
+ * @deprecated Use `getTemplateComponents` instead
17
+ */
18
+ getAssetsComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;
19
+ getTemplates?(): Observable<UITemplate[]>;
20
+ getTemplateComponents?(templateName: string): Observable<TemplateComponentWithAttachments[] | null>;
21
+ getTemplateConfigurationProcessors?(templateName: string): Observable<ConfigurationProcessor[] | null>;
22
+ }
@@ -0,0 +1,11 @@
1
+ import { AccountAssetsState } from '@veloceapps/core';
2
+ export interface FlowStateSubscriptionOptions {
3
+ /**
4
+ * When 'true', don't execute action to retrieve current value
5
+ */
6
+ cold?: boolean;
7
+ }
8
+ export interface FlowStore {
9
+ assets?: AccountAssetsState;
10
+ [key: string]: unknown;
11
+ }
@@ -1,5 +1,6 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { Prettify, VlDateSettings } from '@veloceapps/core';
3
+ import { Dictionary } from 'lodash';
3
4
  export declare const FORMATTING_SETTINGS_TOKEN: InjectionToken<{
4
5
  getFormattingSettings: (...args: unknown[]) => FormattingSettings;
5
6
  }>;
@@ -8,4 +9,5 @@ export type FormattingSettings = Prettify<{
8
9
  thousandsSeparator: string;
9
10
  decimalSeparator: string;
10
11
  decimalsCount: number;
12
+ actionCodeLabels: Dictionary<string>;
11
13
  } & VlDateSettings>;
@@ -1,3 +1,6 @@
1
+ export * from './flow-customization.types';
1
2
  export * from './formatting-settings.types';
3
+ export * from './integration.types';
4
+ export * from './pipe.types';
2
5
  export * from './runtime.types';
3
6
  export * from './ui-definition.types';
@@ -5,6 +5,6 @@ export interface IntegrationAction<T = any> {
5
5
  }
6
6
  export type IntegrationStateModel = {
7
7
  guidedSelling?: Dictionary<any>;
8
- modifiedAssets: Dictionary<boolean>;
9
8
  flowPath: string;
9
+ dialogResult?: boolean;
10
10
  } & Dictionary<any>;
@@ -0,0 +1 @@
1
+ export type DateType = 'date' | 'datetime' | 'time';
@@ -5,7 +5,6 @@ export declare const findLineItemWithComparator: (lineItems: LineItem[], compara
5
5
  export declare const insertLineItem: (lineItem: LineItem, parentId: string, toInsert: LineItem) => LineItem;
6
6
  export declare const removeLineItem: (lineItem: LineItem, idToRemove: string) => LineItem;
7
7
  export declare const replaceLineItem: (lineItem: LineItem, replaceTo: LineItem, skipCardinalityCalculation?: boolean) => LineItem;
8
- export declare const calculateCardinalityVariables: (lineItems: LineItem[]) => Map<string, number>;
9
8
  export declare const recalculateCardinalityVariables: (original: LineItem, updated: LineItem) => LineItem;
10
9
  export declare const mapAttributes: (attributes: Attribute[]) => Dictionary<any>;
11
10
  export declare const getAttributes: (attributes: Attribute[], names?: string[]) => Attribute[];
@@ -17,9 +16,8 @@ export declare const getRecommendedPrices: (portDomain: PortDomain, type: string
17
16
  net: number;
18
17
  list: number;
19
18
  };
20
- export declare const generateModifiedAssetsMap: (lineItems: LineItem[]) => Record<string, boolean>;
21
19
  export declare const getOriginParent: (lineItems: LineItem[], currentLineItem: LineItem) => LineItem | undefined;
22
- export declare const isLineItemModified: <T extends Pick<LineItem, "actionCode" | "status">>(lineItem: T) => boolean;
20
+ export declare const assetPredicateFn: (lineItem: LineItem, assetId?: string) => boolean;
23
21
  export declare const multiplyLineItems: (lineItem: LineItem, qty: number, split: boolean) => LineItem[];
24
22
  export declare const isTechnicalAttribute: (name: string) => boolean;
25
23
  export declare const filterOutTechnicalAttributes: <T extends {
@@ -2,7 +2,9 @@ export var FlowAction;
2
2
  (function (FlowAction) {
3
3
  FlowAction.FLOW_CONFIGURE_PRODUCT = '[FLOW]_CONFIGURE_PRODUCT';
4
4
  FlowAction.FLOW_NAVIGATE_BACK = '[FLOW]_NAVIGATE_BACK';
5
+ FlowAction.FLOW_NAVIGATE_TO = '[FLOW]_NAVIGATE_TO';
5
6
  FlowAction.FLOW_NAVIGATE_TO_CATALOG = '[FLOW]_NAVIGATE_TO_CATALOG';
7
+ FlowAction.FLOW_NAVIGATE_TO_SHOPPING_CART = '[FLOW]_NAVIGATE_TO_SHOPPING_CART';
6
8
  FlowAction.FLOW_APPLY_PRODUCT_CONFIGURATION = '[FLOW]_APPLY_PRODUCT_CONFIGURATION';
7
9
  FlowAction.FLOW_OPEN_DOC_GEN = '[FLOW]_OPEN_DOC_GEN';
8
10
  FlowAction.FLOW_CLOSE_DOC_GEN = '[FLOW]_CLOSE_DOC_GEN';
@@ -12,6 +14,7 @@ export var FlowAction;
12
14
  FlowAction.OPEN_GUIDED_SELLING = '[FLOW]_OPEN_GUIDED_SELLING';
13
15
  FlowAction.SUBMIT_GUIDED_SELLING = '[FLOW]_SUBMIT_GUIDED_SELLING';
14
16
  FlowAction.CLOSE_GUIDED_SELLING = '[FLOW]_CLOSE_GUIDED_SELLING';
17
+ FlowAction.OPEN_DIALOG = '[FLOW]_OPEN_DIALOG';
15
18
  FlowAction.ConfigureProductAction = ({ lineItemId, productId, }) => ({
16
19
  type: FlowAction.FLOW_CONFIGURE_PRODUCT,
17
20
  payload: { lineItemId, productId },
@@ -19,9 +22,16 @@ export var FlowAction;
19
22
  FlowAction.NavigateBackAction = () => ({
20
23
  type: FlowAction.FLOW_NAVIGATE_BACK,
21
24
  });
25
+ FlowAction.NavigateToAction = (path, productId, lineItemId) => ({
26
+ type: FlowAction.FLOW_NAVIGATE_TO,
27
+ payload: { path, productId, lineItemId },
28
+ });
22
29
  FlowAction.NavigateToCatalogAction = () => ({
23
30
  type: FlowAction.FLOW_NAVIGATE_TO_CATALOG,
24
31
  });
32
+ FlowAction.NavigateToShoppingCartAction = () => ({
33
+ type: FlowAction.FLOW_NAVIGATE_TO_SHOPPING_CART,
34
+ });
25
35
  FlowAction.ApplyProductConfigurationAction = () => ({
26
36
  type: FlowAction.FLOW_APPLY_PRODUCT_CONFIGURATION,
27
37
  });
@@ -53,6 +63,10 @@ export var FlowAction;
53
63
  type: FlowAction.SUBMIT_GUIDED_SELLING,
54
64
  payload,
55
65
  });
66
+ FlowAction.OpenDialog = (dialog) => ({
67
+ type: FlowAction.OPEN_DIALOG,
68
+ payload: { dialog },
69
+ });
56
70
  })(FlowAction || (FlowAction = {}));
57
71
  /**
58
72
  * @deprecated
@@ -103,6 +117,7 @@ export var CmsAction;
103
117
  (function (CmsAction) {
104
118
  CmsAction.GO_TO_PAGE = '[CMS]_GO_TO_PAGE';
105
119
  CmsAction.UPDATE_CUSTOMIZATION = '[CMS]_UPDATE_CUSTOMIZATION';
120
+ CmsAction.EMIT_CUSTOMIZATION_CHANGES = '[CMS]_EMIT_CUSTOMIZATION_CHANGES';
106
121
  CmsAction.SHOW_OVERLAY = '[CMS]_SHOW_OVERLAY';
107
122
  CmsAction.HIDE_OVERLAY = '[CMS]_HIDE_OVERLAY';
108
123
  CmsAction.HIDE_ALL_OVERLAYS = '[CMS]_HIDE_ALL_OVERLAYS';
@@ -124,6 +139,15 @@ export var CmsAction;
124
139
  type: CmsAction.UPDATE_CUSTOMIZATION,
125
140
  payload: { value },
126
141
  });
142
+ /**
143
+ * Emit customization page changes
144
+ *
145
+ * @param changes - object with customization page changes
146
+ */
147
+ CmsAction.EmitCustomizationChanges = (changes) => ({
148
+ type: CmsAction.EMIT_CUSTOMIZATION_CHANGES,
149
+ payload: { changes },
150
+ });
127
151
  /**
128
152
  * Show an Overlay on the selected page
129
153
  *
@@ -153,4 +177,4 @@ export var CmsAction;
153
177
  type: CmsAction.HIDE_ALL_OVERLAYS,
154
178
  });
155
179
  })(CmsAction || (CmsAction = {}));
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY21zLmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxLQUFXLFVBQVUsQ0F3RTFCO0FBeEVELFdBQWlCLFVBQVU7SUFDWixpQ0FBc0IsR0FBRywwQkFBMEIsQ0FBQztJQUNwRCw2QkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztJQUM1QyxtQ0FBd0IsR0FBRyw0QkFBNEIsQ0FBQztJQUN4RCwyQ0FBZ0MsR0FBRyxvQ0FBb0MsQ0FBQztJQUN4RSw0QkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztJQUMxQyw2QkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztJQUM1Qyw2QkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztJQUM1Qyx1QkFBWSxHQUFHLHFCQUFxQixDQUFDO0lBQ3JDLHdCQUFhLEdBQUcsc0JBQXNCLENBQUM7SUFDdkMsOEJBQW1CLEdBQUcsNEJBQTRCLENBQUM7SUFDbkQsZ0NBQXFCLEdBQUcsOEJBQThCLENBQUM7SUFDdkQsK0JBQW9CLEdBQUcsNkJBQTZCLENBQUM7SUFFckQsaUNBQXNCLEdBQUcsQ0FBQyxFQUNyQyxVQUFVLEVBQ1YsU0FBUyxHQUlWLEVBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLElBQUksRUFBRSxVQUFVLENBQUMsc0JBQXNCO1FBQ3ZDLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUU7S0FDbkMsQ0FBQyxDQUFDO0lBRVUsNkJBQWtCLEdBQUcsR0FBc0IsRUFBRSxDQUFDLENBQUM7UUFDMUQsSUFBSSxFQUFFLFVBQVUsQ0FBQyxrQkFBa0I7S0FDcEMsQ0FBQyxDQUFDO0lBRVUsa0NBQXVCLEdBQUcsR0FBc0IsRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxFQUFFLFVBQVUsQ0FBQyx3QkFBd0I7S0FDMUMsQ0FBQyxDQUFDO0lBRVUsMENBQStCLEdBQUcsR0FBc0IsRUFBRSxDQUFD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RUg7Ozs7T0FJRztJQUNVLDZCQUFtQixHQUFHLENBQUMsS0FBVSxFQUFxQixFQUFFLENBQUMsQ0FBQztRQUNyRSxJQUFJLEVBQUUsVUFBQSxvQkFBb0I7UUFDMUIsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFO0tBQ25CLENBQUMsQ0FBQztJQUVIOzs7OztPQUtHO0lBQ1UscUJBQVcsR0FBRyxDQUFDLElBQVksRUFBcUIsRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxFQUFFLFVBQUEsWUFBWTtRQUNsQixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUU7S0FDbEIsQ0FBQyxDQUFDO0lBRUg7Ozs7O09BS0c7SUFDVSxxQkFBVyxHQUFHLENBQUMsSUFBWSxFQUFxQixFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLEVBQUUsVUFBQSxZQUFZO1FBQ2xCLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRTtLQUNsQixDQUFDLENBQUM7SUFFSDs7OztPQUlHO0lBQ1UseUJBQWUsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztRQUN2RCxJQUFJLEVBQUUsVUFBQSxpQkFBaUI7S0FDeEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxFQXpEZ0IsU0FBUyxLQUFULFNBQVMsUUF5RHpCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5hbWVzcGFjZSAqL1xuaW1wb3J0IHsgSW50ZWdyYXRpb25BY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IG5hbWVzcGFjZSBGbG93QWN0aW9uIHtcbiAgZXhwb3J0IGNvbnN0IEZMT1dfQ09ORklHVVJFX1BST0RVQ1QgPSAnW0ZMT1ddX0NPTkZJR1VSRV9QUk9EVUNUJztcbiAgZXhwb3J0IGNvbnN0IEZMT1dfTkFWSUdBVEVfQkFDSyA9ICdbRkxPV11fTkFWSUdBVEVfQkFDSyc7XG4gIGV4cG9ydCBjb25zdCBGTE9XX05BVklHQVRFX1RPX0NBVEFMT0cgPSAnW0ZMT1ddX05BVklHQVRFX1RPX0NBVEFMT0cnO1xuICBleHBvcnQgY29uc3QgRkxPV19BUFBMWV9QUk9EVUNUX0NPTkZJR1VSQVRJT04gPSAnW0ZMT1ddX0FQUExZX1BST0RVQ1RfQ09ORklHVVJBVElPTic7XG4gIGV4cG9ydCBjb25zdCBGTE9XX09QRU5fRE9DX0dFTiA9ICdbRkxPV11fT1BFTl9ET0NfR0VOJztcbiAgZXhwb3J0IGNvbnN0IEZMT1dfQ0xPU0VfRE9DX0dFTiA9ICdbRkxPV11fQ0xPU0VfRE9DX0dFTic7XG4gIGV4cG9ydCBjb25zdCBGTE9XX1NXSVRDSF9PQkpFQ1QgPSAnW0ZMT1ddX1NXSVRDSF9PQkpFQ1QnO1xuICBleHBvcnQgY29uc3QgUkVNT1RFX0FQUExZID0gJ1tGTE9XXV9SRU1PVEVfQVBQTFknO1xuICBleHBvcnQgY29uc3QgUkVNT1RFX0NBTkNFTCA9ICdbRkxPV11fUkVNT1RFX0NBTkNFTCc7XG4gIGV4cG9ydCBjb25zdCBPUEVOX0dVSURFRF9TRUxMSU5HID0gJ1tGTE9XXV9PUEVOX0dVSURFRF9TRUxMSU5HJztcbiAgZXhwb3J0IGNvbnN0IFNVQk1JVF9HVUlERURfU0VMTElORyA9ICdbRkxPV11fU1VCTUlUX0dVSURFRF9TRUxMSU5HJztcbiAgZXhwb3J0IGNvbnN0IENMT1NFX0dVSURFRF9TRUxMSU5HID0gJ1tGTE9XXV9DTE9TRV9HVUlERURfU0VMTElORyc7XG5cbiAgZXhwb3J0IGNvbnN0IENvbmZpZ3VyZVByb2R1Y3RBY3Rpb24gPSAoe1xuICAgIGxpbmVJdGVtSWQsXG4gICAgcHJvZHVjdElkLFxuICB9OiB7XG4gICAgbGluZUl0ZW1JZD86IHN0cmluZztcbiAgICBwcm9kdWN0SWQ/OiBzdHJpbmc7XG4gIH0pOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEZsb3dBY3Rpb24uRkxPV19DT05GSUdVUkVfUFJPRFVDVCxcbiAgICBwYXlsb2FkOiB7IGxpbmVJdGVtSWQsIHByb2R1Y3RJZCB9LFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgTmF2aWdhdGVCYWNrQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX0JBQ0ssXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBOYXZpZ2F0ZVRvQ2F0YWxvZ0FjdGlvbiA9ICgpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEZsb3dBY3Rpb24uRkxPV19OQVZJR0FURV9UT19DQVRBTE9HLFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgQXBwbHlQcm9kdWN0Q29uZmlndXJhdGlvbkFjdGlvbiA9ICgpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEZsb3dBY3Rpb24uRkxPV19BUFBMWV9QUk9EVUNUX0NPTkZJR1VSQVRJT04sXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBPcGVuRG9jR2VuQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX09QRU5fRE9DX0dFTixcbiAgfSk7XG5cbiAgZXhwb3J0IGNvbnN0IENsb3NlRG9jR2VuQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX0NMT1NFX0RPQ19HRU4sXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBSZW1vdGVBcHBseUFjdGlvbiA9ICgpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEZsb3dBY3Rpb24uUkVNT1RFX0FQUExZLFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgUmVtb3RlQ2FuY2VsQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5SRU1PVEVfQ0FOQ0VMLFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgU3dpdGNoT2JqZWN0QWN0aW9uID0gKHBheWxvYWQ6IHsgaWQ6IHN0cmluZyB9KTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBGbG93QWN0aW9uLkZMT1dfU1dJVENIX09CSkVDVCxcbiAgICBwYXlsb2FkLFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgT3Blbkd1aWRlZFNlbGxpbmcgPSAocGF5bG9hZDogeyBndWlkZWRTZWxsaW5nSWQ6IHN0cmluZyB9KTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBGbG93QWN0aW9uLk9QRU5fR1VJREVEX1NFTExJTkcsXG4gICAgcGF5bG9hZCxcbiAgfSk7XG5cbiAgZXhwb3J0IGNvbnN0IENsb3NlR3VpZGVkU2VsbGluZyA9IChwYXlsb2FkPzogeyBrZWVwU3RhdGU/OiBib29sZWFuIH0pOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEZsb3dBY3Rpb24uQ0xPU0VfR1VJREVEX1NFTExJTkcsXG4gICAgcGF5bG9hZCxcbiAgfSk7XG5cbiAgZXhwb3J0IGNvbnN0IFN1Ym1pdEd1aWRlZFNlbGxpbmcgPSAocGF5bG9hZDogeyByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gfSk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5TVUJNSVRfR1VJREVEX1NFTExJTkcsXG4gICAgcGF5bG9hZCxcbiAgfSk7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBGbG93QWN0aW9uIG5hbWVzcGFjZSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBDb25maWd1cmVQcm9kdWN0QWN0aW9uID0gRmxvd0FjdGlvbi5Db25maWd1cmVQcm9kdWN0QWN0aW9uO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgRmxvd0FjdGlvbiBuYW1lc3BhY2UgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgTmF2aWdhdGVCYWNrQWN0aW9uID0gRmxvd0FjdGlvbi5OYXZpZ2F0ZUJhY2tBY3Rpb247XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBGbG93QWN0aW9uIG5hbWVzcGFjZSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBOYXZpZ2F0ZVRvQ2F0YWxvZ0FjdGlvbiA9IEZsb3dBY3Rpb24uTmF2aWdhdGVUb0NhdGFsb2dBY3Rpb247XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBGbG93QWN0aW9uIG5hbWVzcGFjZSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBBcHBseVByb2R1Y3RDb25maWd1cmF0aW9uQWN0aW9uID0gRmxvd0FjdGlvbi5BcHBseVByb2R1Y3RDb25maWd1cmF0aW9uQWN0aW9uO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgRmxvd0FjdGlvbiBuYW1lc3BhY2UgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgT3BlbkRvY0dlbkFjdGlvbiA9IEZsb3dBY3Rpb24uT3BlbkRvY0dlbkFjdGlvbjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIEZsb3dBY3Rpb24gbmFtZXNwYWNlIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IENsb3NlRG9jR2VuQWN0aW9uID0gRmxvd0FjdGlvbi5DbG9zZURvY0dlbkFjdGlvbjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIEZsb3dBY3Rpb24gbmFtZXNwYWNlIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IFJlbW90ZUFwcGx5QWN0aW9uID0gRmxvd0FjdGlvbi5SZW1vdGVBcHBseUFjdGlvbjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIEZsb3dBY3Rpb24gbmFtZXNwYWNlIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IFJlbW90ZUNhbmNlbEFjdGlvbiA9IEZsb3dBY3Rpb24uUmVtb3RlQ2FuY2VsQWN0aW9uO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgRmxvd0FjdGlvbiBuYW1lc3BhY2UgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgU3dpdGNoT2JqZWN0QWN0aW9uID0gRmxvd0FjdGlvbi5Td2l0Y2hPYmplY3RBY3Rpb247XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ21zQWN0aW9uIHtcbiAgZXhwb3J0IGNvbnN0IEdPX1RPX1BBR0UgPSAnW0NNU11fR09fVE9fUEFHRSc7XG4gIGV4cG9ydCBjb25zdCBVUERBVEVfQ1VTVE9NSVpBVElPTiA9ICdbQ01TXV9VUERBVEVfQ1VTVE9NSVpBVElPTic7XG4gIGV4cG9ydCBjb25zdCBTSE9XX09WRVJMQVkgPSAnW0NNU11fU0hPV19PVkVSTEFZJztcbiAgZXhwb3J0IGNvbnN0IEhJREVfT1ZFUkxBWSA9ICdbQ01TXV9ISURFX09WRVJMQVknO1xuICBleHBvcnQgY29uc3QgSElERV9BTExfT1ZFUkxBWVMgPSAnW0NNU11fSElERV9BTExfT1ZFUkxBWVMnO1xuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSBVSSBkZWZpbml0aW9uIHRvIGEgc3BlY2lmaWMgcGFnZVxuICAgKlxuICAgKiBAcGFyYW0gcGFnZU5hbWUgbmFtZSBvZiB0aGUgcGFnZVxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IEdvVG9QYWdlID0gKHBhZ2VOYW1lOiBzdHJpbmcpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEdPX1RPX1BBR0UsXG4gICAgcGF5bG9hZDogeyBwYWdlTmFtZSB9LFxuICB9KTtcblxuICAvKipcbiAgICogVXBkYXRlIFVJIGRlZmluaXRpb24gY3VzdG9taXphdGlvbiBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0gcGFnZU5hbWUgbmFtZSBvZiB0aGUgcGFnZVxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IFVwZGF0ZUN1c3RvbWl6YXRpb24gPSAodmFsdWU6IGFueSk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogVVBEQVRFX0NVU1RPTUlaQVRJT04sXG4gICAgcGF5bG9hZDogeyB2YWx1ZSB9LFxuICB9KTtcblxuICAvKipcbiAgICogU2hvdyBhbiBPdmVybGF5IG9uIHRoZSBzZWxlY3RlZCBwYWdlXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gbmFtZSBvZiB0aGUgb3ZlcmxheVxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBleHBvcnQgY29uc3QgU2hvd092ZXJsYXkgPSAobmFtZTogc3RyaW5nKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBTSE9XX09WRVJMQVksXG4gICAgcGF5bG9hZDogeyBuYW1lIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBIaWRlIGFuIE92ZXJsYXkgb24gdGhlIHNlbGVjdGVkIHBhZ2VcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBuYW1lIG9mIHRoZSBvdmVybGF5XG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIGV4cG9ydCBjb25zdCBIaWRlT3ZlcmxheSA9IChuYW1lOiBzdHJpbmcpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEhJREVfT1ZFUkxBWSxcbiAgICBwYXlsb2FkOiB7IG5hbWUgfSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEhpZGUgYWxsIE92ZXJsYXlzIG9uIHRoZSBzZWxlY3RlZCBwYWdlXG4gICAqXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIGV4cG9ydCBjb25zdCBIaWRlQWxsT3ZlcmxheXMgPSAoKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBISURFX0FMTF9PVkVSTEFZUyxcbiAgfSk7XG59XG4iXX0=
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY21zLmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxLQUFXLFVBQVUsQ0F5RjFCO0FBekZELFdBQWlCLFVBQVU7SUFDWixpQ0FBc0IsR0FBRywwQkFBMEIsQ0FBQztJQUNwRCw2QkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztJQUM1QywyQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQztJQUN4QyxtQ0FBd0IsR0FBRyw0QkFBNEIsQ0FBQztJQUN4RCx5Q0FBOEIsR0FBRyxrQ0FBa0MsQ0FBQztJQUNwRSwyQ0FBZ0MsR0FBRyxvQ0FBb0MsQ0FBQztJQUN4RSw0QkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztJQUMxQyw2QkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztJQUM1Qyw2QkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztJQUM1Qyx1QkFBWSxHQUFHLHFCQUFxQixDQUFDO0lBQ3JDLHdCQUFhLEdBQUcsc0JBQXNCLENBQUM7SUFDdkMsOEJBQW1CLEdBQUcsNEJBQTRCLENBQUM7SUFDbkQsZ0NBQXFCLEdBQUcsOEJBQThCLENBQUM7SUFDdkQsK0JBQW9CLEdBQUcsNkJBQTZCLENBQUM7SUFDckQsc0JBQVcsR0FBRyxvQkFBb0IsQ0FBQztJQUVuQyxpQ0FBc0IsR0FBRyxDQUFDLEVBQ3JDLFVBQVUsRUFDVixTQUFTLEdBSVYsRUFBcUIsRUFBRSxDQUFDLENBQUM7UUFDeEIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxzQkFBc0I7UUFDdkMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtLQUNuQyxDQUFDLENBQUM7SUFFVSw2QkFBa0IsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLEVBQUUsVUFBVSxDQUFDLGtCQUFrQjtLQUNwQyxDQUFDLENBQUM7SUFFVSwyQkFBZ0IsR0FBRyxDQUFDLElBQVksRUFB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LENBQUM7SUFFSDs7Ozs7T0FLRztJQUNVLHFCQUFXLEdBQUcsQ0FBQyxJQUFZLEVBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELElBQUksRUFBRSxVQUFBLFlBQVk7UUFDbEIsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFO0tBQ2xCLENBQUMsQ0FBQztJQUVIOzs7O09BSUc7SUFDVSx5QkFBZSxHQUFHLEdBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksRUFBRSxVQUFBLGlCQUFpQjtLQUN4QixDQUFDLENBQUM7QUFDTCxDQUFDLEVBcEVnQixTQUFTLEtBQVQsU0FBUyxRQW9FekIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlICovXG5pbXBvcnQgeyBDdXN0b21pemF0aW9uQ2hhbmdlcyB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25BY3Rpb24gfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY29yZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgRmxvd0FjdGlvbiB7XG4gIGV4cG9ydCBjb25zdCBGTE9XX0NPTkZJR1VSRV9QUk9EVUNUID0gJ1tGTE9XXV9DT05GSUdVUkVfUFJPRFVDVCc7XG4gIGV4cG9ydCBjb25zdCBGTE9XX05BVklHQVRFX0JBQ0sgPSAnW0ZMT1ddX05BVklHQVRFX0JBQ0snO1xuICBleHBvcnQgY29uc3QgRkxPV19OQVZJR0FURV9UTyA9ICdbRkxPV11fTkFWSUdBVEVfVE8nO1xuICBleHBvcnQgY29uc3QgRkxPV19OQVZJR0FURV9UT19DQVRBTE9HID0gJ1tGTE9XXV9OQVZJR0FURV9UT19DQVRBTE9HJztcbiAgZXhwb3J0IGNvbnN0IEZMT1dfTkFWSUdBVEVfVE9fU0hPUFBJTkdfQ0FSVCA9ICdbRkxPV11fTkFWSUdBVEVfVE9fU0hPUFBJTkdfQ0FSVCc7XG4gIGV4cG9ydCBjb25zdCBGTE9XX0FQUExZX1BST0RVQ1RfQ09ORklHVVJBVElPTiA9ICdbRkxPV11fQVBQTFlfUFJPRFVDVF9DT05GSUdVUkFUSU9OJztcbiAgZXhwb3J0IGNvbnN0IEZMT1dfT1BFTl9ET0NfR0VOID0gJ1tGTE9XXV9PUEVOX0RPQ19HRU4nO1xuICBleHBvcnQgY29uc3QgRkxPV19DTE9TRV9ET0NfR0VOID0gJ1tGTE9XXV9DTE9TRV9ET0NfR0VOJztcbiAgZXhwb3J0IGNvbnN0IEZMT1dfU1dJVENIX09CSkVDVCA9ICdbRkxPV11fU1dJVENIX09CSkVDVCc7XG4gIGV4cG9ydCBjb25zdCBSRU1PVEVfQVBQTFkgPSAnW0ZMT1ddX1JFTU9URV9BUFBMWSc7XG4gIGV4cG9ydCBjb25zdCBSRU1PVEVfQ0FOQ0VMID0gJ1tGTE9XXV9SRU1PVEVfQ0FOQ0VMJztcbiAgZXhwb3J0IGNvbnN0IE9QRU5fR1VJREVEX1NFTExJTkcgPSAnW0ZMT1ddX09QRU5fR1VJREVEX1NFTExJTkcnO1xuICBleHBvcnQgY29uc3QgU1VCTUlUX0dVSURFRF9TRUxMSU5HID0gJ1tGTE9XXV9TVUJNSVRfR1VJREVEX1NFTExJTkcnO1xuICBleHBvcnQgY29uc3QgQ0xPU0VfR1VJREVEX1NFTExJTkcgPSAnW0ZMT1ddX0NMT1NFX0dVSURFRF9TRUxMSU5HJztcbiAgZXhwb3J0IGNvbnN0IE9QRU5fRElBTE9HID0gJ1tGTE9XXV9PUEVOX0RJQUxPRyc7XG5cbiAgZXhwb3J0IGNvbnN0IENvbmZpZ3VyZVByb2R1Y3RBY3Rpb24gPSAoe1xuICAgIGxpbmVJdGVtSWQsXG4gICAgcHJvZHVjdElkLFxuICB9OiB7XG4gICAgbGluZUl0ZW1JZD86IHN0cmluZztcbiAgICBwcm9kdWN0SWQ/OiBzdHJpbmc7XG4gIH0pOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEZsb3dBY3Rpb24uRkxPV19DT05GSUdVUkVfUFJPRFVDVCxcbiAgICBwYXlsb2FkOiB7IGxpbmVJdGVtSWQsIHByb2R1Y3RJZCB9LFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgTmF2aWdhdGVCYWNrQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX0JBQ0ssXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBOYXZpZ2F0ZVRvQWN0aW9uID0gKHBhdGg6IHN0cmluZywgcHJvZHVjdElkPzogc3RyaW5nLCBsaW5lSXRlbUlkPzogc3RyaW5nKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBGbG93QWN0aW9uLkZMT1dfTkFWSUdBVEVfVE8sXG4gICAgcGF5bG9hZDogeyBwYXRoLCBwcm9kdWN0SWQsIGxpbmVJdGVtSWQgfSxcbiAgfSk7XG5cbiAgZXhwb3J0IGNvbnN0IE5hdmlnYXRlVG9DYXRhbG9nQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX1RPX0NBVEFMT0csXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBOYXZpZ2F0ZVRvU2hvcHBpbmdDYXJ0QWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX1RPX1NIT1BQSU5HX0NBUlQsXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBBcHBseVByb2R1Y3RDb25maWd1cmF0aW9uQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX0FQUExZX1BST0RVQ1RfQ09ORklHVVJBVElPTixcbiAgfSk7XG5cbiAgZXhwb3J0IGNvbnN0IE9wZW5Eb2NHZW5BY3Rpb24gPSAoKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBGbG93QWN0aW9uLkZMT1dfT1BFTl9ET0NfR0VOLFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgQ2xvc2VEb2NHZW5BY3Rpb24gPSAoKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBGbG93QWN0aW9uLkZMT1dfQ0xPU0VfRE9DX0dFTixcbiAgfSk7XG5cbiAgZXhwb3J0IGNvbnN0IFJlbW90ZUFwcGx5QWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5SRU1PVEVfQVBQTFksXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBSZW1vdGVDYW5jZWxBY3Rpb24gPSAoKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBGbG93QWN0aW9uLlJFTU9URV9DQU5DRUwsXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBTd2l0Y2hPYmplY3RBY3Rpb24gPSAocGF5bG9hZDogeyBpZDogc3RyaW5nIH0pOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEZsb3dBY3Rpb24uRkxPV19TV0lUQ0hfT0JKRUNULFxuICAgIHBheWxvYWQsXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBPcGVuR3VpZGVkU2VsbGluZyA9IChwYXlsb2FkOiB7IGd1aWRlZFNlbGxpbmdJZDogc3RyaW5nIH0pOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEZsb3dBY3Rpb24uT1BFTl9HVUlERURfU0VMTElORyxcbiAgICBwYXlsb2FkLFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgQ2xvc2VHdWlkZWRTZWxsaW5nID0gKHBheWxvYWQ/OiB7IGtlZXBTdGF0ZT86IGJvb2xlYW4gfSk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5DTE9TRV9HVUlERURfU0VMTElORyxcbiAgICBwYXlsb2FkLFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgU3VibWl0R3VpZGVkU2VsbGluZyA9IChwYXlsb2FkOiB7IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiB9KTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBGbG93QWN0aW9uLlNVQk1JVF9HVUlERURfU0VMTElORyxcbiAgICBwYXlsb2FkLFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgT3BlbkRpYWxvZyA9IChkaWFsb2c6IHN0cmluZyk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5PUEVOX0RJQUxPRyxcbiAgICBwYXlsb2FkOiB7IGRpYWxvZyB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIEZsb3dBY3Rpb24gbmFtZXNwYWNlIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IENvbmZpZ3VyZVByb2R1Y3RBY3Rpb24gPSBGbG93QWN0aW9uLkNvbmZpZ3VyZVByb2R1Y3RBY3Rpb247XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBGbG93QWN0aW9uIG5hbWVzcGFjZSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBOYXZpZ2F0ZUJhY2tBY3Rpb24gPSBGbG93QWN0aW9uLk5hdmlnYXRlQmFja0FjdGlvbjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIEZsb3dBY3Rpb24gbmFtZXNwYWNlIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IE5hdmlnYXRlVG9DYXRhbG9nQWN0aW9uID0gRmxvd0FjdGlvbi5OYXZpZ2F0ZVRvQ2F0YWxvZ0FjdGlvbjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIEZsb3dBY3Rpb24gbmFtZXNwYWNlIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IEFwcGx5UHJvZHVjdENvbmZpZ3VyYXRpb25BY3Rpb24gPSBGbG93QWN0aW9uLkFwcGx5UHJvZHVjdENvbmZpZ3VyYXRpb25BY3Rpb247XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBGbG93QWN0aW9uIG5hbWVzcGFjZSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBPcGVuRG9jR2VuQWN0aW9uID0gRmxvd0FjdGlvbi5PcGVuRG9jR2VuQWN0aW9uO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgRmxvd0FjdGlvbiBuYW1lc3BhY2UgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgQ2xvc2VEb2NHZW5BY3Rpb24gPSBGbG93QWN0aW9uLkNsb3NlRG9jR2VuQWN0aW9uO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgRmxvd0FjdGlvbiBuYW1lc3BhY2UgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgUmVtb3RlQXBwbHlBY3Rpb24gPSBGbG93QWN0aW9uLlJlbW90ZUFwcGx5QWN0aW9uO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgRmxvd0FjdGlvbiBuYW1lc3BhY2UgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgUmVtb3RlQ2FuY2VsQWN0aW9uID0gRmxvd0FjdGlvbi5SZW1vdGVDYW5jZWxBY3Rpb247XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBGbG93QWN0aW9uIG5hbWVzcGFjZSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBTd2l0Y2hPYmplY3RBY3Rpb24gPSBGbG93QWN0aW9uLlN3aXRjaE9iamVjdEFjdGlvbjtcblxuZXhwb3J0IG5hbWVzcGFjZSBDbXNBY3Rpb24ge1xuICBleHBvcnQgY29uc3QgR09fVE9fUEFHRSA9ICdbQ01TXV9HT19UT19QQUdFJztcbiAgZXhwb3J0IGNvbnN0IFVQREFURV9DVVNUT01JWkFUSU9OID0gJ1tDTVNdX1VQREFURV9DVVNUT01JWkFUSU9OJztcbiAgZXhwb3J0IGNvbnN0IEVNSVRfQ1VTVE9NSVpBVElPTl9DSEFOR0VTID0gJ1tDTVNdX0VNSVRfQ1VTVE9NSVpBVElPTl9DSEFOR0VTJztcbiAgZXhwb3J0IGNvbnN0IFNIT1dfT1ZFUkxBWSA9ICdbQ01TXV9TSE9XX09WRVJMQVknO1xuICBleHBvcnQgY29uc3QgSElERV9PVkVSTEFZID0gJ1tDTVNdX0hJREVfT1ZFUkxBWSc7XG4gIGV4cG9ydCBjb25zdCBISURFX0FMTF9PVkVSTEFZUyA9ICdbQ01TXV9ISURFX0FMTF9PVkVSTEFZUyc7XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIFVJIGRlZmluaXRpb24gdG8gYSBzcGVjaWZpYyBwYWdlXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlTmFtZSBuYW1lIG9mIHRoZSBwYWdlXG4gICAqL1xuICBleHBvcnQgY29uc3QgR29Ub1BhZ2UgPSAocGFnZU5hbWU6IHN0cmluZyk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogR09fVE9fUEFHRSxcbiAgICBwYXlsb2FkOiB7IHBhZ2VOYW1lIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgVUkgZGVmaW5pdGlvbiBjdXN0b21pemF0aW9uIHN0YXRlXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlTmFtZSBuYW1lIG9mIHRoZSBwYWdlXG4gICAqL1xuICBleHBvcnQgY29uc3QgVXBkYXRlQ3VzdG9taXphdGlvbiA9ICh2YWx1ZTogYW55KTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBVUERBVEVfQ1VTVE9NSVpBVElPTixcbiAgICBwYXlsb2FkOiB7IHZhbHVlIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBFbWl0IGN1c3RvbWl6YXRpb24gcGFnZSBjaGFuZ2VzXG4gICAqXG4gICAqIEBwYXJhbSBjaGFuZ2VzIC0gb2JqZWN0IHdpdGggY3VzdG9taXphdGlvbiBwYWdlIGNoYW5nZXNcbiAgICovXG4gIGV4cG9ydCBjb25zdCBFbWl0Q3VzdG9taXphdGlvbkNoYW5nZXMgPSAoY2hhbmdlczogQ3VzdG9taXphdGlvbkNoYW5nZXMpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEVNSVRfQ1VTVE9NSVpBVElPTl9DSEFOR0VTLFxuICAgIHBheWxvYWQ6IHsgY2hhbmdlcyB9LFxuICB9KTtcblxuICAvKipcbiAgICogU2hvdyBhbiBPdmVybGF5IG9uIHRoZSBzZWxlY3RlZCBwYWdlXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gbmFtZSBvZiB0aGUgb3ZlcmxheVxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBleHBvcnQgY29uc3QgU2hvd092ZXJsYXkgPSAobmFtZTogc3RyaW5nKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBTSE9XX09WRVJMQVksXG4gICAgcGF5bG9hZDogeyBuYW1lIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBIaWRlIGFuIE92ZXJsYXkgb24gdGhlIHNlbGVjdGVkIHBhZ2VcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBuYW1lIG9mIHRoZSBvdmVybGF5XG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIGV4cG9ydCBjb25zdCBIaWRlT3ZlcmxheSA9IChuYW1lOiBzdHJpbmcpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEhJREVfT1ZFUkxBWSxcbiAgICBwYXlsb2FkOiB7IG5hbWUgfSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEhpZGUgYWxsIE92ZXJsYXlzIG9uIHRoZSBzZWxlY3RlZCBwYWdlXG4gICAqXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIGV4cG9ydCBjb25zdCBIaWRlQWxsT3ZlcmxheXMgPSAoKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBISURFX0FMTF9PVkVSTEFZUyxcbiAgfSk7XG59XG4iXX0=
@@ -88,7 +88,7 @@ export class ElementRendererComponent {
88
88
  if (!model) {
89
89
  return [];
90
90
  }
91
- if (property === 'ports' && !finalPath.property && parentPath !== path) {
91
+ if (property === 'ports' && !finalPath?.property && parentPath !== path) {
92
92
  return model.lineItems.filter(({ port }) => port === name) ?? [];
93
93
  }
94
94
  return [model];
@@ -98,7 +98,7 @@ export class ElementRendererComponent {
98
98
  });
99
99
  }
100
100
  processChildren(children) {
101
- this.runtimeService.moduleRefs[0].injector.runInContext(() => {
101
+ this.runtimeService.moduleRefs[0]?.injector.runInContext(() => {
102
102
  const refs = children.reduce((acc, data, index) => {
103
103
  const key = String(data?.id ?? UUID.UUID());
104
104
  const existingRef = this.refs[key];
@@ -170,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
170
170
  }], meta: [{
171
171
  type: Input
172
172
  }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY29tcG9uZW50cy9lbGVtZW50LXJlbmRlcmVyL2VsZW1lbnQtcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL2NvbXBvbmVudHMvZWxlbWVudC1yZW5kZXJlci9lbGVtZW50LXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFHTCxRQUFRLEVBRVIsU0FBUyxFQUNULGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFjLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkQsT0FBTyxFQUFjLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVN4RCxNQUFNLE9BQU8sd0JBQXdCO0lBU25DLFlBQ3NCLGNBQXdCLEVBQ3BDLGNBQThC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bkMzQyxtQ0FDQTsyRkRpQ2Esd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLHFCQUFxQixDQUFDOzswQkFZL0IsUUFBUTt5T0FUdUQsRUFBRTtzQkFBbkUsU0FBUzt1QkFBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFekMsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNraXBTZWxmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGluZUl0ZW0sIFVVSUQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSwgaXNBcnJheSwgcHVsbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vLi4vZW5naW5lL21vZGVscy9lbnRpdHknO1xuaW1wb3J0IHsgUnVudGltZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2R1bGVzL3J1bnRpbWUvc2VydmljZXMvcnVudGltZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVsZW1lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VsZW1lbnQtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IElPUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW8tcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFbGVtZW50TWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcy9jb21tb24udHlwZXMnO1xuaW1wb3J0IHsgcGFyc2VCb3VuZFBhdGggfSBmcm9tICcuLi8uLi91dGlscy9wYXRoLnV0aWxzJztcbmltcG9ydCB7IEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9lbGVtZW50LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWNtcy1lbGVtZW50LXJlbmRlcmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZW1lbnQtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbGVtZW50LXJlbmRlcmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtFbGVtZW50Q29udGV4dFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBFbGVtZW50UmVuZGVyZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2VsJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgcHVibGljIGVsPzogVmlld0NvbnRhaW5lclJlZjtcblxuICBASW5wdXQoKSBwdWJsaWMgbWV0YSE6IEVsZW1lbnRNZXRhZGF0YTtcblxuICBwcml2YXRlIHR5cGU/OiBUeXBlPEVudGl0eT47XG4gIHByaXZhdGUgcmVmczogRGljdGlvbmFyeTxDb21wb25lbnRSZWY8RW50aXR5PiB8IHVuZGVmaW5lZD4gPSB7fTtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNraXBTZWxmKCkgcHJpdmF0ZSBwYXJlbnRJbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBydW50aW1lU2VydmljZTogUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50Q29udGV4dDogRWxlbWVudENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW9Qcm92aWRlclNlcnZpY2U6IElPUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWV0YS5pc1NoYXJlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZWxlbWVudENvbnRleHQubWV0YWRhdGEgPSB0aGlzLm1ldGE7XG4gICAgdGhpcy50eXBlID0gdGhpcy5tZXRhLnBhdGggPyB0aGlzLnJ1bnRpbWVTZXJ2aWNlLmNvbXBvbmVudFR5cGVzW3RoaXMubWV0YS5wYXRoXSA6IHVuZGVmaW5lZDtcblxuICAgIHRoaXMuY3JlYXRlQ29tcG9uZW50cygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveUNvbXBvbmVudHMoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgY29uc3QgbW9kZWxNZXRhID0gdGhpcy5tZXRhLm1vZGVsO1xuXG4gICAgaWYgKCFtb2RlbE1ldGEpIHtcbiAgICAgIHRoaXMucmVmc1tVVUlELlVVSUQoKV0gPSB0aGlzLmNyZWF0ZUNvbXBvbmVudCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtb2RlbE1ldGEubGluZUl0ZW0pIHtcbiAgICAgIHRoaXMuY3JlYXRlRnJvbUxpbmVJdGVtKG1vZGVsTWV0YS5saW5lSXRlbSk7XG4gICAgfSBlbHNlIGlmIChtb2RlbE1ldGEucGF0aCkge1xuICAgICAgdGhpcy5jcmVhdGVGcm9tUGF0aChtb2RlbE1ldGEucGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGcm9tUGF0aChwYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBhcnJheSQgPSB0aGlzLmlvUHJvdmlkZXJTZXJ2aWNlLmNvbm5lY3QodGhpcy5tZXRhLCAnY2hpbGRyZW4kJywgcGF0aCk7XG5cbiAgICBhcnJheSQ/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoY2hpbGRyZW4gPT4ge1xuICAgICAgaWYgKCFpc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHJvY2Vzc0NoaWxkcmVuKGNoaWxkcmVuKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9kZWxDb21wb25lbnQoKTogRWxlbWVudFJlbmRlcmVyQ29tcG9uZW50IHwgbnVsbCB7XG4gICAgbGV0IGNvbXBvbmVudDogRWxlbWVudFJlbmRlcmVyQ29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGluamVjdG9yID0gdGhpcy5wYXJlbnRJbmplY3RvcjtcblxuICAgIHdoaWxlICghY29tcG9uZW50KSB7XG4gICAgICBjb25zdCBwYXJlbnRDb21wID0gaW5qZWN0b3IuZ2V0KEVsZW1lbnRSZW5kZXJlckNvbXBvbmVudCwgbnVsbCk7XG5cbiAgICAgIGlmIChwYXJlbnRDb21wPy5tZXRhLm1vZGVsKSB7XG4gICAgICAgIGNvbXBvbmVudCA9IHBhcmVudENvbXA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyZW50Q29tcCkge1xuICAgICAgICBpbmplY3RvciA9IHBhcmVudENvbXAucGFyZW50SW5qZWN0b3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29tcG9uZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGcm9tTGluZUl0ZW0ocGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcGFyZW50Q29tcCA9IHRoaXMuZ2V0TW9kZWxDb21wb25lbnQoKTtcbiAgICBjb25zdCBwYXJlbnRQYXRoID0gcGFyZW50Q29tcD8ubWV0YS5tb2RlbD8ubGluZUl0ZW07XG5cbiAgICBjb25zdCBwYXRoQmxvY2tzID0gcGFyc2VCb3VuZFBhdGgocGF0aCkucmV2ZXJzZSgpO1xuICAgIGNvbnN0IHsgcHJvcGVydHksIG5hbWUgfSA9IHBhdGhCbG9ja3NbMV0gPz8ge307XG4gICAgY29uc3QgZmluYWxQYXRoID0gcGF0aEJsb2Nrc1swXTtcblxuICAgIGNvbnN0IGNoaWxkcmVuJCA9IHRoaXMuZ2V0UGFyZW50TGluZUl0ZW0kKHBhcmVudENvbXApLnBpcGUoXG4gICAgICBtYXAobW9kZWwgPT4ge1xuICAgICAgICBpZiAoIW1vZGVsKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BlcnR5ID09PSAncG9ydHMnICYmICFmaW5hbFBhdGgucHJvcGVydHkgJiYgcGFyZW50UGF0aCAhPT0gcGF0aCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5saW5lSXRlbXMuZmlsdGVyKCh7IHBvcnQgfSkgPT4gcG9ydCA9PT0gbmFtZSkgPz8gW107XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW21vZGVsXTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBjaGlsZHJlbiQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShjaGlsZHJlbiA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3NDaGlsZHJlbihjaGlsZHJlbik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NDaGlsZHJlbihjaGlsZHJlbjogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLm1vZHVsZVJlZnNbMF0uaW5qZWN0b3IucnVuSW5Db250ZXh0KCgpID0+IHtcbiAgICAgIGNvbnN0IHJlZnMgPSBjaGlsZHJlbi5yZWR1Y2UoKGFjYzogRGljdGlvbmFyeTxDb21wb25lbnRSZWY8RW50aXR5Pj4sIGRhdGEsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IFN0cmluZyhkYXRhPy5pZCA/PyBVVUlELlVVSUQoKSk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUmVmID0gdGhpcy5yZWZzW2tleV07XG5cbiAgICAgICAgY29uc3QgcmVmID0gZXhpc3RpbmdSZWYgPz8gdGhpcy5jcmVhdGVDb21wb25lbnQoZGF0YSwgaW5kZXgpO1xuICAgICAgICBpZiAoZXhpc3RpbmdSZWYpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudChleGlzdGluZ1JlZiwgZGF0YSwgaW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlZiA/IHsgLi4uYWNjLCBba2V5XTogcmVmIH0gOiBhY2M7XG4gICAgICB9LCB7fSk7XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucmVmcyk7XG4gICAgICBjb25zdCBuZXdLZXlzID0gT2JqZWN0LmtleXMocmVmcyk7XG5cbiAgICAgIHB1bGwoZXhpc3RpbmdLZXlzLCAuLi5uZXdLZXlzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHRoaXMuZGVzdHJveUNvbXBvbmVudChrZXkpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVmcyA9IHJlZnM7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhcmVudExpbmVJdGVtJChwYXJlbnRDb21wOiBFbGVtZW50UmVuZGVyZXJDb21wb25lbnQgfCBudWxsKTogT2JzZXJ2YWJsZTxMaW5lSXRlbSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHBhcmVudFJlZnMgPSBPYmplY3QudmFsdWVzKHBhcmVudENvbXA/LnJlZnMgPz8ge30pO1xuICAgIGNvbnN0IHBhcmVudFJlZiA9IHBhcmVudFJlZnMuZmluZChyZWYgPT5cbiAgICAgIChyZWY/LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpPy5jb250YWlucyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCksXG4gICAgKTtcblxuICAgIGxldCBwYXJlbnRNb2RlbCQ7XG4gICAgaWYgKHBhcmVudFJlZj8uaW5zdGFuY2UgaW5zdGFuY2VvZiBFbGVtZW50Q29tcG9uZW50KSB7XG4gICAgICBwYXJlbnRNb2RlbCQgPSBwYXJlbnRSZWY/Lmluc3RhbmNlLm1vZGVsJDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50TW9kZWwkID8/IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuZ2V0KCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbXBvbmVudChkYXRhPzogdW5rbm93biwgaW5kZXg/OiBudW1iZXIpOiBDb21wb25lbnRSZWY8RW50aXR5PiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnR5cGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmVsPy5jcmVhdGVDb21wb25lbnQodGhpcy50eXBlLCB7IGluZGV4IH0pO1xuXG4gICAgaWYgKGNvbXBvbmVudFJlZikge1xuICAgICAgY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCduYW1lJywgdGhpcy5tZXRhLm5hbWUpO1xuICAgICAgY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdwYXRoJywgdGhpcy5tZXRhLnBhdGgpO1xuXG4gICAgICBpZiAoY29tcG9uZW50UmVmLmluc3RhbmNlIGluc3RhbmNlb2YgRWxlbWVudENvbXBvbmVudCkge1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubW9kZWwkLm5leHQoZGF0YSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29tcG9uZW50KHJlZjogQ29tcG9uZW50UmVmPEVudGl0eT4sIGRhdGE6IHVua25vd24sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAocmVmLmluc3RhbmNlIGluc3RhbmNlb2YgRWxlbWVudENvbXBvbmVudCkge1xuICAgICAgcmVmLmluc3RhbmNlLm1vZGVsJC5uZXh0KGRhdGEpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVsICYmIHRoaXMuZWwuaW5kZXhPZihyZWYuaG9zdFZpZXcpICE9PSBpbmRleCkge1xuICAgICAgdGhpcy5lbC5tb3ZlKHJlZi5ob3N0VmlldywgaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveUNvbXBvbmVudChrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVmc1trZXldPy5kZXN0cm95KCk7XG4gICAgZGVsZXRlIHRoaXMucmVmc1trZXldO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95Q29tcG9uZW50cygpOiB2b2lkIHtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMucmVmcykuZm9yRWFjaChyZWYgPT4gcmVmPy5kZXN0cm95KCkpO1xuICAgIHRoaXMucmVmcyA9IHt9O1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2VsPjwvbmctdGVtcGxhdGU+XG4iXX0=
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY29tcG9uZW50cy9lbGVtZW50LXJlbmRlcmVyL2VsZW1lbnQtcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL2NvbXBvbmVudHMvZWxlbWVudC1yZW5kZXJlci9lbGVtZW50LXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFHTCxRQUFRLEVBRVIsU0FBUyxFQUNULGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFjLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkQsT0FBTyxFQUFjLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVN4RCxNQUFNLE9BQU8sd0JBQXdCO0lBU25DLFlBQ3NCLGNBQXdCLEVBQ3BDLGNBQThC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bkMzQyxtQ0FDQTsyRkRpQ2Esd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLHFCQUFxQixDQUFDOzswQkFZL0IsUUFBUTt5T0FUdUQsRUFBRTtzQkFBbkUsU0FBUzt1QkFBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFekMsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNraXBTZWxmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGluZUl0ZW0sIFVVSUQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSwgaXNBcnJheSwgcHVsbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vLi4vZW5naW5lL21vZGVscy9lbnRpdHknO1xuaW1wb3J0IHsgUnVudGltZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2R1bGVzL3J1bnRpbWUvc2VydmljZXMvcnVudGltZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVsZW1lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VsZW1lbnQtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IElPUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW8tcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFbGVtZW50TWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcy9jb21tb24udHlwZXMnO1xuaW1wb3J0IHsgcGFyc2VCb3VuZFBhdGggfSBmcm9tICcuLi8uLi91dGlscy9wYXRoLnV0aWxzJztcbmltcG9ydCB7IEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9lbGVtZW50LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWNtcy1lbGVtZW50LXJlbmRlcmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZW1lbnQtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbGVtZW50LXJlbmRlcmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtFbGVtZW50Q29udGV4dFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBFbGVtZW50UmVuZGVyZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2VsJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgcHVibGljIGVsPzogVmlld0NvbnRhaW5lclJlZjtcblxuICBASW5wdXQoKSBwdWJsaWMgbWV0YSE6IEVsZW1lbnRNZXRhZGF0YTtcblxuICBwcml2YXRlIHR5cGU/OiBUeXBlPEVudGl0eT47XG4gIHByaXZhdGUgcmVmczogRGljdGlvbmFyeTxDb21wb25lbnRSZWY8RW50aXR5PiB8IHVuZGVmaW5lZD4gPSB7fTtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNraXBTZWxmKCkgcHJpdmF0ZSBwYXJlbnRJbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBydW50aW1lU2VydmljZTogUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50Q29udGV4dDogRWxlbWVudENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW9Qcm92aWRlclNlcnZpY2U6IElPUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWV0YS5pc1NoYXJlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZWxlbWVudENvbnRleHQubWV0YWRhdGEgPSB0aGlzLm1ldGE7XG4gICAgdGhpcy50eXBlID0gdGhpcy5tZXRhLnBhdGggPyB0aGlzLnJ1bnRpbWVTZXJ2aWNlLmNvbXBvbmVudFR5cGVzW3RoaXMubWV0YS5wYXRoXSA6IHVuZGVmaW5lZDtcblxuICAgIHRoaXMuY3JlYXRlQ29tcG9uZW50cygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveUNvbXBvbmVudHMoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgY29uc3QgbW9kZWxNZXRhID0gdGhpcy5tZXRhLm1vZGVsO1xuXG4gICAgaWYgKCFtb2RlbE1ldGEpIHtcbiAgICAgIHRoaXMucmVmc1tVVUlELlVVSUQoKV0gPSB0aGlzLmNyZWF0ZUNvbXBvbmVudCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtb2RlbE1ldGEubGluZUl0ZW0pIHtcbiAgICAgIHRoaXMuY3JlYXRlRnJvbUxpbmVJdGVtKG1vZGVsTWV0YS5saW5lSXRlbSk7XG4gICAgfSBlbHNlIGlmIChtb2RlbE1ldGEucGF0aCkge1xuICAgICAgdGhpcy5jcmVhdGVGcm9tUGF0aChtb2RlbE1ldGEucGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGcm9tUGF0aChwYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBhcnJheSQgPSB0aGlzLmlvUHJvdmlkZXJTZXJ2aWNlLmNvbm5lY3QodGhpcy5tZXRhLCAnY2hpbGRyZW4kJywgcGF0aCk7XG5cbiAgICBhcnJheSQ/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoY2hpbGRyZW4gPT4ge1xuICAgICAgaWYgKCFpc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHJvY2Vzc0NoaWxkcmVuKGNoaWxkcmVuKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9kZWxDb21wb25lbnQoKTogRWxlbWVudFJlbmRlcmVyQ29tcG9uZW50IHwgbnVsbCB7XG4gICAgbGV0IGNvbXBvbmVudDogRWxlbWVudFJlbmRlcmVyQ29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGluamVjdG9yID0gdGhpcy5wYXJlbnRJbmplY3RvcjtcblxuICAgIHdoaWxlICghY29tcG9uZW50KSB7XG4gICAgICBjb25zdCBwYXJlbnRDb21wID0gaW5qZWN0b3IuZ2V0KEVsZW1lbnRSZW5kZXJlckNvbXBvbmVudCwgbnVsbCk7XG5cbiAgICAgIGlmIChwYXJlbnRDb21wPy5tZXRhLm1vZGVsKSB7XG4gICAgICAgIGNvbXBvbmVudCA9IHBhcmVudENvbXA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyZW50Q29tcCkge1xuICAgICAgICBpbmplY3RvciA9IHBhcmVudENvbXAucGFyZW50SW5qZWN0b3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29tcG9uZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGcm9tTGluZUl0ZW0ocGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcGFyZW50Q29tcCA9IHRoaXMuZ2V0TW9kZWxDb21wb25lbnQoKTtcbiAgICBjb25zdCBwYXJlbnRQYXRoID0gcGFyZW50Q29tcD8ubWV0YS5tb2RlbD8ubGluZUl0ZW07XG5cbiAgICBjb25zdCBwYXRoQmxvY2tzID0gcGFyc2VCb3VuZFBhdGgocGF0aCkucmV2ZXJzZSgpO1xuICAgIGNvbnN0IHsgcHJvcGVydHksIG5hbWUgfSA9IHBhdGhCbG9ja3NbMV0gPz8ge307XG4gICAgY29uc3QgZmluYWxQYXRoID0gcGF0aEJsb2Nrc1swXTtcblxuICAgIGNvbnN0IGNoaWxkcmVuJCA9IHRoaXMuZ2V0UGFyZW50TGluZUl0ZW0kKHBhcmVudENvbXApLnBpcGUoXG4gICAgICBtYXAobW9kZWwgPT4ge1xuICAgICAgICBpZiAoIW1vZGVsKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BlcnR5ID09PSAncG9ydHMnICYmICFmaW5hbFBhdGg/LnByb3BlcnR5ICYmIHBhcmVudFBhdGggIT09IHBhdGgpIHtcbiAgICAgICAgICByZXR1cm4gbW9kZWwubGluZUl0ZW1zLmZpbHRlcigoeyBwb3J0IH0pID0+IHBvcnQgPT09IG5hbWUpID8/IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFttb2RlbF07XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY2hpbGRyZW4kLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoY2hpbGRyZW4gPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzQ2hpbGRyZW4oY2hpbGRyZW4pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzQ2hpbGRyZW4oY2hpbGRyZW46IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy5ydW50aW1lU2VydmljZS5tb2R1bGVSZWZzWzBdPy5pbmplY3Rvci5ydW5JbkNvbnRleHQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVmcyA9IGNoaWxkcmVuLnJlZHVjZSgoYWNjOiBEaWN0aW9uYXJ5PENvbXBvbmVudFJlZjxFbnRpdHk+PiwgZGF0YSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gU3RyaW5nKGRhdGE/LmlkID8/IFVVSUQuVVVJRCgpKTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdSZWYgPSB0aGlzLnJlZnNba2V5XTtcblxuICAgICAgICBjb25zdCByZWYgPSBleGlzdGluZ1JlZiA/PyB0aGlzLmNyZWF0ZUNvbXBvbmVudChkYXRhLCBpbmRleCk7XG4gICAgICAgIGlmIChleGlzdGluZ1JlZikge1xuICAgICAgICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KGV4aXN0aW5nUmVmLCBkYXRhLCBpbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVmID8geyAuLi5hY2MsIFtrZXldOiByZWYgfSA6IGFjYztcbiAgICAgIH0sIHt9KTtcblxuICAgICAgY29uc3QgZXhpc3RpbmdLZXlzID0gT2JqZWN0LmtleXModGhpcy5yZWZzKTtcbiAgICAgIGNvbnN0IG5ld0tleXMgPSBPYmplY3Qua2V5cyhyZWZzKTtcblxuICAgICAgcHVsbChleGlzdGluZ0tleXMsIC4uLm5ld0tleXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgdGhpcy5kZXN0cm95Q29tcG9uZW50KGtleSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWZzID0gcmVmcztcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyZW50TGluZUl0ZW0kKHBhcmVudENvbXA6IEVsZW1lbnRSZW5kZXJlckNvbXBvbmVudCB8IG51bGwpOiBPYnNlcnZhYmxlPExpbmVJdGVtIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgcGFyZW50UmVmcyA9IE9iamVjdC52YWx1ZXMocGFyZW50Q29tcD8ucmVmcyA/PyB7fSk7XG4gICAgY29uc3QgcGFyZW50UmVmID0gcGFyZW50UmVmcy5maW5kKHJlZiA9PlxuICAgICAgKHJlZj8ubG9jYXRpb24ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCk/LmNvbnRhaW5zKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSxcbiAgICApO1xuXG4gICAgbGV0IHBhcmVudE1vZGVsJDtcbiAgICBpZiAocGFyZW50UmVmPy5pbnN0YW5jZSBpbnN0YW5jZW9mIEVsZW1lbnRDb21wb25lbnQpIHtcbiAgICAgIHBhcmVudE1vZGVsJCA9IHBhcmVudFJlZj8uaW5zdGFuY2UubW9kZWwkO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnRNb2RlbCQgPz8gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5nZXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ29tcG9uZW50KGRhdGE/OiB1bmtub3duLCBpbmRleD86IG51bWJlcik6IENvbXBvbmVudFJlZjxFbnRpdHk+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMudHlwZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuZWw/LmNyZWF0ZUNvbXBvbmVudCh0aGlzLnR5cGUsIHsgaW5kZXggfSk7XG5cbiAgICBpZiAoY29tcG9uZW50UmVmKSB7XG4gICAgICBjb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCB0aGlzLm1ldGEubmFtZSk7XG4gICAgICBjb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3BhdGgnLCB0aGlzLm1ldGEucGF0aCk7XG5cbiAgICAgIGlmIChjb21wb25lbnRSZWYuaW5zdGFuY2UgaW5zdGFuY2VvZiBFbGVtZW50Q29tcG9uZW50KSB7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5tb2RlbCQubmV4dChkYXRhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb21wb25lbnQocmVmOiBDb21wb25lbnRSZWY8RW50aXR5PiwgZGF0YTogdW5rbm93biwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChyZWYuaW5zdGFuY2UgaW5zdGFuY2VvZiBFbGVtZW50Q29tcG9uZW50KSB7XG4gICAgICByZWYuaW5zdGFuY2UubW9kZWwkLm5leHQoZGF0YSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZWwgJiYgdGhpcy5lbC5pbmRleE9mKHJlZi5ob3N0VmlldykgIT09IGluZGV4KSB7XG4gICAgICB0aGlzLmVsLm1vdmUocmVmLmhvc3RWaWV3LCBpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95Q29tcG9uZW50KGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZWZzW2tleV0/LmRlc3Ryb3koKTtcbiAgICBkZWxldGUgdGhpcy5yZWZzW2tleV07XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lDb21wb25lbnRzKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy5yZWZzKS5mb3JFYWNoKHJlZiA9PiByZWY/LmRlc3Ryb3koKSk7XG4gICAgdGhpcy5yZWZzID0ge307XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZWw+PC9uZy10ZW1wbGF0ZT5cbiJdfQ==