@decaf-ts/integrations 0.3.8 → 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 (413) 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/esm/graph/engine/constants.js +62 -0
  76. package/lib/esm/graph/engine/decorators.js +2 -0
  77. package/lib/esm/graph/engine/errors/GraphCycleError.js +15 -0
  78. package/lib/esm/graph/engine/errors/GraphExecutionError.js +22 -0
  79. package/lib/esm/graph/engine/errors/GraphInputError.js +15 -0
  80. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +15 -0
  81. package/lib/esm/graph/engine/errors/GraphPinningError.js +15 -0
  82. package/lib/esm/graph/engine/errors/GraphPortError.js +15 -0
  83. package/lib/esm/graph/engine/errors/GraphStoreError.js +15 -0
  84. package/lib/esm/graph/engine/errors/GraphTopologyError.js +15 -0
  85. package/lib/esm/graph/engine/errors/index.js +14 -0
  86. package/lib/esm/graph/engine/events/GraphExecutionEvent.js +2 -0
  87. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +35 -0
  88. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +32 -0
  89. package/lib/esm/graph/engine/events/GraphExecutionObserver.js +2 -0
  90. package/lib/esm/graph/engine/events/index.js +10 -0
  91. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +18 -0
  92. package/lib/esm/graph/engine/execution/GraphExecutionContext.js +74 -0
  93. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +403 -0
  94. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +27 -0
  95. package/lib/esm/graph/engine/execution/GraphExecutionResult.js +26 -0
  96. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +2 -0
  97. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +98 -0
  98. package/lib/esm/graph/engine/execution/index.js +13 -0
  99. package/lib/esm/graph/engine/index.js +67 -0
  100. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +82 -0
  101. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +80 -0
  102. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +80 -0
  103. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +11 -0
  104. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +72 -0
  105. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +73 -0
  106. package/lib/esm/graph/engine/loops/index.js +12 -0
  107. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +23 -0
  108. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +15 -0
  109. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +29 -0
  110. package/lib/esm/graph/engine/pinning/GraphPinningService.js +186 -0
  111. package/lib/esm/graph/engine/pinning/index.js +10 -0
  112. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +2 -0
  113. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +7 -0
  114. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +2 -0
  115. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +2 -0
  116. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +192 -0
  117. package/lib/esm/graph/engine/planning/GraphRelationResolver.js +167 -0
  118. package/lib/esm/graph/engine/planning/GraphTopology.js +52 -0
  119. package/lib/esm/graph/engine/planning/index.js +13 -0
  120. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +39 -0
  121. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +22 -0
  122. package/lib/esm/graph/engine/registry/index.js +8 -0
  123. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +48 -0
  124. package/lib/esm/graph/engine/snapshots/index.js +7 -0
  125. package/lib/esm/graph/engine/store/GraphCachedValue.js +2 -0
  126. package/lib/esm/graph/engine/store/GraphValueKey.js +7 -0
  127. package/lib/esm/graph/engine/store/GraphValueStore.js +71 -0
  128. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +2 -0
  129. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +64 -0
  130. package/lib/esm/graph/engine/store/index.js +11 -0
  131. package/lib/esm/graph/engine/types.js +2 -0
  132. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +28 -0
  133. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +53 -0
  134. package/lib/esm/graph/engine/validation/GraphValueValidator.js +47 -0
  135. package/lib/esm/graph/engine/validation/index.js +9 -0
  136. package/lib/esm/graph/index.js +9 -59
  137. package/lib/esm/graph/shared/constants.js +56 -0
  138. package/lib/esm/graph/shared/index.js +19 -0
  139. package/lib/esm/graph/shared/nodes/agent.js +101 -0
  140. package/lib/esm/graph/shared/nodes/base.js +30 -0
  141. package/lib/esm/graph/shared/nodes/category-styles.js +34 -0
  142. package/lib/esm/graph/shared/nodes/flow-control.js +455 -0
  143. package/lib/esm/graph/shared/nodes/index.js +18 -0
  144. package/lib/esm/graph/shared/nodes/triggers.js +241 -0
  145. package/lib/esm/graph/shared/types.js +2 -0
  146. package/lib/esm/index.js +3 -3
  147. package/lib/types/graph/engine/constants.d.cts +59 -0
  148. package/lib/types/graph/engine/constants.d.mts +59 -0
  149. package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.cts +1 -1
  150. package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.mts +1 -1
  151. package/lib/types/graph/engine/index.d.cts +61 -0
  152. package/lib/types/graph/engine/index.d.mts +61 -0
  153. package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.cts +1 -1
  154. package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.mts +1 -1
  155. package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.cts +2 -1
  156. package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.mts +2 -1
  157. package/lib/types/graph/{types.d.cts → engine/types.d.cts} +8 -116
  158. package/lib/types/graph/{types.d.mts → engine/types.d.mts} +8 -116
  159. package/lib/types/graph/index.d.cts +8 -53
  160. package/lib/types/graph/index.d.mts +8 -53
  161. package/lib/types/graph/shared/constants.d.cts +53 -0
  162. package/lib/types/graph/shared/constants.d.mts +53 -0
  163. package/lib/types/graph/shared/index.d.cts +18 -0
  164. package/lib/types/graph/shared/index.d.mts +18 -0
  165. package/lib/types/graph/shared/types.d.cts +121 -0
  166. package/lib/types/graph/shared/types.d.mts +121 -0
  167. package/lib/types/index.d.cts +2 -2
  168. package/lib/types/index.d.mts +2 -2
  169. package/package.json +14 -3
  170. package/lib/cjs/graph/constants.cjs +0 -94
  171. package/lib/cjs/graph/decorators.cjs +0 -4
  172. package/lib/cjs/graph/errors/GraphCycleError.cjs +0 -20
  173. package/lib/cjs/graph/errors/GraphExecutionError.cjs +0 -27
  174. package/lib/cjs/graph/errors/GraphInputError.cjs +0 -20
  175. package/lib/cjs/graph/errors/GraphLoopLimitError.cjs +0 -20
  176. package/lib/cjs/graph/errors/GraphPinningError.cjs +0 -20
  177. package/lib/cjs/graph/errors/GraphPortError.cjs +0 -20
  178. package/lib/cjs/graph/errors/GraphStoreError.cjs +0 -20
  179. package/lib/cjs/graph/errors/GraphTopologyError.cjs +0 -20
  180. package/lib/cjs/graph/events/GraphExecutionEvent.cjs +0 -4
  181. package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs +0 -40
  182. package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs +0 -37
  183. package/lib/cjs/graph/events/GraphExecutionObserver.cjs +0 -4
  184. package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs +0 -4
  185. package/lib/cjs/graph/execution/GraphExecutionContext.cjs +0 -79
  186. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +0 -407
  187. package/lib/cjs/graph/execution/GraphExecutionFrame.cjs +0 -32
  188. package/lib/cjs/graph/execution/GraphExecutionResult.cjs +0 -30
  189. package/lib/cjs/graph/execution/GraphNodeExecutor.cjs +0 -4
  190. package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +0 -103
  191. package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +0 -87
  192. package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs +0 -84
  193. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +0 -85
  194. package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs +0 -16
  195. package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs +0 -76
  196. package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs +0 -77
  197. package/lib/cjs/graph/nodes/base.cjs +0 -35
  198. package/lib/cjs/graph/nodes/category-styles.cjs +0 -38
  199. package/lib/cjs/graph/nodes/flow-control.cjs +0 -464
  200. package/lib/cjs/graph/nodes/triggers.cjs +0 -250
  201. package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs +0 -28
  202. package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs +0 -20
  203. package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs +0 -34
  204. package/lib/cjs/graph/pinning/GraphPinningService.cjs +0 -191
  205. package/lib/cjs/graph/planning/GraphExecutionPlan.cjs +0 -4
  206. package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs +0 -4
  207. package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs +0 -4
  208. package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs +0 -4
  209. package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs +0 -197
  210. package/lib/cjs/graph/planning/GraphRelationResolver.cjs +0 -172
  211. package/lib/cjs/graph/planning/GraphTopology.cjs +0 -57
  212. package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs +0 -44
  213. package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs +0 -27
  214. package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs +0 -53
  215. package/lib/cjs/graph/store/GraphCachedValue.cjs +0 -4
  216. package/lib/cjs/graph/store/GraphValueKey.cjs +0 -4
  217. package/lib/cjs/graph/store/GraphValueStore.cjs +0 -76
  218. package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs +0 -4
  219. package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs +0 -69
  220. package/lib/cjs/graph/types.cjs +0 -4
  221. package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs +0 -33
  222. package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs +0 -58
  223. package/lib/cjs/graph/validation/GraphValueValidator.cjs +0 -52
  224. package/lib/esm/graph/constants.js +0 -106
  225. package/lib/esm/graph/decorators.js +0 -2
  226. package/lib/esm/graph/errors/GraphCycleError.js +0 -15
  227. package/lib/esm/graph/errors/GraphExecutionError.js +0 -22
  228. package/lib/esm/graph/errors/GraphInputError.js +0 -15
  229. package/lib/esm/graph/errors/GraphLoopLimitError.js +0 -15
  230. package/lib/esm/graph/errors/GraphPinningError.js +0 -15
  231. package/lib/esm/graph/errors/GraphPortError.js +0 -15
  232. package/lib/esm/graph/errors/GraphStoreError.js +0 -15
  233. package/lib/esm/graph/errors/GraphTopologyError.js +0 -15
  234. package/lib/esm/graph/errors/index.js +0 -14
  235. package/lib/esm/graph/events/GraphExecutionEvent.js +0 -2
  236. package/lib/esm/graph/events/GraphExecutionEventEmitter.js +0 -35
  237. package/lib/esm/graph/events/GraphExecutionEventFactory.js +0 -32
  238. package/lib/esm/graph/events/GraphExecutionObserver.js +0 -2
  239. package/lib/esm/graph/events/index.js +0 -10
  240. package/lib/esm/graph/execution/CodeSandboxEvaluator.js +0 -18
  241. package/lib/esm/graph/execution/GraphExecutionContext.js +0 -74
  242. package/lib/esm/graph/execution/GraphExecutionEngine.js +0 -402
  243. package/lib/esm/graph/execution/GraphExecutionFrame.js +0 -27
  244. package/lib/esm/graph/execution/GraphExecutionResult.js +0 -26
  245. package/lib/esm/graph/execution/GraphNodeExecutor.js +0 -2
  246. package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +0 -98
  247. package/lib/esm/graph/execution/index.js +0 -13
  248. package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +0 -82
  249. package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js +0 -79
  250. package/lib/esm/graph/loops/GraphConditionEvaluator.js +0 -80
  251. package/lib/esm/graph/loops/GraphLoopExecutionContext.js +0 -11
  252. package/lib/esm/graph/loops/UntilGraphNodeExecutor.js +0 -71
  253. package/lib/esm/graph/loops/WhileGraphNodeExecutor.js +0 -72
  254. package/lib/esm/graph/loops/index.js +0 -12
  255. package/lib/esm/graph/nodes/agent.js +0 -101
  256. package/lib/esm/graph/nodes/base.js +0 -30
  257. package/lib/esm/graph/nodes/category-styles.js +0 -34
  258. package/lib/esm/graph/nodes/flow-control.js +0 -455
  259. package/lib/esm/graph/nodes/index.js +0 -18
  260. package/lib/esm/graph/nodes/triggers.js +0 -241
  261. package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js +0 -23
  262. package/lib/esm/graph/pinning/GraphPinningMetadata.js +0 -15
  263. package/lib/esm/graph/pinning/GraphPinningPolicy.js +0 -29
  264. package/lib/esm/graph/pinning/GraphPinningService.js +0 -186
  265. package/lib/esm/graph/pinning/index.js +0 -10
  266. package/lib/esm/graph/planning/GraphExecutionPlan.js +0 -2
  267. package/lib/esm/graph/planning/GraphExecutionPlanEdge.js +0 -7
  268. package/lib/esm/graph/planning/GraphExecutionPlanLayer.js +0 -2
  269. package/lib/esm/graph/planning/GraphExecutionPlanNode.js +0 -2
  270. package/lib/esm/graph/planning/GraphExecutionPlanner.js +0 -192
  271. package/lib/esm/graph/planning/GraphRelationResolver.js +0 -167
  272. package/lib/esm/graph/planning/GraphTopology.js +0 -52
  273. package/lib/esm/graph/planning/index.js +0 -13
  274. package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js +0 -39
  275. package/lib/esm/graph/registry/GraphNodeExecutorResolver.js +0 -22
  276. package/lib/esm/graph/registry/index.js +0 -8
  277. package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js +0 -48
  278. package/lib/esm/graph/snapshots/index.js +0 -7
  279. package/lib/esm/graph/store/GraphCachedValue.js +0 -2
  280. package/lib/esm/graph/store/GraphValueKey.js +0 -7
  281. package/lib/esm/graph/store/GraphValueStore.js +0 -71
  282. package/lib/esm/graph/store/GraphValueStoreAdapter.js +0 -2
  283. package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js +0 -64
  284. package/lib/esm/graph/store/index.js +0 -11
  285. package/lib/esm/graph/types.js +0 -2
  286. package/lib/esm/graph/validation/GraphDefinitionValidator.js +0 -28
  287. package/lib/esm/graph/validation/GraphPortSchemaResolver.js +0 -53
  288. package/lib/esm/graph/validation/GraphValueValidator.js +0 -47
  289. package/lib/esm/graph/validation/index.js +0 -9
  290. package/lib/types/graph/constants.d.cts +0 -101
  291. package/lib/types/graph/constants.d.mts +0 -101
  292. /package/lib/types/graph/{decorators.d.cts → engine/decorators.d.cts} +0 -0
  293. /package/lib/types/graph/{decorators.d.mts → engine/decorators.d.mts} +0 -0
  294. /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.cts +0 -0
  295. /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.mts +0 -0
  296. /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.cts +0 -0
  297. /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.mts +0 -0
  298. /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.cts +0 -0
  299. /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.mts +0 -0
  300. /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.cts +0 -0
  301. /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.mts +0 -0
  302. /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.cts +0 -0
  303. /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.mts +0 -0
  304. /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.cts +0 -0
  305. /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.mts +0 -0
  306. /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.cts +0 -0
  307. /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.mts +0 -0
  308. /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.cts +0 -0
  309. /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.mts +0 -0
  310. /package/lib/types/graph/{errors → engine/errors}/index.d.cts +0 -0
  311. /package/lib/types/graph/{errors → engine/errors}/index.d.mts +0 -0
  312. /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.cts +0 -0
  313. /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.mts +0 -0
  314. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.cts +0 -0
  315. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.mts +0 -0
  316. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.cts +0 -0
  317. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.mts +0 -0
  318. /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.cts +0 -0
  319. /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.mts +0 -0
  320. /package/lib/types/graph/{events → engine/events}/index.d.cts +0 -0
  321. /package/lib/types/graph/{events → engine/events}/index.d.mts +0 -0
  322. /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.cts +0 -0
  323. /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.mts +0 -0
  324. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.cts +0 -0
  325. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.mts +0 -0
  326. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.cts +0 -0
  327. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.mts +0 -0
  328. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.cts +0 -0
  329. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.mts +0 -0
  330. /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.cts +0 -0
  331. /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.mts +0 -0
  332. /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.cts +0 -0
  333. /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.mts +0 -0
  334. /package/lib/types/graph/{execution → engine/execution}/index.d.cts +0 -0
  335. /package/lib/types/graph/{execution → engine/execution}/index.d.mts +0 -0
  336. /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.cts +0 -0
  337. /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.mts +0 -0
  338. /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.cts +0 -0
  339. /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.mts +0 -0
  340. /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.cts +0 -0
  341. /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.mts +0 -0
  342. /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.cts +0 -0
  343. /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.mts +0 -0
  344. /package/lib/types/graph/{loops → engine/loops}/index.d.cts +0 -0
  345. /package/lib/types/graph/{loops → engine/loops}/index.d.mts +0 -0
  346. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.cts +0 -0
  347. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.mts +0 -0
  348. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.cts +0 -0
  349. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.mts +0 -0
  350. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.cts +0 -0
  351. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.mts +0 -0
  352. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.cts +0 -0
  353. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.mts +0 -0
  354. /package/lib/types/graph/{pinning → engine/pinning}/index.d.cts +0 -0
  355. /package/lib/types/graph/{pinning → engine/pinning}/index.d.mts +0 -0
  356. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.cts +0 -0
  357. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.mts +0 -0
  358. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.cts +0 -0
  359. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.mts +0 -0
  360. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.cts +0 -0
  361. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.mts +0 -0
  362. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.cts +0 -0
  363. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.mts +0 -0
  364. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.cts +0 -0
  365. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.mts +0 -0
  366. /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.cts +0 -0
  367. /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.mts +0 -0
  368. /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.cts +0 -0
  369. /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.mts +0 -0
  370. /package/lib/types/graph/{planning → engine/planning}/index.d.cts +0 -0
  371. /package/lib/types/graph/{planning → engine/planning}/index.d.mts +0 -0
  372. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.cts +0 -0
  373. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.mts +0 -0
  374. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.cts +0 -0
  375. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.mts +0 -0
  376. /package/lib/types/graph/{registry → engine/registry}/index.d.cts +0 -0
  377. /package/lib/types/graph/{registry → engine/registry}/index.d.mts +0 -0
  378. /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.cts +0 -0
  379. /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.mts +0 -0
  380. /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.cts +0 -0
  381. /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.mts +0 -0
  382. /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.cts +0 -0
  383. /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.mts +0 -0
  384. /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.cts +0 -0
  385. /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.mts +0 -0
  386. /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.cts +0 -0
  387. /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.mts +0 -0
  388. /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.cts +0 -0
  389. /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.mts +0 -0
  390. /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.cts +0 -0
  391. /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.mts +0 -0
  392. /package/lib/types/graph/{store → engine/store}/index.d.cts +0 -0
  393. /package/lib/types/graph/{store → engine/store}/index.d.mts +0 -0
  394. /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.cts +0 -0
  395. /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.mts +0 -0
  396. /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.cts +0 -0
  397. /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.mts +0 -0
  398. /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.cts +0 -0
  399. /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.mts +0 -0
  400. /package/lib/types/graph/{validation → engine/validation}/index.d.cts +0 -0
  401. /package/lib/types/graph/{validation → engine/validation}/index.d.mts +0 -0
  402. /package/lib/types/graph/{nodes → shared/nodes}/agent.d.cts +0 -0
  403. /package/lib/types/graph/{nodes → shared/nodes}/agent.d.mts +0 -0
  404. /package/lib/types/graph/{nodes → shared/nodes}/base.d.cts +0 -0
  405. /package/lib/types/graph/{nodes → shared/nodes}/base.d.mts +0 -0
  406. /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.cts +0 -0
  407. /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.mts +0 -0
  408. /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.cts +0 -0
  409. /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.mts +0 -0
  410. /package/lib/types/graph/{nodes → shared/nodes}/index.d.cts +0 -0
  411. /package/lib/types/graph/{nodes → shared/nodes}/index.d.mts +0 -0
  412. /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.cts +0 -0
  413. /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.mts +0 -0
