footprintjs 10.0.1 → 10.2.0

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 (368) hide show
  1. package/AGENTS.md +2 -1
  2. package/CLAUDE.md +61 -7
  3. package/README.md +136 -312
  4. package/dist/esm/index.d.ts +62 -2
  5. package/dist/esm/index.js +13 -6
  6. package/dist/esm/lib/attempt/anySignal.d.ts +19 -0
  7. package/dist/esm/lib/attempt/anySignal.js +39 -0
  8. package/dist/esm/lib/attempt/call.d.ts +88 -0
  9. package/dist/esm/lib/attempt/call.js +129 -0
  10. package/dist/esm/lib/attempt/category.d.ts +37 -0
  11. package/dist/esm/lib/attempt/category.js +131 -0
  12. package/dist/esm/lib/attempt/correlation.d.ts +95 -0
  13. package/dist/esm/lib/attempt/correlation.js +178 -0
  14. package/dist/esm/lib/attempt/deadline.d.ts +44 -0
  15. package/dist/esm/lib/attempt/deadline.js +101 -0
  16. package/dist/esm/lib/attempt/decision.d.ts +52 -0
  17. package/dist/esm/lib/attempt/decision.js +134 -0
  18. package/dist/esm/lib/attempt/effect.d.ts +76 -0
  19. package/dist/esm/lib/attempt/effect.js +160 -0
  20. package/dist/esm/lib/attempt/errors.d.ts +41 -0
  21. package/dist/esm/lib/attempt/errors.js +44 -0
  22. package/dist/esm/lib/attempt/index.d.ts +18 -0
  23. package/dist/esm/lib/attempt/index.js +15 -0
  24. package/dist/esm/lib/attempt/name.d.ts +21 -0
  25. package/dist/esm/lib/attempt/name.js +43 -0
  26. package/dist/esm/lib/attempt/observed.d.ts +66 -0
  27. package/dist/esm/lib/attempt/observed.js +171 -0
  28. package/dist/esm/lib/attempt/policy.d.ts +45 -0
  29. package/dist/esm/lib/attempt/policy.js +83 -0
  30. package/dist/esm/lib/attempt/record.d.ts +11 -0
  31. package/dist/esm/lib/attempt/record.js +24 -0
  32. package/dist/esm/lib/attempt/retryLoopContext.d.ts +18 -0
  33. package/dist/esm/lib/attempt/retryLoopContext.js +24 -0
  34. package/dist/esm/lib/attempt/retryLoopTypes.d.ts +18 -0
  35. package/dist/esm/lib/attempt/retryLoopTypes.js +2 -0
  36. package/dist/esm/lib/attempt/runner.d.ts +157 -0
  37. package/dist/esm/lib/attempt/runner.js +523 -0
  38. package/dist/esm/lib/attempt/standalone.d.ts +47 -0
  39. package/dist/esm/lib/attempt/standalone.js +126 -0
  40. package/dist/esm/lib/attempt/types.d.ts +453 -0
  41. package/dist/esm/lib/attempt/types.js +16 -0
  42. package/dist/esm/lib/budget/index.d.ts +9 -0
  43. package/dist/esm/lib/budget/index.js +9 -0
  44. package/dist/esm/lib/budget/timeBudget.d.ts +136 -0
  45. package/dist/esm/lib/budget/timeBudget.js +666 -0
  46. package/dist/esm/lib/builder/FlowChartBuilder.d.ts +88 -3
  47. package/dist/esm/lib/builder/FlowChartBuilder.js +199 -9
  48. package/dist/esm/lib/builder/retryLoop.d.ts +56 -0
  49. package/dist/esm/lib/builder/retryLoop.js +283 -0
  50. package/dist/esm/lib/builder/types.d.ts +35 -1
  51. package/dist/esm/lib/builder/types.js +1 -1
  52. package/dist/esm/lib/decide/decide.js +2 -2
  53. package/dist/esm/lib/decide/index.d.ts +1 -1
  54. package/dist/esm/lib/decide/index.js +2 -2
  55. package/dist/esm/lib/decide/types.d.ts +3 -0
  56. package/dist/esm/lib/decide/types.js +1 -8
  57. package/dist/esm/lib/engine/graph/StageNode.d.ts +11 -1
  58. package/dist/esm/lib/engine/graph/StageNode.js +1 -1
  59. package/dist/esm/lib/engine/graph/prefixNodeTree.js +5 -1
  60. package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +36 -6
  61. package/dist/esm/lib/engine/handlers/DeciderHandler.js +9 -5
  62. package/dist/esm/lib/engine/handlers/ResumeEntry.js +3 -1
  63. package/dist/esm/lib/engine/handlers/SelectorHandler.js +6 -5
  64. package/dist/esm/lib/engine/handlers/StageRunner.d.ts +8 -1
  65. package/dist/esm/lib/engine/handlers/StageRunner.js +36 -9
  66. package/dist/esm/lib/engine/handlers/SubflowExecutor.js +24 -5
  67. package/dist/esm/lib/engine/handlers/commitStage.d.ts +7 -0
  68. package/dist/esm/lib/engine/handlers/commitStage.js +22 -4
  69. package/dist/esm/lib/engine/handlers/stageError.d.ts +9 -0
  70. package/dist/esm/lib/engine/handlers/stageError.js +23 -1
  71. package/dist/esm/lib/engine/index.d.ts +2 -2
  72. package/dist/esm/lib/engine/index.js +1 -1
  73. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +27 -13
  74. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +68 -40
  75. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.d.ts +4 -1
  76. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +19 -2
  77. package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.d.ts +22 -3
  78. package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.js +61 -9
  79. package/dist/esm/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +1 -0
  80. package/dist/esm/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +2 -1
  81. package/dist/esm/lib/engine/narrative/formatting/sentences.d.ts +23 -0
  82. package/dist/esm/lib/engine/narrative/formatting/sentences.js +127 -1
  83. package/dist/esm/lib/engine/narrative/index.d.ts +2 -2
  84. package/dist/esm/lib/engine/narrative/index.js +1 -1
  85. package/dist/esm/lib/engine/narrative/narrativeTypes.d.ts +27 -21
  86. package/dist/esm/lib/engine/narrative/narrativeTypes.js +1 -1
  87. package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.d.ts +45 -2
  88. package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.js +55 -2
  89. package/dist/esm/lib/engine/narrative/recorders/index.d.ts +1 -1
  90. package/dist/esm/lib/engine/narrative/recorders/index.js +1 -1
  91. package/dist/esm/lib/engine/narrative/types.d.ts +74 -5
  92. package/dist/esm/lib/engine/narrative/types.js +1 -1
  93. package/dist/esm/lib/engine/traversal/FlowchartTraverser.d.ts +59 -19
  94. package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +194 -118
  95. package/dist/esm/lib/engine/traversalContext.d.ts +7 -2
  96. package/dist/esm/lib/engine/traversalContext.js +6 -3
  97. package/dist/esm/lib/engine/types.d.ts +52 -57
  98. package/dist/esm/lib/engine/types.js +1 -1
  99. package/dist/esm/lib/errors/terminalFailure.d.ts +29 -0
  100. package/dist/esm/lib/errors/terminalFailure.js +60 -0
  101. package/dist/esm/lib/{decide → filter}/evaluator.d.ts +7 -2
  102. package/dist/esm/lib/filter/evaluator.js +135 -0
  103. package/dist/esm/lib/ids/idempotencyKey.d.ts +14 -0
  104. package/dist/esm/lib/ids/idempotencyKey.js +24 -0
  105. package/dist/esm/lib/memory/StageContext.d.ts +123 -3
  106. package/dist/esm/lib/memory/StageContext.js +245 -4
  107. package/dist/esm/lib/memory/attention.d.ts +26 -0
  108. package/dist/esm/lib/memory/attention.js +171 -0
  109. package/dist/esm/lib/memory/borrowedMutation.d.ts +8 -0
  110. package/dist/esm/lib/memory/borrowedMutation.js +14 -1
  111. package/dist/esm/lib/memory/frameTypes.d.ts +38 -0
  112. package/dist/esm/lib/memory/frameTypes.js +3 -1
  113. package/dist/esm/lib/memory/redaction.d.ts +12 -0
  114. package/dist/esm/lib/memory/redaction.js +54 -5
  115. package/dist/esm/lib/pause/record.js +10 -1
  116. package/dist/esm/lib/pause/types.d.ts +19 -0
  117. package/dist/esm/lib/pause/types.js +17 -1
  118. package/dist/esm/lib/reactive/createTypedScope.js +3 -1
  119. package/dist/esm/lib/reactive/types.d.ts +36 -4
  120. package/dist/esm/lib/reactive/types.js +3 -1
  121. package/dist/esm/lib/recorder/AttemptRecorder.d.ts +141 -0
  122. package/dist/esm/lib/recorder/AttemptRecorder.js +412 -0
  123. package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +36 -2
  124. package/dist/esm/lib/recorder/ControlDepRecorder.js +50 -2
  125. package/dist/esm/lib/recorder/EmitRecorder.d.ts +3 -0
  126. package/dist/esm/lib/recorder/EmitRecorder.js +1 -1
  127. package/dist/esm/lib/recorder/InOutRecorder.d.ts +37 -1
  128. package/dist/esm/lib/recorder/InOutRecorder.js +75 -6
  129. package/dist/esm/lib/recorder/QualityRecorder.d.ts +32 -5
  130. package/dist/esm/lib/recorder/QualityRecorder.js +87 -29
  131. package/dist/esm/lib/recorder/TopologyRecorder.d.ts +35 -5
  132. package/dist/esm/lib/recorder/TopologyRecorder.js +76 -2
  133. package/dist/esm/lib/recorder/attemptMetricRows.d.ts +11 -0
  134. package/dist/esm/lib/recorder/attemptMetricRows.js +202 -0
  135. package/dist/esm/lib/recorder/attemptMetrics.d.ts +7 -0
  136. package/dist/esm/lib/recorder/attemptMetrics.js +165 -0
  137. package/dist/esm/lib/recorder/attemptMetricsTypes.d.ts +114 -0
  138. package/dist/esm/lib/recorder/attemptMetricsTypes.js +2 -0
  139. package/dist/esm/lib/recorder/attemptOTel.d.ts +78 -0
  140. package/dist/esm/lib/recorder/attemptOTel.js +107 -0
  141. package/dist/esm/lib/recorder/attemptSeries.d.ts +81 -0
  142. package/dist/esm/lib/recorder/attemptSeries.js +103 -0
  143. package/dist/esm/lib/recorder/hooks.d.ts +9 -0
  144. package/dist/esm/lib/recorder/hooks.js +4 -1
  145. package/dist/esm/lib/runner/DeferredObserverTier.js +13 -1
  146. package/dist/esm/lib/runner/ExecutionRuntime.d.ts +54 -6
  147. package/dist/esm/lib/runner/ExecutionRuntime.js +57 -5
  148. package/dist/esm/lib/runner/FlowChartExecutor.d.ts +46 -2
  149. package/dist/esm/lib/runner/FlowChartExecutor.js +330 -101
  150. package/dist/esm/lib/runner/RunnableChart.d.ts +6 -0
  151. package/dist/esm/lib/runner/RunnableChart.js +5 -1
  152. package/dist/esm/lib/runner/attach.d.ts +2 -1
  153. package/dist/esm/lib/runner/attach.js +8 -2
  154. package/dist/esm/lib/runner/checkpoint.js +3 -1
  155. package/dist/esm/lib/runner/deadline.d.ts +42 -0
  156. package/dist/esm/lib/runner/deadline.js +90 -0
  157. package/dist/esm/lib/runner/index.d.ts +3 -1
  158. package/dist/esm/lib/runner/index.js +2 -1
  159. package/dist/esm/lib/runner/options.d.ts +17 -0
  160. package/dist/esm/lib/runner/options.js +3 -1
  161. package/dist/esm/lib/runner/recordSink.d.ts +128 -0
  162. package/dist/esm/lib/runner/recordSink.js +296 -0
  163. package/dist/esm/lib/runner/resume.d.ts +3 -0
  164. package/dist/esm/lib/runner/resume.js +22 -2
  165. package/dist/esm/lib/runner/snapshot.d.ts +2 -2
  166. package/dist/esm/lib/runner/snapshot.js +6 -2
  167. package/dist/esm/lib/scope/ScopeFacade.d.ts +118 -4
  168. package/dist/esm/lib/scope/ScopeFacade.js +304 -7
  169. package/dist/esm/lib/scope/recorders/DebugRecorder.d.ts +17 -3
  170. package/dist/esm/lib/scope/recorders/DebugRecorder.js +79 -13
  171. package/dist/esm/lib/scope/recorders/MetricRecorder.d.ts +10 -0
  172. package/dist/esm/lib/scope/recorders/MetricRecorder.js +15 -2
  173. package/dist/esm/lib/scope/runtime.d.ts +3 -0
  174. package/dist/esm/lib/scope/runtime.js +1 -1
  175. package/dist/esm/lib/scope/types.d.ts +6 -0
  176. package/dist/esm/lib/scope/types.js +1 -1
  177. package/dist/esm/lib/sinks/fileSink.d.ts +135 -0
  178. package/dist/esm/lib/sinks/fileSink.js +387 -0
  179. package/dist/esm/recorders.d.ts +8 -2
  180. package/dist/esm/recorders.js +7 -1
  181. package/dist/esm/sinks.d.ts +23 -0
  182. package/dist/esm/sinks.js +23 -0
  183. package/dist/esm/trace.d.ts +2 -2
  184. package/dist/esm/trace.js +1 -1
  185. package/dist/index.js +77 -60
  186. package/dist/lib/attempt/anySignal.js +43 -0
  187. package/dist/lib/attempt/call.js +134 -0
  188. package/dist/lib/attempt/category.js +136 -0
  189. package/dist/lib/attempt/correlation.js +186 -0
  190. package/dist/lib/attempt/deadline.js +112 -0
  191. package/dist/lib/attempt/decision.js +139 -0
  192. package/dist/lib/attempt/effect.js +174 -0
  193. package/dist/lib/attempt/errors.js +49 -0
  194. package/dist/lib/attempt/index.js +26 -0
  195. package/dist/lib/attempt/name.js +48 -0
  196. package/dist/lib/attempt/observed.js +177 -0
  197. package/dist/lib/attempt/policy.js +92 -0
  198. package/dist/lib/attempt/record.js +29 -0
  199. package/dist/lib/attempt/retryLoopContext.js +31 -0
  200. package/dist/lib/attempt/retryLoopTypes.js +3 -0
  201. package/dist/lib/attempt/runner.js +530 -0
  202. package/dist/lib/attempt/standalone.js +130 -0
  203. package/dist/lib/attempt/types.js +17 -0
  204. package/dist/lib/budget/index.js +17 -0
  205. package/dist/lib/budget/timeBudget.js +674 -0
  206. package/dist/lib/builder/FlowChartBuilder.js +199 -9
  207. package/dist/lib/builder/retryLoop.js +287 -0
  208. package/dist/lib/builder/types.js +1 -1
  209. package/dist/lib/decide/decide.js +2 -2
  210. package/dist/lib/decide/index.js +2 -2
  211. package/dist/lib/decide/types.js +1 -8
  212. package/dist/lib/engine/graph/StageNode.js +1 -1
  213. package/dist/lib/engine/graph/prefixNodeTree.js +5 -1
  214. package/dist/lib/engine/handlers/ChildrenExecutor.js +36 -6
  215. package/dist/lib/engine/handlers/DeciderHandler.js +7 -3
  216. package/dist/lib/engine/handlers/ResumeEntry.js +3 -1
  217. package/dist/lib/engine/handlers/SelectorHandler.js +4 -3
  218. package/dist/lib/engine/handlers/StageRunner.js +36 -9
  219. package/dist/lib/engine/handlers/SubflowExecutor.js +24 -5
  220. package/dist/lib/engine/handlers/commitStage.js +24 -5
  221. package/dist/lib/engine/handlers/stageError.js +26 -2
  222. package/dist/lib/engine/index.js +1 -1
  223. package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +67 -39
  224. package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +19 -2
  225. package/dist/lib/engine/narrative/NarrativeFlowRecorder.js +60 -8
  226. package/dist/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +2 -1
  227. package/dist/lib/engine/narrative/formatting/sentences.js +131 -2
  228. package/dist/lib/engine/narrative/index.js +1 -1
  229. package/dist/lib/engine/narrative/narrativeTypes.js +1 -1
  230. package/dist/lib/engine/narrative/recorders/ManifestFlowRecorder.js +55 -2
  231. package/dist/lib/engine/narrative/recorders/index.js +1 -1
  232. package/dist/lib/engine/narrative/types.js +1 -1
  233. package/dist/lib/engine/traversal/FlowchartTraverser.js +192 -116
  234. package/dist/lib/engine/traversalContext.js +6 -3
  235. package/dist/lib/engine/types.js +1 -1
  236. package/dist/lib/errors/terminalFailure.js +64 -0
  237. package/dist/lib/filter/evaluator.js +139 -0
  238. package/dist/lib/ids/idempotencyKey.js +28 -0
  239. package/dist/lib/memory/StageContext.js +246 -5
  240. package/dist/lib/memory/attention.js +175 -0
  241. package/dist/lib/memory/borrowedMutation.js +16 -2
  242. package/dist/lib/memory/frameTypes.js +3 -1
  243. package/dist/lib/memory/redaction.js +54 -5
  244. package/dist/lib/pause/record.js +10 -1
  245. package/dist/lib/pause/types.js +17 -1
  246. package/dist/lib/reactive/createTypedScope.js +3 -1
  247. package/dist/lib/reactive/types.js +3 -1
  248. package/dist/lib/recorder/AttemptRecorder.js +417 -0
  249. package/dist/lib/recorder/ControlDepRecorder.js +50 -2
  250. package/dist/lib/recorder/EmitRecorder.js +1 -1
  251. package/dist/lib/recorder/InOutRecorder.js +75 -6
  252. package/dist/lib/recorder/QualityRecorder.js +87 -29
  253. package/dist/lib/recorder/TopologyRecorder.js +76 -2
  254. package/dist/lib/recorder/attemptMetricRows.js +209 -0
  255. package/dist/lib/recorder/attemptMetrics.js +174 -0
  256. package/dist/lib/recorder/attemptMetricsTypes.js +3 -0
  257. package/dist/lib/recorder/attemptOTel.js +111 -0
  258. package/dist/lib/recorder/attemptSeries.js +113 -0
  259. package/dist/lib/recorder/hooks.js +4 -1
  260. package/dist/lib/runner/DeferredObserverTier.js +13 -1
  261. package/dist/lib/runner/ExecutionRuntime.js +57 -5
  262. package/dist/lib/runner/FlowChartExecutor.js +330 -101
  263. package/dist/lib/runner/RunnableChart.js +5 -1
  264. package/dist/lib/runner/attach.js +8 -2
  265. package/dist/lib/runner/checkpoint.js +3 -1
  266. package/dist/lib/runner/deadline.js +94 -0
  267. package/dist/lib/runner/index.js +4 -2
  268. package/dist/lib/runner/options.js +3 -1
  269. package/dist/lib/runner/recordSink.js +302 -0
  270. package/dist/lib/runner/resume.js +22 -2
  271. package/dist/lib/runner/snapshot.js +6 -2
  272. package/dist/lib/scope/ScopeFacade.js +303 -6
  273. package/dist/lib/scope/recorders/DebugRecorder.js +79 -13
  274. package/dist/lib/scope/recorders/MetricRecorder.js +15 -2
  275. package/dist/lib/scope/runtime.js +1 -1
  276. package/dist/lib/scope/types.js +1 -1
  277. package/dist/lib/sinks/fileSink.js +392 -0
  278. package/dist/recorders.js +10 -2
  279. package/dist/sinks.js +32 -0
  280. package/dist/trace.js +1 -1
  281. package/dist/types/index.d.ts +62 -2
  282. package/dist/types/lib/attempt/anySignal.d.ts +19 -0
  283. package/dist/types/lib/attempt/call.d.ts +88 -0
  284. package/dist/types/lib/attempt/category.d.ts +37 -0
  285. package/dist/types/lib/attempt/correlation.d.ts +95 -0
  286. package/dist/types/lib/attempt/deadline.d.ts +44 -0
  287. package/dist/types/lib/attempt/decision.d.ts +52 -0
  288. package/dist/types/lib/attempt/effect.d.ts +76 -0
  289. package/dist/types/lib/attempt/errors.d.ts +41 -0
  290. package/dist/types/lib/attempt/index.d.ts +18 -0
  291. package/dist/types/lib/attempt/name.d.ts +21 -0
  292. package/dist/types/lib/attempt/observed.d.ts +66 -0
  293. package/dist/types/lib/attempt/policy.d.ts +45 -0
  294. package/dist/types/lib/attempt/record.d.ts +11 -0
  295. package/dist/types/lib/attempt/retryLoopContext.d.ts +18 -0
  296. package/dist/types/lib/attempt/retryLoopTypes.d.ts +18 -0
  297. package/dist/types/lib/attempt/runner.d.ts +157 -0
  298. package/dist/types/lib/attempt/standalone.d.ts +47 -0
  299. package/dist/types/lib/attempt/types.d.ts +453 -0
  300. package/dist/types/lib/budget/index.d.ts +9 -0
  301. package/dist/types/lib/budget/timeBudget.d.ts +136 -0
  302. package/dist/types/lib/builder/FlowChartBuilder.d.ts +88 -3
  303. package/dist/types/lib/builder/retryLoop.d.ts +56 -0
  304. package/dist/types/lib/builder/types.d.ts +35 -1
  305. package/dist/types/lib/decide/index.d.ts +1 -1
  306. package/dist/types/lib/decide/types.d.ts +3 -0
  307. package/dist/types/lib/engine/graph/StageNode.d.ts +11 -1
  308. package/dist/types/lib/engine/handlers/StageRunner.d.ts +8 -1
  309. package/dist/types/lib/engine/handlers/commitStage.d.ts +7 -0
  310. package/dist/types/lib/engine/handlers/stageError.d.ts +9 -0
  311. package/dist/types/lib/engine/index.d.ts +2 -2
  312. package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +27 -13
  313. package/dist/types/lib/engine/narrative/FlowRecorderDispatcher.d.ts +4 -1
  314. package/dist/types/lib/engine/narrative/NarrativeFlowRecorder.d.ts +22 -3
  315. package/dist/types/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +1 -0
  316. package/dist/types/lib/engine/narrative/formatting/sentences.d.ts +23 -0
  317. package/dist/types/lib/engine/narrative/index.d.ts +2 -2
  318. package/dist/types/lib/engine/narrative/narrativeTypes.d.ts +27 -21
  319. package/dist/types/lib/engine/narrative/recorders/ManifestFlowRecorder.d.ts +45 -2
  320. package/dist/types/lib/engine/narrative/recorders/index.d.ts +1 -1
  321. package/dist/types/lib/engine/narrative/types.d.ts +74 -5
  322. package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +59 -19
  323. package/dist/types/lib/engine/traversalContext.d.ts +7 -2
  324. package/dist/types/lib/engine/types.d.ts +52 -57
  325. package/dist/types/lib/errors/terminalFailure.d.ts +29 -0
  326. package/dist/types/lib/{decide → filter}/evaluator.d.ts +7 -2
  327. package/dist/types/lib/ids/idempotencyKey.d.ts +14 -0
  328. package/dist/types/lib/memory/StageContext.d.ts +123 -3
  329. package/dist/types/lib/memory/attention.d.ts +26 -0
  330. package/dist/types/lib/memory/borrowedMutation.d.ts +8 -0
  331. package/dist/types/lib/memory/frameTypes.d.ts +38 -0
  332. package/dist/types/lib/memory/redaction.d.ts +12 -0
  333. package/dist/types/lib/pause/types.d.ts +19 -0
  334. package/dist/types/lib/reactive/types.d.ts +36 -4
  335. package/dist/types/lib/recorder/AttemptRecorder.d.ts +141 -0
  336. package/dist/types/lib/recorder/ControlDepRecorder.d.ts +36 -2
  337. package/dist/types/lib/recorder/EmitRecorder.d.ts +3 -0
  338. package/dist/types/lib/recorder/InOutRecorder.d.ts +37 -1
  339. package/dist/types/lib/recorder/QualityRecorder.d.ts +32 -5
  340. package/dist/types/lib/recorder/TopologyRecorder.d.ts +35 -5
  341. package/dist/types/lib/recorder/attemptMetricRows.d.ts +11 -0
  342. package/dist/types/lib/recorder/attemptMetrics.d.ts +7 -0
  343. package/dist/types/lib/recorder/attemptMetricsTypes.d.ts +114 -0
  344. package/dist/types/lib/recorder/attemptOTel.d.ts +78 -0
  345. package/dist/types/lib/recorder/attemptSeries.d.ts +81 -0
  346. package/dist/types/lib/recorder/hooks.d.ts +9 -0
  347. package/dist/types/lib/runner/ExecutionRuntime.d.ts +54 -6
  348. package/dist/types/lib/runner/FlowChartExecutor.d.ts +46 -2
  349. package/dist/types/lib/runner/RunnableChart.d.ts +6 -0
  350. package/dist/types/lib/runner/attach.d.ts +2 -1
  351. package/dist/types/lib/runner/deadline.d.ts +42 -0
  352. package/dist/types/lib/runner/index.d.ts +3 -1
  353. package/dist/types/lib/runner/options.d.ts +17 -0
  354. package/dist/types/lib/runner/recordSink.d.ts +128 -0
  355. package/dist/types/lib/runner/resume.d.ts +3 -0
  356. package/dist/types/lib/runner/snapshot.d.ts +2 -2
  357. package/dist/types/lib/scope/ScopeFacade.d.ts +118 -4
  358. package/dist/types/lib/scope/recorders/DebugRecorder.d.ts +17 -3
  359. package/dist/types/lib/scope/recorders/MetricRecorder.d.ts +10 -0
  360. package/dist/types/lib/scope/runtime.d.ts +3 -0
  361. package/dist/types/lib/scope/types.d.ts +6 -0
  362. package/dist/types/lib/sinks/fileSink.d.ts +135 -0
  363. package/dist/types/recorders.d.ts +8 -2
  364. package/dist/types/sinks.d.ts +23 -0
  365. package/dist/types/trace.d.ts +2 -2
  366. package/package.json +20 -6
  367. package/dist/esm/lib/decide/evaluator.js +0 -130
  368. package/dist/lib/decide/evaluator.js +0 -134
@@ -8,6 +8,7 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.makeRunnable = void 0;
11
+ const index_js_1 = require("../budget/index.js");
11
12
  const schema_js_1 = require("../contract/schema.js");
12
13
  const RunContext_js_1 = require("./RunContext.js");
13
14
  // Cache for no-options toOpenAPI() calls only — parameterized calls are not cached
@@ -97,6 +98,9 @@ function makeRunnable(chart) {
97
98
  walk(chart.root);
98
99
  return lines.join('\n');
99
100
  };
