@decaf-ts/integrations 0.3.7 → 0.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/dist/integrations.cjs +3 -3
  2. package/dist/integrations.js +3 -3
  3. package/lib/cjs/graph/engine/constants.cjs +58 -0
  4. package/lib/cjs/graph/engine/decorators.cjs +4 -0
  5. package/lib/cjs/graph/engine/errors/GraphCycleError.cjs +20 -0
  6. package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs +27 -0
  7. package/lib/cjs/graph/engine/errors/GraphInputError.cjs +20 -0
  8. package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs +20 -0
  9. package/lib/cjs/graph/engine/errors/GraphPinningError.cjs +20 -0
  10. package/lib/cjs/graph/engine/errors/GraphPortError.cjs +20 -0
  11. package/lib/cjs/graph/engine/errors/GraphStoreError.cjs +20 -0
  12. package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs +20 -0
  13. package/lib/cjs/graph/{errors → engine/errors}/index.cjs +2 -2
  14. package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs +4 -0
  15. package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs +40 -0
  16. package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs +37 -0
  17. package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs +4 -0
  18. package/lib/cjs/graph/{events → engine/events}/index.cjs +2 -2
  19. package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs +4 -0
  20. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs +79 -0
  21. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs +408 -0
  22. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs +32 -0
  23. package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs +30 -0
  24. package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs +4 -0
  25. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +103 -0
  26. package/lib/cjs/graph/{execution → engine/execution}/index.cjs +2 -2
  27. package/lib/cjs/graph/engine/index.cjs +84 -0
  28. package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs +87 -0
  29. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +85 -0
  30. package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs +85 -0
  31. package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs +16 -0
  32. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs +77 -0
  33. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs +78 -0
  34. package/lib/cjs/graph/{loops → engine/loops}/index.cjs +2 -2
  35. package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs +28 -0
  36. package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs +20 -0
  37. package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs +34 -0
  38. package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs +191 -0
  39. package/lib/cjs/graph/{pinning → engine/pinning}/index.cjs +2 -2
  40. package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs +4 -0
  41. package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs +4 -0
  42. package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs +4 -0
  43. package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs +4 -0
  44. package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs +197 -0
  45. package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs +172 -0
  46. package/lib/cjs/graph/engine/planning/GraphTopology.cjs +57 -0
  47. package/lib/cjs/graph/{planning → engine/planning}/index.cjs +2 -2
  48. package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs +44 -0
  49. package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs +27 -0
  50. package/lib/cjs/graph/{registry → engine/registry}/index.cjs +2 -2
  51. package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs +53 -0
  52. package/lib/cjs/graph/{snapshots → engine/snapshots}/index.cjs +2 -2
  53. package/lib/cjs/graph/engine/store/GraphCachedValue.cjs +4 -0
  54. package/lib/cjs/graph/engine/store/GraphValueKey.cjs +4 -0
  55. package/lib/cjs/graph/engine/store/GraphValueStore.cjs +76 -0
  56. package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs +4 -0
  57. package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs +69 -0
  58. package/lib/cjs/graph/{store → engine/store}/index.cjs +2 -2
  59. package/lib/cjs/graph/engine/types.cjs +4 -0
  60. package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs +33 -0
  61. package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs +58 -0
  62. package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs +52 -0
  63. package/lib/cjs/graph/{validation → engine/validation}/index.cjs +2 -2
  64. package/lib/cjs/graph/index.cjs +10 -60
  65. package/lib/cjs/graph/shared/constants.cjs +44 -0
  66. package/lib/cjs/graph/shared/index.cjs +38 -0
  67. package/lib/cjs/graph/{nodes → shared/nodes}/agent.cjs +2 -2
  68. package/lib/cjs/graph/shared/nodes/base.cjs +35 -0
  69. package/lib/cjs/graph/shared/nodes/category-styles.cjs +38 -0
  70. package/lib/cjs/graph/shared/nodes/flow-control.cjs +464 -0
  71. package/lib/cjs/graph/{nodes → shared/nodes}/index.cjs +2 -2
  72. package/lib/cjs/graph/shared/nodes/triggers.cjs +250 -0
  73. package/lib/cjs/graph/shared/types.cjs +4 -0
  74. package/lib/cjs/index.cjs +3 -3
  75. package/lib/cjs/nest/index.cjs +2 -3
  76. package/lib/esm/graph/engine/constants.js +62 -0
  77. package/lib/esm/graph/engine/decorators.js +2 -0
  78. package/lib/esm/graph/engine/errors/GraphCycleError.js +15 -0
  79. package/lib/esm/graph/engine/errors/GraphExecutionError.js +22 -0
  80. package/lib/esm/graph/engine/errors/GraphInputError.js +15 -0
  81. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +15 -0
  82. package/lib/esm/graph/engine/errors/GraphPinningError.js +15 -0
  83. package/lib/esm/graph/engine/errors/GraphPortError.js +15 -0
  84. package/lib/esm/graph/engine/errors/GraphStoreError.js +15 -0
  85. package/lib/esm/graph/engine/errors/GraphTopologyError.js +15 -0
  86. package/lib/esm/graph/engine/errors/index.js +14 -0
  87. package/lib/esm/graph/engine/events/GraphExecutionEvent.js +2 -0
  88. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +35 -0
  89. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +32 -0
  90. package/lib/esm/graph/engine/events/GraphExecutionObserver.js +2 -0
  91. package/lib/esm/graph/engine/events/index.js +10 -0
  92. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +18 -0
  93. package/lib/esm/graph/engine/execution/GraphExecutionContext.js +74 -0
  94. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +403 -0
  95. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +27 -0
  96. package/lib/esm/graph/engine/execution/GraphExecutionResult.js +26 -0
  97. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +2 -0
  98. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +98 -0
  99. package/lib/esm/graph/engine/execution/index.js +13 -0
  100. package/lib/esm/graph/engine/index.js +67 -0
  101. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +82 -0
  102. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +80 -0
  103. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +80 -0
  104. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +11 -0
  105. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +72 -0
  106. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +73 -0
  107. package/lib/esm/graph/engine/loops/index.js +12 -0
  108. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +23 -0
  109. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +15 -0
  110. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +29 -0
  111. package/lib/esm/graph/engine/pinning/GraphPinningService.js +186 -0
  112. package/lib/esm/graph/engine/pinning/index.js +10 -0
  113. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +2 -0
  114. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +7 -0
  115. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +2 -0
  116. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +2 -0
  117. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +192 -0
  118. package/lib/esm/graph/engine/planning/GraphRelationResolver.js +167 -0
  119. package/lib/esm/graph/engine/planning/GraphTopology.js +52 -0
  120. package/lib/esm/graph/engine/planning/index.js +13 -0
  121. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +39 -0
  122. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +22 -0
  123. package/lib/esm/graph/engine/registry/index.js +8 -0
  124. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +48 -0
  125. package/lib/esm/graph/engine/snapshots/index.js +7 -0
  126. package/lib/esm/graph/engine/store/GraphCachedValue.js +2 -0
  127. package/lib/esm/graph/engine/store/GraphValueKey.js +7 -0
  128. package/lib/esm/graph/engine/store/GraphValueStore.js +71 -0
  129. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +2 -0
  130. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +64 -0
  131. package/lib/esm/graph/engine/store/index.js +11 -0
  132. package/lib/esm/graph/engine/types.js +2 -0
  133. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +28 -0
  134. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +53 -0
  135. package/lib/esm/graph/engine/validation/GraphValueValidator.js +47 -0
  136. package/lib/esm/graph/engine/validation/index.js +9 -0
  137. package/lib/esm/graph/index.js +9 -59
  138. package/lib/esm/graph/shared/constants.js +56 -0
  139. package/lib/esm/graph/shared/index.js +19 -0
  140. package/lib/esm/graph/shared/nodes/agent.js +101 -0
  141. package/lib/esm/graph/shared/nodes/base.js +30 -0
  142. package/lib/esm/graph/shared/nodes/category-styles.js +34 -0
  143. package/lib/esm/graph/shared/nodes/flow-control.js +455 -0
  144. package/lib/esm/graph/shared/nodes/index.js +18 -0
  145. package/lib/esm/graph/shared/nodes/triggers.js +241 -0
  146. package/lib/esm/graph/shared/types.js +2 -0
  147. package/lib/esm/index.js +3 -3
  148. package/lib/esm/nest/index.js +1 -2
  149. package/lib/types/graph/engine/constants.d.cts +59 -0
  150. package/lib/types/graph/engine/constants.d.mts +59 -0
  151. package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.cts +1 -1
  152. package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.mts +1 -1
  153. package/lib/types/graph/engine/index.d.cts +61 -0
  154. package/lib/types/graph/engine/index.d.mts +61 -0
  155. package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.cts +1 -1
  156. package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.mts +1 -1
  157. package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.cts +2 -1
  158. package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.mts +2 -1
  159. package/lib/types/graph/{types.d.cts → engine/types.d.cts} +8 -116
  160. package/lib/types/graph/{types.d.mts → engine/types.d.mts} +8 -116
  161. package/lib/types/graph/index.d.cts +8 -53
  162. package/lib/types/graph/index.d.mts +8 -53
  163. package/lib/types/graph/shared/constants.d.cts +53 -0
  164. package/lib/types/graph/shared/constants.d.mts +53 -0
  165. package/lib/types/graph/shared/index.d.cts +18 -0
  166. package/lib/types/graph/shared/index.d.mts +18 -0
  167. package/lib/types/graph/shared/types.d.cts +121 -0
  168. package/lib/types/graph/shared/types.d.mts +121 -0
  169. package/lib/types/index.d.cts +2 -2
  170. package/lib/types/index.d.mts +2 -2
  171. package/lib/types/nest/index.d.cts +0 -1
  172. package/lib/types/nest/index.d.mts +0 -1
  173. package/package.json +25 -3
  174. package/lib/cjs/graph/constants.cjs +0 -94
  175. package/lib/cjs/graph/decorators.cjs +0 -4
  176. package/lib/cjs/graph/errors/GraphCycleError.cjs +0 -20
  177. package/lib/cjs/graph/errors/GraphExecutionError.cjs +0 -27
  178. package/lib/cjs/graph/errors/GraphInputError.cjs +0 -20
  179. package/lib/cjs/graph/errors/GraphLoopLimitError.cjs +0 -20
  180. package/lib/cjs/graph/errors/GraphPinningError.cjs +0 -20
  181. package/lib/cjs/graph/errors/GraphPortError.cjs +0 -20
  182. package/lib/cjs/graph/errors/GraphStoreError.cjs +0 -20
  183. package/lib/cjs/graph/errors/GraphTopologyError.cjs +0 -20
  184. package/lib/cjs/graph/events/GraphExecutionEvent.cjs +0 -4
  185. package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs +0 -40
  186. package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs +0 -37
  187. package/lib/cjs/graph/events/GraphExecutionObserver.cjs +0 -4
  188. package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs +0 -4
  189. package/lib/cjs/graph/execution/GraphExecutionContext.cjs +0 -79
  190. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +0 -407
  191. package/lib/cjs/graph/execution/GraphExecutionFrame.cjs +0 -32
  192. package/lib/cjs/graph/execution/GraphExecutionResult.cjs +0 -30
  193. package/lib/cjs/graph/execution/GraphNodeExecutor.cjs +0 -4
  194. package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +0 -103
  195. package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +0 -87
  196. package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs +0 -84
  197. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +0 -85
  198. package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs +0 -16
  199. package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs +0 -76
  200. package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs +0 -77
  201. package/lib/cjs/graph/nodes/base.cjs +0 -35
  202. package/lib/cjs/graph/nodes/category-styles.cjs +0 -38
  203. package/lib/cjs/graph/nodes/flow-control.cjs +0 -464
  204. package/lib/cjs/graph/nodes/triggers.cjs +0 -250
  205. package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs +0 -28
  206. package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs +0 -20
  207. package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs +0 -34
  208. package/lib/cjs/graph/pinning/GraphPinningService.cjs +0 -191
  209. package/lib/cjs/graph/planning/GraphExecutionPlan.cjs +0 -4
  210. package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs +0 -4
  211. package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs +0 -4
  212. package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs +0 -4
  213. package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs +0 -197
  214. package/lib/cjs/graph/planning/GraphRelationResolver.cjs +0 -172
  215. package/lib/cjs/graph/planning/GraphTopology.cjs +0 -57
  216. package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs +0 -44
  217. package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs +0 -27
  218. package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs +0 -53
  219. package/lib/cjs/graph/store/GraphCachedValue.cjs +0 -4
  220. package/lib/cjs/graph/store/GraphValueKey.cjs +0 -4
  221. package/lib/cjs/graph/store/GraphValueStore.cjs +0 -76
  222. package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs +0 -4
  223. package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs +0 -69
  224. package/lib/cjs/graph/types.cjs +0 -4
  225. package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs +0 -33
  226. package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs +0 -58
  227. package/lib/cjs/graph/validation/GraphValueValidator.cjs +0 -52
  228. package/lib/esm/graph/constants.js +0 -106
  229. package/lib/esm/graph/decorators.js +0 -2
  230. package/lib/esm/graph/errors/GraphCycleError.js +0 -15
  231. package/lib/esm/graph/errors/GraphExecutionError.js +0 -22
  232. package/lib/esm/graph/errors/GraphInputError.js +0 -15
  233. package/lib/esm/graph/errors/GraphLoopLimitError.js +0 -15
  234. package/lib/esm/graph/errors/GraphPinningError.js +0 -15
  235. package/lib/esm/graph/errors/GraphPortError.js +0 -15
  236. package/lib/esm/graph/errors/GraphStoreError.js +0 -15
  237. package/lib/esm/graph/errors/GraphTopologyError.js +0 -15
  238. package/lib/esm/graph/errors/index.js +0 -14
  239. package/lib/esm/graph/events/GraphExecutionEvent.js +0 -2
  240. package/lib/esm/graph/events/GraphExecutionEventEmitter.js +0 -35
  241. package/lib/esm/graph/events/GraphExecutionEventFactory.js +0 -32
  242. package/lib/esm/graph/events/GraphExecutionObserver.js +0 -2
  243. package/lib/esm/graph/events/index.js +0 -10
  244. package/lib/esm/graph/execution/CodeSandboxEvaluator.js +0 -18
  245. package/lib/esm/graph/execution/GraphExecutionContext.js +0 -74
  246. package/lib/esm/graph/execution/GraphExecutionEngine.js +0 -402
  247. package/lib/esm/graph/execution/GraphExecutionFrame.js +0 -27
  248. package/lib/esm/graph/execution/GraphExecutionResult.js +0 -26
  249. package/lib/esm/graph/execution/GraphNodeExecutor.js +0 -2
  250. package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +0 -98
  251. package/lib/esm/graph/execution/index.js +0 -13
  252. package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +0 -82
  253. package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js +0 -79
  254. package/lib/esm/graph/loops/GraphConditionEvaluator.js +0 -80
  255. package/lib/esm/graph/loops/GraphLoopExecutionContext.js +0 -11
  256. package/lib/esm/graph/loops/UntilGraphNodeExecutor.js +0 -71
  257. package/lib/esm/graph/loops/WhileGraphNodeExecutor.js +0 -72
  258. package/lib/esm/graph/loops/index.js +0 -12
  259. package/lib/esm/graph/nodes/agent.js +0 -101
  260. package/lib/esm/graph/nodes/base.js +0 -30
  261. package/lib/esm/graph/nodes/category-styles.js +0 -34
  262. package/lib/esm/graph/nodes/flow-control.js +0 -455
  263. package/lib/esm/graph/nodes/index.js +0 -18
  264. package/lib/esm/graph/nodes/triggers.js +0 -241
  265. package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js +0 -23
  266. package/lib/esm/graph/pinning/GraphPinningMetadata.js +0 -15
  267. package/lib/esm/graph/pinning/GraphPinningPolicy.js +0 -29
  268. package/lib/esm/graph/pinning/GraphPinningService.js +0 -186
  269. package/lib/esm/graph/pinning/index.js +0 -10
  270. package/lib/esm/graph/planning/GraphExecutionPlan.js +0 -2
  271. package/lib/esm/graph/planning/GraphExecutionPlanEdge.js +0 -7
  272. package/lib/esm/graph/planning/GraphExecutionPlanLayer.js +0 -2
  273. package/lib/esm/graph/planning/GraphExecutionPlanNode.js +0 -2
  274. package/lib/esm/graph/planning/GraphExecutionPlanner.js +0 -192
  275. package/lib/esm/graph/planning/GraphRelationResolver.js +0 -167
  276. package/lib/esm/graph/planning/GraphTopology.js +0 -52
  277. package/lib/esm/graph/planning/index.js +0 -13
  278. package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js +0 -39
  279. package/lib/esm/graph/registry/GraphNodeExecutorResolver.js +0 -22
  280. package/lib/esm/graph/registry/index.js +0 -8
  281. package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js +0 -48
  282. package/lib/esm/graph/snapshots/index.js +0 -7
  283. package/lib/esm/graph/store/GraphCachedValue.js +0 -2
  284. package/lib/esm/graph/store/GraphValueKey.js +0 -7
  285. package/lib/esm/graph/store/GraphValueStore.js +0 -71
  286. package/lib/esm/graph/store/GraphValueStoreAdapter.js +0 -2
  287. package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js +0 -64
  288. package/lib/esm/graph/store/index.js +0 -11
  289. package/lib/esm/graph/types.js +0 -2
  290. package/lib/esm/graph/validation/GraphDefinitionValidator.js +0 -28
  291. package/lib/esm/graph/validation/GraphPortSchemaResolver.js +0 -53
  292. package/lib/esm/graph/validation/GraphValueValidator.js +0 -47
  293. package/lib/esm/graph/validation/index.js +0 -9
  294. package/lib/types/graph/constants.d.cts +0 -101
  295. package/lib/types/graph/constants.d.mts +0 -101
  296. /package/lib/types/graph/{decorators.d.cts → engine/decorators.d.cts} +0 -0
  297. /package/lib/types/graph/{decorators.d.mts → engine/decorators.d.mts} +0 -0
  298. /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.cts +0 -0
  299. /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.mts +0 -0
  300. /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.cts +0 -0
  301. /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.mts +0 -0
  302. /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.cts +0 -0
  303. /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.mts +0 -0
  304. /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.cts +0 -0
  305. /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.mts +0 -0
  306. /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.cts +0 -0
  307. /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.mts +0 -0
  308. /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.cts +0 -0
  309. /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.mts +0 -0
  310. /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.cts +0 -0
  311. /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.mts +0 -0
  312. /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.cts +0 -0
  313. /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.mts +0 -0
  314. /package/lib/types/graph/{errors → engine/errors}/index.d.cts +0 -0
  315. /package/lib/types/graph/{errors → engine/errors}/index.d.mts +0 -0
  316. /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.cts +0 -0
  317. /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.mts +0 -0
  318. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.cts +0 -0
  319. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.mts +0 -0
  320. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.cts +0 -0
  321. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.mts +0 -0
  322. /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.cts +0 -0
  323. /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.mts +0 -0
  324. /package/lib/types/graph/{events → engine/events}/index.d.cts +0 -0
  325. /package/lib/types/graph/{events → engine/events}/index.d.mts +0 -0
  326. /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.cts +0 -0
  327. /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.mts +0 -0
  328. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.cts +0 -0
  329. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.mts +0 -0
  330. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.cts +0 -0
  331. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.mts +0 -0
  332. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.cts +0 -0
  333. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.mts +0 -0
  334. /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.cts +0 -0
  335. /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.mts +0 -0
  336. /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.cts +0 -0
  337. /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.mts +0 -0
  338. /package/lib/types/graph/{execution → engine/execution}/index.d.cts +0 -0
  339. /package/lib/types/graph/{execution → engine/execution}/index.d.mts +0 -0
  340. /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.cts +0 -0
  341. /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.mts +0 -0
  342. /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.cts +0 -0
  343. /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.mts +0 -0
  344. /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.cts +0 -0
  345. /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.mts +0 -0
  346. /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.cts +0 -0
  347. /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.mts +0 -0
  348. /package/lib/types/graph/{loops → engine/loops}/index.d.cts +0 -0
  349. /package/lib/types/graph/{loops → engine/loops}/index.d.mts +0 -0
  350. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.cts +0 -0
  351. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.mts +0 -0
  352. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.cts +0 -0
  353. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.mts +0 -0
  354. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.cts +0 -0
  355. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.mts +0 -0
  356. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.cts +0 -0
  357. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.mts +0 -0
  358. /package/lib/types/graph/{pinning → engine/pinning}/index.d.cts +0 -0
  359. /package/lib/types/graph/{pinning → engine/pinning}/index.d.mts +0 -0
  360. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.cts +0 -0
  361. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.mts +0 -0
  362. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.cts +0 -0
  363. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.mts +0 -0
  364. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.cts +0 -0
  365. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.mts +0 -0
  366. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.cts +0 -0
  367. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.mts +0 -0
  368. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.cts +0 -0
  369. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.mts +0 -0
  370. /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.cts +0 -0
  371. /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.mts +0 -0
  372. /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.cts +0 -0
  373. /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.mts +0 -0
  374. /package/lib/types/graph/{planning → engine/planning}/index.d.cts +0 -0
  375. /package/lib/types/graph/{planning → engine/planning}/index.d.mts +0 -0
  376. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.cts +0 -0
  377. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.mts +0 -0
  378. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.cts +0 -0
  379. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.mts +0 -0
  380. /package/lib/types/graph/{registry → engine/registry}/index.d.cts +0 -0
  381. /package/lib/types/graph/{registry → engine/registry}/index.d.mts +0 -0
  382. /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.cts +0 -0
  383. /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.mts +0 -0
  384. /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.cts +0 -0
  385. /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.mts +0 -0
  386. /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.cts +0 -0
  387. /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.mts +0 -0
  388. /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.cts +0 -0
  389. /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.mts +0 -0
  390. /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.cts +0 -0
  391. /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.mts +0 -0
  392. /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.cts +0 -0
  393. /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.mts +0 -0
  394. /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.cts +0 -0
  395. /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.mts +0 -0
  396. /package/lib/types/graph/{store → engine/store}/index.d.cts +0 -0
  397. /package/lib/types/graph/{store → engine/store}/index.d.mts +0 -0
  398. /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.cts +0 -0
  399. /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.mts +0 -0
  400. /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.cts +0 -0
  401. /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.mts +0 -0
  402. /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.cts +0 -0
  403. /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.mts +0 -0
  404. /package/lib/types/graph/{validation → engine/validation}/index.d.cts +0 -0
  405. /package/lib/types/graph/{validation → engine/validation}/index.d.mts +0 -0
  406. /package/lib/types/graph/{nodes → shared/nodes}/agent.d.cts +0 -0
  407. /package/lib/types/graph/{nodes → shared/nodes}/agent.d.mts +0 -0
  408. /package/lib/types/graph/{nodes → shared/nodes}/base.d.cts +0 -0
  409. /package/lib/types/graph/{nodes → shared/nodes}/base.d.mts +0 -0
  410. /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.cts +0 -0
  411. /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.mts +0 -0
  412. /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.cts +0 -0
  413. /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.mts +0 -0
  414. /package/lib/types/graph/{nodes → shared/nodes}/index.d.cts +0 -0
  415. /package/lib/types/graph/{nodes → shared/nodes}/index.d.mts +0 -0
  416. /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.cts +0 -0
  417. /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.mts +0 -0
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphExecutionFrame = void 0;
4
+ /**
5
+ * Mutable state for a single graph execution run.
6
+ */
7
+ class GraphExecutionFrame {
8
+ constructor(runId, plan, valueStore, eventFactory) {
9
+ this.nodeResults = new Map();
10
+ this.events = [];
11
+ this.runId = runId;
12
+ this.plan = plan;
13
+ this.valueStore = valueStore;
14
+ this.eventFactory = eventFactory;
15
+ this.startedAt = new Date();
16
+ }
17
+ /** Records a node execution result. */
18
+ recordNodeResult(result) {
19
+ this.nodeResults.set(result.nodeId, result);
20
+ }
21
+ /** Appends an event to the run's event log. */
22
+ appendEvent(event) {
23
+ this.events.push(event);
24
+ }
25
+ /** Marks the run as finished. */
26
+ finish() {
27
+ this.finishedAt = new Date();
28
+ }
29
+ }
30
+ exports.GraphExecutionFrame = GraphExecutionFrame;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25GcmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9lbmdpbmUvZXhlY3V0aW9uL0dyYXBoRXhlY3V0aW9uRnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0E7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBVzlCLFlBQ0UsS0FBaUIsRUFDakIsSUFBd0IsRUFDeEIsVUFBMkIsRUFDM0IsWUFBd0M7UUFUakMsZ0JBQVcsR0FBMEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUMvRCxXQUFNLEdBQTBCLEVBQUUsQ0FBQztRQVUxQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxnQkFBZ0IsQ0FBQyxNQUFnQztRQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsV0FBVyxDQUFDLEtBQTBCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsTUFBTTtRQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL2V4ZWN1dGlvbi9HcmFwaEV4ZWN1dGlvbkZyYW1lXG4gKiBAc3VtbWFyeSBQZXItcnVuIHN0YXRlIGNvbnRhaW5lciBmb3IgZ3JhcGggZXhlY3V0aW9uLlxuICogQGRlc2NyaXB0aW9uIEhvbGRzIHRoZSBydW4gaWQsIGV4ZWN1dGlvbiBwbGFuLCB2YWx1ZSBzdG9yZSwgYWNjdW11bGF0ZWQgbm9kZSByZXN1bHRzLCBldmVudHMsIGFuZCB0aW1pbmcgZm9yIGEgc2luZ2xlIHdvcmtmbG93IGV4ZWN1dGlvbi5cbiAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblBsYW4gfSBmcm9tIFwiLi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoVmFsdWVTdG9yZSB9IGZyb20gXCIuLi9zdG9yZS9HcmFwaFZhbHVlU3RvcmVcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25FdmVudEZhY3RvcnkgfSBmcm9tIFwiLi4vZXZlbnRzL0dyYXBoRXhlY3V0aW9uRXZlbnRGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7XG4gIEdyYXBoRXhlY3V0aW9uRXZlbnQsXG4gIEdyYXBoTm9kZUV4ZWN1dGlvblJlc3VsdCxcbiAgR3JhcGhSdW5JZCxcbn0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbi8qKlxuICogTXV0YWJsZSBzdGF0ZSBmb3IgYSBzaW5nbGUgZ3JhcGggZXhlY3V0aW9uIHJ1bi5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoRXhlY3V0aW9uRnJhbWUge1xuICByZWFkb25seSBydW5JZDogR3JhcGhSdW5JZDtcbiAgcmVhZG9ubHkgcGxhbjogR3JhcGhFeGVjdXRpb25QbGFuO1xuICByZWFkb25seSB2YWx1ZVN0b3JlOiBHcmFwaFZhbHVlU3RvcmU7XG4gIHJlYWRvbmx5IGV2ZW50RmFjdG9yeTogR3JhcGhFeGVjdXRpb25FdmVudEZhY3Rvcnk7XG4gIHJlYWRvbmx5IHN0YXJ0ZWRBdDogRGF0ZTtcbiAgcmVhZG9ubHkgbm9kZVJlc3VsdHM6IE1hcDxzdHJpbmcsIEdyYXBoTm9kZUV4ZWN1dGlvblJlc3VsdD4gPSBuZXcgTWFwKCk7XG4gIHJlYWRvbmx5IGV2ZW50czogR3JhcGhFeGVjdXRpb25FdmVudFtdID0gW107XG5cbiAgZmluaXNoZWRBdD86IERhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcnVuSWQ6IEdyYXBoUnVuSWQsXG4gICAgcGxhbjogR3JhcGhFeGVjdXRpb25QbGFuLFxuICAgIHZhbHVlU3RvcmU6IEdyYXBoVmFsdWVTdG9yZSxcbiAgICBldmVudEZhY3Rvcnk6IEdyYXBoRXhlY3V0aW9uRXZlbnRGYWN0b3J5XG4gICkge1xuICAgIHRoaXMucnVuSWQgPSBydW5JZDtcbiAgICB0aGlzLnBsYW4gPSBwbGFuO1xuICAgIHRoaXMudmFsdWVTdG9yZSA9IHZhbHVlU3RvcmU7XG4gICAgdGhpcy5ldmVudEZhY3RvcnkgPSBldmVudEZhY3Rvcnk7XG4gICAgdGhpcy5zdGFydGVkQXQgPSBuZXcgRGF0ZSgpO1xuICB9XG5cbiAgLyoqIFJlY29yZHMgYSBub2RlIGV4ZWN1dGlvbiByZXN1bHQuICovXG4gIHJlY29yZE5vZGVSZXN1bHQocmVzdWx0OiBHcmFwaE5vZGVFeGVjdXRpb25SZXN1bHQpOiB2b2lkIHtcbiAgICB0aGlzLm5vZGVSZXN1bHRzLnNldChyZXN1bHQubm9kZUlkLCByZXN1bHQpO1xuICB9XG5cbiAgLyoqIEFwcGVuZHMgYW4gZXZlbnQgdG8gdGhlIHJ1bidzIGV2ZW50IGxvZy4gKi9cbiAgYXBwZW5kRXZlbnQoZXZlbnQ6IEdyYXBoRXhlY3V0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50cy5wdXNoKGV2ZW50KTtcbiAgfVxuXG4gIC8qKiBNYXJrcyB0aGUgcnVuIGFzIGZpbmlzaGVkLiAqL1xuICBmaW5pc2goKTogdm9pZCB7XG4gICAgdGhpcy5maW5pc2hlZEF0ID0gbmV3IERhdGUoKTtcbiAgfVxufVxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25GcmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkdyYXBoRXhlY3V0aW9uRnJhbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxNQUFhLG1CQUFtQjtJQUM1QixZQUFZLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVk7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsdUNBQXVDO0lBQ3ZDLGdCQUFnQixDQUFDLE1BQU07UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsK0NBQStDO0lBQy9DLFdBQVcsQ0FBQyxLQUFLO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNELGlDQUFpQztJQUNqQyxNQUFNO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDSjtBQXRCRCxrREFzQkM7QUFDRCw4OEdBQTg4RyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTXV0YWJsZSBzdGF0ZSBmb3IgYSBzaW5nbGUgZ3JhcGggZXhlY3V0aW9uIHJ1bi5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoRXhlY3V0aW9uRnJhbWUge1xuICAgIGNvbnN0cnVjdG9yKHJ1bklkLCBwbGFuLCB2YWx1ZVN0b3JlLCBldmVudEZhY3RvcnkpIHtcbiAgICAgICAgdGhpcy5ub2RlUmVzdWx0cyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5ldmVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5ydW5JZCA9IHJ1bklkO1xuICAgICAgICB0aGlzLnBsYW4gPSBwbGFuO1xuICAgICAgICB0aGlzLnZhbHVlU3RvcmUgPSB2YWx1ZVN0b3JlO1xuICAgICAgICB0aGlzLmV2ZW50RmFjdG9yeSA9IGV2ZW50RmFjdG9yeTtcbiAgICAgICAgdGhpcy5zdGFydGVkQXQgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgICAvKiogUmVjb3JkcyBhIG5vZGUgZXhlY3V0aW9uIHJlc3VsdC4gKi9cbiAgICByZWNvcmROb2RlUmVzdWx0KHJlc3VsdCkge1xuICAgICAgICB0aGlzLm5vZGVSZXN1bHRzLnNldChyZXN1bHQubm9kZUlkLCByZXN1bHQpO1xuICAgIH1cbiAgICAvKiogQXBwZW5kcyBhbiBldmVudCB0byB0aGUgcnVuJ3MgZXZlbnQgbG9nLiAqL1xuICAgIGFwcGVuZEV2ZW50KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZXZlbnRzLnB1c2goZXZlbnQpO1xuICAgIH1cbiAgICAvKiogTWFya3MgdGhlIHJ1biBhcyBmaW5pc2hlZC4gKi9cbiAgICBmaW5pc2goKSB7XG4gICAgICAgIHRoaXMuZmluaXNoZWRBdCA9IG5ldyBEYXRlKCk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUjNKaGNHaEZlR1ZqZFhScGIyNUdjbUZ0WlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1THk0dUwzTnlZeTluY21Gd2FDOWxibWRwYm1VdlpYaGxZM1YwYVc5dUwwZHlZWEJvUlhobFkzVjBhVzl1Um5KaGJXVXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCWTBFN08wZEJSVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNiVUpCUVcxQ08wbEJWemxDTEZsQlEwVXNTMEZCYVVJc1JVRkRha0lzU1VGQmQwSXNSVUZEZUVJc1ZVRkJNa0lzUlVGRE0wSXNXVUZCZDBNN1VVRlVha01zWjBKQlFWY3NSMEZCTUVNc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU12UkN4WFFVRk5MRWRCUVRCQ0xFVkJRVVVzUTBGQlF6dFJRVlV4UXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVU51UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5xUWl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExGVkJRVlVzUTBGQlF6dFJRVU0zUWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExGbEJRVmtzUTBGQlF6dFJRVU5xUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTTdTVUZET1VJc1EwRkJRenRKUVVWRUxIVkRRVUYxUXp0SlFVTjJReXhuUWtGQlowSXNRMEZCUXl4TlFVRm5RenRSUVVNdlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUXpsRExFTkJRVU03U1VGRlJDd3JRMEZCSzBNN1NVRkRMME1zVjBGQlZ5eERRVUZETEV0QlFUQkNPMUZCUTNCRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJRekZDTEVOQlFVTTdTVUZGUkN4cFEwRkJhVU03U1VGRGFrTXNUVUZCVFR0UlFVTktMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXp0SlFVTXZRaXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVCdGIyUjFiR1VnYVc1MFpXZHlZWFJwYjI1ekwyZHlZWEJvTDJWNFpXTjFkR2x2Ymk5SGNtRndhRVY0WldOMWRHbHZia1p5WVcxbFhHNGdLaUJBYzNWdGJXRnllU0JRWlhJdGNuVnVJSE4wWVhSbElHTnZiblJoYVc1bGNpQm1iM0lnWjNKaGNHZ2daWGhsWTNWMGFXOXVMbHh1SUNvZ1FHUmxjMk55YVhCMGFXOXVJRWh2YkdSeklIUm9aU0J5ZFc0Z2FXUXNJR1Y0WldOMWRHbHZiaUJ3YkdGdUxDQjJZV3gxWlNCemRHOXlaU3dnWVdOamRXMTFiR0YwWldRZ2JtOWtaU0J5WlhOMWJIUnpMQ0JsZG1WdWRITXNJR0Z1WkNCMGFXMXBibWNnWm05eUlHRWdjMmx1WjJ4bElIZHZjbXRtYkc5M0lHVjRaV04xZEdsdmJpNWNiaUFxTDF4dWFXMXdiM0owSUhSNWNHVWdleUJIY21Gd2FFVjRaV04xZEdsdmJsQnNZVzRnZlNCbWNtOXRJRndpTGk0dmNHeGhibTVwYm1jdlIzSmhjR2hGZUdWamRYUnBiMjVRYkdGdVhDSTdYRzVwYlhCdmNuUWdkSGx3WlNCN0lFZHlZWEJvVm1Gc2RXVlRkRzl5WlNCOUlHWnliMjBnWENJdUxpOXpkRzl5WlM5SGNtRndhRlpoYkhWbFUzUnZjbVZjSWp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnUjNKaGNHaEZlR1ZqZFhScGIyNUZkbVZ1ZEVaaFkzUnZjbmtnZlNCbWNtOXRJRndpTGk0dlpYWmxiblJ6TDBkeVlYQm9SWGhsWTNWMGFXOXVSWFpsYm5SR1lXTjBiM0o1WENJN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3WEc0Z0lFZHlZWEJvUlhobFkzVjBhVzl1UlhabGJuUXNYRzRnSUVkeVlYQm9UbTlrWlVWNFpXTjFkR2x2YmxKbGMzVnNkQ3hjYmlBZ1IzSmhjR2hTZFc1SlpDeGNibjBnWm5KdmJTQmNJaTR1TDNSNWNHVnpYQ0k3WEc1Y2JpOHFLbHh1SUNvZ1RYVjBZV0pzWlNCemRHRjBaU0JtYjNJZ1lTQnphVzVuYkdVZ1ozSmhjR2dnWlhobFkzVjBhVzl1SUhKMWJpNWNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRWR5WVhCb1JYaGxZM1YwYVc5dVJuSmhiV1VnZTF4dUlDQnlaV0ZrYjI1c2VTQnlkVzVKWkRvZ1IzSmhjR2hTZFc1SlpEdGNiaUFnY21WaFpHOXViSGtnY0d4aGJqb2dSM0poY0doRmVHVmpkWFJwYjI1UWJHRnVPMXh1SUNCeVpXRmtiMjVzZVNCMllXeDFaVk4wYjNKbE9pQkhjbUZ3YUZaaGJIVmxVM1J2Y21VN1hHNGdJSEpsWVdSdmJteDVJR1YyWlc1MFJtRmpkRzl5ZVRvZ1IzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRFWmhZM1J2Y25rN1hHNGdJSEpsWVdSdmJteDVJSE4wWVhKMFpXUkJkRG9nUkdGMFpUdGNiaUFnY21WaFpHOXViSGtnYm05a1pWSmxjM1ZzZEhNNklFMWhjRHh6ZEhKcGJtY3NJRWR5WVhCb1RtOWtaVVY0WldOMWRHbHZibEpsYzNWc2RENGdQU0J1WlhjZ1RXRndLQ2s3WEc0Z0lISmxZV1J2Ym14NUlHVjJaVzUwY3pvZ1IzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRGdGRJRDBnVzEwN1hHNWNiaUFnWm1sdWFYTm9aV1JCZEQ4NklFUmhkR1U3WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvWEc0Z0lDQWdjblZ1U1dRNklFZHlZWEJvVW5WdVNXUXNYRzRnSUNBZ2NHeGhiam9nUjNKaGNHaEZlR1ZqZFhScGIyNVFiR0Z1TEZ4dUlDQWdJSFpoYkhWbFUzUnZjbVU2SUVkeVlYQm9WbUZzZFdWVGRHOXlaU3hjYmlBZ0lDQmxkbVZ1ZEVaaFkzUnZjbms2SUVkeVlYQm9SWGhsWTNWMGFXOXVSWFpsYm5SR1lXTjBiM0o1WEc0Z0lDa2dlMXh1SUNBZ0lIUm9hWE11Y25WdVNXUWdQU0J5ZFc1SlpEdGNiaUFnSUNCMGFHbHpMbkJzWVc0Z1BTQndiR0Z1TzF4dUlDQWdJSFJvYVhNdWRtRnNkV1ZUZEc5eVpTQTlJSFpoYkhWbFUzUnZjbVU3WEc0Z0lDQWdkR2hwY3k1bGRtVnVkRVpoWTNSdmNua2dQU0JsZG1WdWRFWmhZM1J2Y25rN1hHNGdJQ0FnZEdocGN5NXpkR0Z5ZEdWa1FYUWdQU0J1WlhjZ1JHRjBaU2dwTzF4dUlDQjlYRzVjYmlBZ0x5b3FJRkpsWTI5eVpITWdZU0J1YjJSbElHVjRaV04xZEdsdmJpQnlaWE4xYkhRdUlDb3ZYRzRnSUhKbFkyOXlaRTV2WkdWU1pYTjFiSFFvY21WemRXeDBPaUJIY21Gd2FFNXZaR1ZGZUdWamRYUnBiMjVTWlhOMWJIUXBPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbTV2WkdWU1pYTjFiSFJ6TG5ObGRDaHlaWE4xYkhRdWJtOWtaVWxrTENCeVpYTjFiSFFwTzF4dUlDQjlYRzVjYmlBZ0x5b3FJRUZ3Y0dWdVpITWdZVzRnWlhabGJuUWdkRzhnZEdobElISjFiaWR6SUdWMlpXNTBJR3h2Wnk0Z0tpOWNiaUFnWVhCd1pXNWtSWFpsYm5Rb1pYWmxiblE2SUVkeVlYQm9SWGhsWTNWMGFXOXVSWFpsYm5RcE9pQjJiMmxrSUh0Y2JpQWdJQ0IwYUdsekxtVjJaVzUwY3k1d2RYTm9LR1YyWlc1MEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCTllYSnJjeUIwYUdVZ2NuVnVJR0Z6SUdacGJtbHphR1ZrTGlBcUwxeHVJQ0JtYVc1cGMyZ29LVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVtYVc1cGMyaGxaRUYwSUQwZ2JtVjNJRVJoZEdVb0tUdGNiaUFnZlZ4dWZWeHVJbDE5Il19
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildGraphExecutionResult = buildGraphExecutionResult;
4
+ /**
5
+ * Builds a {@link GraphExecutionResult} from a completed frame.
6
+ */
7
+ function buildGraphExecutionResult(frame, workflow, inputs, status, metadata) {
8
+ const outputs = frame.valueStore.getWorkflowValues();
9
+ const nodeResults = {};
10
+ for (const [id, result] of frame.nodeResults) {
11
+ nodeResults[id] = result;
12
+ }
13
+ const events = [...frame.events];
14
+ const runId = frame.runId;
15
+ return {
16
+ runId,
17
+ workflowId: workflow.name,
18
+ status,
19
+ workflow,
20
+ inputs: { ...inputs },
21
+ outputs,
22
+ nodeResults,
23
+ events,
24
+ startedAt: frame.startedAt,
25
+ finishedAt: frame.finishedAt,
26
+ metadata,
27
+ };
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25SZXN1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL2V4ZWN1dGlvbi9HcmFwaEV4ZWN1dGlvblJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQTs7R0FFRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsS0FBMEIsRUFDMUIsUUFBaUMsRUFDakMsTUFBNEIsRUFDNUIsTUFBNEIsRUFDNUIsUUFBa0M7SUFFbEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3JELE1BQU0sV0FBVyxHQUE2QyxFQUFFLENBQUM7SUFDakUsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBMEIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxNQUFNLEtBQUssR0FBZSxLQUFLLENBQUMsS0FBSyxDQUFDO0lBRXRDLE9BQU87UUFDTCxLQUFLO1FBQ0wsVUFBVSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1FBQ3pCLE1BQU07UUFDTixRQUFRO1FBQ1IsTUFBTSxFQUFFLEVBQUUsR0FBRyxNQUFNLEVBQUU7UUFDckIsT0FBTztRQUNQLFdBQVc7UUFDWCxNQUFNO1FBQ04sU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzFCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtRQUM1QixRQUFRO0tBQ1QsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL2V4ZWN1dGlvbi9HcmFwaEV4ZWN1dGlvblJlc3VsdFxuICogQHN1bW1hcnkgSGVscGVyIGZvciBidWlsZGluZyBHcmFwaEV4ZWN1dGlvblJlc3VsdCBvYmplY3RzLlxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGEgYnVpbGRlciBmdW5jdGlvbiB0aGF0IGFzc2VtYmxlcyBhIHJlc3VsdCBmcm9tIGEgZnJhbWUuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25GcmFtZSB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uRnJhbWVcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25FdmVudCwgR3JhcGhFeGVjdXRpb25SZXN1bHQsIEdyYXBoRXhlY3V0aW9uVmFsdWVzLCBHcmFwaE5vZGVFeGVjdXRpb25SZXN1bHQsIEdyYXBoUnVuSWQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25TdGF0dXMgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2NvbnN0YW50c1wiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbiB9IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9ycy9ncmFwaFwiO1xuXG4vKipcbiAqIEJ1aWxkcyBhIHtAbGluayBHcmFwaEV4ZWN1dGlvblJlc3VsdH0gZnJvbSBhIGNvbXBsZXRlZCBmcmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkR3JhcGhFeGVjdXRpb25SZXN1bHQoXG4gIGZyYW1lOiBHcmFwaEV4ZWN1dGlvbkZyYW1lLFxuICB3b3JrZmxvdzogR3JhcGhXb3JrZmxvd0RlZmluaXRpb24sXG4gIGlucHV0czogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gIHN0YXR1czogR3JhcGhFeGVjdXRpb25TdGF0dXMsXG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IEdyYXBoRXhlY3V0aW9uUmVzdWx0IHtcbiAgY29uc3Qgb3V0cHV0cyA9IGZyYW1lLnZhbHVlU3RvcmUuZ2V0V29ya2Zsb3dWYWx1ZXMoKTtcbiAgY29uc3Qgbm9kZVJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIEdyYXBoTm9kZUV4ZWN1dGlvblJlc3VsdD4gPSB7fTtcbiAgZm9yIChjb25zdCBbaWQsIHJlc3VsdF0gb2YgZnJhbWUubm9kZVJlc3VsdHMpIHtcbiAgICBub2RlUmVzdWx0c1tpZF0gPSByZXN1bHQ7XG4gIH1cbiAgY29uc3QgZXZlbnRzOiBHcmFwaEV4ZWN1dGlvbkV2ZW50W10gPSBbLi4uZnJhbWUuZXZlbnRzXTtcbiAgY29uc3QgcnVuSWQ6IEdyYXBoUnVuSWQgPSBmcmFtZS5ydW5JZDtcblxuICByZXR1cm4ge1xuICAgIHJ1bklkLFxuICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93Lm5hbWUsXG4gICAgc3RhdHVzLFxuICAgIHdvcmtmbG93LFxuICAgIGlucHV0czogeyAuLi5pbnB1dHMgfSxcbiAgICBvdXRwdXRzLFxuICAgIG5vZGVSZXN1bHRzLFxuICAgIGV2ZW50cyxcbiAgICBzdGFydGVkQXQ6IGZyYW1lLnN0YXJ0ZWRBdCxcbiAgICBmaW5pc2hlZEF0OiBmcmFtZS5maW5pc2hlZEF0LFxuICAgIG1ldGFkYXRhLFxuICB9O1xufVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25SZXN1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJHcmFwaEV4ZWN1dGlvblJlc3VsdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLDhEQXFCQztBQXhCRDs7R0FFRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRO0lBQy9FLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNyRCxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDdkIsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDMUIsT0FBTztRQUNILEtBQUs7UUFDTCxVQUFVLEVBQUUsUUFBUSxDQUFDLElBQUk7UUFDekIsTUFBTTtRQUNOLFFBQVE7UUFDUixNQUFNLEVBQUUsRUFBRSxHQUFHLE1BQU0sRUFBRTtRQUNyQixPQUFPO1FBQ1AsV0FBVztRQUNYLE1BQU07UUFDTixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1FBQzVCLFFBQVE7S0FDWCxDQUFDO0FBQ04sQ0FBQztBQUNELDBoR0FBMGhHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCdWlsZHMgYSB7QGxpbmsgR3JhcGhFeGVjdXRpb25SZXN1bHR9IGZyb20gYSBjb21wbGV0ZWQgZnJhbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEdyYXBoRXhlY3V0aW9uUmVzdWx0KGZyYW1lLCB3b3JrZmxvdywgaW5wdXRzLCBzdGF0dXMsIG1ldGFkYXRhKSB7XG4gICAgY29uc3Qgb3V0cHV0cyA9IGZyYW1lLnZhbHVlU3RvcmUuZ2V0V29ya2Zsb3dWYWx1ZXMoKTtcbiAgICBjb25zdCBub2RlUmVzdWx0cyA9IHt9O1xuICAgIGZvciAoY29uc3QgW2lkLCByZXN1bHRdIG9mIGZyYW1lLm5vZGVSZXN1bHRzKSB7XG4gICAgICAgIG5vZGVSZXN1bHRzW2lkXSA9IHJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgZXZlbnRzID0gWy4uLmZyYW1lLmV2ZW50c107XG4gICAgY29uc3QgcnVuSWQgPSBmcmFtZS5ydW5JZDtcbiAgICByZXR1cm4ge1xuICAgICAgICBydW5JZCxcbiAgICAgICAgd29ya2Zsb3dJZDogd29ya2Zsb3cubmFtZSxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICB3b3JrZmxvdyxcbiAgICAgICAgaW5wdXRzOiB7IC4uLmlucHV0cyB9LFxuICAgICAgICBvdXRwdXRzLFxuICAgICAgICBub2RlUmVzdWx0cyxcbiAgICAgICAgZXZlbnRzLFxuICAgICAgICBzdGFydGVkQXQ6IGZyYW1lLnN0YXJ0ZWRBdCxcbiAgICAgICAgZmluaXNoZWRBdDogZnJhbWUuZmluaXNoZWRBdCxcbiAgICAgICAgbWV0YWRhdGEsXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVIzSmhjR2hGZUdWamRYUnBiMjVTWlhOMWJIUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk4dUxpOHVMaTl6Y21NdlozSmhjR2d2Wlc1bmFXNWxMMlY0WldOMWRHbHZiaTlIY21Gd2FFVjRaV04xZEdsdmJsSmxjM1ZzZEM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRlZRVHM3UjBGRlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4NVFrRkJlVUlzUTBGRGRrTXNTMEZCTUVJc1JVRkRNVUlzVVVGQmFVTXNSVUZEYWtNc1RVRkJORUlzUlVGRE5VSXNUVUZCTkVJc1JVRkROVUlzVVVGQmEwTTdTVUZGYkVNc1RVRkJUU3hQUVVGUExFZEJRVWNzUzBGQlN5eERRVUZETEZWQlFWVXNRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeERRVUZETzBsQlEzSkVMRTFCUVUwc1YwRkJWeXhIUVVFMlF5eEZRVUZGTEVOQlFVTTdTVUZEYWtVc1MwRkJTeXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEUxQlFVMHNRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dFJRVU0zUXl4WFFVRlhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETzBsQlF6TkNMRU5CUVVNN1NVRkRSQ3hOUVVGTkxFMUJRVTBzUjBGQk1FSXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU40UkN4TlFVRk5MRXRCUVVzc1IwRkJaU3hMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETzBsQlJYUkRMRTlCUVU4N1VVRkRUQ3hMUVVGTE8xRkJRMHdzVlVGQlZTeEZRVUZGTEZGQlFWRXNRMEZCUXl4SlFVRkpPMUZCUTNwQ0xFMUJRVTA3VVVGRFRpeFJRVUZSTzFGQlExSXNUVUZCVFN4RlFVRkZMRVZCUVVVc1IwRkJSeXhOUVVGTkxFVkJRVVU3VVVGRGNrSXNUMEZCVHp0UlFVTlFMRmRCUVZjN1VVRkRXQ3hOUVVGTk8xRkJRMDRzVTBGQlV5eEZRVUZGTEV0QlFVc3NRMEZCUXl4VFFVRlRPMUZCUXpGQ0xGVkJRVlVzUlVGQlJTeExRVUZMTEVOQlFVTXNWVUZCVlR0UlFVTTFRaXhSUVVGUk8wdEJRMVFzUTBGQlF6dEJRVU5LTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRUJ0YjJSMWJHVWdhVzUwWldkeVlYUnBiMjV6TDJkeVlYQm9MMlY0WldOMWRHbHZiaTlIY21Gd2FFVjRaV04xZEdsdmJsSmxjM1ZzZEZ4dUlDb2dRSE4xYlcxaGNua2dTR1ZzY0dWeUlHWnZjaUJpZFdsc1pHbHVaeUJIY21Gd2FFVjRaV04xZEdsdmJsSmxjM1ZzZENCdlltcGxZM1J6TGx4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUZCeWIzWnBaR1Z6SUdFZ1luVnBiR1JsY2lCbWRXNWpkR2x2YmlCMGFHRjBJR0Z6YzJWdFlteGxjeUJoSUhKbGMzVnNkQ0JtY205dElHRWdabkpoYldVdVhHNGdLaTljYm1sdGNHOXlkQ0IwZVhCbElIc2dSM0poY0doRmVHVmpkWFJwYjI1R2NtRnRaU0I5SUdaeWIyMGdYQ0l1TDBkeVlYQm9SWGhsWTNWMGFXOXVSbkpoYldWY0lqdGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1IzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRDd2dSM0poY0doRmVHVmpkWFJwYjI1U1pYTjFiSFFzSUVkeVlYQm9SWGhsWTNWMGFXOXVWbUZzZFdWekxDQkhjbUZ3YUU1dlpHVkZlR1ZqZFhScGIyNVNaWE4xYkhRc0lFZHlZWEJvVW5WdVNXUWdmU0JtY205dElGd2lMaTR2ZEhsd1pYTmNJanRjYm1sdGNHOXlkQ0IwZVhCbElIc2dSM0poY0doRmVHVmpkWFJwYjI1VGRHRjBkWE1nZlNCbWNtOXRJRndpTGk0dkxpNHZjMmhoY21Wa0wyTnZibk4wWVc1MGMxd2lPMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QkhjbUZ3YUZkdmNtdG1iRzkzUkdWbWFXNXBkR2x2YmlCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdmRXa3RaR1ZqYjNKaGRHOXljeTluY21Gd2FGd2lPMXh1WEc0dktpcGNiaUFxSUVKMWFXeGtjeUJoSUh0QWJHbHVheUJIY21Gd2FFVjRaV04xZEdsdmJsSmxjM1ZzZEgwZ1puSnZiU0JoSUdOdmJYQnNaWFJsWkNCbWNtRnRaUzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHSjFhV3hrUjNKaGNHaEZlR1ZqZFhScGIyNVNaWE4xYkhRb1hHNGdJR1p5WVcxbE9pQkhjbUZ3YUVWNFpXTjFkR2x2YmtaeVlXMWxMRnh1SUNCM2IzSnJabXh2ZHpvZ1IzSmhjR2hYYjNKclpteHZkMFJsWm1sdWFYUnBiMjRzWEc0Z0lHbHVjSFYwY3pvZ1IzSmhjR2hGZUdWamRYUnBiMjVXWVd4MVpYTXNYRzRnSUhOMFlYUjFjem9nUjNKaGNHaEZlR1ZqZFhScGIyNVRkR0YwZFhNc1hHNGdJRzFsZEdGa1lYUmhQem9nVW1WamIzSmtQSE4wY21sdVp5d2dkVzVyYm05M2JqNWNiaWs2SUVkeVlYQm9SWGhsWTNWMGFXOXVVbVZ6ZFd4MElIdGNiaUFnWTI5dWMzUWdiM1YwY0hWMGN5QTlJR1p5WVcxbExuWmhiSFZsVTNSdmNtVXVaMlYwVjI5eWEyWnNiM2RXWVd4MVpYTW9LVHRjYmlBZ1kyOXVjM1FnYm05a1pWSmxjM1ZzZEhNNklGSmxZMjl5WkR4emRISnBibWNzSUVkeVlYQm9UbTlrWlVWNFpXTjFkR2x2YmxKbGMzVnNkRDRnUFNCN2ZUdGNiaUFnWm05eUlDaGpiMjV6ZENCYmFXUXNJSEpsYzNWc2RGMGdiMllnWm5KaGJXVXVibTlrWlZKbGMzVnNkSE1wSUh0Y2JpQWdJQ0J1YjJSbFVtVnpkV3gwYzF0cFpGMGdQU0J5WlhOMWJIUTdYRzRnSUgxY2JpQWdZMjl1YzNRZ1pYWmxiblJ6T2lCSGNtRndhRVY0WldOMWRHbHZia1YyWlc1MFcxMGdQU0JiTGk0dVpuSmhiV1V1WlhabGJuUnpYVHRjYmlBZ1kyOXVjM1FnY25WdVNXUTZJRWR5WVhCb1VuVnVTV1FnUFNCbWNtRnRaUzV5ZFc1SlpEdGNibHh1SUNCeVpYUjFjbTRnZTF4dUlDQWdJSEoxYmtsa0xGeHVJQ0FnSUhkdmNtdG1iRzkzU1dRNklIZHZjbXRtYkc5M0xtNWhiV1VzWEc0Z0lDQWdjM1JoZEhWekxGeHVJQ0FnSUhkdmNtdG1iRzkzTEZ4dUlDQWdJR2x1Y0hWMGN6b2dleUF1TGk1cGJuQjFkSE1nZlN4Y2JpQWdJQ0J2ZFhSd2RYUnpMRnh1SUNBZ0lHNXZaR1ZTWlhOMWJIUnpMRnh1SUNBZ0lHVjJaVzUwY3l4Y2JpQWdJQ0J6ZEdGeWRHVmtRWFE2SUdaeVlXMWxMbk4wWVhKMFpXUkJkQ3hjYmlBZ0lDQm1hVzVwYzJobFpFRjBPaUJtY21GdFpTNW1hVzVwYzJobFpFRjBMRnh1SUNBZ0lHMWxkR0ZrWVhSaExGeHVJQ0I5TzF4dWZWeHVJbDE5Il19
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhOb2RlRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL2V4ZWN1dGlvbi9HcmFwaE5vZGVFeGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9leGVjdXRpb24vR3JhcGhOb2RlRXhlY3V0b3JcbiAqIEBzdW1tYXJ5IEludGVyZmFjZSBpbXBsZW1lbnRlZCBieSBldmVyeSBncmFwaCBub2RlIGV4ZWN1dG9yLlxuICogQGRlc2NyaXB0aW9uIEEgbm9kZSBleGVjdXRvciByZWNlaXZlcyB0aGUgbm9kZSdzIHJlc29sdmVkIGlucHV0IHZhbHVlcyBhbmQgYSB7QGxpbmsgR3JhcGhFeGVjdXRpb25Db250ZXh0fSwgYW5kIHJldHVybnMgdGhlIG5vZGUncyBvdXRwdXQgdmFsdWVzLlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblZhbHVlcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG4vKipcbiAqIEV4ZWN1dG9yIGZvciBhIHNwZWNpZmljIGdyYXBoIG5vZGUga2luZC5cbiAqXG4gKiBJbXBsZW1lbnRhdGlvbnMgYXJlIHJlZ2lzdGVyZWQgaW4gdGhlIHtAbGluayBHcmFwaE5vZGVFeGVjdXRvclJlZ2lzdHJ5fVxuICogYW5kIHJlc29sdmVkIGJ5IHRoZSBlbmdpbmUgdXNpbmcgdGhlIG5vZGUncyBga2luZGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhOb2RlRXhlY3V0b3I8XG4gIElucHV0IGV4dGVuZHMgR3JhcGhFeGVjdXRpb25WYWx1ZXMgPSBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgT3V0cHV0IGV4dGVuZHMgR3JhcGhFeGVjdXRpb25WYWx1ZXMgPSBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbj4ge1xuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIG5vZGUgbG9naWMuXG4gICAqXG4gICAqIEBwYXJhbSBpbnB1dCAtIFJlc29sdmVkIGlucHV0IHZhbHVlcyBrZXllZCBieSBwb3J0IG5hbWUuXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gRGVjYWYgY29udGV4dCBmb3IgZW1pdHRpbmcgcHJvZ3Jlc3MgYW5kIGV2ZW50cy5cbiAgICogQHJldHVybnMgVGhlIG5vZGUncyBvdXRwdXQgdmFsdWVzIGtleWVkIGJ5IHBvcnQgbmFtZS5cbiAgICovXG4gIGV4ZWN1dGUoXG4gICAgaW5wdXQ6IElucHV0LFxuICAgIGNvbnRleHQ6IEdyYXBoRXhlY3V0aW9uQ29udGV4dFxuICApOiBQcm9taXNlPE91dHB1dD4gfCBPdXRwdXQ7XG59XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhOb2RlRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJHcmFwaE5vZGVFeGVjdXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDh2REFBOHZEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUjNKaGNHaE9iMlJsUlhobFkzVjBiM0l1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOHVMaTh1TGk5emNtTXZaM0poY0dndlpXNW5hVzVsTDJWNFpXTjFkR2x2Ymk5SGNtRndhRTV2WkdWRmVHVmpkWFJ2Y2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkFiVzlrZFd4bElHbHVkR1ZuY21GMGFXOXVjeTluY21Gd2FDOWxlR1ZqZFhScGIyNHZSM0poY0doT2IyUmxSWGhsWTNWMGIzSmNiaUFxSUVCemRXMXRZWEo1SUVsdWRHVnlabUZqWlNCcGJYQnNaVzFsYm5SbFpDQmllU0JsZG1WeWVTQm5jbUZ3YUNCdWIyUmxJR1Y0WldOMWRHOXlMbHh1SUNvZ1FHUmxjMk55YVhCMGFXOXVJRUVnYm05a1pTQmxlR1ZqZFhSdmNpQnlaV05sYVhabGN5QjBhR1VnYm05a1pTZHpJSEpsYzI5c2RtVmtJR2x1Y0hWMElIWmhiSFZsY3lCaGJtUWdZU0I3UUd4cGJtc2dSM0poY0doRmVHVmpkWFJwYjI1RGIyNTBaWGgwZlN3Z1lXNWtJSEpsZEhWeWJuTWdkR2hsSUc1dlpHVW5jeUJ2ZFhSd2RYUWdkbUZzZFdWekxseHVJQ292WEc1cGJYQnZjblFnZEhsd1pTQjdJRWR5WVhCb1JYaGxZM1YwYVc5dVEyOXVkR1Y0ZENCOUlHWnliMjBnWENJdUwwZHlZWEJvUlhobFkzVjBhVzl1UTI5dWRHVjRkRndpTzF4dWFXMXdiM0owSUhSNWNHVWdleUJIY21Gd2FFVjRaV04xZEdsdmJsWmhiSFZsY3lCOUlHWnliMjBnWENJdUxpOTBlWEJsYzF3aU8xeHVYRzR2S2lwY2JpQXFJRVY0WldOMWRHOXlJR1p2Y2lCaElITndaV05wWm1saklHZHlZWEJvSUc1dlpHVWdhMmx1WkM1Y2JpQXFYRzRnS2lCSmJYQnNaVzFsYm5SaGRHbHZibk1nWVhKbElISmxaMmx6ZEdWeVpXUWdhVzRnZEdobElIdEFiR2x1YXlCSGNtRndhRTV2WkdWRmVHVmpkWFJ2Y2xKbFoybHpkSEo1ZlZ4dUlDb2dZVzVrSUhKbGMyOXNkbVZrSUdKNUlIUm9aU0JsYm1kcGJtVWdkWE5wYm1jZ2RHaGxJRzV2WkdVbmN5QmdhMmx1WkdBdVhHNGdLaTljYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnUjNKaGNHaE9iMlJsUlhobFkzVjBiM0k4WEc0Z0lFbHVjSFYwSUdWNGRHVnVaSE1nUjNKaGNHaEZlR1ZqZFhScGIyNVdZV3gxWlhNZ1BTQkhjbUZ3YUVWNFpXTjFkR2x2YmxaaGJIVmxjeXhjYmlBZ1QzVjBjSFYwSUdWNGRHVnVaSE1nUjNKaGNHaEZlR1ZqZFhScGIyNVdZV3gxWlhNZ1BTQkhjbUZ3YUVWNFpXTjFkR2x2YmxaaGJIVmxjeXhjYmo0Z2UxeHVJQ0F2S2lwY2JpQWdJQ29nUlhobFkzVjBaWE1nZEdobElHNXZaR1VnYkc5bmFXTXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0JwYm5CMWRDQXRJRkpsYzI5c2RtVmtJR2x1Y0hWMElIWmhiSFZsY3lCclpYbGxaQ0JpZVNCd2IzSjBJRzVoYldVdVhHNGdJQ0FxSUVCd1lYSmhiU0JqYjI1MFpYaDBJQzBnUkdWallXWWdZMjl1ZEdWNGRDQm1iM0lnWlcxcGRIUnBibWNnY0hKdlozSmxjM01nWVc1a0lHVjJaVzUwY3k1Y2JpQWdJQ29nUUhKbGRIVnlibk1nVkdobElHNXZaR1VuY3lCdmRYUndkWFFnZG1Gc2RXVnpJR3RsZVdWa0lHSjVJSEJ2Y25RZ2JtRnRaUzVjYmlBZ0lDb3ZYRzRnSUdWNFpXTjFkR1VvWEc0Z0lDQWdhVzV3ZFhRNklFbHVjSFYwTEZ4dUlDQWdJR052Ym5SbGVIUTZJRWR5WVhCb1JYaGxZM1YwYVc5dVEyOXVkR1Y0ZEZ4dUlDQXBPaUJRY205dGFYTmxQRTkxZEhCMWRENGdmQ0JQZFhSd2RYUTdYRzU5WEc0aVhYMD0iXX0=
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwitchGraphNodeExecutor = void 0;
4
+ const GraphExecutionError_js_1 = require("./../errors/GraphExecutionError.cjs");
5
+ const ConditionExpressionEvaluator_js_1 = require("./../loops/ConditionExpressionEvaluator.cjs");
6
+ /**
7
+ * Reads the Switch metadata from the node definition's graph metadata.
8
+ */
9
+ function readSwitchMetadata(context) {
10
+ const meta = context.node.graph?.metadata;
11
+ if (!meta)
12
+ return { cases: [], defaultPort: "default" };
13
+ const switchMeta = meta["switch"];
14
+ if (!switchMeta || !Array.isArray(switchMeta.cases)) {
15
+ return { cases: [], defaultPort: "default" };
16
+ }
17
+ return {
18
+ cases: switchMeta.cases,
19
+ defaultPort: switchMeta.defaultPort ?? "default",
20
+ };
21
+ }
22
+ /**
23
+ * Detects whether a condition is a `CodeCondition` (has `type: "code"`).
24
+ */
25
+ function isCodeCondition(cond) {
26
+ return (typeof cond === "object" &&
27
+ cond !== null &&
28
+ "type" in cond &&
29
+ cond.type === "code");
30
+ }
31
+ /**
32
+ * Detects whether a condition is a `ConditionExpression` (has `op` field).
33
+ */
34
+ function isConditionExpression(cond) {
35
+ return (typeof cond === "object" &&
36
+ cond !== null &&
37
+ "op" in cond &&
38
+ typeof cond.op === "string");
39
+ }
40
+ /**
41
+ * Executor for `core.flow.switch` nodes.
42
+ *
43
+ * Evaluates each case's condition in order and routes the input to the
44
+ * first matching case's output port. When no case matches, routes to the
45
+ * `default` output port.
46
+ *
47
+ * Condition evaluation:
48
+ * - `ConditionExpression` — evaluated via {@link ConditionExpressionEvaluator}.
49
+ * - `CodeCondition` — evaluated via the pluggable {@link CodeSandboxEvaluator}
50
+ * from the engine's config. Throws `GRAPH_CODE_SANDBOX_NOT_CONFIGURED`
51
+ * when no evaluator is registered.
52
+ */
53
+ class SwitchGraphNodeExecutor {
54
+ constructor(engine) {
55
+ this.engine = engine;
56
+ this.expressionEvaluator = new ConditionExpressionEvaluator_js_1.ConditionExpressionEvaluator();
57
+ }
58
+ async execute(input, context) {
59
+ const meta = readSwitchMetadata(context);
60
+ const inputValue = input["value"] ?? input;
61
+ for (const switchCase of meta.cases) {
62
+ const matches = await this.evaluateCondition(switchCase.condition, inputValue, input, context);
63
+ if (matches) {
64
+ return { [switchCase.outputPort]: inputValue };
65
+ }
66
+ }
67
+ const defaultPort = meta.defaultPort ?? "default";
68
+ return { [defaultPort]: inputValue };
69
+ }
70
+ /**
71
+ * Evaluates a single switch case condition.
72
+ */
73
+ async evaluateCondition(condition, inputValue, fullInput, context) {
74
+ if (isCodeCondition(condition)) {
75
+ return this.evaluateCodeCondition(condition, fullInput, context);
76
+ }
77
+ if (isConditionExpression(condition)) {
78
+ return this.expressionEvaluator.evaluate(condition, inputValue);
79
+ }
80
+ throw new GraphExecutionError_js_1.GraphExecutionError("Unknown switch case condition type — must be ConditionExpression (op) or CodeCondition (type: 'code')", "GRAPH_UNKNOWN_SWITCH_CONDITION", { condition });
81
+ }
82
+ /**
83
+ * Evaluates a code condition via the pluggable sandbox evaluator.
84
+ */
85
+ async evaluateCodeCondition(condition, input, context) {
86
+ const evaluator = this.engine?.codeSandboxEvaluator;
87
+ if (!evaluator) {
88
+ throw new GraphExecutionError_js_1.GraphExecutionError("Code conditions require a CodeSandboxEvaluator to be registered in GraphExecutionEngineConfig.codeSandboxEvaluator", "GRAPH_CODE_SANDBOX_NOT_CONFIGURED", { code: condition.code });
89
+ }
90
+ await context.log(`Evaluating code condition`, {
91
+ language: condition.language ?? "javascript",
92
+ });
93
+ const result = await evaluator.evaluate({
94
+ code: condition.code,
95
+ language: condition.language,
96
+ input,
97
+ });
98
+ return !!result;
99
+ }
100
+ }
101
+ exports.SwitchGraphNodeExecutor = SwitchGraphNodeExecutor;
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL2V4ZWN1dGlvbi9Td2l0Y2hHcmFwaE5vZGVFeGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQkEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDJDQUFzQztBQUNwRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsbURBQThDO0FBR3JGOztHQUVHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FDekIsT0FBOEI7SUFFOUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFFcEIsQ0FBQztJQUNkLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ3hELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQW1DLENBQUM7SUFDcEUsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFDRCxPQUFPO1FBQ0wsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO1FBQ3ZCLFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVyxJQUFJLFNBQVM7S0FDakQsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLElBQXlCO0lBQ2hELE9BQU8sQ0FDTCxPQUFPLElBQUksS0FBSyxRQUFRO1FBQ3hCLElBQUksS0FBSyxJQUFJO1FBQ2IsTUFBTSxJQUFJLElBQUk7UUFDZCxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FDckIsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FF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XG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9leGVjdXRpb24vU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3JcbiAqIEBzdW1tYXJ5IEV4ZWN1dG9yIGZvciB0aGUgU3dpdGNoIGZsb3ctY29udHJvbCBub2RlIChERUNBRi0zMiDCpzIyLjIuMikuXG4gKiBAZGVzY3JpcHRpb24gRXZhbHVhdGVzIGVhY2ggY2FzZSdzIGNvbmRpdGlvbiBhZ2FpbnN0IHRoZSBub2RlJ3MgaW5wdXQgYW5kXG4gKiByb3V0ZXMgdGhlIGlucHV0IHRvIHRoZSBmaXJzdCBtYXRjaGluZyBjYXNlJ3Mgb3V0cHV0IHBvcnQuIEZhbGxzIGJhY2sgdG9cbiAqIHRoZSBgZGVmYXVsdGAgb3V0cHV0IHdoZW4gbm8gY2FzZSBtYXRjaGVzLiBTdXBwb3J0cyBib3RoXG4gKiB7QGxpbmsgQ29uZGl0aW9uRXhwcmVzc2lvbn0gKGdyYXBoaWNhbCBtb2RlKSBhbmQge0BsaW5rIENvZGVDb25kaXRpb259XG4gKiAoY29kZSBtb2RlIHZpYSB0aGUgcGx1Z2dhYmxlIHtAbGluayBDb2RlU2FuZGJveEV2YWx1YXRvcn0pLlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoTm9kZUV4ZWN1dG9yIH0gZnJvbSBcIi4vR3JhcGhOb2RlRXhlY3V0b3JcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25Db250ZXh0IH0gZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uVmFsdWVzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFN3aXRjaENhc2VDb25kaXRpb24sXG4gIFN3aXRjaE5vZGVNZXRhZGF0YSxcbiAgQ29uZGl0aW9uRXhwcmVzc2lvbixcbiAgQ29kZUNvbmRpdGlvbixcbn0gZnJvbSBcIi4uLy4uL3NoYXJlZC90eXBlc1wiO1xuaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25FcnJvciB9IGZyb20gXCIuLi9lcnJvcnMvR3JhcGhFeGVjdXRpb25FcnJvclwiO1xuaW1wb3J0IHsgQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvciB9IGZyb20gXCIuLi9sb29wcy9Db25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yXCI7XG5pbXBvcnQgdHlwZSB7IENvZGVTYW5kYm94RXZhbHVhdG9yIH0gZnJvbSBcIi4vQ29kZVNhbmRib3hFdmFsdWF0b3JcIjtcblxuLyoqXG4gKiBSZWFkcyB0aGUgU3dpdGNoIG1ldGFkYXRhIGZyb20gdGhlIG5vZGUgZGVmaW5pdGlvbidzIGdyYXBoIG1ldGFkYXRhLlxuICovXG5mdW5jdGlvbiByZWFkU3dpdGNoTWV0YWRhdGEoXG4gIGNvbnRleHQ6IEdyYXBoRXhlY3V0aW9uQ29udGV4dFxuKTogU3dpdGNoTm9kZU1ldGFkYXRhIHtcbiAgY29uc3QgbWV0YSA9IGNvbnRleHQubm9kZS5ncmFwaD8ubWV0YWRhdGEgYXNcbiAgICB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgfCB1bmRlZmluZWQ7XG4gIGlmICghbWV0YSkgcmV0dXJuIHsgY2FzZXM6IFtdLCBkZWZhdWx0UG9ydDogXCJkZWZhdWx0XCIgfTtcbiAgY29uc3Qgc3dpdGNoTWV0YSA9IG1ldGFbXCJzd2l0Y2hcIl0gYXMgU3dpdGNoTm9kZU1ldGFkYXRhIHwgdW5kZWZpbmVkO1xuICBpZiAoIXN3aXRjaE1ldGEgfHwgIUFycmF5LmlzQXJyYXkoc3dpdGNoTWV0YS5jYXNlcykpIHtcbiAgICByZXR1cm4geyBjYXNlczogW10sIGRlZmF1bHRQb3J0OiBcImRlZmF1bHRcIiB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgY2FzZXM6IHN3aXRjaE1ldGEuY2FzZXMsXG4gICAgZGVmYXVsdFBvcnQ6IHN3aXRjaE1ldGEuZGVmYXVsdFBvcnQgPz8gXCJkZWZhdWx0XCIsXG4gIH07XG59XG5cbi8qKlxuICogRGV0ZWN0cyB3aGV0aGVyIGEgY29uZGl0aW9uIGlzIGEgYENvZGVDb25kaXRpb25gIChoYXMgYHR5cGU6IFwiY29kZVwiYCkuXG4gKi9cbmZ1bmN0aW9uIGlzQ29kZUNvbmRpdGlvbihjb25kOiBTd2l0Y2hDYXNlQ29uZGl0aW9uKTogY29uZCBpcyBDb2RlQ29uZGl0aW9uIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgY29uZCA9PT0gXCJvYmplY3RcIiAmJlxuICAgIGNvbmQgIT09IG51bGwgJiZcbiAgICBcInR5cGVcIiBpbiBjb25kICYmXG4gICAgY29uZC50eXBlID09PSBcImNvZGVcIlxuICApO1xufVxuXG4vKipcbiAqIERldGVjdHMgd2hldGhlciBhIGNvbmRpdGlvbiBpcyBhIGBDb25kaXRpb25FeHByZXNzaW9uYCAoaGFzIGBvcGAgZmllbGQpLlxuICovXG5mdW5jdGlvbiBpc0NvbmRpdGlvbkV4cHJlc3Npb24oXG4gIGNvbmQ6IFN3aXRjaENhc2VDb25kaXRpb25cbik6IGNvbmQgaXMgQ29uZGl0aW9uRXhwcmVzc2lvbiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGNvbmQgPT09IFwib2JqZWN0XCIgJiZcbiAgICBjb25kICE9PSBudWxsICYmXG4gICAgXCJvcFwiIGluIGNvbmQgJiZcbiAgICB0eXBlb2YgY29uZC5vcCA9PT0gXCJzdHJpbmdcIlxuICApO1xufVxuXG4vKipcbiAqIEV4ZWN1dG9yIGZvciBgY29yZS5mbG93LnN3aXRjaGAgbm9kZXMuXG4gKlxuICogRXZhbHVhdGVzIGVhY2ggY2FzZSdzIGNvbmRpdGlvbiBpbiBvcmRlciBhbmQgcm91dGVzIHRoZSBpbnB1dCB0byB0aGVcbiAqIGZpcnN0IG1hdGNoaW5nIGNhc2UncyBvdXRwdXQgcG9ydC4gV2hlbiBubyBjYXNlIG1hdGNoZXMsIHJvdXRlcyB0byB0aGVcbiAqIGBkZWZhdWx0YCBvdXRwdXQgcG9ydC5cbiAqXG4gKiBDb25kaXRpb24gZXZhbHVhdGlvbjpcbiAqIC0gYENvbmRpdGlvbkV4cHJlc3Npb25gIOKAlCBldmFsdWF0ZWQgdmlhIHtAbGluayBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yfS5cbiAqIC0gYENvZGVDb25kaXRpb25gIOKAlCBldmFsdWF0ZWQgdmlhIHRoZSBwbHVnZ2FibGUge0BsaW5rIENvZGVTYW5kYm94RXZhbHVhdG9yfVxuICogICBmcm9tIHRoZSBlbmdpbmUncyBjb25maWcuIFRocm93cyBgR1JBUEhfQ09ERV9TQU5EQk9YX05PVF9DT05GSUdVUkVEYFxuICogICB3aGVuIG5vIGV2YWx1YXRvciBpcyByZWdpc3RlcmVkLlxuICovXG5leHBvcnQgY2xhc3MgU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IgaW1wbGVtZW50cyBHcmFwaE5vZGVFeGVjdXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXhwcmVzc2lvbkV2YWx1YXRvciA9IG5ldyBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmU/OiB7IGNvZGVTYW5kYm94RXZhbHVhdG9yPzogQ29kZVNhbmRib3hFdmFsdWF0b3IgfVxuICApIHt9XG5cbiAgYXN5bmMgZXhlY3V0ZShcbiAgICBpbnB1dDogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gICAgY29udGV4dDogR3JhcGhFeGVjdXRpb25Db250ZXh0XG4gICk6IFByb21pc2U8R3JhcGhFeGVjdXRpb25WYWx1ZXM+IHtcbiAgICBjb25zdCBtZXRhID0gcmVhZFN3aXRjaE1ldGFkYXRhKGNvbnRleHQpO1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBpbnB1dFtcInZhbHVlXCJdID8/IGlucHV0O1xuXG4gICAgZm9yIChjb25zdCBzd2l0Y2hDYXNlIG9mIG1ldGEuY2FzZXMpIHtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBhd2FpdCB0aGlzLmV2YWx1YXRlQ29uZGl0aW9uKFxuICAgICAgICBzd2l0Y2hDYXNlLmNvbmRpdGlvbixcbiAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgaW5wdXQsXG4gICAgICAgIGNvbnRleHRcbiAgICAgICk7XG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICByZXR1cm4geyBbc3dpdGNoQ2FzZS5vdXRwdXRQb3J0XTogaW5wdXRWYWx1ZSB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRQb3J0ID0gbWV0YS5kZWZhdWx0UG9ydCA/PyBcImRlZmF1bHRcIjtcbiAgICByZXR1cm4geyBbZGVmYXVsdFBvcnRdOiBpbnB1dFZhbHVlIH07XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGVzIGEgc2luZ2xlIHN3aXRjaCBjYXNlIGNvbmRpdGlvbi5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVDb25kaXRpb24oXG4gICAgY29uZGl0aW9uOiBTd2l0Y2hDYXNlQ29uZGl0aW9uLFxuICAgIGlucHV0VmFsdWU6IHVua25vd24sXG4gICAgZnVsbElucHV0OiBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgICBjb250ZXh0OiBHcmFwaEV4ZWN1dGlvbkNvbnRleHRcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKGlzQ29kZUNvbmRpdGlvbihjb25kaXRpb24pKSB7XG4gICAgICByZXR1cm4gdGhpcy5ldmFsdWF0ZUNvZGVDb25kaXRpb24oY29uZGl0aW9uLCBmdWxsSW5wdXQsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGlmIChpc0NvbmRpdGlvbkV4cHJlc3Npb24oY29uZGl0aW9uKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvci5ldmFsdWF0ZShjb25kaXRpb24sIGlucHV0VmFsdWUpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBHcmFwaEV4ZWN1dGlvbkVycm9yKFxuICAgICAgXCJVbmtub3duIHN3aXRjaCBjYXNlIGNvbmRpdGlvbiB0eXBlIOKAlCBtdXN0IGJlIENvbmRpdGlvbkV4cHJlc3Npb24gKG9wKSBvciBDb2RlQ29uZGl0aW9uICh0eXBlOiAnY29kZScpXCIsXG4gICAgICBcIkdSQVBIX1VOS05PV05fU1dJVENIX0NPTkRJVElPTlwiLFxuICAgICAgeyBjb25kaXRpb24gfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGVzIGEgY29kZSBjb25kaXRpb24gdmlhIHRoZSBwbHVnZ2FibGUgc2FuZGJveCBldmFsdWF0b3IuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlQ29kZUNvbmRpdGlvbihcbiAgICBjb25kaXRpb246IENvZGVDb25kaXRpb24sXG4gICAgaW5wdXQ6IEdyYXBoRXhlY3V0aW9uVmFsdWVzLFxuICAgIGNvbnRleHQ6IEdyYXBoRXhlY3V0aW9uQ29udGV4dFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBldmFsdWF0b3IgPSB0aGlzLmVuZ2luZT8uY29kZVNhbmRib3hFdmFsdWF0b3I7XG4gICAgaWYgKCFldmFsdWF0b3IpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaEV4ZWN1dGlvbkVycm9yKFxuICAgICAgICBcIkNvZGUgY29uZGl0aW9ucyByZXF1aXJlIGEgQ29kZVNhbmRib3hFdmFsdWF0b3IgdG8gYmUgcmVnaXN0ZXJlZCBpbiBHcmFwaEV4ZWN1dGlvbkVuZ2luZUNvbmZpZy5jb2RlU2FuZGJveEV2YWx1YXRvclwiLFxuICAgICAgICBcIkdSQVBIX0NPREVfU0FOREJPWF9OT1RfQ09ORklHVVJFRFwiLFxuICAgICAgICB7IGNvZGU6IGNvbmRpdGlvbi5jb2RlIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgY29udGV4dC5sb2coYEV2YWx1YXRpbmcgY29kZSBjb25kaXRpb25gLCB7XG4gICAgICBsYW5ndWFnZTogY29uZGl0aW9uLmxhbmd1YWdlID8/IFwiamF2YXNjcmlwdFwiLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXZhbHVhdG9yLmV2YWx1YXRlKHtcbiAgICAgIGNvZGU6IGNvbmRpdGlvbi5jb2RlLFxuICAgICAgbGFuZ3VhZ2U6IGNvbmRpdGlvbi5sYW5ndWFnZSxcbiAgICAgIGlucHV0LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuICEhcmVzdWx0O1xuICB9XG59XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJTd2l0Y2hHcmFwaE5vZGVFeGVjdXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrRUFBeUU7QUFDekUsZ0dBQTBGO0FBQzFGOztHQUVHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FBQyxPQUFPO0lBQy9CLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztJQUMxQyxJQUFJLENBQUMsSUFBSTtRQUNMLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUNqRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFDRCxPQUFPO1FBQ0gsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO1FBQ3ZCLFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVyxJQUFJLFNBQVM7S0FDbkQsQ0FBQztBQUNOLENBQUM7QUFDRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLElBQUk7SUFDekIsT0FBTyxDQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDNUIsSUFBSSxLQUFLLElBQUk7UUFDYixNQUFNLElBQUksSUFBSTtRQUNkLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUNEOztHQUVHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FBQyxJQUFJO0lBQy9CLE9BQU8sQ0FBQyxPQUFPLElBQUksS0FBSyxRQUFRO1FBQzVCLElBQUksS0FBSyxJQUFJO1FBQ2IsSUFBSSxJQUFJLElBQUk7UUFDWixPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUNEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQWEsdUJBQXVCO0lBQ2hDLFlBQVksTUFBTTtRQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLDhEQUE0QixFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUNELEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU87UUFDeEIsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUMzQyxLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDL0YsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDbkQsQ0FBQztRQUNMLENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLFNBQVMsQ0FBQztRQUNsRCxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxLQUFLLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTztRQUM3RCxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELElBQUkscUJBQXFCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxNQUFNLElBQUksNENBQW1CLENBQUMsdUdBQXVHLEVBQUUsZ0NBQWdDLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzVMLENBQUM7SUFDRDs7T0FFRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU87UUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQztRQUNwRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksNENBQW1CLENBQUMsb0hBQW9ILEVBQUUsbUNBQW1DLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdk4sQ0FBQztRQUNELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsRUFBRTtZQUMzQyxRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVEsSUFBSSxZQUFZO1NBQy9DLENBQUMsQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUNwQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7WUFDcEIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQzVCLEtBQUs7U0FDUixDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBL0NELDBEQStDQztBQUNELHNqVkFBc2pWIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25FcnJvciB9IGZyb20gXCIuLy4uL2Vycm9ycy9HcmFwaEV4ZWN1dGlvbkVycm9yLmpzXCI7XG5pbXBvcnQgeyBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yIH0gZnJvbSBcIi4vLi4vbG9vcHMvQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvci5qc1wiO1xuLyoqXG4gKiBSZWFkcyB0aGUgU3dpdGNoIG1ldGFkYXRhIGZyb20gdGhlIG5vZGUgZGVmaW5pdGlvbidzIGdyYXBoIG1ldGFkYXRhLlxuICovXG5mdW5jdGlvbiByZWFkU3dpdGNoTWV0YWRhdGEoY29udGV4dCkge1xuICAgIGNvbnN0IG1ldGEgPSBjb250ZXh0Lm5vZGUuZ3JhcGg/Lm1ldGFkYXRhO1xuICAgIGlmICghbWV0YSlcbiAgICAgICAgcmV0dXJuIHsgY2FzZXM6IFtdLCBkZWZhdWx0UG9ydDogXCJkZWZhdWx0XCIgfTtcbiAgICBjb25zdCBzd2l0Y2hNZXRhID0gbWV0YVtcInN3aXRjaFwiXTtcbiAgICBpZiAoIXN3aXRjaE1ldGEgfHwgIUFycmF5LmlzQXJyYXkoc3dpdGNoTWV0YS5jYXNlcykpIHtcbiAgICAgICAgcmV0dXJuIHsgY2FzZXM6IFtdLCBkZWZhdWx0UG9ydDogXCJkZWZhdWx0XCIgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FzZXM6IHN3aXRjaE1ldGEuY2FzZXMsXG4gICAgICAgIGRlZmF1bHRQb3J0OiBzd2l0Y2hNZXRhLmRlZmF1bHRQb3J0ID8/IFwiZGVmYXVsdFwiLFxuICAgIH07XG59XG4vKipcbiAqIERldGVjdHMgd2hldGhlciBhIGNvbmRpdGlvbiBpcyBhIGBDb2RlQ29uZGl0aW9uYCAoaGFzIGB0eXBlOiBcImNvZGVcImApLlxuICovXG5mdW5jdGlvbiBpc0NvZGVDb25kaXRpb24oY29uZCkge1xuICAgIHJldHVybiAodHlwZW9mIGNvbmQgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgY29uZCAhPT0gbnVsbCAmJlxuICAgICAgICBcInR5cGVcIiBpbiBjb25kICYmXG4gICAgICAgIGNvbmQudHlwZSA9PT0gXCJjb2RlXCIpO1xufVxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgYSBjb25kaXRpb24gaXMgYSBgQ29uZGl0aW9uRXhwcmVzc2lvbmAgKGhhcyBgb3BgIGZpZWxkKS5cbiAqL1xuZnVuY3Rpb24gaXNDb25kaXRpb25FeHByZXNzaW9uKGNvbmQpIHtcbiAgICByZXR1cm4gKHR5cGVvZiBjb25kID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgIGNvbmQgIT09IG51bGwgJiZcbiAgICAgICAgXCJvcFwiIGluIGNvbmQgJiZcbiAgICAgICAgdHlwZW9mIGNvbmQub3AgPT09IFwic3RyaW5nXCIpO1xufVxuLyoqXG4gKiBFeGVjdXRvciBmb3IgYGNvcmUuZmxvdy5zd2l0Y2hgIG5vZGVzLlxuICpcbiAqIEV2YWx1YXRlcyBlYWNoIGNhc2UncyBjb25kaXRpb24gaW4gb3JkZXIgYW5kIHJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlXG4gKiBmaXJzdCBtYXRjaGluZyBjYXNlJ3Mgb3V0cHV0IHBvcnQuIFdoZW4gbm8gY2FzZSBtYXRjaGVzLCByb3V0ZXMgdG8gdGhlXG4gKiBgZGVmYXVsdGAgb3V0cHV0IHBvcnQuXG4gKlxuICogQ29uZGl0aW9uIGV2YWx1YXRpb246XG4gKiAtIGBDb25kaXRpb25FeHByZXNzaW9uYCDigJQgZXZhbHVhdGVkIHZpYSB7QGxpbmsgQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvcn0uXG4gKiAtIGBDb2RlQ29uZGl0aW9uYCDigJQgZXZhbHVhdGVkIHZpYSB0aGUgcGx1Z2dhYmxlIHtAbGluayBDb2RlU2FuZGJveEV2YWx1YXRvcn1cbiAqICAgZnJvbSB0aGUgZW5naW5lJ3MgY29uZmlnLiBUaHJvd3MgYEdSQVBIX0NPREVfU0FOREJPWF9OT1RfQ09ORklHVVJFRGBcbiAqICAgd2hlbiBubyBldmFsdWF0b3IgaXMgcmVnaXN0ZXJlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFN3aXRjaEdyYXBoTm9kZUV4ZWN1dG9yIHtcbiAgICBjb25zdHJ1Y3RvcihlbmdpbmUpIHtcbiAgICAgICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvciA9IG5ldyBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yKCk7XG4gICAgfVxuICAgIGFzeW5jIGV4ZWN1dGUoaW5wdXQsIGNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgbWV0YSA9IHJlYWRTd2l0Y2hNZXRhZGF0YShjb250ZXh0KTtcbiAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IGlucHV0W1widmFsdWVcIl0gPz8gaW5wdXQ7XG4gICAgICAgIGZvciAoY29uc3Qgc3dpdGNoQ2FzZSBvZiBtZXRhLmNhc2VzKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gYXdhaXQgdGhpcy5ldmFsdWF0ZUNvbmRpdGlvbihzd2l0Y2hDYXNlLmNvbmRpdGlvbiwgaW5wdXRWYWx1ZSwgaW5wdXQsIGNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbc3dpdGNoQ2FzZS5vdXRwdXRQb3J0XTogaW5wdXRWYWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlZmF1bHRQb3J0ID0gbWV0YS5kZWZhdWx0UG9ydCA/PyBcImRlZmF1bHRcIjtcbiAgICAgICAgcmV0dXJuIHsgW2RlZmF1bHRQb3J0XTogaW5wdXRWYWx1ZSB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZXMgYSBzaW5nbGUgc3dpdGNoIGNhc2UgY29uZGl0aW9uLlxuICAgICAqL1xuICAgIGFzeW5jIGV2YWx1YXRlQ29uZGl0aW9uKGNvbmRpdGlvbiwgaW5wdXRWYWx1ZSwgZnVsbElucHV0LCBjb250ZXh0KSB7XG4gICAgICAgIGlmIChpc0NvZGVDb25kaXRpb24oY29uZGl0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXZhbHVhdGVDb2RlQ29uZGl0aW9uKGNvbmRpdGlvbiwgZnVsbElucHV0LCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDb25kaXRpb25FeHByZXNzaW9uKGNvbmRpdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3IuZXZhbHVhdGUoY29uZGl0aW9uLCBpbnB1dFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgR3JhcGhFeGVjdXRpb25FcnJvcihcIlVua25vd24gc3dpdGNoIGNhc2UgY29uZGl0aW9uIHR5cGUg4oCUIG11c3QgYmUgQ29uZGl0aW9uRXhwcmVzc2lvbiAob3ApIG9yIENvZGVDb25kaXRpb24gKHR5cGU6ICdjb2RlJylcIiwgXCJHUkFQSF9VTktOT1dOX1NXSVRDSF9DT05ESVRJT05cIiwgeyBjb25kaXRpb24gfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2YWx1YXRlcyBhIGNvZGUgY29uZGl0aW9uIHZpYSB0aGUgcGx1Z2dhYmxlIHNhbmRib3ggZXZhbHVhdG9yLlxuICAgICAqL1xuICAgIGFzeW5jIGV2YWx1YXRlQ29kZUNvbmRpdGlvbihjb25kaXRpb24sIGlucHV0LCBjb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IGV2YWx1YXRvciA9IHRoaXMuZW5naW5lPy5jb2RlU2FuZGJveEV2YWx1YXRvcjtcbiAgICAgICAgaWYgKCFldmFsdWF0b3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBHcmFwaEV4ZWN1dGlvbkVycm9yKFwiQ29kZSBjb25kaXRpb25zIHJlcXVpcmUgYSBDb2RlU2FuZGJveEV2YWx1YXRvciB0byBiZSByZWdpc3RlcmVkIGluIEdyYXBoRXhlY3V0aW9uRW5naW5lQ29uZmlnLmNvZGVTYW5kYm94RXZhbHVhdG9yXCIsIFwiR1JBUEhfQ09ERV9TQU5EQk9YX05PVF9DT05GSUdVUkVEXCIsIHsgY29kZTogY29uZGl0aW9uLmNvZGUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgY29udGV4dC5sb2coYEV2YWx1YXRpbmcgY29kZSBjb25kaXRpb25gLCB7XG4gICAgICAgICAgICBsYW5ndWFnZTogY29uZGl0aW9uLmxhbmd1YWdlID8/IFwiamF2YXNjcmlwdFwiLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXZhbHVhdG9yLmV2YWx1YXRlKHtcbiAgICAgICAgICAgIGNvZGU6IGNvbmRpdGlvbi5jb2RlLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGNvbmRpdGlvbi5sYW5ndWFnZSxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuICEhcmVzdWx0O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVUzZHBkR05vUjNKaGNHaE9iMlJsUlhobFkzVjBiM0l1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOHVMaTh1TGk5emNtTXZaM0poY0dndlpXNW5hVzVsTDJWNFpXTjFkR2x2Ymk5VGQybDBZMmhIY21Gd2FFNXZaR1ZGZUdWamRYUnZjaTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGclFrRXNUMEZCVHl4RlFVRkZMRzFDUVVGdFFpeEZRVUZGTERKRFFVRnpRenRCUVVOd1JTeFBRVUZQTEVWQlFVVXNORUpCUVRSQ0xFVkJRVVVzYlVSQlFUaERPMEZCUjNKR096dEhRVVZITzBGQlEwZ3NVMEZCVXl4clFrRkJhMElzUTBGRGVrSXNUMEZCT0VJN1NVRkZPVUlzVFVGQlRTeEpRVUZKTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzVVVGRmNFSXNRMEZCUXp0SlFVTmtMRWxCUVVrc1EwRkJReXhKUVVGSk8xRkJRVVVzVDBGQlR5eEZRVUZGTEV0QlFVc3NSVUZCUlN4RlFVRkZMRVZCUVVVc1YwRkJWeXhGUVVGRkxGTkJRVk1zUlVGQlJTeERRVUZETzBsQlEzaEVMRTFCUVUwc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFXMURMRU5CUVVNN1NVRkRjRVVzU1VGQlNTeERRVUZETEZWQlFWVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNN1VVRkRjRVFzVDBGQlR5eEZRVUZGTEV0QlFVc3NSVUZCUlN4RlFVRkZMRVZCUVVVc1YwRkJWeXhGUVVGRkxGTkJRVk1zUlVGQlJTeERRVUZETzBsQlF5OURMRU5CUVVNN1NVRkRSQ3hQUVVGUE8xRkJRMHdzUzBGQlN5eEZRVUZGTEZWQlFWVXNRMEZCUXl4TFFVRkxPMUZCUTNaQ0xGZEJRVmNzUlVGQlJTeFZRVUZWTEVOQlFVTXNWMEZCVnl4SlFVRkpMRk5CUVZNN1MwRkRha1FzUTBGQlF6dEJRVU5LTEVOQlFVTTdRVUZGUkRzN1IwRkZSenRCUVVOSUxGTkJRVk1zWlVGQlpTeERRVUZETEVsQlFYbENPMGxCUTJoRUxFOUJRVThzUTBGRFRDeFBRVUZQTEVsQlFVa3NTMEZCU3l4UlFVRlJPMUZCUTNoQ0xFbEJRVWtzUzBGQlN5eEpRVUZKTzFGQlEySXNUVUZCVFN4SlFVRkpMRWxCUVVrN1VVRkRaQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeExRVUZMTEUxQlFVMHNRMEZEY2tJc1EwRkJRenRCUVVOS0xFTkJRVU03UVVGRlJEczdSMEZGUnp0QlFVTklMRk5CUVZNc2NVSkJRWEZDTEVOQlF6VkNMRWxCUVhsQ08wbEJSWHBDTEU5QlFVOHNRMEZEVEN4UFFVRlBMRWxCUVVrc1MwRkJTeXhSUVVGUk8xRkJRM2hDTEVsQlFVa3NTMEZCU3l4SlFVRkpPMUZCUTJJc1NVRkJTU3hKUVVGSkxFbEJRVWs3VVVGRFdpeFBRVUZQTEVsQlFVa3NRMEZCUXl4RlFVRkZMRXRCUVVzc1VVRkJVU3hEUVVNMVFpeERRVUZETzBGQlEwb3NRMEZCUXp0QlFVVkVPenM3T3pzN096czdPenM3UjBGWlJ6dEJRVU5JTEUxQlFVMHNUMEZCVHl4MVFrRkJkVUk3U1VGSGJFTXNXVUZEYlVJc1RVRkJkMFE3VVVGQmVFUXNWMEZCVFN4SFFVRk9MRTFCUVUwc1EwRkJhMFE3VVVGSU1VUXNkMEpCUVcxQ0xFZEJRVWNzU1VGQlNTdzBRa0ZCTkVJc1JVRkJSU3hEUVVGRE8wbEJTWFpGTEVOQlFVTTdTVUZGU2l4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVOWUxFdEJRVEpDTEVWQlF6TkNMRTlCUVRoQ08xRkJSVGxDTEUxQlFVMHNTVUZCU1N4SFFVRkhMR3RDUVVGclFpeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTNwRExFMUJRVTBzVlVGQlZTeEhRVUZITEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hMUVVGTExFTkJRVU03VVVGRk0wTXNTMEZCU3l4TlFVRk5MRlZCUVZVc1NVRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdXVUZEY0VNc1RVRkJUU3hQUVVGUExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRekZETEZWQlFWVXNRMEZCUXl4VFFVRlRMRVZCUTNCQ0xGVkJRVlVzUlVGRFZpeExRVUZMTEVWQlEwd3NUMEZCVHl4RFFVTlNMRU5CUVVNN1dVRkRSaXhKUVVGSkxFOUJRVThzUlVGQlJTeERRVUZETzJkQ1FVTmFMRTlCUVU4c1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eFZRVUZWTEVOQlFVTXNSVUZCUlN4VlFVRlZMRVZCUVVVc1EwRkJRenRaUVVOcVJDeERRVUZETzFGQlEwZ3NRMEZCUXp0UlFVVkVMRTFCUVUwc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVsQlFVa3NVMEZCVXl4RFFVRkRPMUZCUTJ4RUxFOUJRVThzUlVGQlJTeERRVUZETEZkQlFWY3NRMEZCUXl4RlFVRkZMRlZCUVZVc1JVRkJSU3hEUVVGRE8wbEJRM1pETEVOQlFVTTdTVUZGUkRzN1QwRkZSenRKUVVOTExFdEJRVXNzUTBGQlF5eHBRa0ZCYVVJc1EwRkROMElzVTBGQk9FSXNSVUZET1VJc1ZVRkJiVUlzUlVGRGJrSXNVMEZCSzBJc1JVRkRMMElzVDBGQk9FSTdVVUZGT1VJc1NVRkJTU3hsUVVGbExFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTXZRaXhQUVVGUExFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhUUVVGVExFVkJRVVVzVTBGQlV5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTI1RkxFTkJRVU03VVVGRlJDeEpRVUZKTEhGQ1FVRnhRaXhEUVVGRExGTkJRVk1zUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZEY2tNc1QwRkJUeXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1VVRkJVU3hEUVVGRExGTkJRVk1zUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZCUXp0UlFVTnNSU3hEUVVGRE8xRkJSVVFzVFVGQlRTeEpRVUZKTEcxQ1FVRnRRaXhEUVVNelFpeDFSMEZCZFVjc1JVRkRka2NzWjBOQlFXZERMRVZCUTJoRExFVkJRVVVzVTBGQlV5eEZRVUZGTEVOQlEyUXNRMEZCUXp0SlFVTktMRU5CUVVNN1NVRkZSRHM3VDBGRlJ6dEpRVU5MTEV0QlFVc3NRMEZCUXl4eFFrRkJjVUlzUTBGRGFrTXNVMEZCZDBJc1JVRkRlRUlzUzBGQk1rSXNSVUZETTBJc1QwRkJPRUk3VVVGRk9VSXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeHZRa0ZCYjBJc1EwRkJRenRSUVVOd1JDeEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1dVRkRaaXhOUVVGTkxFbEJRVWtzYlVKQlFXMUNMRU5CUXpOQ0xHOUlRVUZ2U0N4RlFVTndTQ3h0UTBGQmJVTXNSVUZEYmtNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVTBGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVTjZRaXhEUVVGRE8xRkJRMG9zUTBGQlF6dFJRVVZFTEUxQlFVMHNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXd5UWtGQk1rSXNSVUZCUlR0WlFVTTNReXhSUVVGUkxFVkJRVVVzVTBGQlV5eERRVUZETEZGQlFWRXNTVUZCU1N4WlFVRlpPMU5CUXpkRExFTkJRVU1zUTBGQlF6dFJRVVZJTEUxQlFVMHNUVUZCVFN4SFFVRkhMRTFCUVUwc1UwRkJVeXhEUVVGRExGRkJRVkVzUTBGQlF6dFpRVU4wUXl4SlFVRkpMRVZCUVVVc1UwRkJVeXhEUVVGRExFbEJRVWs3V1VGRGNFSXNVVUZCVVN4RlFVRkZMRk5CUVZNc1EwRkJReXhSUVVGUk8xbEJRelZDTEV0QlFVczdVMEZEVGl4RFFVRkRMRU5CUVVNN1VVRkZTQ3hQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZEYkVJc1EwRkJRenREUVVOR0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkFiVzlrZFd4bElHbHVkR1ZuY21GMGFXOXVjeTluY21Gd2FDOWxlR1ZqZFhScGIyNHZVM2RwZEdOb1IzSmhjR2hPYjJSbFJYaGxZM1YwYjNKY2JpQXFJRUJ6ZFcxdFlYSjVJRVY0WldOMWRHOXlJR1p2Y2lCMGFHVWdVM2RwZEdOb0lHWnNiM2N0WTI5dWRISnZiQ0J1YjJSbElDaEVSVU5CUmkwek1pRENwekl5TGpJdU1pa3VYRzRnS2lCQVpHVnpZM0pwY0hScGIyNGdSWFpoYkhWaGRHVnpJR1ZoWTJnZ1kyRnpaU2R6SUdOdmJtUnBkR2x2YmlCaFoyRnBibk4wSUhSb1pTQnViMlJsSjNNZ2FXNXdkWFFnWVc1a1hHNGdLaUJ5YjNWMFpYTWdkR2hsSUdsdWNIVjBJSFJ2SUhSb1pTQm1hWEp6ZENCdFlYUmphR2x1WnlCallYTmxKM01nYjNWMGNIVjBJSEJ2Y25RdUlFWmhiR3h6SUdKaFkyc2dkRzljYmlBcUlIUm9aU0JnWkdWbVlYVnNkR0FnYjNWMGNIVjBJSGRvWlc0Z2JtOGdZMkZ6WlNCdFlYUmphR1Z6TGlCVGRYQndiM0owY3lCaWIzUm9YRzRnS2lCN1FHeHBibXNnUTI5dVpHbDBhVzl1Ulhod2NtVnpjMmx2Ym4wZ0tHZHlZWEJvYVdOaGJDQnRiMlJsS1NCaGJtUWdlMEJzYVc1cklFTnZaR1ZEYjI1a2FYUnBiMjU5WEc0Z0tpQW9ZMjlrWlNCdGIyUmxJSFpwWVNCMGFHVWdjR3gxWjJkaFlteGxJSHRBYkdsdWF5QkRiMlJsVTJGdVpHSnZlRVYyWVd4MVlYUnZjbjBwTGx4dUlDb3ZYRzVwYlhCdmNuUWdkSGx3WlNCN0lFZHlZWEJvVG05a1pVVjRaV04xZEc5eUlIMGdabkp2YlNCY0lpNHZSM0poY0doT2IyUmxSWGhsWTNWMGIzSmNJanRjYm1sdGNHOXlkQ0IwZVhCbElIc2dSM0poY0doRmVHVmpkWFJwYjI1RGIyNTBaWGgwSUgwZ1puSnZiU0JjSWk0dlIzSmhjR2hGZUdWamRYUnBiMjVEYjI1MFpYaDBYQ0k3WEc1cGJYQnZjblFnZEhsd1pTQjdJRWR5WVhCb1JYaGxZM1YwYVc5dVZtRnNkV1Z6SUgwZ1puSnZiU0JjSWk0dUwzUjVjR1Z6WENJN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3WEc0Z0lGTjNhWFJqYUVOaGMyVkRiMjVrYVhScGIyNHNYRzRnSUZOM2FYUmphRTV2WkdWTlpYUmhaR0YwWVN4Y2JpQWdRMjl1WkdsMGFXOXVSWGh3Y21WemMybHZiaXhjYmlBZ1EyOWtaVU52Ym1ScGRHbHZiaXhjYm4wZ1puSnZiU0JjSWk0dUx5NHVMM05vWVhKbFpDOTBlWEJsYzF3aU8xeHVhVzF3YjNKMElIc2dSM0poY0doRmVHVmpkWFJwYjI1RmNuSnZjaUI5SUdaeWIyMGdYQ0l1TGk5bGNuSnZjbk12UjNKaGNHaEZlR1ZqZFhScGIyNUZjbkp2Y2x3aU8xeHVhVzF3YjNKMElIc2dRMjl1WkdsMGFXOXVSWGh3Y21WemMybHZia1YyWVd4MVlYUnZjaUI5SUdaeWIyMGdYQ0l1TGk5c2IyOXdjeTlEYjI1a2FYUnBiMjVGZUhCeVpYTnphVzl1UlhaaGJIVmhkRzl5WENJN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUVOdlpHVlRZVzVrWW05NFJYWmhiSFZoZEc5eUlIMGdabkp2YlNCY0lpNHZRMjlrWlZOaGJtUmliM2hGZG1Gc2RXRjBiM0pjSWp0Y2JseHVMeW9xWEc0Z0tpQlNaV0ZrY3lCMGFHVWdVM2RwZEdOb0lHMWxkR0ZrWVhSaElHWnliMjBnZEdobElHNXZaR1VnWkdWbWFXNXBkR2x2YmlkeklHZHlZWEJvSUcxbGRHRmtZWFJoTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJ5WldGa1UzZHBkR05vVFdWMFlXUmhkR0VvWEc0Z0lHTnZiblJsZUhRNklFZHlZWEJvUlhobFkzVjBhVzl1UTI5dWRHVjRkRnh1S1RvZ1UzZHBkR05vVG05a1pVMWxkR0ZrWVhSaElIdGNiaUFnWTI5dWMzUWdiV1YwWVNBOUlHTnZiblJsZUhRdWJtOWtaUzVuY21Gd2FEOHViV1YwWVdSaGRHRWdZWE5jYmlBZ0lDQjhJRkpsWTI5eVpEeHpkSEpwYm1jc0lIVnVhMjV2ZDI0K1hHNGdJQ0FnZkNCMWJtUmxabWx1WldRN1hHNGdJR2xtSUNnaGJXVjBZU2tnY21WMGRYSnVJSHNnWTJGelpYTTZJRnRkTENCa1pXWmhkV3gwVUc5eWREb2dYQ0prWldaaGRXeDBYQ0lnZlR0Y2JpQWdZMjl1YzNRZ2MzZHBkR05vVFdWMFlTQTlJRzFsZEdGYlhDSnpkMmwwWTJoY0lsMGdZWE1nVTNkcGRHTm9UbTlrWlUxbGRHRmtZWFJoSUh3Z2RXNWtaV1pwYm1Wa08xeHVJQ0JwWmlBb0lYTjNhWFJqYUUxbGRHRWdmSHdnSVVGeWNtRjVMbWx6UVhKeVlYa29jM2RwZEdOb1RXVjBZUzVqWVhObGN5a3BJSHRjYmlBZ0lDQnlaWFIxY200Z2V5QmpZWE5sY3pvZ1cxMHNJR1JsWm1GMWJIUlFiM0owT2lCY0ltUmxabUYxYkhSY0lpQjlPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQjdYRzRnSUNBZ1kyRnpaWE02SUhOM2FYUmphRTFsZEdFdVkyRnpaWE1zWEc0Z0lDQWdaR1ZtWVhWc2RGQnZjblE2SUhOM2FYUmphRTFsZEdFdVpHVm1ZWFZzZEZCdmNuUWdQejhnWENKa1pXWmhkV3gwWENJc1hHNGdJSDA3WEc1OVhHNWNiaThxS2x4dUlDb2dSR1YwWldOMGN5QjNhR1YwYUdWeUlHRWdZMjl1WkdsMGFXOXVJR2x6SUdFZ1lFTnZaR1ZEYjI1a2FYUnBiMjVnSUNob1lYTWdZSFI1Y0dVNklGd2lZMjlrWlZ3aVlDa3VYRzRnS2k5Y2JtWjFibU4wYVc5dUlHbHpRMjlrWlVOdmJtUnBkR2x2YmloamIyNWtPaUJUZDJsMFkyaERZWE5sUTI5dVpHbDBhVzl1S1RvZ1kyOXVaQ0JwY3lCRGIyUmxRMjl1WkdsMGFXOXVJSHRjYmlBZ2NtVjBkWEp1SUNoY2JpQWdJQ0IwZVhCbGIyWWdZMjl1WkNBOVBUMGdYQ0p2WW1wbFkzUmNJaUFtSmx4dUlDQWdJR052Ym1RZ0lUMDlJRzUxYkd3Z0ppWmNiaUFnSUNCY0luUjVjR1ZjSWlCcGJpQmpiMjVrSUNZbVhHNGdJQ0FnWTI5dVpDNTBlWEJsSUQwOVBTQmNJbU52WkdWY0lseHVJQ0FwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRVJsZEdWamRITWdkMmhsZEdobGNpQmhJR052Ym1ScGRHbHZiaUJwY3lCaElHQkRiMjVrYVhScGIyNUZlSEJ5WlhOemFXOXVZQ0FvYUdGeklHQnZjR0FnWm1sbGJHUXBMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnBjME52Ym1ScGRHbHZia1Y0Y0hKbGMzTnBiMjRvWEc0Z0lHTnZibVE2SUZOM2FYUmphRU5oYzJWRGIyNWthWFJwYjI1Y2JpazZJR052Ym1RZ2FYTWdRMjl1WkdsMGFXOXVSWGh3Y21WemMybHZiaUI3WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnZEhsd1pXOW1JR052Ym1RZ1BUMDlJRndpYjJKcVpXTjBYQ0lnSmlaY2JpQWdJQ0JqYjI1a0lDRTlQU0J1ZFd4c0lDWW1YRzRnSUNBZ1hDSnZjRndpSUdsdUlHTnZibVFnSmlaY2JpQWdJQ0IwZVhCbGIyWWdZMjl1WkM1dmNDQTlQVDBnWENKemRISnBibWRjSWx4dUlDQXBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFVjRaV04xZEc5eUlHWnZjaUJnWTI5eVpTNW1iRzkzTG5OM2FYUmphR0FnYm05a1pYTXVYRzRnS2x4dUlDb2dSWFpoYkhWaGRHVnpJR1ZoWTJnZ1kyRnpaU2R6SUdOdmJtUnBkR2x2YmlCcGJpQnZjbVJsY2lCaGJtUWdjbTkxZEdWeklIUm9aU0JwYm5CMWRDQjBieUIwYUdWY2JpQXFJR1pwY25OMElHMWhkR05vYVc1bklHTmhjMlVuY3lCdmRYUndkWFFnY0c5eWRDNGdWMmhsYmlCdWJ5QmpZWE5sSUcxaGRHTm9aWE1zSUhKdmRYUmxjeUIwYnlCMGFHVmNiaUFxSUdCa1pXWmhkV3gwWUNCdmRYUndkWFFnY0c5eWRDNWNiaUFxWEc0Z0tpQkRiMjVrYVhScGIyNGdaWFpoYkhWaGRHbHZianBjYmlBcUlDMGdZRU52Ym1ScGRHbHZia1Y0Y0hKbGMzTnBiMjVnSU9LQWxDQmxkbUZzZFdGMFpXUWdkbWxoSUh0QWJHbHVheUJEYjI1a2FYUnBiMjVGZUhCeVpYTnphVzl1UlhaaGJIVmhkRzl5ZlM1Y2JpQXFJQzBnWUVOdlpHVkRiMjVrYVhScGIyNWdJT0tBbENCbGRtRnNkV0YwWldRZ2RtbGhJSFJvWlNCd2JIVm5aMkZpYkdVZ2UwQnNhVzVySUVOdlpHVlRZVzVrWW05NFJYWmhiSFZoZEc5eWZWeHVJQ29nSUNCbWNtOXRJSFJvWlNCbGJtZHBibVVuY3lCamIyNW1hV2N1SUZSb2NtOTNjeUJnUjFKQlVFaGZRMDlFUlY5VFFVNUVRazlZWDA1UFZGOURUMDVHU1VkVlVrVkVZRnh1SUNvZ0lDQjNhR1Z1SUc1dklHVjJZV3gxWVhSdmNpQnBjeUJ5WldkcGMzUmxjbVZrTGx4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1UzZHBkR05vUjNKaGNHaE9iMlJsUlhobFkzVjBiM0lnYVcxd2JHVnRaVzUwY3lCSGNtRndhRTV2WkdWRmVHVmpkWFJ2Y2lCN1hHNGdJSEJ5YVhaaGRHVWdjbVZoWkc5dWJIa2daWGh3Y21WemMybHZia1YyWVd4MVlYUnZjaUE5SUc1bGR5QkRiMjVrYVhScGIyNUZlSEJ5WlhOemFXOXVSWFpoYkhWaGRHOXlLQ2s3WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvWEc0Z0lDQWdjSEpwZG1GMFpTQnlaV0ZrYjI1c2VTQmxibWRwYm1VL09pQjdJR052WkdWVFlXNWtZbTk0UlhaaGJIVmhkRzl5UHpvZ1EyOWtaVk5oYm1SaWIzaEZkbUZzZFdGMGIzSWdmVnh1SUNBcElIdDlYRzVjYmlBZ1lYTjVibU1nWlhobFkzVjBaU2hjYmlBZ0lDQnBibkIxZERvZ1IzSmhjR2hGZUdWamRYUnBiMjVXWVd4MVpYTXNYRzRnSUNBZ1kyOXVkR1Y0ZERvZ1IzSmhjR2hGZUdWamRYUnBiMjVEYjI1MFpYaDBYRzRnSUNrNklGQnliMjFwYzJVOFIzSmhjR2hGZUdWamRYUnBiMjVXWVd4MVpYTStJSHRjYmlBZ0lDQmpiMjV6ZENCdFpYUmhJRDBnY21WaFpGTjNhWFJqYUUxbGRHRmtZWFJoS0dOdmJuUmxlSFFwTzF4dUlDQWdJR052Ym5OMElHbHVjSFYwVm1Gc2RXVWdQU0JwYm5CMWRGdGNJblpoYkhWbFhDSmRJRDgvSUdsdWNIVjBPMXh1WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0J6ZDJsMFkyaERZWE5sSUc5bUlHMWxkR0V1WTJGelpYTXBJSHRjYmlBZ0lDQWdJR052Ym5OMElHMWhkR05vWlhNZ1BTQmhkMkZwZENCMGFHbHpMbVYyWVd4MVlYUmxRMjl1WkdsMGFXOXVLRnh1SUNBZ0lDQWdJQ0J6ZDJsMFkyaERZWE5sTG1OdmJtUnBkR2x2Yml4Y2JpQWdJQ0FnSUNBZ2FXNXdkWFJXWVd4MVpTeGNiaUFnSUNBZ0lDQWdhVzV3ZFhRc1hHNGdJQ0FnSUNBZ0lHTnZiblJsZUhSY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCcFppQW9iV0YwWTJobGN5a2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdleUJiYzNkcGRHTm9RMkZ6WlM1dmRYUndkWFJRYjNKMFhUb2dhVzV3ZFhSV1lXeDFaU0I5TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElHUmxabUYxYkhSUWIzSjBJRDBnYldWMFlTNWtaV1poZFd4MFVHOXlkQ0EvUHlCY0ltUmxabUYxYkhSY0lqdGNiaUFnSUNCeVpYUjFjbTRnZXlCYlpHVm1ZWFZzZEZCdmNuUmRPaUJwYm5CMWRGWmhiSFZsSUgwN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSWFpoYkhWaGRHVnpJR0VnYzJsdVoyeGxJSE4zYVhSamFDQmpZWE5sSUdOdmJtUnBkR2x2Ymk1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1lYTjVibU1nWlhaaGJIVmhkR1ZEYjI1a2FYUnBiMjRvWEc0Z0lDQWdZMjl1WkdsMGFXOXVPaUJUZDJsMFkyaERZWE5sUTI5dVpHbDBhVzl1TEZ4dUlDQWdJR2x1Y0hWMFZtRnNkV1U2SUhWdWEyNXZkMjRzWEc0Z0lDQWdablZzYkVsdWNIVjBPaUJIY21Gd2FFVjRaV04xZEdsdmJsWmhiSFZsY3l4Y2JpQWdJQ0JqYjI1MFpYaDBPaUJIY21Gd2FFVjRaV04xZEdsdmJrTnZiblJsZUhSY2JpQWdLVG9nVUhKdmJXbHpaVHhpYjI5c1pXRnVQaUI3WEc0Z0lDQWdhV1lnS0dselEyOWtaVU52Ym1ScGRHbHZiaWhqYjI1a2FYUnBiMjRwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWxkbUZzZFdGMFpVTnZaR1ZEYjI1a2FYUnBiMjRvWTI5dVpHbDBhVzl1TENCbWRXeHNTVzV3ZFhRc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHBjME52Ym1ScGRHbHZia1Y0Y0hKbGMzTnBiMjRvWTI5dVpHbDBhVzl1S1NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaWGh3Y21WemMybHZia1YyWVd4MVlYUnZjaTVsZG1Gc2RXRjBaU2hqYjI1a2FYUnBiMjRzSUdsdWNIVjBWbUZzZFdVcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2NtOTNJRzVsZHlCSGNtRndhRVY0WldOMWRHbHZia1Z5Y205eUtGeHVJQ0FnSUNBZ1hDSlZibXR1YjNkdUlITjNhWFJqYUNCallYTmxJR052Ym1ScGRHbHZiaUIwZVhCbElPS0FsQ0J0ZFhOMElHSmxJRU52Ym1ScGRHbHZia1Y0Y0hKbGMzTnBiMjRnS0c5d0tTQnZjaUJEYjJSbFEyOXVaR2wwYVc5dUlDaDBlWEJsT2lBblkyOWtaU2NwWENJc1hHNGdJQ0FnSUNCY0lrZFNRVkJJWDFWT1MwNVBWMDVmVTFkSlZFTklYME5QVGtSSlZFbFBUbHdpTEZ4dUlDQWdJQ0FnZXlCamIyNWthWFJwYjI0Z2ZWeHVJQ0FnSUNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSWFpoYkhWaGRHVnpJR0VnWTI5a1pTQmpiMjVrYVhScGIyNGdkbWxoSUhSb1pTQndiSFZuWjJGaWJHVWdjMkZ1WkdKdmVDQmxkbUZzZFdGMGIzSXVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJR0Z6ZVc1aklHVjJZV3gxWVhSbFEyOWtaVU52Ym1ScGRHbHZiaWhjYmlBZ0lDQmpiMjVrYVhScGIyNDZJRU52WkdWRGIyNWthWFJwYjI0c1hHNGdJQ0FnYVc1d2RYUTZJRWR5WVhCb1JYaGxZM1YwYVc5dVZtRnNkV1Z6TEZ4dUlDQWdJR052Ym5SbGVIUTZJRWR5WVhCb1JYaGxZM1YwYVc5dVEyOXVkR1Y0ZEZ4dUlDQXBPaUJRY205dGFYTmxQR0p2YjJ4bFlXNCtJSHRjYmlBZ0lDQmpiMjV6ZENCbGRtRnNkV0YwYjNJZ1BTQjBhR2x6TG1WdVoybHVaVDh1WTI5a1pWTmhibVJpYjNoRmRtRnNkV0YwYjNJN1hHNGdJQ0FnYVdZZ0tDRmxkbUZzZFdGMGIzSXBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJIY21Gd2FFVjRaV04xZEdsdmJrVnljbTl5S0Z4dUlDQWdJQ0FnSUNCY0lrTnZaR1VnWTI5dVpHbDBhVzl1Y3lCeVpYRjFhWEpsSUdFZ1EyOWtaVk5oYm1SaWIzaEZkbUZzZFdGMGIzSWdkRzhnWW1VZ2NtVm5hWE4wWlhKbFpDQnBiaUJIY21Gd2FFVjRaV04xZEdsdmJrVnVaMmx1WlVOdmJtWnBaeTVqYjJSbFUyRnVaR0p2ZUVWMllXeDFZWFJ2Y2x3aUxGeHVJQ0FnSUNBZ0lDQmNJa2RTUVZCSVgwTlBSRVZmVTBGT1JFSlBXRjlPVDFSZlEwOU9Sa2xIVlZKRlJGd2lMRnh1SUNBZ0lDQWdJQ0I3SUdOdlpHVTZJR052Ym1ScGRHbHZiaTVqYjJSbElIMWNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1lYZGhhWFFnWTI5dWRHVjRkQzVzYjJjb1lFVjJZV3gxWVhScGJtY2dZMjlrWlNCamIyNWthWFJwYjI1Z0xDQjdYRzRnSUNBZ0lDQnNZVzVuZFdGblpUb2dZMjl1WkdsMGFXOXVMbXhoYm1kMVlXZGxJRDgvSUZ3aWFtRjJZWE5qY21sd2RGd2lMRnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2NtVnpkV3gwSUQwZ1lYZGhhWFFnWlhaaGJIVmhkRzl5TG1WMllXeDFZWFJsS0h0Y2JpQWdJQ0FnSUdOdlpHVTZJR052Ym1ScGRHbHZiaTVqYjJSbExGeHVJQ0FnSUNBZ2JHRnVaM1ZoWjJVNklHTnZibVJwZEdsdmJpNXNZVzVuZFdGblpTeGNiaUFnSUNBZ0lHbHVjSFYwTEZ4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnY21WMGRYSnVJQ0VoY21WemRXeDBPMXh1SUNCOVhHNTlYRzRpWFgwPSJdfQ==
@@ -26,5 +26,5 @@ __exportStar(require("./GraphExecutionFrame.cjs"), exports);
26
26
  __exportStar(require("./GraphExecutionEngine.cjs"), exports);
27
27
  __exportStar(require("./CodeSandboxEvaluator.cjs"), exports);
28
28
  __exportStar(require("./SwitchGraphNodeExecutor.cjs"), exports);
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZXhlY3V0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCwyQ0FBd0M7QUFDeEMsdUNBQW9DO0FBQ3BDLDBDQUF1QztBQUN2Qyx5Q0FBc0M7QUFDdEMsMENBQXVDO0FBQ3ZDLDBDQUF1QztBQUN2Qyw2Q0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL2V4ZWN1dGlvblxuICogQHN1bW1hcnkgR3JhcGggZXhlY3V0aW9uIGNvbnRleHQgYW5kIGV4ZWN1dG9yIGludGVyZmFjZS5cbiAqIEBkZXNjcmlwdGlvbiBSZS1leHBvcnRzIHRoZSBncmFwaCBleGVjdXRpb24gY29udGV4dCBhbmQgbm9kZSBleGVjdXRvciBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uQ29udGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhOb2RlRXhlY3V0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uUmVzdWx0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvbkZyYW1lXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvbkVuZ2luZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vQ29kZVNhbmRib3hFdmFsdWF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1N3aXRjaEdyYXBoTm9kZUV4ZWN1dG9yXCI7XG4iXX0=
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7R0FJRztBQUNILDZEQUEyQztBQUMzQyx5REFBdUM7QUFDdkMsNERBQTBDO0FBQzFDLDJEQUF5QztBQUN6Qyw0REFBMEM7QUFDMUMsNERBQTBDO0FBQzFDLCtEQUE2QztBQUM3QywwaENBQTBoQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvZXhlY3V0aW9uXG4gKiBAc3VtbWFyeSBHcmFwaCBleGVjdXRpb24gY29udGV4dCBhbmQgZXhlY3V0b3IgaW50ZXJmYWNlLlxuICogQGRlc2NyaXB0aW9uIFJlLWV4cG9ydHMgdGhlIGdyYXBoIGV4ZWN1dGlvbiBjb250ZXh0IGFuZCBub2RlIGV4ZWN1dG9yIGludGVyZmFjZS5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25Db250ZXh0LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaE5vZGVFeGVjdXRvci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25SZXN1bHQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uRnJhbWUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uRW5naW5lLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Db2RlU2FuZGJveEV2YWx1YXRvci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IuanNcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOHVMaTl6Y21NdlozSmhjR2d2WlhobFkzVjBhVzl1TDJsdVpHVjRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPMGRCU1VjN1FVRkRTQ3d5UTBGQmQwTTdRVUZEZUVNc2RVTkJRVzlETzBGQlEzQkRMREJEUVVGMVF6dEJRVU4yUXl4NVEwRkJjME03UVVGRGRFTXNNRU5CUVhWRE8wRkJRM1pETERCRFFVRjFRenRCUVVOMlF5dzJRMEZCTUVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFQnRiMlIxYkdVZ2FXNTBaV2R5WVhScGIyNXpMMmR5WVhCb0wyVjRaV04xZEdsdmJseHVJQ29nUUhOMWJXMWhjbmtnUjNKaGNHZ2daWGhsWTNWMGFXOXVJR052Ym5SbGVIUWdZVzVrSUdWNFpXTjFkRzl5SUdsdWRHVnlabUZqWlM1Y2JpQXFJRUJrWlhOamNtbHdkR2x2YmlCU1pTMWxlSEJ2Y25SeklIUm9aU0JuY21Gd2FDQmxlR1ZqZFhScGIyNGdZMjl1ZEdWNGRDQmhibVFnYm05a1pTQmxlR1ZqZFhSdmNpQnBiblJsY21aaFkyVXVYRzRnS2k5Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwwZHlZWEJvUlhobFkzVjBhVzl1UTI5dWRHVjRkRndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dlIzSmhjR2hPYjJSbFJYaGxZM1YwYjNKY0lqdGNibVY0Y0c5eWRDQXFJR1p5YjIwZ1hDSXVMMGR5WVhCb1JYaGxZM1YwYVc5dVVtVnpkV3gwWENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOUhjbUZ3YUVWNFpXTjFkR2x2YmtaeVlXMWxYQ0k3WEc1bGVIQnZjblFnS2lCbWNtOXRJRndpTGk5SGNtRndhRVY0WldOMWRHbHZia1Z1WjJsdVpWd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2UTI5a1pWTmhibVJpYjNoRmRtRnNkV0YwYjNKY0lqdGNibVY0Y0c5eWRDQXFJR1p5YjIwZ1hDSXVMMU4zYVhSamFFZHlZWEJvVG05a1pVVjRaV04xZEc5eVhDSTdYRzRpWFgwPSJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL2V4ZWN1dGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsMkNBQXdDO0FBQ3hDLHVDQUFvQztBQUNwQywwQ0FBdUM7QUFDdkMseUNBQXNDO0FBQ3RDLDBDQUF1QztBQUN2QywwQ0FBdUM7QUFDdkMsNkNBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9leGVjdXRpb25cbiAqIEBzdW1tYXJ5IEdyYXBoIGV4ZWN1dGlvbiBjb250ZXh0IGFuZCBleGVjdXRvciBpbnRlcmZhY2UuXG4gKiBAZGVzY3JpcHRpb24gUmUtZXhwb3J0cyB0aGUgZ3JhcGggZXhlY3V0aW9uIGNvbnRleHQgYW5kIG5vZGUgZXhlY3V0b3IgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvbkNvbnRleHRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoTm9kZUV4ZWN1dG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblJlc3VsdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25GcmFtZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25FbmdpbmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0NvZGVTYW5kYm94RXZhbHVhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Td2l0Y2hHcmFwaE5vZGVFeGVjdXRvclwiO1xuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7R0FJRztBQUNILDZEQUEyQztBQUMzQyx5REFBdUM7QUFDdkMsNERBQTBDO0FBQzFDLDJEQUF5QztBQUN6Qyw0REFBMEM7QUFDMUMsNERBQTBDO0FBQzFDLCtEQUE2QztBQUM3QyxzaUNBQXNpQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvZXhlY3V0aW9uXG4gKiBAc3VtbWFyeSBHcmFwaCBleGVjdXRpb24gY29udGV4dCBhbmQgZXhlY3V0b3IgaW50ZXJmYWNlLlxuICogQGRlc2NyaXB0aW9uIFJlLWV4cG9ydHMgdGhlIGdyYXBoIGV4ZWN1dGlvbiBjb250ZXh0IGFuZCBub2RlIGV4ZWN1dG9yIGludGVyZmFjZS5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25Db250ZXh0LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaE5vZGVFeGVjdXRvci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25SZXN1bHQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uRnJhbWUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uRW5naW5lLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Db2RlU2FuZGJveEV2YWx1YXRvci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IuanNcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOHVMaTh1TGk5emNtTXZaM0poY0dndlpXNW5hVzVsTDJWNFpXTjFkR2x2Ymk5cGJtUmxlQzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUczdPenRIUVVsSE8wRkJRMGdzTWtOQlFYZERPMEZCUTNoRExIVkRRVUZ2UXp0QlFVTndReXd3UTBGQmRVTTdRVUZEZGtNc2VVTkJRWE5ETzBGQlEzUkRMREJEUVVGMVF6dEJRVU4yUXl3d1EwRkJkVU03UVVGRGRrTXNOa05CUVRCRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkFiVzlrZFd4bElHbHVkR1ZuY21GMGFXOXVjeTluY21Gd2FDOWxlR1ZqZFhScGIyNWNiaUFxSUVCemRXMXRZWEo1SUVkeVlYQm9JR1Y0WldOMWRHbHZiaUJqYjI1MFpYaDBJR0Z1WkNCbGVHVmpkWFJ2Y2lCcGJuUmxjbVpoWTJVdVhHNGdLaUJBWkdWelkzSnBjSFJwYjI0Z1VtVXRaWGh3YjNKMGN5QjBhR1VnWjNKaGNHZ2daWGhsWTNWMGFXOXVJR052Ym5SbGVIUWdZVzVrSUc1dlpHVWdaWGhsWTNWMGIzSWdhVzUwWlhKbVlXTmxMbHh1SUNvdlhHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOUhjbUZ3YUVWNFpXTjFkR2x2YmtOdmJuUmxlSFJjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwwZHlZWEJvVG05a1pVVjRaV04xZEc5eVhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTlIY21Gd2FFVjRaV04xZEdsdmJsSmxjM1ZzZEZ3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZSM0poY0doRmVHVmpkWFJwYjI1R2NtRnRaVndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dlIzSmhjR2hGZUdWamRYUnBiMjVGYm1kcGJtVmNJanRjYm1WNGNHOXlkQ0FxSUdaeWIyMGdYQ0l1TDBOdlpHVlRZVzVrWW05NFJYWmhiSFZoZEc5eVhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTlUZDJsMFkyaEhjbUZ3YUU1dlpHVkZlR1ZqZFhSdmNsd2lPMXh1SWwxOSJdfQ==
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ /**
18
+ * @module integrations/graph/engine
19
+ * @summary Graph execution engine (backend-only).
20
+ * @description Reference interpreter for Decaf graph workflows. Executes
21
+ * workflows declared with `@decaf-ts/ui-decorators/graph`, emits events
22
+ * through Decaf's Observable pipeline, supports structured loops, configurable
23
+ * value stores, and pinnable/cacheable nodes.
24
+ *
25
+ * Re-exports `../shared` so backend consumers have a single import surface.
26
+ */
27
+ // Re-export frontend-safe declarations so backend consumers have one surface.
28
+ __exportStar(require("./../shared/index.cjs"), exports);
29
+ __exportStar(require("./constants.cjs"), exports);
30
+ __exportStar(require("./types.cjs"), exports);
31
+ __exportStar(require("./decorators.cjs"), exports);
32
+ __exportStar(require("./errors/GraphExecutionError.cjs"), exports);
33
+ __exportStar(require("./errors/GraphCycleError.cjs"), exports);
34
+ __exportStar(require("./errors/GraphInputError.cjs"), exports);
35
+ __exportStar(require("./errors/GraphLoopLimitError.cjs"), exports);
36
+ __exportStar(require("./errors/GraphPinningError.cjs"), exports);
37
+ __exportStar(require("./errors/GraphPortError.cjs"), exports);
38
+ __exportStar(require("./errors/GraphStoreError.cjs"), exports);
39
+ __exportStar(require("./errors/GraphTopologyError.cjs"), exports);
40
+ __exportStar(require("./events/GraphExecutionEvent.cjs"), exports);
41
+ __exportStar(require("./events/GraphExecutionObserver.cjs"), exports);
42
+ __exportStar(require("./events/GraphExecutionEventEmitter.cjs"), exports);
43
+ __exportStar(require("./events/GraphExecutionEventFactory.cjs"), exports);
44
+ __exportStar(require("./execution/GraphExecutionContext.cjs"), exports);
45
+ __exportStar(require("./execution/GraphNodeExecutor.cjs"), exports);
46
+ __exportStar(require("./execution/GraphExecutionFrame.cjs"), exports);
47
+ __exportStar(require("./execution/GraphExecutionResult.cjs"), exports);
48
+ __exportStar(require("./execution/GraphExecutionEngine.cjs"), exports);
49
+ __exportStar(require("./execution/CodeSandboxEvaluator.cjs"), exports);
50
+ __exportStar(require("./execution/SwitchGraphNodeExecutor.cjs"), exports);
51
+ __exportStar(require("./registry/GraphNodeExecutorRegistry.cjs"), exports);
52
+ __exportStar(require("./registry/GraphNodeExecutorResolver.cjs"), exports);
53
+ __exportStar(require("./store/GraphValueKey.cjs"), exports);
54
+ __exportStar(require("./store/GraphCachedValue.cjs"), exports);
55
+ __exportStar(require("./store/GraphValueStoreAdapter.cjs"), exports);
56
+ __exportStar(require("./store/InMemoryGraphValueStoreAdapter.cjs"), exports);
57
+ __exportStar(require("./store/GraphValueStore.cjs"), exports);
58
+ __exportStar(require("./planning/GraphExecutionPlanNode.cjs"), exports);
59
+ __exportStar(require("./planning/GraphExecutionPlanEdge.cjs"), exports);
60
+ __exportStar(require("./planning/GraphExecutionPlanLayer.cjs"), exports);
61
+ __exportStar(require("./planning/GraphExecutionPlan.cjs"), exports);
62
+ __exportStar(require("./planning/GraphRelationResolver.cjs"), exports);
63
+ __exportStar(require("./planning/GraphExecutionPlanner.cjs"), exports);
64
+ __exportStar(require("./planning/GraphTopology.cjs"), exports);
65
+ // Validation (TASK-215)
66
+ __exportStar(require("./validation/GraphDefinitionValidator.cjs"), exports);
67
+ __exportStar(require("./validation/GraphPortSchemaResolver.cjs"), exports);
68
+ __exportStar(require("./validation/GraphValueValidator.cjs"), exports);
69
+ // Loops (TASK-216)
70
+ __exportStar(require("./loops/GraphConditionEvaluator.cjs"), exports);
71
+ __exportStar(require("./loops/ConditionExpressionEvaluator.cjs"), exports);
72
+ __exportStar(require("./loops/GraphLoopExecutionContext.cjs"), exports);
73
+ __exportStar(require("./loops/ForeachGraphNodeExecutor.cjs"), exports);
74
+ __exportStar(require("./loops/WhileGraphNodeExecutor.cjs"), exports);
75
+ __exportStar(require("./loops/UntilGraphNodeExecutor.cjs"), exports);
76
+ // Pinning (TASK-217/218)
77
+ __exportStar(require("./pinning/GraphPinningMetadata.cjs"), exports);
78
+ __exportStar(require("./pinning/GraphPinningPolicy.cjs"), exports);
79
+ __exportStar(require("./pinning/GraphPinningDependencyResolver.cjs"), exports);
80
+ __exportStar(require("./pinning/GraphPinningService.cjs"), exports);
81
+ // Snapshots (TASK-219)
82
+ __exportStar(require("./snapshots/GraphExecutionSnapshotMapper.cjs"), exports);
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILDhFQUE4RTtBQUM5RSxxQ0FBMEI7QUFFMUIsK0JBQTRCO0FBQzVCLDJCQUF3QjtBQUN4QixnQ0FBNkI7QUFFN0IsZ0RBQTZDO0FBQzdDLDRDQUF5QztBQUN6Qyw0Q0FBeUM7QUFDekMsZ0RBQTZDO0FBQzdDLDhDQUEyQztBQUMzQywyQ0FBd0M7QUFDeEMsNENBQXlDO0FBQ3pDLCtDQUE0QztBQUU1QyxnREFBNkM7QUFDN0MsbURBQWdEO0FBQ2hELHVEQUFvRDtBQUNwRCx1REFBb0Q7QUFFcEQscURBQWtEO0FBQ2xELGlEQUE4QztBQUM5QyxtREFBZ0Q7QUFDaEQsb0RBQWlEO0FBQ2pELG9EQUFpRDtBQUNqRCxvREFBaUQ7QUFDakQsdURBQW9EO0FBRXBELHdEQUFxRDtBQUNyRCx3REFBcUQ7QUFFckQseUNBQXNDO0FBQ3RDLDRDQUF5QztBQUN6QyxrREFBK0M7QUFDL0MsMERBQXVEO0FBQ3ZELDJDQUF3QztBQUV4QyxxREFBa0Q7QUFDbEQscURBQWtEO0FBQ2xELHNEQUFtRDtBQUNuRCxpREFBOEM7QUFDOUMsb0RBQWlEO0FBQ2pELG9EQUFpRDtBQUNqRCw0Q0FBeUM7QUFFekMsd0JBQXdCO0FBQ3hCLHlEQUFzRDtBQUN0RCx3REFBcUQ7QUFDckQsb0RBQWlEO0FBRWpELG1CQUFtQjtBQUNuQixtREFBZ0Q7QUFDaEQsd0RBQXFEO0FBQ3JELHFEQUFrRDtBQUNsRCxvREFBaUQ7QUFDakQsa0RBQStDO0FBQy9DLGtEQUErQztBQUUvQyx5QkFBeUI7QUFDekIsa0RBQStDO0FBQy9DLGdEQUE2QztBQUM3Qyw0REFBeUQ7QUFDekQsaURBQThDO0FBRTlDLHVCQUF1QjtBQUN2Qiw0REFBeUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL2VuZ2luZVxuICogQHN1bW1hcnkgR3JhcGggZXhlY3V0aW9uIGVuZ2luZSAoYmFja2VuZC1vbmx5KS5cbiAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2UgaW50ZXJwcmV0ZXIgZm9yIERlY2FmIGdyYXBoIHdvcmtmbG93cy4gRXhlY3V0ZXNcbiAqIHdvcmtmbG93cyBkZWNsYXJlZCB3aXRoIGBAZGVjYWYtdHMvdWktZGVjb3JhdG9ycy9ncmFwaGAsIGVtaXRzIGV2ZW50c1xuICogdGhyb3VnaCBEZWNhZidzIE9ic2VydmFibGUgcGlwZWxpbmUsIHN1cHBvcnRzIHN0cnVjdHVyZWQgbG9vcHMsIGNvbmZpZ3VyYWJsZVxuICogdmFsdWUgc3RvcmVzLCBhbmQgcGlubmFibGUvY2FjaGVhYmxlIG5vZGVzLlxuICpcbiAqIFJlLWV4cG9ydHMgYC4uL3NoYXJlZGAgc28gYmFja2VuZCBjb25zdW1lcnMgaGF2ZSBhIHNpbmdsZSBpbXBvcnQgc3VyZmFjZS5cbiAqL1xuXG4vLyBSZS1leHBvcnQgZnJvbnRlbmQtc2FmZSBkZWNsYXJhdGlvbnMgc28gYmFja2VuZCBjb25zdW1lcnMgaGF2ZSBvbmUgc3VyZmFjZS5cbmV4cG9ydCAqIGZyb20gXCIuLi9zaGFyZWRcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvcnMvR3JhcGhFeGVjdXRpb25FcnJvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzL0dyYXBoQ3ljbGVFcnJvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzL0dyYXBoSW5wdXRFcnJvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzL0dyYXBoTG9vcExpbWl0RXJyb3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Vycm9ycy9HcmFwaFBpbm5pbmdFcnJvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzL0dyYXBoUG9ydEVycm9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvcnMvR3JhcGhTdG9yZUVycm9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvcnMvR3JhcGhUb3BvbG9neUVycm9yXCI7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50cy9HcmFwaEV4ZWN1dGlvbkV2ZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ldmVudHMvR3JhcGhFeGVjdXRpb25PYnNlcnZlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXZlbnRzL0dyYXBoRXhlY3V0aW9uRXZlbnRFbWl0dGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ldmVudHMvR3JhcGhFeGVjdXRpb25FdmVudEZhY3RvcnlcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vZXhlY3V0aW9uL0dyYXBoRXhlY3V0aW9uQ29udGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXhlY3V0aW9uL0dyYXBoTm9kZUV4ZWN1dG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leGVjdXRpb24vR3JhcGhFeGVjdXRpb25GcmFtZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXhlY3V0aW9uL0dyYXBoRXhlY3V0aW9uUmVzdWx0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leGVjdXRpb24vR3JhcGhFeGVjdXRpb25FbmdpbmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4ZWN1dGlvbi9Db2RlU2FuZGJveEV2YWx1YXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXhlY3V0aW9uL1N3aXRjaEdyYXBoTm9kZUV4ZWN1dG9yXCI7XG5cbmV4cG9ydCAqIGZyb20gXCIuL3JlZ2lzdHJ5L0dyYXBoTm9kZUV4ZWN1dG9yUmVnaXN0cnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlZ2lzdHJ5L0dyYXBoTm9kZUV4ZWN1dG9yUmVzb2x2ZXJcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vc3RvcmUvR3JhcGhWYWx1ZUtleVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RvcmUvR3JhcGhDYWNoZWRWYWx1ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RvcmUvR3JhcGhWYWx1ZVN0b3JlQWRhcHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RvcmUvSW5NZW1vcnlHcmFwaFZhbHVlU3RvcmVBZGFwdGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yZS9HcmFwaFZhbHVlU3RvcmVcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuTm9kZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuRWRnZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhbm5pbmcvR3JhcGhSZWxhdGlvblJlc29sdmVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5uZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYW5uaW5nL0dyYXBoVG9wb2xvZ3lcIjtcblxuLy8gVmFsaWRhdGlvbiAoVEFTSy0yMTUpXG5leHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0aW9uL0dyYXBoRGVmaW5pdGlvblZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmFsaWRhdGlvbi9HcmFwaFBvcnRTY2hlbWFSZXNvbHZlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmFsaWRhdGlvbi9HcmFwaFZhbHVlVmFsaWRhdG9yXCI7XG5cbi8vIExvb3BzIChUQVNLLTIxNilcbmV4cG9ydCAqIGZyb20gXCIuL2xvb3BzL0dyYXBoQ29uZGl0aW9uRXZhbHVhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sb29wcy9Db25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sb29wcy9HcmFwaExvb3BFeGVjdXRpb25Db250ZXh0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sb29wcy9Gb3JlYWNoR3JhcGhOb2RlRXhlY3V0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvb3BzL1doaWxlR3JhcGhOb2RlRXhlY3V0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvb3BzL1VudGlsR3JhcGhOb2RlRXhlY3V0b3JcIjtcblxuLy8gUGlubmluZyAoVEFTSy0yMTcvMjE4KVxuZXhwb3J0ICogZnJvbSBcIi4vcGlubmluZy9HcmFwaFBpbm5pbmdNZXRhZGF0YVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGlubmluZy9HcmFwaFBpbm5pbmdQb2xpY3lcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Bpbm5pbmcvR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9waW5uaW5nL0dyYXBoUGlubmluZ1NlcnZpY2VcIjtcblxuLy8gU25hcHNob3RzIChUQVNLLTIxOSlcbmV4cG9ydCAqIGZyb20gXCIuL3NuYXBzaG90cy9HcmFwaEV4ZWN1dGlvblNuYXBzaG90TWFwcGVyXCI7XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsOEVBQThFO0FBQzlFLHVEQUFxQztBQUNyQyxpREFBK0I7QUFDL0IsNkNBQTJCO0FBQzNCLGtEQUFnQztBQUNoQyxrRUFBZ0Q7QUFDaEQsOERBQTRDO0FBQzVDLDhEQUE0QztBQUM1QyxrRUFBZ0Q7QUFDaEQsZ0VBQThDO0FBQzlDLDZEQUEyQztBQUMzQyw4REFBNEM7QUFDNUMsaUVBQStDO0FBQy9DLGtFQUFnRDtBQUNoRCxxRUFBbUQ7QUFDbkQseUVBQXVEO0FBQ3ZELHlFQUF1RDtBQUN2RCx1RUFBcUQ7QUFDckQsbUVBQWlEO0FBQ2pELHFFQUFtRDtBQUNuRCxzRUFBb0Q7QUFDcEQsc0VBQW9EO0FBQ3BELHNFQUFvRDtBQUNwRCx5RUFBdUQ7QUFDdkQsMEVBQXdEO0FBQ3hELDBFQUF3RDtBQUN4RCwyREFBeUM7QUFDekMsOERBQTRDO0FBQzVDLG9FQUFrRDtBQUNsRCw0RUFBMEQ7QUFDMUQsNkRBQTJDO0FBQzNDLHVFQUFxRDtBQUNyRCx1RUFBcUQ7QUFDckQsd0VBQXNEO0FBQ3RELG1FQUFpRDtBQUNqRCxzRUFBb0Q7QUFDcEQsc0VBQW9EO0FBQ3BELDhEQUE0QztBQUM1Qyx3QkFBd0I7QUFDeEIsMkVBQXlEO0FBQ3pELDBFQUF3RDtBQUN4RCxzRUFBb0Q7QUFDcEQsbUJBQW1CO0FBQ25CLHFFQUFtRDtBQUNuRCwwRUFBd0Q7QUFDeEQsdUVBQXFEO0FBQ3JELHNFQUFvRDtBQUNwRCxvRUFBa0Q7QUFDbEQsb0VBQWtEO0FBQ2xELHlCQUF5QjtBQUN6QixvRUFBa0Q7QUFDbEQsa0VBQWdEO0FBQ2hELDhFQUE0RDtBQUM1RCxtRUFBaUQ7QUFDakQsdUJBQXVCO0FBQ3ZCLDhFQUE0RDtBQUM1RCwwNUtBQTA1SyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvZW5naW5lXG4gKiBAc3VtbWFyeSBHcmFwaCBleGVjdXRpb24gZW5naW5lIChiYWNrZW5kLW9ubHkpLlxuICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jZSBpbnRlcnByZXRlciBmb3IgRGVjYWYgZ3JhcGggd29ya2Zsb3dzLiBFeGVjdXRlc1xuICogd29ya2Zsb3dzIGRlY2xhcmVkIHdpdGggYEBkZWNhZi10cy91aS1kZWNvcmF0b3JzL2dyYXBoYCwgZW1pdHMgZXZlbnRzXG4gKiB0aHJvdWdoIERlY2FmJ3MgT2JzZXJ2YWJsZSBwaXBlbGluZSwgc3VwcG9ydHMgc3RydWN0dXJlZCBsb29wcywgY29uZmlndXJhYmxlXG4gKiB2YWx1ZSBzdG9yZXMsIGFuZCBwaW5uYWJsZS9jYWNoZWFibGUgbm9kZXMuXG4gKlxuICogUmUtZXhwb3J0cyBgLi4vc2hhcmVkYCBzbyBiYWNrZW5kIGNvbnN1bWVycyBoYXZlIGEgc2luZ2xlIGltcG9ydCBzdXJmYWNlLlxuICovXG4vLyBSZS1leHBvcnQgZnJvbnRlbmQtc2FmZSBkZWNsYXJhdGlvbnMgc28gYmFja2VuZCBjb25zdW1lcnMgaGF2ZSBvbmUgc3VyZmFjZS5cbmV4cG9ydCAqIGZyb20gXCIuLy4uL3NoYXJlZC9pbmRleC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9ycy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzL0dyYXBoRXhlY3V0aW9uRXJyb3IuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Vycm9ycy9HcmFwaEN5Y2xlRXJyb3IuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Vycm9ycy9HcmFwaElucHV0RXJyb3IuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Vycm9ycy9HcmFwaExvb3BMaW1pdEVycm9yLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvcnMvR3JhcGhQaW5uaW5nRXJyb3IuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Vycm9ycy9HcmFwaFBvcnRFcnJvci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzL0dyYXBoU3RvcmVFcnJvci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzL0dyYXBoVG9wb2xvZ3lFcnJvci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXZlbnRzL0dyYXBoRXhlY3V0aW9uRXZlbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50cy9HcmFwaEV4ZWN1dGlvbk9ic2VydmVyLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ldmVudHMvR3JhcGhFeGVjdXRpb25FdmVudEVtaXR0ZXIuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50cy9HcmFwaEV4ZWN1dGlvbkV2ZW50RmFjdG9yeS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXhlY3V0aW9uL0dyYXBoRXhlY3V0aW9uQ29udGV4dC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXhlY3V0aW9uL0dyYXBoTm9kZUV4ZWN1dG9yLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leGVjdXRpb24vR3JhcGhFeGVjdXRpb25GcmFtZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXhlY3V0aW9uL0dyYXBoRXhlY3V0aW9uUmVzdWx0LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leGVjdXRpb24vR3JhcGhFeGVjdXRpb25FbmdpbmUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4ZWN1dGlvbi9Db2RlU2FuZGJveEV2YWx1YXRvci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXhlY3V0aW9uL1N3aXRjaEdyYXBoTm9kZUV4ZWN1dG9yLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZWdpc3RyeS9HcmFwaE5vZGVFeGVjdXRvclJlZ2lzdHJ5LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZWdpc3RyeS9HcmFwaE5vZGVFeGVjdXRvclJlc29sdmVyLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yZS9HcmFwaFZhbHVlS2V5LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yZS9HcmFwaENhY2hlZFZhbHVlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yZS9HcmFwaFZhbHVlU3RvcmVBZGFwdGVyLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yZS9Jbk1lbW9yeUdyYXBoVmFsdWVTdG9yZUFkYXB0ZXIuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0b3JlL0dyYXBoVmFsdWVTdG9yZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuTm9kZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuRWRnZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXIuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhbm5pbmcvR3JhcGhSZWxhdGlvblJlc29sdmVyLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5uZXIuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYW5uaW5nL0dyYXBoVG9wb2xvZ3kuanNcIjtcbi8vIFZhbGlkYXRpb24gKFRBU0stMjE1KVxuZXhwb3J0ICogZnJvbSBcIi4vdmFsaWRhdGlvbi9HcmFwaERlZmluaXRpb25WYWxpZGF0b3IuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRpb24vR3JhcGhQb3J0U2NoZW1hUmVzb2x2ZXIuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRpb24vR3JhcGhWYWx1ZVZhbGlkYXRvci5qc1wiO1xuLy8gTG9vcHMgKFRBU0stMjE2KVxuZXhwb3J0ICogZnJvbSBcIi4vbG9vcHMvR3JhcGhDb25kaXRpb25FdmFsdWF0b3IuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvb3BzL0NvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3IuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvb3BzL0dyYXBoTG9vcEV4ZWN1dGlvbkNvbnRleHQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvb3BzL0ZvcmVhY2hHcmFwaE5vZGVFeGVjdXRvci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbG9vcHMvV2hpbGVHcmFwaE5vZGVFeGVjdXRvci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbG9vcHMvVW50aWxHcmFwaE5vZGVFeGVjdXRvci5qc1wiO1xuLy8gUGlubmluZyAoVEFTSy0yMTcvMjE4KVxuZXhwb3J0ICogZnJvbSBcIi4vcGlubmluZy9HcmFwaFBpbm5pbmdNZXRhZGF0YS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGlubmluZy9HcmFwaFBpbm5pbmdQb2xpY3kuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Bpbm5pbmcvR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9waW5uaW5nL0dyYXBoUGlubmluZ1NlcnZpY2UuanNcIjtcbi8vIFNuYXBzaG90cyAoVEFTSy0yMTkpXG5leHBvcnQgKiBmcm9tIFwiLi9zbmFwc2hvdHMvR3JhcGhFeGVjdXRpb25TbmFwc2hvdE1hcHBlci5qc1wiO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYVc1a1pYZ3Vhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk4dUxpOXpjbU12WjNKaGNHZ3ZaVzVuYVc1bEwybHVaR1Y0TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPenM3T3pzN096czdSMEZUUnp0QlFVVklMRGhGUVVFNFJUdEJRVU01UlN4eFEwRkJNRUk3UVVGRk1VSXNLMEpCUVRSQ08wRkJRelZDTERKQ1FVRjNRanRCUVVONFFpeG5RMEZCTmtJN1FVRkZOMElzWjBSQlFUWkRPMEZCUXpkRExEUkRRVUY1UXp0QlFVTjZReXcwUTBGQmVVTTdRVUZEZWtNc1owUkJRVFpETzBGQlF6ZERMRGhEUVVFeVF6dEJRVU16UXl3eVEwRkJkME03UVVGRGVFTXNORU5CUVhsRE8wRkJRM3BETEN0RFFVRTBRenRCUVVVMVF5eG5SRUZCTmtNN1FVRkROME1zYlVSQlFXZEVPMEZCUTJoRUxIVkVRVUZ2UkR0QlFVTndSQ3gxUkVGQmIwUTdRVUZGY0VRc2NVUkJRV3RFTzBGQlEyeEVMR2xFUVVFNFF6dEJRVU01UXl4dFJFRkJaMFE3UVVGRGFFUXNiMFJCUVdsRU8wRkJRMnBFTEc5RVFVRnBSRHRCUVVOcVJDeHZSRUZCYVVRN1FVRkRha1FzZFVSQlFXOUVPMEZCUlhCRUxIZEVRVUZ4UkR0QlFVTnlSQ3gzUkVGQmNVUTdRVUZGY2tRc2VVTkJRWE5ETzBGQlEzUkRMRFJEUVVGNVF6dEJRVU42UXl4clJFRkJLME03UVVGREwwTXNNRVJCUVhWRU8wRkJRM1pFTERKRFFVRjNRenRCUVVWNFF5eHhSRUZCYTBRN1FVRkRiRVFzY1VSQlFXdEVPMEZCUTJ4RUxITkVRVUZ0UkR0QlFVTnVSQ3hwUkVGQk9FTTdRVUZET1VNc2IwUkJRV2xFTzBGQlEycEVMRzlFUVVGcFJEdEJRVU5xUkN3MFEwRkJlVU03UVVGRmVrTXNkMEpCUVhkQ08wRkJRM2hDTEhsRVFVRnpSRHRCUVVOMFJDeDNSRUZCY1VRN1FVRkRja1FzYjBSQlFXbEVPMEZCUldwRUxHMUNRVUZ0UWp0QlFVTnVRaXh0UkVGQlowUTdRVUZEYUVRc2QwUkJRWEZFTzBGQlEzSkVMSEZFUVVGclJEdEJRVU5zUkN4dlJFRkJhVVE3UVVGRGFrUXNhMFJCUVN0RE8wRkJReTlETEd0RVFVRXJRenRCUVVVdlF5eDVRa0ZCZVVJN1FVRkRla0lzYTBSQlFTdERPMEZCUXk5RExHZEVRVUUyUXp0QlFVTTNReXcwUkVGQmVVUTdRVUZEZWtRc2FVUkJRVGhETzBGQlJUbERMSFZDUVVGMVFqdEJRVU4yUWl3MFJFRkJlVVFpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVCdGIyUjFiR1VnYVc1MFpXZHlZWFJwYjI1ekwyZHlZWEJvTDJWdVoybHVaVnh1SUNvZ1FITjFiVzFoY25rZ1IzSmhjR2dnWlhobFkzVjBhVzl1SUdWdVoybHVaU0FvWW1GamEyVnVaQzF2Ym14NUtTNWNiaUFxSUVCa1pYTmpjbWx3ZEdsdmJpQlNaV1psY21WdVkyVWdhVzUwWlhKd2NtVjBaWElnWm05eUlFUmxZMkZtSUdkeVlYQm9JSGR2Y210bWJHOTNjeTRnUlhobFkzVjBaWE5jYmlBcUlIZHZjbXRtYkc5M2N5QmtaV05zWVhKbFpDQjNhWFJvSUdCQVpHVmpZV1l0ZEhNdmRXa3RaR1ZqYjNKaGRHOXljeTluY21Gd2FHQXNJR1Z0YVhSeklHVjJaVzUwYzF4dUlDb2dkR2h5YjNWbmFDQkVaV05oWmlkeklFOWljMlZ5ZG1GaWJHVWdjR2x3Wld4cGJtVXNJSE4xY0hCdmNuUnpJSE4wY25WamRIVnlaV1FnYkc5dmNITXNJR052Ym1acFozVnlZV0pzWlZ4dUlDb2dkbUZzZFdVZ2MzUnZjbVZ6TENCaGJtUWdjR2x1Ym1GaWJHVXZZMkZqYUdWaFlteGxJRzV2WkdWekxseHVJQ3BjYmlBcUlGSmxMV1Y0Y0c5eWRITWdZQzR1TDNOb1lYSmxaR0FnYzI4Z1ltRmphMlZ1WkNCamIyNXpkVzFsY25NZ2FHRjJaU0JoSUhOcGJtZHNaU0JwYlhCdmNuUWdjM1Z5Wm1GalpTNWNiaUFxTDF4dVhHNHZMeUJTWlMxbGVIQnZjblFnWm5KdmJuUmxibVF0YzJGbVpTQmtaV05zWVhKaGRHbHZibk1nYzI4Z1ltRmphMlZ1WkNCamIyNXpkVzFsY25NZ2FHRjJaU0J2Ym1VZ2MzVnlabUZqWlM1Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUxpOXphR0Z5WldSY0lqdGNibHh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2WTI5dWMzUmhiblJ6WENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOTBlWEJsYzF3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZaR1ZqYjNKaGRHOXljMXdpTzF4dVhHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOWxjbkp2Y25NdlIzSmhjR2hGZUdWamRYUnBiMjVGY25KdmNsd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2WlhKeWIzSnpMMGR5WVhCb1EzbGpiR1ZGY25KdmNsd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2WlhKeWIzSnpMMGR5WVhCb1NXNXdkWFJGY25KdmNsd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2WlhKeWIzSnpMMGR5WVhCb1RHOXZjRXhwYldsMFJYSnliM0pjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwyVnljbTl5Y3k5SGNtRndhRkJwYm01cGJtZEZjbkp2Y2x3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZaWEp5YjNKekwwZHlZWEJvVUc5eWRFVnljbTl5WENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOWxjbkp2Y25NdlIzSmhjR2hUZEc5eVpVVnljbTl5WENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOWxjbkp2Y25NdlIzSmhjR2hVYjNCdmJHOW5lVVZ5Y205eVhDSTdYRzVjYm1WNGNHOXlkQ0FxSUdaeWIyMGdYQ0l1TDJWMlpXNTBjeTlIY21Gd2FFVjRaV04xZEdsdmJrVjJaVzUwWENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOWxkbVZ1ZEhNdlIzSmhjR2hGZUdWamRYUnBiMjVQWW5ObGNuWmxjbHdpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dlpYWmxiblJ6TDBkeVlYQm9SWGhsWTNWMGFXOXVSWFpsYm5SRmJXbDBkR1Z5WENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOWxkbVZ1ZEhNdlIzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRFWmhZM1J2Y25sY0lqdGNibHh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2WlhobFkzVjBhVzl1TDBkeVlYQm9SWGhsWTNWMGFXOXVRMjl1ZEdWNGRGd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2WlhobFkzVjBhVzl1TDBkeVlYQm9UbTlrWlVWNFpXTjFkRzl5WENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOWxlR1ZqZFhScGIyNHZSM0poY0doRmVHVmpkWFJwYjI1R2NtRnRaVndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dlpYaGxZM1YwYVc5dUwwZHlZWEJvUlhobFkzVjBhVzl1VW1WemRXeDBYQ0k3WEc1bGVIQnZjblFnS2lCbWNtOXRJRndpTGk5bGVHVmpkWFJwYjI0dlIzSmhjR2hGZUdWamRYUnBiMjVGYm1kcGJtVmNJanRjYm1WNGNHOXlkQ0FxSUdaeWIyMGdYQ0l1TDJWNFpXTjFkR2x2Ymk5RGIyUmxVMkZ1WkdKdmVFVjJZV3gxWVhSdmNsd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2WlhobFkzVjBhVzl1TDFOM2FYUmphRWR5WVhCb1RtOWtaVVY0WldOMWRHOXlYQ0k3WEc1Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwzSmxaMmx6ZEhKNUwwZHlZWEJvVG05a1pVVjRaV04xZEc5eVVtVm5hWE4wY25sY0lqdGNibVY0Y0c5eWRDQXFJR1p5YjIwZ1hDSXVMM0psWjJsemRISjVMMGR5WVhCb1RtOWtaVVY0WldOMWRHOXlVbVZ6YjJ4MlpYSmNJanRjYmx4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmMzUnZjbVV2UjNKaGNHaFdZV3gxWlV0bGVWd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2YzNSdmNtVXZSM0poY0doRFlXTm9aV1JXWVd4MVpWd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2YzNSdmNtVXZSM0poY0doV1lXeDFaVk4wYjNKbFFXUmhjSFJsY2x3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZjM1J2Y21VdlNXNU5aVzF2Y25sSGNtRndhRlpoYkhWbFUzUnZjbVZCWkdGd2RHVnlYQ0k3WEc1bGVIQnZjblFnS2lCbWNtOXRJRndpTGk5emRHOXlaUzlIY21Gd2FGWmhiSFZsVTNSdmNtVmNJanRjYmx4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmNHeGhibTVwYm1jdlIzSmhjR2hGZUdWamRYUnBiMjVRYkdGdVRtOWtaVndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmNHeGhibTVwYm1jdlIzSmhjR2hGZUdWamRYUnBiMjVRYkdGdVJXUm5aVndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmNHeGhibTVwYm1jdlIzSmhjR2hGZUdWamRYUnBiMjVRYkdGdVRHRjVaWEpjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwzQnNZVzV1YVc1bkwwZHlZWEJvUlhobFkzVjBhVzl1VUd4aGJsd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2Y0d4aGJtNXBibWN2UjNKaGNHaFNaV3hoZEdsdmJsSmxjMjlzZG1WeVhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTl3YkdGdWJtbHVaeTlIY21Gd2FFVjRaV04xZEdsdmJsQnNZVzV1WlhKY0lqdGNibVY0Y0c5eWRDQXFJR1p5YjIwZ1hDSXVMM0JzWVc1dWFXNW5MMGR5WVhCb1ZHOXdiMnh2WjNsY0lqdGNibHh1THk4Z1ZtRnNhV1JoZEdsdmJpQW9WRUZUU3kweU1UVXBYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTkyWVd4cFpHRjBhVzl1TDBkeVlYQm9SR1ZtYVc1cGRHbHZibFpoYkdsa1lYUnZjbHdpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmRtRnNhV1JoZEdsdmJpOUhjbUZ3YUZCdmNuUlRZMmhsYldGU1pYTnZiSFpsY2x3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZkbUZzYVdSaGRHbHZiaTlIY21Gd2FGWmhiSFZsVm1Gc2FXUmhkRzl5WENJN1hHNWNiaTh2SUV4dmIzQnpJQ2hVUVZOTExUSXhOaWxjYm1WNGNHOXlkQ0FxSUdaeWIyMGdYQ0l1TDJ4dmIzQnpMMGR5WVhCb1EyOXVaR2wwYVc5dVJYWmhiSFZoZEc5eVhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTlzYjI5d2N5OURiMjVrYVhScGIyNUZlSEJ5WlhOemFXOXVSWFpoYkhWaGRHOXlYQ0k3WEc1bGVIQnZjblFnS2lCbWNtOXRJRndpTGk5c2IyOXdjeTlIY21Gd2FFeHZiM0JGZUdWamRYUnBiMjVEYjI1MFpYaDBYQ0k3WEc1bGVIQnZjblFnS2lCbWNtOXRJRndpTGk5c2IyOXdjeTlHYjNKbFlXTm9SM0poY0doT2IyUmxSWGhsWTNWMGIzSmNJanRjYm1WNGNHOXlkQ0FxSUdaeWIyMGdYQ0l1TDJ4dmIzQnpMMWRvYVd4bFIzSmhjR2hPYjJSbFJYaGxZM1YwYjNKY0lqdGNibVY0Y0c5eWRDQXFJR1p5YjIwZ1hDSXVMMnh2YjNCekwxVnVkR2xzUjNKaGNHaE9iMlJsUlhobFkzVjBiM0pjSWp0Y2JseHVMeThnVUdsdWJtbHVaeUFvVkVGVFN5MHlNVGN2TWpFNEtWeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZjR2x1Ym1sdVp5OUhjbUZ3YUZCcGJtNXBibWROWlhSaFpHRjBZVndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmNHbHVibWx1Wnk5SGNtRndhRkJwYm01cGJtZFFiMnhwWTNsY0lqdGNibVY0Y0c5eWRDQXFJR1p5YjIwZ1hDSXVMM0JwYm01cGJtY3ZSM0poY0doUWFXNXVhVzVuUkdWd1pXNWtaVzVqZVZKbGMyOXNkbVZ5WENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOXdhVzV1YVc1bkwwZHlZWEJvVUdsdWJtbHVaMU5sY25acFkyVmNJanRjYmx4dUx5OGdVMjVoY0hOb2IzUnpJQ2hVUVZOTExUSXhPU2xjYm1WNGNHOXlkQ0FxSUdaeWIyMGdYQ0l1TDNOdVlYQnphRzkwY3k5SGNtRndhRVY0WldOMWRHbHZibE51WVhCemFHOTBUV0Z3Y0dWeVhDSTdYRzRpWFgwPSJdfQ==
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConditionExpressionEvaluator = void 0;
4
+ const GraphExecutionError_js_1 = require("./../errors/GraphExecutionError.cjs");
5
+ /**
6
+ * Evaluates a {@link ConditionExpression} against the given state.
7
+ *
8
+ * `ExprValue` resolution:
9
+ * - `{ const: x }` → the literal value `x`.
10
+ * - `{ path: "a.b" }` → dotted-path lookup into `state`.
11
+ * - `{ step: "nodeId", path: "out" }` → cross-node reference; in v1 the state
12
+ * is expected to contain a `nodes` map keyed by node id (reserved for future
13
+ * multi-step evaluation; falls back to `state` lookup when absent).
14
+ */
15
+ class ConditionExpressionEvaluator {
16
+ /**
17
+ * Evaluates a condition expression to a boolean.
18
+ *
19
+ * @param expr - The condition expression.
20
+ * @param state - The current evaluation state (loop state or execution values).
21
+ * @returns `true` when the expression evaluates to a truthy/positive result.
22
+ */
23
+ evaluate(expr, state) {
24
+ switch (expr.op) {
25
+ case "eq":
26
+ return this.resolveValue(expr.left, state) === this.resolveValue(expr.right, state);
27
+ case "neq":
28
+ return this.resolveValue(expr.left, state) !== this.resolveValue(expr.right, state);
29
+ case "gt":
30
+ return Number(this.resolveValue(expr.left, state)) > Number(this.resolveValue(expr.right, state));
31
+ case "gte":
32
+ return Number(this.resolveValue(expr.left, state)) >= Number(this.resolveValue(expr.right, state));
33
+ case "lt":
34
+ return Number(this.resolveValue(expr.left, state)) < Number(this.resolveValue(expr.right, state));
35
+ case "lte":
36
+ return Number(this.resolveValue(expr.left, state)) <= Number(this.resolveValue(expr.right, state));
37
+ case "and":
38
+ return expr.conditions.every((c) => this.evaluate(c, state));
39
+ case "or":
40
+ return expr.conditions.some((c) => this.evaluate(c, state));
41
+ case "not":
42
+ return !this.evaluate(expr.condition, state);
43
+ case "exists":
44
+ return this.resolveValue(expr.value, state) !== undefined && this.resolveValue(expr.value, state) !== null;
45
+ default:
46
+ throw new GraphExecutionError_js_1.GraphExecutionError(`Unknown ConditionExpression op '${expr.op}'`, "GRAPH_UNKNOWN_CONDITION_OP", { expr });
47
+ }
48
+ }
49
+ /**
50
+ * Resolves an {@link ExprValue} against the current state.
51
+ */
52
+ resolveValue(ref, state) {
53
+ if ("const" in ref) {
54
+ return ref.const;
55
+ }
56
+ if ("path" in ref && !("step" in ref)) {
57
+ return this.resolvePath(ref.path, state);
58
+ }
59
+ if ("step" in ref && "path" in ref) {
60
+ const nodes = state?.["nodes"];
61
+ if (nodes && typeof nodes === "object") {
62
+ const nodeState = nodes[ref.step];
63
+ return this.resolvePath(ref.path, nodeState);
64
+ }
65
+ return this.resolvePath(ref.path, state);
66
+ }
67
+ throw new GraphExecutionError_js_1.GraphExecutionError("Invalid ExprValue: must have `const`, `path`, or `step`+`path`", "GRAPH_INVALID_EXPR_VALUE", { ref });
68
+ }
69
+ /**
70
+ * Resolves a dotted path into a target object.
71
+ */
72
+ resolvePath(path, target) {
73
+ if (!path)
74
+ return target;
75
+ const parts = path.split(".");
76
+ let current = target;
77
+ for (const part of parts) {
78
+ if (current == null)
79
+ return undefined;
80
+ current = current[part];
81
+ }
82
+ return current;
83
+ }
84
+ }
85
+ exports.ConditionExpressionEvaluator = ConditionExpressionEvaluator;
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9lbmdpbmUvbG9vcHMvQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMkNBQXNDO0FBRXBFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyw0QkFBNEI7SUFDdkM7Ozs7OztPQU1HO0lBQ0gsUUFBUSxDQUFDLElBQXlCLEVBQUUsS0FBYztRQUNoRCxRQUFRLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNoQixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RGLEtBQUssS0FBSztnQkFDUixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEYsS0FBSyxJQUFJO2dCQUNQLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNwRyxLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENB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QUFFLE9BQU8sTUFBTSxDQUFDO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsSUFBSSxPQUFPLEdBQVksTUFBTSxDQUFDO1FBQzlCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxPQUFPLElBQUksSUFBSTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUN0QyxPQUFPLEdBQUksT0FBbUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9sb29wcy9Db25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yXG4gKiBAc3VtbWFyeSBFdmFsdWF0b3IgZm9yIHRoZSBBTEZSRUQtNSBgQ29uZGl0aW9uRXhwcmVzc2lvbmAgRFNMIChERUNBRi0zMiDCpzIyLjMpLlxuICogQGRlc2NyaXB0aW9uIEV2YWx1YXRlcyBkZWNsYXJhdGl2ZSwgc2VyaWFsaXphYmxlIGNvbmRpdGlvbiBleHByZXNzaW9ucyB3aXRoXG4gKiBgZXFgL2BuZXFgL2BndGAvYGd0ZWAvYGx0YC9gbHRlYC9gYW5kYC9gb3JgL2Bub3RgL2BleGlzdHNgIG9wZXJhdG9ycyBhbmRcbiAqIGBFeHByVmFsdWVgIHJlZmVyZW5jZXMgKGB7Y29uc3R9YCwgYHtwYXRofWAsIGB7c3RlcCwgcGF0aH1gKS5cbiAqL1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25FeHByZXNzaW9uLCBFeHByVmFsdWUgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3R5cGVzXCI7XG5pbXBvcnQgeyBHcmFwaEV4ZWN1dGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9HcmFwaEV4ZWN1dGlvbkVycm9yXCI7XG5cbi8qKlxuICogRXZhbHVhdGVzIGEge0BsaW5rIENvbmRpdGlvbkV4cHJlc3Npb259IGFnYWluc3QgdGhlIGdpdmVuIHN0YXRlLlxuICpcbiAqIGBFeHByVmFsdWVgIHJlc29sdXRpb246XG4gKiAtIGB7IGNvbnN0OiB4IH1gIOKGkiB0aGUgbGl0ZXJhbCB2YWx1ZSBgeGAuXG4gKiAtIGB7IHBhdGg6IFwiYS5iXCIgfWAg4oaSIGRvdHRlZC1wYXRoIGxvb2t1cCBpbnRvIGBzdGF0ZWAuXG4gKiAtIGB7IHN0ZXA6IFwibm9kZUlkXCIsIHBhdGg6IFwib3V0XCIgfWAg4oaSIGNyb3NzLW5vZGUgcmVmZXJlbmNlOyBpbiB2MSB0aGUgc3RhdGVcbiAqICAgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBhIGBub2Rlc2AgbWFwIGtleWVkIGJ5IG5vZGUgaWQgKHJlc2VydmVkIGZvciBmdXR1cmVcbiAqICAgbXVsdGktc3RlcCBldmFsdWF0aW9uOyBmYWxscyBiYWNrIHRvIGBzdGF0ZWAgbG9va3VwIHdoZW4gYWJzZW50KS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3Ige1xuICAvKipcbiAgICogRXZhbHVhdGVzIGEgY29uZGl0aW9uIGV4cHJlc3Npb24gdG8gYSBib29sZWFuLlxuICAgKlxuICAgKiBAcGFyYW0gZXhwciAtIFRoZSBjb25kaXRpb24gZXhwcmVzc2lvbi5cbiAgICogQHBhcmFtIHN0YXRlIC0gVGhlIGN1cnJlbnQgZXZhbHVhdGlvbiBzdGF0ZSAobG9vcCBzdGF0ZSBvciBleGVjdXRpb24gdmFsdWVzKS5cbiAgICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGEgdHJ1dGh5L3Bvc2l0aXZlIHJlc3VsdC5cbiAgICovXG4gIGV2YWx1YXRlKGV4cHI6IENvbmRpdGlvbkV4cHJlc3Npb24sIHN0YXRlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoIChleHByLm9wKSB7XG4gICAgICBjYXNlIFwiZXFcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIubGVmdCwgc3RhdGUpID09PSB0aGlzLnJlc29sdmVWYWx1ZShleHByLnJpZ2h0LCBzdGF0ZSk7XG4gICAgICBjYXNlIFwibmVxXCI6XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVWYWx1ZShleHByLmxlZnQsIHN0YXRlKSAhPT0gdGhpcy5yZXNvbHZlVmFsdWUoZXhwci5yaWdodCwgc3RhdGUpO1xuICAgICAgY2FzZSBcImd0XCI6XG4gICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5yZXNvbHZlVmFsdWUoZXhwci5sZWZ0LCBzdGF0ZSkpID4gTnVtYmVyKHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIucmlnaHQsIHN0YXRlKSk7XG4gICAgICBjYXNlIFwiZ3RlXCI6XG4gICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5yZXNvbHZlVmFsdWUoZXhwci5sZWZ0LCBzdGF0ZSkpID49IE51bWJlcih0aGlzLnJlc29sdmVWYWx1ZShleHByLnJpZ2h0LCBzdGF0ZSkpO1xuICAgICAgY2FzZSBcImx0XCI6XG4gICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5yZXNvbHZlVmFsdWUoZXhwci5sZWZ0LCBzdGF0ZSkpIDwgTnVtYmVyKHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIucmlnaHQsIHN0YXRlKSk7XG4gICAgICBjYXNlIFwibHRlXCI6XG4gICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5yZXNvbHZlVmFsdWUoZXhwci5sZWZ0LCBzdGF0ZSkpIDw9IE51bWJlcih0aGlzLnJlc29sdmVWYWx1ZShleHByLnJpZ2h0LCBzdGF0ZSkpO1xuICAgICAgY2FzZSBcImFuZFwiOlxuICAgICAgICByZXR1cm4gZXhwci5jb25kaXRpb25zLmV2ZXJ5KChjKSA9PiB0aGlzLmV2YWx1YXRlKGMsIHN0YXRlKSk7XG4gICAgICBjYXNlIFwib3JcIjpcbiAgICAgICAgcmV0dXJuIGV4cHIuY29uZGl0aW9ucy5zb21lKChjKSA9PiB0aGlzLmV2YWx1YXRlKGMsIHN0YXRlKSk7XG4gICAgICBjYXNlIFwibm90XCI6XG4gICAgICAgIHJldHVybiAhdGhpcy5ldmFsdWF0ZShleHByLmNvbmRpdGlvbiwgc3RhdGUpO1xuICAgICAgY2FzZSBcImV4aXN0c1wiOlxuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlVmFsdWUoZXhwci52YWx1ZSwgc3RhdGUpICE9PSB1bmRlZmluZWQgJiYgdGhpcy5yZXNvbHZlVmFsdWUoZXhwci52YWx1ZSwgc3RhdGUpICE9PSBudWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICAgICAgYFVua25vd24gQ29uZGl0aW9uRXhwcmVzc2lvbiBvcCAnJHsoZXhwciBhcyB7IG9wOiBzdHJpbmcgfSkub3B9J2AsXG4gICAgICAgICAgXCJHUkFQSF9VTktOT1dOX0NPTkRJVElPTl9PUFwiLFxuICAgICAgICAgIHsgZXhwciB9XG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGFuIHtAbGluayBFeHByVmFsdWV9IGFnYWluc3QgdGhlIGN1cnJlbnQgc3RhdGUuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVWYWx1ZShyZWY6IEV4cHJWYWx1ZSwgc3RhdGU6IHVua25vd24pOiB1bmtub3duIHtcbiAgICBpZiAoXCJjb25zdFwiIGluIHJlZikge1xuICAgICAgcmV0dXJuIHJlZi5jb25zdDtcbiAgICB9XG4gICAgaWYgKFwicGF0aFwiIGluIHJlZiAmJiAhKFwic3RlcFwiIGluIHJlZikpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc29sdmVQYXRoKHJlZi5wYXRoLCBzdGF0ZSk7XG4gICAgfVxuICAgIGlmIChcInN0ZXBcIiBpbiByZWYgJiYgXCJwYXRoXCIgaW4gcmVmKSB7XG4gICAgICBjb25zdCBub2RlcyA9IChzdGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwpPy5bXCJub2Rlc1wiXTtcbiAgICAgIGlmIChub2RlcyAmJiB0eXBlb2Ygbm9kZXMgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3Qgbm9kZVN0YXRlID0gKG5vZGVzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtyZWYuc3RlcF07XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVQYXRoKHJlZi5wYXRoLCBub2RlU3RhdGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVBhdGgocmVmLnBhdGgsIHN0YXRlKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICBcIkludmFsaWQgRXhwclZhbHVlOiBtdXN0IGhhdmUgYGNvbnN0YCwgYHBhdGhgLCBvciBgc3RlcGArYHBhdGhgXCIsXG4gICAgICBcIkdSQVBIX0lOVkFMSURfRVhQUl9WQUxVRVwiLFxuICAgICAgeyByZWYgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgYSBkb3R0ZWQgcGF0aCBpbnRvIGEgdGFyZ2V0IG9iamVjdC5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZVBhdGgocGF0aDogc3RyaW5nLCB0YXJnZXQ6IHVua25vd24pOiB1bmtub3duIHtcbiAgICBpZiAoIXBhdGgpIHJldHVybiB0YXJnZXQ7XG4gICAgY29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KFwiLlwiKTtcbiAgICBsZXQgY3VycmVudDogdW5rbm93biA9IHRhcmdldDtcbiAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgIGlmIChjdXJyZW50ID09IG51bGwpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBjdXJyZW50ID0gKGN1cnJlbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3BhcnRdO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxufVxuIl19
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkNvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0VBQXlFO0FBQ3pFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsNEJBQTRCO0lBQ3JDOzs7Ozs7T0FNRztJQUNILFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSztRQUNoQixRQUFRLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNkLEtBQUssSUFBSTtnQkFDTCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDeEYsS0FBSyxLQUFLO2dCQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RixLQUFLLElBQUk7Z0JBQ0wsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3RHLEtBQUssS0FBSztnQkFDTixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdkcsS0FBSyxJQUFJO2dCQUNM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QUFDO1FBQzlCLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUNyQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksT0FBTyxJQUFJLElBQUk7Z0JBQ2YsT0FBTyxTQUFTLENBQUM7WUFDckIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztDQUNKO0FBckVELG9FQXFFQztBQUNELGt2U0FBa3ZTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25FcnJvciB9IGZyb20gXCIuLy4uL2Vycm9ycy9HcmFwaEV4ZWN1dGlvbkVycm9yLmpzXCI7XG4vKipcbiAqIEV2YWx1YXRlcyBhIHtAbGluayBDb25kaXRpb25FeHByZXNzaW9ufSBhZ2FpbnN0IHRoZSBnaXZlbiBzdGF0ZS5cbiAqXG4gKiBgRXhwclZhbHVlYCByZXNvbHV0aW9uOlxuICogLSBgeyBjb25zdDogeCB9YCDihpIgdGhlIGxpdGVyYWwgdmFsdWUgYHhgLlxuICogLSBgeyBwYXRoOiBcImEuYlwiIH1gIOKGkiBkb3R0ZWQtcGF0aCBsb29rdXAgaW50byBgc3RhdGVgLlxuICogLSBgeyBzdGVwOiBcIm5vZGVJZFwiLCBwYXRoOiBcIm91dFwiIH1gIOKGkiBjcm9zcy1ub2RlIHJlZmVyZW5jZTsgaW4gdjEgdGhlIHN0YXRlXG4gKiAgIGlzIGV4cGVjdGVkIHRvIGNvbnRhaW4gYSBgbm9kZXNgIG1hcCBrZXllZCBieSBub2RlIGlkIChyZXNlcnZlZCBmb3IgZnV0dXJlXG4gKiAgIG11bHRpLXN0ZXAgZXZhbHVhdGlvbjsgZmFsbHMgYmFjayB0byBgc3RhdGVgIGxvb2t1cCB3aGVuIGFic2VudCkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yIHtcbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZXMgYSBjb25kaXRpb24gZXhwcmVzc2lvbiB0byBhIGJvb2xlYW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXhwciAtIFRoZSBjb25kaXRpb24gZXhwcmVzc2lvbi5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUgY3VycmVudCBldmFsdWF0aW9uIHN0YXRlIChsb29wIHN0YXRlIG9yIGV4ZWN1dGlvbiB2YWx1ZXMpLlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBhIHRydXRoeS9wb3NpdGl2ZSByZXN1bHQuXG4gICAgICovXG4gICAgZXZhbHVhdGUoZXhwciwgc3RhdGUpIHtcbiAgICAgICAgc3dpdGNoIChleHByLm9wKSB7XG4gICAgICAgICAgICBjYXNlIFwiZXFcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlVmFsdWUoZXhwci5sZWZ0LCBzdGF0ZSkgPT09IHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIucmlnaHQsIHN0YXRlKTtcbiAgICAgICAgICAgIGNhc2UgXCJuZXFcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlVmFsdWUoZXhwci5sZWZ0LCBzdGF0ZSkgIT09IHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIucmlnaHQsIHN0YXRlKTtcbiAgICAgICAgICAgIGNhc2UgXCJndFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5yZXNvbHZlVmFsdWUoZXhwci5sZWZ0LCBzdGF0ZSkpID4gTnVtYmVyKHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIucmlnaHQsIHN0YXRlKSk7XG4gICAgICAgICAgICBjYXNlIFwiZ3RlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcih0aGlzLnJlc29sdmVWYWx1ZShleHByLmxlZnQsIHN0YXRlKSkgPj0gTnVtYmVyKHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIucmlnaHQsIHN0YXRlKSk7XG4gICAgICAgICAgICBjYXNlIFwibHRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gTnVtYmVyKHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIubGVmdCwgc3RhdGUpKSA8IE51bWJlcih0aGlzLnJlc29sdmVWYWx1ZShleHByLnJpZ2h0LCBzdGF0ZSkpO1xuICAgICAgICAgICAgY2FzZSBcImx0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5yZXNvbHZlVmFsdWUoZXhwci5sZWZ0LCBzdGF0ZSkpIDw9IE51bWJlcih0aGlzLnJlc29sdmVWYWx1ZShleHByLnJpZ2h0LCBzdGF0ZSkpO1xuICAgICAgICAgICAgY2FzZSBcImFuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBleHByLmNvbmRpdGlvbnMuZXZlcnkoKGMpID0+IHRoaXMuZXZhbHVhdGUoYywgc3RhdGUpKTtcbiAgICAgICAgICAgIGNhc2UgXCJvclwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBleHByLmNvbmRpdGlvbnMuc29tZSgoYykgPT4gdGhpcy5ldmFsdWF0ZShjLCBzdGF0ZSkpO1xuICAgICAgICAgICAgY2FzZSBcIm5vdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5ldmFsdWF0ZShleHByLmNvbmRpdGlvbiwgc3RhdGUpO1xuICAgICAgICAgICAgY2FzZSBcImV4aXN0c1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVWYWx1ZShleHByLnZhbHVlLCBzdGF0ZSkgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnJlc29sdmVWYWx1ZShleHByLnZhbHVlLCBzdGF0ZSkgIT09IG51bGw7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBHcmFwaEV4ZWN1dGlvbkVycm9yKGBVbmtub3duIENvbmRpdGlvbkV4cHJlc3Npb24gb3AgJyR7ZXhwci5vcH0nYCwgXCJHUkFQSF9VTktOT1dOX0NPTkRJVElPTl9PUFwiLCB7IGV4cHIgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVzb2x2ZXMgYW4ge0BsaW5rIEV4cHJWYWx1ZX0gYWdhaW5zdCB0aGUgY3VycmVudCBzdGF0ZS5cbiAgICAgKi9cbiAgICByZXNvbHZlVmFsdWUocmVmLCBzdGF0ZSkge1xuICAgICAgICBpZiAoXCJjb25zdFwiIGluIHJlZikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZi5jb25zdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXCJwYXRoXCIgaW4gcmVmICYmICEoXCJzdGVwXCIgaW4gcmVmKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVBhdGgocmVmLnBhdGgsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXCJzdGVwXCIgaW4gcmVmICYmIFwicGF0aFwiIGluIHJlZikge1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBzdGF0ZT8uW1wibm9kZXNcIl07XG4gICAgICAgICAgICBpZiAobm9kZXMgJiYgdHlwZW9mIG5vZGVzID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZVN0YXRlID0gbm9kZXNbcmVmLnN0ZXBdO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVQYXRoKHJlZi5wYXRoLCBub2RlU3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVBhdGgocmVmLnBhdGgsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgR3JhcGhFeGVjdXRpb25FcnJvcihcIkludmFsaWQgRXhwclZhbHVlOiBtdXN0IGhhdmUgYGNvbnN0YCwgYHBhdGhgLCBvciBgc3RlcGArYHBhdGhgXCIsIFwiR1JBUEhfSU5WQUxJRF9FWFBSX1ZBTFVFXCIsIHsgcmVmIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXNvbHZlcyBhIGRvdHRlZCBwYXRoIGludG8gYSB0YXJnZXQgb2JqZWN0LlxuICAgICAqL1xuICAgIHJlc29sdmVQYXRoKHBhdGgsIHRhcmdldCkge1xuICAgICAgICBpZiAoIXBhdGgpXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoXCIuXCIpO1xuICAgICAgICBsZXQgY3VycmVudCA9IHRhcmdldDtcbiAgICAgICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudFtwYXJ0XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lRMjl1WkdsMGFXOXVSWGh3Y21WemMybHZia1YyWVd4MVlYUnZjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMeTR1TDNOeVl5OW5jbUZ3YUM5bGJtZHBibVV2Ykc5dmNITXZRMjl1WkdsMGFXOXVSWGh3Y21WemMybHZia1YyWVd4MVlYUnZjaTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGUlFTeFBRVUZQTEVWQlFVVXNiVUpCUVcxQ0xFVkJRVVVzTWtOQlFYTkRPMEZCUlhCRk96czdPenM3T3pzN1IwRlRSenRCUVVOSUxFMUJRVTBzVDBGQlR5dzBRa0ZCTkVJN1NVRkRka003T3pzN096dFBRVTFITzBsQlEwZ3NVVUZCVVN4RFFVRkRMRWxCUVhsQ0xFVkJRVVVzUzBGQll6dFJRVU5vUkN4UlFVRlJMRWxCUVVrc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF6dFpRVU5vUWl4TFFVRkxMRWxCUVVrN1owSkJRMUFzVDBGQlR5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMWxCUTNSR0xFdEJRVXNzUzBGQlN6dG5Ra0ZEVWl4UFFVRlBMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1MwRkJTeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03V1VGRGRFWXNTMEZCU3l4SlFVRkpPMmRDUVVOUUxFOUJRVThzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU53Unl4TFFVRkxMRXRCUVVzN1owSkJRMUlzVDBGQlR5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkhMRXRCUVVzc1NVRkJTVHRuUWtGRFVDeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNc1IwRkJSeXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY0Vjc1MwRkJTeXhMUVVGTE8yZENRVU5TTEU5QlFVOHNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnlSeXhMUVVGTExFdEJRVXM3WjBKQlExSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNdlJDeExRVUZMTEVsQlFVazdaMEpCUTFBc1QwRkJUeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU01UkN4TFFVRkxMRXRCUVVzN1owSkJRMUlzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTXZReXhMUVVGTExGRkJRVkU3WjBKQlExZ3NUMEZCVHl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVXNTMEZCU3l4RFFVRkRMRXRCUVVzc1UwRkJVeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUzBGQlN5eEpRVUZKTEVOQlFVTTdXVUZETjBjN1owSkJRMFVzVFVGQlRTeEpRVUZKTEcxQ1FVRnRRaXhEUVVNelFpeHRRMEZCYjBNc1NVRkJkVUlzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZEYWtVc05FSkJRVFJDTEVWQlF6VkNMRVZCUVVVc1NVRkJTU3hGUVVGRkxFTkJRMVFzUTBGQlF6dFJRVU5PTEVOQlFVTTdTVUZEU0N4RFFVRkRPMGxCUlVRN08wOUJSVWM3U1VGRFN5eFpRVUZaTEVOQlFVTXNSMEZCWXl4RlFVRkZMRXRCUVdNN1VVRkRha1FzU1VGQlNTeFBRVUZQTEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNN1dVRkRia0lzVDBGQlR5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFTkJRVU03VVVGRFJDeEpRVUZKTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRPMWxCUTNSRExFOUJRVThzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlF6TkRMRU5CUVVNN1VVRkRSQ3hKUVVGSkxFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NUVUZCVFN4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8xbEJRMjVETEUxQlFVMHNTMEZCU3l4SFFVRkpMRXRCUVhkRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0WlFVTnVSU3hKUVVGSkxFdEJRVXNzU1VGQlNTeFBRVUZQTEV0QlFVc3NTMEZCU3l4UlFVRlJMRVZCUVVVc1EwRkJRenRuUWtGRGRrTXNUVUZCVFN4VFFVRlRMRWRCUVVrc1MwRkJhVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJReTlFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMWxCUXk5RExFTkJRVU03V1VGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTXpReXhEUVVGRE8xRkJRMFFzVFVGQlRTeEpRVUZKTEcxQ1FVRnRRaXhEUVVNelFpeG5SVUZCWjBVc1JVRkRhRVVzTUVKQlFUQkNMRVZCUXpGQ0xFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlExSXNRMEZCUXp0SlFVTktMRU5CUVVNN1NVRkZSRHM3VDBGRlJ6dEpRVU5MTEZkQlFWY3NRMEZCUXl4SlFVRlpMRVZCUVVVc1RVRkJaVHRSUVVNdlF5eEpRVUZKTEVOQlFVTXNTVUZCU1R0WlFVRkZMRTlCUVU4c1RVRkJUU3hEUVVGRE8xRkJRM3BDTEUxQlFVMHNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZET1VJc1NVRkJTU3hQUVVGUExFZEJRVmtzVFVGQlRTeERRVUZETzFGQlF6bENMRXRCUVVzc1RVRkJUU3hKUVVGSkxFbEJRVWtzUzBGQlN5eEZRVUZGTEVOQlFVTTdXVUZEZWtJc1NVRkJTU3hQUVVGUExFbEJRVWtzU1VGQlNUdG5Ra0ZCUlN4UFFVRlBMRk5CUVZNc1EwRkJRenRaUVVOMFF5eFBRVUZQTEVkQlFVa3NUMEZCYlVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU4yUkN4RFFVRkRPMUZCUTBRc1QwRkJUeXhQUVVGUExFTkJRVU03U1VGRGFrSXNRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJBYlc5a2RXeGxJR2x1ZEdWbmNtRjBhVzl1Y3k5bmNtRndhQzlzYjI5d2N5OURiMjVrYVhScGIyNUZlSEJ5WlhOemFXOXVSWFpoYkhWaGRHOXlYRzRnS2lCQWMzVnRiV0Z5ZVNCRmRtRnNkV0YwYjNJZ1ptOXlJSFJvWlNCQlRFWlNSVVF0TlNCZ1EyOXVaR2wwYVc5dVJYaHdjbVZ6YzJsdmJtQWdSRk5NSUNoRVJVTkJSaTB6TWlEQ3B6SXlMak1wTGx4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUVWMllXeDFZWFJsY3lCa1pXTnNZWEpoZEdsMlpTd2djMlZ5YVdGc2FYcGhZbXhsSUdOdmJtUnBkR2x2YmlCbGVIQnlaWE56YVc5dWN5QjNhWFJvWEc0Z0tpQmdaWEZnTDJCdVpYRmdMMkJuZEdBdllHZDBaV0F2WUd4MFlDOWdiSFJsWUM5Z1lXNWtZQzlnYjNKZ0wyQnViM1JnTDJCbGVHbHpkSE5nSUc5d1pYSmhkRzl5Y3lCaGJtUmNiaUFxSUdCRmVIQnlWbUZzZFdWZ0lISmxabVZ5Wlc1alpYTWdLR0I3WTI5dWMzUjlZQ3dnWUh0d1lYUm9mV0FzSUdCN2MzUmxjQ3dnY0dGMGFIMWdLUzVjYmlBcUwxeHVhVzF3YjNKMElIUjVjR1VnZXlCRGIyNWthWFJwYjI1RmVIQnlaWE56YVc5dUxDQkZlSEJ5Vm1Gc2RXVWdmU0JtY205dElGd2lMaTR2TGk0dmMyaGhjbVZrTDNSNWNHVnpYQ0k3WEc1cGJYQnZjblFnZXlCSGNtRndhRVY0WldOMWRHbHZia1Z5Y205eUlIMGdabkp2YlNCY0lpNHVMMlZ5Y205eWN5OUhjbUZ3YUVWNFpXTjFkR2x2YmtWeWNtOXlYQ0k3WEc1Y2JpOHFLbHh1SUNvZ1JYWmhiSFZoZEdWeklHRWdlMEJzYVc1cklFTnZibVJwZEdsdmJrVjRjSEpsYzNOcGIyNTlJR0ZuWVdsdWMzUWdkR2hsSUdkcGRtVnVJSE4wWVhSbExseHVJQ3BjYmlBcUlHQkZlSEJ5Vm1Gc2RXVmdJSEpsYzI5c2RYUnBiMjQ2WEc0Z0tpQXRJR0I3SUdOdmJuTjBPaUI0SUgxZ0lPS0draUIwYUdVZ2JHbDBaWEpoYkNCMllXeDFaU0JnZUdBdVhHNGdLaUF0SUdCN0lIQmhkR2c2SUZ3aVlTNWlYQ0lnZldBZzRvYVNJR1J2ZEhSbFpDMXdZWFJvSUd4dmIydDFjQ0JwYm5SdklHQnpkR0YwWldBdVhHNGdLaUF0SUdCN0lITjBaWEE2SUZ3aWJtOWtaVWxrWENJc0lIQmhkR2c2SUZ3aWIzVjBYQ0lnZldBZzRvYVNJR055YjNOekxXNXZaR1VnY21WbVpYSmxibU5sT3lCcGJpQjJNU0IwYUdVZ2MzUmhkR1ZjYmlBcUlDQWdhWE1nWlhod1pXTjBaV1FnZEc4Z1kyOXVkR0ZwYmlCaElHQnViMlJsYzJBZ2JXRndJR3RsZVdWa0lHSjVJRzV2WkdVZ2FXUWdLSEpsYzJWeWRtVmtJR1p2Y2lCbWRYUjFjbVZjYmlBcUlDQWdiWFZzZEdrdGMzUmxjQ0JsZG1Gc2RXRjBhVzl1T3lCbVlXeHNjeUJpWVdOcklIUnZJR0J6ZEdGMFpXQWdiRzl2YTNWd0lIZG9aVzRnWVdKelpXNTBLUzVjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUVOdmJtUnBkR2x2YmtWNGNISmxjM05wYjI1RmRtRnNkV0YwYjNJZ2UxeHVJQ0F2S2lwY2JpQWdJQ29nUlhaaGJIVmhkR1Z6SUdFZ1kyOXVaR2wwYVc5dUlHVjRjSEpsYzNOcGIyNGdkRzhnWVNCaWIyOXNaV0Z1TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ1pYaHdjaUF0SUZSb1pTQmpiMjVrYVhScGIyNGdaWGh3Y21WemMybHZiaTVjYmlBZ0lDb2dRSEJoY21GdElITjBZWFJsSUMwZ1ZHaGxJR04xY25KbGJuUWdaWFpoYkhWaGRHbHZiaUJ6ZEdGMFpTQW9iRzl2Y0NCemRHRjBaU0J2Y2lCbGVHVmpkWFJwYjI0Z2RtRnNkV1Z6S1M1Y2JpQWdJQ29nUUhKbGRIVnlibk1nWUhSeWRXVmdJSGRvWlc0Z2RHaGxJR1Y0Y0hKbGMzTnBiMjRnWlhaaGJIVmhkR1Z6SUhSdklHRWdkSEoxZEdoNUwzQnZjMmwwYVhabElISmxjM1ZzZEM1Y2JpQWdJQ292WEc0Z0lHVjJZV3gxWVhSbEtHVjRjSEk2SUVOdmJtUnBkR2x2YmtWNGNISmxjM05wYjI0c0lITjBZWFJsT2lCMWJtdHViM2R1S1RvZ1ltOXZiR1ZoYmlCN1hHNGdJQ0FnYzNkcGRHTm9JQ2hsZUhCeUxtOXdLU0I3WEc0Z0lDQWdJQ0JqWVhObElGd2laWEZjSWpwY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjbVZ6YjJ4MlpWWmhiSFZsS0dWNGNISXViR1ZtZEN3Z2MzUmhkR1VwSUQwOVBTQjBhR2x6TG5KbGMyOXNkbVZXWVd4MVpTaGxlSEJ5TG5KcFoyaDBMQ0J6ZEdGMFpTazdYRzRnSUNBZ0lDQmpZWE5sSUZ3aWJtVnhYQ0k2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxuSmxjMjlzZG1WV1lXeDFaU2hsZUhCeUxteGxablFzSUhOMFlYUmxLU0FoUFQwZ2RHaHBjeTV5WlhOdmJIWmxWbUZzZFdVb1pYaHdjaTV5YVdkb2RDd2djM1JoZEdVcE8xeHVJQ0FnSUNBZ1kyRnpaU0JjSW1kMFhDSTZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQk9kVzFpWlhJb2RHaHBjeTV5WlhOdmJIWmxWbUZzZFdVb1pYaHdjaTVzWldaMExDQnpkR0YwWlNrcElENGdUblZ0WW1WeUtIUm9hWE11Y21WemIyeDJaVlpoYkhWbEtHVjRjSEl1Y21sbmFIUXNJSE4wWVhSbEtTazdYRzRnSUNBZ0lDQmpZWE5sSUZ3aVozUmxYQ0k2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJPZFcxaVpYSW9kR2hwY3k1eVpYTnZiSFpsVm1Gc2RXVW9aWGh3Y2k1c1pXWjBMQ0J6ZEdGMFpTa3BJRDQ5SUU1MWJXSmxjaWgwYUdsekxuSmxjMjlzZG1WV1lXeDFaU2hsZUhCeUxuSnBaMmgwTENCemRHRjBaU2twTzF4dUlDQWdJQ0FnWTJGelpTQmNJbXgwWENJNlhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCT2RXMWlaWElvZEdocGN5NXlaWE52YkhabFZtRnNkV1VvWlhod2NpNXNaV1owTENCemRHRjBaU2twSUR3Z1RuVnRZbVZ5S0hSb2FYTXVjbVZ6YjJ4MlpWWmhiSFZsS0dWNGNISXVjbWxuYUhRc0lITjBZWFJsS1NrN1hHNGdJQ0FnSUNCallYTmxJRndpYkhSbFhDSTZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQk9kVzFpWlhJb2RHaHBjeTV5WlhOdmJIWmxWbUZzZFdVb1pYaHdjaTVzWldaMExDQnpkR0YwWlNrcElEdzlJRTUxYldKbGNpaDBhR2x6TG5KbGMyOXNkbVZXWVd4MVpTaGxlSEJ5TG5KcFoyaDBMQ0J6ZEdGMFpTa3BPMXh1SUNBZ0lDQWdZMkZ6WlNCY0ltRnVaRndpT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWlhod2NpNWpiMjVrYVhScGIyNXpMbVYyWlhKNUtDaGpLU0E5UGlCMGFHbHpMbVYyWVd4MVlYUmxLR01zSUhOMFlYUmxLU2s3WEc0Z0lDQWdJQ0JqWVhObElGd2liM0pjSWpwY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdWNGNISXVZMjl1WkdsMGFXOXVjeTV6YjIxbEtDaGpLU0E5UGlCMGFHbHpMbVYyWVd4MVlYUmxLR01zSUhOMFlYUmxLU2s3WEc0Z0lDQWdJQ0JqWVhObElGd2libTkwWENJNlhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBaGRHaHBjeTVsZG1Gc2RXRjBaU2hsZUhCeUxtTnZibVJwZEdsdmJpd2djM1JoZEdVcE8xeHVJQ0FnSUNBZ1kyRnpaU0JjSW1WNGFYTjBjMXdpT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NXlaWE52YkhabFZtRnNkV1VvWlhod2NpNTJZV3gxWlN3Z2MzUmhkR1VwSUNFOVBTQjFibVJsWm1sdVpXUWdKaVlnZEdocGN5NXlaWE52YkhabFZtRnNkV1VvWlhod2NpNTJZV3gxWlN3Z2MzUmhkR1VwSUNFOVBTQnVkV3hzTzF4dUlDQWdJQ0FnWkdWbVlYVnNkRHBjYmlBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVkeVlYQm9SWGhsWTNWMGFXOXVSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDQWdZRlZ1YTI1dmQyNGdRMjl1WkdsMGFXOXVSWGh3Y21WemMybHZiaUJ2Y0NBbkpIc29aWGh3Y2lCaGN5QjdJRzl3T2lCemRISnBibWNnZlNrdWIzQjlKMkFzWEc0Z0lDQWdJQ0FnSUNBZ1hDSkhVa0ZRU0Y5VlRrdE9UMWRPWDBOUFRrUkpWRWxQVGw5UFVGd2lMRnh1SUNBZ0lDQWdJQ0FnSUhzZ1pYaHdjaUI5WEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxjMjlzZG1WeklHRnVJSHRBYkdsdWF5QkZlSEJ5Vm1Gc2RXVjlJR0ZuWVdsdWMzUWdkR2hsSUdOMWNuSmxiblFnYzNSaGRHVXVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJSEpsYzI5c2RtVldZV3gxWlNoeVpXWTZJRVY0Y0hKV1lXeDFaU3dnYzNSaGRHVTZJSFZ1YTI1dmQyNHBPaUIxYm10dWIzZHVJSHRjYmlBZ0lDQnBaaUFvWENKamIyNXpkRndpSUdsdUlISmxaaWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSEpsWmk1amIyNXpkRHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLRndpY0dGMGFGd2lJR2x1SUhKbFppQW1KaUFoS0Z3aWMzUmxjRndpSUdsdUlISmxaaWtwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxuSmxjMjlzZG1WUVlYUm9LSEpsWmk1d1lYUm9MQ0J6ZEdGMFpTazdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaGNJbk4wWlhCY0lpQnBiaUJ5WldZZ0ppWWdYQ0p3WVhSb1hDSWdhVzRnY21WbUtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCdWIyUmxjeUE5SUNoemRHRjBaU0JoY3lCU1pXTnZjbVE4YzNSeWFXNW5MQ0IxYm10dWIzZHVQaUI4SUc1MWJHd3BQeTViWENKdWIyUmxjMXdpWFR0Y2JpQWdJQ0FnSUdsbUlDaHViMlJsY3lBbUppQjBlWEJsYjJZZ2JtOWtaWE1nUFQwOUlGd2liMkpxWldOMFhDSXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdibTlrWlZOMFlYUmxJRDBnS0c1dlpHVnpJR0Z6SUZKbFkyOXlaRHh6ZEhKcGJtY3NJSFZ1YTI1dmQyNCtLVnR5WldZdWMzUmxjRjA3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxuSmxjMjlzZG1WUVlYUm9LSEpsWmk1d1lYUm9MQ0J1YjJSbFUzUmhkR1VwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdWNtVnpiMngyWlZCaGRHZ29jbVZtTG5CaGRHZ3NJSE4wWVhSbEtUdGNiaUFnSUNCOVhHNGdJQ0FnZEdoeWIzY2dibVYzSUVkeVlYQm9SWGhsWTNWMGFXOXVSWEp5YjNJb1hHNGdJQ0FnSUNCY0lrbHVkbUZzYVdRZ1JYaHdjbFpoYkhWbE9pQnRkWE4wSUdoaGRtVWdZR052Ym5OMFlDd2dZSEJoZEdoZ0xDQnZjaUJnYzNSbGNHQXJZSEJoZEdoZ1hDSXNYRzRnSUNBZ0lDQmNJa2RTUVZCSVgwbE9Wa0ZNU1VSZlJWaFFVbDlXUVV4VlJWd2lMRnh1SUNBZ0lDQWdleUJ5WldZZ2ZWeHVJQ0FnSUNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVZ6YjJ4MlpYTWdZU0JrYjNSMFpXUWdjR0YwYUNCcGJuUnZJR0VnZEdGeVoyVjBJRzlpYW1WamRDNWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdjbVZ6YjJ4MlpWQmhkR2dvY0dGMGFEb2djM1J5YVc1bkxDQjBZWEpuWlhRNklIVnVhMjV2ZDI0cE9pQjFibXR1YjNkdUlIdGNiaUFnSUNCcFppQW9JWEJoZEdncElISmxkSFZ5YmlCMFlYSm5aWFE3WEc0Z0lDQWdZMjl1YzNRZ2NHRnlkSE1nUFNCd1lYUm9Mbk53YkdsMEtGd2lMbHdpS1R0Y2JpQWdJQ0JzWlhRZ1kzVnljbVZ1ZERvZ2RXNXJibTkzYmlBOUlIUmhjbWRsZER0Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUhCaGNuUWdiMllnY0dGeWRITXBJSHRjYmlBZ0lDQWdJR2xtSUNoamRYSnlaVzUwSUQwOUlHNTFiR3dwSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0JqZFhKeVpXNTBJRDBnS0dOMWNuSmxiblFnWVhNZ1VtVmpiM0prUEhOMGNtbHVaeXdnZFc1cmJtOTNiajRwVzNCaGNuUmRPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnWTNWeWNtVnVkRHRjYmlBZ2ZWeHVmVnh1SWwxOSJdfQ==