@@ -1,250 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GRAPH_TRIGGER_NODES = exports.ChatTriggerNode = exports.FormTriggerNode = exports.EventTriggerNode = exports.ScheduleTriggerNode = exports.WebhookTriggerNode = exports.ManualTriggerNode = void 0;
4
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
7
- r = Reflect.decorate(decorators, target, key, desc);
8
- else
9
- for (var i = decorators.length - 1; i >= 0; i--)
10
- if (d = decorators[i])
11
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
12
- return c > 3 && r && Object.defineProperty(target, key, r), r;
13
- };
14
- var __metadata = (this && this.__metadata) || function (k, v) {
15
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
16
- return Reflect.metadata(k, v);
17
- };
18
- /**
19
- * @module integrations/graph/nodes/triggers
20
- * @summary Production trigger node kind declarations (DECAF-32 §22.2.1).
21
- * @description Canonical `@node`-decorated classes for the six ALFRED-5 trigger
22
- * kinds. Triggers are metadata-only entrypoints: they define how a workflow
23
- * starts and produce a trigger payload on their `@output` ports. They have no
24
- * `@input` ports (nothing feeds a trigger) and no built-in executors — the
25
- * engine's execution model starts from workflow inputs (§5.8) and treats
26
- * trigger nodes as metadata-only entrypoints.
27
- */
28
- const decorator_validation_1 = require("@decaf-ts/decorator-validation");
29
- const ui_decorators_1 = require("@decaf-ts/ui-decorators");
30
- const graph_1 = require("@decaf-ts/ui-decorators/graph");
31
- /**
32
- * Manual trigger — user clicks Run; input form generated from `inputSchema`.
33
- */
34
- let ManualTriggerNode = class ManualTriggerNode extends decorator_validation_1.Model {
35
- };
36
- exports.ManualTriggerNode = ManualTriggerNode;
37
- __decorate([
38
- (0, decorator_validation_1.required)(),
39
- (0, ui_decorators_1.uielement)("textarea", { label: "Trigger payload", placeholder: "Manual trigger payload" }),
40
- (0, graph_1.output)({ handle: "payload" }),
41
- __metadata("design:type", Object)
42
- ], ManualTriggerNode.prototype, "payload", void 0);
43
- exports.ManualTriggerNode = ManualTriggerNode = __decorate([
44
- (0, graph_1.node)("core.trigger.manual", {
45
- kind: "core.trigger.manual",
46
- category: "Trigger",
47
- color: "#3b82f6",
48
- icon: "ti-hand-click",
49
- width: 96,
50
- height: 96,
51
- labels: ["trigger", "manual", "entrypoint"],
52
- metadata: {
53
- title: "Manual trigger",
54
- description: "Starts the workflow when the user clicks Run. The input form is generated from the trigger's input schema.",
55
- trigger: {
56
- type: "manual",
57
- inputSchema: {},
58
- },
59
- },
60
- }),
61
- (0, decorator_validation_1.model)()
62
- ], ManualTriggerNode);
63
- /**
64
- * Webhook trigger — HTTP request received; path/method/auth/responseMode config.
65
- */
66
- let WebhookTriggerNode = class WebhookTriggerNode extends decorator_validation_1.Model {
67
- };
68
- exports.WebhookTriggerNode = WebhookTriggerNode;
69
- __decorate([
70
- (0, decorator_validation_1.required)(),
71
- (0, ui_decorators_1.uielement)("textarea", { label: "Request payload", placeholder: "Webhook request body" }),
72
- (0, graph_1.output)({ handle: "payload" }),
73
- __metadata("design:type", Object)
74
- ], WebhookTriggerNode.prototype, "payload", void 0);
75
- exports.WebhookTriggerNode = WebhookTriggerNode = __decorate([
76
- (0, graph_1.node)("core.trigger.webhook", {
77
- kind: "core.trigger.webhook",
78
- category: "Trigger",
79
- color: "#0ea5e9",
80
- icon: "ti-webhook",
81
- width: 96,
82
- height: 96,
83
- labels: ["trigger", "webhook", "http"],
84
- metadata: {
85
- title: "Webhook trigger",
86
- description: "Starts the workflow when an HTTP request is received on the configured path and method.",
87
- trigger: {
88
- type: "webhook",
89
- path: "/webhook",
90
- method: "POST",
91
- auth: "none",
92
- responseMode: "onReceived",
93
- },
94
- },
95
- }),
96
- (0, decorator_validation_1.model)()
97
- ], WebhookTriggerNode);
98
- /**
99
- * Schedule trigger — cron-like schedule; timezone + payload config.
100
- */
101
- let ScheduleTriggerNode = class ScheduleTriggerNode extends decorator_validation_1.Model {
102
- };
103
- exports.ScheduleTriggerNode = ScheduleTriggerNode;
104
- __decorate([
105
- (0, decorator_validation_1.required)(),
106
- (0, ui_decorators_1.uielement)("textarea", { label: "Scheduled payload", placeholder: "Payload for the scheduled run" }),
107
- (0, graph_1.output)({ handle: "payload" }),
108
- __metadata("design:type", Object)
109
- ], ScheduleTriggerNode.prototype, "payload", void 0);
110
- exports.ScheduleTriggerNode = ScheduleTriggerNode = __decorate([
111
- (0, graph_1.node)("core.trigger.schedule", {
112
- kind: "core.trigger.schedule",
113
- category: "Trigger",
114
- color: "#6366f1",
115
- icon: "ti-calendar-time",
116
- width: 96,
117
- height: 96,
118
- labels: ["trigger", "schedule", "cron"],
119
- metadata: {
120
- title: "Schedule trigger",
121
- description: "Starts the workflow on a cron-like schedule with timezone support.",
122
- trigger: {
123
- type: "schedule",
124
- schedule: "0 * * * *",
125
- timezone: "UTC",
126
- },
127
- },
128
- }),
129
- (0, decorator_validation_1.model)()
130
- ], ScheduleTriggerNode);
131
- /**
132
- * Event trigger — internal event bus topic subscriber.
133
- */
134
- let EventTriggerNode = class EventTriggerNode extends decorator_validation_1.Model {
135
- };
136
- exports.EventTriggerNode = EventTriggerNode;
137
- __decorate([
138
- (0, decorator_validation_1.required)(),
139
- (0, ui_decorators_1.uielement)("textarea", { label: "Event payload", placeholder: "Event bus payload" }),
140
- (0, graph_1.output)({ handle: "payload" }),
141
- __metadata("design:type", Object)
142
- ], EventTriggerNode.prototype, "payload", void 0);
143
- exports.EventTriggerNode = EventTriggerNode = __decorate([
144
- (0, graph_1.node)("core.trigger.event", {
145
- kind: "core.trigger.event",
146
- category: "Trigger",
147
- color: "#8b5cf6",
148
- icon: "ti-broadcast",
149
- width: 96,
150
- height: 96,
151
- labels: ["trigger", "event", "bus"],
152
- metadata: {
153
- title: "Event trigger",
154
- description: "Starts the workflow when an event is published on the configured internal event bus topic.",
155
- trigger: {
156
- type: "event",
157
- topic: "default",
158
- },
159
- },
160
- }),
161
- (0, decorator_validation_1.model)()
162
- ], EventTriggerNode);
163
- /**
164
- * Form trigger — generated public/internal form; field definitions.
165
- */
166
- let FormTriggerNode = class FormTriggerNode extends decorator_validation_1.Model {
167
- };
168
- exports.FormTriggerNode = FormTriggerNode;
169
- __decorate([
170
- (0, decorator_validation_1.required)(),
171
- (0, ui_decorators_1.uielement)("textarea", { label: "Form submission", placeholder: "Form submission payload" }),
172
- (0, graph_1.output)({ handle: "payload" }),
173
- __metadata("design:type", Object)
174
- ], FormTriggerNode.prototype, "payload", void 0);
175
- exports.FormTriggerNode = FormTriggerNode = __decorate([
176
- (0, graph_1.node)("core.trigger.form", {
177
- kind: "core.trigger.form",
178
- category: "Trigger",
179
- color: "#ec4899",
180
- icon: "ti-forms",
181
- width: 96,
182
- height: 96,
183
- labels: ["trigger", "form", "public"],
184
- metadata: {
185
- title: "Form trigger",
186
- description: "Starts the workflow when a generated form is submitted. Field definitions drive the form schema.",
187
- trigger: {
188
- type: "form",
189
- fields: [],
190
- },
191
- },
192
- }),
193
- (0, decorator_validation_1.model)()
194
- ], FormTriggerNode);
195
- /**
196
- * Chat trigger — chat message entrypoint; message/sessionId/userId schema.
197
- */
198
- let ChatTriggerNode = class ChatTriggerNode extends decorator_validation_1.Model {
199
- };
200
- exports.ChatTriggerNode = ChatTriggerNode;
201
- __decorate([
202
- (0, decorator_validation_1.required)(),
203
- (0, ui_decorators_1.uielement)("input", { label: "Message", placeholder: "Incoming chat message" }),
204
- (0, graph_1.output)({ handle: "message" }),
205
- __metadata("design:type", String)
206
- ], ChatTriggerNode.prototype, "message", void 0);
207
- __decorate([
208
- (0, decorator_validation_1.required)(),
209
- (0, ui_decorators_1.uielement)("input", { label: "Session ID", placeholder: "Chat session identifier" }),
210
- (0, graph_1.output)({ handle: "sessionId" }),
211
- __metadata("design:type", String)
212
- ], ChatTriggerNode.prototype, "sessionId", void 0);
213
- __decorate([
214
- (0, decorator_validation_1.required)(),
215
- (0, ui_decorators_1.uielement)("input", { label: "User ID", placeholder: "Chat user identifier" }),
216
- (0, graph_1.output)({ handle: "userId" }),
217
- __metadata("design:type", String)
218
- ], ChatTriggerNode.prototype, "userId", void 0);
219
- exports.ChatTriggerNode = ChatTriggerNode = __decorate([
220
- (0, graph_1.node)("core.trigger.chat", {
221
- kind: "core.trigger.chat",
222
- category: "Trigger",
223
- color: "#14b8a6",
224
- icon: "ti-message-circle",
225
- width: 96,
226
- height: 96,
227
- labels: ["trigger", "chat", "entrypoint"],
228
- metadata: {
229
- title: "Chat trigger",
230
- description: "Starts the workflow when a chat message is received. Emits message, sessionId, and userId.",
231
- trigger: {
232
- type: "chat",
233
- },
234
- },
235
- }),
236
- (0, decorator_validation_1.model)()
237
- ], ChatTriggerNode);
238
- /**
239
- * All built-in trigger node constructors.
240
- */
241
- exports.GRAPH_TRIGGER_NODES = [
242
- ManualTriggerNode,
243
- WebhookTriggerNode,
244
- ScheduleTriggerNode,
245
- EventTriggerNode,
246
- FormTriggerNode,
247
- ChatTriggerNode,
248
- ];
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvbm9kZXMvdHJpZ2dlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFN0Q7O0dBRUc7QUFtQkksSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBa0IsU0FBUSxLQUFLO0NBSzNDLENBQUE7QUFEQztJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLENBQUM7SUFDMUYsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDOztrREFDWjtBQUpQLGlCQUFpQjtJQWxCN0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1FBQzNCLElBQUksRUFBRSxxQkFBcUI7UUFDM0IsUUFBUSxFQUFFLFNBQVM7UUFDbkIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsSUFBSSxFQUFFLGVBQWU7UUFDckIsS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDO1FBQzNDLFFBQVEsRUFBRTtZQUNSLEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsV0FBVyxFQUFFLDRHQUE0RztZQUN6SCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLEVBQUU7YUFDaEI7U0FDRjtLQUNGLENBQUM7SUFDRCxLQUFL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dGlvbnMvZ3JhcGgvbm9kZXMvdHJpZ2dlcnNcbiAqIEBzdW1tYXJ5IFByb2R1Y3Rpb24gdHJpZ2dlciBub2RlIGtpbmQgZGVjbGFyYXRpb25zIChERUNBRi0zMiDCpzIyLjIuMSkuXG4gKiBAZGVzY3JpcHRpb24gQ2Fub25pY2FsIGBAbm9kZWAtZGVjb3JhdGVkIGNsYXNzZXMgZm9yIHRoZSBzaXggQUxGUkVELTUgdHJpZ2dlclxuICoga2luZHMuIFRyaWdnZXJzIGFyZSBtZXRhZGF0YS1vbmx5IGVudHJ5cG9pbnRzOiB0aGV5IGRlZmluZSBob3cgYSB3b3JrZmxvd1xuICogc3RhcnRzIGFuZCBwcm9kdWNlIGEgdHJpZ2dlciBwYXlsb2FkIG9uIHRoZWlyIGBAb3V0cHV0YCBwb3J0cy4gVGhleSBoYXZlIG5vXG4gKiBgQGlucHV0YCBwb3J0cyAobm90aGluZyBmZWVkcyBhIHRyaWdnZXIpIGFuZCBubyBidWlsdC1pbiBleGVjdXRvcnMg4oCUIHRoZVxuICogZW5naW5lJ3MgZXhlY3V0aW9uIG1vZGVsIHN0YXJ0cyBmcm9tIHdvcmtmbG93IGlucHV0cyAowqc1LjgpIGFuZCB0cmVhdHNcbiAqIHRyaWdnZXIgbm9kZXMgYXMgbWV0YWRhdGEtb25seSBlbnRyeXBvaW50cy5cbiAqL1xuaW1wb3J0IHsgTW9kZWwsIG1vZGVsLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVpZWxlbWVudCB9IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgbm9kZSwgb3V0cHV0IH0gZnJvbSBcIkBkZWNhZi10cy91aS1kZWNvcmF0b3JzL2dyYXBoXCI7XG5cbi8qKlxuICogTWFudWFsIHRyaWdnZXIg4oCUIHVzZXIgY2xpY2tzIFJ1bjsgaW5wdXQgZm9ybSBnZW5lcmF0ZWQgZnJvbSBgaW5wdXRTY2hlbWFgLlxuICovXG5Abm9kZShcImNvcmUudHJpZ2dlci5tYW51YWxcIiwge1xuICBraW5kOiBcImNvcmUudHJpZ2dlci5tYW51YWxcIixcbiAgY2F0ZWdvcnk6IFwiVHJpZ2dlclwiLFxuICBjb2xvcjogXCIjM2I4MmY2XCIsXG4gIGljb246IFwidGktaGFuZC1jbGlja1wiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1widHJpZ2dlclwiLCBcIm1hbnVhbFwiLCBcImVudHJ5cG9pbnRcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiTWFudWFsIHRyaWdnZXJcIixcbiAgICBkZXNjcmlwdGlvbjogXCJTdGFydHMgdGhlIHdvcmtmbG93IHdoZW4gdGhlIHVzZXIgY2xpY2tzIFJ1bi4gVGhlIGlucHV0IGZvcm0gaXMgZ2VuZXJhdGVkIGZyb20gdGhlIHRyaWdnZXIncyBpbnB1dCBzY2hlbWEuXCIsXG4gICAgdHJpZ2dlcjoge1xuICAgICAgdHlwZTogXCJtYW51YWxcIixcbiAgICAgIGlucHV0U2NoZW1hOiB7fSxcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgTWFudWFsVHJpZ2dlck5vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIlRyaWdnZXIgcGF5bG9hZFwiLCBwbGFjZWhvbGRlcjogXCJNYW51YWwgdHJpZ2dlciBwYXlsb2FkXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJwYXlsb2FkXCIgfSlcbiAgcGF5bG9hZCE6IHVua25vd247XG59XG5cbi8qKlxuICogV2ViaG9vayB0cmlnZ2VyIOKAlCBIVFRQIHJlcXVlc3QgcmVjZWl2ZWQ7IHBhdGgvbWV0aG9kL2F1dGgvcmVzcG9uc2VNb2RlIGNvbmZpZy5cbiAqL1xuQG5vZGUoXCJjb3JlLnRyaWdnZXIud2ViaG9va1wiLCB7XG4gIGtpbmQ6IFwiY29yZS50cmlnZ2VyLndlYmhvb2tcIixcbiAgY2F0ZWdvcnk6IFwiVHJpZ2dlclwiLFxuICBjb2xvcjogXCIjMGVhNWU5XCIsXG4gIGljb246IFwidGktd2ViaG9va1wiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1widHJpZ2dlclwiLCBcIndlYmhvb2tcIiwgXCJodHRwXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIldlYmhvb2sgdHJpZ2dlclwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlN0YXJ0cyB0aGUgd29ya2Zsb3cgd2hlbiBhbiBIVFRQIHJlcXVlc3QgaXMgcmVjZWl2ZWQgb24gdGhlIGNvbmZpZ3VyZWQgcGF0aCBhbmQgbWV0aG9kLlwiLFxuICAgIHRyaWdnZXI6IHtcbiAgICAgIHR5cGU6IFwid2ViaG9va1wiLFxuICAgICAgcGF0aDogXCIvd2ViaG9va1wiLFxuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGF1dGg6IFwibm9uZVwiLFxuICAgICAgcmVzcG9uc2VNb2RlOiBcIm9uUmVjZWl2ZWRcIixcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgV2ViaG9va1RyaWdnZXJOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJSZXF1ZXN0IHBheWxvYWRcIiwgcGxhY2Vob2xkZXI6IFwiV2ViaG9vayByZXF1ZXN0IGJvZHlcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInBheWxvYWRcIiB9KVxuICBwYXlsb2FkITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBTY2hlZHVsZSB0cmlnZ2VyIOKAlCBjcm9uLWxpa2Ugc2NoZWR1bGU7IHRpbWV6b25lICsgcGF5bG9hZCBjb25maWcuXG4gKi9cbkBub2RlKFwiY29yZS50cmlnZ2VyLnNjaGVkdWxlXCIsIHtcbiAga2luZDogXCJjb3JlLnRyaWdnZXIuc2NoZWR1bGVcIixcbiAgY2F0ZWdvcnk6IFwiVHJpZ2dlclwiLFxuICBjb2xvcjogXCIjNjM2NmYxXCIsXG4gIGljb246IFwidGktY2FsZW5kYXItdGltZVwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1widHJpZ2dlclwiLCBcInNjaGVkdWxlXCIsIFwiY3JvblwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJTY2hlZHVsZSB0cmlnZ2VyXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3RhcnRzIHRoZSB3b3JrZmxvdyBvbiBhIGNyb24tbGlrZSBzY2hlZHVsZSB3aXRoIHRpbWV6b25lIHN1cHBvcnQuXCIsXG4gICAgdHJpZ2dlcjoge1xuICAgICAgdHlwZTogXCJzY2hlZHVsZVwiLFxuICAgICAgc2NoZWR1bGU6IFwiMCAqICogKiAqXCIsXG4gICAgICB0aW1lem9uZTogXCJVVENcIixcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVUcmlnZ2VyTm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiU2NoZWR1bGVkIHBheWxvYWRcIiwgcGxhY2Vob2xkZXI6IFwiUGF5bG9hZCBmb3IgdGhlIHNjaGVkdWxlZCBydW5cIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInBheWxvYWRcIiB9KVxuICBwYXlsb2FkITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBFdmVudCB0cmlnZ2VyIOKAlCBpbnRlcm5hbCBldmVudCBidXMgdG9waWMgc3Vic2NyaWJlci5cbiAqL1xuQG5vZGUoXCJjb3JlLnRyaWdnZXIuZXZlbnRcIiwge1xuICBraW5kOiBcImNvcmUudHJpZ2dlci5ldmVudFwiLFxuICBjYXRlZ29yeTogXCJUcmlnZ2VyXCIsXG4gIGNvbG9yOiBcIiM4YjVjZjZcIixcbiAgaWNvbjogXCJ0aS1icm9hZGNhc3RcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcInRyaWdnZXJcIiwgXCJldmVudFwiLCBcImJ1c1wiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJFdmVudCB0cmlnZ2VyXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3RhcnRzIHRoZSB3b3JrZmxvdyB3aGVuIGFuIGV2ZW50IGlzIHB1Ymxpc2hlZCBvbiB0aGUgY29uZmlndXJlZCBpbnRlcm5hbCBldmVudCBidXMgdG9waWMuXCIsXG4gICAgdHJpZ2dlcjoge1xuICAgICAgdHlwZTogXCJldmVudFwiLFxuICAgICAgdG9waWM6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBFdmVudFRyaWdnZXJOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJFdmVudCBwYXlsb2FkXCIsIHBsYWNlaG9sZGVyOiBcIkV2ZW50IGJ1cyBwYXlsb2FkXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJwYXlsb2FkXCIgfSlcbiAgcGF5bG9hZCE6IHVua25vd247XG59XG5cbi8qKlxuICogRm9ybSB0cmlnZ2VyIOKAlCBnZW5lcmF0ZWQgcHVibGljL2ludGVybmFsIGZvcm07IGZpZWxkIGRlZmluaXRpb25zLlxuICovXG5Abm9kZShcImNvcmUudHJpZ2dlci5mb3JtXCIsIHtcbiAga2luZDogXCJjb3JlLnRyaWdnZXIuZm9ybVwiLFxuICBjYXRlZ29yeTogXCJUcmlnZ2VyXCIsXG4gIGNvbG9yOiBcIiNlYzQ4OTlcIixcbiAgaWNvbjogXCJ0aS1mb3Jtc1wiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1widHJpZ2dlclwiLCBcImZvcm1cIiwgXCJwdWJsaWNcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiRm9ybSB0cmlnZ2VyXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3RhcnRzIHRoZSB3b3JrZmxvdyB3aGVuIGEgZ2VuZXJhdGVkIGZvcm0gaXMgc3VibWl0dGVkLiBGaWVsZCBkZWZpbml0aW9ucyBkcml2ZSB0aGUgZm9ybSBzY2hlbWEuXCIsXG4gICAgdHJpZ2dlcjoge1xuICAgICAgdHlwZTogXCJmb3JtXCIsXG4gICAgICBmaWVsZHM6IFtdLFxuICAgIH0sXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBGb3JtVHJpZ2dlck5vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIkZvcm0gc3VibWlzc2lvblwiLCBwbGFjZWhvbGRlcjogXCJGb3JtIHN1Ym1pc3Npb24gcGF5bG9hZFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicGF5bG9hZFwiIH0pXG4gIHBheWxvYWQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIENoYXQgdHJpZ2dlciDigJQgY2hhdCBtZXNzYWdlIGVudHJ5cG9pbnQ7IG1lc3NhZ2Uvc2Vzc2lvbklkL3VzZXJJZCBzY2hlbWEuXG4gKi9cbkBub2RlKFwiY29yZS50cmlnZ2VyLmNoYXRcIiwge1xuICBraW5kOiBcImNvcmUudHJpZ2dlci5jaGF0XCIsXG4gIGNhdGVnb3J5OiBcIlRyaWdnZXJcIixcbiAgY29sb3I6IFwiIzE0YjhhNlwiLFxuICBpY29uOiBcInRpLW1lc3NhZ2UtY2lyY2xlXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJ0cmlnZ2VyXCIsIFwiY2hhdFwiLCBcImVudHJ5cG9pbnRcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiQ2hhdCB0cmlnZ2VyXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3RhcnRzIHRoZSB3b3JrZmxvdyB3aGVuIGEgY2hhdCBtZXNzYWdlIGlzIHJlY2VpdmVkLiBFbWl0cyBtZXNzYWdlLCBzZXNzaW9uSWQsIGFuZCB1c2VySWQuXCIsXG4gICAgdHJpZ2dlcjoge1xuICAgICAgdHlwZTogXCJjaGF0XCIsXG4gICAgfSxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIENoYXRUcmlnZ2VyTm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiTWVzc2FnZVwiLCBwbGFjZWhvbGRlcjogXCJJbmNvbWluZyBjaGF0IG1lc3NhZ2VcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcIm1lc3NhZ2VcIiB9KVxuICBtZXNzYWdlITogc3RyaW5nO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlNlc3Npb24gSURcIiwgcGxhY2Vob2xkZXI6IFwiQ2hhdCBzZXNzaW9uIGlkZW50aWZpZXJcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInNlc3Npb25JZFwiIH0pXG4gIHNlc3Npb25JZCE6IHN0cmluZztcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJVc2VyIElEXCIsIHBsYWNlaG9sZGVyOiBcIkNoYXQgdXNlciBpZGVudGlmaWVyXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJ1c2VySWRcIiB9KVxuICB1c2VySWQhOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQWxsIGJ1aWx0LWluIHRyaWdnZXIgbm9kZSBjb25zdHJ1Y3RvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBHUkFQSF9UUklHR0VSX05PREVTID0gW1xuICBNYW51YWxUcmlnZ2VyTm9kZSxcbiAgV2ViaG9va1RyaWdnZXJOb2RlLFxuICBTY2hlZHVsZVRyaWdnZXJOb2RlLFxuICBFdmVudFRyaWdnZXJOb2RlLFxuICBGb3JtVHJpZ2dlck5vZGUsXG4gIENoYXRUcmlnZ2VyTm9kZSxcbl0gYXMgY29uc3Q7XG4iXX0=
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0cmlnZ2Vycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJO0lBQ2pGLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0gsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVU7UUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQzs7UUFDMUgsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUFFLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJ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UztRQUNuQixLQUFLLEVBQUUsU0FBUztRQUNoQixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQztRQUN6QyxRQUFRLEVBQUU7WUFDTixLQUFLLEVBQUUsY0FBYztZQUNyQixXQUFXLEVBQUUsNEZBQTRGO1lBQ3pHLE9BQU8sRUFBRTtnQkFDTCxJQUFJLEVBQUUsTUFBTTthQUNmO1NBQ0o7S0FDSixDQUFDO0lBQ0YsSUFBQSw0QkFBSyxHQUFFO0NBQ1YsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUVwQjs7R0FFRztBQUNVLFFBQUEsbUJBQW1CLEdBQUc7SUFDL0IsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixlQUFlO0NBQ2xCLENBQUM7QUFDRiwwNGJBQTA0YiIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbnZhciBfX21ldGFkYXRhID0gKHRoaXMgJiYgdGhpcy5fX21ldGFkYXRhKSB8fCBmdW5jdGlvbiAoaywgdikge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShrLCB2KTtcbn07XG4vKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL25vZGVzL3RyaWdnZXJzXG4gKiBAc3VtbWFyeSBQcm9kdWN0aW9uIHRyaWdnZXIgbm9kZSBraW5kIGRlY2xhcmF0aW9ucyAoREVDQUYtMzIgwqcyMi4yLjEpLlxuICogQGRlc2NyaXB0aW9uIENhbm9uaWNhbCBgQG5vZGVgLWRlY29yYXRlZCBjbGFzc2VzIGZvciB0aGUgc2l4IEFMRlJFRC01IHRyaWdnZXJcbiAqIGtpbmRzLiBUcmlnZ2VycyBhcmUgbWV0YWRhdGEtb25seSBlbnRyeXBvaW50czogdGhleSBkZWZpbmUgaG93IGEgd29ya2Zsb3dcbiAqIHN0YXJ0cyBhbmQgcHJvZHVjZSBhIHRyaWdnZXIgcGF5bG9hZCBvbiB0aGVpciBgQG91dHB1dGAgcG9ydHMuIFRoZXkgaGF2ZSBub1xuICogYEBpbnB1dGAgcG9ydHMgKG5vdGhpbmcgZmVlZHMgYSB0cmlnZ2VyKSBhbmQgbm8gYnVpbHQtaW4gZXhlY3V0b3JzIOKAlCB0aGVcbiAqIGVuZ2luZSdzIGV4ZWN1dGlvbiBtb2RlbCBzdGFydHMgZnJvbSB3b3JrZmxvdyBpbnB1dHMgKMKnNS44KSBhbmQgdHJlYXRzXG4gKiB0cmlnZ2VyIG5vZGVzIGFzIG1ldGFkYXRhLW9ubHkgZW50cnlwb2ludHMuXG4gKi9cbmltcG9ydCB7IE1vZGVsLCBtb2RlbCwgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyB1aWVsZW1lbnQgfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IG5vZGUsIG91dHB1dCB9IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9ycy9ncmFwaFwiO1xuLyoqXG4gKiBNYW51YWwgdHJpZ2dlciDigJQgdXNlciBjbGlja3MgUnVuOyBpbnB1dCBmb3JtIGdlbmVyYXRlZCBmcm9tIGBpbnB1dFNjaGVtYWAuXG4gKi9cbmxldCBNYW51YWxUcmlnZ2VyTm9kZSA9IGNsYXNzIE1hbnVhbFRyaWdnZXJOb2RlIGV4dGVuZHMgTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJUcmlnZ2VyIHBheWxvYWRcIiwgcGxhY2Vob2xkZXI6IFwiTWFudWFsIHRyaWdnZXIgcGF5bG9hZFwiIH0pLFxuICAgIG91dHB1dCh7IGhhbmRsZTogXCJwYXlsb2FkXCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIE1hbnVhbFRyaWdnZXJOb2RlLnByb3RvdHlwZSwgXCJwYXlsb2FkXCIsIHZvaWQgMCk7XG5NYW51YWxUcmlnZ2VyTm9kZSA9IF9fZGVjb3JhdGUoW1xuICAgIG5vZGUoXCJjb3JlLnRyaWdnZXIubWFudWFsXCIsIHtcbiAgICAgICAga2luZDogXCJjb3JlLnRyaWdnZXIubWFudWFsXCIsXG4gICAgICAgIGNhdGVnb3J5OiBcIlRyaWdnZXJcIixcbiAgICAgICAgY29sb3I6IFwiIzNiODJmNlwiLFxuICAgICAgICBpY29uOiBcInRpLWhhbmQtY2xpY2tcIixcbiAgICAgICAgd2lkdGg6IDk2LFxuICAgICAgICBoZWlnaHQ6IDk2LFxuICAgICAgICBsYWJlbHM6IFtcInRyaWdnZXJcIiwgXCJtYW51YWxcIiwgXCJlbnRyeXBvaW50XCJdLFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgdGl0bGU6IFwiTWFudWFsIHRyaWdnZXJcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlN0YXJ0cyB0aGUgd29ya2Zsb3cgd2hlbiB0aGUgdXNlciBjbGlja3MgUnVuLiBUaGUgaW5wdXQgZm9ybSBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgdHJpZ2dlcidzIGlucHV0IHNjaGVtYS5cIixcbiAgICAgICAgICAgIHRyaWdnZXI6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIm1hbnVhbFwiLFxuICAgICAgICAgICAgICAgIGlucHV0U2NoZW1hOiB7fSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgbW9kZWwoKVxuXSwgTWFudWFsVHJpZ2dlck5vZGUpO1xuZXhwb3J0IHsgTWFudWFsVHJpZ2dlck5vZGUgfTtcbi8qKlxuICogV2ViaG9vayB0cmlnZ2VyIOKAlCBIVFRQIHJlcXVlc3QgcmVjZWl2ZWQ7IHBhdGgvbWV0aG9kL2F1dGgvcmVzcG9uc2VNb2RlIGNvbmZpZy5cbiAqL1xubGV0IFdlYmhvb2tUcmlnZ2VyTm9kZSA9IGNsYXNzIFdlYmhvb2tUcmlnZ2VyTm9kZSBleHRlbmRzIE1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiUmVxdWVzdCBwYXlsb2FkXCIsIHBsYWNlaG9sZGVyOiBcIldlYmhvb2sgcmVxdWVzdCBib2R5XCIgfSksXG4gICAgb3V0cHV0KHsgaGFuZGxlOiBcInBheWxvYWRcIiB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgV2ViaG9va1RyaWdnZXJOb2RlLnByb3RvdHlwZSwgXCJwYXlsb2FkXCIsIHZvaWQgMCk7XG5XZWJob29rVHJpZ2dlck5vZGUgPSBfX2RlY29yYXRlKFtcbiAgICBub2RlKFwiY29yZS50cmlnZ2VyLndlYmhvb2tcIiwge1xuICAgICAgICBraW5kOiBcImNvcmUudHJpZ2dlci53ZWJob29rXCIsXG4gICAgICAgIGNhdGVnb3J5OiBcIlRyaWdnZXJcIixcbiAgICAgICAgY29sb3I6IFwiIzBlYTVlOVwiLFxuICAgICAgICBpY29uOiBcInRpLXdlYmhvb2tcIixcbiAgICAgICAgd2lkdGg6IDk2LFxuICAgICAgICBoZWlnaHQ6IDk2LFxuICAgICAgICBsYWJlbHM6IFtcInRyaWdnZXJcIiwgXCJ3ZWJob29rXCIsIFwiaHR0cFwiXSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgIHRpdGxlOiBcIldlYmhvb2sgdHJpZ2dlclwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU3RhcnRzIHRoZSB3b3JrZmxvdyB3aGVuIGFuIEhUVFAgcmVxdWVzdCBpcyByZWNlaXZlZCBvbiB0aGUgY29uZmlndXJlZCBwYXRoIGFuZCBtZXRob2QuXCIsXG4gICAgICAgICAgICB0cmlnZ2VyOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJ3ZWJob29rXCIsXG4gICAgICAgICAgICAgICAgcGF0aDogXCIvd2ViaG9va1wiLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgYXV0aDogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VNb2RlOiBcIm9uUmVjZWl2ZWRcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgbW9kZWwoKVxuXSwgV2ViaG9va1RyaWdnZXJOb2RlKTtcbmV4cG9ydCB7IFdlYmhvb2tUcmlnZ2VyTm9kZSB9O1xuLyoqXG4gKiBTY2hlZHVsZSB0cmlnZ2VyIOKAlCBjcm9uLWxpa2Ugc2NoZWR1bGU7IHRpbWV6b25lICsgcGF5bG9hZCBjb25maWcuXG4gKi9cbmxldCBTY2hlZHVsZVRyaWdnZXJOb2RlID0gY2xhc3MgU2NoZWR1bGVUcmlnZ2VyTm9kZSBleHRlbmRzIE1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiU2NoZWR1bGVkIHBheWxvYWRcIiwgcGxhY2Vob2xkZXI6IFwiUGF5bG9hZCBmb3IgdGhlIHNjaGVkdWxlZCBydW5cIiB9KSxcbiAgICBvdXRwdXQoeyBoYW5kbGU6IFwicGF5bG9hZFwiIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBTY2hlZHVsZVRyaWdnZXJOb2RlLnByb3RvdHlwZSwgXCJwYXlsb2FkXCIsIHZvaWQgMCk7XG5TY2hlZHVsZVRyaWdnZXJOb2RlID0gX19kZWNvcmF0ZShbXG4gICAgbm9kZShcImNvcmUudHJpZ2dlci5zY2hlZHVsZVwiLCB7XG4gICAgICAgIGtpbmQ6IFwiY29yZS50cmlnZ2VyLnNjaGVkdWxlXCIsXG4gICAgICAgIGNhdGVnb3J5OiBcIlRyaWdnZXJcIixcbiAgICAgICAgY29sb3I6IFwiIzYzNjZmMVwiLFxuICAgICAgICBpY29uOiBcInRpLWNhbGVuZGFyLXRpbWVcIixcbiAgICAgICAgd2lkdGg6IDk2LFxuICAgICAgICBoZWlnaHQ6IDk2LFxuICAgICAgICBsYWJlbHM6IFtcInRyaWdnZXJcIiwgXCJzY2hlZHVsZVwiLCBcImNyb25cIl0sXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICB0aXRsZTogXCJTY2hlZHVsZSB0cmlnZ2VyXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTdGFydHMgdGhlIHdvcmtmbG93IG9uIGEgY3Jvbi1saWtlIHNjaGVkdWxlIHdpdGggdGltZXpvbmUgc3VwcG9ydC5cIixcbiAgICAgICAgICAgIHRyaWdnZXI6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcInNjaGVkdWxlXCIsXG4gICAgICAgICAgICAgICAgc2NoZWR1bGU6IFwiMCAqICogKiAqXCIsXG4gICAgICAgICAgICAgICAgdGltZXpvbmU6IFwiVVRDXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0pLFxuICAgIG1vZGVsKClcbl0sIFNjaGVkdWxlVHJpZ2dlck5vZGUpO1xuZXhwb3J0IHsgU2NoZWR1bGVUcmlnZ2VyTm9kZSB9O1xuLyoqXG4gKiBFdmVudCB0cmlnZ2VyIOKAlCBpbnRlcm5hbCBldmVudCBidXMgdG9waWMgc3Vic2NyaWJlci5cbiAqL1xubGV0IEV2ZW50VHJpZ2dlck5vZGUgPSBjbGFzcyBFdmVudFRyaWdnZXJOb2RlIGV4dGVuZHMgTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJFdmVudCBwYXlsb2FkXCIsIHBsYWNlaG9sZGVyOiBcIkV2ZW50IGJ1cyBwYXlsb2FkXCIgfSksXG4gICAgb3V0cHV0KHsgaGFuZGxlOiBcInBheWxvYWRcIiB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgRXZlbnRUcmlnZ2VyTm9kZS5wcm90b3R5cGUsIFwicGF5bG9hZFwiLCB2b2lkIDApO1xuRXZlbnRUcmlnZ2VyTm9kZSA9IF9fZGVjb3JhdGUoW1xuICAgIG5vZGUoXCJjb3JlLnRyaWdnZXIuZXZlbnRcIiwge1xuICAgICAgICBraW5kOiBcImNvcmUudHJpZ2dlci5ldmVudFwiLFxuICAgICAgICBjYXRlZ29yeTogXCJUcmlnZ2VyXCIsXG4gICAgICAgIGNvbG9yOiBcIiM4YjVjZjZcIixcbiAgICAgICAgaWNvbjogXCJ0aS1icm9hZGNhc3RcIixcbiAgICAgICAgd2lkdGg6IDk2LFxuICAgICAgICBoZWlnaHQ6IDk2LFxuICAgICAgICBsYWJlbHM6IFtcInRyaWdnZXJcIiwgXCJldmVudFwiLCBcImJ1c1wiXSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgIHRpdGxlOiBcIkV2ZW50IHRyaWdnZXJcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlN0YXJ0cyB0aGUgd29ya2Zsb3cgd2hlbiBhbiBldmVudCBpcyBwdWJsaXNoZWQgb24gdGhlIGNvbmZpZ3VyZWQgaW50ZXJuYWwgZXZlbnQgYnVzIHRvcGljLlwiLFxuICAgICAgICAgICAgdHJpZ2dlcjoge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiZXZlbnRcIixcbiAgICAgICAgICAgICAgICB0b3BpYzogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0pLFxuICAgIG1vZGVsKClcbl0sIEV2ZW50VHJpZ2dlck5vZGUpO1xuZXhwb3J0IHsgRXZlbnRUcmlnZ2VyTm9kZSB9O1xuLyoqXG4gKiBGb3JtIHRyaWdnZXIg4oCUIGdlbmVyYXRlZCBwdWJsaWMvaW50ZXJuYWwgZm9ybTsgZmllbGQgZGVmaW5pdGlvbnMuXG4gKi9cbmxldCBGb3JtVHJpZ2dlck5vZGUgPSBjbGFzcyBGb3JtVHJpZ2dlck5vZGUgZXh0ZW5kcyBNb2RlbCB7XG59O1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIkZvcm0gc3VibWlzc2lvblwiLCBwbGFjZWhvbGRlcjogXCJGb3JtIHN1Ym1pc3Npb24gcGF5bG9hZFwiIH0pLFxuICAgIG91dHB1dCh7IGhhbmRsZTogXCJwYXlsb2FkXCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEZvcm1UcmlnZ2VyTm9kZS5wcm90b3R5cGUsIFwicGF5bG9hZFwiLCB2b2lkIDApO1xuRm9ybVRyaWdnZXJOb2RlID0gX19kZWNvcmF0ZShbXG4gICAgbm9kZShcImNvcmUudHJpZ2dlci5mb3JtXCIsIHtcbiAgICAgICAga2luZDogXCJjb3JlLnRyaWdnZXIuZm9ybVwiLFxuICAgICAgICBjYXRlZ29yeTogXCJUcmlnZ2VyXCIsXG4gICAgICAgIGNvbG9yOiBcIiNlYzQ4OTlcIixcbiAgICAgICAgaWNvbjogXCJ0aS1mb3Jtc1wiLFxuICAgICAgICB3aWR0aDogOTYsXG4gICAgICAgIGhlaWdodDogOTYsXG4gICAgICAgIGxhYmVsczogW1widHJpZ2dlclwiLCBcImZvcm1cIiwgXCJwdWJsaWNcIl0sXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICB0aXRsZTogXCJGb3JtIHRyaWdnZXJcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlN0YXJ0cyB0aGUgd29ya2Zsb3cgd2hlbiBhIGdlbmVyYXRlZCBmb3JtIGlzIHN1Ym1pdHRlZC4gRmllbGQgZGVmaW5pdGlvbnMgZHJpdmUgdGhlIGZvcm0gc2NoZW1hLlwiLFxuICAgICAgICAgICAgdHJpZ2dlcjoge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiZm9ybVwiLFxuICAgICAgICAgICAgICAgIGZpZWxkczogW10sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0pLFxuICAgIG1vZGVsKClcbl0sIEZvcm1UcmlnZ2VyTm9kZSk7XG5leHBvcnQgeyBGb3JtVHJpZ2dlck5vZGUgfTtcbi8qKlxuICogQ2hhdCB0cmlnZ2VyIOKAlCBjaGF0IG1lc3NhZ2UgZW50cnlwb2ludDsgbWVzc2FnZS9zZXNzaW9uSWQvdXNlcklkIHNjaGVtYS5cbiAqL1xubGV0IENoYXRUcmlnZ2VyTm9kZSA9IGNsYXNzIENoYXRUcmlnZ2VyTm9kZSBleHRlbmRzIE1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiTWVzc2FnZVwiLCBwbGFjZWhvbGRlcjogXCJJbmNvbWluZyBjaGF0IG1lc3NhZ2VcIiB9KSxcbiAgICBvdXRwdXQoeyBoYW5kbGU6IFwibWVzc2FnZVwiIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBDaGF0VHJpZ2dlck5vZGUucHJvdG90eXBlLCBcIm1lc3NhZ2VcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJTZXNzaW9uIElEXCIsIHBsYWNlaG9sZGVyOiBcIkNoYXQgc2Vzc2lvbiBpZGVudGlmaWVyXCIgfSksXG4gICAgb3V0cHV0KHsgaGFuZGxlOiBcInNlc3Npb25JZFwiIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBDaGF0VHJpZ2dlck5vZGUucHJvdG90eXBlLCBcInNlc3Npb25JZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlVzZXIgSURcIiwgcGxhY2Vob2xkZXI6IFwiQ2hhdCB1c2VyIGlkZW50aWZpZXJcIiB9KSxcbiAgICBvdXRwdXQoeyBoYW5kbGU6IFwidXNlcklkXCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIENoYXRUcmlnZ2VyTm9kZS5wcm90b3R5cGUsIFwidXNlcklkXCIsIHZvaWQgMCk7XG5DaGF0VHJpZ2dlck5vZGUgPSBfX2RlY29yYXRlKFtcbiAgICBub2RlKFwiY29yZS50cmlnZ2VyLmNoYXRcIiwge1xuICAgICAgICBraW5kOiBcImNvcmUudHJpZ2dlci5jaGF0XCIsXG4gICAgICAgIGNhdGVnb3J5OiBcIlRyaWdnZXJcIixcbiAgICAgICAgY29sb3I6IFwiIzE0YjhhNlwiLFxuICAgICAgICBpY29uOiBcInRpLW1lc3NhZ2UtY2lyY2xlXCIsXG4gICAgICAgIHdpZHRoOiA5NixcbiAgICAgICAgaGVpZ2h0OiA5NixcbiAgICAgICAgbGFiZWxzOiBbXCJ0cmlnZ2VyXCIsIFwiY2hhdFwiLCBcImVudHJ5cG9pbnRcIl0sXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICB0aXRsZTogXCJDaGF0IHRyaWdnZXJcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlN0YXJ0cyB0aGUgd29ya2Zsb3cgd2hlbiBhIGNoYXQgbWVzc2FnZSBpcyByZWNlaXZlZC4gRW1pdHMgbWVzc2FnZSwgc2Vzc2lvbklkLCBhbmQgdXNlcklkLlwiLFxuICAgICAgICAgICAgdHJpZ2dlcjoge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiY2hhdFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICBtb2RlbCgpXG5dLCBDaGF0VHJpZ2dlck5vZGUpO1xuZXhwb3J0IHsgQ2hhdFRyaWdnZXJOb2RlIH07XG4vKipcbiAqIEFsbCBidWlsdC1pbiB0cmlnZ2VyIG5vZGUgY29uc3RydWN0b3JzLlxuICovXG5leHBvcnQgY29uc3QgR1JBUEhfVFJJR0dFUl9OT0RFUyA9IFtcbiAgICBNYW51YWxUcmlnZ2VyTm9kZSxcbiAgICBXZWJob29rVHJpZ2dlck5vZGUsXG4gICAgU2NoZWR1bGVUcmlnZ2VyTm9kZSxcbiAgICBFdmVudFRyaWdnZXJOb2RlLFxuICAgIEZvcm1UcmlnZ2VyTm9kZSxcbiAgICBDaGF0VHJpZ2dlck5vZGUsXG5dO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhKcFoyZGxjbk11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOHVMaTl6Y21NdlozSmhjR2d2Ym05a1pYTXZkSEpwWjJkbGNuTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPMEZCUVVFN096czdPenM3T3p0SFFWTkhPMEZCUTBnc1QwRkJUeXhGUVVGRkxFdEJRVXNzUlVGQlJTeExRVUZMTEVWQlFVVXNVVUZCVVN4RlFVRkZMRTFCUVUwc1owTkJRV2RETEVOQlFVTTdRVUZEZUVVc1QwRkJUeXhGUVVGRkxGTkJRVk1zUlVGQlJTeE5RVUZOTEhsQ1FVRjVRaXhEUVVGRE8wRkJRM0JFTEU5QlFVOHNSVUZCUlN4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxFMUJRVTBzSzBKQlFTdENMRU5CUVVNN1FVRkZOMFE3TzBkQlJVYzdRVUZ0UWtrc1NVRkJUU3hwUWtGQmFVSXNSMEZCZGtJc1RVRkJUU3hwUWtGQmEwSXNVMEZCVVN4TFFVRkxPME5CU3pORExFTkJRVUU3UVVGRVF6dEpRVWhETEZGQlFWRXNSVUZCUlR0SlFVTldMRk5CUVZNc1EwRkJReXhWUVVGVkxFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNhVUpCUVdsQ0xFVkJRVVVzVjBGQlZ5eEZRVUZGTEhkQ1FVRjNRaXhGUVVGRkxFTkJRVU03U1VGRE1VWXNUVUZCVFN4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxGTkJRVk1zUlVGQlJTeERRVUZET3p0clJFRkRXanRCUVVwUUxHbENRVUZwUWp0SlFXeENOMElzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhGUVVGRk8xRkJRek5DTEVsQlFVa3NSVUZCUlN4eFFrRkJjVUk3VVVGRE0wSXNVVUZCVVN4RlFVRkZMRk5CUVZNN1VVRkRia0lzUzBGQlN5eEZRVUZGTEZOQlFWTTdVVUZEYUVJc1NVRkJTU3hGUVVGRkxHVkJRV1U3VVVGRGNrSXNTMEZCU3l4RlFVRkZMRVZCUVVVN1VVRkRWQ3hOUVVGTkxFVkJRVVVzUlVGQlJUdFJRVU5XTEUxQlFVMHNSVUZCUlN4RFFVRkRMRk5CUVZNc1JVRkJSU3hSUVVGUkxFVkJRVVVzV1VGQldTeERRVUZETzFGQlF6TkRMRkZCUVZFc1JVRkJSVHRaUVVOU0xFdEJRVXNzUlVGQlJTeG5Ra0ZCWjBJN1dVRkRka0lzVjBGQlZ5eEZRVUZGTERSSFFVRTBSenRaUVVONlNDeFBRVUZQTEVWQlFVVTdaMEpCUTFBc1NVRkJTU3hGUVVGRkxGRkJRVkU3WjBKQlEyUXNWMEZCVnl4RlFVRkZMRVZCUVVVN1lVRkRhRUk3VTBGRFJqdExRVU5HTEVOQlFVTTdTVUZEUkN4TFFVRkxMRVZCUVVVN1IwRkRTeXhwUWtGQmFVSXNRMEZMTjBJN08wRkJSVVE3TzBkQlJVYzdRVUZ6UWtrc1NVRkJUU3hyUWtGQmEwSXNSMEZCZUVJc1RVRkJUU3hyUWtGQmJVSXNVMEZCVVN4TFFVRkxPME5CU3pWRExFTkJRVUU3UVVGRVF6dEpRVWhETEZGQlFWRXNSVUZCUlR0SlFVTldMRk5CUVZNc1EwRkJReXhWUVVGVkxFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNhVUpCUVdsQ0xFVkJRVVVzVjBGQlZ5eEZRVUZGTEhOQ1FVRnpRaXhGUVVGRkxFTkJRVU03U1VGRGVFWXNUVUZCVFN4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxGTkJRVk1zUlVGQlJTeERRVUZET3p0dFJFRkRXanRCUVVwUUxHdENRVUZyUWp0SlFYSkNPVUlzU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhGUVVGRk8xRkJRelZDTEVsQlFVa3NSVUZCUlN4elFrRkJjMEk3VVVGRE5VSXNVVUZCVVN4RlFVRkZMRk5CUVZNN1VVRkRia0lzUzBGQlN5eEZRVUZGTEZOQlFWTTdVVUZEYUVJc1NVRkJTU3hGUVVGRkxGbEJRVms3VVVGRGJFSXNTMEZCU3l4RlFVRkZMRVZCUVVVN1VVRkRWQ3hOUVVGTkxFVkJRVVVzUlVGQlJUdFJRVU5XTEUxQlFVMHNSVUZCUlN4RFFVRkRMRk5CUVZNc1JVRkJSU3hUUVVGVExFVkJRVVVzVFVGQlRTeERRVUZETzFGQlEzUkRMRkZCUVZFc1JVRkJSVHRaUVVOU0xFdEJRVXNzUlVGQlJTeHBRa0ZCYVVJN1dVRkRlRUlzVjBGQlZ5eEZRVUZGTEhsR1FVRjVSanRaUVVOMFJ5eFBRVUZQTEVWQlFVVTdaMEpCUTFBc1NVRkJTU3hGUVVGRkxGTkJRVk03WjBKQlEyWXNTVUZCU1N4RlFVRkZMRlZCUVZVN1owSkJRMmhDTEUxQlFVMHNSVUZCUlN4TlFVRk5PMmRDUVVOa0xFbEJRVWtzUlVGQlJTeE5RVUZOTzJkQ1FVTmFMRmxCUVZrc1JVRkJSU3haUVVGWk8yRkJRek5DTzFOQlEwWTdTMEZEUml4RFFVRkRPMGxCUTBRc1MwRkJTeXhGUVVGRk8wZEJRMHNzYTBKQlFXdENMRU5CU3psQ096dEJRVVZFT3p0SFFVVkhPMEZCYjBKSkxFbEJRVTBzYlVKQlFXMUNMRWRCUVhwQ0xFMUJRVTBzYlVKQlFXOUNMRk5CUVZFc1MwRkJTenREUVVzM1F5eERRVUZCTzBGQlJFTTdTVUZJUXl4UlFVRlJMRVZCUVVVN1NVRkRWaXhUUVVGVExFTkJRVU1zVlVGQlZTeEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZMRzFDUVVGdFFpeEZRVUZGTEZkQlFWY3NSVUZCUlN3clFrRkJLMElzUlVGQlJTeERRVUZETzBsQlEyNUhMRTFCUVUwc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeFRRVUZUTEVWQlFVVXNRMEZCUXpzN2IwUkJRMW83UVVGS1VDeHRRa0ZCYlVJN1NVRnVRaTlDTEVsQlFVa3NRMEZCUXl4MVFrRkJkVUlzUlVGQlJUdFJRVU0zUWl4SlFVRkpMRVZCUVVVc2RVSkJRWFZDTzFGQlF6ZENMRkZCUVZFc1JVRkJSU3hUUVVGVE8xRkJRMjVDTEV0QlFVc3NSVUZCUlN4VFFVRlRPMUZCUTJoQ0xFbEJRVWtzUlVGQlJTeHJRa0ZCYTBJN1VVRkRlRUlzUzBGQlN5eEZRVUZGTEVWQlFVVTdVVUZEVkN4TlFVRk5MRVZCUVVVc1JVRkJSVHRSUVVOV0xFMUJRVTBzUlVGQlJTeERRVUZETEZOQlFWTXNSVUZCUlN4VlFVRlZMRVZCUVVVc1RVRkJUU3hEUVVGRE8xRkJRM1pETEZGQlFWRXNSVUZCUlR0WlFVTlNMRXRCUVVzc1JVRkJSU3hyUWtGQmEwSTdXVUZEZWtJc1YwRkJWeXhGUVVGRkxHOUZRVUZ2UlR0WlFVTnFSaXhQUVVGUExFVkJRVVU3WjBKQlExQXNTVUZCU1N4RlFVRkZMRlZCUVZVN1owSkJRMmhDTEZGQlFWRXNSVUZCUlN4WFFVRlhPMmRDUVVOeVFpeFJRVUZSTEVWQlFVVXNTMEZCU3p0aFFVTm9RanRUUVVOR08wdEJRMFlzUTBGQlF6dEpRVU5FTEV0QlFVc3NSVUZCUlR0SFFVTkxMRzFDUVVGdFFpeERRVXN2UWpzN1FVRkZSRHM3UjBGRlJ6dEJRVzFDU1N4SlFVRk5MR2RDUVVGblFpeEhRVUYwUWl4TlFVRk5MR2RDUVVGcFFpeFRRVUZSTEV0QlFVczdRMEZMTVVNc1EwRkJRVHRCUVVSRE8wbEJTRU1zVVVGQlVTeEZRVUZGTzBsQlExWXNVMEZCVXl4RFFVRkRMRlZCUVZVc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeGxRVUZsTEVWQlFVVXNWMEZCVnl4RlFVRkZMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTTdTVUZEYmtZc1RVRkJUU3hEUVVGRExFVkJRVVVzVFVGQlRTeEZRVUZGTEZOQlFWTXNSVUZCUlN4RFFVRkRPenRwUkVGRFdqdEJRVXBRTEdkQ1FVRm5RanRKUVd4Q05VSXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeEZRVUZGTzFGQlF6RkNMRWxCUVVrc1JVRkJSU3h2UWtGQmIwSTdVVUZETVVJc1VVRkJVU3hGUVVGRkxGTkJRVk03VVVGRGJrSXNTMEZCU3l4RlFVRkZMRk5CUVZNN1VVRkRhRUlzU1VGQlNTeEZRVUZGTEdOQlFXTTdVVUZEY0VJc1MwRkJTeXhGUVVGRkxFVkJRVVU3VVVGRFZDeE5RVUZOTEVWQlFVVXNSVUZCUlR0UlFVTldMRTFCUVUwc1JVRkJSU3hEUVVGRExGTkJRVk1zUlVGQlJTeFBRVUZQTEVWQlFVVXNTMEZCU3l4RFFVRkRPMUZCUTI1RExGRkJRVkVzUlVGQlJUdFpRVU5TTEV0QlFVc3NSVUZCUlN4bFFVRmxPMWxCUTNSQ0xGZEJRVmNzUlVGQlJTdzBSa0ZCTkVZN1dVRkRla2NzVDBGQlR5eEZRVUZGTzJkQ1FVTlFMRWxCUVVrc1JVRkJSU3hQUVVGUE8yZENRVU5pTEV0QlFVc3NSVUZCUlN4VFFVRlRPMkZCUTJwQ08xTkJRMFk3UzBGRFJpeERRVUZETzBsQlEwUXNTMEZCU3l4RlFVRkZPMGRCUTBzc1owSkJRV2RDTEVOQlN6VkNPenRCUVVWRU96dEhRVVZITzBGQmJVSkpMRWxCUVUwc1pVRkJaU3hIUVVGeVFpeE5RVUZOTEdWQlFXZENMRk5CUVZFc1MwRkJTenREUVV0NlF5eERRVUZCTzBGQlJFTTdTVUZJUXl4UlFVRlJMRVZCUVVVN1NVRkRWaXhUUVVGVExFTkJRVU1zVlVGQlZTeEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZMR2xDUVVGcFFpeEZRVUZGTEZkQlFWY3NSVUZCUlN4NVFrRkJlVUlzUlVGQlJTeERRVUZETzBsQlF6TkdMRTFCUVUwc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeFRRVUZUTEVWQlFVVXNRMEZCUXpzN1owUkJRMW83UVVGS1VDeGxRVUZsTzBsQmJFSXpRaXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRVZCUVVVN1VVRkRla0lzU1VGQlNTeEZRVUZGTEcxQ1FVRnRRanRSUVVONlFpeFJRVUZSTEVWQlFVVXNVMEZCVXp0UlFVTnVRaXhMUVVGTExFVkJRVVVzVTBGQlV6dFJRVU5vUWl4SlFVRkpMRVZCUVVVc1ZVRkJWVHRSUVVOb1FpeExRVUZMTEVWQlFVVXNSVUZCUlR0UlFVTlVMRTFCUVUwc1JVRkJSU3hGUVVGRk8xRkJRMVlzVFVGQlRTeEZRVUZGTEVOQlFVTXNVMEZCVXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hSUVVGUkxFTkJRVU03VVVGRGNrTXNVVUZCVVN4RlFVRkZPMWxCUTFJc1MwRkJTeXhGUVVGRkxHTkJRV003V1VGRGNrSXNWMEZCVnl4RlFVRkZMR3RIUVVGclJ6dFpRVU12Unl4UFFVRlBMRVZCUVVVN1owSkJRMUFzU1VGQlNTeEZRVUZGTEUxQlFVMDdaMEpCUTFvc1RVRkJUU3hGUVVGRkxFVkJRVVU3WVVGRFdEdFRRVU5HTzB0QlEwWXNRMEZCUXp0SlFVTkVMRXRCUVVzc1JVRkJSVHRIUVVOTExHVkJRV1VzUTBGTE0wSTdPMEZCUlVRN08wZEJSVWM3UVVGclFra3NTVUZCVFN4bFFVRmxMRWRCUVhKQ0xFMUJRVTBzWlVGQlowSXNVMEZCVVN4TFFVRkxPME5CWlhwRExFTkJRVUU3UVVGWVF6dEpRVWhETEZGQlFWRXNSVUZCUlR0SlFVTldMRk5CUVZNc1EwRkJReXhQUVVGUExFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNVMEZCVXl4RlFVRkZMRmRCUVZjc1JVRkJSU3gxUWtGQmRVSXNSVUZCUlN4RFFVRkRPMGxCUXpsRkxFMUJRVTBzUTBGQlF5eEZRVUZGTEUxQlFVMHNSVUZCUlN4VFFVRlRMRVZCUVVVc1EwRkJRenM3WjBSQlEySTdRVUZMYWtJN1NVRklReXhSUVVGUkxFVkJRVVU3U1VGRFZpeFRRVUZUTEVOQlFVTXNUMEZCVHl4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFhRVUZYTEVWQlFVVXNlVUpCUVhsQ0xFVkJRVVVzUTBGQlF6dEpRVU51Uml4TlFVRk5MRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEVOQlFVTTdPMnRFUVVOaU8wRkJTMjVDTzBsQlNFTXNVVUZCVVN4RlFVRkZPMGxCUTFZc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4VFFVRlRMRVZCUVVVc1YwRkJWeXhGUVVGRkxITkNRVUZ6UWl4RlFVRkZMRU5CUVVNN1NVRkROMFVzVFVGQlRTeERRVUZETEVWQlFVVXNUVUZCVFN4RlFVRkZMRkZCUVZFc1JVRkJSU3hEUVVGRE96c3JRMEZEWWp0QlFXUk1MR1ZCUVdVN1NVRnFRak5DTEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUlVGQlJUdFJRVU42UWl4SlFVRkpMRVZCUVVVc2JVSkJRVzFDTzFGQlEzcENMRkZCUVZFc1JVRkJSU3hUUVVGVE8xRkJRMjVDTEV0QlFVc3NSVUZCUlN4VFFVRlRPMUZCUTJoQ0xFbEJRVWtzUlVGQlJTeHRRa0ZCYlVJN1VVRkRla0lzUzBGQlN5eEZRVUZGTEVWQlFVVTdVVUZEVkN4TlFVRk5MRVZCUVVVc1JVRkJSVHRSUVVOV0xFMUJRVTBzUlVGQlJTeERRVUZETEZOQlFWTXNSVUZCUlN4TlFVRk5MRVZCUVVVc1dVRkJXU3hEUVVGRE8xRkJRM3BETEZGQlFWRXNSVUZCUlR0WlFVTlNMRXRCUVVzc1JVRkJSU3hqUVVGak8xbEJRM0pDTEZkQlFWY3NSVUZCUlN3MFJrRkJORVk3V1VGRGVrY3NUMEZCVHl4RlFVRkZPMmRDUVVOUUxFbEJRVWtzUlVGQlJTeE5RVUZOTzJGQlEySTdVMEZEUmp0TFFVTkdMRU5CUVVNN1NVRkRSQ3hMUVVGTExFVkJRVVU3UjBGRFN5eGxRVUZsTEVOQlpUTkNPenRCUVVWRU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4RFFVRkRMRTFCUVUwc2JVSkJRVzFDTEVkQlFVYzdTVUZEYWtNc2FVSkJRV2xDTzBsQlEycENMR3RDUVVGclFqdEpRVU5zUWl4dFFrRkJiVUk3U1VGRGJrSXNaMEpCUVdkQ08wbEJRMmhDTEdWQlFXVTdTVUZEWml4bFFVRmxPME5CUTFBc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUUcxdlpIVnNaU0JwYm5SbFozSmhkR2x2Ym5NdlozSmhjR2d2Ym05a1pYTXZkSEpwWjJkbGNuTmNiaUFxSUVCemRXMXRZWEo1SUZCeWIyUjFZM1JwYjI0Z2RISnBaMmRsY2lCdWIyUmxJR3RwYm1RZ1pHVmpiR0Z5WVhScGIyNXpJQ2hFUlVOQlJpMHpNaURDcHpJeUxqSXVNU2t1WEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjRnUTJGdWIyNXBZMkZzSUdCQWJtOWtaV0F0WkdWamIzSmhkR1ZrSUdOc1lYTnpaWE1nWm05eUlIUm9aU0J6YVhnZ1FVeEdVa1ZFTFRVZ2RISnBaMmRsY2x4dUlDb2dhMmx1WkhNdUlGUnlhV2RuWlhKeklHRnlaU0J0WlhSaFpHRjBZUzF2Ym14NUlHVnVkSEo1Y0c5cGJuUnpPaUIwYUdWNUlHUmxabWx1WlNCb2IzY2dZU0IzYjNKclpteHZkMXh1SUNvZ2MzUmhjblJ6SUdGdVpDQndjbTlrZFdObElHRWdkSEpwWjJkbGNpQndZWGxzYjJGa0lHOXVJSFJvWldseUlHQkFiM1YwY0hWMFlDQndiM0owY3k0Z1ZHaGxlU0JvWVhabElHNXZYRzRnS2lCZ1FHbHVjSFYwWUNCd2IzSjBjeUFvYm05MGFHbHVaeUJtWldWa2N5QmhJSFJ5YVdkblpYSXBJR0Z1WkNCdWJ5QmlkV2xzZEMxcGJpQmxlR1ZqZFhSdmNuTWc0b0NVSUhSb1pWeHVJQ29nWlc1bmFXNWxKM01nWlhobFkzVjBhVzl1SUcxdlpHVnNJSE4wWVhKMGN5Qm1jbTl0SUhkdmNtdG1iRzkzSUdsdWNIVjBjeUFvd3FjMUxqZ3BJR0Z1WkNCMGNtVmhkSE5jYmlBcUlIUnlhV2RuWlhJZ2JtOWtaWE1nWVhNZ2JXVjBZV1JoZEdFdGIyNXNlU0JsYm5SeWVYQnZhVzUwY3k1Y2JpQXFMMXh1YVcxd2IzSjBJSHNnVFc5a1pXd3NJRzF2WkdWc0xDQnlaWEYxYVhKbFpDQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZaR1ZqYjNKaGRHOXlMWFpoYkdsa1lYUnBiMjVjSWp0Y2JtbHRjRzl5ZENCN0lIVnBaV3hsYldWdWRDQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZkV2t0WkdWamIzSmhkRzl5YzF3aU8xeHVhVzF3YjNKMElIc2dibTlrWlN3Z2IzVjBjSFYwSUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5MWFTMWtaV052Y21GMGIzSnpMMmR5WVhCb1hDSTdYRzVjYmk4cUtseHVJQ29nVFdGdWRXRnNJSFJ5YVdkblpYSWc0b0NVSUhWelpYSWdZMnhwWTJ0eklGSjFianNnYVc1d2RYUWdabTl5YlNCblpXNWxjbUYwWldRZ1puSnZiU0JnYVc1d2RYUlRZMmhsYldGZ0xseHVJQ292WEc1QWJtOWtaU2hjSW1OdmNtVXVkSEpwWjJkbGNpNXRZVzUxWVd4Y0lpd2dlMXh1SUNCcmFXNWtPaUJjSW1OdmNtVXVkSEpwWjJkbGNpNXRZVzUxWVd4Y0lpeGNiaUFnWTJGMFpXZHZjbms2SUZ3aVZISnBaMmRsY2x3aUxGeHVJQ0JqYjJ4dmNqb2dYQ0lqTTJJNE1tWTJYQ0lzWEc0Z0lHbGpiMjQ2SUZ3aWRHa3RhR0Z1WkMxamJHbGphMXdpTEZ4dUlDQjNhV1IwYURvZ09UWXNYRzRnSUdobGFXZG9kRG9nT1RZc1hHNGdJR3hoWW1Wc2N6b2dXMXdpZEhKcFoyZGxjbHdpTENCY0ltMWhiblZoYkZ3aUxDQmNJbVZ1ZEhKNWNHOXBiblJjSWwwc1hHNGdJRzFsZEdGa1lYUmhPaUI3WEc0Z0lDQWdkR2wwYkdVNklGd2lUV0Z1ZFdGc0lIUnlhV2RuWlhKY0lpeGNiaUFnSUNCa1pYTmpjbWx3ZEdsdmJqb2dYQ0pUZEdGeWRITWdkR2hsSUhkdmNtdG1iRzkzSUhkb1pXNGdkR2hsSUhWelpYSWdZMnhwWTJ0eklGSjFiaTRnVkdobElHbHVjSFYwSUdadmNtMGdhWE1nWjJWdVpYSmhkR1ZrSUdaeWIyMGdkR2hsSUhSeWFXZG5aWEluY3lCcGJuQjFkQ0J6WTJobGJXRXVYQ0lzWEc0Z0lDQWdkSEpwWjJkbGNqb2dlMXh1SUNBZ0lDQWdkSGx3WlRvZ1hDSnRZVzUxWVd4Y0lpeGNiaUFnSUNBZ0lHbHVjSFYwVTJOb1pXMWhPaUI3ZlN4Y2JpQWdJQ0I5TEZ4dUlDQjlMRnh1ZlNsY2JrQnRiMlJsYkNncFhHNWxlSEJ2Y25RZ1kyeGhjM01nVFdGdWRXRnNWSEpwWjJkbGNrNXZaR1VnWlhoMFpXNWtjeUJOYjJSbGJDQjdYRzRnSUVCeVpYRjFhWEpsWkNncFhHNGdJRUIxYVdWc1pXMWxiblFvWENKMFpYaDBZWEpsWVZ3aUxDQjdJR3hoWW1Wc09pQmNJbFJ5YVdkblpYSWdjR0Y1Ykc5aFpGd2lMQ0J3YkdGalpXaHZiR1JsY2pvZ1hDSk5ZVzUxWVd3Z2RISnBaMmRsY2lCd1lYbHNiMkZrWENJZ2ZTbGNiaUFnUUc5MWRIQjFkQ2g3SUdoaGJtUnNaVG9nWENKd1lYbHNiMkZrWENJZ2ZTbGNiaUFnY0dGNWJHOWhaQ0U2SUhWdWEyNXZkMjQ3WEc1OVhHNWNiaThxS2x4dUlDb2dWMlZpYUc5dmF5QjBjbWxuWjJWeUlPS0FsQ0JJVkZSUUlISmxjWFZsYzNRZ2NtVmpaV2wyWldRN0lIQmhkR2d2YldWMGFHOWtMMkYxZEdndmNtVnpjRzl1YzJWTmIyUmxJR052Ym1acFp5NWNiaUFxTDF4dVFHNXZaR1VvWENKamIzSmxMblJ5YVdkblpYSXVkMlZpYUc5dmExd2lMQ0I3WEc0Z0lHdHBibVE2SUZ3aVkyOXlaUzUwY21sbloyVnlMbmRsWW1odmIydGNJaXhjYmlBZ1kyRjBaV2R2Y25rNklGd2lWSEpwWjJkbGNsd2lMRnh1SUNCamIyeHZjam9nWENJak1HVmhOV1U1WENJc1hHNGdJR2xqYjI0NklGd2lkR2t0ZDJWaWFHOXZhMXdpTEZ4dUlDQjNhV1IwYURvZ09UWXNYRzRnSUdobGFXZG9kRG9nT1RZc1hHNGdJR3hoWW1Wc2N6b2dXMXdpZEhKcFoyZGxjbHdpTENCY0luZGxZbWh2YjJ0Y0lpd2dYQ0pvZEhSd1hDSmRMRnh1SUNCdFpYUmhaR0YwWVRvZ2UxeHVJQ0FnSUhScGRHeGxPaUJjSWxkbFltaHZiMnNnZEhKcFoyZGxjbHdpTEZ4dUlDQWdJR1JsYzJOeWFYQjBhVzl1T2lCY0lsTjBZWEowY3lCMGFHVWdkMjl5YTJac2IzY2dkMmhsYmlCaGJpQklWRlJRSUhKbGNYVmxjM1FnYVhNZ2NtVmpaV2wyWldRZ2IyNGdkR2hsSUdOdmJtWnBaM1Z5WldRZ2NHRjBhQ0JoYm1RZ2JXVjBhRzlrTGx3aUxGeHVJQ0FnSUhSeWFXZG5aWEk2SUh0Y2JpQWdJQ0FnSUhSNWNHVTZJRndpZDJWaWFHOXZhMXdpTEZ4dUlDQWdJQ0FnY0dGMGFEb2dYQ0l2ZDJWaWFHOXZhMXdpTEZ4dUlDQWdJQ0FnYldWMGFHOWtPaUJjSWxCUFUxUmNJaXhjYmlBZ0lDQWdJR0YxZEdnNklGd2libTl1WlZ3aUxGeHVJQ0FnSUNBZ2NtVnpjRzl1YzJWTmIyUmxPaUJjSW05dVVtVmpaV2wyWldSY0lpeGNiaUFnSUNCOUxGeHVJQ0I5TEZ4dWZTbGNia0J0YjJSbGJDZ3BYRzVsZUhCdmNuUWdZMnhoYzNNZ1YyVmlhRzl2YTFSeWFXZG5aWEpPYjJSbElHVjRkR1Z1WkhNZ1RXOWtaV3dnZTF4dUlDQkFjbVZ4ZFdseVpXUW9LVnh1SUNCQWRXbGxiR1Z0Wlc1MEtGd2lkR1Y0ZEdGeVpXRmNJaXdnZXlCc1lXSmxiRG9nWENKU1pYRjFaWE4wSUhCaGVXeHZZV1JjSWl3Z2NHeGhZMlZvYjJ4a1pYSTZJRndpVjJWaWFHOXZheUJ5WlhGMVpYTjBJR0p2WkhsY0lpQjlLVnh1SUNCQWIzVjBjSFYwS0hzZ2FHRnVaR3hsT2lCY0luQmhlV3h2WVdSY0lpQjlLVnh1SUNCd1lYbHNiMkZrSVRvZ2RXNXJibTkzYmp0Y2JuMWNibHh1THlvcVhHNGdLaUJUWTJobFpIVnNaU0IwY21sbloyVnlJT0tBbENCamNtOXVMV3hwYTJVZ2MyTm9aV1IxYkdVN0lIUnBiV1Y2YjI1bElDc2djR0Y1Ykc5aFpDQmpiMjVtYVdjdVhHNGdLaTljYmtCdWIyUmxLRndpWTI5eVpTNTBjbWxuWjJWeUxuTmphR1ZrZFd4bFhDSXNJSHRjYmlBZ2EybHVaRG9nWENKamIzSmxMblJ5YVdkblpYSXVjMk5vWldSMWJHVmNJaXhjYmlBZ1kyRjBaV2R2Y25rNklGd2lWSEpwWjJkbGNsd2lMRnh1SUNCamIyeHZjam9nWENJak5qTTJObVl4WENJc1hHNGdJR2xqYjI0NklGd2lkR2t0WTJGc1pXNWtZWEl0ZEdsdFpWd2lMRnh1SUNCM2FXUjBhRG9nT1RZc1hHNGdJR2hsYVdkb2REb2dPVFlzWEc0Z0lHeGhZbVZzY3pvZ1cxd2lkSEpwWjJkbGNsd2lMQ0JjSW5OamFHVmtkV3hsWENJc0lGd2lZM0p2Ymx3aVhTeGNiaUFnYldWMFlXUmhkR0U2SUh0Y2JpQWdJQ0IwYVhSc1pUb2dYQ0pUWTJobFpIVnNaU0IwY21sbloyVnlYQ0lzWEc0Z0lDQWdaR1Z6WTNKcGNIUnBiMjQ2SUZ3aVUzUmhjblJ6SUhSb1pTQjNiM0pyWm14dmR5QnZiaUJoSUdOeWIyNHRiR2xyWlNCelkyaGxaSFZzWlNCM2FYUm9JSFJwYldWNmIyNWxJSE4xY0hCdmNuUXVYQ0lzWEc0Z0lDQWdkSEpwWjJkbGNqb2dlMXh1SUNBZ0lDQWdkSGx3WlRvZ1hDSnpZMmhsWkhWc1pWd2lMRnh1SUNBZ0lDQWdjMk5vWldSMWJHVTZJRndpTUNBcUlDb2dLaUFxWENJc1hHNGdJQ0FnSUNCMGFXMWxlbTl1WlRvZ1hDSlZWRU5jSWl4Y2JpQWdJQ0I5TEZ4dUlDQjlMRnh1ZlNsY2JrQnRiMlJsYkNncFhHNWxlSEJ2Y25RZ1kyeGhjM01nVTJOb1pXUjFiR1ZVY21sbloyVnlUbTlrWlNCbGVIUmxibVJ6SUUxdlpHVnNJSHRjYmlBZ1FISmxjWFZwY21Wa0tDbGNiaUFnUUhWcFpXeGxiV1Z1ZENoY0luUmxlSFJoY21WaFhDSXNJSHNnYkdGaVpXdzZJRndpVTJOb1pXUjFiR1ZrSUhCaGVXeHZZV1JjSWl3Z2NHeGhZMlZvYjJ4a1pYSTZJRndpVUdGNWJHOWhaQ0JtYjNJZ2RHaGxJSE5qYUdWa2RXeGxaQ0J5ZFc1Y0lpQjlLVnh1SUNCQWIzVjBjSFYwS0hzZ2FHRnVaR3hsT2lCY0luQmhlV3h2WVdSY0lpQjlLVnh1SUNCd1lYbHNiMkZrSVRvZ2RXNXJibTkzYmp0Y2JuMWNibHh1THlvcVhHNGdLaUJGZG1WdWRDQjBjbWxuWjJWeUlPS0FsQ0JwYm5SbGNtNWhiQ0JsZG1WdWRDQmlkWE1nZEc5d2FXTWdjM1ZpYzJOeWFXSmxjaTVjYmlBcUwxeHVRRzV2WkdVb1hDSmpiM0psTG5SeWFXZG5aWEl1WlhabGJuUmNJaXdnZTF4dUlDQnJhVzVrT2lCY0ltTnZjbVV1ZEhKcFoyZGxjaTVsZG1WdWRGd2lMRnh1SUNCallYUmxaMjl5ZVRvZ1hDSlVjbWxuWjJWeVhDSXNYRzRnSUdOdmJHOXlPaUJjSWlNNFlqVmpaalpjSWl4Y2JpQWdhV052YmpvZ1hDSjBhUzFpY205aFpHTmhjM1JjSWl4Y2JpQWdkMmxrZEdnNklEazJMRnh1SUNCb1pXbG5hSFE2SURrMkxGeHVJQ0JzWVdKbGJITTZJRnRjSW5SeWFXZG5aWEpjSWl3Z1hDSmxkbVZ1ZEZ3aUxDQmNJbUoxYzF3aVhTeGNiaUFnYldWMFlXUmhkR0U2SUh0Y2JpQWdJQ0IwYVhSc1pUb2dYQ0pGZG1WdWRDQjBjbWxuWjJWeVhDSXNYRzRnSUNBZ1pHVnpZM0pwY0hScGIyNDZJRndpVTNSaGNuUnpJSFJvWlNCM2IzSnJabXh2ZHlCM2FHVnVJR0Z1SUdWMlpXNTBJR2x6SUhCMVlteHBjMmhsWkNCdmJpQjBhR1VnWTI5dVptbG5kWEpsWkNCcGJuUmxjbTVoYkNCbGRtVnVkQ0JpZFhNZ2RHOXdhV011WENJc1hHNGdJQ0FnZEhKcFoyZGxjam9nZTF4dUlDQWdJQ0FnZEhsd1pUb2dYQ0psZG1WdWRGd2lMRnh1SUNBZ0lDQWdkRzl3YVdNNklGd2laR1ZtWVhWc2RGd2lMRnh1SUNBZ0lIMHNYRzRnSUgwc1hHNTlLVnh1UUcxdlpHVnNLQ2xjYm1WNGNHOXlkQ0JqYkdGemN5QkZkbVZ1ZEZSeWFXZG5aWEpPYjJSbElHVjRkR1Z1WkhNZ1RXOWtaV3dnZTF4dUlDQkFjbVZ4ZFdseVpXUW9LVnh1SUNCQWRXbGxiR1Z0Wlc1MEtGd2lkR1Y0ZEdGeVpXRmNJaXdnZXlCc1lXSmxiRG9nWENKRmRtVnVkQ0J3WVhsc2IyRmtYQ0lzSUhCc1lXTmxhRzlzWkdWeU9pQmNJa1YyWlc1MElHSjFjeUJ3WVhsc2IyRmtYQ0lnZlNsY2JpQWdRRzkxZEhCMWRDaDdJR2hoYm1Sc1pUb2dYQ0p3WVhsc2IyRmtYQ0lnZlNsY2JpQWdjR0Y1Ykc5aFpDRTZJSFZ1YTI1dmQyNDdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1JtOXliU0IwY21sbloyVnlJT0tBbENCblpXNWxjbUYwWldRZ2NIVmliR2xqTDJsdWRHVnlibUZzSUdadmNtMDdJR1pwWld4a0lHUmxabWx1YVhScGIyNXpMbHh1SUNvdlhHNUFibTlrWlNoY0ltTnZjbVV1ZEhKcFoyZGxjaTVtYjNKdFhDSXNJSHRjYmlBZ2EybHVaRG9nWENKamIzSmxMblJ5YVdkblpYSXVabTl5YlZ3aUxGeHVJQ0JqWVhSbFoyOXllVG9nWENKVWNtbG5aMlZ5WENJc1hHNGdJR052Ykc5eU9pQmNJaU5sWXpRNE9UbGNJaXhjYmlBZ2FXTnZiam9nWENKMGFTMW1iM0p0YzF3aUxGeHVJQ0IzYVdSMGFEb2dPVFlzWEc0Z0lHaGxhV2RvZERvZ09UWXNYRzRnSUd4aFltVnNjem9nVzF3aWRISnBaMmRsY2x3aUxDQmNJbVp2Y20xY0lpd2dYQ0p3ZFdKc2FXTmNJbDBzWEc0Z0lHMWxkR0ZrWVhSaE9pQjdYRzRnSUNBZ2RHbDBiR1U2SUZ3aVJtOXliU0IwY21sbloyVnlYQ0lzWEc0Z0lDQWdaR1Z6WTNKcGNIUnBiMjQ2SUZ3aVUzUmhjblJ6SUhSb1pTQjNiM0pyWm14dmR5QjNhR1Z1SUdFZ1oyVnVaWEpoZEdWa0lHWnZjbTBnYVhNZ2MzVmliV2wwZEdWa0xpQkdhV1ZzWkNCa1pXWnBibWwwYVc5dWN5QmtjbWwyWlNCMGFHVWdabTl5YlNCelkyaGxiV0V1WENJc1hHNGdJQ0FnZEhKcFoyZGxjam9nZTF4dUlDQWdJQ0FnZEhsd1pUb2dYQ0ptYjNKdFhDSXNYRzRnSUNBZ0lDQm1hV1ZzWkhNNklGdGRMRnh1SUNBZ0lIMHNYRzRnSUgwc1hHNTlLVnh1UUcxdlpHVnNLQ2xjYm1WNGNHOXlkQ0JqYkdGemN5QkdiM0p0VkhKcFoyZGxjazV2WkdVZ1pYaDBaVzVrY3lCTmIyUmxiQ0I3WEc0Z0lFQnlaWEYxYVhKbFpDZ3BYRzRnSUVCMWFXVnNaVzFsYm5Rb1hDSjBaWGgwWVhKbFlWd2lMQ0I3SUd4aFltVnNPaUJjSWtadmNtMGdjM1ZpYldsemMybHZibHdpTENCd2JHRmpaV2h2YkdSbGNqb2dYQ0pHYjNKdElITjFZbTFwYzNOcGIyNGdjR0Y1Ykc5aFpGd2lJSDBwWEc0Z0lFQnZkWFJ3ZFhRb2V5Qm9ZVzVrYkdVNklGd2ljR0Y1Ykc5aFpGd2lJSDBwWEc0Z0lIQmhlV3h2WVdRaE9pQjFibXR1YjNkdU8xeHVmVnh1WEc0dktpcGNiaUFxSUVOb1lYUWdkSEpwWjJkbGNpRGlnSlFnWTJoaGRDQnRaWE56WVdkbElHVnVkSEo1Y0c5cGJuUTdJRzFsYzNOaFoyVXZjMlZ6YzJsdmJrbGtMM1Z6WlhKSlpDQnpZMmhsYldFdVhHNGdLaTljYmtCdWIyUmxLRndpWTI5eVpTNTBjbWxuWjJWeUxtTm9ZWFJjSWl3Z2UxeHVJQ0JyYVc1a09pQmNJbU52Y21VdWRISnBaMmRsY2k1amFHRjBYQ0lzWEc0Z0lHTmhkR1ZuYjNKNU9pQmNJbFJ5YVdkblpYSmNJaXhjYmlBZ1kyOXNiM0k2SUZ3aUl6RTBZamhoTmx3aUxGeHVJQ0JwWTI5dU9pQmNJblJwTFcxbGMzTmhaMlV0WTJseVkyeGxYQ0lzWEc0Z0lIZHBaSFJvT2lBNU5peGNiaUFnYUdWcFoyaDBPaUE1Tml4Y2JpQWdiR0ZpWld4ek9pQmJYQ0owY21sbloyVnlYQ0lzSUZ3aVkyaGhkRndpTENCY0ltVnVkSEo1Y0c5cGJuUmNJbDBzWEc0Z0lHMWxkR0ZrWVhSaE9pQjdYRzRnSUNBZ2RHbDBiR1U2SUZ3aVEyaGhkQ0IwY21sbloyVnlYQ0lzWEc0Z0lDQWdaR1Z6WTNKcGNIUnBiMjQ2SUZ3aVUzUmhjblJ6SUhSb1pTQjNiM0pyWm14dmR5QjNhR1Z1SUdFZ1kyaGhkQ0J0WlhOellXZGxJR2x6SUhKbFkyVnBkbVZrTGlCRmJXbDBjeUJ0WlhOellXZGxMQ0J6WlhOemFXOXVTV1FzSUdGdVpDQjFjMlZ5U1dRdVhDSXNYRzRnSUNBZ2RISnBaMmRsY2pvZ2UxeHVJQ0FnSUNBZ2RIbHdaVG9nWENKamFHRjBYQ0lzWEc0Z0lDQWdmU3hjYmlBZ2ZTeGNibjBwWEc1QWJXOWtaV3dvS1Z4dVpYaHdiM0owSUdOc1lYTnpJRU5vWVhSVWNtbG5aMlZ5VG05a1pTQmxlSFJsYm1SeklFMXZaR1ZzSUh0Y2JpQWdRSEpsY1hWcGNtVmtLQ2xjYmlBZ1FIVnBaV3hsYldWdWRDaGNJbWx1Y0hWMFhDSXNJSHNnYkdGaVpXdzZJRndpVFdWemMyRm5aVndpTENCd2JHRmpaV2h2YkdSbGNqb2dYQ0pKYm1OdmJXbHVaeUJqYUdGMElHMWxjM05oWjJWY0lpQjlLVnh1SUNCQWIzVjBjSFYwS0hzZ2FHRnVaR3hsT2lCY0ltMWxjM05oWjJWY0lpQjlLVnh1SUNCdFpYTnpZV2RsSVRvZ2MzUnlhVzVuTzF4dVhHNGdJRUJ5WlhGMWFYSmxaQ2dwWEc0Z0lFQjFhV1ZzWlcxbGJuUW9YQ0pwYm5CMWRGd2lMQ0I3SUd4aFltVnNPaUJjSWxObGMzTnBiMjRnU1VSY0lpd2djR3hoWTJWb2IyeGtaWEk2SUZ3aVEyaGhkQ0J6WlhOemFXOXVJR2xrWlc1MGFXWnBaWEpjSWlCOUtWeHVJQ0JBYjNWMGNIVjBLSHNnYUdGdVpHeGxPaUJjSW5ObGMzTnBiMjVKWkZ3aUlIMHBYRzRnSUhObGMzTnBiMjVKWkNFNklITjBjbWx1Wnp0Y2JseHVJQ0JBY21WeGRXbHlaV1FvS1Z4dUlDQkFkV2xsYkdWdFpXNTBLRndpYVc1d2RYUmNJaXdnZXlCc1lXSmxiRG9nWENKVmMyVnlJRWxFWENJc0lIQnNZV05sYUc5c1pHVnlPaUJjSWtOb1lYUWdkWE5sY2lCcFpHVnVkR2xtYVdWeVhDSWdmU2xjYmlBZ1FHOTFkSEIxZENoN0lHaGhibVJzWlRvZ1hDSjFjMlZ5U1dSY0lpQjlLVnh1SUNCMWMyVnlTV1FoT2lCemRISnBibWM3WEc1OVhHNWNiaThxS2x4dUlDb2dRV3hzSUdKMWFXeDBMV2x1SUhSeWFXZG5aWElnYm05a1pTQmpiMjV6ZEhKMVkzUnZjbk11WEc0Z0tpOWNibVY0Y0c5eWRDQmpiMjV6ZENCSFVrRlFTRjlVVWtsSFIwVlNYMDVQUkVWVElEMGdXMXh1SUNCTllXNTFZV3hVY21sbloyVnlUbTlrWlN4Y2JpQWdWMlZpYUc5dmExUnlhV2RuWlhKT2IyUmxMRnh1SUNCVFkyaGxaSFZzWlZSeWFXZG5aWEpPYjJSbExGeHVJQ0JGZG1WdWRGUnlhV2RuWlhKT2IyUmxMRnh1SUNCR2IzSnRWSEpwWjJkbGNrNXZaR1VzWEc0Z0lFTm9ZWFJVY21sbloyVnlUbTlrWlN4Y2JsMGdZWE1nWTI5dWMzUTdYRzRpWFgwPSJdfQ==
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GraphPinningDependencyResolver = void 0;
4
- const GraphTopology_js_1 = require("./../planning/GraphTopology.cjs");
5
- /**
6
- * Resolves the upstream dependency subtree of a node for pinning operations.
7
- */
8
- class GraphPinningDependencyResolver {
9
- /**
10
- * Returns the set of upstream node ids that the given node depends on,
11
- * excluding the workflow boundary.
12
- */
13
- getDependencies(plan, nodeId) {
14
- return GraphTopology_js_1.GraphTopology.upstreamNodes(nodeId, plan.incomingByNode, false);
15
- }
16
- /**
17
- * Returns the full set of node ids to pin: the node itself plus all its
18
- * upstream dependencies.
19
- */
20
- getPinSet(plan, nodeId) {
21
- const deps = this.getDependencies(plan, nodeId);
22
- deps.add(nodeId);
23
- return deps;
24
- }
25
- }
26
- exports.GraphPinningDependencyResolver = GraphPinningDependencyResolver;
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dyYXBoL3Bpbm5pbmcvR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxhQUFhLEVBQUUsdUNBQWtDO0FBRTFEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLDhCQUE4QjtJQUN6Qzs7O09BR0c7SUFDSCxlQUFlLENBQUMsSUFBd0IsRUFBRSxNQUFjO1FBQ3RELE9BQU8sYUFBYSxDQUFDLGFBQWEsQ0FDaEMsTUFBTSxFQUNOLElBQUksQ0FBQyxjQUFjLEVBQ25CLEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxJQUF3QixFQUFFLE1BQWM7UUFDaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvcGlubmluZy9HcmFwaFBpbm5pbmdEZXBlbmRlbmN5UmVzb2x2ZXJcbiAqIEBzdW1tYXJ5IFJlc29sdmVzIHVwc3RyZWFtIGRlcGVuZGVuY3kgc3VidHJlZXMgZm9yIHBpbm5pbmcuXG4gKiBAZGVzY3JpcHRpb24gV2hlbiBhIG5vZGUgaXMgcGlubmVkLCBhbGwgdXBzdHJlYW0gbm9kZXMgaXQgZGVwZW5kcyBvbiBtdXN0IGFsc28gYmUgcGlubmVkLiBUaGlzIHJlc29sdmVyIGNvbXB1dGVzIHRoZSBkZXBlbmRlbmN5IHNldC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblBsYW4gfSBmcm9tIFwiLi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuXCI7XG5pbXBvcnQgeyBHcmFwaFRvcG9sb2d5IH0gZnJvbSBcIi4uL3BsYW5uaW5nL0dyYXBoVG9wb2xvZ3lcIjtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jeSBzdWJ0cmVlIG9mIGEgbm9kZSBmb3IgcGlubmluZyBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyIHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNldCBvZiB1cHN0cmVhbSBub2RlIGlkcyB0aGF0IHRoZSBnaXZlbiBub2RlIGRlcGVuZHMgb24sXG4gICAqIGV4Y2x1ZGluZyB0aGUgd29ya2Zsb3cgYm91bmRhcnkuXG4gICAqL1xuICBnZXREZXBlbmRlbmNpZXMocGxhbjogR3JhcGhFeGVjdXRpb25QbGFuLCBub2RlSWQ6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgICByZXR1cm4gR3JhcGhUb3BvbG9neS51cHN0cmVhbU5vZGVzKFxuICAgICAgbm9kZUlkLFxuICAgICAgcGxhbi5pbmNvbWluZ0J5Tm9kZSxcbiAgICAgIGZhbHNlXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmdWxsIHNldCBvZiBub2RlIGlkcyB0byBwaW46IHRoZSBub2RlIGl0c2VsZiBwbHVzIGFsbCBpdHNcbiAgICogdXBzdHJlYW0gZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgZ2V0UGluU2V0KHBsYW46IEdyYXBoRXhlY3V0aW9uUGxhbiwgbm9kZUlkOiBzdHJpbmcpOiBTZXQ8c3RyaW5nPiB7XG4gICAgY29uc3QgZGVwcyA9IHRoaXMuZ2V0RGVwZW5kZW5jaWVzKHBsYW4sIG5vZGVJZCk7XG4gICAgZGVwcy5hZGQobm9kZUlkKTtcbiAgICByZXR1cm4gZGVwcztcbiAgfVxufVxuIl19
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUErRDtBQUMvRDs7R0FFRztBQUNILE1BQWEsOEJBQThCO0lBQ3ZDOzs7T0FHRztJQUNILGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTTtRQUN4QixPQUFPLGdDQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU07UUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUFqQkQsd0VBaUJDO0FBQ0QsMDBFQUEwMEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFRvcG9sb2d5IH0gZnJvbSBcIi4vLi4vcGxhbm5pbmcvR3JhcGhUb3BvbG9neS5qc1wiO1xuLyoqXG4gKiBSZXNvbHZlcyB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jeSBzdWJ0cmVlIG9mIGEgbm9kZSBmb3IgcGlubmluZyBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyIHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgdXBzdHJlYW0gbm9kZSBpZHMgdGhhdCB0aGUgZ2l2ZW4gbm9kZSBkZXBlbmRzIG9uLFxuICAgICAqIGV4Y2x1ZGluZyB0aGUgd29ya2Zsb3cgYm91bmRhcnkuXG4gICAgICovXG4gICAgZ2V0RGVwZW5kZW5jaWVzKHBsYW4sIG5vZGVJZCkge1xuICAgICAgICByZXR1cm4gR3JhcGhUb3BvbG9neS51cHN0cmVhbU5vZGVzKG5vZGVJZCwgcGxhbi5pbmNvbWluZ0J5Tm9kZSwgZmFsc2UpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBmdWxsIHNldCBvZiBub2RlIGlkcyB0byBwaW46IHRoZSBub2RlIGl0c2VsZiBwbHVzIGFsbCBpdHNcbiAgICAgKiB1cHN0cmVhbSBkZXBlbmRlbmNpZXMuXG4gICAgICovXG4gICAgZ2V0UGluU2V0KHBsYW4sIG5vZGVJZCkge1xuICAgICAgICBjb25zdCBkZXBzID0gdGhpcy5nZXREZXBlbmRlbmNpZXMocGxhbiwgbm9kZUlkKTtcbiAgICAgICAgZGVwcy5hZGQobm9kZUlkKTtcbiAgICAgICAgcmV0dXJuIGRlcHM7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUjNKaGNHaFFhVzV1YVc1blJHVndaVzVrWlc1amVWSmxjMjlzZG1WeUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2TGk0dmMzSmpMMmR5WVhCb0wzQnBibTVwYm1jdlIzSmhjR2hRYVc1dWFXNW5SR1Z3Wlc1a1pXNWplVkpsYzI5c2RtVnlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVUxQkxFOUJRVThzUlVGQlJTeGhRVUZoTEVWQlFVVXNkVU5CUVd0RE8wRkJSVEZFT3p0SFFVVkhPMEZCUTBnc1RVRkJUU3hQUVVGUExEaENRVUU0UWp0SlFVTjZRenM3TzA5QlIwYzdTVUZEU0N4bFFVRmxMRU5CUVVNc1NVRkJkMElzUlVGQlJTeE5RVUZqTzFGQlEzUkVMRTlCUVU4c1lVRkJZU3hEUVVGRExHRkJRV0VzUTBGRGFFTXNUVUZCVFN4RlFVTk9MRWxCUVVrc1EwRkJReXhqUVVGakxFVkJRMjVDTEV0QlFVc3NRMEZEVGl4RFFVRkRPMGxCUTBvc1EwRkJRenRKUVVWRU96czdUMEZIUnp0SlFVTklMRk5CUVZNc1EwRkJReXhKUVVGM1FpeEZRVUZGTEUxQlFXTTdVVUZEYUVRc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRGFFUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU5xUWl4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRRzF2WkhWc1pTQnBiblJsWjNKaGRHbHZibk12WjNKaGNHZ3ZjR2x1Ym1sdVp5OUhjbUZ3YUZCcGJtNXBibWRFWlhCbGJtUmxibU41VW1WemIyeDJaWEpjYmlBcUlFQnpkVzF0WVhKNUlGSmxjMjlzZG1WeklIVndjM1J5WldGdElHUmxjR1Z1WkdWdVkza2djM1ZpZEhKbFpYTWdabTl5SUhCcGJtNXBibWN1WEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjRnVjJobGJpQmhJRzV2WkdVZ2FYTWdjR2x1Ym1Wa0xDQmhiR3dnZFhCemRISmxZVzBnYm05a1pYTWdhWFFnWkdWd1pXNWtjeUJ2YmlCdGRYTjBJR0ZzYzI4Z1ltVWdjR2x1Ym1Wa0xpQlVhR2x6SUhKbGMyOXNkbVZ5SUdOdmJYQjFkR1Z6SUhSb1pTQmtaWEJsYm1SbGJtTjVJSE5sZEM1Y2JpQXFMMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QkhjbUZ3YUVWNFpXTjFkR2x2YmxCc1lXNGdmU0JtY205dElGd2lMaTR2Y0d4aGJtNXBibWN2UjNKaGNHaEZlR1ZqZFhScGIyNVFiR0Z1WENJN1hHNXBiWEJ2Y25RZ2V5QkhjbUZ3YUZSdmNHOXNiMmQ1SUgwZ1puSnZiU0JjSWk0dUwzQnNZVzV1YVc1bkwwZHlZWEJvVkc5d2IyeHZaM2xjSWp0Y2JseHVMeW9xWEc0Z0tpQlNaWE52YkhabGN5QjBhR1VnZFhCemRISmxZVzBnWkdWd1pXNWtaVzVqZVNCemRXSjBjbVZsSUc5bUlHRWdibTlrWlNCbWIzSWdjR2x1Ym1sdVp5QnZjR1Z5WVhScGIyNXpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nUjNKaGNHaFFhVzV1YVc1blJHVndaVzVrWlc1amVWSmxjMjlzZG1WeUlIdGNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nZEdobElITmxkQ0J2WmlCMWNITjBjbVZoYlNCdWIyUmxJR2xrY3lCMGFHRjBJSFJvWlNCbmFYWmxiaUJ1YjJSbElHUmxjR1Z1WkhNZ2IyNHNYRzRnSUNBcUlHVjRZMngxWkdsdVp5QjBhR1VnZDI5eWEyWnNiM2NnWW05MWJtUmhjbmt1WEc0Z0lDQXFMMXh1SUNCblpYUkVaWEJsYm1SbGJtTnBaWE1vY0d4aGJqb2dSM0poY0doRmVHVmpkWFJwYjI1UWJHRnVMQ0J1YjJSbFNXUTZJSE4wY21sdVp5azZJRk5sZER4emRISnBibWMrSUh0Y2JpQWdJQ0J5WlhSMWNtNGdSM0poY0doVWIzQnZiRzluZVM1MWNITjBjbVZoYlU1dlpHVnpLRnh1SUNBZ0lDQWdibTlrWlVsa0xGeHVJQ0FnSUNBZ2NHeGhiaTVwYm1OdmJXbHVaMEo1VG05a1pTeGNiaUFnSUNBZ0lHWmhiSE5sWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUhSb1pTQm1kV3hzSUhObGRDQnZaaUJ1YjJSbElHbGtjeUIwYnlCd2FXNDZJSFJvWlNCdWIyUmxJR2wwYzJWc1ppQndiSFZ6SUdGc2JDQnBkSE5jYmlBZ0lDb2dkWEJ6ZEhKbFlXMGdaR1Z3Wlc1a1pXNWphV1Z6TGx4dUlDQWdLaTljYmlBZ1oyVjBVR2x1VTJWMEtIQnNZVzQ2SUVkeVlYQm9SWGhsWTNWMGFXOXVVR3hoYml3Z2JtOWtaVWxrT2lCemRISnBibWNwT2lCVFpYUThjM1J5YVc1blBpQjdYRzRnSUNBZ1kyOXVjM1FnWkdWd2N5QTlJSFJvYVhNdVoyVjBSR1Z3Wlc1a1pXNWphV1Z6S0hCc1lXNHNJRzV2WkdWSlpDazdYRzRnSUNBZ1pHVndjeTVoWkdRb2JtOWtaVWxrS1R0Y2JpQWdJQ0J5WlhSMWNtNGdaR1Z3Y3p0Y2JpQWdmVnh1ZlZ4dUlsMTkiXX0=
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_PINNING_METADATA = void 0;
4
- exports.isPinnable = isPinnable;
5
- /**
6
- * Default pinning metadata applied when `@pinnable()` is used without options.
7
- */
8
- exports.DEFAULT_PINNING_METADATA = {
9
- enabled: true,
10
- strategy: "manual",
11
- includeDependencies: true,
12
- };
13
- /**
14
- * Returns `true` when the given metadata allows pinning.
15
- */
16
- function isPinnable(metadata) {
17
- return metadata?.enabled === true && metadata.strategy !== "disabled";
18
- }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nTWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvcGlubmluZy9HcmFwaFBpbm5pbmdNZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUF5QjtJQUM1RCxPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLG1CQUFtQixFQUFFLElBQUk7Q0FDMUIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxRQUEwQztJQUNuRSxPQUFPLFFBQVEsRUFBRSxPQUFPLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3Bpbm5pbmcvR3JhcGhQaW5uaW5nTWV0YWRhdGFcbiAqIEBzdW1tYXJ5IFBpbm5pbmcgbWV0YWRhdGEgZGVmYXVsdHMgYW5kIGhlbHBlcnMuXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgZGVmYXVsdCBwaW5uaW5nIG1ldGFkYXRhIHZhbHVlcyBhbmQgYSBoZWxwZXIgdG8gY2hlY2sgcGlubmFiaWxpdHkuIFRoZSBgR3JhcGhQaW5uaW5nTWV0YWRhdGFgIHR5cGUgaXRzZWxmIGlzIGRlZmluZWQgaW4gYC4uL3R5cGVzYCBhbmQgcmUtZXhwb3J0ZWQgZnJvbSB0aGUgcGFja2FnZSByb290LlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoUGlubmluZ01ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbi8qKlxuICogRGVmYXVsdCBwaW5uaW5nIG1ldGFkYXRhIGFwcGxpZWQgd2hlbiBgQHBpbm5hYmxlKClgIGlzIHVzZWQgd2l0aG91dCBvcHRpb25zLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9QSU5OSU5HX01FVEFEQVRBOiBHcmFwaFBpbm5pbmdNZXRhZGF0YSA9IHtcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgc3RyYXRlZ3k6IFwibWFudWFsXCIsXG4gIGluY2x1ZGVEZXBlbmRlbmNpZXM6IHRydWUsXG59O1xuXG4vKipcbiAqIFJldHVybnMgYHRydWVgIHdoZW4gdGhlIGdpdmVuIG1ldGFkYXRhIGFsbG93cyBwaW5uaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQaW5uYWJsZShtZXRhZGF0YTogR3JhcGhQaW5uaW5nTWV0YWRhdGEgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgcmV0dXJuIG1ldGFkYXRhPy5lbmFibGVkID09PSB0cnVlICYmIG1ldGFkYXRhLnN0cmF0ZWd5ICE9PSBcImRpc2FibGVkXCI7XG59XG4iXX0=
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nTWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJHcmFwaFBpbm5pbmdNZXRhZGF0YS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXQSxnQ0FFQztBQWJEOztHQUVHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRztJQUNwQyxPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLG1CQUFtQixFQUFFLElBQUk7Q0FDNUIsQ0FBQztBQUNGOztHQUVHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLFFBQVE7SUFDL0IsT0FBTyxRQUFRLEVBQUUsT0FBTyxLQUFLLElBQUksSUFBSSxRQUFRLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQztBQUMxRSxDQUFDO0FBQ0Qsc3NEQUFzc0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlZmF1bHQgcGlubmluZyBtZXRhZGF0YSBhcHBsaWVkIHdoZW4gYEBwaW5uYWJsZSgpYCBpcyB1c2VkIHdpdGhvdXQgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUElOTklOR19NRVRBREFUQSA9IHtcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIHN0cmF0ZWd5OiBcIm1hbnVhbFwiLFxuICAgIGluY2x1ZGVEZXBlbmRlbmNpZXM6IHRydWUsXG59O1xuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBnaXZlbiBtZXRhZGF0YSBhbGxvd3MgcGlubmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGlubmFibGUobWV0YWRhdGEpIHtcbiAgICByZXR1cm4gbWV0YWRhdGE/LmVuYWJsZWQgPT09IHRydWUgJiYgbWV0YWRhdGEuc3RyYXRlZ3kgIT09IFwiZGlzYWJsZWRcIjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVIzSmhjR2hRYVc1dWFXNW5UV1YwWVdSaGRHRXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk4dUxpOXpjbU12WjNKaGNHZ3ZjR2x1Ym1sdVp5OUhjbUZ3YUZCcGJtNXBibWROWlhSaFpHRjBZUzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGUFFUczdSMEZGUnp0QlFVTklMRTFCUVUwc1EwRkJReXhOUVVGTkxIZENRVUYzUWl4SFFVRjVRanRKUVVNMVJDeFBRVUZQTEVWQlFVVXNTVUZCU1R0SlFVTmlMRkZCUVZFc1JVRkJSU3hSUVVGUk8wbEJRMnhDTEcxQ1FVRnRRaXhGUVVGRkxFbEJRVWs3UTBGRE1VSXNRMEZCUXp0QlFVVkdPenRIUVVWSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEZWQlFWVXNRMEZCUXl4UlFVRXdRenRKUVVOdVJTeFBRVUZQTEZGQlFWRXNSVUZCUlN4UFFVRlBMRXRCUVVzc1NVRkJTU3hKUVVGSkxGRkJRVkVzUTBGQlF5eFJRVUZSTEV0QlFVc3NWVUZCVlN4RFFVRkRPMEZCUTNoRkxFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVCdGIyUjFiR1VnYVc1MFpXZHlZWFJwYjI1ekwyZHlZWEJvTDNCcGJtNXBibWN2UjNKaGNHaFFhVzV1YVc1blRXVjBZV1JoZEdGY2JpQXFJRUJ6ZFcxdFlYSjVJRkJwYm01cGJtY2diV1YwWVdSaGRHRWdaR1ZtWVhWc2RITWdZVzVrSUdobGJIQmxjbk11WEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjRnVUhKdmRtbGtaWE1nWkdWbVlYVnNkQ0J3YVc1dWFXNW5JRzFsZEdGa1lYUmhJSFpoYkhWbGN5QmhibVFnWVNCb1pXeHdaWElnZEc4Z1kyaGxZMnNnY0dsdWJtRmlhV3hwZEhrdUlGUm9aU0JnUjNKaGNHaFFhVzV1YVc1blRXVjBZV1JoZEdGZ0lIUjVjR1VnYVhSelpXeG1JR2x6SUdSbFptbHVaV1FnYVc0Z1lDNHVMM1I1Y0dWellDQmhibVFnY21VdFpYaHdiM0owWldRZ1puSnZiU0IwYUdVZ2NHRmphMkZuWlNCeWIyOTBMbHh1SUNvdlhHNXBiWEJ2Y25RZ2RIbHdaU0I3SUVkeVlYQm9VR2x1Ym1sdVowMWxkR0ZrWVhSaElIMGdabkp2YlNCY0lpNHVMM1I1Y0dWelhDSTdYRzVjYmk4cUtseHVJQ29nUkdWbVlYVnNkQ0J3YVc1dWFXNW5JRzFsZEdGa1lYUmhJR0Z3Y0d4cFpXUWdkMmhsYmlCZ1FIQnBibTVoWW14bEtDbGdJR2x6SUhWelpXUWdkMmwwYUc5MWRDQnZjSFJwYjI1ekxseHVJQ292WEc1bGVIQnZjblFnWTI5dWMzUWdSRVZHUVZWTVZGOVFTVTVPU1U1SFgwMUZWRUZFUVZSQk9pQkhjbUZ3YUZCcGJtNXBibWROWlhSaFpHRjBZU0E5SUh0Y2JpQWdaVzVoWW14bFpEb2dkSEoxWlN4Y2JpQWdjM1J5WVhSbFozazZJRndpYldGdWRXRnNYQ0lzWEc0Z0lHbHVZMngxWkdWRVpYQmxibVJsYm1OcFpYTTZJSFJ5ZFdVc1hHNTlPMXh1WEc0dktpcGNiaUFxSUZKbGRIVnlibk1nWUhSeWRXVmdJSGRvWlc0Z2RHaGxJR2RwZG1WdUlHMWxkR0ZrWVhSaElHRnNiRzkzY3lCd2FXNXVhVzVuTGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5RYVc1dVlXSnNaU2h0WlhSaFpHRjBZVG9nUjNKaGNHaFFhVzV1YVc1blRXVjBZV1JoZEdFZ2ZDQjFibVJsWm1sdVpXUXBPaUJpYjI5c1pXRnVJSHRjYmlBZ2NtVjBkWEp1SUcxbGRHRmtZWFJoUHk1bGJtRmliR1ZrSUQwOVBTQjBjblZsSUNZbUlHMWxkR0ZrWVhSaExuTjBjbUYwWldkNUlDRTlQU0JjSW1ScGMyRmliR1ZrWENJN1hHNTlYRzRpWFgwPSJdfQ==
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GraphPinningPolicy = void 0;
4
- const GraphPinningMetadata_js_1 = require("./GraphPinningMetadata.cjs");
5
- /**
6
- * Policy that decides pinning behaviour for a plan node.
7
- */
8
- class GraphPinningPolicy {
9
- /** Returns whether the node is allowed to be pinned. */
10
- canPin(node) {
11
- return (0, GraphPinningMetadata_js_1.isPinnable)(this.getPinningMetadata(node));
12
- }
13
- /** Returns whether the engine should attempt to use a pinned value for the node. */
14
- shouldUsePinnedValue(node) {
15
- const metadata = this.getPinningMetadata(node);
16
- return metadata.enabled === true && metadata.strategy !== "disabled";
17
- }
18
- /** Returns whether automatic pinning should occur after execution. */
19
- shouldAutoPin(node) {
20
- const metadata = this.getPinningMetadata(node);
21
- return metadata.enabled === true && metadata.strategy === "automatic";
22
- }
23
- /** Extracts pinning metadata from a plan node. */
24
- getPinningMetadata(node) {
25
- const raw = node.definition?.graph?.metadata?.pinnable ??
26
- node.metadata?.pinnable;
27
- return raw
28
- ? { ...GraphPinningMetadata_js_1.DEFAULT_PINNING_METADATA, ...raw }
29
- : { ...GraphPinningMetadata_js_1.DEFAULT_PINNING_METADATA, enabled: false };
30
- }
31
- }
32
- exports.GraphPinningPolicy = GraphPinningPolicy;
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nUG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dyYXBoL3Bpbm5pbmcvR3JhcGhQaW5uaW5nUG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsa0NBQStCO0FBRTlFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qix3REFBd0Q7SUFDeEQsTUFBTSxDQUFDLElBQTRCO1FBQ2pDLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxvRkFBb0Y7SUFDcEYsb0JBQW9CLENBQUMsSUFBNEI7UUFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE9BQU8sUUFBUSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksUUFBUSxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUM7SUFDdkUsQ0FBQztJQUVELHNFQUFzRTtJQUN0RSxhQUFhLENBQUMsSUFBNEI7UUFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE9BQU8sUUFBUSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksUUFBUSxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUM7SUFDeEUsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxrQkFBa0IsQ0FBQyxJQUE0QjtRQUM3QyxNQUFNLEdBQUcsR0FDTixJQUFJLENBQUMsVUFBa0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVE7WUFDbEQsSUFBSSxDQUFDLFFBQWdCLEVBQUUsUUFBUSxDQUFDO1FBQ25DLE9BQU8sR0FBRztZQUNSLENBQUMsQ0FBQyxFQUFFLEdBQUcsd0JBQXdCLEVBQUUsR0FBRyxHQUFHLEVBQUU7WUFDekMsQ0FBQyxDQUFDLEVBQUUsR0FBRyx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDdEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9waW5uaW5nL0dyYXBoUGlubmluZ1BvbGljeVxuICogQHN1bW1hcnkgRGVjaWRlcyB3aGV0aGVyIGEgbm9kZSBjYW4gYmUgcGlubmVkIGFuZCB3aGV0aGVyIHBpbm5lZCB2YWx1ZXMgc2hvdWxkIGJlIHVzZWQuXG4gKiBAZGVzY3JpcHRpb24gUmVhZHMgcGlubmluZyBtZXRhZGF0YSBmcm9tIHBsYW4gbm9kZXMgYW5kIGVuZm9yY2VzIHRoZSBwaW5uaW5nIHN0cmF0ZWd5LlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUgfSBmcm9tIFwiLi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuTm9kZVwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaFBpbm5pbmdNZXRhZGF0YSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgREVGQVVMVF9QSU5OSU5HX01FVEFEQVRBLCBpc1Bpbm5hYmxlIH0gZnJvbSBcIi4vR3JhcGhQaW5uaW5nTWV0YWRhdGFcIjtcblxuLyoqXG4gKiBQb2xpY3kgdGhhdCBkZWNpZGVzIHBpbm5pbmcgYmVoYXZpb3VyIGZvciBhIHBsYW4gbm9kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoUGlubmluZ1BvbGljeSB7XG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG5vZGUgaXMgYWxsb3dlZCB0byBiZSBwaW5uZWQuICovXG4gIGNhblBpbihub2RlOiBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUGlubmFibGUodGhpcy5nZXRQaW5uaW5nTWV0YWRhdGEobm9kZSkpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgd2hldGhlciB0aGUgZW5naW5lIHNob3VsZCBhdHRlbXB0IHRvIHVzZSBhIHBpbm5lZCB2YWx1ZSBmb3IgdGhlIG5vZGUuICovXG4gIHNob3VsZFVzZVBpbm5lZFZhbHVlKG5vZGU6IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZ2V0UGlubmluZ01ldGFkYXRhKG5vZGUpO1xuICAgIHJldHVybiBtZXRhZGF0YS5lbmFibGVkID09PSB0cnVlICYmIG1ldGFkYXRhLnN0cmF0ZWd5ICE9PSBcImRpc2FibGVkXCI7XG4gIH1cblxuICAvKiogUmV0dXJucyB3aGV0aGVyIGF1dG9tYXRpYyBwaW5uaW5nIHNob3VsZCBvY2N1ciBhZnRlciBleGVjdXRpb24uICovXG4gIHNob3VsZEF1dG9QaW4obm9kZTogR3JhcGhFeGVjdXRpb25QbGFuTm9kZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5nZXRQaW5uaW5nTWV0YWRhdGEobm9kZSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhLmVuYWJsZWQgPT09IHRydWUgJiYgbWV0YWRhdGEuc3RyYXRlZ3kgPT09IFwiYXV0b21hdGljXCI7XG4gIH1cblxuICAvKiogRXh0cmFjdHMgcGlubmluZyBtZXRhZGF0YSBmcm9tIGEgcGxhbiBub2RlLiAqL1xuICBnZXRQaW5uaW5nTWV0YWRhdGEobm9kZTogR3JhcGhFeGVjdXRpb25QbGFuTm9kZSk6IEdyYXBoUGlubmluZ01ldGFkYXRhIHtcbiAgICBjb25zdCByYXcgPVxuICAgICAgKG5vZGUuZGVmaW5pdGlvbiBhcyBhbnkpPy5ncmFwaD8ubWV0YWRhdGE/LnBpbm5hYmxlID8/XG4gICAgICAobm9kZS5tZXRhZGF0YSBhcyBhbnkpPy5waW5uYWJsZTtcbiAgICByZXR1cm4gcmF3XG4gICAgICA/IHsgLi4uREVGQVVMVF9QSU5OSU5HX01FVEFEQVRBLCAuLi5yYXcgfVxuICAgICAgOiB7IC4uLkRFRkFVTFRfUElOTklOR19NRVRBREFUQSwgZW5hYmxlZDogZmFsc2UgfTtcbiAgfVxufVxuIl19
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nUG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiR3JhcGhQaW5uaW5nUG9saWN5LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVFQUFpRjtBQUNqRjs7R0FFRztBQUNILE1BQWEsa0JBQWtCO0lBQzNCLHdEQUF3RDtJQUN4RCxNQUFNLENBQUMsSUFBSTtRQUNQLE9BQU8sSUFBQSxvQ0FBVSxFQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxvRkFBb0Y7SUFDcEYsb0JBQW9CLENBQUMsSUFBSTtRQUNyQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsT0FBTyxRQUFRLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxRQUFRLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQztJQUN6RSxDQUFDO0lBQ0Qsc0VBQXNFO0lBQ3RFLGFBQWEsQ0FBQyxJQUFJO1FBQ2QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE9BQU8sUUFBUSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksUUFBUSxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUM7SUFDMUUsQ0FBQztJQUNELGtEQUFrRDtJQUNsRCxrQkFBa0IsQ0FBQyxJQUFJO1FBQ25CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRO1lBQ2xELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO1FBQzVCLE9BQU8sR0FBRztZQUNOLENBQUMsQ0FBQyxFQUFFLEdBQUcsa0RBQXdCLEVBQUUsR0FBRyxHQUFHLEVBQUU7WUFDekMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxrREFBd0IsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDMUQsQ0FBQztDQUNKO0FBdkJELGdEQXVCQztBQUNELHNqSEFBc2pIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVGQVVMVF9QSU5OSU5HX01FVEFEQVRBLCBpc1Bpbm5hYmxlIH0gZnJvbSBcIi4vR3JhcGhQaW5uaW5nTWV0YWRhdGEuanNcIjtcbi8qKlxuICogUG9saWN5IHRoYXQgZGVjaWRlcyBwaW5uaW5nIGJlaGF2aW91ciBmb3IgYSBwbGFuIG5vZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaFBpbm5pbmdQb2xpY3kge1xuICAgIC8qKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG5vZGUgaXMgYWxsb3dlZCB0byBiZSBwaW5uZWQuICovXG4gICAgY2FuUGluKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGlzUGlubmFibGUodGhpcy5nZXRQaW5uaW5nTWV0YWRhdGEobm9kZSkpO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyB3aGV0aGVyIHRoZSBlbmdpbmUgc2hvdWxkIGF0dGVtcHQgdG8gdXNlIGEgcGlubmVkIHZhbHVlIGZvciB0aGUgbm9kZS4gKi9cbiAgICBzaG91bGRVc2VQaW5uZWRWYWx1ZShub2RlKSB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5nZXRQaW5uaW5nTWV0YWRhdGEobm9kZSk7XG4gICAgICAgIHJldHVybiBtZXRhZGF0YS5lbmFibGVkID09PSB0cnVlICYmIG1ldGFkYXRhLnN0cmF0ZWd5ICE9PSBcImRpc2FibGVkXCI7XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIHdoZXRoZXIgYXV0b21hdGljIHBpbm5pbmcgc2hvdWxkIG9jY3VyIGFmdGVyIGV4ZWN1dGlvbi4gKi9cbiAgICBzaG91bGRBdXRvUGluKG5vZGUpIHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmdldFBpbm5pbmdNZXRhZGF0YShub2RlKTtcbiAgICAgICAgcmV0dXJuIG1ldGFkYXRhLmVuYWJsZWQgPT09IHRydWUgJiYgbWV0YWRhdGEuc3RyYXRlZ3kgPT09IFwiYXV0b21hdGljXCI7XG4gICAgfVxuICAgIC8qKiBFeHRyYWN0cyBwaW5uaW5nIG1ldGFkYXRhIGZyb20gYSBwbGFuIG5vZGUuICovXG4gICAgZ2V0UGlubmluZ01ldGFkYXRhKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcmF3ID0gbm9kZS5kZWZpbml0aW9uPy5ncmFwaD8ubWV0YWRhdGE/LnBpbm5hYmxlID8/XG4gICAgICAgICAgICBub2RlLm1ldGFkYXRhPy5waW5uYWJsZTtcbiAgICAgICAgcmV0dXJuIHJhd1xuICAgICAgICAgICAgPyB7IC4uLkRFRkFVTFRfUElOTklOR19NRVRBREFUQSwgLi4ucmF3IH1cbiAgICAgICAgICAgIDogeyAuLi5ERUZBVUxUX1BJTk5JTkdfTUVUQURBVEEsIGVuYWJsZWQ6IGZhbHNlIH07XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUjNKaGNHaFFhVzV1YVc1blVHOXNhV041TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZMaTR2YzNKakwyZHlZWEJvTDNCcGJtNXBibWN2UjNKaGNHaFFhVzV1YVc1blVHOXNhV041TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVOUJMRTlCUVU4c1JVRkJSU3gzUWtGQmQwSXNSVUZCUlN4VlFVRlZMRVZCUVVVc2EwTkJRU3RDTzBGQlJUbEZPenRIUVVWSE8wRkJRMGdzVFVGQlRTeFBRVUZQTEd0Q1FVRnJRanRKUVVNM1FpeDNSRUZCZDBRN1NVRkRlRVFzVFVGQlRTeERRVUZETEVsQlFUUkNPMUZCUTJwRExFOUJRVThzVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTI1RUxFTkJRVU03U1VGRlJDeHZSa0ZCYjBZN1NVRkRjRVlzYjBKQlFXOUNMRU5CUVVNc1NVRkJORUk3VVVGREwwTXNUVUZCVFN4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJReTlETEU5QlFVOHNVVUZCVVN4RFFVRkRMRTlCUVU4c1MwRkJTeXhKUVVGSkxFbEJRVWtzVVVGQlVTeERRVUZETEZGQlFWRXNTMEZCU3l4VlFVRlZMRU5CUVVNN1NVRkRka1VzUTBGQlF6dEpRVVZFTEhORlFVRnpSVHRKUVVOMFJTeGhRVUZoTEVOQlFVTXNTVUZCTkVJN1VVRkRlRU1zVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUXk5RExFOUJRVThzVVVGQlVTeERRVUZETEU5QlFVOHNTMEZCU3l4SlFVRkpMRWxCUVVrc1VVRkJVU3hEUVVGRExGRkJRVkVzUzBGQlN5eFhRVUZYTEVOQlFVTTdTVUZEZUVVc1EwRkJRenRKUVVWRUxHdEVRVUZyUkR0SlFVTnNSQ3hyUWtGQmEwSXNRMEZCUXl4SlFVRTBRanRSUVVNM1F5eE5RVUZOTEVkQlFVY3NSMEZEVGl4SlFVRkpMRU5CUVVNc1ZVRkJhMElzUlVGQlJTeExRVUZMTEVWQlFVVXNVVUZCVVN4RlFVRkZMRkZCUVZFN1dVRkRiRVFzU1VGQlNTeERRVUZETEZGQlFXZENMRVZCUVVVc1VVRkJVU3hEUVVGRE8xRkJRMjVETEU5QlFVOHNSMEZCUnp0WlFVTlNMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzZDBKQlFYZENMRVZCUVVVc1IwRkJSeXhIUVVGSExFVkJRVVU3V1VGRGVrTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXgzUWtGQmQwSXNSVUZCUlN4UFFVRlBMRVZCUVVVc1MwRkJTeXhGUVVGRkxFTkJRVU03U1VGRGRFUXNRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJBYlc5a2RXeGxJR2x1ZEdWbmNtRjBhVzl1Y3k5bmNtRndhQzl3YVc1dWFXNW5MMGR5WVhCb1VHbHVibWx1WjFCdmJHbGplVnh1SUNvZ1FITjFiVzFoY25rZ1JHVmphV1JsY3lCM2FHVjBhR1Z5SUdFZ2JtOWtaU0JqWVc0Z1ltVWdjR2x1Ym1Wa0lHRnVaQ0IzYUdWMGFHVnlJSEJwYm01bFpDQjJZV3gxWlhNZ2MyaHZkV3hrSUdKbElIVnpaV1F1WEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjRnVW1WaFpITWdjR2x1Ym1sdVp5QnRaWFJoWkdGMFlTQm1jbTl0SUhCc1lXNGdibTlrWlhNZ1lXNWtJR1Z1Wm05eVkyVnpJSFJvWlNCd2FXNXVhVzVuSUhOMGNtRjBaV2Q1TGx4dUlDb3ZYRzVwYlhCdmNuUWdkSGx3WlNCN0lFZHlZWEJvUlhobFkzVjBhVzl1VUd4aGJrNXZaR1VnZlNCbWNtOXRJRndpTGk0dmNHeGhibTVwYm1jdlIzSmhjR2hGZUdWamRYUnBiMjVRYkdGdVRtOWtaVndpTzF4dWFXMXdiM0owSUhSNWNHVWdleUJIY21Gd2FGQnBibTVwYm1kTlpYUmhaR0YwWVNCOUlHWnliMjBnWENJdUxpOTBlWEJsYzF3aU8xeHVhVzF3YjNKMElIc2dSRVZHUVZWTVZGOVFTVTVPU1U1SFgwMUZWRUZFUVZSQkxDQnBjMUJwYm01aFlteGxJSDBnWm5KdmJTQmNJaTR2UjNKaGNHaFFhVzV1YVc1blRXVjBZV1JoZEdGY0lqdGNibHh1THlvcVhHNGdLaUJRYjJ4cFkza2dkR2hoZENCa1pXTnBaR1Z6SUhCcGJtNXBibWNnWW1Wb1lYWnBiM1Z5SUdadmNpQmhJSEJzWVc0Z2JtOWtaUzVjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUVkeVlYQm9VR2x1Ym1sdVoxQnZiR2xqZVNCN1hHNGdJQzhxS2lCU1pYUjFjbTV6SUhkb1pYUm9aWElnZEdobElHNXZaR1VnYVhNZ1lXeHNiM2RsWkNCMGJ5QmlaU0J3YVc1dVpXUXVJQ292WEc0Z0lHTmhibEJwYmlodWIyUmxPaUJIY21Gd2FFVjRaV04xZEdsdmJsQnNZVzVPYjJSbEtUb2dZbTl2YkdWaGJpQjdYRzRnSUNBZ2NtVjBkWEp1SUdselVHbHVibUZpYkdVb2RHaHBjeTVuWlhSUWFXNXVhVzVuVFdWMFlXUmhkR0VvYm05a1pTa3BPMXh1SUNCOVhHNWNiaUFnTHlvcUlGSmxkSFZ5Ym5NZ2QyaGxkR2hsY2lCMGFHVWdaVzVuYVc1bElITm9iM1ZzWkNCaGRIUmxiWEIwSUhSdklIVnpaU0JoSUhCcGJtNWxaQ0IyWVd4MVpTQm1iM0lnZEdobElHNXZaR1V1SUNvdlhHNGdJSE5vYjNWc1pGVnpaVkJwYm01bFpGWmhiSFZsS0c1dlpHVTZJRWR5WVhCb1JYaGxZM1YwYVc5dVVHeGhiazV2WkdVcE9pQmliMjlzWldGdUlIdGNiaUFnSUNCamIyNXpkQ0J0WlhSaFpHRjBZU0E5SUhSb2FYTXVaMlYwVUdsdWJtbHVaMDFsZEdGa1lYUmhLRzV2WkdVcE8xeHVJQ0FnSUhKbGRIVnliaUJ0WlhSaFpHRjBZUzVsYm1GaWJHVmtJRDA5UFNCMGNuVmxJQ1ltSUcxbGRHRmtZWFJoTG5OMGNtRjBaV2Q1SUNFOVBTQmNJbVJwYzJGaWJHVmtYQ0k3WEc0Z0lIMWNibHh1SUNBdktpb2dVbVYwZFhKdWN5QjNhR1YwYUdWeUlHRjFkRzl0WVhScFl5QndhVzV1YVc1bklITm9iM1ZzWkNCdlkyTjFjaUJoWm5SbGNpQmxlR1ZqZFhScGIyNHVJQ292WEc0Z0lITm9iM1ZzWkVGMWRHOVFhVzRvYm05a1pUb2dSM0poY0doRmVHVmpkWFJwYjI1UWJHRnVUbTlrWlNrNklHSnZiMnhsWVc0Z2UxeHVJQ0FnSUdOdmJuTjBJRzFsZEdGa1lYUmhJRDBnZEdocGN5NW5aWFJRYVc1dWFXNW5UV1YwWVdSaGRHRW9ibTlrWlNrN1hHNGdJQ0FnY21WMGRYSnVJRzFsZEdGa1lYUmhMbVZ1WVdKc1pXUWdQVDA5SUhSeWRXVWdKaVlnYldWMFlXUmhkR0V1YzNSeVlYUmxaM2tnUFQwOUlGd2lZWFYwYjIxaGRHbGpYQ0k3WEc0Z0lIMWNibHh1SUNBdktpb2dSWGgwY21GamRITWdjR2x1Ym1sdVp5QnRaWFJoWkdGMFlTQm1jbTl0SUdFZ2NHeGhiaUJ1YjJSbExpQXFMMXh1SUNCblpYUlFhVzV1YVc1blRXVjBZV1JoZEdFb2JtOWtaVG9nUjNKaGNHaEZlR1ZqZFhScGIyNVFiR0Z1VG05a1pTazZJRWR5WVhCb1VHbHVibWx1WjAxbGRHRmtZWFJoSUh0Y2JpQWdJQ0JqYjI1emRDQnlZWGNnUFZ4dUlDQWdJQ0FnS0c1dlpHVXVaR1ZtYVc1cGRHbHZiaUJoY3lCaGJua3BQeTVuY21Gd2FEOHViV1YwWVdSaGRHRS9MbkJwYm01aFlteGxJRDgvWEc0Z0lDQWdJQ0FvYm05a1pTNXRaWFJoWkdGMFlTQmhjeUJoYm5rcFB5NXdhVzV1WVdKc1pUdGNiaUFnSUNCeVpYUjFjbTRnY21GM1hHNGdJQ0FnSUNBL0lIc2dMaTR1UkVWR1FWVk1WRjlRU1U1T1NVNUhYMDFGVkVGRVFWUkJMQ0F1TGk1eVlYY2dmVnh1SUNBZ0lDQWdPaUI3SUM0dUxrUkZSa0ZWVEZSZlVFbE9Ua2xPUjE5TlJWUkJSRUZVUVN3Z1pXNWhZbXhsWkRvZ1ptRnNjMlVnZlR0Y2JpQWdmVnh1ZlZ4dUlsMTkiXX0=