101
+ runnable.timeBudget = function (options) {
102
+ return (0, index_js_1.timeBudget)(chart, options);
103
+ };
100
104
  runnable.toMCPTool = function () {
101
105
  const cached = mcpCache.get(chart);
102
106
  if (cached)
@@ -135,4 +139,4 @@ function slugify(id) {
135
139
  .replace(/[^a-z0-9]+/g, '-')
136
140
  .replace(/^-|-$/g, '') || 'execute');
137
141
  }
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVubmFibGVDaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBR0gscURBQXdEO0FBS3hELG1EQUE2RDtBQTRDN0QsbUZBQW1GO0FBQ25GLHNEQUFzRDtBQUN0RCxNQUFNLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUN0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBaUMsQ0FBQztBQUU5RDs7O0dBR0c7QUFDSCxTQUFnQixZQUFZLENBQWUsS0FBOEI7SUFDdkUsTUFBTSxRQUFRLEdBQUcsS0FBd0MsQ0FBQztJQUUxRCxRQUFRLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBK0I7UUFDM0QsT0FBTyxJQUFJLDBCQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQztJQUVGLFFBQVEsQ0FBQyxNQUFNLEdBQUcsVUFBVSxNQUF1QjtRQUNqRCxPQUFPLElBQUksMEJBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDO0lBRUYsUUFBUSxDQUFDLEdBQUcsR0FBRyxVQUFVLE9BQW9CO1FBQzNDLE9BQU8sSUFBSSwwQkFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUM7SUFFRixRQUFRLENBQUMsU0FBUyxHQUFHLFVBQVUsT0FBNkI7UUFDMUQsb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsSUFBSSxNQUFNO2dCQUFFLE9BQU8sTUFBTSxDQUFDO1FBQzVCLENBQUM7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O1FBRXBFLE1BQU0sSUFBSSxHQUF1QixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFcEUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBM0dELG9DQTJHQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxFQUFVO0lBQ2pDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQztBQUNuRixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxPQUFPLENBQUMsRUFBVTtJQUN6QixPQUFPLENBQ0wsRUFBRTtTQUNDLFdBQVcsRUFBRTtTQUNiLE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDO1NBQzNCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksU0FBUyxDQUN0QyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUnVubmFibGVDaGFydCAtLSBBZGRzIC5yZWNvcmRlcigpLCAucmVkYWN0KCksIC5ydW4oKSwgLnRvT3BlbkFQSSgpLCAudG9NQ1BUb29sKClcbiAqIHRvIGEgRmxvd0NoYXJ0IG9iamVjdC5cbiAqXG4gKiBDYWxsZWQgYnkgRmxvd0NoYXJ0QnVpbGRlci5idWlsZCgpIHRvIGVucmljaCB0aGUgY29tcGlsZWQgY2hhcnQgd2l0aFxuICogZDMtc3R5bGUgY2hhaW5hYmxlIHJ1biBtZXRob2RzIGFuZCBzZWxmLWRlc2NyaWJpbmcgb3V0cHV0cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZsb3dDaGFydCB9IGZyb20gJy4uL2J1aWxkZXIvdHlwZXMuanMnO1xuaW1wb3J0IHsgbm9ybWFsaXplU2NoZW1hIH0gZnJvbSAnLi4vY29udHJhY3Qvc2NoZW1hLmpzJztcbmltcG9ydCB0eXBlIHsgSnNvblNjaGVtYSB9IGZyb20gJy4uL2NvbnRyYWN0L3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgRmxvd1JlY29yZGVyIH0gZnJvbSAnLi4vZW5naW5lL25hcnJhdGl2ZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFJ1bk9wdGlvbnMsIFN0YWdlTm9kZSB9IGZyb20gJy4uL2VuZ2luZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlZGFjdGlvblBvbGljeSwgU2NvcGVSZWNvcmRlciB9IGZyb20gJy4uL3Njb3BlL3R5cGVzLmpzJztcbmltcG9ydCB7IHR5cGUgUnVuUmVzdWx0LCBSdW5Db250ZXh0IH0gZnJvbSAnLi9SdW5Db250ZXh0LmpzJztcblxuLyoqIE9wZW5BUEkgZ2VuZXJhdGlvbiBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFydE9wZW5BUElPcHRpb25zIHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHZlcnNpb24/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xufVxuXG4vKiogTUNQIHRvb2wgZGVzY3JpcHRpb24g4oCUIHNoYXBlIHJlcXVpcmVkIGJ5IHRoZSBNb2RlbCBDb250ZXh0IFByb3RvY29sIHNwZWMuICovXG5leHBvcnQgaW50ZXJmYWNlIE1DUFRvb2xEZXNjcmlwdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgLyoqXG4gICAqIEpTT04gU2NoZW1hIG9iamVjdCBkZXNjcmliaW5nIHRoZSB0b29sJ3MgaW5wdXQuXG4gICAqIEFsd2F5cyBwcmVzZW50IOKAlCB0aGUgTUNQIHNwZWMgcmVxdWlyZXMgaW5wdXRTY2hlbWEgZXZlbiBmb3IgdG9vbHMgd2l0aCBubyBwYXJhbWV0ZXJzLlxuICAgKiBEZWZhdWx0cyB0byBgeyB0eXBlOiAnb2JqZWN0JywgcHJvcGVydGllczoge30sIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSB9YC5cbiAgICovXG4gIGlucHV0U2NoZW1hOiBKc29uU2NoZW1hO1xufVxuXG4vKipcbiAqIEZsb3dDaGFydCBlbnJpY2hlZCB3aXRoIGQzLXN0eWxlIHJ1biBtZXRob2RzIGFuZCBzZWxmLWRlc2NyaWJpbmcgb3V0cHV0cy5cbiAqXG4gKiBFeHRlbmRzIGJ1aWxkZXIuRmxvd0NoYXJ0ICh3aGljaCBhbHJlYWR5IGNhcnJpZXMgYnVpbGRUaW1lU3RydWN0dXJlLCBkZXNjcmlwdGlvbixcbiAqIHN0YWdlRGVzY3JpcHRpb25zLCBpbnB1dFNjaGVtYSwgb3V0cHV0U2NoZW1hLCBvdXRwdXRNYXBwZXIpIGFuZCBhZGRzIHRoZSBydW50aW1lXG4gKiBtZXRob2RzIGF0dGFjaGVkIGJ5IG1ha2VSdW5uYWJsZSgpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bm5hYmxlRmxvd0NoYXJ0PFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gZXh0ZW5kcyBGbG93Q2hhcnQ8VE91dCwgVFNjb3BlPiB7XG4gIC8qKiBBdHRhY2ggYSByZWNvcmRlciBmb3IgdGhlIG5leHQgcnVuLiBSZXR1cm5zIGEgY2hhaW5hYmxlIFJ1bkNvbnRleHQuICovXG4gIHJlY29yZGVyKHI6IFNjb3BlUmVjb3JkZXIgfCBGbG93UmVjb3JkZXIpOiBSdW5Db250ZXh0PFRPdXQsIFRTY29wZT47XG4gIC8qKiBTZXQgcmVkYWN0aW9uIHBvbGljeSBmb3IgdGhlIG5leHQgcnVuLiBSZXR1cm5zIGEgY2hhaW5hYmxlIFJ1bkNvbnRleHQuICovXG4gIHJlZGFjdChwb2xpY3k6IFJlZGFjdGlvblBvbGljeSk6IFJ1bkNvbnRleHQ8VE91dCwgVFNjb3BlPjtcbiAgLyoqIEV4ZWN1dGUgdGhlIGNoYXJ0IGRpcmVjdGx5IChiYXJlIHJ1biwgbm8gcmVjb3JkZXJzKS4gKi9cbiAgcnVuKG9wdGlvbnM/OiBSdW5PcHRpb25zKTogUHJvbWlzZTxSdW5SZXN1bHQ+O1xuICAvKiogR2VuZXJhdGUgT3BlbkFQSSAzLjEgc3BlYyBmcm9tIGNoYXJ0IG1ldGFkYXRhICsgY29udHJhY3QuIENhY2hlZCBmb3Igbm8tb3B0aW9ucyBjYWxscy4gKi9cbiAgdG9PcGVuQVBJKG9wdGlvbnM/OiBDaGFydE9wZW5BUElPcHRpb25zKTogb2JqZWN0O1xuICAvKiogR2VuZXJhdGUgTUNQIHRvb2wgZGVzY3JpcHRpb24gZnJvbSBjaGFydCBtZXRhZGF0YS4gQ2FjaGVkLiAqL1xuICB0b01DUFRvb2woKTogTUNQVG9vbERlc2NyaXB0aW9uO1xuICAvKiogR2VuZXJhdGUgYSBNZXJtYWlkIGZsb3djaGFydCBkaWFncmFtIHN0cmluZyBmcm9tIHRoZSBjaGFydCdzIG5vZGUgZ3JhcGguICovXG4gIHRvTWVybWFpZCgpOiBzdHJpbmc7XG59XG5cbi8vIENhY2hlIGZvciBuby1vcHRpb25zIHRvT3BlbkFQSSgpIGNhbGxzIG9ubHkg4oCUIHBhcmFtZXRlcml6ZWQgY2FsbHMgYXJlIG5vdCBjYWNoZWRcbi8vIGJlY2F1c2UgZGlmZmVyZW50IG9wdGlvbnMgcHJvZHVjZSBkaWZmZXJlbnQgb3V0cHV0LlxuY29uc3Qgb3BlbkFQSUNhY2hlID0gbmV3IFdlYWtNYXA8Rmxvd0NoYXJ0LCBvYmplY3Q+KCk7XG5jb25zdCBtY3BDYWNoZSA9IG5ldyBXZWFrTWFwPEZsb3dDaGFydCwgTUNQVG9vbERlc2NyaXB0aW9uPigpO1xuXG4vKipcbiAqIEVucmljaCBhIEZsb3dDaGFydCB3aXRoIHJ1biArIGRlc2NyaWJlIG1ldGhvZHMuXG4gKiBDYWxsZWQgYnkgRmxvd0NoYXJ0QnVpbGRlci5idWlsZCgpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVJ1bm5hYmxlPFRPdXQsIFRTY29wZT4oY2hhcnQ6IEZsb3dDaGFydDxUT3V0LCBUU2NvcGU+KTogUnVubmFibGVGbG93Q2hhcnQ8VE91dCwgVFNjb3BlPiB7XG4gIGNvbnN0IHJ1bm5hYmxlID0gY2hhcnQgYXMgUnVubmFibGVGbG93Q2hhcnQ8VE91dCwgVFNjb3BlPjtcblxuICBydW5uYWJsZS5yZWNvcmRlciA9IGZ1bmN0aW9uIChyOiBTY29wZVJlY29yZGVyIHwgRmxvd1JlY29yZGVyKTogUnVuQ29udGV4dDxUT3V0LCBUU2NvcGU+IHtcbiAgICByZXR1cm4gbmV3IFJ1bkNvbnRleHQoY2hhcnQpLnJlY29yZGVyKHIpO1xuICB9O1xuXG4gIHJ1bm5hYmxlLnJlZGFjdCA9IGZ1bmN0aW9uIChwb2xpY3k6IFJlZGFjdGlvblBvbGljeSk6IFJ1bkNvbnRleHQ8VE91dCwgVFNjb3BlPiB7XG4gICAgcmV0dXJuIG5ldyBSdW5Db250ZXh0KGNoYXJ0KS5yZWRhY3QocG9saWN5KTtcbiAgfTtcblxuICBydW5uYWJsZS5ydW4gPSBmdW5jdGlvbiAob3B0aW9ucz86IFJ1bk9wdGlvbnMpOiBQcm9taXNlPFJ1blJlc3VsdD4ge1xuICAgIHJldHVybiBuZXcgUnVuQ29udGV4dChjaGFydCkucnVuKG9wdGlvbnMpO1xuICB9O1xuXG4gIHJ1bm5hYmxlLnRvT3BlbkFQSSA9IGZ1bmN0aW9uIChvcHRpb25zPzogQ2hhcnRPcGVuQVBJT3B0aW9ucyk6IG9iamVjdCB7XG4gICAgLy8gT25seSBjYWNoZSBuby1vcHRpb25zIGNhbGxzIOKAlCBwYXJhbWV0ZXJpemVkIGNhbGxzIHZhcnkgYnkgb3B0aW9uc1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgY29uc3QgY2FjaGVkID0gb3BlbkFQSUNhY2hlLmdldChjaGFydCk7XG4gICAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1aWxkZXJDaGFydCA9IGNoYXJ0IGFzIGFueTtcbiAgICBjb25zdCB0aXRsZSA9IG9wdGlvbnM/LnRpdGxlID8/IGJ1aWxkZXJDaGFydC5kZXNjcmlwdGlvbj8uc3BsaXQoJ1xcbicpWzBdID8/ICdBUEknO1xuICAgIGNvbnN0IHZlcnNpb24gPSBvcHRpb25zPy52ZXJzaW9uID8/ICcxLjAuMCc7XG4gICAgLy8gVXNlIHJvb3QuaWQgKHRoZSBleHBsaWNpdCBtYWNoaW5lLXJlYWRhYmxlIGlkKSBhcyB0aGUgcGF0aCBzZWdtZW50LCBzYW5pdGl6ZWRcbiAgICBjb25zdCByYXdJZCA9IGJ1aWxkZXJDaGFydC5yb290Py5pZCA/PyAnZXhlY3V0ZSc7XG4gICAgY29uc3QgcGF0aCA9IG9wdGlvbnM/LnBhdGggPz8gYC8ke3NsdWdpZnkocmF3SWQpfWA7XG5cbiAgICBjb25zdCBzcGVjOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgIG9wZW5hcGk6ICczLjEuMCcsXG4gICAgICBpbmZvOiB7IHRpdGxlLCB2ZXJzaW9uLCBkZXNjcmlwdGlvbjogb3B0aW9ucz8uZGVzY3JpcHRpb24gPz8gYnVpbGRlckNoYXJ0LmRlc2NyaXB0aW9uIH0sXG4gICAgICBwYXRoczoge1xuICAgICAgICBbcGF0aF06IHtcbiAgICAgICAgICBwb3N0OiB7XG4gICAgICAgICAgICBzdW1tYXJ5OiB0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBidWlsZGVyQ2hhcnQuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAuLi4oYnVpbGRlckNoYXJ0LmlucHV0U2NoZW1hXG4gICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogeyAnYXBwbGljYXRpb24vanNvbic6IHsgc2NoZW1hOiBub3JtYWxpemVTY2hlbWEoYnVpbGRlckNoYXJ0LmlucHV0U2NoZW1hKSB9IH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICByZXNwb25zZXM6IHtcbiAgICAgICAgICAgICAgJzIwMCc6IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgIC4uLihidWlsZGVyQ2hhcnQub3V0cHV0U2NoZW1hXG4gICAgICAgICAgICAgICAgICA/IHsgY29udGVudDogeyAnYXBwbGljYXRpb24vanNvbic6IHsgc2NoZW1hOiBub3JtYWxpemVTY2hlbWEoYnVpbGRlckNoYXJ0Lm91dHB1dFNjaGVtYSkgfSB9IH1cbiAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKCFvcHRpb25zKSBvcGVuQVBJQ2FjaGUuc2V0KGNoYXJ0LCBzcGVjKTtcbiAgICByZXR1cm4gc3BlYztcbiAgfTtcblxuICBydW5uYWJsZS50b01lcm1haWQgPSBmdW5jdGlvbiAoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbJ2Zsb3djaGFydCBURCddO1xuICAgIGNvbnN0IGlkT2YgPSAoazogc3RyaW5nKSA9PiAoayB8fCAnJykucmVwbGFjZSgvW15hLXpBLVowLTlfXS9nLCAnXycpIHx8ICdfJztcbiAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3Qgd2FsayA9IChuOiBTdGFnZU5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5pZCA9IGlkT2Yobi5pZCk7XG4gICAgICBpZiAodmlzaXRlZC5oYXMobmlkKSkgcmV0dXJuO1xuICAgICAgdmlzaXRlZC5hZGQobmlkKTtcbiAgICAgIGxpbmVzLnB1c2goYCR7bmlkfVtcIiR7bi5uYW1lfVwiXWApO1xuICAgICAgZm9yIChjb25zdCBjIG9mIG4uY2hpbGRyZW4gfHwgW10pIHtcbiAgICAgICAgY29uc3QgY2lkID0gaWRPZihjLmlkKTtcbiAgICAgICAgbGluZXMucHVzaChgJHtuaWR9IC0tPiAke2NpZH1gKTtcbiAgICAgICAgd2FsayhjKTtcbiAgICAgIH1cbiAgICAgIGlmIChuLm5leHQpIHtcbiAgICAgICAgY29uc3QgbWlkID0gaWRPZihuLm5leHQuaWQpO1xuICAgICAgICBsaW5lcy5wdXNoKGAke25pZH0gLS0+ICR7bWlkfWApO1xuICAgICAgICB3YWxrKG4ubmV4dCk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3YWxrKGNoYXJ0LnJvb3QpO1xuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgfTtcblxuICBydW5uYWJsZS50b01DUFRvb2wgPSBmdW5jdGlvbiAoKTogTUNQVG9vbERlc2NyaXB0aW9uIHtcbiAgICBjb25zdCBjYWNoZWQgPSBtY3BDYWNoZS5nZXQoY2hhcnQpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgICBjb25zdCBidWlsZGVyQ2hhcnQgPSBjaGFydCBhcyBhbnk7XG4gICAgLy8gVXNlIHJvb3QuaWQgKGV4cGxpY2l0IG1hY2hpbmUtcmVhZGFibGUgaWQpLCBzYW5pdGl6ZWQgdG8gTUNQIG5hbWUgY2hhcmFjdGVyIGFsbG93bGlzdFxuICAgIGNvbnN0IG5hbWUgPSBzYW5pdGl6ZU1DUE5hbWUoYnVpbGRlckNoYXJ0LnJvb3Q/LmlkID8/ICdleGVjdXRlJyk7XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBidWlsZGVyQ2hhcnQuZGVzY3JpcHRpb24gfHwgYEV4ZWN1dGUgdGhlICR7bmFtZX0gZmxvd2NoYXJ0YDtcblxuICAgIC8vIE1DUCBzcGVjIHJlcXVpcmVzIGlucHV0U2NoZW1hIHRvIGFsd2F5cyBiZSBwcmVzZW50LlxuICAgIC8vIFdoZW4gbm8gY29udHJhY3QgaXMgZGVmaW5lZCwgdXNlIHRoZSByZWNvbW1lbmRlZCBuby1wYXJhbWV0ZXIgZm9ybS5cbiAgICBjb25zdCBpbnB1dFNjaGVtYTogSnNvblNjaGVtYSA9IGJ1aWxkZXJDaGFydC5pbnB1dFNjaGVtYVxuICAgICAgPyBub3JtYWxpemVTY2hlbWEoYnVpbGRlckNoYXJ0LmlucHV0U2NoZW1hKVxuICAgICAgOiB7IHR5cGU6ICdvYmplY3QnLCBwcm9wZXJ0aWVzOiB7fSwgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlIH07XG5cbiAgICBjb25zdCB0b29sOiBNQ1BUb29sRGVzY3JpcHRpb24gPSB7IG5hbWUsIGRlc2NyaXB0aW9uLCBpbnB1dFNjaGVtYSB9O1xuXG4gICAgbWNwQ2FjaGUuc2V0KGNoYXJ0LCB0b29sKTtcbiAgICByZXR1cm4gdG9vbDtcbiAgfTtcblxuICByZXR1cm4gcnVubmFibGU7XG59XG5cbi8qKlxuICogU2FuaXRpemUgYSBzdHJpbmcgdG8gY29uZm9ybSB0byB0aGUgTUNQIHRvb2wgbmFtZSBjaGFyYWN0ZXIgYWxsb3dsaXN0OlxuICogW0EtWmEtejAtOV9cXC0uXSDigJQgYW55IG90aGVyIGNoYXJhY3RlciBpcyByZXBsYWNlZCB3aXRoIHVuZGVyc2NvcmUuXG4gKiBUcmltcyBsZWFkaW5nL3RyYWlsaW5nIHVuZGVyc2NvcmVzIGludHJvZHVjZWQgYnkgcmVwbGFjZW1lbnQuXG4gKi9cbmZ1bmN0aW9uIHNhbml0aXplTUNQTmFtZShpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlkLnJlcGxhY2UoL1teQS1aYS16MC05X1xcLS5dL2csICdfJykucmVwbGFjZSgvXl8rfF8rJC9nLCAnJykgfHwgJ2V4ZWN1dGUnO1xufVxuXG4vKipcbiAqIFNsdWdpZnkgYSBzdHJpbmcgZm9yIHVzZSBhcyBhbiBPcGVuQVBJIHBhdGggc2VnbWVudC5cbiAqIExvd2VyY2FzZXMgYW5kIHJlcGxhY2VzIG5vbi1hbHBoYW51bWVyaWMgcnVucyB3aXRoIGh5cGhlbnMuXG4gKi9cbmZ1bmN0aW9uIHNsdWdpZnkoaWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiAoXG4gICAgaWRcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW15hLXowLTldKy9nLCAnLScpXG4gICAgICAucmVwbGFjZSgvXi18LSQvZywgJycpIHx8ICdleGVjdXRlJ1xuICApO1xufVxuIl19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVubmFibGVDaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsaURBQStGO0FBRS9GLHFEQUF3RDtBQUt4RCxtREFBNkQ7QUFpRDdELG1GQUFtRjtBQUNuRixzREFBc0Q7QUFDdEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQXFCLENBQUM7QUFDdEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQWlDLENBQUM7QUFFOUQ7OztHQUdHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFlLEtBQThCO0lBQ3ZFLE1BQU0sUUFBUSxHQUFHLEtBQXdDLENBQUM7SUFFMUQsUUFBUSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQStCO1FBQzNELE9BQU8sSUFBSSwwQkFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUM7SUFFRixRQUFRLENBQUMsTUFBTSxHQUFHLFVBQVUsTUFBdUI7UUFDakQsT0FBTyxJQUFJLDBCQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQztJQUVGLFFBQVEsQ0FBQyxHQUFHLEdBQUcsVUFBVSxPQUFvQjtRQUMzQyxPQUFPLElBQUksMEJBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDO0lBRUYsUUFBUSxDQUFDLFNBQVMsR0FBRyxVQUFVLE9BQTZCO1FBQzFELG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLElBQUksTUFBTTtnQkFBRSxPQUFPLE1BQU0sQ0FB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QkFBZSxFQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDM0MsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxDQUFDO1FBRXBFLE1BQU0sSUFBSSxHQUF1QixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFcEUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBL0dELG9DQStHQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxFQUFVO0lBQ2pDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQztBQUNuRixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxPQUFPLENBQUMsRUFBVTtJQUN6QixPQUFPLENBQ0wsRUFBRTtTQUNDLFdBQVcsRUFBRTtTQUNiLE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDO1NBQzNCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksU0FBUyxDQUN0QyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUnVubmFibGVDaGFydCAtLSBBZGRzIC5yZWNvcmRlcigpLCAucmVkYWN0KCksIC5ydW4oKSwgLnRvT3BlbkFQSSgpLCAudG9NQ1BUb29sKClcbiAqIHRvIGEgRmxvd0NoYXJ0IG9iamVjdC5cbiAqXG4gKiBDYWxsZWQgYnkgRmxvd0NoYXJ0QnVpbGRlci5idWlsZCgpIHRvIGVucmljaCB0aGUgY29tcGlsZWQgY2hhcnQgd2l0aFxuICogZDMtc3R5bGUgY2hhaW5hYmxlIHJ1biBtZXRob2RzIGFuZCBzZWxmLWRlc2NyaWJpbmcgb3V0cHV0cy5cbiAqL1xuXG5pbXBvcnQgeyB0eXBlIFRpbWVCdWRnZXRPcHRpb25zLCB0eXBlIFRpbWVCdWRnZXRSZXBvcnQsIHRpbWVCdWRnZXQgfSBmcm9tICcuLi9idWRnZXQvaW5kZXguanMnO1xuaW1wb3J0IHR5cGUgeyBGbG93Q2hhcnQgfSBmcm9tICcuLi9idWlsZGVyL3R5cGVzLmpzJztcbmltcG9ydCB7IG5vcm1hbGl6ZVNjaGVtYSB9IGZyb20gJy4uL2NvbnRyYWN0L3NjaGVtYS5qcyc7XG5pbXBvcnQgdHlwZSB7IEpzb25TY2hlbWEgfSBmcm9tICcuLi9jb250cmFjdC90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3dSZWNvcmRlciB9IGZyb20gJy4uL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSdW5PcHRpb25zLCBTdGFnZU5vZGUgfSBmcm9tICcuLi9lbmdpbmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWRhY3Rpb25Qb2xpY3ksIFNjb3BlUmVjb3JkZXIgfSBmcm9tICcuLi9zY29wZS90eXBlcy5qcyc7XG5pbXBvcnQgeyB0eXBlIFJ1blJlc3VsdCwgUnVuQ29udGV4dCB9IGZyb20gJy4vUnVuQ29udGV4dC5qcyc7XG5cbi8qKiBPcGVuQVBJIGdlbmVyYXRpb24gb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRPcGVuQVBJT3B0aW9ucyB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbn1cblxuLyoqIE1DUCB0b29sIGRlc2NyaXB0aW9uIOKAlCBzaGFwZSByZXF1aXJlZCBieSB0aGUgTW9kZWwgQ29udGV4dCBQcm90b2NvbCBzcGVjLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNQ1BUb29sRGVzY3JpcHRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBKU09OIFNjaGVtYSBvYmplY3QgZGVzY3JpYmluZyB0aGUgdG9vbCdzIGlucHV0LlxuICAgKiBBbHdheXMgcHJlc2VudCDigJQgdGhlIE1DUCBzcGVjIHJlcXVpcmVzIGlucHV0U2NoZW1hIGV2ZW4gZm9yIHRvb2xzIHdpdGggbm8gcGFyYW1ldGVycy5cbiAgICogRGVmYXVsdHMgdG8gYHsgdHlwZTogJ29iamVjdCcsIHByb3BlcnRpZXM6IHt9LCBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UgfWAuXG4gICAqL1xuICBpbnB1dFNjaGVtYTogSnNvblNjaGVtYTtcbn1cblxuLyoqXG4gKiBGbG93Q2hhcnQgZW5yaWNoZWQgd2l0aCBkMy1zdHlsZSBydW4gbWV0aG9kcyBhbmQgc2VsZi1kZXNjcmliaW5nIG91dHB1dHMuXG4gKlxuICogRXh0ZW5kcyBidWlsZGVyLkZsb3dDaGFydCAod2hpY2ggYWxyZWFkeSBjYXJyaWVzIGJ1aWxkVGltZVN0cnVjdHVyZSwgZGVzY3JpcHRpb24sXG4gKiBzdGFnZURlc2NyaXB0aW9ucywgaW5wdXRTY2hlbWEsIG91dHB1dFNjaGVtYSwgb3V0cHV0TWFwcGVyKSBhbmQgYWRkcyB0aGUgcnVudGltZVxuICogbWV0aG9kcyBhdHRhY2hlZCBieSBtYWtlUnVubmFibGUoKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5uYWJsZUZsb3dDaGFydDxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IGV4dGVuZHMgRmxvd0NoYXJ0PFRPdXQsIFRTY29wZT4ge1xuICAvKiogQXR0YWNoIGEgcmVjb3JkZXIgZm9yIHRoZSBuZXh0IHJ1bi4gUmV0dXJucyBhIGNoYWluYWJsZSBSdW5Db250ZXh0LiAqL1xuICByZWNvcmRlcihyOiBTY29wZVJlY29yZGVyIHwgRmxvd1JlY29yZGVyKTogUnVuQ29udGV4dDxUT3V0LCBUU2NvcGU+O1xuICAvKiogU2V0IHJlZGFjdGlvbiBwb2xpY3kgZm9yIHRoZSBuZXh0IHJ1bi4gUmV0dXJucyBhIGNoYWluYWJsZSBSdW5Db250ZXh0LiAqL1xuICByZWRhY3QocG9saWN5OiBSZWRhY3Rpb25Qb2xpY3kpOiBSdW5Db250ZXh0PFRPdXQsIFRTY29wZT47XG4gIC8qKiBFeGVjdXRlIHRoZSBjaGFydCBkaXJlY3RseSAoYmFyZSBydW4sIG5vIHJlY29yZGVycykuICovXG4gIHJ1bihvcHRpb25zPzogUnVuT3B0aW9ucyk6IFByb21pc2U8UnVuUmVzdWx0PjtcbiAgLyoqIEdlbmVyYXRlIE9wZW5BUEkgMy4xIHNwZWMgZnJvbSBjaGFydCBtZXRhZGF0YSArIGNvbnRyYWN0LiBDYWNoZWQgZm9yIG5vLW9wdGlvbnMgY2FsbHMuICovXG4gIHRvT3BlbkFQSShvcHRpb25zPzogQ2hhcnRPcGVuQVBJT3B0aW9ucyk6IG9iamVjdDtcbiAgLyoqIEdlbmVyYXRlIE1DUCB0b29sIGRlc2NyaXB0aW9uIGZyb20gY2hhcnQgbWV0YWRhdGEuIENhY2hlZC4gKi9cbiAgdG9NQ1BUb29sKCk6IE1DUFRvb2xEZXNjcmlwdGlvbjtcbiAgLyoqIEdlbmVyYXRlIGEgTWVybWFpZCBmbG93Y2hhcnQgZGlhZ3JhbSBzdHJpbmcgZnJvbSB0aGUgY2hhcnQncyBub2RlIGdyYXBoLiAqL1xuICB0b01lcm1haWQoKTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHNsb3dlc3QgdGhpcyBjaGFydCBjYW4gdGFrZSwgZnJvbSBpdHMgZGVjbGFyZWQgcmV0cnkgcG9saWNpZXMg4oCUIGB0aW1lQnVkZ2V0KGNoYXJ0LCBvcHRpb25zKWAuIENoZWNrc1xuICAgKiBhZ2FpbnN0IHRoZSBjaGFydCdzIGRlY2xhcmVkIGAuYnVkZ2V0KG1zKWAgdW5sZXNzIGBvcHRpb25zLmJ1ZGdldE1zYCBpcyBnaXZlbi5cbiAgICovXG4gIHRpbWVCdWRnZXQob3B0aW9ucz86IFRpbWVCdWRnZXRPcHRpb25zKTogVGltZUJ1ZGdldFJlcG9ydDtcbn1cblxuLy8gQ2FjaGUgZm9yIG5vLW9wdGlvbnMgdG9PcGVuQVBJKCkgY2FsbHMgb25seSDigJQgcGFyYW1ldGVyaXplZCBjYWxscyBhcmUgbm90IGNhY2hlZFxuLy8gYmVjYXVzZSBkaWZmZXJlbnQgb3B0aW9ucyBwcm9kdWNlIGRpZmZlcmVudCBvdXRwdXQuXG5jb25zdCBvcGVuQVBJQ2FjaGUgPSBuZXcgV2Vha01hcDxGbG93Q2hhcnQsIG9iamVjdD4oKTtcbmNvbnN0IG1jcENhY2hlID0gbmV3IFdlYWtNYXA8Rmxvd0NoYXJ0LCBNQ1BUb29sRGVzY3JpcHRpb24+KCk7XG5cbi8qKlxuICogRW5yaWNoIGEgRmxvd0NoYXJ0IHdpdGggcnVuICsgZGVzY3JpYmUgbWV0aG9kcy5cbiAqIENhbGxlZCBieSBGbG93Q2hhcnRCdWlsZGVyLmJ1aWxkKCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlUnVubmFibGU8VE91dCwgVFNjb3BlPihjaGFydDogRmxvd0NoYXJ0PFRPdXQsIFRTY29wZT4pOiBSdW5uYWJsZUZsb3dDaGFydDxUT3V0LCBUU2NvcGU+IHtcbiAgY29uc3QgcnVubmFibGUgPSBjaGFydCBhcyBSdW5uYWJsZUZsb3dDaGFydDxUT3V0LCBUU2NvcGU+O1xuXG4gIHJ1bm5hYmxlLnJlY29yZGVyID0gZnVuY3Rpb24gKHI6IFNjb3BlUmVjb3JkZXIgfCBGbG93UmVjb3JkZXIpOiBSdW5Db250ZXh0PFRPdXQsIFRTY29wZT4ge1xuICAgIHJldHVybiBuZXcgUnVuQ29udGV4dChjaGFydCkucmVjb3JkZXIocik7XG4gIH07XG5cbiAgcnVubmFibGUucmVkYWN0ID0gZnVuY3Rpb24gKHBvbGljeTogUmVkYWN0aW9uUG9saWN5KTogUnVuQ29udGV4dDxUT3V0LCBUU2NvcGU+IHtcbiAgICByZXR1cm4gbmV3IFJ1bkNvbnRleHQoY2hhcnQpLnJlZGFjdChwb2xpY3kpO1xuICB9O1xuXG4gIHJ1bm5hYmxlLnJ1biA9IGZ1bmN0aW9uIChvcHRpb25zPzogUnVuT3B0aW9ucyk6IFByb21pc2U8UnVuUmVzdWx0PiB7XG4gICAgcmV0dXJuIG5ldyBSdW5Db250ZXh0KGNoYXJ0KS5ydW4ob3B0aW9ucyk7XG4gIH07XG5cbiAgcnVubmFibGUudG9PcGVuQVBJID0gZnVuY3Rpb24gKG9wdGlvbnM/OiBDaGFydE9wZW5BUElPcHRpb25zKTogb2JqZWN0IHtcbiAgICAvLyBPbmx5IGNhY2hlIG5vLW9wdGlvbnMgY2FsbHMg4oCUIHBhcmFtZXRlcml6ZWQgY2FsbHMgdmFyeSBieSBvcHRpb25zXG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICBjb25zdCBjYWNoZWQgPSBvcGVuQVBJQ2FjaGUuZ2V0KGNoYXJ0KTtcbiAgICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgYnVpbGRlckNoYXJ0ID0gY2hhcnQgYXMgYW55O1xuICAgIGNvbnN0IHRpdGxlID0gb3B0aW9ucz8udGl0bGUgPz8gYnVpbGRlckNoYXJ0LmRlc2NyaXB0aW9uPy5zcGxpdCgnXFxuJylbMF0gPz8gJ0FQSSc7XG4gICAgY29uc3QgdmVyc2lvbiA9IG9wdGlvbnM/LnZlcnNpb24gPz8gJzEuMC4wJztcbiAgICAvLyBVc2Ugcm9vdC5pZCAodGhlIGV4cGxpY2l0IG1hY2hpbmUtcmVhZGFibGUgaWQpIGFzIHRoZSBwYXRoIHNlZ21lbnQsIHNhbml0aXplZFxuICAgIGNvbnN0IHJhd0lkID0gYnVpbGRlckNoYXJ0LnJvb3Q/LmlkID8/ICdleGVjdXRlJztcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucz8ucGF0aCA/PyBgLyR7c2x1Z2lmeShyYXdJZCl9YDtcblxuICAgIGNvbnN0IHNwZWM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgb3BlbmFwaTogJzMuMS4wJyxcbiAgICAgIGluZm86IHsgdGl0bGUsIHZlcnNpb24sIGRlc2NyaXB0aW9uOiBvcHRpb25zPy5kZXNjcmlwdGlvbiA/PyBidWlsZGVyQ2hhcnQuZGVzY3JpcHRpb24gfSxcbiAgICAgIHBhdGhzOiB7XG4gICAgICAgIFtwYXRoXToge1xuICAgICAgICAgIHBvc3Q6IHtcbiAgICAgICAgICAgIHN1bW1hcnk6IHRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGJ1aWxkZXJDaGFydC5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIC4uLihidWlsZGVyQ2hhcnQuaW5wdXRTY2hlbWFcbiAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keToge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB7ICdhcHBsaWNhdGlvbi9qc29uJzogeyBzY2hlbWE6IG5vcm1hbGl6ZVNjaGVtYShidWlsZGVyQ2hhcnQuaW5wdXRTY2hlbWEpIH0gfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgIHJlc3BvbnNlczoge1xuICAgICAgICAgICAgICAnMjAwJzoge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU3VjY2VzcycsXG4gICAgICAgICAgICAgICAgLi4uKGJ1aWxkZXJDaGFydC5vdXRwdXRTY2hlbWFcbiAgICAgICAgICAgICAgICAgID8geyBjb250ZW50OiB7ICdhcHBsaWNhdGlvbi9qc29uJzogeyBzY2hlbWE6IG5vcm1hbGl6ZVNjaGVtYShidWlsZGVyQ2hhcnQub3V0cHV0U2NoZW1hKSB9IH0gfVxuICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAoIW9wdGlvbnMpIG9wZW5BUElDYWNoZS5zZXQoY2hhcnQsIHNwZWMpO1xuICAgIHJldHVybiBzcGVjO1xuICB9O1xuXG4gIHJ1bm5hYmxlLnRvTWVybWFpZCA9IGZ1bmN0aW9uICgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFsnZmxvd2NoYXJ0IFREJ107XG4gICAgY29uc3QgaWRPZiA9IChrOiBzdHJpbmcpID0+IChrIHx8ICcnKS5yZXBsYWNlKC9bXmEtekEtWjAtOV9dL2csICdfJykgfHwgJ18nO1xuICAgIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCB3YWxrID0gKG46IFN0YWdlTm9kZSkgPT4ge1xuICAgICAgY29uc3QgbmlkID0gaWRPZihuLmlkKTtcbiAgICAgIGlmICh2aXNpdGVkLmhhcyhuaWQpKSByZXR1cm47XG4gICAgICB2aXNpdGVkLmFkZChuaWQpO1xuICAgICAgbGluZXMucHVzaChgJHtuaWR9W1wiJHtuLm5hbWV9XCJdYCk7XG4gICAgICBmb3IgKGNvbnN0IGMgb2Ygbi5jaGlsZHJlbiB8fCBbXSkge1xuICAgICAgICBjb25zdCBjaWQgPSBpZE9mKGMuaWQpO1xuICAgICAgICBsaW5lcy5wdXNoKGAke25pZH0gLS0+ICR7Y2lkfWApO1xuICAgICAgICB3YWxrKGMpO1xuICAgICAgfVxuICAgICAgaWYgKG4ubmV4dCkge1xuICAgICAgICBjb25zdCBtaWQgPSBpZE9mKG4ubmV4dC5pZCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCR7bmlkfSAtLT4gJHttaWR9YCk7XG4gICAgICAgIHdhbGsobi5uZXh0KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdhbGsoY2hhcnQucm9vdCk7XG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xuICB9O1xuXG4gIHJ1bm5hYmxlLnRpbWVCdWRnZXQgPSBmdW5jdGlvbiAob3B0aW9ucz86IFRpbWVCdWRnZXRPcHRpb25zKTogVGltZUJ1ZGdldFJlcG9ydCB7XG4gICAgcmV0dXJuIHRpbWVCdWRnZXQoY2hhcnQsIG9wdGlvbnMpO1xuICB9O1xuXG4gIHJ1bm5hYmxlLnRvTUNQVG9vbCA9IGZ1bmN0aW9uICgpOiBNQ1BUb29sRGVzY3JpcHRpb24ge1xuICAgIGNvbnN0IGNhY2hlZCA9IG1jcENhY2hlLmdldChjaGFydCk7XG4gICAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcblxuICAgIGNvbnN0IGJ1aWxkZXJDaGFydCA9IGNoYXJ0IGFzIGFueTtcbiAgICAvLyBVc2Ugcm9vdC5pZCAoZXhwbGljaXQgbWFjaGluZS1yZWFkYWJsZSBpZCksIHNhbml0aXplZCB0byBNQ1AgbmFtZSBjaGFyYWN0ZXIgYWxsb3dsaXN0XG4gICAgY29uc3QgbmFtZSA9IHNhbml0aXplTUNQTmFtZShidWlsZGVyQ2hhcnQucm9vdD8uaWQgPz8gJ2V4ZWN1dGUnKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGJ1aWxkZXJDaGFydC5kZXNjcmlwdGlvbiB8fCBgRXhlY3V0ZSB0aGUgJHtuYW1lfSBmbG93Y2hhcnRgO1xuXG4gICAgLy8gTUNQIHNwZWMgcmVxdWlyZXMgaW5wdXRTY2hlbWEgdG8gYWx3YXlzIGJlIHByZXNlbnQuXG4gICAgLy8gV2hlbiBubyBjb250cmFjdCBpcyBkZWZpbmVkLCB1c2UgdGhlIHJlY29tbWVuZGVkIG5vLXBhcmFtZXRlciBmb3JtLlxuICAgIGNvbnN0IGlucHV0U2NoZW1hOiBKc29uU2NoZW1hID0gYnVpbGRlckNoYXJ0LmlucHV0U2NoZW1hXG4gICAgICA/IG5vcm1hbGl6ZVNjaGVtYShidWlsZGVyQ2hhcnQuaW5wdXRTY2hlbWEpXG4gICAgICA6IHsgdHlwZTogJ29iamVjdCcsIHByb3BlcnRpZXM6IHt9LCBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UgfTtcblxuICAgIGNvbnN0IHRvb2w6IE1DUFRvb2xEZXNjcmlwdGlvbiA9IHsgbmFtZSwgZGVzY3JpcHRpb24sIGlucHV0U2NoZW1hIH07XG5cbiAgICBtY3BDYWNoZS5zZXQoY2hhcnQsIHRvb2wpO1xuICAgIHJldHVybiB0b29sO1xuICB9O1xuXG4gIHJldHVybiBydW5uYWJsZTtcbn1cblxuLyoqXG4gKiBTYW5pdGl6ZSBhIHN0cmluZyB0byBjb25mb3JtIHRvIHRoZSBNQ1AgdG9vbCBuYW1lIGNoYXJhY3RlciBhbGxvd2xpc3Q6XG4gKiBbQS1aYS16MC05X1xcLS5dIOKAlCBhbnkgb3RoZXIgY2hhcmFjdGVyIGlzIHJlcGxhY2VkIHdpdGggdW5kZXJzY29yZS5cbiAqIFRyaW1zIGxlYWRpbmcvdHJhaWxpbmcgdW5kZXJzY29yZXMgaW50cm9kdWNlZCBieSByZXBsYWNlbWVudC5cbiAqL1xuZnVuY3Rpb24gc2FuaXRpemVNQ1BOYW1lKGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gaWQucmVwbGFjZSgvW15BLVphLXowLTlfXFwtLl0vZywgJ18nKS5yZXBsYWNlKC9eXyt8XyskL2csICcnKSB8fCAnZXhlY3V0ZSc7XG59XG5cbi8qKlxuICogU2x1Z2lmeSBhIHN0cmluZyBmb3IgdXNlIGFzIGFuIE9wZW5BUEkgcGF0aCBzZWdtZW50LlxuICogTG93ZXJjYXNlcyBhbmQgcmVwbGFjZXMgbm9uLWFscGhhbnVtZXJpYyBydW5zIHdpdGggaHlwaGVucy5cbiAqL1xuZnVuY3Rpb24gc2x1Z2lmeShpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIChcbiAgICBpZFxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csICctJylcbiAgICAgIC5yZXBsYWNlKC9eLXwtJC9nLCAnJykgfHwgJ2V4ZWN1dGUnXG4gICk7XG59XG4iXX0=
@@ -154,7 +154,7 @@ class RunObservers {
154
154
  * The marked-keys set is ALWAYS wired (a stage can call
155
155
  * `setValue(key, val, true)` for per-call redaction without any policy).
156
156
  */
157
- composeScopeFactory(baseFactory, redactionPolicy, sharedRedactedKeys) {
157
+ composeScopeFactory(baseFactory, redactionPolicy, sharedRedactedKeys, correlation) {
158
158
  const modifiers = [];
159
159
  // 1. Narrative recorder (if enabled)
160
160
  if (this.combinedRecorder) {
@@ -193,6 +193,12 @@ class RunObservers {
193
193
  target.useRedactionPolicy?.(policy);
194
194
  });
195
195
  }
196
+ // 4. The leg's correlation (10.1) — one frozen object per leg, so a factory composed for one leg never
197
+ // stamps another's. Installed even when absent: a target a custom factory re-uses across runs is CLEARED,
198
+ // never left holding an earlier run's. Absent → events byte-identical.
199
+ modifiers.push((target) => {
200
+ target.useCorrelation?.(correlation);
201
+ });
196
202
  return ((ctx, stageName, readOnly, envArg) => {
197
203
  const scope = baseFactory(ctx, stageName, readOnly, envArg);
198
204
  const { target } = (0, runtime_js_1.requireScopeRuntime)(scope);
@@ -238,4 +244,4 @@ class RunObservers {
238
244
  }
239
245
  }
240
246
  exports.RunObservers = RunObservers;
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9ydW5uZXIvYXR0YWNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRzs7O0FBRUgsOENBQTBDO0FBRTFDLG1HQUE2RjtBQUk3Rix5RUFBcUg7QUFFckgsb0RBQTBEO0FBRTFELHVFQUE2RjtBQUs3RixNQUFhLFlBQVk7SUFDdkIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLGdCQUFnQixDQUFvQztJQUNwRCxtR0FBbUc7SUFDbkcsZ0JBQWdCLENBQXdDO0lBQ3hELGFBQWEsR0FBbUIsRUFBRSxDQUFDO0lBQ25DLGNBQWMsR0FBb0IsRUFBRSxDQUFDO0lBQ3JDOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUF3QjtJQUVwQyxlQUFlLENBQUMsT0FBMEM7UUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLE9BQU87WUFBRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBdUIsRUFBRSxPQUErQjtRQUNsRSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUUsSUFBSSxPQUFPLEVBQUUsUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlFLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxVQUFVLENBQUMsUUFBc0IsRUFBRSxPQUErQjtRQUNoRSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLE9BQU8sRUFBRSxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0UsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGNBQWMsQ0FBQyxRQUEwQixFQUFFLE9BQStCO1FBQ3hFLE1BQU0sT0FBTyxHQUFHLElBQUEsd0NBQWtCLEVBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBQSw0Q0FBc0IsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxNQUFNLE9BQU8sR0FBRyxJQUFBLDRDQUFzQixFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpELDZEQUE2RDtRQUM3RCx3RUFBd0U7UUFDeEUsbUVBQW1FO1FBQ25FLGdEQUFnRDtRQUNoRCxNQUFNLFFBQVEsR0FBRyxPQUFPLEVBQUUsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDeEQsTUFBTSxXQUFXLEdBQXNDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUVuSCxpRUFBaUU7UUFDakUsMEVBQTBFO1FBQzFFLDRFQUE0RTtRQUM1RSxJQUFJLE9BQU8sSUFBSSxPQUFPO1lBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUF5QixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2pGLElBQUksT0FBTztZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBd0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVwRSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUEsc0JBQVMsR0FBRSxFQUFFLENBQUM7WUFDcEQsc0VBQXNFO1lBQ3RFLHVFQUF1RTtZQUN2RSxxRUFBcUU7WUFDckUsc0VBQXNFO1lBQ3RFLHNDQUFzQztZQUN0QyxPQUFPLENBQUMsSUFBSSxDQUNWLG1EQUFtRCxRQUFRLENBQUMsRUFBRSxRQUFRO2dCQUNwRSxtRUFBbUU7Z0JBQ25FLGlFQUFpRTtnQkFDakUsa0VBQWtFO2dCQUNsRSx5QkFBeUIsQ0FDNUIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsc0VBQXNFO0lBQ3RFLFdBQVcsQ0FBQyxFQUFVO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELHFFQUFxRTtJQUNyRSxVQUFVLENBQUMsRUFBVTtRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCx1REFBdUQ7SUFDdkQsU0FBUztRQUNQLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsUUFBUTtRQUNOLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVztRQUNULEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsQ0FBQyxjQUF1QixFQUFFLFFBQWlCO1FBQ2pELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxjQUFjLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksd0RBQXlCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMzRyxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxtQkFBbUIsQ0FDakIsV0FBaUMsRUFDakMsZUFBNEMsRUFDNUMsa0JBQStCO1FBRS9CLE1BQU0sU0FBUyxHQUFvQixFQUFFLENBQUM7UUFFdEMscUNBQXFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQ3ZDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsbUNBQW1DO1FBQ25DLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUN0QyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ3hCLEtBQUssTUFBTSxDQUFDLElBQUksU0FBUztvQkFBRSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxrRUFBa0U7UUFDbEUsdUVBQXVFO1FBQ3ZFLHFFQUFxRTtRQUNyRSx1RUFBdUU7UUFDdkUsc0VBQXNFO1FBQ3RFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLENBQUM7UUFDcEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsaUVBQWlFO1FBQ2pFLHNFQUFzRTtRQUN0RSxtRUFBbUU7UUFDbkUseURBQXlEO1FBQ3pELGdFQUFnRTtRQUNoRSxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQztZQUMvQixTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ3hCLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxTQUFpQixFQUFFLFFBQWtCLEVBQUUsTUFBWSxFQUFFLEVBQUU7WUFDeEUsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFBLGdDQUFtQixFQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlDLHFDQUFxQztZQUNyQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ25ELDJCQUEyQjtZQUMzQixLQUFLLE1BQU0sR0FBRyxJQUFJLFNBQVM7Z0JBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUF5QixDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQjtRQUNmLE1BQU0sU0FBUyxHQUFtQixFQUFFLENBQUM7UUFDckMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLENBQUM7UUFDbEQsSUFBSSxPQUFPO1lBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxPQUFPLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsc0dBQXNHO0lBQ3RHLG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDckcsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssa0JBQWtCLENBQUMsT0FBK0I7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLDhDQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUExT0Qsb0NBME9DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBhdHRhY2gg4oCUIHdobyBvYnNlcnZlcyBhIHJ1biwgYW5kIGhvdyB0aGV5IHJlYWNoIGl0IChGOSkuXG4gKlxuICogYFJ1bk9ic2VydmVyc2AgaXMgdGhlIGV4ZWN1dG9yJ3MgT05FIHJlZ2lzdGVyIG9mIG9ic2VydmVyczogdGhlIGJ1aWx0LWluXG4gKiBuYXJyYXRpdmUgcmVjb3JkZXIsIHRoZSBpbmxpbmUgc2NvcGUgYW5kIGZsb3cgbGlzdHMsIGFuZCB0aGUgZGVmZXJyZWQgdGllclxuICogKFJGQy0wMDEpLiBUaGUgZXhlY3V0b3IncyBgYXR0YWNoKlJlY29yZGVyYCBmYW1pbHkgZGVsZWdhdGVzIGhlcmU7IGVhY2ggbGVnXG4gKiAoYHJ1bigpYCAvIGByZXN1bWUoKWApIGFza3MgaXQgZm9yIHRoZSBjb21wb3NlZCBzY29wZSBmYWN0b3J5IGFuZCB0aGUgZmxvd1xuICogcmVjb3JkZXIgbGlzdCBpdCBoYW5kcyB0aGUgdHJhdmVyc2VyLlxuICpcbiAqIExhd3Mga2VwdCBoZXJlOlxuICogICAtIGFuIGlkIGxpdmVzIG9uIGV4YWN0bHkgT05FIGRlbGl2ZXJ5IHRpZXIgcGVyIGxpc3Qg4oCUIHJlLWF0dGFjaGluZyB0aGVcbiAqICAgICBzYW1lIGlkIFNXQVBTIHRpZXJzLCBuZXZlciBkb3VibGUgZGVsaXZlcnk7XG4gKiAgIC0gZXZlcnkgYXR0YWNoIGlzIGlkZW1wb3RlbnQgYnkgYGlkYCAocmVwbGFjZSwgbmV2ZXIgZHVwbGljYXRlKTtcbiAqICAgLSBlbWl0IHJlY29yZGVycyByaWRlIHRoZSBTQ09QRSBsaXN0IChgU2NvcGVGYWNhZGVgIGRpc3BhdGNoZXMgYG9uRW1pdGBcbiAqICAgICBmcm9tIHRoZSBzYW1lIHBlci1zdGFnZSBsaXN0IGFzIGBvblJlYWRgL2BvbldyaXRlYCk7XG4gKiAgIC0gYSBmbG93IGF0dGFjaCB0dXJucyB0aGUgbmFycmF0aXZlIG9uICh0aGUgZmxvdyBjaGFubmVsIG5lZWRzIGl0KS5cbiAqL1xuXG5pbXBvcnQgeyBpc0Rldk1vZGUgfSBmcm9tICcuLi9kZXZNb2RlLmpzJztcbmltcG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlck9wdGlvbnMgfSBmcm9tICcuLi9lbmdpbmUvbmFycmF0aXZlL0NvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIuanMnO1xuaW1wb3J0IHsgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlciB9IGZyb20gJy4uL2VuZ2luZS9uYXJyYXRpdmUvQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3dSZWNvcmRlciB9IGZyb20gJy4uL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTY29wZUZhY3RvcnkgfSBmcm9tICcuLi9lbmdpbmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZFJlY29yZGVyIH0gZnJvbSAnLi4vcmVjb3JkZXIvQ29tYmluZWRSZWNvcmRlci5qcyc7XG5pbXBvcnQgeyBoYXNFbWl0UmVjb3JkZXJNZXRob2RzLCBoYXNGbG93UmVjb3JkZXJNZXRob2RzLCBoYXNSZWNvcmRlck1ldGhvZHMgfSBmcm9tICcuLi9yZWNvcmRlci9Db21iaW5lZFJlY29yZGVyLmpzJztcbmltcG9ydCB0eXBlIHsgU2NvcGVSdW50aW1lVGFyZ2V0IH0gZnJvbSAnLi4vc2NvcGUvcnVudGltZS5qcyc7XG5pbXBvcnQgeyByZXF1aXJlU2NvcGVSdW50aW1lIH0gZnJvbSAnLi4vc2NvcGUvcnVudGltZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlZGFjdGlvblBvbGljeSwgU2NvcGVSZWNvcmRlciB9IGZyb20gJy4uL3Njb3BlL3R5cGVzLmpzJztcbmltcG9ydCB7IHR5cGUgQXR0YWNoUmVjb3JkZXJPcHRpb25zLCBEZWZlcnJlZE9ic2VydmVyVGllciB9IGZyb20gJy4vRGVmZXJyZWRPYnNlcnZlclRpZXIuanMnO1xuXG4vKiogQSBzdGVwIGFwcGxpZWQgdG8gZXZlcnkgc3RhZ2Ugc2NvcGUgcmlnaHQgYWZ0ZXIgdGhlIGJhc2UgZmFjdG9yeSBtYWtlcyBpdC4gKi9cbnR5cGUgU2NvcGVNb2RpZmllciA9ICh0YXJnZXQ6IFNjb3BlUnVudGltZVRhcmdldCkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIFJ1bk9ic2VydmVycyB7XG4gIG5hcnJhdGl2ZUVuYWJsZWQgPSBmYWxzZTtcbiAgbmFycmF0aXZlT3B0aW9ucz86IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXJPcHRpb25zO1xuICAvKiogVGhlIGJ1aWx0LWluIG5hcnJhdGl2ZSByZWNvcmRlciBvZiB0aGUgY3VycmVudCBsZWcgKGtlcHQgYWNyb3NzIGEgcmVzdW1lIHNvIGl0IGFjY3VtdWxhdGVzKS4gKi9cbiAgY29tYmluZWRSZWNvcmRlcjogQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlciB8IHVuZGVmaW5lZDtcbiAgZmxvd1JlY29yZGVyczogRmxvd1JlY29yZGVyW10gPSBbXTtcbiAgc2NvcGVSZWNvcmRlcnM6IFNjb3BlUmVjb3JkZXJbXSA9IFtdO1xuICAvKipcbiAgICogUkZDLTAwMSBkZWZlcnJlZC1vYnNlcnZlciB3aXJpbmcg4oCUIGNyZWF0ZWQgTEFaSUxZIG9uIHRoZSBmaXJzdFxuICAgKiBgZGVsaXZlcnk6ICdkZWZlcnJlZCdgIGF0dGFjaC4gYHVuZGVmaW5lZGAgZm9yIGV2ZXJ5IGV4ZWN1dG9yIHRoYXQgbmV2ZXJcbiAgICogb3B0cyBpbjogemVybyBhbGxvY2F0aW9uLCB6ZXJvIHBlci1ldmVudCBjb3N0LCBieXRlLWlkZW50aWNhbCBiZWhhdmlvclxuICAgKiAodGhlIGVtaXQgZmFzdC1wYXRoIHByZWNlZGVudCkuXG4gICAqL1xuICBkZWZlcnJlZFRpZXI/OiBEZWZlcnJlZE9ic2VydmVyVGllcjtcblxuICBlbmFibGVOYXJyYXRpdmUob3B0aW9ucz86IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXJPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5uYXJyYXRpdmVFbmFibGVkID0gdHJ1ZTtcbiAgICBpZiAob3B0aW9ucykgdGhpcy5uYXJyYXRpdmVPcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIGF0dGFjaFNjb3BlKHJlY29yZGVyOiBTY29wZVJlY29yZGVyLCBvcHRpb25zPzogQXR0YWNoUmVjb3JkZXJPcHRpb25zKTogdm9pZCB7XG4gICAgLy8gVGllciBzd2FwLCBib3RoIGRpcmVjdGlvbnM6IGFuIGlkIGxpdmVzIG9uIGV4YWN0bHkgT05FIHRpZXIgcGVyIGxpc3QuXG4gICAgdGhpcy5zY29wZVJlY29yZGVycyA9IHRoaXMuc2NvcGVSZWNvcmRlcnMuZmlsdGVyKChyKSA9PiByLmlkICE9PSByZWNvcmRlci5pZCk7XG4gICAgaWYgKG9wdGlvbnM/LmRlbGl2ZXJ5ID09PSAnZGVmZXJyZWQnKSB7XG4gICAgICB0aGlzLmVuc3VyZURlZmVycmVkVGllcihvcHRpb25zKS5yZWdpc3RlcihyZWNvcmRlciwgeyBzY29wZTogdHJ1ZSB9LCBvcHRpb25zKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kZWZlcnJlZFRpZXI/LnJlbW92ZUZyb21MaXN0cyhyZWNvcmRlci5pZCwgeyBzY29wZTogdHJ1ZSB9KTtcbiAgICB0aGlzLnNjb3BlUmVjb3JkZXJzLnB1c2gocmVjb3JkZXIpO1xuICB9XG5cbiAgYXR0YWNoRmxvdyhyZWNvcmRlcjogRmxvd1JlY29yZGVyLCBvcHRpb25zPzogQXR0YWNoUmVjb3JkZXJPcHRpb25zKTogdm9pZCB7XG4gICAgLy8gVGllciBzd2FwLCBib3RoIGRpcmVjdGlvbnM6IGFuIGlkIGxpdmVzIG9uIGV4YWN0bHkgT05FIHRpZXIgcGVyIGxpc3QuXG4gICAgdGhpcy5mbG93UmVjb3JkZXJzID0gdGhpcy5mbG93UmVjb3JkZXJzLmZpbHRlcigocikgPT4gci5pZCAhPT0gcmVjb3JkZXIuaWQpO1xuICAgIHRoaXMubmFycmF0aXZlRW5hYmxlZCA9IHRydWU7XG4gICAgaWYgKG9wdGlvbnM/LmRlbGl2ZXJ5ID09PSAnZGVmZXJyZWQnKSB7XG4gICAgICB0aGlzLmVuc3VyZURlZmVycmVkVGllcihvcHRpb25zKS5yZWdpc3RlcihyZWNvcmRlciwgeyBmbG93OiB0cnVlIH0sIG9wdGlvbnMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRlZmVycmVkVGllcj8ucmVtb3ZlRnJvbUxpc3RzKHJlY29yZGVyLmlkLCB7IGZsb3c6IHRydWUgfSk7XG4gICAgdGhpcy5mbG93UmVjb3JkZXJzLnB1c2gocmVjb3JkZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJvdXRlIGEgcmVjb3JkZXIgdG8gZXZlcnkgY2hhbm5lbCBpdCBoYXMgT1dOIGV2ZW50IG1ldGhvZHMgZm9yIChzZWVcbiAgICogYGhhc1JlY29yZGVyTWV0aG9kc2Ag4oCUIHByb3RvdHlwZS1jaGFpbiBtZXRob2RzIGFyZSBpZ25vcmVkIG9uIHB1cnBvc2UsXG4gICAqIGFnYWluc3QgYE9iamVjdC5wcm90b3R5cGVgIHBvbGx1dGlvbikuIElkZW1wb3RlbnQgYnkgYGlkYCBhY3Jvc3MgQUxMXG4gICAqIGNoYW5uZWxzOiBhIGNvbWJpbmVkIGF0dGFjaCByZXBsYWNlcyBhIHNpbmdsZS1jaGFubmVsIHJlZ2lzdHJhdGlvbiBvZiB0aGVcbiAgICogc2FtZSBpZCBvbiB3aGljaGV2ZXIgY2hhbm5lbChzKSB0aGUgcmVjb3JkZXIgaGFzIG1ldGhvZHMgZm9yLlxuICAgKi9cbiAgYXR0YWNoQ29tYmluZWQocmVjb3JkZXI6IENvbWJpbmVkUmVjb3JkZXIsIG9wdGlvbnM/OiBBdHRhY2hSZWNvcmRlck9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBoYXNEYXRhID0gaGFzUmVjb3JkZXJNZXRob2RzKHJlY29yZGVyKTtcbiAgICBjb25zdCBoYXNGbG93ID0gaGFzRmxvd1JlY29yZGVyTWV0aG9kcyhyZWNvcmRlcik7XG4gICAgY29uc3QgaGFzRW1pdCA9IGhhc0VtaXRSZWNvcmRlck1ldGhvZHMocmVjb3JkZXIpO1xuXG4gICAgLy8gRGVsaXZlcnkgdGllciAoUkZDLTAwMSk6IG9wdGlvbnMgYmFnIE9SIHRoZSByZWNvcmRlcidzIG93blxuICAgIC8vIGBkZWxpdmVyeTogJ2RlZmVycmVkJ2AgZmllbGQuIFRoZSBmaWVsZCBpcyBhIHN0cmluZyDigJQgY2hhbm5lbCByb3V0aW5nXG4gICAgLy8gYWJvdmUgY291bnRzIGV2ZW50LU1FVEhPRCBwcm9wZXJ0aWVzIG9ubHksIHNvIGRlY2xhcmluZyBpdCBuZXZlclxuICAgIC8vIGNoYW5nZXMgd2hpY2ggY2hhbm5lbHMgdGhlIHJlY29yZGVyIGxhbmRzIG9uLlxuICAgIGNvbnN0IGRlbGl2ZXJ5ID0gb3B0aW9ucz8uZGVsaXZlcnkgPz8gcmVjb3JkZXIuZGVsaXZlcnk7XG4gICAgY29uc3QgdGllck9wdGlvbnM6IEF0dGFjaFJlY29yZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCA9IGRlbGl2ZXJ5ID09PSB1bmRlZmluZWQgPyBvcHRpb25zIDogeyAuLi5vcHRpb25zLCBkZWxpdmVyeSB9O1xuXG4gICAgLy8gRW1pdCByZWNvcmRlcnMgbGl2ZSBvbiB0aGUgU0FNRSBjaGFubmVsIGFzIGRhdGEtZmxvdyByZWNvcmRlcnNcbiAgICAvLyAoU2NvcGVGYWNhZGUgaXRlcmF0ZXMgYF9yZWNvcmRlcnNgIGZvciBvbkVtaXQgZGlzcGF0Y2gpLiBTaG9ydC1jaXJjdWl0OlxuICAgIC8vIGlmIGhhc0RhdGEgT1IgaGFzRW1pdCwgdGhlIHJlY29yZGVyIGxhbmRzIG9uIHRoZSBzY29wZSBsaXN0IGV4YWN0bHkgb25jZS5cbiAgICBpZiAoaGFzRGF0YSB8fCBoYXNFbWl0KSB0aGlzLmF0dGFjaFNjb3BlKHJlY29yZGVyIGFzIFNjb3BlUmVjb3JkZXIsIHRpZXJPcHRpb25zKTtcbiAgICBpZiAoaGFzRmxvdykgdGhpcy5hdHRhY2hGbG93KHJlY29yZGVyIGFzIEZsb3dSZWNvcmRlciwgdGllck9wdGlvbnMpO1xuXG4gICAgaWYgKCFoYXNEYXRhICYmICFoYXNGbG93ICYmICFoYXNFbWl0ICYmIGlzRGV2TW9kZSgpKSB7XG4gICAgICAvLyBEZXYtbW9kZSBvbmx5OiBzaWxlbnQgc2tpcHMgYXJlIGludmlzaWJsZSBhbmQgcHJvZHVjZSBoYXJkLXRvLWRlYnVnXG4gICAgICAvLyBcIndoeSBkaWRuJ3QgbXkgcmVjb3JkZXIgZmlyZVwiIHJlcG9ydHMuIFBlciBsaWJyYXJ5IGNvbnZlbnRpb24sIGdhdGVkXG4gICAgICAvLyBvbiB0aGUgY2VudHJhbCBpc0Rldk1vZGUoKSBmbGFnIChub3QgcHJvY2Vzcy5lbnYpIHNvIGNvbnN1bWVycyBjYW5cbiAgICAgIC8vIGNvbnRyb2wgZGV2IHRvb2xpbmcgY2VudHJhbGx5IHZpYSBlbmFibGVEZXZNb2RlKCkvZGlzYWJsZURldk1vZGUoKS5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbZm9vdHByaW50anNdIGF0dGFjaENvbWJpbmVkUmVjb3JkZXI6IHJlY29yZGVyICcke3JlY29yZGVyLmlkfScgaGFzIGAgK1xuICAgICAgICAgICdubyBvYnNlcnZlciBldmVudCBtZXRob2RzIOKAlCBub3RoaW5nIHRvIGF0dGFjaC4gRGlkIHlvdSBmb3JnZXQgdG8gJyArXG4gICAgICAgICAgJ2FkZCBhbiBvbiogaGFuZGxlciAob25Xcml0ZSwgb25EZWNpc2lvbiwgb25TdWJmbG93RW50cnksIC4uLik/ICcgK1xuICAgICAgICAgICdOb3RlOiBvbmx5IE9XTiBwcm9wZXJ0aWVzIGNvdW50OyBtZXRob2RzIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gJyArXG4gICAgICAgICAgJ2FyZSBpZ25vcmVkIG9uIHB1cnBvc2UuJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqIERldGFjaCBldmVyeSBzY29wZSByZWNvcmRlciB3aXRoIHRoaXMgaWQg4oCUIGJvdGggZGVsaXZlcnkgdGllcnMuICovXG4gIGRldGFjaFNjb3BlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNjb3BlUmVjb3JkZXJzID0gdGhpcy5zY29wZVJlY29yZGVycy5maWx0ZXIoKHIpID0+IHIuaWQgIT09IGlkKTtcbiAgICB0aGlzLmRlZmVycmVkVGllcj8ucmVtb3ZlRnJvbUxpc3RzKGlkLCB7IHNjb3BlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqIERldGFjaCBldmVyeSBmbG93IHJlY29yZGVyIHdpdGggdGhpcyBpZCDigJQgYm90aCBkZWxpdmVyeSB0aWVycy4gKi9cbiAgZGV0YWNoRmxvdyhpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5mbG93UmVjb3JkZXJzID0gdGhpcy5mbG93UmVjb3JkZXJzLmZpbHRlcigocikgPT4gci5pZCAhPT0gaWQpO1xuICAgIHRoaXMuZGVmZXJyZWRUaWVyPy5yZW1vdmVGcm9tTGlzdHMoaWQsIHsgZmxvdzogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKiBBIGRlZmVuc2l2ZSBjb3B5IG9mIHRoZSBzY29wZSBsaXN0IChib3RoIHRpZXJzKS4gKi9cbiAgc2NvcGVMaXN0KCk6IFNjb3BlUmVjb3JkZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnNjb3BlUmVjb3JkZXJzLCAuLi4odGhpcy5kZWZlcnJlZFRpZXI/LnNjb3BlTGlzdFJlY29yZGVycygpID8/IFtdKV07XG4gIH1cblxuICAvKiogQSBkZWZlbnNpdmUgY29weSBvZiB0aGUgZmxvdyBsaXN0IChib3RoIHRpZXJzKS4gKi9cbiAgZmxvd0xpc3QoKTogRmxvd1JlY29yZGVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5mbG93UmVjb3JkZXJzLCAuLi4odGhpcy5kZWZlcnJlZFRpZXI/LmZsb3dMaXN0UmVjb3JkZXJzKCkgPz8gW10pXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGZyZXNoIGBydW4oKWAgY2xlYXJzIGV2ZXJ5IGF0dGFjaGVkIHJlY29yZGVyIChgY2xlYXIoKWApLCBzbyBzdGF0ZSBkb2VzXG4gICAqIG5vdCBhY2N1bXVsYXRlIGFjcm9zcyBydW5zLiBUaGUgbmFycmF0aXZlIHJlY29yZGVyIGlzIG5vdCBjbGVhcmVkOiBlYWNoXG4gICAqIGZyZXNoIGxlZyBidWlsZHMgYSBuZXcgb25lICh7QGxpbmsgc3RhcnRMZWd9KS5cbiAgICovXG4gIGNsZWFyRm9yUnVuKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgciBvZiB0aGlzLmZsb3dSZWNvcmRlcnMpIHtcbiAgICAgIHIuY2xlYXI/LigpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHIgb2YgdGhpcy5zY29wZVJlY29yZGVycykge1xuICAgICAgci5jbGVhcj8uKCk7XG4gICAgfVxuICAgIHRoaXMuZGVmZXJyZWRUaWVyPy5jbGVhclJlY29yZGVycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gYSBsZWc6IGEgZnJlc2ggbmFycmF0aXZlIHJlY29yZGVyIHdoZW4gdGhlIG5hcnJhdGl2ZSBpcyBvbiwgbm9uZSB3aGVuXG4gICAqIGl0IGlzIG9mZiDigJQgb3IsIG9uIGEgcmVzdW1lIChgcHJlc2VydmVgKSwgdGhlIGV4aXN0aW5nIG9uZSwgc28gdGhlXG4gICAqIG5hcnJhdGl2ZSBhY2N1bXVsYXRlcyBhY3Jvc3MgdGhlIHBhdXNlLiBBIGZyZXNoIGV4ZWN1dG9yIGhhcyBubyByZWNvcmRlclxuICAgKiB0byBwcmVzZXJ2ZSBhbmQgc3RhcnRzIG9uZSBmb3IgdGhlIHJlc3VtZWQgbGVnIG9ubHkuXG4gICAqIFJldHVybnMgdGhlIGxlZydzIG5hcnJhdGl2ZSBmbGFnLlxuICAgKi9cbiAgc3RhcnRMZWcoY2hhcnROYXJyYXRpdmU6IGJvb2xlYW4sIHByZXNlcnZlOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmFycmF0aXZlRmxhZyA9IHRoaXMubmFycmF0aXZlRW5hYmxlZCB8fCBjaGFydE5hcnJhdGl2ZTtcbiAgICBpZiAoIXByZXNlcnZlIHx8ICF0aGlzLmNvbWJpbmVkUmVjb3JkZXIpIHtcbiAgICAgIHRoaXMuY29tYmluZWRSZWNvcmRlciA9IG5hcnJhdGl2ZUZsYWcgPyBuZXcgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlcih0aGlzLm5hcnJhdGl2ZU9wdGlvbnMpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gbmFycmF0aXZlRmxhZztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGVnJ3Mgc2NvcGUgZmFjdG9yeTogdGhlIGJhc2UgZmFjdG9yeSwgdGhlbiBldmVyeSBzY29wZSBtb2RpZmllciBpbiBPTkVcbiAgICogZmxhdCBwYXNzIOKAlCB0aGUgbmFycmF0aXZlIHJlY29yZGVyLCB0aGUgdXNlcidzIHNjb3BlIHJlY29yZGVycywgdGhlXG4gICAqIGRlZmVycmVkIHRpZXIncyBzY29wZSB0YXAsIHRoZSByZWRhY3Rpb24gcG9saWN5LlxuICAgKlxuICAgKiBUaGUgbWFya2VkLWtleXMgc2V0IGlzIEFMV0FZUyB3aXJlZCAoYSBzdGFnZSBjYW4gY2FsbFxuICAgKiBgc2V0VmFsdWUoa2V5LCB2YWwsIHRydWUpYCBmb3IgcGVyLWNhbGwgcmVkYWN0aW9uIHdpdGhvdXQgYW55IHBvbGljeSkuXG4gICAqL1xuICBjb21wb3NlU2NvcGVGYWN0b3J5PFRTY29wZT4oXG4gICAgYmFzZUZhY3Rvcnk6IFNjb3BlRmFjdG9yeTxUU2NvcGU+LFxuICAgIHJlZGFjdGlvblBvbGljeTogUmVkYWN0aW9uUG9saWN5IHwgdW5kZWZpbmVkLFxuICAgIHNoYXJlZFJlZGFjdGVkS2V5czogU2V0PHN0cmluZz4sXG4gICk6IFNjb3BlRmFjdG9yeTxUU2NvcGU+IHtcbiAgICBjb25zdCBtb2RpZmllcnM6IFNjb3BlTW9kaWZpZXJbXSA9IFtdO1xuXG4gICAgLy8gMS4gTmFycmF0aXZlIHJlY29yZGVyIChpZiBlbmFibGVkKVxuICAgIGlmICh0aGlzLmNvbWJpbmVkUmVjb3JkZXIpIHtcbiAgICAgIGNvbnN0IHJlY29yZGVyID0gdGhpcy5jb21iaW5lZFJlY29yZGVyO1xuICAgICAgbW9kaWZpZXJzLnB1c2goKHRhcmdldCkgPT4ge1xuICAgICAgICB0YXJnZXQuYXR0YWNoU2NvcGVSZWNvcmRlcj8uKHJlY29yZGVyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIDIuIFVzZXItcHJvdmlkZWQgc2NvcGUgcmVjb3JkZXJzXG4gICAgaWYgKHRoaXMuc2NvcGVSZWNvcmRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcmVjb3JkZXJzID0gdGhpcy5zY29wZVJlY29yZGVycztcbiAgICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCByIG9mIHJlY29yZGVycykgdGFyZ2V0LmF0dGFjaFNjb3BlUmVjb3JkZXI/LihyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIDJiLiBEZWZlcnJlZC1vYnNlcnZlciBzY29wZSB0YXAgKFJGQy0wMDEgQmxvY2sgNykg4oCUIGEgc3ludGhldGljXG4gICAgLy8gcmVjb3JkZXIgd2hvc2UgaG9va3MgQ0FQVFVSRSBpbnRvIHRoZSBib3VuZGVkIHF1ZXVlIGluc3RlYWQgb2YgZG9pbmdcbiAgICAvLyBvYnNlcnZlciB3b3JrLiBJdCByaWRlcyB0aGUgc2FtZSBwZXItc3RhZ2UgcmVjb3JkZXIgbGlzdCBhcyBpbmxpbmVcbiAgICAvLyByZWNvcmRlcnMsIHNvIGl0IHJlY2VpdmVzIGV4YWN0bHkgdGhlIHBvc3QtcmVkYWN0aW9uIGV2ZW50cyB0aGV5IGRvLlxuICAgIC8vIEFic2VudCAoemVybyB3b3JrLCBpZGVudGljYWwgbGlzdCkgd2hlbiBub2JvZHkgb3B0ZWQgaW50byBkZWZlcnJhbC5cbiAgICBjb25zdCBzY29wZVRhcCA9IHRoaXMuZGVmZXJyZWRUaWVyPy5idWlsZFNjb3BlVGFwKCk7XG4gICAgaWYgKHNjb3BlVGFwKSB7XG4gICAgICBtb2RpZmllcnMucHVzaCgodGFyZ2V0KSA9PiB7XG4gICAgICAgIHRhcmdldC5hdHRhY2hTY29wZVJlY29yZGVyPy4oc2NvcGVUYXApO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gMy4gUmVkYWN0aW9uIHBvbGljeSAoY29uZGl0aW9uYWwg4oCUIG9ubHkgd2hlbiBwb2xpY3kgaXMgc2V0KS4gQVxuICAgIC8vIGBTY29wZUZhY2FkZWAgYWxyZWFkeSByZWFkcyB0aGUgcnVuJ3MgcnVsZSB0aHJvdWdoIGl0cyBjb250ZXh0ICh0aGVcbiAgICAvLyBydWxlIGlzIGluc3RhbGxlZCBvbiB0aGUgcnVudGltZSByb290KTsgdGhpcyBjYWxsIHN1cHBsaWVzIGl0IHRvXG4gICAgLy8gZXhwbGljaXRseSByZWdpc3RlcmVkIGN1c3RvbSBwb3J0cywgYW5kIG9uIGEgZmFjYWRlIGl0XG4gICAgLy8gcmUtc3RhdGVzIHRoZSBleGVjdXRvcidzIHBvbGljeSBvbiB0aGUgc2hhcmVkIHJ1bGUgKGEgbm8tb3ApLlxuICAgIGlmIChyZWRhY3Rpb25Qb2xpY3kpIHtcbiAgICAgIGNvbnN0IHBvbGljeSA9IHJlZGFjdGlvblBvbGljeTtcbiAgICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgICAgdGFyZ2V0LnVzZVJlZGFjdGlvblBvbGljeT8uKHBvbGljeSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gKChjdHg6IGFueSwgc3RhZ2VOYW1lOiBzdHJpbmcsIHJlYWRPbmx5PzogdW5rbm93biwgZW52QXJnPzogYW55KSA9PiB7XG4gICAgICBjb25zdCBzY29wZSA9IGJhc2VGYWN0b3J5KGN0eCwgc3RhZ2VOYW1lLCByZWFkT25seSwgZW52QXJnKTtcbiAgICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSByZXF1aXJlU2NvcGVSdW50aW1lKHNjb3BlKTtcbiAgICAgIC8vIEFsd2F5cyB3aXJlIHNoYXJlZCByZWRhY3Rpb24gc3RhdGVcbiAgICAgIHRhcmdldC51c2VTaGFyZWRSZWRhY3RlZEtleXM/LihzaGFyZWRSZWRhY3RlZEtleXMpO1xuICAgICAgLy8gQXBwbHkgb3B0aW9uYWwgbW9kaWZpZXJzXG4gICAgICBmb3IgKGNvbnN0IG1vZCBvZiBtb2RpZmllcnMpIG1vZCh0YXJnZXQpO1xuICAgICAgcmV0dXJuIHNjb3BlO1xuICAgIH0pIGFzIFNjb3BlRmFjdG9yeTxUU2NvcGU+O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBsZWcncyBmbG93IHJlY29yZGVyczogdGhlIG5hcnJhdGl2ZSByZWNvcmRlciAod2hlbiBvbiksIHRoZSB1c2VyJ3NcbiAgICogZmxvdyByZWNvcmRlcnMsIHRoZW4gdGhlIGRlZmVycmVkIHRpZXIncyBmbG93IHRhcCAoUkZDLTAwMSBCbG9jayA3KSDigJRcbiAgICogYXBwZW5kZWQgbGlrZSBhbnkgb3RoZXIgZmxvdyByZWNvcmRlciwgc28gdGhlIGRpc3BhdGNoZXIgbmVlZHMgbm8gdGllclxuICAgKiBsb2dpYyBvZiBpdHMgb3duLiBgdW5kZWZpbmVkYCB3aGVuIHRoZXJlIGFyZSBub25lLlxuICAgKi9cbiAgZmxvd1JlY29yZGVyc0xpc3QoKTogRmxvd1JlY29yZGVyW10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHJlY29yZGVyczogRmxvd1JlY29yZGVyW10gPSBbXTtcbiAgICBpZiAodGhpcy5jb21iaW5lZFJlY29yZGVyKSB7XG4gICAgICByZWNvcmRlcnMucHVzaCh0aGlzLmNvbWJpbmVkUmVjb3JkZXIpO1xuICAgIH1cbiAgICByZWNvcmRlcnMucHVzaCguLi50aGlzLmZsb3dSZWNvcmRlcnMpO1xuICAgIGNvbnN0IGZsb3dUYXAgPSB0aGlzLmRlZmVycmVkVGllcj8uYnVpbGRGbG93VGFwKCk7XG4gICAgaWYgKGZsb3dUYXApIHJlY29yZGVycy5wdXNoKGZsb3dUYXApO1xuICAgIHJldHVybiByZWNvcmRlcnMubGVuZ3RoID4gMCA/IHJlY29yZGVycyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBUaGUgaW5saW5lIGZsb3cgbGlzdGVuZXJzIG9mIGFuIGV4ZWN1dG9yLW1hZGUgZXZlbnQgKGBvblJlc3VtZWApOiB0aGUgbmFycmF0aXZlIHJlY29yZGVyIGZpcnN0LiAqL1xuICBpbmxpbmVGbG93TGlzdGVuZXJzKCk6IEZsb3dSZWNvcmRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5jb21iaW5lZFJlY29yZGVyID8gW3RoaXMuY29tYmluZWRSZWNvcmRlciwgLi4udGhpcy5mbG93UmVjb3JkZXJzXSA6IHRoaXMuZmxvd1JlY29yZGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBMYXppbHkgY3JlYXRlIHRoZSBleGVjdXRvcidzIE9ORSBkZWZlcnJlZC1vYnNlcnZlciB0aWVyIChvbmUgbWVyZ2VkXG4gICAqIHF1ZXVlLCB0b3RhbCBldmVudCBvcmRlciBhY3Jvc3MgYWxsIHRocmVlIGNoYW5uZWxzKS4gVGhlIEZJUlNUIGRlZmVycmVkXG4gICAqIGF0dGFjaCdzIG9wdGlvbnMgY29uZmlndXJlIHRoZSBkaXNwYXRjaGVyOyBsYXRlciBkaWZmZXJpbmcgb3B0aW9ucyBhcmVcbiAgICogZGV2LXdhcm5lZCBhbmQgaWdub3JlZCAoc2VlIGBBdHRhY2hSZWNvcmRlck9wdGlvbnNgKS5cbiAgICovXG4gIHByaXZhdGUgZW5zdXJlRGVmZXJyZWRUaWVyKG9wdGlvbnM/OiBBdHRhY2hSZWNvcmRlck9wdGlvbnMpOiBEZWZlcnJlZE9ic2VydmVyVGllciB7XG4gICAgaWYgKCF0aGlzLmRlZmVycmVkVGllcikgdGhpcy5kZWZlcnJlZFRpZXIgPSBuZXcgRGVmZXJyZWRPYnNlcnZlclRpZXIob3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuZGVmZXJyZWRUaWVyO1xuICB9XG59XG4iXX0=
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9ydW5uZXIvYXR0YWNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRzs7O0FBR0gsOENBQTBDO0FBRTFDLG1HQUE2RjtBQUk3Rix5RUFBcUg7QUFFckgsb0RBQTBEO0FBRTFELHVFQUE2RjtBQUs3RixNQUFhLFlBQVk7SUFDdkIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLGdCQUFnQixDQUFvQztJQUNwRCxtR0FBbUc7SUFDbkcsZ0JBQWdCLENBQXdDO0lBQ3hELGFBQWEsR0FBbUIsRUFBRSxDQUFDO0lBQ25DLGNBQWMsR0FBb0IsRUFBRSxDQUFDO0lBQ3JDOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUF3QjtJQUVwQyxlQUFlLENBQUMsT0FBMEM7UUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLE9BQU87WUFBRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBdUIsRUFBRSxPQUErQjtRQUNsRSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUUsSUFBSSxPQUFPLEVBQUUsUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlFLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsUUFB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QyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBeUIsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUI7UUFDZixNQUFNLFNBQVMsR0FBbUIsRUFBRSxDQUFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxDQUFDO1FBQ2xELElBQUksT0FBTztZQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsT0FBTyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdEQsQ0FBQztJQUVELHNHQUFzRztJQUN0RyxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3JHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGtCQUFrQixDQUFDLE9BQStCO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSw4Q0FBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztDQUNGO0FBbFBELG9DQWtQQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYXR0YWNoIOKAlCB3aG8gb2JzZXJ2ZXMgYSBydW4sIGFuZCBob3cgdGhleSByZWFjaCBpdCAoRjkpLlxuICpcbiAqIGBSdW5PYnNlcnZlcnNgIGlzIHRoZSBleGVjdXRvcidzIE9ORSByZWdpc3RlciBvZiBvYnNlcnZlcnM6IHRoZSBidWlsdC1pblxuICogbmFycmF0aXZlIHJlY29yZGVyLCB0aGUgaW5saW5lIHNjb3BlIGFuZCBmbG93IGxpc3RzLCBhbmQgdGhlIGRlZmVycmVkIHRpZXJcbiAqIChSRkMtMDAxKS4gVGhlIGV4ZWN1dG9yJ3MgYGF0dGFjaCpSZWNvcmRlcmAgZmFtaWx5IGRlbGVnYXRlcyBoZXJlOyBlYWNoIGxlZ1xuICogKGBydW4oKWAgLyBgcmVzdW1lKClgKSBhc2tzIGl0IGZvciB0aGUgY29tcG9zZWQgc2NvcGUgZmFjdG9yeSBhbmQgdGhlIGZsb3dcbiAqIHJlY29yZGVyIGxpc3QgaXQgaGFuZHMgdGhlIHRyYXZlcnNlci5cbiAqXG4gKiBMYXdzIGtlcHQgaGVyZTpcbiAqICAgLSBhbiBpZCBsaXZlcyBvbiBleGFjdGx5IE9ORSBkZWxpdmVyeSB0aWVyIHBlciBsaXN0IOKAlCByZS1hdHRhY2hpbmcgdGhlXG4gKiAgICAgc2FtZSBpZCBTV0FQUyB0aWVycywgbmV2ZXIgZG91YmxlIGRlbGl2ZXJ5O1xuICogICAtIGV2ZXJ5IGF0dGFjaCBpcyBpZGVtcG90ZW50IGJ5IGBpZGAgKHJlcGxhY2UsIG5ldmVyIGR1cGxpY2F0ZSk7XG4gKiAgIC0gZW1pdCByZWNvcmRlcnMgcmlkZSB0aGUgU0NPUEUgbGlzdCAoYFNjb3BlRmFjYWRlYCBkaXNwYXRjaGVzIGBvbkVtaXRgXG4gKiAgICAgZnJvbSB0aGUgc2FtZSBwZXItc3RhZ2UgbGlzdCBhcyBgb25SZWFkYC9gb25Xcml0ZWApO1xuICogICAtIGEgZmxvdyBhdHRhY2ggdHVybnMgdGhlIG5hcnJhdGl2ZSBvbiAodGhlIGZsb3cgY2hhbm5lbCBuZWVkcyBpdCkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdW5Db3JyZWxhdGlvbiB9IGZyb20gJy4uL2F0dGVtcHQvdHlwZXMuanMnO1xuaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnLi4vZGV2TW9kZS5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXJPcHRpb25zIH0gZnJvbSAnLi4vZW5naW5lL25hcnJhdGl2ZS9Db21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyLmpzJztcbmltcG9ydCB7IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIgfSBmcm9tICcuLi9lbmdpbmUvbmFycmF0aXZlL0NvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBGbG93UmVjb3JkZXIgfSBmcm9tICcuLi9lbmdpbmUvbmFycmF0aXZlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU2NvcGVGYWN0b3J5IH0gZnJvbSAnLi4vZW5naW5lL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgQ29tYmluZWRSZWNvcmRlciB9IGZyb20gJy4uL3JlY29yZGVyL0NvbWJpbmVkUmVjb3JkZXIuanMnO1xuaW1wb3J0IHsgaGFzRW1pdFJlY29yZGVyTWV0aG9kcywgaGFzRmxvd1JlY29yZGVyTWV0aG9kcywgaGFzUmVjb3JkZXJNZXRob2RzIH0gZnJvbSAnLi4vcmVjb3JkZXIvQ29tYmluZWRSZWNvcmRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNjb3BlUnVudGltZVRhcmdldCB9IGZyb20gJy4uL3Njb3BlL3J1bnRpbWUuanMnO1xuaW1wb3J0IHsgcmVxdWlyZVNjb3BlUnVudGltZSB9IGZyb20gJy4uL3Njb3BlL3J1bnRpbWUuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWRhY3Rpb25Qb2xpY3ksIFNjb3BlUmVjb3JkZXIgfSBmcm9tICcuLi9zY29wZS90eXBlcy5qcyc7XG5pbXBvcnQgeyB0eXBlIEF0dGFjaFJlY29yZGVyT3B0aW9ucywgRGVmZXJyZWRPYnNlcnZlclRpZXIgfSBmcm9tICcuL0RlZmVycmVkT2JzZXJ2ZXJUaWVyLmpzJztcblxuLyoqIEEgc3RlcCBhcHBsaWVkIHRvIGV2ZXJ5IHN0YWdlIHNjb3BlIHJpZ2h0IGFmdGVyIHRoZSBiYXNlIGZhY3RvcnkgbWFrZXMgaXQuICovXG50eXBlIFNjb3BlTW9kaWZpZXIgPSAodGFyZ2V0OiBTY29wZVJ1bnRpbWVUYXJnZXQpID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBSdW5PYnNlcnZlcnMge1xuICBuYXJyYXRpdmVFbmFibGVkID0gZmFsc2U7XG4gIG5hcnJhdGl2ZU9wdGlvbnM/OiBDb21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyT3B0aW9ucztcbiAgLyoqIFRoZSBidWlsdC1pbiBuYXJyYXRpdmUgcmVjb3JkZXIgb2YgdGhlIGN1cnJlbnQgbGVnIChrZXB0IGFjcm9zcyBhIHJlc3VtZSBzbyBpdCBhY2N1bXVsYXRlcykuICovXG4gIGNvbWJpbmVkUmVjb3JkZXI6IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIgfCB1bmRlZmluZWQ7XG4gIGZsb3dSZWNvcmRlcnM6IEZsb3dSZWNvcmRlcltdID0gW107XG4gIHNjb3BlUmVjb3JkZXJzOiBTY29wZVJlY29yZGVyW10gPSBbXTtcbiAgLyoqXG4gICAqIFJGQy0wMDEgZGVmZXJyZWQtb2JzZXJ2ZXIgd2lyaW5nIOKAlCBjcmVhdGVkIExBWklMWSBvbiB0aGUgZmlyc3RcbiAgICogYGRlbGl2ZXJ5OiAnZGVmZXJyZWQnYCBhdHRhY2guIGB1bmRlZmluZWRgIGZvciBldmVyeSBleGVjdXRvciB0aGF0IG5ldmVyXG4gICAqIG9wdHMgaW46IHplcm8gYWxsb2NhdGlvbiwgemVybyBwZXItZXZlbnQgY29zdCwgYnl0ZS1pZGVudGljYWwgYmVoYXZpb3JcbiAgICogKHRoZSBlbWl0IGZhc3QtcGF0aCBwcmVjZWRlbnQpLlxuICAgKi9cbiAgZGVmZXJyZWRUaWVyPzogRGVmZXJyZWRPYnNlcnZlclRpZXI7XG5cbiAgZW5hYmxlTmFycmF0aXZlKG9wdGlvbnM/OiBDb21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMubmFycmF0aXZlRW5hYmxlZCA9IHRydWU7XG4gICAgaWYgKG9wdGlvbnMpIHRoaXMubmFycmF0aXZlT3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBhdHRhY2hTY29wZShyZWNvcmRlcjogU2NvcGVSZWNvcmRlciwgb3B0aW9ucz86IEF0dGFjaFJlY29yZGVyT3B0aW9ucyk6IHZvaWQge1xuICAgIC8vIFRpZXIgc3dhcCwgYm90aCBkaXJlY3Rpb25zOiBhbiBpZCBsaXZlcyBvbiBleGFjdGx5IE9ORSB0aWVyIHBlciBsaXN0LlxuICAgIHRoaXMuc2NvcGVSZWNvcmRlcnMgPSB0aGlzLnNjb3BlUmVjb3JkZXJzLmZpbHRlcigocikgPT4gci5pZCAhPT0gcmVjb3JkZXIuaWQpO1xuICAgIGlmIChvcHRpb25zPy5kZWxpdmVyeSA9PT0gJ2RlZmVycmVkJykge1xuICAgICAgdGhpcy5lbnN1cmVEZWZlcnJlZFRpZXIob3B0aW9ucykucmVnaXN0ZXIocmVjb3JkZXIsIHsgc2NvcGU6IHRydWUgfSwgb3B0aW9ucyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGVmZXJyZWRUaWVyPy5yZW1vdmVGcm9tTGlzdHMocmVjb3JkZXIuaWQsIHsgc2NvcGU6IHRydWUgfSk7XG4gICAgdGhpcy5zY29wZVJlY29yZGVycy5wdXNoKHJlY29yZGVyKTtcbiAgfVxuXG4gIGF0dGFjaEZsb3cocmVjb3JkZXI6IEZsb3dSZWNvcmRlciwgb3B0aW9ucz86IEF0dGFjaFJlY29yZGVyT3B0aW9ucyk6IHZvaWQge1xuICAgIC8vIFRpZXIgc3dhcCwgYm90aCBkaXJlY3Rpb25zOiBhbiBpZCBsaXZlcyBvbiBleGFjdGx5IE9ORSB0aWVyIHBlciBsaXN0LlxuICAgIHRoaXMuZmxvd1JlY29yZGVycyA9IHRoaXMuZmxvd1JlY29yZGVycy5maWx0ZXIoKHIpID0+IHIuaWQgIT09IHJlY29yZGVyLmlkKTtcbiAgICB0aGlzLm5hcnJhdGl2ZUVuYWJsZWQgPSB0cnVlO1xuICAgIGlmIChvcHRpb25zPy5kZWxpdmVyeSA9PT0gJ2RlZmVycmVkJykge1xuICAgICAgdGhpcy5lbnN1cmVEZWZlcnJlZFRpZXIob3B0aW9ucykucmVnaXN0ZXIocmVjb3JkZXIsIHsgZmxvdzogdHJ1ZSB9LCBvcHRpb25zKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kZWZlcnJlZFRpZXI/LnJlbW92ZUZyb21MaXN0cyhyZWNvcmRlci5pZCwgeyBmbG93OiB0cnVlIH0pO1xuICAgIHRoaXMuZmxvd1JlY29yZGVycy5wdXNoKHJlY29yZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSb3V0ZSBhIHJlY29yZGVyIHRvIGV2ZXJ5IGNoYW5uZWwgaXQgaGFzIE9XTiBldmVudCBtZXRob2RzIGZvciAoc2VlXG4gICAqIGBoYXNSZWNvcmRlck1ldGhvZHNgIOKAlCBwcm90b3R5cGUtY2hhaW4gbWV0aG9kcyBhcmUgaWdub3JlZCBvbiBwdXJwb3NlLFxuICAgKiBhZ2FpbnN0IGBPYmplY3QucHJvdG90eXBlYCBwb2xsdXRpb24pLiBJZGVtcG90ZW50IGJ5IGBpZGAgYWNyb3NzIEFMTFxuICAgKiBjaGFubmVsczogYSBjb21iaW5lZCBhdHRhY2ggcmVwbGFjZXMgYSBzaW5nbGUtY2hhbm5lbCByZWdpc3RyYXRpb24gb2YgdGhlXG4gICAqIHNhbWUgaWQgb24gd2hpY2hldmVyIGNoYW5uZWwocykgdGhlIHJlY29yZGVyIGhhcyBtZXRob2RzIGZvci5cbiAgICovXG4gIGF0dGFjaENvbWJpbmVkKHJlY29yZGVyOiBDb21iaW5lZFJlY29yZGVyLCBvcHRpb25zPzogQXR0YWNoUmVjb3JkZXJPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgaGFzRGF0YSA9IGhhc1JlY29yZGVyTWV0aG9kcyhyZWNvcmRlcik7XG4gICAgY29uc3QgaGFzRmxvdyA9IGhhc0Zsb3dSZWNvcmRlck1ldGhvZHMocmVjb3JkZXIpO1xuICAgIGNvbnN0IGhhc0VtaXQgPSBoYXNFbWl0UmVjb3JkZXJNZXRob2RzKHJlY29yZGVyKTtcblxuICAgIC8vIERlbGl2ZXJ5IHRpZXIgKFJGQy0wMDEpOiBvcHRpb25zIGJhZyBPUiB0aGUgcmVjb3JkZXIncyBvd25cbiAgICAvLyBgZGVsaXZlcnk6ICdkZWZlcnJlZCdgIGZpZWxkLiBUaGUgZmllbGQgaXMgYSBzdHJpbmcg4oCUIGNoYW5uZWwgcm91dGluZ1xuICAgIC8vIGFib3ZlIGNvdW50cyBldmVudC1NRVRIT0QgcHJvcGVydGllcyBvbmx5LCBzbyBkZWNsYXJpbmcgaXQgbmV2ZXJcbiAgICAvLyBjaGFuZ2VzIHdoaWNoIGNoYW5uZWxzIHRoZSByZWNvcmRlciBsYW5kcyBvbi5cbiAgICBjb25zdCBkZWxpdmVyeSA9IG9wdGlvbnM/LmRlbGl2ZXJ5ID8/IHJlY29yZGVyLmRlbGl2ZXJ5O1xuICAgIGNvbnN0IHRpZXJPcHRpb25zOiBBdHRhY2hSZWNvcmRlck9wdGlvbnMgfCB1bmRlZmluZWQgPSBkZWxpdmVyeSA9PT0gdW5kZWZpbmVkID8gb3B0aW9ucyA6IHsgLi4ub3B0aW9ucywgZGVsaXZlcnkgfTtcblxuICAgIC8vIEVtaXQgcmVjb3JkZXJzIGxpdmUgb24gdGhlIFNBTUUgY2hhbm5lbCBhcyBkYXRhLWZsb3cgcmVjb3JkZXJzXG4gICAgLy8gKFNjb3BlRmFjYWRlIGl0ZXJhdGVzIGBfcmVjb3JkZXJzYCBmb3Igb25FbWl0IGRpc3BhdGNoKS4gU2hvcnQtY2lyY3VpdDpcbiAgICAvLyBpZiBoYXNEYXRhIE9SIGhhc0VtaXQsIHRoZSByZWNvcmRlciBsYW5kcyBvbiB0aGUgc2NvcGUgbGlzdCBleGFjdGx5IG9uY2UuXG4gICAgaWYgKGhhc0RhdGEgfHwgaGFzRW1pdCkgdGhpcy5hdHRhY2hTY29wZShyZWNvcmRlciBhcyBTY29wZVJlY29yZGVyLCB0aWVyT3B0aW9ucyk7XG4gICAgaWYgKGhhc0Zsb3cpIHRoaXMuYXR0YWNoRmxvdyhyZWNvcmRlciBhcyBGbG93UmVjb3JkZXIsIHRpZXJPcHRpb25zKTtcblxuICAgIGlmICghaGFzRGF0YSAmJiAhaGFzRmxvdyAmJiAhaGFzRW1pdCAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgLy8gRGV2LW1vZGUgb25seTogc2lsZW50IHNraXBzIGFyZSBpbnZpc2libGUgYW5kIHByb2R1Y2UgaGFyZC10by1kZWJ1Z1xuICAgICAgLy8gXCJ3aHkgZGlkbid0IG15IHJlY29yZGVyIGZpcmVcIiByZXBvcnRzLiBQZXIgbGlicmFyeSBjb252ZW50aW9uLCBnYXRlZFxuICAgICAgLy8gb24gdGhlIGNlbnRyYWwgaXNEZXZNb2RlKCkgZmxhZyAobm90IHByb2Nlc3MuZW52KSBzbyBjb25zdW1lcnMgY2FuXG4gICAgICAvLyBjb250cm9sIGRldiB0b29saW5nIGNlbnRyYWxseSB2aWEgZW5hYmxlRGV2TW9kZSgpL2Rpc2FibGVEZXZNb2RlKCkuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW2Zvb3RwcmludGpzXSBhdHRhY2hDb21iaW5lZFJlY29yZGVyOiByZWNvcmRlciAnJHtyZWNvcmRlci5pZH0nIGhhcyBgICtcbiAgICAgICAgICAnbm8gb2JzZXJ2ZXIgZXZlbnQgbWV0aG9kcyDigJQgbm90aGluZyB0byBhdHRhY2guIERpZCB5b3UgZm9yZ2V0IHRvICcgK1xuICAgICAgICAgICdhZGQgYW4gb24qIGhhbmRsZXIgKG9uV3JpdGUsIG9uRGVjaXNpb24sIG9uU3ViZmxvd0VudHJ5LCAuLi4pPyAnICtcbiAgICAgICAgICAnTm90ZTogb25seSBPV04gcHJvcGVydGllcyBjb3VudDsgbWV0aG9kcyBvbiB0aGUgcHJvdG90eXBlIGNoYWluICcgK1xuICAgICAgICAgICdhcmUgaWdub3JlZCBvbiBwdXJwb3NlLicsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBEZXRhY2ggZXZlcnkgc2NvcGUgcmVjb3JkZXIgd2l0aCB0aGlzIGlkIOKAlCBib3RoIGRlbGl2ZXJ5IHRpZXJzLiAqL1xuICBkZXRhY2hTY29wZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zY29wZVJlY29yZGVycyA9IHRoaXMuc2NvcGVSZWNvcmRlcnMuZmlsdGVyKChyKSA9PiByLmlkICE9PSBpZCk7XG4gICAgdGhpcy5kZWZlcnJlZFRpZXI/LnJlbW92ZUZyb21MaXN0cyhpZCwgeyBzY29wZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKiBEZXRhY2ggZXZlcnkgZmxvdyByZWNvcmRlciB3aXRoIHRoaXMgaWQg4oCUIGJvdGggZGVsaXZlcnkgdGllcnMuICovXG4gIGRldGFjaEZsb3coaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmxvd1JlY29yZGVycyA9IHRoaXMuZmxvd1JlY29yZGVycy5maWx0ZXIoKHIpID0+IHIuaWQgIT09IGlkKTtcbiAgICB0aGlzLmRlZmVycmVkVGllcj8ucmVtb3ZlRnJvbUxpc3RzKGlkLCB7IGZsb3c6IHRydWUgfSk7XG4gIH1cblxuICAvKiogQSBkZWZlbnNpdmUgY29weSBvZiB0aGUgc2NvcGUgbGlzdCAoYm90aCB0aWVycykuICovXG4gIHNjb3BlTGlzdCgpOiBTY29wZVJlY29yZGVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5zY29wZVJlY29yZGVycywgLi4uKHRoaXMuZGVmZXJyZWRUaWVyPy5zY29wZUxpc3RSZWNvcmRlcnMoKSA/PyBbXSldO1xuICB9XG5cbiAgLyoqIEEgZGVmZW5zaXZlIGNvcHkgb2YgdGhlIGZsb3cgbGlzdCAoYm90aCB0aWVycykuICovXG4gIGZsb3dMaXN0KCk6IEZsb3dSZWNvcmRlcltdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuZmxvd1JlY29yZGVycywgLi4uKHRoaXMuZGVmZXJyZWRUaWVyPy5mbG93TGlzdFJlY29yZGVycygpID8/IFtdKV07XG4gIH1cblxuICAvKipcbiAgICogQSBmcmVzaCBgcnVuKClgIGNsZWFycyBldmVyeSBhdHRhY2hlZCByZWNvcmRlciAoYGNsZWFyKClgKSwgc28gc3RhdGUgZG9lc1xuICAgKiBub3QgYWNjdW11bGF0ZSBhY3Jvc3MgcnVucy4gVGhlIG5hcnJhdGl2ZSByZWNvcmRlciBpcyBub3QgY2xlYXJlZDogZWFjaFxuICAgKiBmcmVzaCBsZWcgYnVpbGRzIGEgbmV3IG9uZSAoe0BsaW5rIHN0YXJ0TGVnfSkuXG4gICAqL1xuICBjbGVhckZvclJ1bigpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHIgb2YgdGhpcy5mbG93UmVjb3JkZXJzKSB7XG4gICAgICByLmNsZWFyPy4oKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCByIG9mIHRoaXMuc2NvcGVSZWNvcmRlcnMpIHtcbiAgICAgIHIuY2xlYXI/LigpO1xuICAgIH1cbiAgICB0aGlzLmRlZmVycmVkVGllcj8uY2xlYXJSZWNvcmRlcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIGEgbGVnOiBhIGZyZXNoIG5hcnJhdGl2ZSByZWNvcmRlciB3aGVuIHRoZSBuYXJyYXRpdmUgaXMgb24sIG5vbmUgd2hlblxuICAgKiBpdCBpcyBvZmYg4oCUIG9yLCBvbiBhIHJlc3VtZSAoYHByZXNlcnZlYCksIHRoZSBleGlzdGluZyBvbmUsIHNvIHRoZVxuICAgKiBuYXJyYXRpdmUgYWNjdW11bGF0ZXMgYWNyb3NzIHRoZSBwYXVzZS4gQSBmcmVzaCBleGVjdXRvciBoYXMgbm8gcmVjb3JkZXJcbiAgICogdG8gcHJlc2VydmUgYW5kIHN0YXJ0cyBvbmUgZm9yIHRoZSByZXN1bWVkIGxlZyBvbmx5LlxuICAgKiBSZXR1cm5zIHRoZSBsZWcncyBuYXJyYXRpdmUgZmxhZy5cbiAgICovXG4gIHN0YXJ0TGVnKGNoYXJ0TmFycmF0aXZlOiBib29sZWFuLCBwcmVzZXJ2ZTogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5hcnJhdGl2ZUZsYWcgPSB0aGlzLm5hcnJhdGl2ZUVuYWJsZWQgfHwgY2hhcnROYXJyYXRpdmU7XG4gICAgaWYgKCFwcmVzZXJ2ZSB8fCAhdGhpcy5jb21iaW5lZFJlY29yZGVyKSB7XG4gICAgICB0aGlzLmNvbWJpbmVkUmVjb3JkZXIgPSBuYXJyYXRpdmVGbGFnID8gbmV3IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIodGhpcy5uYXJyYXRpdmVPcHRpb25zKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIG5hcnJhdGl2ZUZsYWc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxlZydzIHNjb3BlIGZhY3Rvcnk6IHRoZSBiYXNlIGZhY3RvcnksIHRoZW4gZXZlcnkgc2NvcGUgbW9kaWZpZXIgaW4gT05FXG4gICAqIGZsYXQgcGFzcyDigJQgdGhlIG5hcnJhdGl2ZSByZWNvcmRlciwgdGhlIHVzZXIncyBzY29wZSByZWNvcmRlcnMsIHRoZVxuICAgKiBkZWZlcnJlZCB0aWVyJ3Mgc2NvcGUgdGFwLCB0aGUgcmVkYWN0aW9uIHBvbGljeS5cbiAgICpcbiAgICogVGhlIG1hcmtlZC1rZXlzIHNldCBpcyBBTFdBWVMgd2lyZWQgKGEgc3RhZ2UgY2FuIGNhbGxcbiAgICogYHNldFZhbHVlKGtleSwgdmFsLCB0cnVlKWAgZm9yIHBlci1jYWxsIHJlZGFjdGlvbiB3aXRob3V0IGFueSBwb2xpY3kpLlxuICAgKi9cbiAgY29tcG9zZVNjb3BlRmFjdG9yeTxUU2NvcGU+KFxuICAgIGJhc2VGYWN0b3J5OiBTY29wZUZhY3Rvcnk8VFNjb3BlPixcbiAgICByZWRhY3Rpb25Qb2xpY3k6IFJlZGFjdGlvblBvbGljeSB8IHVuZGVmaW5lZCxcbiAgICBzaGFyZWRSZWRhY3RlZEtleXM6IFNldDxzdHJpbmc+LFxuICAgIGNvcnJlbGF0aW9uPzogUnVuQ29ycmVsYXRpb24sXG4gICk6IFNjb3BlRmFjdG9yeTxUU2NvcGU+IHtcbiAgICBjb25zdCBtb2RpZmllcnM6IFNjb3BlTW9kaWZpZXJbXSA9IFtdO1xuXG4gICAgLy8gMS4gTmFycmF0aXZlIHJlY29yZGVyIChpZiBlbmFibGVkKVxuICAgIGlmICh0aGlzLmNvbWJpbmVkUmVjb3JkZXIpIHtcbiAgICAgIGNvbnN0IHJlY29yZGVyID0gdGhpcy5jb21iaW5lZFJlY29yZGVyO1xuICAgICAgbW9kaWZpZXJzLnB1c2goKHRhcmdldCkgPT4ge1xuICAgICAgICB0YXJnZXQuYXR0YWNoU2NvcGVSZWNvcmRlcj8uKHJlY29yZGVyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIDIuIFVzZXItcHJvdmlkZWQgc2NvcGUgcmVjb3JkZXJzXG4gICAgaWYgKHRoaXMuc2NvcGVSZWNvcmRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcmVjb3JkZXJzID0gdGhpcy5zY29wZVJlY29yZGVycztcbiAgICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCByIG9mIHJlY29yZGVycykgdGFyZ2V0LmF0dGFjaFNjb3BlUmVjb3JkZXI/LihyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIDJiLiBEZWZlcnJlZC1vYnNlcnZlciBzY29wZSB0YXAgKFJGQy0wMDEgQmxvY2sgNykg4oCUIGEgc3ludGhldGljXG4gICAgLy8gcmVjb3JkZXIgd2hvc2UgaG9va3MgQ0FQVFVSRSBpbnRvIHRoZSBib3VuZGVkIHF1ZXVlIGluc3RlYWQgb2YgZG9pbmdcbiAgICAvLyBvYnNlcnZlciB3b3JrLiBJdCByaWRlcyB0aGUgc2FtZSBwZXItc3RhZ2UgcmVjb3JkZXIgbGlzdCBhcyBpbmxpbmVcbiAgICAvLyByZWNvcmRlcnMsIHNvIGl0IHJlY2VpdmVzIGV4YWN0bHkgdGhlIHBvc3QtcmVkYWN0aW9uIGV2ZW50cyB0aGV5IGRvLlxuICAgIC8vIEFic2VudCAoemVybyB3b3JrLCBpZGVudGljYWwgbGlzdCkgd2hlbiBub2JvZHkgb3B0ZWQgaW50byBkZWZlcnJhbC5cbiAgICBjb25zdCBzY29wZVRhcCA9IHRoaXMuZGVmZXJyZWRUaWVyPy5idWlsZFNjb3BlVGFwKCk7XG4gICAgaWYgKHNjb3BlVGFwKSB7XG4gICAgICBtb2RpZmllcnMucHVzaCgodGFyZ2V0KSA9PiB7XG4gICAgICAgIHRhcmdldC5hdHRhY2hTY29wZVJlY29yZGVyPy4oc2NvcGVUYXApO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gMy4gUmVkYWN0aW9uIHBvbGljeSAoY29uZGl0aW9uYWwg4oCUIG9ubHkgd2hlbiBwb2xpY3kgaXMgc2V0KS4gQVxuICAgIC8vIGBTY29wZUZhY2FkZWAgYWxyZWFkeSByZWFkcyB0aGUgcnVuJ3MgcnVsZSB0aHJvdWdoIGl0cyBjb250ZXh0ICh0aGVcbiAgICAvLyBydWxlIGlzIGluc3RhbGxlZCBvbiB0aGUgcnVudGltZSByb290KTsgdGhpcyBjYWxsIHN1cHBsaWVzIGl0IHRvXG4gICAgLy8gZXhwbGljaXRseSByZWdpc3RlcmVkIGN1c3RvbSBwb3J0cywgYW5kIG9uIGEgZmFjYWRlIGl0XG4gICAgLy8gcmUtc3RhdGVzIHRoZSBleGVjdXRvcidzIHBvbGljeSBvbiB0aGUgc2hhcmVkIHJ1bGUgKGEgbm8tb3ApLlxuICAgIGlmIChyZWRhY3Rpb25Qb2xpY3kpIHtcbiAgICAgIGNvbnN0IHBvbGljeSA9IHJlZGFjdGlvblBvbGljeTtcbiAgICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgICAgdGFyZ2V0LnVzZVJlZGFjdGlvblBvbGljeT8uKHBvbGljeSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyA0LiBUaGUgbGVnJ3MgY29ycmVsYXRpb24gKDEwLjEpIOKAlCBvbmUgZnJvemVuIG9iamVjdCBwZXIgbGVnLCBzbyBhIGZhY3RvcnkgY29tcG9zZWQgZm9yIG9uZSBsZWcgbmV2ZXJcbiAgICAvLyBzdGFtcHMgYW5vdGhlcidzLiBJbnN0YWxsZWQgZXZlbiB3aGVuIGFic2VudDogYSB0YXJnZXQgYSBjdXN0b20gZmFjdG9yeSByZS11c2VzIGFjcm9zcyBydW5zIGlzIENMRUFSRUQsXG4gICAgLy8gbmV2ZXIgbGVmdCBob2xkaW5nIGFuIGVhcmxpZXIgcnVuJ3MuIEFic2VudCDihpIgZXZlbnRzIGJ5dGUtaWRlbnRpY2FsLlxuICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgIHRhcmdldC51c2VDb3JyZWxhdGlvbj8uKGNvcnJlbGF0aW9uKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAoKGN0eDogYW55LCBzdGFnZU5hbWU6IHN0cmluZywgcmVhZE9ubHk/OiB1bmtub3duLCBlbnZBcmc/OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHNjb3BlID0gYmFzZUZhY3RvcnkoY3R4LCBzdGFnZU5hbWUsIHJlYWRPbmx5LCBlbnZBcmcpO1xuICAgICAgY29uc3QgeyB0YXJnZXQgfSA9IHJlcXVpcmVTY29wZVJ1bnRpbWUoc2NvcGUpO1xuICAgICAgLy8gQWx3YXlzIHdpcmUgc2hhcmVkIHJlZGFjdGlvbiBzdGF0ZVxuICAgICAgdGFyZ2V0LnVzZVNoYXJlZFJlZGFjdGVkS2V5cz8uKHNoYXJlZFJlZGFjdGVkS2V5cyk7XG4gICAgICAvLyBBcHBseSBvcHRpb25hbCBtb2RpZmllcnNcbiAgICAgIGZvciAoY29uc3QgbW9kIG9mIG1vZGlmaWVycykgbW9kKHRhcmdldCk7XG4gICAgICByZXR1cm4gc2NvcGU7XG4gICAgfSkgYXMgU2NvcGVGYWN0b3J5PFRTY29wZT47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxlZydzIGZsb3cgcmVjb3JkZXJzOiB0aGUgbmFycmF0aXZlIHJlY29yZGVyICh3aGVuIG9uKSwgdGhlIHVzZXInc1xuICAgKiBmbG93IHJlY29yZGVycywgdGhlbiB0aGUgZGVmZXJyZWQgdGllcidzIGZsb3cgdGFwIChSRkMtMDAxIEJsb2NrIDcpIOKAlFxuICAgKiBhcHBlbmRlZCBsaWtlIGFueSBvdGhlciBmbG93IHJlY29yZGVyLCBzbyB0aGUgZGlzcGF0Y2hlciBuZWVkcyBubyB0aWVyXG4gICAqIGxvZ2ljIG9mIGl0cyBvd24uIGB1bmRlZmluZWRgIHdoZW4gdGhlcmUgYXJlIG5vbmUuXG4gICAqL1xuICBmbG93UmVjb3JkZXJzTGlzdCgpOiBGbG93UmVjb3JkZXJbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcmVjb3JkZXJzOiBGbG93UmVjb3JkZXJbXSA9IFtdO1xuICAgIGlmICh0aGlzLmNvbWJpbmVkUmVjb3JkZXIpIHtcbiAgICAgIHJlY29yZGVycy5wdXNoKHRoaXMuY29tYmluZWRSZWNvcmRlcik7XG4gICAgfVxuICAgIHJlY29yZGVycy5wdXNoKC4uLnRoaXMuZmxvd1JlY29yZGVycyk7XG4gICAgY29uc3QgZmxvd1RhcCA9IHRoaXMuZGVmZXJyZWRUaWVyPy5idWlsZEZsb3dUYXAoKTtcbiAgICBpZiAoZmxvd1RhcCkgcmVjb3JkZXJzLnB1c2goZmxvd1RhcCk7XG4gICAgcmV0dXJuIHJlY29yZGVycy5sZW5ndGggPiAwID8gcmVjb3JkZXJzIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIFRoZSBpbmxpbmUgZmxvdyBsaXN0ZW5lcnMgb2YgYW4gZXhlY3V0b3ItbWFkZSBldmVudCAoYG9uUmVzdW1lYCk6IHRoZSBuYXJyYXRpdmUgcmVjb3JkZXIgZmlyc3QuICovXG4gIGlubGluZUZsb3dMaXN0ZW5lcnMoKTogRmxvd1JlY29yZGVyW10ge1xuICAgIHJldHVybiB0aGlzLmNvbWJpbmVkUmVjb3JkZXIgPyBbdGhpcy5jb21iaW5lZFJlY29yZGVyLCAuLi50aGlzLmZsb3dSZWNvcmRlcnNdIDogdGhpcy5mbG93UmVjb3JkZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIExhemlseSBjcmVhdGUgdGhlIGV4ZWN1dG9yJ3MgT05FIGRlZmVycmVkLW9ic2VydmVyIHRpZXIgKG9uZSBtZXJnZWRcbiAgICogcXVldWUsIHRvdGFsIGV2ZW50IG9yZGVyIGFjcm9zcyBhbGwgdGhyZWUgY2hhbm5lbHMpLiBUaGUgRklSU1QgZGVmZXJyZWRcbiAgICogYXR0YWNoJ3Mgb3B0aW9ucyBjb25maWd1cmUgdGhlIGRpc3BhdGNoZXI7IGxhdGVyIGRpZmZlcmluZyBvcHRpb25zIGFyZVxuICAgKiBkZXYtd2FybmVkIGFuZCBpZ25vcmVkIChzZWUgYEF0dGFjaFJlY29yZGVyT3B0aW9uc2ApLlxuICAgKi9cbiAgcHJpdmF0ZSBlbnN1cmVEZWZlcnJlZFRpZXIob3B0aW9ucz86IEF0dGFjaFJlY29yZGVyT3B0aW9ucyk6IERlZmVycmVkT2JzZXJ2ZXJUaWVyIHtcbiAgICBpZiAoIXRoaXMuZGVmZXJyZWRUaWVyKSB0aGlzLmRlZmVycmVkVGllciA9IG5ldyBEZWZlcnJlZE9ic2VydmVyVGllcihvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5kZWZlcnJlZFRpZXI7XG4gIH1cbn1cbiJdfQ==
@@ -79,6 +79,8 @@ function buildPauseCheckpoint(signal, traverser, run) {
79
79
  // The paused EXECUTION (9.37.0) — a queued sibling raised on resume
80
80
  // carries the run it ORIGINALLY paused in.
81
81
  ...(signal.pausedExecution && { pausedExecution: signal.pausedExecution }),
82
+ // The key the paused touching execution ran under (10.1) — its resume runs under the same key.
83
+ ...(signal.idempotencyKey !== undefined && { idempotencyKey: signal.idempotencyKey }),
82
84
  subflowPath: signal.subflowPath,
83
85
  pauseData: signal.pauseData,
84
86
  subflowStates: signal.subflowStates,
@@ -143,4 +145,4 @@ function describeCheckpointCloneFailure(checkpoint, cause) {
143
145
  'are never part of a checkpoint and never cause this error. ' +
144
146
  'See docs/guides/execution-model.md ("Pause / resume — what a checkpoint captures").', { cause });
145
147
  }
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcnVubmVyL2NoZWNrcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHOzs7QUFHSCxrREFBd0Q7QUFZeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ2xDLE1BQW1CLEVBQ25CLFNBQXVDLEVBQ3ZDLEdBQWM7SUFFZCw2RUFBNkU7SUFDN0UsbURBQW1EO0lBQ25ELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsTUFBTSxVQUFVLEdBQUc7UUFDakIsa0VBQWtFO1FBQ2xFLGlCQUFpQixFQUFFLDhCQUFrQjtRQUNyQyxXQUFXLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7UUFDMUQsYUFBYSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQzdCLG9FQUFvRTtRQUNwRSwyQ0FBMkM7UUFDM0MsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFFLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztRQUMvQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0IsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1FBQ25DLHVFQUF1RTtRQUN2RSwwRUFBMEU7UUFDMUUseUVBQXlFO1FBQ3pFLG9GQUFvRjtRQUNwRixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7UUFDbEMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNoRCw0RUFBNEU7UUFDNUUsMEVBQTBFO1FBQzFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2RSxzRUFBc0U7UUFDdEUsZ0VBQWdFO1FBQ2hFLDBCQUEwQjtRQUMxQixHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvRSxxRUFBcUU7UUFDckUseUVBQXlFO1FBQ3pFLHdFQUF3RTtRQUN4RSx1RUFBdUU7UUFDdkUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JELDBGQUEwRjtRQUMxRiwwRkFBMEY7UUFDMUYsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pFLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO0tBQ3JCLENBQUM7SUFDRixJQUFJLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLCtEQUErRDtRQUMvRCxNQUFNLDhCQUE4QixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0FBQ0gsQ0FBQztBQWhERCxvREFnREM7QUFFRCw2REFBNkQ7QUFDN0QsU0FBUyxXQUFXLENBQUMsS0FBYztJQUNqQyxJQUFJLENBQUM7UUFDSCxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsOEJBQThCLENBQUMsVUFBbUMsRUFBRSxLQUFjO0lBQ3pGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1NBQ3ZDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNuRSxPQUFPLElBQUksS0FBSyxDQUNkLHNGQUFzRjtRQUNwRix3QkFBd0IsTUFBTSwyREFBMkQ7UUFDekYsNEZBQTRGO1FBQzVGLDBGQUEwRjtRQUMxRiw2REFBNkQ7UUFDN0QscUZBQXFGLEVBQ3ZGLEVBQUUsS0FBSyxFQUFFLENBQ1YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGNoZWNrcG9pbnQg4oCUIHRoZSBwYXVzZSBjaGVja3BvaW50LCBidWlsdCBPTkNFIGF0IHRoZSBwYXVzZSAoRjkpLlxuICpcbiAqIGBidWlsZFBhdXNlQ2hlY2twb2ludGAgYXNzZW1ibGVzIHRoZSBjaGVja3BvaW50IGZyb20gYSBjYXVnaHQgYFBhdXNlU2lnbmFsYFxuICogYW5kIHRoZSBwYXVzZWQgcnVuLCBzdGFtcGVkIHdpdGggdGhlIGZvcm1hdCB0aGUgT05FIGNvZGVjIHJlYWRzIGJhY2tcbiAqIChgcGF1c2UvcmVjb3JkLnRzYCDCtyBgQ0hFQ0tQT0lOVF9WRVJTSU9OYCAvIGBkZWNvZGVDaGVja3BvaW50YCksIGFuZFxuICogZGV0YWNoZXMgaXQgd2l0aCBvbmUgYHN0cnVjdHVyZWRDbG9uZWAuXG4gKlxuICogTEVBTiAoZm9ybWF0IDIpLiBUaGUgY2hlY2twb2ludCBob2xkcyB3aGF0IGByZXN1bWUoKWAgcmVhZHMgYW5kIHRoZSBwYXVzZSdzXG4gKiBvd24gcmVjb3JkLCBub3RoaW5nIGVsc2U6XG4gKlxuICogICByZWFkIGJ5IHJlc3VtZSAgdGhlIGN1cnNvciAoYHBhdXNlZFN0YWdlSWRgLCBgc3ViZmxvd1BhdGhgLCBgcGF1c2VkQnlgKSxcbiAqICAgICAgICAgICAgICAgICAgIHRoZSBzdGF0ZSAoYHNoYXJlZFN0YXRlYCwgYW5kIGBzdWJmbG93U3RhdGVzYCDigJQgb25lIGNhcHR1cmVcbiAqICAgICAgICAgICAgICAgICAgIHBlciBzdWJmbG93IE9OIHRoZSBwYXVzZSBwYXRoKSwgdGhlIGNvdW50ZXJzXG4gKiAgICAgICAgICAgICAgICAgICAoYGV4ZWN1dGlvbkNvdW50YCwgYHZpc2l0Q291bnRzYCDigJQgb25lIGVudHJ5IHBlciBzdGFnZSBpZCksXG4gKiAgICAgICAgICAgICAgICAgICB0aGUgd2FpdGluZyBzaWJsaW5ncyAoYHBlbmRpbmdQYXVzZXNgKSwgdGhlIHJlZGFjdGlvbiBuYW1lc1xuICogICAgICAgICAgICAgICAgICAgKGByZWRhY3Rpb25NYXJrc2ApLCB0aGUgbGluayAoYHBhdXNlZEV4ZWN1dGlvbmApO1xuICogICB0aGUgcmVjb3JkICAgICAgYHBhdXNlRGF0YWAgKHRoZSBxdWVzdGlvbiksIGBpbnZva2VyU3RhZ2VJZGAsIGBwYXVzZWRBdGAuXG4gKlxuICogU28gaXRzIHNpemUgaXMgdGhlIHN0YXRlJ3MgYW5kIHRoZSBjaGFydCdzLCBuZXZlciB0aGUgcnVuJ3MgbGVuZ3RoLiBGb3JtYXQgMVxuICogYWxzbyBjYXJyaWVkIHRoZSB3aG9sZSBleGVjdXRpb24gdHJlZSBhbmQgdGhlIGZpbmlzaGVkIHN1YmZsb3dzJyByZXN1bHRzIOKAlFxuICogdGhlIHJ1bidzIHNlcnZlZCByZWNvcmQsIHdoaWNoIG5vIHJlc3VtZSByZWFkIGFuZCB3aGljaCBncmV3IHdpdGggZXZlcnlcbiAqIGZpbmlzaGVkIGl0ZXJhdGlvbiAoYGJlbmNoL2NoZWNrcG9pbnQtc2l6ZS50c2A6IDE5LjMgTUIgYWZ0ZXIgNjAgYWdlbnRcbiAqIHR1cm5zIHdob3NlIHJlc3VtYWJsZSBzdGF0ZSDigJQgcm9vdCBwbHVzIGNhcHR1cmVzIOKAlCBpcyAwLjEzIE1COyB0aGUgdHJlZVxuICogYWxvbmUgd2FzIDk3JSkuIFRoYXQgcmVjb3JkIGlzIGBnZXRTbmFwc2hvdCgpYCdzLiBQaW5uZWQ6XG4gKiB0ZXN0L2xpYi9wYXVzZS9jaGVja3BvaW50LXNpemUudGVzdC50cy5cbiAqXG4gKiBUSEUgTEFXIGhvbGRzOiB0aGUgY2hlY2twb2ludCBrZWVwcyBSRUFMIHZhbHVlcyDigJQgbm8gcmVkYWN0aW9uIHBvbGljeSBldmVyXG4gKiB0b3VjaGVzIGl0IChpdCBpcyB3aGF0IHRoZSByZXN1bWVkIHJ1biBjb21wdXRlcyBvbik7IHRoZSBtYXJrcyB0cmF2ZWwgYXNcbiAqIE5BTUVTIG9ubHkuXG4gKlxuICogVGhlIEpTT04tc2FmZSBjb250cmFjdCBnb3Zlcm5zIHdoYXQgQ09OU1VNRVJTIHB1dCBpbnRvIGEgY2hlY2twb2ludFxuICogKGBwYXVzZURhdGFgLCBzaGFyZWQgc3RhdGUpLiBBIHZhbHVlIGBzdHJ1Y3R1cmVkQ2xvbmVgIHJlZnVzZXMgY2FuIG9ubHkgY29tZVxuICogZnJvbSB0aGVtIOKAlCBzaGFyZWQgc3RhdGUgaXMgY2xvbmVkIGF0IGV2ZXJ5IGNvbW1pdCwgc28gYSBmdW5jdGlvbiBuZXZlclxuICogcmVhY2hlcyBpdCwgYW5kIG5vIGRpYWdub3N0aWMgYmFnIGlzIGNhcnJpZWQg4oCUIHNvIGEgZmFpbGVkIGNsb25lIGJlY29tZXMgYVxuICogREVTQ1JJUFRJVkUgY29udHJhY3QgZXJyb3IgbmFtaW5nIHRoZSBmaWVsZCAoYGRlc2NyaWJlQ2hlY2twb2ludENsb25lRmFpbHVyZWApXG4gKiBpbnN0ZWFkIG9mIGEgbmFrZWQgYERhdGFDbG9uZUVycm9yYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZsb3djaGFydFRyYXZlcnNlciB9IGZyb20gJy4uL2VuZ2luZS90cmF2ZXJzYWwvRmxvd2NoYXJ0VHJhdmVyc2VyLmpzJztcbmltcG9ydCB7IENIRUNLUE9JTlRfVkVSU0lPTiB9IGZyb20gJy4uL3BhdXNlL3JlY29yZC5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3djaGFydENoZWNrcG9pbnQsIFBhdXNlU2lnbmFsLCBSZWRhY3Rpb25NYXJrcyB9IGZyb20gJy4uL3BhdXNlL3R5cGVzLmpzJztcblxuLyoqIFRoZSBwYXVzZWQgcnVuJ3MgY291bnRlcnMsIGFzIHRoZSBleGVjdXRvciBob2xkcyB0aGVtIGF0IHRoZSBwYXVzZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF1c2VkUnVuIHtcbiAgcmVhZG9ubHkgcnVuSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgZXhlY3V0aW9uQ291bnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgdmlzaXRDb3VudHM6IFJlYWRvbmx5TWFwPHN0cmluZywgbnVtYmVyPjtcbiAgLyoqIFRoZSBydW4ncyByZWRhY3Rpb24gbWFya3Mg4oCUIG5hbWVzIG9ubHkgKGBSZWRhY3Rpb25SdWxlIMK3IG1hcmtzRm9yQ2hlY2twb2ludGApOyBhYnNlbnQgd2hlbiBub25lLiAqL1xuICByZWFkb25seSByZWRhY3Rpb25NYXJrcz86IFJlZGFjdGlvbk1hcmtzO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgZnVsbHkgREVUQUNIRUQsIGxlYW4gY2hlY2twb2ludCBmcm9tIGEgY2F1Z2h0IFBhdXNlU2lnbmFsLlxuICpcbiAqIEV2ZXJ5IGZpZWxkIGlzIGRlZXAtY29waWVkIHZpYSBvbmUgYHN0cnVjdHVyZWRDbG9uZWAgb2YgdGhlIGFzc2VtYmxlZFxuICogY2hlY2twb2ludCwgYmVjYXVzZSB0aGUgcmF3IHBpZWNlcyBhbGlhcyBsaXZlIGVuZ2luZSBzdGF0ZTpcbiAqXG4gKiAgIC0gYHNoYXJlZFN0YXRlYCBJUyBgU2hhcmVkTWVtb3J5YCdzIGN1cnJlbnQgZ2VuZXJhdGlvbiDigJQgbmV2ZXIgZWRpdGVkLFxuICogICAgIGJ1dCAoY29weS1vbi13cml0ZSwgOS4yOS4wKSBldmVyeSBsYXRlciBnZW5lcmF0aW9uIHNoYXJlcyBpdHNcbiAqICAgICB1bmNoYW5nZWQgc3VidHJlZXMsIHNvIGEgY2hlY2twb2ludCB0aGF0IGFsaWFzZWQgaXQgd291bGQgYWxpYXMgdGhlXG4gKiAgICAgcmVzdW1lZCBydW4ncyBzdGF0ZSB0b28uXG4gKiAgIC0gYHN1YmZsb3dTdGF0ZXNgIHZhbHVlcyBhcmUgc2hhbGxvdyBjb3BpZXMgd2hvc2UgTkVTVEVEIG9iamVjdHMgYWxpYXNcbiAqICAgICBzdWJmbG93IG1lbW9yeSwgYW5kIHRoZXkgZ2V0IHNlZWRlZCBiYWNrIGludG8gbGl2ZSBydW50aW1lcyBvbiByZXN1bWUuXG4gKlxuICogVGhlIGNoZWNrcG9pbnQgaXMgcGVyc2lzdGVkIGJ5IGNvbnRyYWN0IChcInN0b3JlIGluIFJlZGlzL1Bvc3RncmVzXCIpIOKAlCBpdFxuICogbXVzdCBuZXZlciBzaGFyZSBzdHJ1Y3R1cmUgd2l0aCB0aGUgZW5naW5lLlxuICpcbiAqIFRoZSBzdGF0ZSBpcyByZWFkIHN0cmFpZ2h0IG9mZiB0aGUgcm9vdCBydW50aW1lJ3Mgc3RvcmUg4oCUIG5vIHNuYXBzaG90IGlzXG4gKiBidWlsdCAoYSBzbmFwc2hvdCB3b3VsZCBidWlsZCB0aGUgZXhlY3V0aW9uIHRyZWUgYW5kIGNvcHkgdGhlIGNvbW1pdCBsb2csXG4gKiB3b3JrIHByb3BvcnRpb25hbCB0byB0aGUgcnVuJ3MgbGVuZ3RoLCBvbmx5IHRvIHRocm93IGJvdGggYXdheSkuXG4gKlxuICogU3ViZmxvdyBzY29wZSBjYXB0dXJlIChgc3ViZmxvd1N0YXRlc2ApIHN1cnZpdmVzIE9OTFkgb24gdGhlIHNpZ25hbCDigJQgdGhlXG4gKiBuZXN0ZWQgcnVudGltZXMgYXJlIEdDJ2QgYXMgdGhlIHN0YWNrIHVud2luZHMuIFByb21vdGluZyBpdCBvbnRvIHRoZVxuICogY2hlY2twb2ludCBoZXJlIGxldHMgY3Jvc3MtZXhlY3V0b3IgcmVzdW1lIHJlc3RvcmUgcHJlLXBhdXNlIHN1YmZsb3dcbiAqIHNjb3BlIChlLmcuIGFuIEFnZW50J3MgYHNjb3BlLmhpc3RvcnlgKS4gVGhlIHNpZ25hbCBjYXB0dXJlcyBhIHN1YmZsb3cgb25seVxuICogYXMgaXQgYnViYmxlcyB0aHJvdWdoIHRoYXQgc3ViZmxvdydzIGJvdW5kYXJ5LCBzbyB0aGUga2V5cyBhcmUgZXhhY3RseSB0aGVcbiAqIHBhdXNlIHBhdGgncy4gRW1wdHkgYHt9YCBmb3Igcm9vdC1sZXZlbCBwYXVzZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFBhdXNlQ2hlY2twb2ludChcbiAgc2lnbmFsOiBQYXVzZVNpZ25hbCxcbiAgdHJhdmVyc2VyOiBGbG93Y2hhcnRUcmF2ZXJzZXI8YW55LCBhbnk+LFxuICBydW46IFBhdXNlZFJ1bixcbik6IEZsb3djaGFydENoZWNrcG9pbnQge1xuICAvLyBFdmVyeSBwYXVzZSB0aGF0IHBhdXNlZCBpbiBUSElTIHJ1biBpcyBuYW1lZCBieSBpdDsgYSBzaWJsaW5nIHJhaXNlZCBhZ2FpblxuICAvLyBvbiByZXN1bWUga2VlcHMgdGhlIHJ1biBpdCBvcmlnaW5hbGx5IHBhdXNlZCBpbi5cbiAgc2lnbmFsLmNvbXBsZXRlRXhlY3V0aW9uKHJ1bi5ydW5JZCk7XG4gIGNvbnN0IGNoZWNrcG9pbnQgPSB7XG4gICAgLy8gVGhlIGZvcm1hdCDigJQgcmVhZCBiYWNrIGJ5IGBwYXVzZS9yZWNvcmQudHMgwrcgZGVjb2RlQ2hlY2twb2ludGAuXG4gICAgY2hlY2twb2ludFZlcnNpb246IENIRUNLUE9JTlRfVkVSU0lPTixcbiAgICBzaGFyZWRTdGF0ZTogdHJhdmVyc2VyLmdldFJ1bnRpbWUoKS5nbG9iYWxTdG9yZS5nZXRTdGF0ZSgpLFxuICAgIHBhdXNlZFN0YWdlSWQ6IHNpZ25hbC5zdGFnZUlkLFxuICAgIC8vIFRoZSBwYXVzZWQgRVhFQ1VUSU9OICg5LjM3LjApIOKAlCBhIHF1ZXVlZCBzaWJsaW5nIHJhaXNlZCBvbiByZXN1bWVcbiAgICAvLyBjYXJyaWVzIHRoZSBydW4gaXQgT1JJR0lOQUxMWSBwYXVzZWQgaW4uXG4gICAgLi4uKHNpZ25hbC5wYXVzZWRFeGVjdXRpb24gJiYgeyBwYXVzZWRFeGVjdXRpb246IHNpZ25hbC5wYXVzZWRFeGVjdXRpb24gfSksXG4gICAgc3ViZmxvd1BhdGg6IHNpZ25hbC5zdWJmbG93UGF0aCxcbiAgICBwYXVzZURhdGE6IHNpZ25hbC5wYXVzZURhdGEsXG4gICAgc3ViZmxvd1N0YXRlczogc2lnbmFsLnN1YmZsb3dTdGF0ZXMsXG4gICAgLy8gQ291bnRlciBjb250aW51aXR5IOKAlCBzZWVkZWQgYmFjayBpbiByZXN1bWUoKSBzbyBydW50aW1lU3RhZ2VJZHMgc3RheVxuICAgIC8vIHVuaXF1ZSBhbmQgbG9vcEl0ZXJhdGlvbiBzdGF5cyBtb25vdG9uaWMgYWNyb3NzIGEgQ1JPU1MtZXhlY3V0b3IgcmVzdW1lXG4gICAgLy8gKGJvdGggYXJlIHBsYWluIG51bWJlci9yZWNvcmQsIHNvIHRoZXkgcmlkZSB0aGUgc2luZ2xlIHN0cnVjdHVyZWRDbG9uZVxuICAgIC8vIGJlbG93IHVudG91Y2hlZCkuIFNlZSB0ZXN0L2xpYi9wYXVzZS9yZXN1bWUtZXhlY3V0aW9uLWNvdW50ZXItY29udGludWl0eS50ZXN0LnRzLlxuICAgIGV4ZWN1dGlvbkNvdW50OiBydW4uZXhlY3V0aW9uQ291bnQsXG4gICAgdmlzaXRDb3VudHM6IE9iamVjdC5mcm9tRW50cmllcyhydW4udmlzaXRDb3VudHMpLFxuICAgIC8vIEludm9rZXIgY29udGV4dCDigJQgY29sbGVjdGVkIGR1cmluZyB0cmF2ZXJzYWwgYnViYmxlLXVwIChub3QgdHJlZS13YWxrZWQpLlxuICAgIC8vIChgY29udGludWF0aW9uU3RhZ2VJZGAgaXMgbGVnYWN5LW9ubHkgc2luY2UgOS4zOS4wOiBubyBsb25nZXIgd3JpdHRlbi4pXG4gICAgLi4uKHNpZ25hbC5pbnZva2VyU3RhZ2VJZCAmJiB7IGludm9rZXJTdGFnZUlkOiBzaWduYWwuaW52b2tlclN0YWdlSWQgfSksXG4gICAgLy8gUGFyYWxsZWwgc2libGluZ3MnIHBhdXNlcyBmcm9tIHRoZSBzYW1lIGZhbi1vdXQsIHdhaXRpbmcgdGhlaXIgdHVyblxuICAgIC8vICg5LjI4LjApLiBBYnNlbnQgd2hlbiBvbmx5IG9uZSBjaGlsZCBwYXVzZWQg4oCUIHRoZSBzaGFwZSBldmVyeVxuICAgIC8vIGVhcmxpZXIgY2hlY2twb2ludCBoYXMuXG4gICAgLi4uKHNpZ25hbC5wZW5kaW5nUGF1c2VzLmxlbmd0aCA+IDAgJiYgeyBwZW5kaW5nUGF1c2VzOiBzaWduYWwucGVuZGluZ1BhdXNlcyB9KSxcbiAgICAvLyBIT1cgdGhlIHBhdXNlIHdhcyByYWlzZWQuIE9uZSBjaGVja3BvaW50IHNoYXBlLCBvbmUgZXh0cmEgb3B0aW9uYWxcbiAgICAvLyBmaWVsZCDigJQgYW4gaW50ZXJydXB0KCkgcGF1c2UgaXMgbm90IGEgc2Vjb25kIGtpbmQgb2YgY2hlY2twb2ludCwgaXQgaXNcbiAgICAvLyB0aGUgc2FtZSBjaGVja3BvaW50IHRoYXQgcmVzdW1lKCkgcmUtZW50ZXJzIGRpZmZlcmVudGx5IChzdGFnZSB0b3AgdnNcbiAgICAvLyByZXN1bWVGbikuIEFic2VudCBmb3IgZXZlcnkgcHJlLTkuMTQuMCBjaGVja3BvaW50LCB3aGljaCBpcyBjb3JyZWN0LlxuICAgIC4uLihzaWduYWwucGF1c2VkQnkgJiYgeyBwYXVzZWRCeTogc2lnbmFsLnBhdXNlZEJ5IH0pLFxuICAgIC8vIFRoZSByZWRhY3Rpb24gdGhlIHBhdXNlZCBydW4gaGFkIG1hZGUg4oCUIE5BTUVTIG9ubHkgKG1hcmtzLCBhIG1hcHBlcidzIHRhaW50cywgaW5oZXJpdGVkXG4gICAgLy8gZmllbGRzKS4gUmVzdW1lIHNlZWRzIHRoZSByZXN1bWVkIHJ1bidzIHJ1bGUgd2l0aCB0aGVtLiBBYnNlbnQgd2hlbiBub3RoaW5nIHdhcyBtYXJrZWQuXG4gICAgLi4uKHJ1bi5yZWRhY3Rpb25NYXJrcyAmJiB7IHJlZGFjdGlvbk1hcmtzOiBydW4ucmVkYWN0aW9uTWFya3MgfSksXG4gICAgcGF1c2VkQXQ6IERhdGUubm93KCksXG4gIH07XG4gIHRyeSB7XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRDbG9uZShjaGVja3BvaW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBHZW51aW5lIEpTT04tc2FmZSBjb250cmFjdCB2aW9sYXRpb24gaW4gY29uc3VtZXItb3duZWQgZGF0YS5cbiAgICB0aHJvdyBkZXNjcmliZUNoZWNrcG9pbnRDbG9uZUZhaWx1cmUoY2hlY2twb2ludCwgZXJyb3IpO1xuICB9XG59XG5cbi8qKiBgdHJ1ZWAgd2hlbiBgc3RydWN0dXJlZENsb25lYCBhY2NlcHRzIHRoZSB2YWx1ZSBhcy1pcy4gKi9cbmZ1bmN0aW9uIGlzQ2xvbmVhYmxlKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgc3RydWN0dXJlZENsb25lKHZhbHVlKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIERFU0NSSVBUSVZFIGVycm9yIGZvciBhIGNoZWNrcG9pbnQgdGhhdCBjYW5ub3QgYmUgY2xvbmVkIOKAlCB0aGVcbiAqIG5vbi1jbG9uZWFibGUgdmFsdWUgbGl2ZXMgaW4gY29uc3VtZXItb3duZWQgZGF0YSAoYSBnZW51aW5lIEpTT04tc2FmZVxuICogY29udHJhY3QgdmlvbGF0aW9uKS4gUHJvYmVzIGVhY2ggdG9wLWxldmVsIGNoZWNrcG9pbnQgZmllbGQgaW5kaXZpZHVhbGx5IHNvXG4gKiB0aGUgbWVzc2FnZSBuYW1lcyB0aGUgb2ZmZW5kaW5nIGZpZWxkIGZhbWlseS4gTmV2ZXIgbGV0cyBhIG5ha2VkXG4gKiBgRGF0YUNsb25lRXJyb3JgIGVzY2FwZS5cbiAqL1xuZnVuY3Rpb24gZGVzY3JpYmVDaGVja3BvaW50Q2xvbmVGYWlsdXJlKGNoZWNrcG9pbnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBjYXVzZTogdW5rbm93bik6IEVycm9yIHtcbiAgY29uc3QgZmFpbGluZyA9IE9iamVjdC5lbnRyaWVzKGNoZWNrcG9pbnQpXG4gICAgLmZpbHRlcigoWywgdmFsdWVdKSA9PiAhaXNDbG9uZWFibGUodmFsdWUpKVxuICAgIC5tYXAoKFtmaWVsZF0pID0+IGZpZWxkKTtcbiAgY29uc3QgZmllbGRzID0gZmFpbGluZy5sZW5ndGggPiAwID8gZmFpbGluZy5qb2luKCcsICcpIDogJ3Vua25vd24nO1xuICByZXR1cm4gbmV3IEVycm9yKFxuICAgICdGbG93Q2hhcnRFeGVjdXRvcjogY2Fubm90IGJ1aWxkIHRoZSBwYXVzZSBjaGVja3BvaW50IOKAlCBub24tc2VyaWFsaXphYmxlIHZhbHVlKHMpIGluICcgK1xuICAgICAgYGNoZWNrcG9pbnQgZmllbGQocyk6ICR7ZmllbGRzfS4gVGhlIGNoZWNrcG9pbnQgY29udHJhY3QgaXMgSlNPTi1zYWZlIChubyBmdW5jdGlvbnMsIG5vIGAgK1xuICAgICAgXCJjbGFzcyBpbnN0YW5jZXMpLiBDaGVjayB0aGUgcGF1c2VEYXRhIHJldHVybmVkIGJ5IHRoZSBwYXVzYWJsZSBzdGFnZSdzIGV4ZWN1dGUoKSwgYW5kIGFueSBcIiArXG4gICAgICAnc3ViZmxvdyBzdGF0ZSBjYXB0dXJlZCBhdCB0aGUgcGF1c2UuIERpYWdub3N0aWMgdmFsdWVzIGZyb20gJGRlYnVnLyRtZXRyaWMvJGVycm9yLyRldmFsICcgK1xuICAgICAgJ2FyZSBuZXZlciBwYXJ0IG9mIGEgY2hlY2twb2ludCBhbmQgbmV2ZXIgY2F1c2UgdGhpcyBlcnJvci4gJyArXG4gICAgICAnU2VlIGRvY3MvZ3VpZGVzL2V4ZWN1dGlvbi1tb2RlbC5tZCAoXCJQYXVzZSAvIHJlc3VtZSDigJQgd2hhdCBhIGNoZWNrcG9pbnQgY2FwdHVyZXNcIikuJyxcbiAgICB7IGNhdXNlIH0sXG4gICk7XG59XG4iXX0=
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcnVubmVyL2NoZWNrcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHOzs7QUFHSCxrREFBd0Q7QUFZeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ2xDLE1BQW1CLEVBQ25CLFNBQXVDLEVBQ3ZDLEdBQWM7SUFFZCw2RUFBNkU7SUFDN0UsbURBQW1EO0lBQ25ELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsTUFBTSxVQUFVLEdBQUc7UUFDakIsa0VBQWtFO1FBQ2xFLGlCQUFpQixFQUFFLDhCQUFrQjtRQUNyQyxXQUFXLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7UUFDMUQsYUFBYSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQzdCLG9FQUFvRTtRQUNwRSwyQ0FBMkM7UUFDM0MsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFFLCtGQUErRjtRQUMvRixHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsS0FBSyxTQUFTLElBQUksRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JGLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztRQUMvQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0IsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1FBQ25DLHVFQUF1RTtRQUN2RSwwRUFBMEU7UUFDMUUseUVBQXlFO1FBQ3pFLG9GQUFvRjtRQUNwRixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7UUFDbEMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNoRCw0RUFBNEU7UUFDNUUsMEVBQTBFO1FBQzFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2RSxzRUFBc0U7UUFDdEUsZ0VBQWdFO1FBQ2hFLDBCQUEwQjtRQUMxQixHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvRSxxRUFBcUU7UUFDckUseUVBQXlFO1FBQ3pFLHdFQUF3RTtRQUN4RSx1RUFBdUU7UUFDdkUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JELDBGQUEwRjtRQUMxRiwwRkFBMEY7UUFDMUYsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pFLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO0tBQ3JCLENBQUM7SUFDRixJQUFJLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLCtEQUErRDtRQUMvRCxNQUFNLDhCQUE4QixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0FBQ0gsQ0FBQztBQWxERCxvREFrREM7QUFFRCw2REFBNkQ7QUFDN0QsU0FBUyxXQUFXLENBQUMsS0FBYztJQUNqQyxJQUFJLENBQUM7UUFDSCxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsOEJBQThCLENBQUMsVUFBbUMsRUFBRSxLQUFjO0lBQ3pGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1NBQ3ZDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNuRSxPQUFPLElBQUksS0FBSyxDQUNkLHNGQUFzRjtRQUNwRix3QkFBd0IsTUFBTSwyREFBMkQ7UUFDekYsNEZBQTRGO1FBQzVGLDBGQUEwRjtRQUMxRiw2REFBNkQ7UUFDN0QscUZBQXFGLEVBQ3ZGLEVBQUUsS0FBSyxFQUFFLENBQ1YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGNoZWNrcG9pbnQg4oCUIHRoZSBwYXVzZSBjaGVja3BvaW50LCBidWlsdCBPTkNFIGF0IHRoZSBwYXVzZSAoRjkpLlxuICpcbiAqIGBidWlsZFBhdXNlQ2hlY2twb2ludGAgYXNzZW1ibGVzIHRoZSBjaGVja3BvaW50IGZyb20gYSBjYXVnaHQgYFBhdXNlU2lnbmFsYFxuICogYW5kIHRoZSBwYXVzZWQgcnVuLCBzdGFtcGVkIHdpdGggdGhlIGZvcm1hdCB0aGUgT05FIGNvZGVjIHJlYWRzIGJhY2tcbiAqIChgcGF1c2UvcmVjb3JkLnRzYCDCtyBgQ0hFQ0tQT0lOVF9WRVJTSU9OYCAvIGBkZWNvZGVDaGVja3BvaW50YCksIGFuZFxuICogZGV0YWNoZXMgaXQgd2l0aCBvbmUgYHN0cnVjdHVyZWRDbG9uZWAuXG4gKlxuICogTEVBTiAoZm9ybWF0IDIpLiBUaGUgY2hlY2twb2ludCBob2xkcyB3aGF0IGByZXN1bWUoKWAgcmVhZHMgYW5kIHRoZSBwYXVzZSdzXG4gKiBvd24gcmVjb3JkLCBub3RoaW5nIGVsc2U6XG4gKlxuICogICByZWFkIGJ5IHJlc3VtZSAgdGhlIGN1cnNvciAoYHBhdXNlZFN0YWdlSWRgLCBgc3ViZmxvd1BhdGhgLCBgcGF1c2VkQnlgKSxcbiAqICAgICAgICAgICAgICAgICAgIHRoZSBzdGF0ZSAoYHNoYXJlZFN0YXRlYCwgYW5kIGBzdWJmbG93U3RhdGVzYCDigJQgb25lIGNhcHR1cmVcbiAqICAgICAgICAgICAgICAgICAgIHBlciBzdWJmbG93IE9OIHRoZSBwYXVzZSBwYXRoKSwgdGhlIGNvdW50ZXJzXG4gKiAgICAgICAgICAgICAgICAgICAoYGV4ZWN1dGlvbkNvdW50YCwgYHZpc2l0Q291bnRzYCDigJQgb25lIGVudHJ5IHBlciBzdGFnZSBpZCksXG4gKiAgICAgICAgICAgICAgICAgICB0aGUgd2FpdGluZyBzaWJsaW5ncyAoYHBlbmRpbmdQYXVzZXNgKSwgdGhlIHJlZGFjdGlvbiBuYW1lc1xuICogICAgICAgICAgICAgICAgICAgKGByZWRhY3Rpb25NYXJrc2ApLCB0aGUgbGluayAoYHBhdXNlZEV4ZWN1dGlvbmApO1xuICogICB0aGUgcmVjb3JkICAgICAgYHBhdXNlRGF0YWAgKHRoZSBxdWVzdGlvbiksIGBpbnZva2VyU3RhZ2VJZGAsIGBwYXVzZWRBdGAuXG4gKlxuICogU28gaXRzIHNpemUgaXMgdGhlIHN0YXRlJ3MgYW5kIHRoZSBjaGFydCdzLCBuZXZlciB0aGUgcnVuJ3MgbGVuZ3RoLiBGb3JtYXQgMVxuICogYWxzbyBjYXJyaWVkIHRoZSB3aG9sZSBleGVjdXRpb24gdHJlZSBhbmQgdGhlIGZpbmlzaGVkIHN1YmZsb3dzJyByZXN1bHRzIOKAlFxuICogdGhlIHJ1bidzIHNlcnZlZCByZWNvcmQsIHdoaWNoIG5vIHJlc3VtZSByZWFkIGFuZCB3aGljaCBncmV3IHdpdGggZXZlcnlcbiAqIGZpbmlzaGVkIGl0ZXJhdGlvbiAoYGJlbmNoL2NoZWNrcG9pbnQtc2l6ZS50c2A6IDE5LjMgTUIgYWZ0ZXIgNjAgYWdlbnRcbiAqIHR1cm5zIHdob3NlIHJlc3VtYWJsZSBzdGF0ZSDigJQgcm9vdCBwbHVzIGNhcHR1cmVzIOKAlCBpcyAwLjEzIE1COyB0aGUgdHJlZVxuICogYWxvbmUgd2FzIDk3JSkuIFRoYXQgcmVjb3JkIGlzIGBnZXRTbmFwc2hvdCgpYCdzLiBQaW5uZWQ6XG4gKiB0ZXN0L2xpYi9wYXVzZS9jaGVja3BvaW50LXNpemUudGVzdC50cy5cbiAqXG4gKiBUSEUgTEFXIGhvbGRzOiB0aGUgY2hlY2twb2ludCBrZWVwcyBSRUFMIHZhbHVlcyDigJQgbm8gcmVkYWN0aW9uIHBvbGljeSBldmVyXG4gKiB0b3VjaGVzIGl0IChpdCBpcyB3aGF0IHRoZSByZXN1bWVkIHJ1biBjb21wdXRlcyBvbik7IHRoZSBtYXJrcyB0cmF2ZWwgYXNcbiAqIE5BTUVTIG9ubHkuXG4gKlxuICogVGhlIEpTT04tc2FmZSBjb250cmFjdCBnb3Zlcm5zIHdoYXQgQ09OU1VNRVJTIHB1dCBpbnRvIGEgY2hlY2twb2ludFxuICogKGBwYXVzZURhdGFgLCBzaGFyZWQgc3RhdGUpLiBBIHZhbHVlIGBzdHJ1Y3R1cmVkQ2xvbmVgIHJlZnVzZXMgY2FuIG9ubHkgY29tZVxuICogZnJvbSB0aGVtIOKAlCBzaGFyZWQgc3RhdGUgaXMgY2xvbmVkIGF0IGV2ZXJ5IGNvbW1pdCwgc28gYSBmdW5jdGlvbiBuZXZlclxuICogcmVhY2hlcyBpdCwgYW5kIG5vIGRpYWdub3N0aWMgYmFnIGlzIGNhcnJpZWQg4oCUIHNvIGEgZmFpbGVkIGNsb25lIGJlY29tZXMgYVxuICogREVTQ1JJUFRJVkUgY29udHJhY3QgZXJyb3IgbmFtaW5nIHRoZSBmaWVsZCAoYGRlc2NyaWJlQ2hlY2twb2ludENsb25lRmFpbHVyZWApXG4gKiBpbnN0ZWFkIG9mIGEgbmFrZWQgYERhdGFDbG9uZUVycm9yYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZsb3djaGFydFRyYXZlcnNlciB9IGZyb20gJy4uL2VuZ2luZS90cmF2ZXJzYWwvRmxvd2NoYXJ0VHJhdmVyc2VyLmpzJztcbmltcG9ydCB7IENIRUNLUE9JTlRfVkVSU0lPTiB9IGZyb20gJy4uL3BhdXNlL3JlY29yZC5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3djaGFydENoZWNrcG9pbnQsIFBhdXNlU2lnbmFsLCBSZWRhY3Rpb25NYXJrcyB9IGZyb20gJy4uL3BhdXNlL3R5cGVzLmpzJztcblxuLyoqIFRoZSBwYXVzZWQgcnVuJ3MgY291bnRlcnMsIGFzIHRoZSBleGVjdXRvciBob2xkcyB0aGVtIGF0IHRoZSBwYXVzZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF1c2VkUnVuIHtcbiAgcmVhZG9ubHkgcnVuSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgZXhlY3V0aW9uQ291bnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgdmlzaXRDb3VudHM6IFJlYWRvbmx5TWFwPHN0cmluZywgbnVtYmVyPjtcbiAgLyoqIFRoZSBydW4ncyByZWRhY3Rpb24gbWFya3Mg4oCUIG5hbWVzIG9ubHkgKGBSZWRhY3Rpb25SdWxlIMK3IG1hcmtzRm9yQ2hlY2twb2ludGApOyBhYnNlbnQgd2hlbiBub25lLiAqL1xuICByZWFkb25seSByZWRhY3Rpb25NYXJrcz86IFJlZGFjdGlvbk1hcmtzO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgZnVsbHkgREVUQUNIRUQsIGxlYW4gY2hlY2twb2ludCBmcm9tIGEgY2F1Z2h0IFBhdXNlU2lnbmFsLlxuICpcbiAqIEV2ZXJ5IGZpZWxkIGlzIGRlZXAtY29waWVkIHZpYSBvbmUgYHN0cnVjdHVyZWRDbG9uZWAgb2YgdGhlIGFzc2VtYmxlZFxuICogY2hlY2twb2ludCwgYmVjYXVzZSB0aGUgcmF3IHBpZWNlcyBhbGlhcyBsaXZlIGVuZ2luZSBzdGF0ZTpcbiAqXG4gKiAgIC0gYHNoYXJlZFN0YXRlYCBJUyBgU2hhcmVkTWVtb3J5YCdzIGN1cnJlbnQgZ2VuZXJhdGlvbiDigJQgbmV2ZXIgZWRpdGVkLFxuICogICAgIGJ1dCAoY29weS1vbi13cml0ZSwgOS4yOS4wKSBldmVyeSBsYXRlciBnZW5lcmF0aW9uIHNoYXJlcyBpdHNcbiAqICAgICB1bmNoYW5nZWQgc3VidHJlZXMsIHNvIGEgY2hlY2twb2ludCB0aGF0IGFsaWFzZWQgaXQgd291bGQgYWxpYXMgdGhlXG4gKiAgICAgcmVzdW1lZCBydW4ncyBzdGF0ZSB0b28uXG4gKiAgIC0gYHN1YmZsb3dTdGF0ZXNgIHZhbHVlcyBhcmUgc2hhbGxvdyBjb3BpZXMgd2hvc2UgTkVTVEVEIG9iamVjdHMgYWxpYXNcbiAqICAgICBzdWJmbG93IG1lbW9yeSwgYW5kIHRoZXkgZ2V0IHNlZWRlZCBiYWNrIGludG8gbGl2ZSBydW50aW1lcyBvbiByZXN1bWUuXG4gKlxuICogVGhlIGNoZWNrcG9pbnQgaXMgcGVyc2lzdGVkIGJ5IGNvbnRyYWN0IChcInN0b3JlIGluIFJlZGlzL1Bvc3RncmVzXCIpIOKAlCBpdFxuICogbXVzdCBuZXZlciBzaGFyZSBzdHJ1Y3R1cmUgd2l0aCB0aGUgZW5naW5lLlxuICpcbiAqIFRoZSBzdGF0ZSBpcyByZWFkIHN0cmFpZ2h0IG9mZiB0aGUgcm9vdCBydW50aW1lJ3Mgc3RvcmUg4oCUIG5vIHNuYXBzaG90IGlzXG4gKiBidWlsdCAoYSBzbmFwc2hvdCB3b3VsZCBidWlsZCB0aGUgZXhlY3V0aW9uIHRyZWUgYW5kIGNvcHkgdGhlIGNvbW1pdCBsb2csXG4gKiB3b3JrIHByb3BvcnRpb25hbCB0byB0aGUgcnVuJ3MgbGVuZ3RoLCBvbmx5IHRvIHRocm93IGJvdGggYXdheSkuXG4gKlxuICogU3ViZmxvdyBzY29wZSBjYXB0dXJlIChgc3ViZmxvd1N0YXRlc2ApIHN1cnZpdmVzIE9OTFkgb24gdGhlIHNpZ25hbCDigJQgdGhlXG4gKiBuZXN0ZWQgcnVudGltZXMgYXJlIEdDJ2QgYXMgdGhlIHN0YWNrIHVud2luZHMuIFByb21vdGluZyBpdCBvbnRvIHRoZVxuICogY2hlY2twb2ludCBoZXJlIGxldHMgY3Jvc3MtZXhlY3V0b3IgcmVzdW1lIHJlc3RvcmUgcHJlLXBhdXNlIHN1YmZsb3dcbiAqIHNjb3BlIChlLmcuIGFuIEFnZW50J3MgYHNjb3BlLmhpc3RvcnlgKS4gVGhlIHNpZ25hbCBjYXB0dXJlcyBhIHN1YmZsb3cgb25seVxuICogYXMgaXQgYnViYmxlcyB0aHJvdWdoIHRoYXQgc3ViZmxvdydzIGJvdW5kYXJ5LCBzbyB0aGUga2V5cyBhcmUgZXhhY3RseSB0aGVcbiAqIHBhdXNlIHBhdGgncy4gRW1wdHkgYHt9YCBmb3Igcm9vdC1sZXZlbCBwYXVzZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFBhdXNlQ2hlY2twb2ludChcbiAgc2lnbmFsOiBQYXVzZVNpZ25hbCxcbiAgdHJhdmVyc2VyOiBGbG93Y2hhcnRUcmF2ZXJzZXI8YW55LCBhbnk+LFxuICBydW46IFBhdXNlZFJ1bixcbik6IEZsb3djaGFydENoZWNrcG9pbnQge1xuICAvLyBFdmVyeSBwYXVzZSB0aGF0IHBhdXNlZCBpbiBUSElTIHJ1biBpcyBuYW1lZCBieSBpdDsgYSBzaWJsaW5nIHJhaXNlZCBhZ2FpblxuICAvLyBvbiByZXN1bWUga2VlcHMgdGhlIHJ1biBpdCBvcmlnaW5hbGx5IHBhdXNlZCBpbi5cbiAgc2lnbmFsLmNvbXBsZXRlRXhlY3V0aW9uKHJ1bi5ydW5JZCk7XG4gIGNvbnN0IGNoZWNrcG9pbnQgPSB7XG4gICAgLy8gVGhlIGZvcm1hdCDigJQgcmVhZCBiYWNrIGJ5IGBwYXVzZS9yZWNvcmQudHMgwrcgZGVjb2RlQ2hlY2twb2ludGAuXG4gICAgY2hlY2twb2ludFZlcnNpb246IENIRUNLUE9JTlRfVkVSU0lPTixcbiAgICBzaGFyZWRTdGF0ZTogdHJhdmVyc2VyLmdldFJ1bnRpbWUoKS5nbG9iYWxTdG9yZS5nZXRTdGF0ZSgpLFxuICAgIHBhdXNlZFN0YWdlSWQ6IHNpZ25hbC5zdGFnZUlkLFxuICAgIC8vIFRoZSBwYXVzZWQgRVhFQ1VUSU9OICg5LjM3LjApIOKAlCBhIHF1ZXVlZCBzaWJsaW5nIHJhaXNlZCBvbiByZXN1bWVcbiAgICAvLyBjYXJyaWVzIHRoZSBydW4gaXQgT1JJR0lOQUxMWSBwYXVzZWQgaW4uXG4gICAgLi4uKHNpZ25hbC5wYXVzZWRFeGVjdXRpb24gJiYgeyBwYXVzZWRFeGVjdXRpb246IHNpZ25hbC5wYXVzZWRFeGVjdXRpb24gfSksXG4gICAgLy8gVGhlIGtleSB0aGUgcGF1c2VkIHRvdWNoaW5nIGV4ZWN1dGlvbiByYW4gdW5kZXIgKDEwLjEpIOKAlCBpdHMgcmVzdW1lIHJ1bnMgdW5kZXIgdGhlIHNhbWUga2V5LlxuICAgIC4uLihzaWduYWwuaWRlbXBvdGVuY3lLZXkgIT09IHVuZGVmaW5lZCAmJiB7IGlkZW1wb3RlbmN5S2V5OiBzaWduYWwuaWRlbXBvdGVuY3lLZXkgfSksXG4gICAgc3ViZmxvd1BhdGg6IHNpZ25hbC5zdWJmbG93UGF0aCxcbiAgICBwYXVzZURhdGE6IHNpZ25hbC5wYXVzZURhdGEsXG4gICAgc3ViZmxvd1N0YXRlczogc2lnbmFsLnN1YmZsb3dTdGF0ZXMsXG4gICAgLy8gQ291bnRlciBjb250aW51aXR5IOKAlCBzZWVkZWQgYmFjayBpbiByZXN1bWUoKSBzbyBydW50aW1lU3RhZ2VJZHMgc3RheVxuICAgIC8vIHVuaXF1ZSBhbmQgbG9vcEl0ZXJhdGlvbiBzdGF5cyBtb25vdG9uaWMgYWNyb3NzIGEgQ1JPU1MtZXhlY3V0b3IgcmVzdW1lXG4gICAgLy8gKGJvdGggYXJlIHBsYWluIG51bWJlci9yZWNvcmQsIHNvIHRoZXkgcmlkZSB0aGUgc2luZ2xlIHN0cnVjdHVyZWRDbG9uZVxuICAgIC8vIGJlbG93IHVudG91Y2hlZCkuIFNlZSB0ZXN0L2xpYi9wYXVzZS9yZXN1bWUtZXhlY3V0aW9uLWNvdW50ZXItY29udGludWl0eS50ZXN0LnRzLlxuICAgIGV4ZWN1dGlvbkNvdW50OiBydW4uZXhlY3V0aW9uQ291bnQsXG4gICAgdmlzaXRDb3VudHM6IE9iamVjdC5mcm9tRW50cmllcyhydW4udmlzaXRDb3VudHMpLFxuICAgIC8vIEludm9rZXIgY29udGV4dCDigJQgY29sbGVjdGVkIGR1cmluZyB0cmF2ZXJzYWwgYnViYmxlLXVwIChub3QgdHJlZS13YWxrZWQpLlxuICAgIC8vIChgY29udGludWF0aW9uU3RhZ2VJZGAgaXMgbGVnYWN5LW9ubHkgc2luY2UgOS4zOS4wOiBubyBsb25nZXIgd3JpdHRlbi4pXG4gICAgLi4uKHNpZ25hbC5pbnZva2VyU3RhZ2VJZCAmJiB7IGludm9rZXJTdGFnZUlkOiBzaWduYWwuaW52b2tlclN0YWdlSWQgfSksXG4gICAgLy8gUGFyYWxsZWwgc2libGluZ3MnIHBhdXNlcyBmcm9tIHRoZSBzYW1lIGZhbi1vdXQsIHdhaXRpbmcgdGhlaXIgdHVyblxuICAgIC8vICg5LjI4LjApLiBBYnNlbnQgd2hlbiBvbmx5IG9uZSBjaGlsZCBwYXVzZWQg4oCUIHRoZSBzaGFwZSBldmVyeVxuICAgIC8vIGVhcmxpZXIgY2hlY2twb2ludCBoYXMuXG4gICAgLi4uKHNpZ25hbC5wZW5kaW5nUGF1c2VzLmxlbmd0aCA+IDAgJiYgeyBwZW5kaW5nUGF1c2VzOiBzaWduYWwucGVuZGluZ1BhdXNlcyB9KSxcbiAgICAvLyBIT1cgdGhlIHBhdXNlIHdhcyByYWlzZWQuIE9uZSBjaGVja3BvaW50IHNoYXBlLCBvbmUgZXh0cmEgb3B0aW9uYWxcbiAgICAvLyBmaWVsZCDigJQgYW4gaW50ZXJydXB0KCkgcGF1c2UgaXMgbm90IGEgc2Vjb25kIGtpbmQgb2YgY2hlY2twb2ludCwgaXQgaXNcbiAgICAvLyB0aGUgc2FtZSBjaGVja3BvaW50IHRoYXQgcmVzdW1lKCkgcmUtZW50ZXJzIGRpZmZlcmVudGx5IChzdGFnZSB0b3AgdnNcbiAgICAvLyByZXN1bWVGbikuIEFic2VudCBmb3IgZXZlcnkgcHJlLTkuMTQuMCBjaGVja3BvaW50LCB3aGljaCBpcyBjb3JyZWN0LlxuICAgIC4uLihzaWduYWwucGF1c2VkQnkgJiYgeyBwYXVzZWRCeTogc2lnbmFsLnBhdXNlZEJ5IH0pLFxuICAgIC8vIFRoZSByZWRhY3Rpb24gdGhlIHBhdXNlZCBydW4gaGFkIG1hZGUg4oCUIE5BTUVTIG9ubHkgKG1hcmtzLCBhIG1hcHBlcidzIHRhaW50cywgaW5oZXJpdGVkXG4gICAgLy8gZmllbGRzKS4gUmVzdW1lIHNlZWRzIHRoZSByZXN1bWVkIHJ1bidzIHJ1bGUgd2l0aCB0aGVtLiBBYnNlbnQgd2hlbiBub3RoaW5nIHdhcyBtYXJrZWQuXG4gICAgLi4uKHJ1bi5yZWRhY3Rpb25NYXJrcyAmJiB7IHJlZGFjdGlvbk1hcmtzOiBydW4ucmVkYWN0aW9uTWFya3MgfSksXG4gICAgcGF1c2VkQXQ6IERhdGUubm93KCksXG4gIH07XG4gIHRyeSB7XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRDbG9uZShjaGVja3BvaW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBHZW51aW5lIEpTT04tc2FmZSBjb250cmFjdCB2aW9sYXRpb24gaW4gY29uc3VtZXItb3duZWQgZGF0YS5cbiAgICB0aHJvdyBkZXNjcmliZUNoZWNrcG9pbnRDbG9uZUZhaWx1cmUoY2hlY2twb2ludCwgZXJyb3IpO1xuICB9XG59XG5cbi8qKiBgdHJ1ZWAgd2hlbiBgc3RydWN0dXJlZENsb25lYCBhY2NlcHRzIHRoZSB2YWx1ZSBhcy1pcy4gKi9cbmZ1bmN0aW9uIGlzQ2xvbmVhYmxlKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgc3RydWN0dXJlZENsb25lKHZhbHVlKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIERFU0NSSVBUSVZFIGVycm9yIGZvciBhIGNoZWNrcG9pbnQgdGhhdCBjYW5ub3QgYmUgY2xvbmVkIOKAlCB0aGVcbiAqIG5vbi1jbG9uZWFibGUgdmFsdWUgbGl2ZXMgaW4gY29uc3VtZXItb3duZWQgZGF0YSAoYSBnZW51aW5lIEpTT04tc2FmZVxuICogY29udHJhY3QgdmlvbGF0aW9uKS4gUHJvYmVzIGVhY2ggdG9wLWxldmVsIGNoZWNrcG9pbnQgZmllbGQgaW5kaXZpZHVhbGx5IHNvXG4gKiB0aGUgbWVzc2FnZSBuYW1lcyB0aGUgb2ZmZW5kaW5nIGZpZWxkIGZhbWlseS4gTmV2ZXIgbGV0cyBhIG5ha2VkXG4gKiBgRGF0YUNsb25lRXJyb3JgIGVzY2FwZS5cbiAqL1xuZnVuY3Rpb24gZGVzY3JpYmVDaGVja3BvaW50Q2xvbmVGYWlsdXJlKGNoZWNrcG9pbnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBjYXVzZTogdW5rbm93bik6IEVycm9yIHtcbiAgY29uc3QgZmFpbGluZyA9IE9iamVjdC5lbnRyaWVzKGNoZWNrcG9pbnQpXG4gICAgLmZpbHRlcigoWywgdmFsdWVdKSA9PiAhaXNDbG9uZWFibGUodmFsdWUpKVxuICAgIC5tYXAoKFtmaWVsZF0pID0+IGZpZWxkKTtcbiAgY29uc3QgZmllbGRzID0gZmFpbGluZy5sZW5ndGggPiAwID8gZmFpbGluZy5qb2luKCcsICcpIDogJ3Vua25vd24nO1xuICByZXR1cm4gbmV3IEVycm9yKFxuICAgICdGbG93Q2hhcnRFeGVjdXRvcjogY2Fubm90IGJ1aWxkIHRoZSBwYXVzZSBjaGVja3BvaW50IOKAlCBub24tc2VyaWFsaXphYmxlIHZhbHVlKHMpIGluICcgK1xuICAgICAgYGNoZWNrcG9pbnQgZmllbGQocyk6ICR7ZmllbGRzfS4gVGhlIGNoZWNrcG9pbnQgY29udHJhY3QgaXMgSlNPTi1zYWZlIChubyBmdW5jdGlvbnMsIG5vIGAgK1xuICAgICAgXCJjbGFzcyBpbnN0YW5jZXMpLiBDaGVjayB0aGUgcGF1c2VEYXRhIHJldHVybmVkIGJ5IHRoZSBwYXVzYWJsZSBzdGFnZSdzIGV4ZWN1dGUoKSwgYW5kIGFueSBcIiArXG4gICAgICAnc3ViZmxvdyBzdGF0ZSBjYXB0dXJlZCBhdCB0aGUgcGF1c2UuIERpYWdub3N0aWMgdmFsdWVzIGZyb20gJGRlYnVnLyRtZXRyaWMvJGVycm9yLyRldmFsICcgK1xuICAgICAgJ2FyZSBuZXZlciBwYXJ0IG9mIGEgY2hlY2twb2ludCBhbmQgbmV2ZXIgY2F1c2UgdGhpcyBlcnJvci4gJyArXG4gICAgICAnU2VlIGRvY3MvZ3VpZGVzL2V4ZWN1dGlvbi1tb2RlbC5tZCAoXCJQYXVzZSAvIHJlc3VtZSDigJQgd2hhdCBhIGNoZWNrcG9pbnQgY2FwdHVyZXNcIikuJyxcbiAgICB7IGNhdXNlIH0sXG4gICk7XG59XG4iXX0=
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ /**
3
+ * runner/deadline.ts — `armRun`: the run's ONE effective signal and its deadline (design §3.1, P1b).
4
+ *
5
+ * A run has three ways to be told to stop — `RunOptions.signal`, `env.signal`, and a deadline (`RunOptions.deadline`,
6
+ * `now + RunOptions.timeoutMs`, or `env.deadline`; the earliest wins). Before 10.1 they did not compose: `timeoutMs`
7
+ * was ignored beside a `signal`, and `env.signal` was readable but never raced. `armRun` composes all of them into
8
+ * one signal the traverser races (and hands every subflow), and stamps the env a stage reads:
9
+ *
10
+ * env.deadline = the deadline (epoch ms) env.signal = the one composed signal
11
+ *
12
+ * — but only when there is something to stamp AND somewhere it was already going: a deadline always gives the run
13
+ * an env; a signal is stamped onto an env the caller gave. A run with no deadline and no env keeps no env, so a
14
+ * stage's `$getEnv()` stays `{}` and its commit carries no `'env'` mark — byte-identical to 10.0.
15
+ *
16
+ * At the deadline the signal aborts with a BRANDED reason (`attempt/deadline.ts`) carrying the message a run with
17
+ * `timeoutMs` always rejected with, so the attempt runner reads it as "out of time" (`timeout` / `no-time-left`),
18
+ * never as a cancellation.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.armRun = void 0;
22
+ const anySignal_js_1 = require("../attempt/anySignal.js");
23
+ const deadline_js_1 = require("../attempt/deadline.js");
24
+ /** Compose the run's signal and deadline from its options; `now` is the clock (epoch ms). */
25
+ function armRun(timing, now = Date.now) {
26
+ const startedAt = now();
27
+ // Each input read ONCE: a getter on the env cannot stamp a deadline that was never armed.
28
+ const env = timing.env;
29
+ const envDeadline = env?.deadline;
30
+ const envSignal = env?.signal;
31
+ const deadline = earliestDeadline(timing, envDeadline, startedAt);
32
+ const controller = deadline !== undefined ? new AbortController() : undefined;
33
+ // `env.signal` was readable-only before 10.1: a value that is not a signal is still only readable, never raced.
34
+ const sources = [
35
+ timing.signal,
36
+ (0, deadline_js_1.isAbortSignal)(envSignal) ? envSignal : undefined,
37
+ timing.stop,
38
+ controller?.signal,
39
+ ].filter((s) => s !== undefined);
40
+ // One source is used as it is (the caller's own signal, untouched); two or more are composed. Composed BEFORE
41
+ // the timer is armed, so a composition that throws leaves no timer behind.
42
+ const composed = sources.length > 1 ? (0, anySignal_js_1.anySignal)(sources) : undefined;
43
+ const signal = composed?.signal ?? sources[0];
44
+ let cancelTimer;
45
+ if (controller !== undefined && deadline !== undefined) {
46
+ const reason = (0, deadline_js_1.deadlineReason)(deadlineMessage(timing, deadline, startedAt));
47
+ const left = deadline - startedAt;
48
+ if (left <= 0)
49
+ controller.abort(reason);
50
+ else
51
+ cancelTimer = (0, deadline_js_1.setLongTimeout)(() => controller.abort(reason), left);
52
+ }
53
+ let disposed = false;
54
+ return {
55
+ signal,
56
+ env: stampedEnv(env, envSignal, signal, deadline),
57
+ deadline,
58
+ dispose: () => {
59
+ if (disposed)
60
+ return;
61
+ disposed = true;
62
+ cancelTimer?.();
63
+ composed?.dispose();
64
+ },
65
+ };
66
+ }
67
+ exports.armRun = armRun;
68
+ /** The earliest valid deadline of the three inputs. `timeoutMs` 0 (or not finite) arms nothing, as it never did. */
69
+ function earliestDeadline(timing, envDeadline, startedAt) {
70
+ const fromTimeout = typeof timing.timeoutMs === 'number' && Number.isFinite(timing.timeoutMs) && timing.timeoutMs !== 0
71
+ ? startedAt + timing.timeoutMs
72
+ : undefined;
73
+ const candidates = [(0, deadline_js_1.readDeadline)(timing.deadline), fromTimeout, (0, deadline_js_1.readDeadline)(envDeadline)].filter((d) => d !== undefined);
74
+ return candidates.length > 0 ? Math.min(...candidates) : undefined;
75
+ }
76
+ /** The deadline's message: `timeoutMs`'s historical one when it set the deadline, else the deadline's own. */
77
+ function deadlineMessage(timing, deadline, startedAt) {
78
+ if (typeof timing.timeoutMs === 'number' && startedAt + timing.timeoutMs === deadline) {
79
+ return `Execution timed out after ${timing.timeoutMs}ms`;
80
+ }
81
+ return `Execution passed its deadline (${deadline} epoch ms)`;
82
+ }
83
+ /** The env stages read: the caller's, plus the deadline and the one signal — only where there is one to stamp. */
84
+ function stampedEnv(env, envSignal, signal, deadline) {
85
+ const hasEnv = env !== undefined && Object.keys(env).length > 0;
86
+ if (deadline === undefined && (!hasEnv || signal === undefined || envSignal === signal))
87
+ return env;
88
+ return {
89
+ ...env,
90
+ ...(signal !== undefined && { signal }),
91
+ ...(deadline !== undefined && { deadline }),
92
+ };
93
+ }
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVhZGxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3J1bm5lci9kZWFkbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHOzs7QUFFSCwwREFBb0Q7QUFDcEQsd0RBQXFHO0FBMEJyRyw2RkFBNkY7QUFDN0YsU0FBZ0IsTUFBTSxDQUFDLE1BQWlCLEVBQUUsTUFBb0IsSUFBSSxDQUFDLEdBQUc7SUFDcEUsTUFBTSxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDeEIsMEZBQTBGO0lBQzFGLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDdkIsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFLFFBQVEsQ0FBQztJQUNsQyxNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDO0lBQzlCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFbEUsTUFBTSxVQUFVLEdBQUcsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzlFLGdIQUFnSDtJQUNoSCxNQUFNLE9BQU8sR0FBRztRQUNkLE1BQU0sQ0FBQyxNQUFNO1FBQ2IsSUFBQSwyQkFBYSxFQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDaEQsTUFBTSxDQUFDLElBQUk7UUFDWCxVQUFVLEVBQUUsTUFBTTtLQUNuQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBb0IsRUFBRSxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUNuRCw4R0FBOEc7SUFDOUcsMkVBQTJFO0lBQzNFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FB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QUFTLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUNwRyxPQUFPO1FBQ0wsR0FBRyxHQUFHO1FBQ04sR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN2QyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0tBQzVDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBydW5uZXIvZGVhZGxpbmUudHMg4oCUIGBhcm1SdW5gOiB0aGUgcnVuJ3MgT05FIGVmZmVjdGl2ZSBzaWduYWwgYW5kIGl0cyBkZWFkbGluZSAoZGVzaWduIMKnMy4xLCBQMWIpLlxuICpcbiAqIEEgcnVuIGhhcyB0aHJlZSB3YXlzIHRvIGJlIHRvbGQgdG8gc3RvcCDigJQgYFJ1bk9wdGlvbnMuc2lnbmFsYCwgYGVudi5zaWduYWxgLCBhbmQgYSBkZWFkbGluZSAoYFJ1bk9wdGlvbnMuZGVhZGxpbmVgLFxuICogYG5vdyArIFJ1bk9wdGlvbnMudGltZW91dE1zYCwgb3IgYGVudi5kZWFkbGluZWA7IHRoZSBlYXJsaWVzdCB3aW5zKS4gQmVmb3JlIDEwLjEgdGhleSBkaWQgbm90IGNvbXBvc2U6IGB0aW1lb3V0TXNgXG4gKiB3YXMgaWdub3JlZCBiZXNpZGUgYSBgc2lnbmFsYCwgYW5kIGBlbnYuc2lnbmFsYCB3YXMgcmVhZGFibGUgYnV0IG5ldmVyIHJhY2VkLiBgYXJtUnVuYCBjb21wb3NlcyBhbGwgb2YgdGhlbSBpbnRvXG4gKiBvbmUgc2lnbmFsIHRoZSB0cmF2ZXJzZXIgcmFjZXMgKGFuZCBoYW5kcyBldmVyeSBzdWJmbG93KSwgYW5kIHN0YW1wcyB0aGUgZW52IGEgc3RhZ2UgcmVhZHM6XG4gKlxuICogICBlbnYuZGVhZGxpbmUgPSB0aGUgZGVhZGxpbmUgKGVwb2NoIG1zKSAgICAgIGVudi5zaWduYWwgPSB0aGUgb25lIGNvbXBvc2VkIHNpZ25hbFxuICpcbiAqIOKAlCBidXQgb25seSB3aGVuIHRoZXJlIGlzIHNvbWV0aGluZyB0byBzdGFtcCBBTkQgc29tZXdoZXJlIGl0IHdhcyBhbHJlYWR5IGdvaW5nOiBhIGRlYWRsaW5lIGFsd2F5cyBnaXZlcyB0aGUgcnVuXG4gKiBhbiBlbnY7IGEgc2lnbmFsIGlzIHN0YW1wZWQgb250byBhbiBlbnYgdGhlIGNhbGxlciBnYXZlLiBBIHJ1biB3aXRoIG5vIGRlYWRsaW5lIGFuZCBubyBlbnYga2VlcHMgbm8gZW52LCBzbyBhXG4gKiBzdGFnZSdzIGAkZ2V0RW52KClgIHN0YXlzIGB7fWAgYW5kIGl0cyBjb21taXQgY2FycmllcyBubyBgJ2VudidgIG1hcmsg4oCUIGJ5dGUtaWRlbnRpY2FsIHRvIDEwLjAuXG4gKlxuICogQXQgdGhlIGRlYWRsaW5lIHRoZSBzaWduYWwgYWJvcnRzIHdpdGggYSBCUkFOREVEIHJlYXNvbiAoYGF0dGVtcHQvZGVhZGxpbmUudHNgKSBjYXJyeWluZyB0aGUgbWVzc2FnZSBhIHJ1biB3aXRoXG4gKiBgdGltZW91dE1zYCBhbHdheXMgcmVqZWN0ZWQgd2l0aCwgc28gdGhlIGF0dGVtcHQgcnVubmVyIHJlYWRzIGl0IGFzIFwib3V0IG9mIHRpbWVcIiAoYHRpbWVvdXRgIC8gYG5vLXRpbWUtbGVmdGApLFxuICogbmV2ZXIgYXMgYSBjYW5jZWxsYXRpb24uXG4gKi9cblxuaW1wb3J0IHsgYW55U2lnbmFsIH0gZnJvbSAnLi4vYXR0ZW1wdC9hbnlTaWduYWwuanMnO1xuaW1wb3J0IHsgZGVhZGxpbmVSZWFzb24sIGlzQWJvcnRTaWduYWwsIHJlYWREZWFkbGluZSwgc2V0TG9uZ1RpbWVvdXQgfSBmcm9tICcuLi9hdHRlbXB0L2RlYWRsaW5lLmpzJztcbmltcG9ydCB0eXBlIHsgRXhlY3V0aW9uRW52IH0gZnJvbSAnLi4vZW5naW5lL3R5cGVzLmpzJztcblxuLyoqIFdoYXQgYGFybVJ1bmAgcmVhZHMg4oCUIHRoZSBydW4ncyBvd24gb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuVGltaW5nIHtcbiAgcmVhZG9ubHkgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIHJlYWRvbmx5IHRpbWVvdXRNcz86IG51bWJlcjtcbiAgcmVhZG9ubHkgZGVhZGxpbmU/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGVudj86IEV4ZWN1dGlvbkVudjtcbiAgLyoqXG4gICAqIFRoZSBleGVjdXRvcidzIG93biBzdG9wICgxMC4xLCBQNik6IGEgcmVjb3JkIHNpbmsgd2l0aCBgb25GYWlsdXJlOiAnZmFpbCdgIGFib3J0cyBpdCBhdCB0aGUgZmlyc3QgbG9zdCBlbnRyeSxcbiAgICogd2l0aCB0aGUgYFJlY29yZFNpbmtFcnJvcmAgYXMgaXRzIHJlYXNvbi4gQ29tcG9zZWQgbGlrZSB0aGUgb3RoZXJzOyBhYnNlbnQgZm9yIGV2ZXJ5IG90aGVyIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IHN0b3A/OiBBYm9ydFNpZ25hbDtcbn1cblxuLyoqIFRoZSBhcm1lZCBydW46IHRoZSBzaWduYWwgdGhlIHRyYXZlcnNlciByYWNlcywgdGhlIGVudiBzdGFnZXMgcmVhZCwgYW5kIHRoZSBvbmUgY2FsbCB0aGF0IHJlbGVhc2VzIGJvdGguICovXG5leHBvcnQgaW50ZXJmYWNlIEFybWVkUnVuIHtcbiAgcmVhZG9ubHkgc2lnbmFsOiBBYm9ydFNpZ25hbCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW52OiBFeGVjdXRpb25FbnYgfCB1bmRlZmluZWQ7XG4gIC8qKiBUaGUgcnVuJ3MgZGVhZGxpbmUsIGVwb2NoIG1zIOKAlCBhYnNlbnQgd2l0aG91dCBvbmUuICovXG4gIHJlYWRvbmx5IGRlYWRsaW5lOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKiBDbGVhciB0aGUgZGVhZGxpbmUgdGltZXIgYW5kIHJlbW92ZSBldmVyeSBsaXN0ZW5lciBjb21wb3NpdGlvbiBhZGRlZC4gSWRlbXBvdGVudC4gKi9cbiAgZGlzcG9zZSgpOiB2b2lkO1xufVxuXG4vKiogQ29tcG9zZSB0aGUgcnVuJ3Mgc2lnbmFsIGFuZCBkZWFkbGluZSBmcm9tIGl0cyBvcHRpb25zOyBgbm93YCBpcyB0aGUgY2xvY2sgKGVwb2NoIG1zKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcm1SdW4odGltaW5nOiBSdW5UaW1pbmcsIG5vdzogKCkgPT4gbnVtYmVyID0gRGF0ZS5ub3cpOiBBcm1lZFJ1biB7XG4gIGNvbnN0IHN0YXJ0ZWRBdCA9IG5vdygpO1xuICAvLyBFYWNoIGlucHV0IHJlYWQgT05DRTogYSBnZXR0ZXIgb24gdGhlIGVudiBjYW5ub3Qgc3RhbXAgYSBkZWFkbGluZSB0aGF0IHdhcyBuZXZlciBhcm1lZC5cbiAgY29uc3QgZW52ID0gdGltaW5nLmVudjtcbiAgY29uc3QgZW52RGVhZGxpbmUgPSBlbnY/LmRlYWRsaW5lO1xuICBjb25zdCBlbnZTaWduYWwgPSBlbnY/LnNpZ25hbDtcbiAgY29uc3QgZGVhZGxpbmUgPSBlYXJsaWVzdERlYWRsaW5lKHRpbWluZywgZW52RGVhZGxpbmUsIHN0YXJ0ZWRBdCk7XG5cbiAgY29uc3QgY29udHJvbGxlciA9IGRlYWRsaW5lICE9PSB1bmRlZmluZWQgPyBuZXcgQWJvcnRDb250cm9sbGVyKCkgOiB1bmRlZmluZWQ7XG4gIC8vIGBlbnYuc2lnbmFsYCB3YXMgcmVhZGFibGUtb25seSBiZWZvcmUgMTAuMTogYSB2YWx1ZSB0aGF0IGlzIG5vdCBhIHNpZ25hbCBpcyBzdGlsbCBvbmx5IHJlYWRhYmxlLCBuZXZlciByYWNlZC5cbiAgY29uc3Qgc291cmNlcyA9IFtcbiAgICB0aW1pbmcuc2lnbmFsLFxuICAgIGlzQWJvcnRTaWduYWwoZW52U2lnbmFsKSA/IGVudlNpZ25hbCA6IHVuZGVmaW5lZCxcbiAgICB0aW1pbmcuc3RvcCxcbiAgICBjb250cm9sbGVyPy5zaWduYWwsXG4gIF0uZmlsdGVyKChzKTogcyBpcyBBYm9ydFNpZ25hbCA9PiBzICE9PSB1bmRlZmluZWQpO1xuICAvLyBPbmUgc291cmNlIGlzIHVzZWQgYXMgaXQgaXMgKHRoZSBjYWxsZXIncyBvd24gc2lnbmFsLCB1bnRvdWNoZWQpOyB0d28gb3IgbW9yZSBhcmUgY29tcG9zZWQuIENvbXBvc2VkIEJFRk9SRVxuICAvLyB0aGUgdGltZXIgaXMgYXJtZWQsIHNvIGEgY29tcG9zaXRpb24gdGhhdCB0aHJvd3MgbGVhdmVzIG5vIHRpbWVyIGJlaGluZC5cbiAgY29uc3QgY29tcG9zZWQgPSBzb3VyY2VzLmxlbmd0aCA+IDEgPyBhbnlTaWduYWwoc291cmNlcykgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHNpZ25hbCA9IGNvbXBvc2VkPy5zaWduYWwgPz8gc291cmNlc1swXTtcblxuICBsZXQgY2FuY2VsVGltZXI6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgaWYgKGNvbnRyb2xsZXIgIT09IHVuZGVmaW5lZCAmJiBkZWFkbGluZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgcmVhc29uID0gZGVhZGxpbmVSZWFzb24oZGVhZGxpbmVNZXNzYWdlKHRpbWluZywgZGVhZGxpbmUsIHN0YXJ0ZWRBdCkpO1xuICAgIGNvbnN0IGxlZnQgPSBkZWFkbGluZSAtIHN0YXJ0ZWRBdDtcbiAgICBpZiAobGVmdCA8PSAwKSBjb250cm9sbGVyLmFib3J0KHJlYXNvbik7XG4gICAgZWxzZSBjYW5jZWxUaW1lciA9IHNldExvbmdUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQocmVhc29uKSwgbGVmdCk7XG4gIH1cblxuICBsZXQgZGlzcG9zZWQgPSBmYWxzZTtcbiAgcmV0dXJuIHtcbiAgICBzaWduYWwsXG4gICAgZW52OiBzdGFtcGVkRW52KGVudiwgZW52U2lnbmFsLCBzaWduYWwsIGRlYWRsaW5lKSxcbiAgICBkZWFkbGluZSxcbiAgICBkaXNwb3NlOiAoKSA9PiB7XG4gICAgICBpZiAoZGlzcG9zZWQpIHJldHVybjtcbiAgICAgIGRpc3Bvc2VkID0gdHJ1ZTtcbiAgICAgIGNhbmNlbFRpbWVyPy4oKTtcbiAgICAgIGNvbXBvc2VkPy5kaXNwb3NlKCk7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqIFRoZSBlYXJsaWVzdCB2YWxpZCBkZWFkbGluZSBvZiB0aGUgdGhyZWUgaW5wdXRzLiBgdGltZW91dE1zYCAwIChvciBub3QgZmluaXRlKSBhcm1zIG5vdGhpbmcsIGFzIGl0IG5ldmVyIGRpZC4gKi9cbmZ1bmN0aW9uIGVhcmxpZXN0RGVhZGxpbmUodGltaW5nOiBSdW5UaW1pbmcsIGVudkRlYWRsaW5lOiB1bmtub3duLCBzdGFydGVkQXQ6IG51bWJlcik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGZyb21UaW1lb3V0ID1cbiAgICB0eXBlb2YgdGltaW5nLnRpbWVvdXRNcyA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHRpbWluZy50aW1lb3V0TXMpICYmIHRpbWluZy50aW1lb3V0TXMgIT09IDBcbiAgICAgID8gc3RhcnRlZEF0ICsgdGltaW5nLnRpbWVvdXRNc1xuICAgICAgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGNhbmRpZGF0ZXMgPSBbcmVhZERlYWRsaW5lKHRpbWluZy5kZWFkbGluZSksIGZyb21UaW1lb3V0LCByZWFkRGVhZGxpbmUoZW52RGVhZGxpbmUpXS5maWx0ZXIoXG4gICAgKGQpOiBkIGlzIG51bWJlciA9PiBkICE9PSB1bmRlZmluZWQsXG4gICk7XG4gIHJldHVybiBjYW5kaWRhdGVzLmxlbmd0aCA+IDAgPyBNYXRoLm1pbiguLi5jYW5kaWRhdGVzKSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIFRoZSBkZWFkbGluZSdzIG1lc3NhZ2U6IGB0aW1lb3V0TXNgJ3MgaGlzdG9yaWNhbCBvbmUgd2hlbiBpdCBzZXQgdGhlIGRlYWRsaW5lLCBlbHNlIHRoZSBkZWFkbGluZSdzIG93bi4gKi9cbmZ1bmN0aW9uIGRlYWRsaW5lTWVzc2FnZSh0aW1pbmc6IFJ1blRpbWluZywgZGVhZGxpbmU6IG51bWJlciwgc3RhcnRlZEF0OiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHRpbWluZy50aW1lb3V0TXMgPT09ICdudW1iZXInICYmIHN0YXJ0ZWRBdCArIHRpbWluZy50aW1lb3V0TXMgPT09IGRlYWRsaW5lKSB7XG4gICAgcmV0dXJuIGBFeGVjdXRpb24gdGltZWQgb3V0IGFmdGVyICR7dGltaW5nLnRpbWVvdXRNc31tc2A7XG4gIH1cbiAgcmV0dXJuIGBFeGVjdXRpb24gcGFzc2VkIGl0cyBkZWFkbGluZSAoJHtkZWFkbGluZX0gZXBvY2ggbXMpYDtcbn1cblxuLyoqIFRoZSBlbnYgc3RhZ2VzIHJlYWQ6IHRoZSBjYWxsZXIncywgcGx1cyB0aGUgZGVhZGxpbmUgYW5kIHRoZSBvbmUgc2lnbmFsIOKAlCBvbmx5IHdoZXJlIHRoZXJlIGlzIG9uZSB0byBzdGFtcC4gKi9cbmZ1bmN0aW9uIHN0YW1wZWRFbnYoXG4gIGVudjogRXhlY3V0aW9uRW52IHwgdW5kZWZpbmVkLFxuICBlbnZTaWduYWw6IHVua25vd24sXG4gIHNpZ25hbDogQWJvcnRTaWduYWwgfCB1bmRlZmluZWQsXG4gIGRlYWRsaW5lOiBudW1iZXIgfCB1bmRlZmluZWQsXG4pOiBFeGVjdXRpb25FbnYgfCB1bmRlZmluZWQge1xuICBjb25zdCBoYXNFbnYgPSBlbnYgIT09IHVuZGVmaW5lZCAmJiBPYmplY3Qua2V5cyhlbnYpLmxlbmd0aCA+IDA7XG4gIGlmIChkZWFkbGluZSA9PT0gdW5kZWZpbmVkICYmICghaGFzRW52IHx8IHNpZ25hbCA9PT0gdW5kZWZpbmVkIHx8IGVudlNpZ25hbCA9PT0gc2lnbmFsKSkgcmV0dXJuIGVudjtcbiAgcmV0dXJuIHtcbiAgICAuLi5lbnYsXG4gICAgLi4uKHNpZ25hbCAhPT0gdW5kZWZpbmVkICYmIHsgc2lnbmFsIH0pLFxuICAgIC4uLihkZWFkbGluZSAhPT0gdW5kZWZpbmVkICYmIHsgZGVhZGxpbmUgfSksXG4gIH07XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RunContext = exports.listSubflowPaths = exports.getSubtreeSnapshot = exports.FlowChartExecutor = exports.ExecutionRuntime = void 0;
3
+ exports.RunContext = exports.RecordSinkError = exports.listSubflowPaths = exports.getSubtreeSnapshot = exports.FlowChartExecutor = exports.ExecutionRuntime = void 0;
4
4
  var ExecutionRuntime_js_1 = require("./ExecutionRuntime.js");
5
5
  Object.defineProperty(exports, "ExecutionRuntime", { enumerable: true, get: function () { return ExecutionRuntime_js_1.ExecutionRuntime; } });
6
6
  var FlowChartExecutor_js_1 = require("./FlowChartExecutor.js");
@@ -8,6 +8,8 @@ Object.defineProperty(exports, "FlowChartExecutor", { enumerable: true, get: fun
8
8
  var getSubtreeSnapshot_js_1 = require("./getSubtreeSnapshot.js");
9
9
  Object.defineProperty(exports, "getSubtreeSnapshot", { enumerable: true, get: function () { return getSubtreeSnapshot_js_1.getSubtreeSnapshot; } });
10
10
  Object.defineProperty(exports, "listSubflowPaths", { enumerable: true, get: function () { return getSubtreeSnapshot_js_1.listSubflowPaths; } });
11
+ var recordSink_js_1 = require("./recordSink.js");
12
+ Object.defineProperty(exports, "RecordSinkError", { enumerable: true, get: function () { return recordSink_js_1.RecordSinkError; } });
11
13
  var RunContext_js_1 = require("./RunContext.js");
12
14
  Object.defineProperty(exports, "RunContext", { enumerable: true, get: function () { return RunContext_js_1.RunContext; } });
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3J1bm5lci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFTQSw2REFBeUQ7QUFBaEQsdUhBQUEsZ0JBQWdCLE9BQUE7QUFDekIsK0RBQTJEO0FBQWxELHlIQUFBLGlCQUFpQixPQUFBO0FBRTFCLGlFQUErRTtBQUF0RSwySEFBQSxrQkFBa0IsT0FBQTtBQUFFLHlIQUFBLGdCQUFnQixPQUFBO0FBRzdDLGlEQUE2QztBQUFwQywyR0FBQSxVQUFVLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpc3RhbmJ1bCBpZ25vcmUgZmlsZSAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NhYmxlUnVubmVyIH0gZnJvbSAnLi9Db21wb3NhYmxlUnVubmVyLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQXR0YWNoUmVjb3JkZXJPcHRpb25zLFxuICBPYnNlcnZlckRlbGl2ZXJ5LFxuICBPYnNlcnZlckRyYWluUmVzdWx0LFxuICBPYnNlcnZlclN0YXRzLFxufSBmcm9tICcuL0RlZmVycmVkT2JzZXJ2ZXJUaWVyLmpzJztcbmV4cG9ydCB0eXBlIHsgUmVjb3JkZXJTbmFwc2hvdCwgUnVudGltZVNuYXBzaG90IH0gZnJvbSAnLi9FeGVjdXRpb25SdW50aW1lLmpzJztcbmV4cG9ydCB7IEV4ZWN1dGlvblJ1bnRpbWUgfSBmcm9tICcuL0V4ZWN1dGlvblJ1bnRpbWUuanMnO1xuZXhwb3J0IHsgRmxvd0NoYXJ0RXhlY3V0b3IgfSBmcm9tICcuL0Zsb3dDaGFydEV4ZWN1dG9yLmpzJztcbmV4cG9ydCB0eXBlIHsgU3VidHJlZVNuYXBzaG90IH0gZnJvbSAnLi9nZXRTdWJ0cmVlU25hcHNob3QuanMnO1xuZXhwb3J0IHsgZ2V0U3VidHJlZVNuYXBzaG90LCBsaXN0U3ViZmxvd1BhdGhzIH0gZnJvbSAnLi9nZXRTdWJ0cmVlU25hcHNob3QuanMnO1xuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMuanMnO1xuZXhwb3J0IHR5cGUgeyBSdW5SZXN1bHQgfSBmcm9tICcuL1J1bkNvbnRleHQuanMnO1xuZXhwb3J0IHsgUnVuQ29udGV4dCB9IGZyb20gJy4vUnVuQ29udGV4dC5qcyc7XG5leHBvcnQgdHlwZSB7IFJ1bm5hYmxlRmxvd0NoYXJ0IH0gZnJvbSAnLi9SdW5uYWJsZUNoYXJ0LmpzJztcbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3J1bm5lci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFTQSw2REFBeUQ7QUFBaEQsdUhBQUEsZ0JBQWdCLE9BQUE7QUFDekIsK0RBQTJEO0FBQWxELHlIQUFBLGlCQUFpQixPQUFBO0FBRTFCLGlFQUErRTtBQUF0RSwySEFBQSxrQkFBa0IsT0FBQTtBQUFFLHlIQUFBLGdCQUFnQixPQUFBO0FBUzdDLGlEQUFrRDtBQUF6QyxnSEFBQSxlQUFlLE9BQUE7QUFFeEIsaURBQTZDO0FBQXBDLDJHQUFBLFVBQVUsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGlzdGFuYnVsIGlnbm9yZSBmaWxlICovXG5leHBvcnQgdHlwZSB7IENvbXBvc2FibGVSdW5uZXIgfSBmcm9tICcuL0NvbXBvc2FibGVSdW5uZXIuanMnO1xuZXhwb3J0IHR5cGUge1xuICBBdHRhY2hSZWNvcmRlck9wdGlvbnMsXG4gIE9ic2VydmVyRGVsaXZlcnksXG4gIE9ic2VydmVyRHJhaW5SZXN1bHQsXG4gIE9ic2VydmVyU3RhdHMsXG59IGZyb20gJy4vRGVmZXJyZWRPYnNlcnZlclRpZXIuanMnO1xuZXhwb3J0IHR5cGUgeyBSZWNvcmRlclNuYXBzaG90LCBSZWNvcmRTaW5rU3RhdHMsIFJ1bnRpbWVTbmFwc2hvdCB9IGZyb20gJy4vRXhlY3V0aW9uUnVudGltZS5qcyc7XG5leHBvcnQgeyBFeGVjdXRpb25SdW50aW1lIH0gZnJvbSAnLi9FeGVjdXRpb25SdW50aW1lLmpzJztcbmV4cG9ydCB7IEZsb3dDaGFydEV4ZWN1dG9yIH0gZnJvbSAnLi9GbG93Q2hhcnRFeGVjdXRvci5qcyc7XG5leHBvcnQgdHlwZSB7IFN1YnRyZWVTbmFwc2hvdCB9IGZyb20gJy4vZ2V0U3VidHJlZVNuYXBzaG90LmpzJztcbmV4cG9ydCB7IGdldFN1YnRyZWVTbmFwc2hvdCwgbGlzdFN1YmZsb3dQYXRocyB9IGZyb20gJy4vZ2V0U3VidHJlZVNuYXBzaG90LmpzJztcbmV4cG9ydCB0eXBlIHsgRmxvd0NoYXJ0RXhlY3V0b3JPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgUmVjb3JkRmx1c2hSZXN1bHQsXG4gIFJlY29yZFNpbmtGYWlsdXJlTW9kZSxcbiAgUmVjb3JkU2lua0ZsdXNoTW9kZSxcbiAgUmVjb3JkU2lua09wdGlvbixcbiAgUmVjb3JkU2lua09wdGlvbnMsXG59IGZyb20gJy4vcmVjb3JkU2luay5qcyc7XG5leHBvcnQgeyBSZWNvcmRTaW5rRXJyb3IgfSBmcm9tICcuL3JlY29yZFNpbmsuanMnO1xuZXhwb3J0IHR5cGUgeyBSdW5SZXN1bHQgfSBmcm9tICcuL1J1bkNvbnRleHQuanMnO1xuZXhwb3J0IHsgUnVuQ29udGV4dCB9IGZyb20gJy4vUnVuQ29udGV4dC5qcyc7XG5leHBvcnQgdHlwZSB7IFJ1bm5hYmxlRmxvd0NoYXJ0IH0gZnJvbSAnLi9SdW5uYWJsZUNoYXJ0LmpzJztcbiJdfQ==
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.resolveExecutorArgs = void 0;
11
11
  const runPolicy_js_1 = require("../memory/runPolicy.js");
12
12
  const ScopeFacade_js_1 = require("../scope/ScopeFacade.js");
13
+ const recordSink_js_1 = require("./recordSink.js");
13
14
  /** Default scope factory — creates a plain ScopeFacade for each stage. */
14
15
  const defaultScopeFactory = (ctx, stageName, readOnly, env) => new ScopeFacade_js_1.ScopeFacade(ctx, stageName, readOnly, env);
15
16
  /**
@@ -29,7 +30,8 @@ function resolveExecutorArgs(flowChart, factoryOrOptions) {
29
30
  streamHandlers: opts.streamHandlers,
30
31
  scopeProtectionMode: opts.scopeProtectionMode,
31
32
  dials: (0, runPolicy_js_1.pickDials)(opts),
33
+ ...(opts.sink !== undefined && { sink: (0, recordSink_js_1.resolveRecordSink)(opts.sink) }),
32
34
  };
33
35
  }
34
36
  exports.resolveExecutorArgs = resolveExecutorArgs;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcnVubmVyL29wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBS0gseURBQW1EO0FBRW5ELDREQUFzRDtBQUV0RCwwRUFBMEU7QUFDMUUsTUFBTSxtQkFBbUIsR0FBaUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUMxRSxJQUFJLDRCQUFXLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFnRmpEOzs7O0dBSUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FDakMsU0FBa0MsRUFDbEMsZ0JBQXFGO0lBRXJGLE1BQU0sSUFBSSxHQUNSLE9BQU8sZ0JBQWdCLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7SUFDdkcsT0FBTztRQUNMLFNBQVM7UUFDVCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksSUFBSSxTQUFTLENBQUMsWUFBWSxJQUFLLG1CQUE0QztRQUMxRyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsdUJBQXVCO1FBQ3JELGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztRQUNuQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7UUFDckMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLHNCQUFzQjtRQUNuRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7UUFDbkMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtRQUM3QyxLQUFLLEVBQUUsSUFBQSx3QkFBUyxFQUFDLElBQUksQ0FBQztLQUN2QixDQUFDO0FBQ0osQ0FBQztBQWpCRCxrREFpQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIG9wdGlvbnMg4oCUIHRoZSBleGVjdXRvcidzIGNvbnN0cnVjdGlvbiBvcHRpb25zIGFuZCBob3cgdGhleSByZXNvbHZlIChGOSkuXG4gKlxuICogYEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9uc2AgaXMgdGhlIHB1YmxpYyBvcHRpb25zIG9iamVjdDtcbiAqIGByZXNvbHZlRXhlY3V0b3JBcmdzYCB0dXJucyBlaXRoZXIgY29uc3RydWN0b3IgZm9ybSAob3B0aW9ucyBvYmplY3QsIG9yIGFcbiAqIGJhcmUgYFNjb3BlRmFjdG9yeWApIGludG8gdGhlIGBFeGVjdXRvckFyZ3NgIHRoZSBleGVjdXRvciBrZWVwcyBmb3IgZXZlcnkgbGVnLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRmxvd0NoYXJ0IH0gZnJvbSAnLi4vYnVpbGRlci90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNjb3BlRmFjdG9yeSwgU3RyZWFtSGFuZGxlcnMgfSBmcm9tICcuLi9lbmdpbmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSdW5EaWFscyB9IGZyb20gJy4uL21lbW9yeS9ydW5Qb2xpY3kuanMnO1xuaW1wb3J0IHsgcGlja0RpYWxzIH0gZnJvbSAnLi4vbWVtb3J5L3J1blBvbGljeS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNjb3BlUHJvdGVjdGlvbk1vZGUgfSBmcm9tICcuLi9zY29wZS9wcm90ZWN0aW9uL3R5cGVzLmpzJztcbmltcG9ydCB7IFNjb3BlRmFjYWRlIH0gZnJvbSAnLi4vc2NvcGUvU2NvcGVGYWNhZGUuanMnO1xuXG4vKiogRGVmYXVsdCBzY29wZSBmYWN0b3J5IOKAlCBjcmVhdGVzIGEgcGxhaW4gU2NvcGVGYWNhZGUgZm9yIGVhY2ggc3RhZ2UuICovXG5jb25zdCBkZWZhdWx0U2NvcGVGYWN0b3J5OiBTY29wZUZhY3RvcnkgPSAoY3R4LCBzdGFnZU5hbWUsIHJlYWRPbmx5LCBlbnYpID0+XG4gIG5ldyBTY29wZUZhY2FkZShjdHgsIHN0YWdlTmFtZSwgcmVhZE9ubHksIGVudik7XG5cbi8qKlxuICogT3B0aW9ucyBvYmplY3QgZm9yIGBGbG93Q2hhcnRFeGVjdXRvcmAg4oCUIHByZWZlcnJlZCBvdmVyIHBvc2l0aW9uYWwgcGFyYW1zLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGV4ID0gbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7XG4gKiAgIHNjb3BlRmFjdG9yeTogbXlGYWN0b3J5LFxuICogICBkZWZhdWx0VmFsdWVzRm9yQ29udGV4dDogeyAuLi4gfSxcbiAqIH0pO1xuICogYGBgXG4gKlxuICogKipTeW5jIG5vdGUgZm9yIG1haW50YWluZXJzOioqIGEgZmllbGQgYWRkZWQgaGVyZSBtdXN0IGFsc28gYmUgYWRkZWQgdG9cbiAqIGBFeGVjdXRvckFyZ3NgIGFuZCBgcmVzb2x2ZUV4ZWN1dG9yQXJnc2AgYmVsb3csIG9yIGl0IGlzIGFjY2VwdGVkIGFuZCBuZXZlclxuICogYXBwbGllZC4gVGhlIERJQUxTIGFyZSB0aGUgZXhjZXB0aW9uOiB0aGV5IGNvbWUgZnJvbSBgUnVuRGlhbHNgIGFuZCB0cmF2ZWxcbiAqIHdob2xlIGFzIGBkaWFsc2AuXG4gKlxuICogKipUU2NvcGUgaW5mZXJlbmNlIG5vdGU6KiogV2hlbiB1c2luZyB0aGUgb3B0aW9ucy1vYmplY3QgZm9ybSB3aXRoIGEgY3VzdG9tIHNjb3BlLFxuICogVHlwZVNjcmlwdCBjYW5ub3QgaW5mZXIgYFRTY29wZWAgdGhyb3VnaCB0aGUgb3B0aW9ucyBvYmplY3QuIFBhc3MgdGhlIHR5cGVcbiAqIGV4cGxpY2l0bHk6IGBuZXcgRmxvd0NoYXJ0RXhlY3V0b3I8VE91dCwgTXlTY29wZT4oY2hhcnQsIHsgc2NvcGVGYWN0b3J5IH0pYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnM8VFNjb3BlID0gYW55PiBleHRlbmRzIFJ1bkRpYWxzIHtcbiAgLy8g4pSA4pSAIENvbW1vbiBvcHRpb25zIChtb3N0IGNhbGxlcnMgbmVlZCBvbmx5IHRoZXNlKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICAvKiogQ3VzdG9tIHNjb3BlIGZhY3RvcnkuIERlZmF1bHRzIHRvIFR5cGVkU2NvcGUgb3IgU2NvcGVGYWNhZGUgYXV0by1kZXRlY3Rpb24uICovXG4gIHNjb3BlRmFjdG9yeT86IFNjb3BlRmFjdG9yeTxUU2NvcGU+O1xuXG4gIC8vIOKUgOKUgCBDb250ZXh0IG9wdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqXG4gICAqIERlZmF1bHQgdmFsdWVzIHByZS1wb3B1bGF0ZWQgaW50byB0aGUgc2hhcmVkIGNvbnRleHQgYmVmb3JlICoqZWFjaCoqIHN0YWdlXG4gICAqIChyZS1hcHBsaWVkIGV2ZXJ5IHN0YWdlLCBhY3RpbmcgYXMgYmFzZWxpbmUgZGVmYXVsdHMpLlxuICAgKi9cbiAgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHQ/OiB1bmtub3duO1xuICAvKipcbiAgICogSW5pdGlhbCBjb250ZXh0IHZhbHVlcyBtZXJnZWQgaW50byB0aGUgc2hhcmVkIGNvbnRleHQgKipvbmNlKiogYXQgc3RhcnR1cFxuICAgKiAoYXBwbGllZCBiZWZvcmUgdGhlIGZpcnN0IHN0YWdlLCBub3QgcmVwZWF0ZWQgb24gc3Vic2VxdWVudCBzdGFnZXMpLlxuICAgKiBEaXN0aW5jdCBmcm9tIGBkZWZhdWx0VmFsdWVzRm9yQ29udGV4dGAsIHdoaWNoIGlzIHJlLWFwcGxpZWQgZXZlcnkgc3RhZ2UuXG4gICAqL1xuICBpbml0aWFsQ29udGV4dD86IHVua25vd247XG4gIC8qKiBSZWFkLW9ubHkgaW5wdXQgYWNjZXNzaWJsZSB2aWEgYHNjb3BlLmdldEFyZ3MoKWAg4oCUIG5ldmVyIHRyYWNrZWQgb3Igd3JpdHRlbi4gKi9cbiAgcmVhZE9ubHlDb250ZXh0PzogdW5rbm93bjtcblxuICAvLyDilIDilIAgT2JzZXJ2YWJpbGl0eSBjb3N0IG9wdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8vIFRoZSBmb3VyIGRpYWxzIOKAlCBgcmVhZFRyYWNraW5nYCwgYHdyaXRlVHJhY2tpbmdgLCBgY29tbWl0VmFsdWVzYCxcbiAgLy8gYHdyaXRlUHJvdmVuYW5jZWAg4oCUIGFyZSBpbmhlcml0ZWQgZnJvbSBgUnVuRGlhbHNgIChtZW1vcnkvcnVuUG9saWN5LnRzLFxuICAvLyB3aGVyZSBlYWNoIGlzIGRvY3VtZW50ZWQpOiB0aGUgZXhlY3V0b3IgcGlja3MgdGhlbSBvZmYgdGhpcyBvYmplY3QgYW5kXG4gIC8vIGJ1aWxkcyB0aGUgcnVuJ3MgT05FIHBvbGljeSBmcm9tIHRoZW0gKEY1KS5cblxuICAvLyDilIDilIAgQWR2YW5jZWQgLyBlc2NhcGUtaGF0Y2ggb3B0aW9ucyAobW9zdCBjYWxsZXJzIGRvIG5vdCBuZWVkIHRoZXNlKSDilIDilIDilIDilIDilIBcblxuICAvKipcbiAgICogQ3VzdG9tIGVycm9yIGNsYXNzaWZpZXIgZm9yIHRocm90dGxpbmcgZGV0ZWN0aW9uLiBSZXR1cm4gYHRydWVgIGlmIGEgZm9ya1xuICAgKiBjaGlsZCdzIGVycm9yIHJlcHJlc2VudHMgYSByYXRlLWxpbWl0IG9yIGJhY2twcmVzc3VyZSBjb25kaXRpb247IHRoZVxuICAgKiBleGVjdXRvciB0aGVuIGZpcmVzIGBGbG93UmVjb3JkZXIub25UaHJvdHRsZWRgIGZvciB0aGF0IGNoaWxkICg5LjM5LjAg4oCUXG4gICAqIGFuIEVWRU5ULCBub3QgYSBzdGF0ZSBrZXk6IHRoZSBgbW9uaXRvci5pc1Rocm90dGxlZGAgd3JpdGUgaXQgcmVwbGFjZWRcbiAgICogbmV2ZXIgbGFuZGVkKS4gVGhlIGNoaWxkJ3MgZmFpbHVyZSBpcyBvdGhlcndpc2UgaGFuZGxlZCBhcyBiZWZvcmUuXG4gICAqIERlZmF1bHRzIHRvIG5vIHRocm90dGxpbmcgY2xhc3NpZmljYXRpb24uXG4gICAqL1xuICB0aHJvdHRsaW5nRXJyb3JDaGVja2VyPzogKGVycm9yOiB1bmtub3duKSA9PiBib29sZWFuO1xuICAvKiogSGFuZGxlcnMgZm9yIHN0cmVhbWluZyBzdGFnZSBsaWZlY3ljbGUgZXZlbnRzIChzZWUgYGFkZFN0cmVhbWluZ0Z1bmN0aW9uYCkuICovXG4gIHN0cmVhbUhhbmRsZXJzPzogU3RyZWFtSGFuZGxlcnM7XG4gIC8qKiBTY29wZSBwcm90ZWN0aW9uIG1vZGUgZm9yIFR5cGVkU2NvcGUgZGlyZWN0LWFzc2lnbm1lbnQgZGV0ZWN0aW9uLiAqL1xuICBzY29wZVByb3RlY3Rpb25Nb2RlPzogU2NvcGVQcm90ZWN0aW9uTW9kZTtcbn1cblxuLyoqIFdoYXQgdGhlIGV4ZWN1dG9yIGtlZXBzIGZyb20gY29uc3RydWN0aW9uIOKAlCByZWFkIGJ5IGV2ZXJ5IGxlZyAoYHJ1bigpYCAvIGByZXN1bWUoKWApLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRvckFyZ3M8VE91dCwgVFNjb3BlPiB7XG4gIGZsb3dDaGFydDogRmxvd0NoYXJ0PFRPdXQsIFRTY29wZT47XG4gIHNjb3BlRmFjdG9yeTogU2NvcGVGYWN0b3J5PFRTY29wZT47XG4gIGRlZmF1bHRWYWx1ZXNGb3JDb250ZXh0PzogdW5rbm93bjtcbiAgaW5pdGlhbENvbnRleHQ/OiB1bmtub3duO1xuICByZWFkT25seUNvbnRleHQ/OiB1bmtub3duO1xuICB0aHJvdHRsaW5nRXJyb3JDaGVja2VyPzogKGVycm9yOiB1bmtub3duKSA9PiBib29sZWFuO1xuICBzdHJlYW1IYW5kbGVycz86IFN0cmVhbUhhbmRsZXJzO1xuICBzY29wZVByb3RlY3Rpb25Nb2RlPzogU2NvcGVQcm90ZWN0aW9uTW9kZTtcbiAgLyoqIFRoZSBkaWFscyBhcyBnaXZlbiAoYWJzZW50ID0gZGVmYXVsdCkg4oCUIHRoZSBydW4ncyBwb2xpY3kgaXMgYnVpbHQgZnJvbSB0aGVtIHBlciBsZWcuICovXG4gIGRpYWxzOiBSdW5EaWFscztcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGVpdGhlciBjb25zdHJ1Y3RvciBmb3JtLiBUaGUgMi1wYXJhbSBmb3JtIGlzIHRoZSBvcHRpb25zIGZvcm0gd2l0aFxuICogb25seSBgc2NvcGVGYWN0b3J5YDsgdGhlIHNjb3BlIGZhY3RvcnkgZmFsbHMgYmFjayB0byB0aGUgY2hhcnQncywgdGhlbiB0byBhXG4gKiBwbGFpbiBgU2NvcGVGYWNhZGVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUV4ZWN1dG9yQXJnczxUT3V0LCBUU2NvcGU+KFxuICBmbG93Q2hhcnQ6IEZsb3dDaGFydDxUT3V0LCBUU2NvcGU+LFxuICBmYWN0b3J5T3JPcHRpb25zOiBTY29wZUZhY3Rvcnk8VFNjb3BlPiB8IEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9uczxUU2NvcGU+IHwgdW5kZWZpbmVkLFxuKTogRXhlY3V0b3JBcmdzPFRPdXQsIFRTY29wZT4ge1xuICBjb25zdCBvcHRzOiBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnM8VFNjb3BlPiA9XG4gICAgdHlwZW9mIGZhY3RvcnlPck9wdGlvbnMgPT09ICdmdW5jdGlvbicgPyB7IHNjb3BlRmFjdG9yeTogZmFjdG9yeU9yT3B0aW9ucyB9IDogZmFjdG9yeU9yT3B0aW9ucyA/PyB7fTtcbiAgcmV0dXJuIHtcbiAgICBmbG93Q2hhcnQsXG4gICAgc2NvcGVGYWN0b3J5OiBvcHRzLnNjb3BlRmFjdG9yeSA/PyBmbG93Q2hhcnQuc2NvcGVGYWN0b3J5ID8/IChkZWZhdWx0U2NvcGVGYWN0b3J5IGFzIFNjb3BlRmFjdG9yeTxUU2NvcGU+KSxcbiAgICBkZWZhdWx0VmFsdWVzRm9yQ29udGV4dDogb3B0cy5kZWZhdWx0VmFsdWVzRm9yQ29udGV4dCxcbiAgICBpbml0aWFsQ29udGV4dDogb3B0cy5pbml0aWFsQ29udGV4dCxcbiAgICByZWFkT25seUNvbnRleHQ6IG9wdHMucmVhZE9ubHlDb250ZXh0LFxuICAgIHRocm90dGxpbmdFcnJvckNoZWNrZXI6IG9wdHMudGhyb3R0bGluZ0Vycm9yQ2hlY2tlcixcbiAgICBzdHJlYW1IYW5kbGVyczogb3B0cy5zdHJlYW1IYW5kbGVycyxcbiAgICBzY29wZVByb3RlY3Rpb25Nb2RlOiBvcHRzLnNjb3BlUHJvdGVjdGlvbk1vZGUsXG4gICAgZGlhbHM6IHBpY2tEaWFscyhvcHRzKSxcbiAgfTtcbn1cbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcnVubmVyL29wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBS0gseURBQW1EO0FBRW5ELDREQUFzRDtBQUN0RCxtREFBb0c7QUFFcEcsMEVBQTBFO0FBQzFFLE1BQU0sbUJBQW1CLEdBQWlCLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FDMUUsSUFBSSw0QkFBVyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBbUdqRDs7OztHQUlHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQ2pDLFNBQWtDLEVBQ2xDLGdCQUFxRjtJQUVyRixNQUFNLElBQUksR0FDUixPQUFPLGdCQUFnQixLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO0lBQ3ZHLE9BQU87UUFDTCxTQUFTO1FBQ1QsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksU0FBUyxDQUFDLFlBQVksSUFBSyxtQkFBNEM7UUFDMUcsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtRQUNyRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7UUFDbkMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1FBQ3JDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7UUFDbkQsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1FBQ25DLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7UUFDN0MsS0FBSyxFQUFFLElBQUEsd0JBQVMsRUFBQyxJQUFJLENBQUM7UUFDdEIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUEsaUNBQWlCLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7S0FDdkUsQ0FBQztBQUNKLENBQUM7QUFsQkQsa0RBa0JDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBvcHRpb25zIOKAlCB0aGUgZXhlY3V0b3IncyBjb25zdHJ1Y3Rpb24gb3B0aW9ucyBhbmQgaG93IHRoZXkgcmVzb2x2ZSAoRjkpLlxuICpcbiAqIGBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnNgIGlzIHRoZSBwdWJsaWMgb3B0aW9ucyBvYmplY3Q7XG4gKiBgcmVzb2x2ZUV4ZWN1dG9yQXJnc2AgdHVybnMgZWl0aGVyIGNvbnN0cnVjdG9yIGZvcm0gKG9wdGlvbnMgb2JqZWN0LCBvciBhXG4gKiBiYXJlIGBTY29wZUZhY3RvcnlgKSBpbnRvIHRoZSBgRXhlY3V0b3JBcmdzYCB0aGUgZXhlY3V0b3Iga2VlcHMgZm9yIGV2ZXJ5IGxlZy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZsb3dDaGFydCB9IGZyb20gJy4uL2J1aWxkZXIvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTY29wZUZhY3RvcnksIFN0cmVhbUhhbmRsZXJzIH0gZnJvbSAnLi4vZW5naW5lL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgUnVuRGlhbHMgfSBmcm9tICcuLi9tZW1vcnkvcnVuUG9saWN5LmpzJztcbmltcG9ydCB7IHBpY2tEaWFscyB9IGZyb20gJy4uL21lbW9yeS9ydW5Qb2xpY3kuanMnO1xuaW1wb3J0IHR5cGUgeyBTY29wZVByb3RlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vc2NvcGUvcHJvdGVjdGlvbi90eXBlcy5qcyc7XG5pbXBvcnQgeyBTY29wZUZhY2FkZSB9IGZyb20gJy4uL3Njb3BlL1Njb3BlRmFjYWRlLmpzJztcbmltcG9ydCB7IHR5cGUgUmVjb3JkU2lua09wdGlvbiwgdHlwZSBSZXNvbHZlZFJlY29yZFNpbmssIHJlc29sdmVSZWNvcmRTaW5rIH0gZnJvbSAnLi9yZWNvcmRTaW5rLmpzJztcblxuLyoqIERlZmF1bHQgc2NvcGUgZmFjdG9yeSDigJQgY3JlYXRlcyBhIHBsYWluIFNjb3BlRmFjYWRlIGZvciBlYWNoIHN0YWdlLiAqL1xuY29uc3QgZGVmYXVsdFNjb3BlRmFjdG9yeTogU2NvcGVGYWN0b3J5ID0gKGN0eCwgc3RhZ2VOYW1lLCByZWFkT25seSwgZW52KSA9PlxuICBuZXcgU2NvcGVGYWNhZGUoY3R4LCBzdGFnZU5hbWUsIHJlYWRPbmx5LCBlbnYpO1xuXG4vKipcbiAqIE9wdGlvbnMgb2JqZWN0IGZvciBgRmxvd0NoYXJ0RXhlY3V0b3JgIOKAlCBwcmVmZXJyZWQgb3ZlciBwb3NpdGlvbmFsIHBhcmFtcy5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBleCA9IG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwge1xuICogICBzY29wZUZhY3Rvcnk6IG15RmFjdG9yeSxcbiAqICAgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHQ6IHsgLi4uIH0sXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqICoqU3luYyBub3RlIGZvciBtYWludGFpbmVyczoqKiBhIGZpZWxkIGFkZGVkIGhlcmUgbXVzdCBhbHNvIGJlIGFkZGVkIHRvXG4gKiBgRXhlY3V0b3JBcmdzYCBhbmQgYHJlc29sdmVFeGVjdXRvckFyZ3NgIGJlbG93LCBvciBpdCBpcyBhY2NlcHRlZCBhbmQgbmV2ZXJcbiAqIGFwcGxpZWQuIFRoZSBESUFMUyBhcmUgdGhlIGV4Y2VwdGlvbjogdGhleSBjb21lIGZyb20gYFJ1bkRpYWxzYCBhbmQgdHJhdmVsXG4gKiB3aG9sZSBhcyBgZGlhbHNgLlxuICpcbiAqICoqVFNjb3BlIGluZmVyZW5jZSBub3RlOioqIFdoZW4gdXNpbmcgdGhlIG9wdGlvbnMtb2JqZWN0IGZvcm0gd2l0aCBhIGN1c3RvbSBzY29wZSxcbiAqIFR5cGVTY3JpcHQgY2Fubm90IGluZmVyIGBUU2NvcGVgIHRocm91Z2ggdGhlIG9wdGlvbnMgb2JqZWN0LiBQYXNzIHRoZSB0eXBlXG4gKiBleHBsaWNpdGx5OiBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yPFRPdXQsIE15U2NvcGU+KGNoYXJ0LCB7IHNjb3BlRmFjdG9yeSB9KWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0NoYXJ0RXhlY3V0b3JPcHRpb25zPFRTY29wZSA9IGFueT4gZXh0ZW5kcyBSdW5EaWFscyB7XG4gIC8vIOKUgOKUgCBDb21tb24gb3B0aW9ucyAobW9zdCBjYWxsZXJzIG5lZWQgb25seSB0aGVzZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqIEN1c3RvbSBzY29wZSBmYWN0b3J5LiBEZWZhdWx0cyB0byBUeXBlZFNjb3BlIG9yIFNjb3BlRmFjYWRlIGF1dG8tZGV0ZWN0aW9uLiAqL1xuICBzY29wZUZhY3Rvcnk/OiBTY29wZUZhY3Rvcnk8VFNjb3BlPjtcblxuICAvLyDilIDilIAgQ29udGV4dCBvcHRpb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHZhbHVlcyBwcmUtcG9wdWxhdGVkIGludG8gdGhlIHNoYXJlZCBjb250ZXh0IGJlZm9yZSAqKmVhY2gqKiBzdGFnZVxuICAgKiAocmUtYXBwbGllZCBldmVyeSBzdGFnZSwgYWN0aW5nIGFzIGJhc2VsaW5lIGRlZmF1bHRzKS5cbiAgICovXG4gIGRlZmF1bHRWYWx1ZXNGb3JDb250ZXh0PzogdW5rbm93bjtcbiAgLyoqXG4gICAqIEluaXRpYWwgY29udGV4dCB2YWx1ZXMgbWVyZ2VkIGludG8gdGhlIHNoYXJlZCBjb250ZXh0ICoqb25jZSoqIGF0IHN0YXJ0dXBcbiAgICogKGFwcGxpZWQgYmVmb3JlIHRoZSBmaXJzdCBzdGFnZSwgbm90IHJlcGVhdGVkIG9uIHN1YnNlcXVlbnQgc3RhZ2VzKS5cbiAgICogRGlzdGluY3QgZnJvbSBgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHRgLCB3aGljaCBpcyByZS1hcHBsaWVkIGV2ZXJ5IHN0YWdlLlxuICAgKi9cbiAgaW5pdGlhbENvbnRleHQ/OiB1bmtub3duO1xuICAvKiogUmVhZC1vbmx5IGlucHV0IGFjY2Vzc2libGUgdmlhIGBzY29wZS5nZXRBcmdzKClgIOKAlCBuZXZlciB0cmFja2VkIG9yIHdyaXR0ZW4uICovXG4gIHJlYWRPbmx5Q29udGV4dD86IHVua25vd247XG5cbiAgLy8g4pSA4pSAIE9ic2VydmFiaWxpdHkgY29zdCBvcHRpb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAvLyBUaGUgZm91ciBkaWFscyDigJQgYHJlYWRUcmFja2luZ2AsIGB3cml0ZVRyYWNraW5nYCwgYGNvbW1pdFZhbHVlc2AsXG4gIC8vIGB3cml0ZVByb3ZlbmFuY2VgIOKAlCBhcmUgaW5oZXJpdGVkIGZyb20gYFJ1bkRpYWxzYCAobWVtb3J5L3J1blBvbGljeS50cyxcbiAgLy8gd2hlcmUgZWFjaCBpcyBkb2N1bWVudGVkKTogdGhlIGV4ZWN1dG9yIHBpY2tzIHRoZW0gb2ZmIHRoaXMgb2JqZWN0IGFuZFxuICAvLyBidWlsZHMgdGhlIHJ1bidzIE9ORSBwb2xpY3kgZnJvbSB0aGVtIChGNSkuXG5cbiAgLy8g4pSA4pSAIFRoZSBjcmFzaC1zYWZlIHJlY29yZCAoMTAuMSwgUDYpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIC8qKlxuICAgKiBXaGVyZSB0aGUgcnVuJ3MgcmVjb3JkIGdvZXMgQVMgSVQgTEFORFMsIHNvIGEgcnVuIHRoYXQgbmV2ZXIgZmluaXNoZXMgc3RpbGwgbGVhdmVzIGl0OiBldmVyeSBsb2cgb2YgdGhlIHJ1blxuICAgKiAodGhlIHJvb3QgYW5kIGVhY2ggc3ViZmxvdyBtb3VudCkgaGFuZHMgdGhlIHNpbmsgaXRzIGBvcGVuZWRgIGJhc2UsIGVhY2ggY29tbWl0LCBhIG5vdGUgcGVyIGF0dGVtcHQgdGhhdCBlbmRlZCxcbiAgICogYW5kIGl0cyBgY2xvc2VkYCBvdXRjb21lLiBgZmlsZVNpbmsocGF0aClgIChgZm9vdHByaW50anMvc2lua3NgLCBOb2RlKSBvciBgbWVtb3J5U2luaygpYCAoYGZvb3R0cmFjZS93cml0ZWApO1xuICAgKiByZWFkIGl0IGJhY2sgd2l0aCBgcmVhZFN0b3JlZFJlY29yZGAgKGBmb290dHJhY2VgKS4gVGhlIHJlZGFjdGlvbiBwb2xpY3kgYXBwbGllcyBiZWZvcmUgYW55IGVudHJ5IGlzIHdyaXR0ZW4uXG4gICAqIEEgZmFpbGluZyBzaW5rIG5ldmVyIHN0b3BzIHRoZSBydW4gKGBvbkZhaWx1cmU6ICdyZXBvcnQnYCwgdGhlIGRlZmF1bHQpIOKAlCBgZ2V0U25hcHNob3QoKS5zaW5rYCBjb3VudHMgd2hhdCB3YXNcbiAgICogbG9zdC4gU2VlIHRoZSBndWlkZSdzIFwiQSBjcmFzaC1zYWZlIHJlY29yZFwiLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGV4ZWN1dG9yID0gbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IHNpbms6IGZpbGVTaW5rKCcvdmFyL2Zvb3RwcmludC9ydW4uanNvbmwnKSB9KTtcbiAgICogYGBgXG4gICAqL1xuICBzaW5rPzogUmVjb3JkU2lua09wdGlvbjtcblxuICAvLyDilIDilIAgQWR2YW5jZWQgLyBlc2NhcGUtaGF0Y2ggb3B0aW9ucyAobW9zdCBjYWxsZXJzIGRvIG5vdCBuZWVkIHRoZXNlKSDilIDilIDilIDilIDilIBcblxuICAvKipcbiAgICogQ3VzdG9tIGVycm9yIGNsYXNzaWZpZXIgZm9yIHRocm90dGxpbmcgZGV0ZWN0aW9uLiBSZXR1cm4gYHRydWVgIGlmIGEgZm9ya1xuICAgKiBjaGlsZCdzIGVycm9yIHJlcHJlc2VudHMgYSByYXRlLWxpbWl0IG9yIGJhY2twcmVzc3VyZSBjb25kaXRpb247IHRoZVxuICAgKiBleGVjdXRvciB0aGVuIGZpcmVzIGBGbG93UmVjb3JkZXIub25UaHJvdHRsZWRgIGZvciB0aGF0IGNoaWxkICg5LjM5LjAg4oCUXG4gICAqIGFuIEVWRU5ULCBub3QgYSBzdGF0ZSBrZXk6IHRoZSBgbW9uaXRvci5pc1Rocm90dGxlZGAgd3JpdGUgaXQgcmVwbGFjZWRcbiAgICogbmV2ZXIgbGFuZGVkKS4gVGhlIGNoaWxkJ3MgZmFpbHVyZSBpcyBvdGhlcndpc2UgaGFuZGxlZCBhcyBiZWZvcmUuXG4gICAqIERlZmF1bHRzIHRvIG5vIHRocm90dGxpbmcgY2xhc3NpZmljYXRpb24uXG4gICAqL1xuICB0aHJvdHRsaW5nRXJyb3JDaGVja2VyPzogKGVycm9yOiB1bmtub3duKSA9PiBib29sZWFuO1xuICAvKiogSGFuZGxlcnMgZm9yIHN0cmVhbWluZyBzdGFnZSBsaWZlY3ljbGUgZXZlbnRzIChzZWUgYGFkZFN0cmVhbWluZ0Z1bmN0aW9uYCkuICovXG4gIHN0cmVhbUhhbmRsZXJzPzogU3RyZWFtSGFuZGxlcnM7XG4gIC8qKiBTY29wZSBwcm90ZWN0aW9uIG1vZGUgZm9yIFR5cGVkU2NvcGUgZGlyZWN0LWFzc2lnbm1lbnQgZGV0ZWN0aW9uLiAqL1xuICBzY29wZVByb3RlY3Rpb25Nb2RlPzogU2NvcGVQcm90ZWN0aW9uTW9kZTtcbn1cblxuLyoqIFdoYXQgdGhlIGV4ZWN1dG9yIGtlZXBzIGZyb20gY29uc3RydWN0aW9uIOKAlCByZWFkIGJ5IGV2ZXJ5IGxlZyAoYHJ1bigpYCAvIGByZXN1bWUoKWApLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRvckFyZ3M8VE91dCwgVFNjb3BlPiB7XG4gIGZsb3dDaGFydDogRmxvd0NoYXJ0PFRPdXQsIFRTY29wZT47XG4gIHNjb3BlRmFjdG9yeTogU2NvcGVGYWN0b3J5PFRTY29wZT47XG4gIGRlZmF1bHRWYWx1ZXNGb3JDb250ZXh0PzogdW5rbm93bjtcbiAgaW5pdGlhbENvbnRleHQ/OiB1bmtub3duO1xuICByZWFkT25seUNvbnRleHQ/OiB1bmtub3duO1xuICB0aHJvdHRsaW5nRXJyb3JDaGVja2VyPzogKGVycm9yOiB1bmtub3duKSA9PiBib29sZWFuO1xuICBzdHJlYW1IYW5kbGVycz86IFN0cmVhbUhhbmRsZXJzO1xuICBzY29wZVByb3RlY3Rpb25Nb2RlPzogU2NvcGVQcm90ZWN0aW9uTW9kZTtcbiAgLyoqIFRoZSBkaWFscyBhcyBnaXZlbiAoYWJzZW50ID0gZGVmYXVsdCkg4oCUIHRoZSBydW4ncyBwb2xpY3kgaXMgYnVpbHQgZnJvbSB0aGVtIHBlciBsZWcuICovXG4gIGRpYWxzOiBSdW5EaWFscztcbiAgLyoqIFRoZSByZWNvcmQgc2luaywgcmVzb2x2ZWQgYW5kIGNoZWNrZWQgYXQgY29uc3RydWN0aW9uICgxMC4xLCBQNikuICovXG4gIHNpbms/OiBSZXNvbHZlZFJlY29yZFNpbms7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBlaXRoZXIgY29uc3RydWN0b3IgZm9ybS4gVGhlIDItcGFyYW0gZm9ybSBpcyB0aGUgb3B0aW9ucyBmb3JtIHdpdGhcbiAqIG9ubHkgYHNjb3BlRmFjdG9yeWA7IHRoZSBzY29wZSBmYWN0b3J5IGZhbGxzIGJhY2sgdG8gdGhlIGNoYXJ0J3MsIHRoZW4gdG8gYVxuICogcGxhaW4gYFNjb3BlRmFjYWRlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVFeGVjdXRvckFyZ3M8VE91dCwgVFNjb3BlPihcbiAgZmxvd0NoYXJ0OiBGbG93Q2hhcnQ8VE91dCwgVFNjb3BlPixcbiAgZmFjdG9yeU9yT3B0aW9uczogU2NvcGVGYWN0b3J5PFRTY29wZT4gfCBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnM8VFNjb3BlPiB8IHVuZGVmaW5lZCxcbik6IEV4ZWN1dG9yQXJnczxUT3V0LCBUU2NvcGU+IHtcbiAgY29uc3Qgb3B0czogRmxvd0NoYXJ0RXhlY3V0b3JPcHRpb25zPFRTY29wZT4gPVxuICAgIHR5cGVvZiBmYWN0b3J5T3JPcHRpb25zID09PSAnZnVuY3Rpb24nID8geyBzY29wZUZhY3Rvcnk6IGZhY3RvcnlPck9wdGlvbnMgfSA6IGZhY3RvcnlPck9wdGlvbnMgPz8ge307XG4gIHJldHVybiB7XG4gICAgZmxvd0NoYXJ0LFxuICAgIHNjb3BlRmFjdG9yeTogb3B0cy5zY29wZUZhY3RvcnkgPz8gZmxvd0NoYXJ0LnNjb3BlRmFjdG9yeSA/PyAoZGVmYXVsdFNjb3BlRmFjdG9yeSBhcyBTY29wZUZhY3Rvcnk8VFNjb3BlPiksXG4gICAgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHQ6IG9wdHMuZGVmYXVsdFZhbHVlc0ZvckNvbnRleHQsXG4gICAgaW5pdGlhbENvbnRleHQ6IG9wdHMuaW5pdGlhbENvbnRleHQsXG4gICAgcmVhZE9ubHlDb250ZXh0OiBvcHRzLnJlYWRPbmx5Q29udGV4dCxcbiAgICB0aHJvdHRsaW5nRXJyb3JDaGVja2VyOiBvcHRzLnRocm90dGxpbmdFcnJvckNoZWNrZXIsXG4gICAgc3RyZWFtSGFuZGxlcnM6IG9wdHMuc3RyZWFtSGFuZGxlcnMsXG4gICAgc2NvcGVQcm90ZWN0aW9uTW9kZTogb3B0cy5zY29wZVByb3RlY3Rpb25Nb2RlLFxuICAgIGRpYWxzOiBwaWNrRGlhbHMob3B0cyksXG4gICAgLi4uKG9wdHMuc2luayAhPT0gdW5kZWZpbmVkICYmIHsgc2luazogcmVzb2x2ZVJlY29yZFNpbmsob3B0cy5zaW5rKSB9KSxcbiAgfTtcbn1cbiJdfQ==