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.
- package/AGENTS.md +2 -1
- package/CLAUDE.md +61 -7
- package/README.md +136 -312
- package/dist/esm/index.d.ts +62 -2
- package/dist/esm/index.js +13 -6
- package/dist/esm/lib/attempt/anySignal.d.ts +19 -0
- package/dist/esm/lib/attempt/anySignal.js +39 -0
- package/dist/esm/lib/attempt/call.d.ts +88 -0
- package/dist/esm/lib/attempt/call.js +129 -0
- package/dist/esm/lib/attempt/category.d.ts +37 -0
- package/dist/esm/lib/attempt/category.js +131 -0
- package/dist/esm/lib/attempt/correlation.d.ts +95 -0
- package/dist/esm/lib/attempt/correlation.js +178 -0
- package/dist/esm/lib/attempt/deadline.d.ts +44 -0
- package/dist/esm/lib/attempt/deadline.js +101 -0
- package/dist/esm/lib/attempt/decision.d.ts +52 -0
- package/dist/esm/lib/attempt/decision.js +134 -0
- package/dist/esm/lib/attempt/effect.d.ts +76 -0
- package/dist/esm/lib/attempt/effect.js +160 -0
- package/dist/esm/lib/attempt/errors.d.ts +41 -0
- package/dist/esm/lib/attempt/errors.js +44 -0
- package/dist/esm/lib/attempt/index.d.ts +18 -0
- package/dist/esm/lib/attempt/index.js +15 -0
- package/dist/esm/lib/attempt/name.d.ts +21 -0
- package/dist/esm/lib/attempt/name.js +43 -0
- package/dist/esm/lib/attempt/observed.d.ts +66 -0
- package/dist/esm/lib/attempt/observed.js +171 -0
- package/dist/esm/lib/attempt/policy.d.ts +45 -0
- package/dist/esm/lib/attempt/policy.js +83 -0
- package/dist/esm/lib/attempt/record.d.ts +11 -0
- package/dist/esm/lib/attempt/record.js +24 -0
- package/dist/esm/lib/attempt/retryLoopContext.d.ts +18 -0
- package/dist/esm/lib/attempt/retryLoopContext.js +24 -0
- package/dist/esm/lib/attempt/retryLoopTypes.d.ts +18 -0
- package/dist/esm/lib/attempt/retryLoopTypes.js +2 -0
- package/dist/esm/lib/attempt/runner.d.ts +157 -0
- package/dist/esm/lib/attempt/runner.js +523 -0
- package/dist/esm/lib/attempt/standalone.d.ts +47 -0
- package/dist/esm/lib/attempt/standalone.js +126 -0
- package/dist/esm/lib/attempt/types.d.ts +453 -0
- package/dist/esm/lib/attempt/types.js +16 -0
- package/dist/esm/lib/budget/index.d.ts +9 -0
- package/dist/esm/lib/budget/index.js +9 -0
- package/dist/esm/lib/budget/timeBudget.d.ts +136 -0
- package/dist/esm/lib/budget/timeBudget.js +666 -0
- package/dist/esm/lib/builder/FlowChartBuilder.d.ts +88 -3
- package/dist/esm/lib/builder/FlowChartBuilder.js +199 -9
- package/dist/esm/lib/builder/retryLoop.d.ts +56 -0
- package/dist/esm/lib/builder/retryLoop.js +283 -0
- package/dist/esm/lib/builder/types.d.ts +35 -1
- package/dist/esm/lib/builder/types.js +1 -1
- package/dist/esm/lib/decide/decide.js +2 -2
- package/dist/esm/lib/decide/index.d.ts +1 -1
- package/dist/esm/lib/decide/index.js +2 -2
- package/dist/esm/lib/decide/types.d.ts +3 -0
- package/dist/esm/lib/decide/types.js +1 -8
- package/dist/esm/lib/engine/graph/StageNode.d.ts +11 -1
- package/dist/esm/lib/engine/graph/StageNode.js +1 -1
- package/dist/esm/lib/engine/graph/prefixNodeTree.js +5 -1
- package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +36 -6
- package/dist/esm/lib/engine/handlers/DeciderHandler.js +9 -5
- package/dist/esm/lib/engine/handlers/ResumeEntry.js +3 -1
- package/dist/esm/lib/engine/handlers/SelectorHandler.js +6 -5
- package/dist/esm/lib/engine/handlers/StageRunner.d.ts +8 -1
- package/dist/esm/lib/engine/handlers/StageRunner.js +36 -9
- package/dist/esm/lib/engine/handlers/SubflowExecutor.js +24 -5
- package/dist/esm/lib/engine/handlers/commitStage.d.ts +7 -0
- package/dist/esm/lib/engine/handlers/commitStage.js +22 -4
- package/dist/esm/lib/engine/handlers/stageError.d.ts +9 -0
- package/dist/esm/lib/engine/handlers/stageError.js +23 -1
- package/dist/esm/lib/engine/index.d.ts +2 -2
- package/dist/esm/lib/engine/index.js +1 -1
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +27 -13
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +68 -40
- package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.d.ts +4 -1
- package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +19 -2
- package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.d.ts +22 -3
- package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.js +61 -9
- package/dist/esm/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +1 -0
- package/dist/esm/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +2 -1
- package/dist/esm/lib/engine/narrative/formatting/sentences.d.ts +23 -0
- package/dist/esm/lib/engine/narrative/formatting/sentences.js +127 -1
- package/dist/esm/lib/engine/narrative/index.d.ts +2 -2
- package/dist/esm/lib/engine/narrative/index.js +1 -1
- package/dist/esm/lib/engine/narrative/narrativeTypes.d.ts +27 -21
- package/dist/esm/lib/engine/narrative/narrativeTypes.js +1 -1
- package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.d.ts +45 -2
- package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.js +55 -2
- package/dist/esm/lib/engine/narrative/recorders/index.d.ts +1 -1
- package/dist/esm/lib/engine/narrative/recorders/index.js +1 -1
- package/dist/esm/lib/engine/narrative/types.d.ts +74 -5
- package/dist/esm/lib/engine/narrative/types.js +1 -1
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.d.ts +59 -19
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +194 -118
- package/dist/esm/lib/engine/traversalContext.d.ts +7 -2
- package/dist/esm/lib/engine/traversalContext.js +6 -3
- package/dist/esm/lib/engine/types.d.ts +52 -57
- package/dist/esm/lib/engine/types.js +1 -1
- package/dist/esm/lib/errors/terminalFailure.d.ts +29 -0
- package/dist/esm/lib/errors/terminalFailure.js +60 -0
- package/dist/esm/lib/{decide → filter}/evaluator.d.ts +7 -2
- package/dist/esm/lib/filter/evaluator.js +135 -0
- package/dist/esm/lib/ids/idempotencyKey.d.ts +14 -0
- package/dist/esm/lib/ids/idempotencyKey.js +24 -0
- package/dist/esm/lib/memory/StageContext.d.ts +123 -3
- package/dist/esm/lib/memory/StageContext.js +245 -4
- package/dist/esm/lib/memory/attention.d.ts +26 -0
- package/dist/esm/lib/memory/attention.js +171 -0
- package/dist/esm/lib/memory/borrowedMutation.d.ts +8 -0
- package/dist/esm/lib/memory/borrowedMutation.js +14 -1
- package/dist/esm/lib/memory/frameTypes.d.ts +38 -0
- package/dist/esm/lib/memory/frameTypes.js +3 -1
- package/dist/esm/lib/memory/redaction.d.ts +12 -0
- package/dist/esm/lib/memory/redaction.js +54 -5
- package/dist/esm/lib/pause/record.js +10 -1
- package/dist/esm/lib/pause/types.d.ts +19 -0
- package/dist/esm/lib/pause/types.js +17 -1
- package/dist/esm/lib/reactive/createTypedScope.js +3 -1
- package/dist/esm/lib/reactive/types.d.ts +36 -4
- package/dist/esm/lib/reactive/types.js +3 -1
- package/dist/esm/lib/recorder/AttemptRecorder.d.ts +141 -0
- package/dist/esm/lib/recorder/AttemptRecorder.js +412 -0
- package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +36 -2
- package/dist/esm/lib/recorder/ControlDepRecorder.js +50 -2
- package/dist/esm/lib/recorder/EmitRecorder.d.ts +3 -0
- package/dist/esm/lib/recorder/EmitRecorder.js +1 -1
- package/dist/esm/lib/recorder/InOutRecorder.d.ts +37 -1
- package/dist/esm/lib/recorder/InOutRecorder.js +75 -6
- package/dist/esm/lib/recorder/QualityRecorder.d.ts +32 -5
- package/dist/esm/lib/recorder/QualityRecorder.js +87 -29
- package/dist/esm/lib/recorder/TopologyRecorder.d.ts +35 -5
- package/dist/esm/lib/recorder/TopologyRecorder.js +76 -2
- package/dist/esm/lib/recorder/attemptMetricRows.d.ts +11 -0
- package/dist/esm/lib/recorder/attemptMetricRows.js +202 -0
- package/dist/esm/lib/recorder/attemptMetrics.d.ts +7 -0
- package/dist/esm/lib/recorder/attemptMetrics.js +165 -0
- package/dist/esm/lib/recorder/attemptMetricsTypes.d.ts +114 -0
- package/dist/esm/lib/recorder/attemptMetricsTypes.js +2 -0
- package/dist/esm/lib/recorder/attemptOTel.d.ts +78 -0
- package/dist/esm/lib/recorder/attemptOTel.js +107 -0
- package/dist/esm/lib/recorder/attemptSeries.d.ts +81 -0
- package/dist/esm/lib/recorder/attemptSeries.js +103 -0
- package/dist/esm/lib/recorder/hooks.d.ts +9 -0
- package/dist/esm/lib/recorder/hooks.js +4 -1
- package/dist/esm/lib/runner/DeferredObserverTier.js +13 -1
- package/dist/esm/lib/runner/ExecutionRuntime.d.ts +54 -6
- package/dist/esm/lib/runner/ExecutionRuntime.js +57 -5
- package/dist/esm/lib/runner/FlowChartExecutor.d.ts +46 -2
- package/dist/esm/lib/runner/FlowChartExecutor.js +330 -101
- package/dist/esm/lib/runner/RunnableChart.d.ts +6 -0
- package/dist/esm/lib/runner/RunnableChart.js +5 -1
- package/dist/esm/lib/runner/attach.d.ts +2 -1
- package/dist/esm/lib/runner/attach.js +8 -2
- package/dist/esm/lib/runner/checkpoint.js +3 -1
- package/dist/esm/lib/runner/deadline.d.ts +42 -0
- package/dist/esm/lib/runner/deadline.js +90 -0
- package/dist/esm/lib/runner/index.d.ts +3 -1
- package/dist/esm/lib/runner/index.js +2 -1
- package/dist/esm/lib/runner/options.d.ts +17 -0
- package/dist/esm/lib/runner/options.js +3 -1
- package/dist/esm/lib/runner/recordSink.d.ts +128 -0
- package/dist/esm/lib/runner/recordSink.js +296 -0
- package/dist/esm/lib/runner/resume.d.ts +3 -0
- package/dist/esm/lib/runner/resume.js +22 -2
- package/dist/esm/lib/runner/snapshot.d.ts +2 -2
- package/dist/esm/lib/runner/snapshot.js +6 -2
- package/dist/esm/lib/scope/ScopeFacade.d.ts +118 -4
- package/dist/esm/lib/scope/ScopeFacade.js +304 -7
- package/dist/esm/lib/scope/recorders/DebugRecorder.d.ts +17 -3
- package/dist/esm/lib/scope/recorders/DebugRecorder.js +79 -13
- package/dist/esm/lib/scope/recorders/MetricRecorder.d.ts +10 -0
- package/dist/esm/lib/scope/recorders/MetricRecorder.js +15 -2
- package/dist/esm/lib/scope/runtime.d.ts +3 -0
- package/dist/esm/lib/scope/runtime.js +1 -1
- package/dist/esm/lib/scope/types.d.ts +6 -0
- package/dist/esm/lib/scope/types.js +1 -1
- package/dist/esm/lib/sinks/fileSink.d.ts +135 -0
- package/dist/esm/lib/sinks/fileSink.js +387 -0
- package/dist/esm/recorders.d.ts +8 -2
- package/dist/esm/recorders.js +7 -1
- package/dist/esm/sinks.d.ts +23 -0
- package/dist/esm/sinks.js +23 -0
- package/dist/esm/trace.d.ts +2 -2
- package/dist/esm/trace.js +1 -1
- package/dist/index.js +77 -60
- package/dist/lib/attempt/anySignal.js +43 -0
- package/dist/lib/attempt/call.js +134 -0
- package/dist/lib/attempt/category.js +136 -0
- package/dist/lib/attempt/correlation.js +186 -0
- package/dist/lib/attempt/deadline.js +112 -0
- package/dist/lib/attempt/decision.js +139 -0
- package/dist/lib/attempt/effect.js +174 -0
- package/dist/lib/attempt/errors.js +49 -0
- package/dist/lib/attempt/index.js +26 -0
- package/dist/lib/attempt/name.js +48 -0
- package/dist/lib/attempt/observed.js +177 -0
- package/dist/lib/attempt/policy.js +92 -0
- package/dist/lib/attempt/record.js +29 -0
- package/dist/lib/attempt/retryLoopContext.js +31 -0
- package/dist/lib/attempt/retryLoopTypes.js +3 -0
- package/dist/lib/attempt/runner.js +530 -0
- package/dist/lib/attempt/standalone.js +130 -0
- package/dist/lib/attempt/types.js +17 -0
- package/dist/lib/budget/index.js +17 -0
- package/dist/lib/budget/timeBudget.js +674 -0
- package/dist/lib/builder/FlowChartBuilder.js +199 -9
- package/dist/lib/builder/retryLoop.js +287 -0
- package/dist/lib/builder/types.js +1 -1
- package/dist/lib/decide/decide.js +2 -2
- package/dist/lib/decide/index.js +2 -2
- package/dist/lib/decide/types.js +1 -8
- package/dist/lib/engine/graph/StageNode.js +1 -1
- package/dist/lib/engine/graph/prefixNodeTree.js +5 -1
- package/dist/lib/engine/handlers/ChildrenExecutor.js +36 -6
- package/dist/lib/engine/handlers/DeciderHandler.js +7 -3
- package/dist/lib/engine/handlers/ResumeEntry.js +3 -1
- package/dist/lib/engine/handlers/SelectorHandler.js +4 -3
- package/dist/lib/engine/handlers/StageRunner.js +36 -9
- package/dist/lib/engine/handlers/SubflowExecutor.js +24 -5
- package/dist/lib/engine/handlers/commitStage.js +24 -5
- package/dist/lib/engine/handlers/stageError.js +26 -2
- package/dist/lib/engine/index.js +1 -1
- package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +67 -39
- package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +19 -2
- package/dist/lib/engine/narrative/NarrativeFlowRecorder.js +60 -8
- package/dist/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +2 -1
- package/dist/lib/engine/narrative/formatting/sentences.js +131 -2
- package/dist/lib/engine/narrative/index.js +1 -1
- package/dist/lib/engine/narrative/narrativeTypes.js +1 -1
- package/dist/lib/engine/narrative/recorders/ManifestFlowRecorder.js +55 -2
- package/dist/lib/engine/narrative/recorders/index.js +1 -1
- package/dist/lib/engine/narrative/types.js +1 -1
- package/dist/lib/engine/traversal/FlowchartTraverser.js +192 -116
- package/dist/lib/engine/traversalContext.js +6 -3
- package/dist/lib/engine/types.js +1 -1
- package/dist/lib/errors/terminalFailure.js +64 -0
- package/dist/lib/filter/evaluator.js +139 -0
- package/dist/lib/ids/idempotencyKey.js +28 -0
- package/dist/lib/memory/StageContext.js +246 -5
- package/dist/lib/memory/attention.js +175 -0
- package/dist/lib/memory/borrowedMutation.js +16 -2
- package/dist/lib/memory/frameTypes.js +3 -1
- package/dist/lib/memory/redaction.js +54 -5
- package/dist/lib/pause/record.js +10 -1
- package/dist/lib/pause/types.js +17 -1
- package/dist/lib/reactive/createTypedScope.js +3 -1
- package/dist/lib/reactive/types.js +3 -1
- package/dist/lib/recorder/AttemptRecorder.js +417 -0
- package/dist/lib/recorder/ControlDepRecorder.js +50 -2
- package/dist/lib/recorder/EmitRecorder.js +1 -1
- package/dist/lib/recorder/InOutRecorder.js +75 -6
- package/dist/lib/recorder/QualityRecorder.js +87 -29
- package/dist/lib/recorder/TopologyRecorder.js +76 -2
- package/dist/lib/recorder/attemptMetricRows.js +209 -0
- package/dist/lib/recorder/attemptMetrics.js +174 -0
- package/dist/lib/recorder/attemptMetricsTypes.js +3 -0
- package/dist/lib/recorder/attemptOTel.js +111 -0
- package/dist/lib/recorder/attemptSeries.js +113 -0
- package/dist/lib/recorder/hooks.js +4 -1
- package/dist/lib/runner/DeferredObserverTier.js +13 -1
- package/dist/lib/runner/ExecutionRuntime.js +57 -5
- package/dist/lib/runner/FlowChartExecutor.js +330 -101
- package/dist/lib/runner/RunnableChart.js +5 -1
- package/dist/lib/runner/attach.js +8 -2
- package/dist/lib/runner/checkpoint.js +3 -1
- package/dist/lib/runner/deadline.js +94 -0
- package/dist/lib/runner/index.js +4 -2
- package/dist/lib/runner/options.js +3 -1
- package/dist/lib/runner/recordSink.js +302 -0
- package/dist/lib/runner/resume.js +22 -2
- package/dist/lib/runner/snapshot.js +6 -2
- package/dist/lib/scope/ScopeFacade.js +303 -6
- package/dist/lib/scope/recorders/DebugRecorder.js +79 -13
- package/dist/lib/scope/recorders/MetricRecorder.js +15 -2
- package/dist/lib/scope/runtime.js +1 -1
- package/dist/lib/scope/types.js +1 -1
- package/dist/lib/sinks/fileSink.js +392 -0
- package/dist/recorders.js +10 -2
- package/dist/sinks.js +32 -0
- package/dist/trace.js +1 -1
- package/dist/types/index.d.ts +62 -2
- package/dist/types/lib/attempt/anySignal.d.ts +19 -0
- package/dist/types/lib/attempt/call.d.ts +88 -0
- package/dist/types/lib/attempt/category.d.ts +37 -0
- package/dist/types/lib/attempt/correlation.d.ts +95 -0
- package/dist/types/lib/attempt/deadline.d.ts +44 -0
- package/dist/types/lib/attempt/decision.d.ts +52 -0
- package/dist/types/lib/attempt/effect.d.ts +76 -0
- package/dist/types/lib/attempt/errors.d.ts +41 -0
- package/dist/types/lib/attempt/index.d.ts +18 -0
- package/dist/types/lib/attempt/name.d.ts +21 -0
- package/dist/types/lib/attempt/observed.d.ts +66 -0
- package/dist/types/lib/attempt/policy.d.ts +45 -0
- package/dist/types/lib/attempt/record.d.ts +11 -0
- package/dist/types/lib/attempt/retryLoopContext.d.ts +18 -0
- package/dist/types/lib/attempt/retryLoopTypes.d.ts +18 -0
- package/dist/types/lib/attempt/runner.d.ts +157 -0
- package/dist/types/lib/attempt/standalone.d.ts +47 -0
- package/dist/types/lib/attempt/types.d.ts +453 -0
- package/dist/types/lib/budget/index.d.ts +9 -0
- package/dist/types/lib/budget/timeBudget.d.ts +136 -0
- package/dist/types/lib/builder/FlowChartBuilder.d.ts +88 -3
- package/dist/types/lib/builder/retryLoop.d.ts +56 -0
- package/dist/types/lib/builder/types.d.ts +35 -1
- package/dist/types/lib/decide/index.d.ts +1 -1
- package/dist/types/lib/decide/types.d.ts +3 -0
- package/dist/types/lib/engine/graph/StageNode.d.ts +11 -1
- package/dist/types/lib/engine/handlers/StageRunner.d.ts +8 -1
- package/dist/types/lib/engine/handlers/commitStage.d.ts +7 -0
- package/dist/types/lib/engine/handlers/stageError.d.ts +9 -0
- package/dist/types/lib/engine/index.d.ts +2 -2
- package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +27 -13
- package/dist/types/lib/engine/narrative/FlowRecorderDispatcher.d.ts +4 -1
- package/dist/types/lib/engine/narrative/NarrativeFlowRecorder.d.ts +22 -3
- package/dist/types/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +1 -0
- package/dist/types/lib/engine/narrative/formatting/sentences.d.ts +23 -0
- package/dist/types/lib/engine/narrative/index.d.ts +2 -2
- package/dist/types/lib/engine/narrative/narrativeTypes.d.ts +27 -21
- package/dist/types/lib/engine/narrative/recorders/ManifestFlowRecorder.d.ts +45 -2
- package/dist/types/lib/engine/narrative/recorders/index.d.ts +1 -1
- package/dist/types/lib/engine/narrative/types.d.ts +74 -5
- package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +59 -19
- package/dist/types/lib/engine/traversalContext.d.ts +7 -2
- package/dist/types/lib/engine/types.d.ts +52 -57
- package/dist/types/lib/errors/terminalFailure.d.ts +29 -0
- package/dist/types/lib/{decide → filter}/evaluator.d.ts +7 -2
- package/dist/types/lib/ids/idempotencyKey.d.ts +14 -0
- package/dist/types/lib/memory/StageContext.d.ts +123 -3
- package/dist/types/lib/memory/attention.d.ts +26 -0
- package/dist/types/lib/memory/borrowedMutation.d.ts +8 -0
- package/dist/types/lib/memory/frameTypes.d.ts +38 -0
- package/dist/types/lib/memory/redaction.d.ts +12 -0
- package/dist/types/lib/pause/types.d.ts +19 -0
- package/dist/types/lib/reactive/types.d.ts +36 -4
- package/dist/types/lib/recorder/AttemptRecorder.d.ts +141 -0
- package/dist/types/lib/recorder/ControlDepRecorder.d.ts +36 -2
- package/dist/types/lib/recorder/EmitRecorder.d.ts +3 -0
- package/dist/types/lib/recorder/InOutRecorder.d.ts +37 -1
- package/dist/types/lib/recorder/QualityRecorder.d.ts +32 -5
- package/dist/types/lib/recorder/TopologyRecorder.d.ts +35 -5
- package/dist/types/lib/recorder/attemptMetricRows.d.ts +11 -0
- package/dist/types/lib/recorder/attemptMetrics.d.ts +7 -0
- package/dist/types/lib/recorder/attemptMetricsTypes.d.ts +114 -0
- package/dist/types/lib/recorder/attemptOTel.d.ts +78 -0
- package/dist/types/lib/recorder/attemptSeries.d.ts +81 -0
- package/dist/types/lib/recorder/hooks.d.ts +9 -0
- package/dist/types/lib/runner/ExecutionRuntime.d.ts +54 -6
- package/dist/types/lib/runner/FlowChartExecutor.d.ts +46 -2
- package/dist/types/lib/runner/RunnableChart.d.ts +6 -0
- package/dist/types/lib/runner/attach.d.ts +2 -1
- package/dist/types/lib/runner/deadline.d.ts +42 -0
- package/dist/types/lib/runner/index.d.ts +3 -1
- package/dist/types/lib/runner/options.d.ts +17 -0
- package/dist/types/lib/runner/recordSink.d.ts +128 -0
- package/dist/types/lib/runner/resume.d.ts +3 -0
- package/dist/types/lib/runner/snapshot.d.ts +2 -2
- package/dist/types/lib/scope/ScopeFacade.d.ts +118 -4
- package/dist/types/lib/scope/recorders/DebugRecorder.d.ts +17 -3
- package/dist/types/lib/scope/recorders/MetricRecorder.d.ts +10 -0
- package/dist/types/lib/scope/runtime.d.ts +3 -0
- package/dist/types/lib/scope/types.d.ts +6 -0
- package/dist/types/lib/sinks/fileSink.d.ts +135 -0
- package/dist/types/recorders.d.ts +8 -2
- package/dist/types/sinks.d.ts +23 -0
- package/dist/types/trace.d.ts +2 -2
- package/package.json +20 -6
- package/dist/esm/lib/decide/evaluator.js +0 -130
- package/dist/lib/decide/evaluator.js +0 -134
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Called by FlowChartBuilder.build() to enrich the compiled chart with
|
|
6
6
|
* d3-style chainable run methods and self-describing outputs.
|
|
7
7
|
*/
|
|
8
|
+
import { type TimeBudgetOptions, type TimeBudgetReport } from '../budget/index.js';
|
|
8
9
|
import type { FlowChart } from '../builder/types.js';
|
|
9
10
|
import type { JsonSchema } from '../contract/types.js';
|
|
10
11
|
import type { FlowRecorder } from '../engine/narrative/types.js';
|
|
@@ -49,6 +50,11 @@ export interface RunnableFlowChart<TOut = any, TScope = any> extends FlowChart<T
|
|
|
49
50
|
toMCPTool(): MCPToolDescription;
|
|
50
51
|
/** Generate a Mermaid flowchart diagram string from the chart's node graph. */
|
|
51
52
|
toMermaid(): string;
|
|
53
|
+
/**
|
|
54
|
+
* The slowest this chart can take, from its declared retry policies — `timeBudget(chart, options)`. Checks
|
|
55
|
+
* against the chart's declared `.budget(ms)` unless `options.budgetMs` is given.
|
|
56
|
+
*/
|
|
57
|
+
timeBudget(options?: TimeBudgetOptions): TimeBudgetReport;
|
|
52
58
|
}
|
|
53
59
|
/**
|
|
54
60
|
* Enrich a FlowChart with run + describe methods.
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Called by FlowChartBuilder.build() to enrich the compiled chart with
|
|
6
6
|
* d3-style chainable run methods and self-describing outputs.
|
|
7
7
|
*/
|
|
8
|
+
import { timeBudget } from '../budget/index.js';
|
|
8
9
|
import { normalizeSchema } from '../contract/schema.js';
|
|
9
10
|
import { RunContext } from './RunContext.js';
|
|
10
11
|
// Cache for no-options toOpenAPI() calls only — parameterized calls are not cached
|
|
@@ -94,6 +95,9 @@ export function makeRunnable(chart) {
|
|
|
94
95
|
walk(chart.root);
|
|
95
96
|
return lines.join('\n');
|
|
96
97
|
};
|
|
98
|
+
runnable.timeBudget = function (options) {
|
|
99
|
+
return timeBudget(chart, options);
|
|
100
|
+
};
|
|
97
101
|
runnable.toMCPTool = function () {
|
|
98
102
|
const cached = mcpCache.get(chart);
|
|
99
103
|
if (cached)
|
|
@@ -131,4 +135,4 @@ function slugify(id) {
|
|
|
131
135
|
.replace(/[^a-z0-9]+/g, '-')
|
|
132
136
|
.replace(/^-|-$/g, '') || 'execute');
|
|
133
137
|
}
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVubmFibGVDaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBR0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBS3hELE9BQU8sRUFBa0IsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUE0QzdELG1GQUFtRjtBQUNuRixzREFBc0Q7QUFDdEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQXFCLENBQUM7QUFDdEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQWlDLENBQUM7QUFFOUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBZSxLQUE4QjtJQUN2RSxNQUFNLFFBQVEsR0FBRyxLQUF3QyxDQUFDO0lBRTFELFFBQVEsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUErQjtRQUMzRCxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUM7SUFFRixRQUFRLENBQUMsTUFBTSxHQUFHLFVBQVUsTUFBdUI7UUFDakQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDO0lBRUYsUUFBUSxDQUFDLEdBQUcsR0FBRyxVQUFVLE9BQW9CO1FBQzNDLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQztJQUVGLFFBQVEsQ0FBQyxTQUFTLEdBQUcsVUFBVSxPQUE2QjtRQUMxRCxvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxL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QVUsRUFBRSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFFcEUsTUFBTSxJQUFJLEdBQXVCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUVwRSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVGLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxlQUFlLENBQUMsRUFBVTtJQUNqQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxTQUFTLENBQUM7QUFDbkYsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsT0FBTyxDQUFDLEVBQVU7SUFDekIsT0FBTyxDQUNMLEVBQUU7U0FDQyxXQUFXLEVBQUU7U0FDYixPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQztTQUMzQixPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FDdEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJ1bm5hYmxlQ2hhcnQgLS0gQWRkcyAucmVjb3JkZXIoKSwgLnJlZGFjdCgpLCAucnVuKCksIC50b09wZW5BUEkoKSwgLnRvTUNQVG9vbCgpXG4gKiB0byBhIEZsb3dDaGFydCBvYmplY3QuXG4gKlxuICogQ2FsbGVkIGJ5IEZsb3dDaGFydEJ1aWxkZXIuYnVpbGQoKSB0byBlbnJpY2ggdGhlIGNvbXBpbGVkIGNoYXJ0IHdpdGhcbiAqIGQzLXN0eWxlIGNoYWluYWJsZSBydW4gbWV0aG9kcyBhbmQgc2VsZi1kZXNjcmliaW5nIG91dHB1dHMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBGbG93Q2hhcnQgfSBmcm9tICcuLi9idWlsZGVyL3R5cGVzLmpzJztcbmltcG9ydCB7IG5vcm1hbGl6ZVNjaGVtYSB9IGZyb20gJy4uL2NvbnRyYWN0L3NjaGVtYS5qcyc7XG5pbXBvcnQgdHlwZSB7IEpzb25TY2hlbWEgfSBmcm9tICcuLi9jb250cmFjdC90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3dSZWNvcmRlciB9IGZyb20gJy4uL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSdW5PcHRpb25zLCBTdGFnZU5vZGUgfSBmcm9tICcuLi9lbmdpbmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWRhY3Rpb25Qb2xpY3ksIFNjb3BlUmVjb3JkZXIgfSBmcm9tICcuLi9zY29wZS90eXBlcy5qcyc7XG5pbXBvcnQgeyB0eXBlIFJ1blJlc3VsdCwgUnVuQ29udGV4dCB9IGZyb20gJy4vUnVuQ29udGV4dC5qcyc7XG5cbi8qKiBPcGVuQVBJIGdlbmVyYXRpb24gb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRPcGVuQVBJT3B0aW9ucyB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbn1cblxuLyoqIE1DUCB0b29sIGRlc2NyaXB0aW9uIOKAlCBzaGFwZSByZXF1aXJlZCBieSB0aGUgTW9kZWwgQ29udGV4dCBQcm90b2NvbCBzcGVjLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNQ1BUb29sRGVzY3JpcHRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBKU09OIFNjaGVtYSBvYmplY3QgZGVzY3JpYmluZyB0aGUgdG9vbCdzIGlucHV0LlxuICAgKiBBbHdheXMgcHJlc2VudCDigJQgdGhlIE1DUCBzcGVjIHJlcXVpcmVzIGlucHV0U2NoZW1hIGV2ZW4gZm9yIHRvb2xzIHdpdGggbm8gcGFyYW1ldGVycy5cbiAgICogRGVmYXVsdHMgdG8gYHsgdHlwZTogJ29iamVjdCcsIHByb3BlcnRpZXM6IHt9LCBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UgfWAuXG4gICAqL1xuICBpbnB1dFNjaGVtYTogSnNvblNjaGVtYTtcbn1cblxuLyoqXG4gKiBGbG93Q2hhcnQgZW5yaWNoZWQgd2l0aCBkMy1zdHlsZSBydW4gbWV0aG9kcyBhbmQgc2VsZi1kZXNjcmliaW5nIG91dHB1dHMuXG4gKlxuICogRXh0ZW5kcyBidWlsZGVyLkZsb3dDaGFydCAod2hpY2ggYWxyZWFkeSBjYXJyaWVzIGJ1aWxkVGltZVN0cnVjdHVyZSwgZGVzY3JpcHRpb24sXG4gKiBzdGFnZURlc2NyaXB0aW9ucywgaW5wdXRTY2hlbWEsIG91dHB1dFNjaGVtYSwgb3V0cHV0TWFwcGVyKSBhbmQgYWRkcyB0aGUgcnVudGltZVxuICogbWV0aG9kcyBhdHRhY2hlZCBieSBtYWtlUnVubmFibGUoKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5uYWJsZUZsb3dDaGFydDxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IGV4dGVuZHMgRmxvd0NoYXJ0PFRPdXQsIFRTY29wZT4ge1xuICAvKiogQXR0YWNoIGEgcmVjb3JkZXIgZm9yIHRoZSBuZXh0IHJ1bi4gUmV0dXJucyBhIGNoYWluYWJsZSBSdW5Db250ZXh0LiAqL1xuICByZWNvcmRlcihyOiBTY29wZVJlY29yZGVyIHwgRmxvd1JlY29yZGVyKTogUnVuQ29udGV4dDxUT3V0LCBUU2NvcGU+O1xuICAvKiogU2V0IHJlZGFjdGlvbiBwb2xpY3kgZm9yIHRoZSBuZXh0IHJ1bi4gUmV0dXJucyBhIGNoYWluYWJsZSBSdW5Db250ZXh0LiAqL1xuICByZWRhY3QocG9saWN5OiBSZWRhY3Rpb25Qb2xpY3kpOiBSdW5Db250ZXh0PFRPdXQsIFRTY29wZT47XG4gIC8qKiBFeGVjdXRlIHRoZSBjaGFydCBkaXJlY3RseSAoYmFyZSBydW4sIG5vIHJlY29yZGVycykuICovXG4gIHJ1bihvcHRpb25zPzogUnVuT3B0aW9ucyk6IFByb21pc2U8UnVuUmVzdWx0PjtcbiAgLyoqIEdlbmVyYXRlIE9wZW5BUEkgMy4xIHNwZWMgZnJvbSBjaGFydCBtZXRhZGF0YSArIGNvbnRyYWN0LiBDYWNoZWQgZm9yIG5vLW9wdGlvbnMgY2FsbHMuICovXG4gIHRvT3BlbkFQSShvcHRpb25zPzogQ2hhcnRPcGVuQVBJT3B0aW9ucyk6IG9iamVjdDtcbiAgLyoqIEdlbmVyYXRlIE1DUCB0b29sIGRlc2NyaXB0aW9uIGZyb20gY2hhcnQgbWV0YWRhdGEuIENhY2hlZC4gKi9cbiAgdG9NQ1BUb29sKCk6IE1DUFRvb2xEZXNjcmlwdGlvbjtcbiAgLyoqIEdlbmVyYXRlIGEgTWVybWFpZCBmbG93Y2hhcnQgZGlhZ3JhbSBzdHJpbmcgZnJvbSB0aGUgY2hhcnQncyBub2RlIGdyYXBoLiAqL1xuICB0b01lcm1haWQoKTogc3RyaW5nO1xufVxuXG4vLyBDYWNoZSBmb3Igbm8tb3B0aW9ucyB0b09wZW5BUEkoKSBjYWxscyBvbmx5IOKAlCBwYXJhbWV0ZXJpemVkIGNhbGxzIGFyZSBub3QgY2FjaGVkXG4vLyBiZWNhdXNlIGRpZmZlcmVudCBvcHRpb25zIHByb2R1Y2UgZGlmZmVyZW50IG91dHB1dC5cbmNvbnN0IG9wZW5BUElDYWNoZSA9IG5ldyBXZWFrTWFwPEZsb3dDaGFydCwgb2JqZWN0PigpO1xuY29uc3QgbWNwQ2FjaGUgPSBuZXcgV2Vha01hcDxGbG93Q2hhcnQsIE1DUFRvb2xEZXNjcmlwdGlvbj4oKTtcblxuLyoqXG4gKiBFbnJpY2ggYSBGbG93Q2hhcnQgd2l0aCBydW4gKyBkZXNjcmliZSBtZXRob2RzLlxuICogQ2FsbGVkIGJ5IEZsb3dDaGFydEJ1aWxkZXIuYnVpbGQoKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VSdW5uYWJsZTxUT3V0LCBUU2NvcGU+KGNoYXJ0OiBGbG93Q2hhcnQ8VE91dCwgVFNjb3BlPik6IFJ1bm5hYmxlRmxvd0NoYXJ0PFRPdXQsIFRTY29wZT4ge1xuICBjb25zdCBydW5uYWJsZSA9IGNoYXJ0IGFzIFJ1bm5hYmxlRmxvd0NoYXJ0PFRPdXQsIFRTY29wZT47XG5cbiAgcnVubmFibGUucmVjb3JkZXIgPSBmdW5jdGlvbiAocjogU2NvcGVSZWNvcmRlciB8IEZsb3dSZWNvcmRlcik6IFJ1bkNvbnRleHQ8VE91dCwgVFNjb3BlPiB7XG4gICAgcmV0dXJuIG5ldyBSdW5Db250ZXh0KGNoYXJ0KS5yZWNvcmRlcihyKTtcbiAgfTtcblxuICBydW5uYWJsZS5yZWRhY3QgPSBmdW5jdGlvbiAocG9saWN5OiBSZWRhY3Rpb25Qb2xpY3kpOiBSdW5Db250ZXh0PFRPdXQsIFRTY29wZT4ge1xuICAgIHJldHVybiBuZXcgUnVuQ29udGV4dChjaGFydCkucmVkYWN0KHBvbGljeSk7XG4gIH07XG5cbiAgcnVubmFibGUucnVuID0gZnVuY3Rpb24gKG9wdGlvbnM/OiBSdW5PcHRpb25zKTogUHJvbWlzZTxSdW5SZXN1bHQ+IHtcbiAgICByZXR1cm4gbmV3IFJ1bkNvbnRleHQoY2hhcnQpLnJ1bihvcHRpb25zKTtcbiAgfTtcblxuICBydW5uYWJsZS50b09wZW5BUEkgPSBmdW5jdGlvbiAob3B0aW9ucz86IENoYXJ0T3BlbkFQSU9wdGlvbnMpOiBvYmplY3Qge1xuICAgIC8vIE9ubHkgY2FjaGUgbm8tb3B0aW9ucyBjYWxscyDigJQgcGFyYW1ldGVyaXplZCBjYWxscyB2YXJ5IGJ5IG9wdGlvbnNcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGNhY2hlZCA9IG9wZW5BUElDYWNoZS5nZXQoY2hhcnQpO1xuICAgICAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcbiAgICB9XG5cbiAgICBjb25zdCBidWlsZGVyQ2hhcnQgPSBjaGFydCBhcyBhbnk7XG4gICAgY29uc3QgdGl0bGUgPSBvcHRpb25zPy50aXRsZSA/PyBidWlsZGVyQ2hhcnQuZGVzY3JpcHRpb24/LnNwbGl0KCdcXG4nKVswXSA/PyAnQVBJJztcbiAgICBjb25zdCB2ZXJzaW9uID0gb3B0aW9ucz8udmVyc2lvbiA/PyAnMS4wLjAnO1xuICAgIC8vIFVzZSByb290LmlkICh0aGUgZXhwbGljaXQgbWFjaGluZS1yZWFkYWJsZSBpZCkgYXMgdGhlIHBhdGggc2VnbWVudCwgc2FuaXRpemVkXG4gICAgY29uc3QgcmF3SWQgPSBidWlsZGVyQ2hhcnQucm9vdD8uaWQgPz8gJ2V4ZWN1dGUnO1xuICAgIGNvbnN0IHBhdGggPSBvcHRpb25zPy5wYXRoID8/IGAvJHtzbHVnaWZ5KHJhd0lkKX1gO1xuXG4gICAgY29uc3Qgc3BlYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBvcGVuYXBpOiAnMy4xLjAnLFxuICAgICAgaW5mbzogeyB0aXRsZSwgdmVyc2lvbiwgZGVzY3JpcHRpb246IG9wdGlvbnM/LmRlc2NyaXB0aW9uID8/IGJ1aWxkZXJDaGFydC5kZXNjcmlwdGlvbiB9LFxuICAgICAgcGF0aHM6IHtcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgcG9zdDoge1xuICAgICAgICAgICAgc3VtbWFyeTogdGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYnVpbGRlckNoYXJ0LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgLi4uKGJ1aWxkZXJDaGFydC5pbnB1dFNjaGVtYVxuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHsgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogbm9ybWFsaXplU2NoZW1hKGJ1aWxkZXJDaGFydC5pbnB1dFNjaGVtYSkgfSB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgcmVzcG9uc2VzOiB7XG4gICAgICAgICAgICAgICcyMDAnOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAuLi4oYnVpbGRlckNoYXJ0Lm91dHB1dFNjaGVtYVxuICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnQ6IHsgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogbm9ybWFsaXplU2NoZW1hKGJ1aWxkZXJDaGFydC5vdXRwdXRTY2hlbWEpIH0gfSB9XG4gICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGlmICghb3B0aW9ucykgb3BlbkFQSUNhY2hlLnNldChjaGFydCwgc3BlYyk7XG4gICAgcmV0dXJuIHNwZWM7XG4gIH07XG5cbiAgcnVubmFibGUudG9NZXJtYWlkID0gZnVuY3Rpb24gKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gWydmbG93Y2hhcnQgVEQnXTtcbiAgICBjb25zdCBpZE9mID0gKGs6IHN0cmluZykgPT4gKGsgfHwgJycpLnJlcGxhY2UoL1teYS16QS1aMC05X10vZywgJ18nKSB8fCAnXyc7XG4gICAgY29uc3QgdmlzaXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHdhbGsgPSAobjogU3RhZ2VOb2RlKSA9PiB7XG4gICAgICBjb25zdCBuaWQgPSBpZE9mKG4uaWQpO1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKG5pZCkpIHJldHVybjtcbiAgICAgIHZpc2l0ZWQuYWRkKG5pZCk7XG4gICAgICBsaW5lcy5wdXNoKGAke25pZH1bXCIke24ubmFtZX1cIl1gKTtcbiAgICAgIGZvciAoY29uc3QgYyBvZiBuLmNoaWxkcmVuIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IGNpZCA9IGlkT2YoYy5pZCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCR7bmlkfSAtLT4gJHtjaWR9YCk7XG4gICAgICAgIHdhbGsoYyk7XG4gICAgICB9XG4gICAgICBpZiAobi5uZXh0KSB7XG4gICAgICAgIGNvbnN0IG1pZCA9IGlkT2Yobi5uZXh0LmlkKTtcbiAgICAgICAgbGluZXMucHVzaChgJHtuaWR9IC0tPiAke21pZH1gKTtcbiAgICAgICAgd2FsayhuLm5leHQpO1xuICAgICAgfVxuICAgIH07XG4gICAgd2FsayhjaGFydC5yb290KTtcbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG4gIH07XG5cbiAgcnVubmFibGUudG9NQ1BUb29sID0gZnVuY3Rpb24gKCk6IE1DUFRvb2xEZXNjcmlwdGlvbiB7XG4gICAgY29uc3QgY2FjaGVkID0gbWNwQ2FjaGUuZ2V0KGNoYXJ0KTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgYnVpbGRlckNoYXJ0ID0gY2hhcnQgYXMgYW55O1xuICAgIC8vIFVzZSByb290LmlkIChleHBsaWNpdCBtYWNoaW5lLXJlYWRhYmxlIGlkKSwgc2FuaXRpemVkIHRvIE1DUCBuYW1lIGNoYXJhY3RlciBhbGxvd2xpc3RcbiAgICBjb25zdCBuYW1lID0gc2FuaXRpemVNQ1BOYW1lKGJ1aWxkZXJDaGFydC5yb290Py5pZCA/PyAnZXhlY3V0ZScpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYnVpbGRlckNoYXJ0LmRlc2NyaXB0aW9uIHx8IGBFeGVjdXRlIHRoZSAke25hbWV9IGZsb3djaGFydGA7XG5cbiAgICAvLyBNQ1Agc3BlYyByZXF1aXJlcyBpbnB1dFNjaGVtYSB0byBhbHdheXMgYmUgcHJlc2VudC5cbiAgICAvLyBXaGVuIG5vIGNvbnRyYWN0IGlzIGRlZmluZWQsIHVzZSB0aGUgcmVjb21tZW5kZWQgbm8tcGFyYW1ldGVyIGZvcm0uXG4gICAgY29uc3QgaW5wdXRTY2hlbWE6IEpzb25TY2hlbWEgPSBidWlsZGVyQ2hhcnQuaW5wdXRTY2hlbWFcbiAgICAgID8gbm9ybWFsaXplU2NoZW1hKGJ1aWxkZXJDaGFydC5pbnB1dFNjaGVtYSlcbiAgICAgIDogeyB0eXBlOiAnb2JqZWN0JywgcHJvcGVydGllczoge30sIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSB9O1xuXG4gICAgY29uc3QgdG9vbDogTUNQVG9vbERlc2NyaXB0aW9uID0geyBuYW1lLCBkZXNjcmlwdGlvbiwgaW5wdXRTY2hlbWEgfTtcblxuICAgIG1jcENhY2hlLnNldChjaGFydCwgdG9vbCk7XG4gICAgcmV0dXJuIHRvb2w7XG4gIH07XG5cbiAgcmV0dXJuIHJ1bm5hYmxlO1xufVxuXG4vKipcbiAqIFNhbml0aXplIGEgc3RyaW5nIHRvIGNvbmZvcm0gdG8gdGhlIE1DUCB0b29sIG5hbWUgY2hhcmFjdGVyIGFsbG93bGlzdDpcbiAqIFtBLVphLXowLTlfXFwtLl0g4oCUIGFueSBvdGhlciBjaGFyYWN0ZXIgaXMgcmVwbGFjZWQgd2l0aCB1bmRlcnNjb3JlLlxuICogVHJpbXMgbGVhZGluZy90cmFpbGluZyB1bmRlcnNjb3JlcyBpbnRyb2R1Y2VkIGJ5IHJlcGxhY2VtZW50LlxuICovXG5mdW5jdGlvbiBzYW5pdGl6ZU1DUE5hbWUoaWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpZC5yZXBsYWNlKC9bXkEtWmEtejAtOV9cXC0uXS9nLCAnXycpLnJlcGxhY2UoL15fK3xfKyQvZywgJycpIHx8ICdleGVjdXRlJztcbn1cblxuLyoqXG4gKiBTbHVnaWZ5IGEgc3RyaW5nIGZvciB1c2UgYXMgYW4gT3BlbkFQSSBwYXRoIHNlZ21lbnQuXG4gKiBMb3dlcmNhc2VzIGFuZCByZXBsYWNlcyBub24tYWxwaGFudW1lcmljIHJ1bnMgd2l0aCBoeXBoZW5zLlxuICovXG5mdW5jdGlvbiBzbHVnaWZ5KGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gKFxuICAgIGlkXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKVxuICAgICAgLnJlcGxhY2UoL14tfC0kL2csICcnKSB8fCAnZXhlY3V0ZSdcbiAgKTtcbn1cbiJdfQ==
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVubmFibGVDaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFpRCxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLeEQsT0FBTyxFQUFrQixVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQWlEN0QsbUZBQW1GO0FBQ25GLHNEQUFzRDtBQUN0RCxNQUFNLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUN0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBaUMsQ0FBQztBQUU5RDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFlLEtBQThCO0lBQ3ZFLE1BQU0sUUFBUSxHQUFHLEtBQXdDLENBQUM7SUFFMUQsUUFBUSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQStCO1FBQzNELE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQztJQUVGLFFBQVEsQ0FBQyxNQUFNLEdBQUcsVUFBVSxNQUF1QjtRQUNqRCxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUM7SUFFRixRQUFRLENBQUMsR0FBRyxHQUFHLFVBQVUsT0FBb0I7UUFDM0MsT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDO0lBRUYsUUFBUSxDQUFDLFNBQVMsR0FBRyxVQUFVLE9BQTZCO1FBQzFELG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsT0FBTyxFQUFFLENB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QXNEO1FBQ3RELHNFQUFzRTtRQUN0RSxNQUFNLFdBQVcsR0FBZSxZQUFZLENBQUMsV0FBVztZQUN0RCxDQUFDLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDM0MsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxDQUFDO1FBRXBFLE1BQU0sSUFBSSxHQUF1QixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFcEUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsZUFBZSxDQUFDLEVBQVU7SUFDakMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksU0FBUyxDQUFDO0FBQ25GLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLE9BQU8sQ0FBQyxFQUFVO0lBQ3pCLE9BQU8sQ0FDTCxFQUFFO1NBQ0MsV0FBVyxFQUFFO1NBQ2IsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUM7U0FDM0IsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxTQUFTLENBQ3RDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSdW5uYWJsZUNoYXJ0IC0tIEFkZHMgLnJlY29yZGVyKCksIC5yZWRhY3QoKSwgLnJ1bigpLCAudG9PcGVuQVBJKCksIC50b01DUFRvb2woKVxuICogdG8gYSBGbG93Q2hhcnQgb2JqZWN0LlxuICpcbiAqIENhbGxlZCBieSBGbG93Q2hhcnRCdWlsZGVyLmJ1aWxkKCkgdG8gZW5yaWNoIHRoZSBjb21waWxlZCBjaGFydCB3aXRoXG4gKiBkMy1zdHlsZSBjaGFpbmFibGUgcnVuIG1ldGhvZHMgYW5kIHNlbGYtZGVzY3JpYmluZyBvdXRwdXRzLlxuICovXG5cbmltcG9ydCB7IHR5cGUgVGltZUJ1ZGdldE9wdGlvbnMsIHR5cGUgVGltZUJ1ZGdldFJlcG9ydCwgdGltZUJ1ZGdldCB9IGZyb20gJy4uL2J1ZGdldC9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3dDaGFydCB9IGZyb20gJy4uL2J1aWxkZXIvdHlwZXMuanMnO1xuaW1wb3J0IHsgbm9ybWFsaXplU2NoZW1hIH0gZnJvbSAnLi4vY29udHJhY3Qvc2NoZW1hLmpzJztcbmltcG9ydCB0eXBlIHsgSnNvblNjaGVtYSB9IGZyb20gJy4uL2NvbnRyYWN0L3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgRmxvd1JlY29yZGVyIH0gZnJvbSAnLi4vZW5naW5lL25hcnJhdGl2ZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFJ1bk9wdGlvbnMsIFN0YWdlTm9kZSB9IGZyb20gJy4uL2VuZ2luZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlZGFjdGlvblBvbGljeSwgU2NvcGVSZWNvcmRlciB9IGZyb20gJy4uL3Njb3BlL3R5cGVzLmpzJztcbmltcG9ydCB7IHR5cGUgUnVuUmVzdWx0LCBSdW5Db250ZXh0IH0gZnJvbSAnLi9SdW5Db250ZXh0LmpzJztcblxuLyoqIE9wZW5BUEkgZ2VuZXJhdGlvbiBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFydE9wZW5BUElPcHRpb25zIHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHZlcnNpb24/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xufVxuXG4vKiogTUNQIHRvb2wgZGVzY3JpcHRpb24g4oCUIHNoYXBlIHJlcXVpcmVkIGJ5IHRoZSBNb2RlbCBDb250ZXh0IFByb3RvY29sIHNwZWMuICovXG5leHBvcnQgaW50ZXJmYWNlIE1DUFRvb2xEZXNjcmlwdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgLyoqXG4gICAqIEpTT04gU2NoZW1hIG9iamVjdCBkZXNjcmliaW5nIHRoZSB0b29sJ3MgaW5wdXQuXG4gICAqIEFsd2F5cyBwcmVzZW50IOKAlCB0aGUgTUNQIHNwZWMgcmVxdWlyZXMgaW5wdXRTY2hlbWEgZXZlbiBmb3IgdG9vbHMgd2l0aCBubyBwYXJhbWV0ZXJzLlxuICAgKiBEZWZhdWx0cyB0byBgeyB0eXBlOiAnb2JqZWN0JywgcHJvcGVydGllczoge30sIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSB9YC5cbiAgICovXG4gIGlucHV0U2NoZW1hOiBKc29uU2NoZW1hO1xufVxuXG4vKipcbiAqIEZsb3dDaGFydCBlbnJpY2hlZCB3aXRoIGQzLXN0eWxlIHJ1biBtZXRob2RzIGFuZCBzZWxmLWRlc2NyaWJpbmcgb3V0cHV0cy5cbiAqXG4gKiBFeHRlbmRzIGJ1aWxkZXIuRmxvd0NoYXJ0ICh3aGljaCBhbHJlYWR5IGNhcnJpZXMgYnVpbGRUaW1lU3RydWN0dXJlLCBkZXNjcmlwdGlvbixcbiAqIHN0YWdlRGVzY3JpcHRpb25zLCBpbnB1dFNjaGVtYSwgb3V0cHV0U2NoZW1hLCBvdXRwdXRNYXBwZXIpIGFuZCBhZGRzIHRoZSBydW50aW1lXG4gKiBtZXRob2RzIGF0dGFjaGVkIGJ5IG1ha2VSdW5uYWJsZSgpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bm5hYmxlRmxvd0NoYXJ0PFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gZXh0ZW5kcyBGbG93Q2hhcnQ8VE91dCwgVFNjb3BlPiB7XG4gIC8qKiBBdHRhY2ggYSByZWNvcmRlciBmb3IgdGhlIG5leHQgcnVuLiBSZXR1cm5zIGEgY2hhaW5hYmxlIFJ1bkNvbnRleHQuICovXG4gIHJlY29yZGVyKHI6IFNjb3BlUmVjb3JkZXIgfCBGbG93UmVjb3JkZXIpOiBSdW5Db250ZXh0PFRPdXQsIFRTY29wZT47XG4gIC8qKiBTZXQgcmVkYWN0aW9uIHBvbGljeSBmb3IgdGhlIG5leHQgcnVuLiBSZXR1cm5zIGEgY2hhaW5hYmxlIFJ1bkNvbnRleHQuICovXG4gIHJlZGFjdChwb2xpY3k6IFJlZGFjdGlvblBvbGljeSk6IFJ1bkNvbnRleHQ8VE91dCwgVFNjb3BlPjtcbiAgLyoqIEV4ZWN1dGUgdGhlIGNoYXJ0IGRpcmVjdGx5IChiYXJlIHJ1biwgbm8gcmVjb3JkZXJzKS4gKi9cbiAgcnVuKG9wdGlvbnM/OiBSdW5PcHRpb25zKTogUHJvbWlzZTxSdW5SZXN1bHQ+O1xuICAvKiogR2VuZXJhdGUgT3BlbkFQSSAzLjEgc3BlYyBmcm9tIGNoYXJ0IG1ldGFkYXRhICsgY29udHJhY3QuIENhY2hlZCBmb3Igbm8tb3B0aW9ucyBjYWxscy4gKi9cbiAgdG9PcGVuQVBJKG9wdGlvbnM/OiBDaGFydE9wZW5BUElPcHRpb25zKTogb2JqZWN0O1xuICAvKiogR2VuZXJhdGUgTUNQIHRvb2wgZGVzY3JpcHRpb24gZnJvbSBjaGFydCBtZXRhZGF0YS4gQ2FjaGVkLiAqL1xuICB0b01DUFRvb2woKTogTUNQVG9vbERlc2NyaXB0aW9uO1xuICAvKiogR2VuZXJhdGUgYSBNZXJtYWlkIGZsb3djaGFydCBkaWFncmFtIHN0cmluZyBmcm9tIHRoZSBjaGFydCdzIG5vZGUgZ3JhcGguICovXG4gIHRvTWVybWFpZCgpOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2xvd2VzdCB0aGlzIGNoYXJ0IGNhbiB0YWtlLCBmcm9tIGl0cyBkZWNsYXJlZCByZXRyeSBwb2xpY2llcyDigJQgYHRpbWVCdWRnZXQoY2hhcnQsIG9wdGlvbnMpYC4gQ2hlY2tzXG4gICAqIGFnYWluc3QgdGhlIGNoYXJ0J3MgZGVjbGFyZWQgYC5idWRnZXQobXMpYCB1bmxlc3MgYG9wdGlvbnMuYnVkZ2V0TXNgIGlzIGdpdmVuLlxuICAgKi9cbiAgdGltZUJ1ZGdldChvcHRpb25zPzogVGltZUJ1ZGdldE9wdGlvbnMpOiBUaW1lQnVkZ2V0UmVwb3J0O1xufVxuXG4vLyBDYWNoZSBmb3Igbm8tb3B0aW9ucyB0b09wZW5BUEkoKSBjYWxscyBvbmx5IOKAlCBwYXJhbWV0ZXJpemVkIGNhbGxzIGFyZSBub3QgY2FjaGVkXG4vLyBiZWNhdXNlIGRpZmZlcmVudCBvcHRpb25zIHByb2R1Y2UgZGlmZmVyZW50IG91dHB1dC5cbmNvbnN0IG9wZW5BUElDYWNoZSA9IG5ldyBXZWFrTWFwPEZsb3dDaGFydCwgb2JqZWN0PigpO1xuY29uc3QgbWNwQ2FjaGUgPSBuZXcgV2Vha01hcDxGbG93Q2hhcnQsIE1DUFRvb2xEZXNjcmlwdGlvbj4oKTtcblxuLyoqXG4gKiBFbnJpY2ggYSBGbG93Q2hhcnQgd2l0aCBydW4gKyBkZXNjcmliZSBtZXRob2RzLlxuICogQ2FsbGVkIGJ5IEZsb3dDaGFydEJ1aWxkZXIuYnVpbGQoKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VSdW5uYWJsZTxUT3V0LCBUU2NvcGU+KGNoYXJ0OiBGbG93Q2hhcnQ8VE91dCwgVFNjb3BlPik6IFJ1bm5hYmxlRmxvd0NoYXJ0PFRPdXQsIFRTY29wZT4ge1xuICBjb25zdCBydW5uYWJsZSA9IGNoYXJ0IGFzIFJ1bm5hYmxlRmxvd0NoYXJ0PFRPdXQsIFRTY29wZT47XG5cbiAgcnVubmFibGUucmVjb3JkZXIgPSBmdW5jdGlvbiAocjogU2NvcGVSZWNvcmRlciB8IEZsb3dSZWNvcmRlcik6IFJ1bkNvbnRleHQ8VE91dCwgVFNjb3BlPiB7XG4gICAgcmV0dXJuIG5ldyBSdW5Db250ZXh0KGNoYXJ0KS5yZWNvcmRlcihyKTtcbiAgfTtcblxuICBydW5uYWJsZS5yZWRhY3QgPSBmdW5jdGlvbiAocG9saWN5OiBSZWRhY3Rpb25Qb2xpY3kpOiBSdW5Db250ZXh0PFRPdXQsIFRTY29wZT4ge1xuICAgIHJldHVybiBuZXcgUnVuQ29udGV4dChjaGFydCkucmVkYWN0KHBvbGljeSk7XG4gIH07XG5cbiAgcnVubmFibGUucnVuID0gZnVuY3Rpb24gKG9wdGlvbnM/OiBSdW5PcHRpb25zKTogUHJvbWlzZTxSdW5SZXN1bHQ+IHtcbiAgICByZXR1cm4gbmV3IFJ1bkNvbnRleHQoY2hhcnQpLnJ1bihvcHRpb25zKTtcbiAgfTtcblxuICBydW5uYWJsZS50b09wZW5BUEkgPSBmdW5jdGlvbiAob3B0aW9ucz86IENoYXJ0T3BlbkFQSU9wdGlvbnMpOiBvYmplY3Qge1xuICAgIC8vIE9ubHkgY2FjaGUgbm8tb3B0aW9ucyBjYWxscyDigJQgcGFyYW1ldGVyaXplZCBjYWxscyB2YXJ5IGJ5IG9wdGlvbnNcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGNhY2hlZCA9IG9wZW5BUElDYWNoZS5nZXQoY2hhcnQpO1xuICAgICAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcbiAgICB9XG5cbiAgICBjb25zdCBidWlsZGVyQ2hhcnQgPSBjaGFydCBhcyBhbnk7XG4gICAgY29uc3QgdGl0bGUgPSBvcHRpb25zPy50aXRsZSA/PyBidWlsZGVyQ2hhcnQuZGVzY3JpcHRpb24/LnNwbGl0KCdcXG4nKVswXSA/PyAnQVBJJztcbiAgICBjb25zdCB2ZXJzaW9uID0gb3B0aW9ucz8udmVyc2lvbiA/PyAnMS4wLjAnO1xuICAgIC8vIFVzZSByb290LmlkICh0aGUgZXhwbGljaXQgbWFjaGluZS1yZWFkYWJsZSBpZCkgYXMgdGhlIHBhdGggc2VnbWVudCwgc2FuaXRpemVkXG4gICAgY29uc3QgcmF3SWQgPSBidWlsZGVyQ2hhcnQucm9vdD8uaWQgPz8gJ2V4ZWN1dGUnO1xuICAgIGNvbnN0IHBhdGggPSBvcHRpb25zPy5wYXRoID8/IGAvJHtzbHVnaWZ5KHJhd0lkKX1gO1xuXG4gICAgY29uc3Qgc3BlYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBvcGVuYXBpOiAnMy4xLjAnLFxuICAgICAgaW5mbzogeyB0aXRsZSwgdmVyc2lvbiwgZGVzY3JpcHRpb246IG9wdGlvbnM/LmRlc2NyaXB0aW9uID8/IGJ1aWxkZXJDaGFydC5kZXNjcmlwdGlvbiB9LFxuICAgICAgcGF0aHM6IHtcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgcG9zdDoge1xuICAgICAgICAgICAgc3VtbWFyeTogdGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYnVpbGRlckNoYXJ0LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgLi4uKGJ1aWxkZXJDaGFydC5pbnB1dFNjaGVtYVxuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHsgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogbm9ybWFsaXplU2NoZW1hKGJ1aWxkZXJDaGFydC5pbnB1dFNjaGVtYSkgfSB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgcmVzcG9uc2VzOiB7XG4gICAgICAgICAgICAgICcyMDAnOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAuLi4oYnVpbGRlckNoYXJ0Lm91dHB1dFNjaGVtYVxuICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnQ6IHsgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogbm9ybWFsaXplU2NoZW1hKGJ1aWxkZXJDaGFydC5vdXRwdXRTY2hlbWEpIH0gfSB9XG4gICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGlmICghb3B0aW9ucykgb3BlbkFQSUNhY2hlLnNldChjaGFydCwgc3BlYyk7XG4gICAgcmV0dXJuIHNwZWM7XG4gIH07XG5cbiAgcnVubmFibGUudG9NZXJtYWlkID0gZnVuY3Rpb24gKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gWydmbG93Y2hhcnQgVEQnXTtcbiAgICBjb25zdCBpZE9mID0gKGs6IHN0cmluZykgPT4gKGsgfHwgJycpLnJlcGxhY2UoL1teYS16QS1aMC05X10vZywgJ18nKSB8fCAnXyc7XG4gICAgY29uc3QgdmlzaXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHdhbGsgPSAobjogU3RhZ2VOb2RlKSA9PiB7XG4gICAgICBjb25zdCBuaWQgPSBpZE9mKG4uaWQpO1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKG5pZCkpIHJldHVybjtcbiAgICAgIHZpc2l0ZWQuYWRkKG5pZCk7XG4gICAgICBsaW5lcy5wdXNoKGAke25pZH1bXCIke24ubmFtZX1cIl1gKTtcbiAgICAgIGZvciAoY29uc3QgYyBvZiBuLmNoaWxkcmVuIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IGNpZCA9IGlkT2YoYy5pZCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCR7bmlkfSAtLT4gJHtjaWR9YCk7XG4gICAgICAgIHdhbGsoYyk7XG4gICAgICB9XG4gICAgICBpZiAobi5uZXh0KSB7XG4gICAgICAgIGNvbnN0IG1pZCA9IGlkT2Yobi5uZXh0LmlkKTtcbiAgICAgICAgbGluZXMucHVzaChgJHtuaWR9IC0tPiAke21pZH1gKTtcbiAgICAgICAgd2FsayhuLm5leHQpO1xuICAgICAgfVxuICAgIH07XG4gICAgd2FsayhjaGFydC5yb290KTtcbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG4gIH07XG5cbiAgcnVubmFibGUudGltZUJ1ZGdldCA9IGZ1bmN0aW9uIChvcHRpb25zPzogVGltZUJ1ZGdldE9wdGlvbnMpOiBUaW1lQnVkZ2V0UmVwb3J0IHtcbiAgICByZXR1cm4gdGltZUJ1ZGdldChjaGFydCwgb3B0aW9ucyk7XG4gIH07XG5cbiAgcnVubmFibGUudG9NQ1BUb29sID0gZnVuY3Rpb24gKCk6IE1DUFRvb2xEZXNjcmlwdGlvbiB7XG4gICAgY29uc3QgY2FjaGVkID0gbWNwQ2FjaGUuZ2V0KGNoYXJ0KTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgYnVpbGRlckNoYXJ0ID0gY2hhcnQgYXMgYW55O1xuICAgIC8vIFVzZSByb290LmlkIChleHBsaWNpdCBtYWNoaW5lLXJlYWRhYmxlIGlkKSwgc2FuaXRpemVkIHRvIE1DUCBuYW1lIGNoYXJhY3RlciBhbGxvd2xpc3RcbiAgICBjb25zdCBuYW1lID0gc2FuaXRpemVNQ1BOYW1lKGJ1aWxkZXJDaGFydC5yb290Py5pZCA/PyAnZXhlY3V0ZScpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYnVpbGRlckNoYXJ0LmRlc2NyaXB0aW9uIHx8IGBFeGVjdXRlIHRoZSAke25hbWV9IGZsb3djaGFydGA7XG5cbiAgICAvLyBNQ1Agc3BlYyByZXF1aXJlcyBpbnB1dFNjaGVtYSB0byBhbHdheXMgYmUgcHJlc2VudC5cbiAgICAvLyBXaGVuIG5vIGNvbnRyYWN0IGlzIGRlZmluZWQsIHVzZSB0aGUgcmVjb21tZW5kZWQgbm8tcGFyYW1ldGVyIGZvcm0uXG4gICAgY29uc3QgaW5wdXRTY2hlbWE6IEpzb25TY2hlbWEgPSBidWlsZGVyQ2hhcnQuaW5wdXRTY2hlbWFcbiAgICAgID8gbm9ybWFsaXplU2NoZW1hKGJ1aWxkZXJDaGFydC5pbnB1dFNjaGVtYSlcbiAgICAgIDogeyB0eXBlOiAnb2JqZWN0JywgcHJvcGVydGllczoge30sIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSB9O1xuXG4gICAgY29uc3QgdG9vbDogTUNQVG9vbERlc2NyaXB0aW9uID0geyBuYW1lLCBkZXNjcmlwdGlvbiwgaW5wdXRTY2hlbWEgfTtcblxuICAgIG1jcENhY2hlLnNldChjaGFydCwgdG9vbCk7XG4gICAgcmV0dXJuIHRvb2w7XG4gIH07XG5cbiAgcmV0dXJuIHJ1bm5hYmxlO1xufVxuXG4vKipcbiAqIFNhbml0aXplIGEgc3RyaW5nIHRvIGNvbmZvcm0gdG8gdGhlIE1DUCB0b29sIG5hbWUgY2hhcmFjdGVyIGFsbG93bGlzdDpcbiAqIFtBLVphLXowLTlfXFwtLl0g4oCUIGFueSBvdGhlciBjaGFyYWN0ZXIgaXMgcmVwbGFjZWQgd2l0aCB1bmRlcnNjb3JlLlxuICogVHJpbXMgbGVhZGluZy90cmFpbGluZyB1bmRlcnNjb3JlcyBpbnRyb2R1Y2VkIGJ5IHJlcGxhY2VtZW50LlxuICovXG5mdW5jdGlvbiBzYW5pdGl6ZU1DUE5hbWUoaWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpZC5yZXBsYWNlKC9bXkEtWmEtejAtOV9cXC0uXS9nLCAnXycpLnJlcGxhY2UoL15fK3xfKyQvZywgJycpIHx8ICdleGVjdXRlJztcbn1cblxuLyoqXG4gKiBTbHVnaWZ5IGEgc3RyaW5nIGZvciB1c2UgYXMgYW4gT3BlbkFQSSBwYXRoIHNlZ21lbnQuXG4gKiBMb3dlcmNhc2VzIGFuZCByZXBsYWNlcyBub24tYWxwaGFudW1lcmljIHJ1bnMgd2l0aCBoeXBoZW5zLlxuICovXG5mdW5jdGlvbiBzbHVnaWZ5KGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gKFxuICAgIGlkXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKVxuICAgICAgLnJlcGxhY2UoL14tfC0kL2csICcnKSB8fCAnZXhlY3V0ZSdcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* from the same per-stage list as `onRead`/`onWrite`);
|
|
16
16
|
* - a flow attach turns the narrative on (the flow channel needs it).
|
|
17
17
|
*/
|
|
18
|
+
import type { RunCorrelation } from '../attempt/types.js';
|
|
18
19
|
import type { CombinedNarrativeRecorderOptions } from '../engine/narrative/CombinedNarrativeRecorder.js';
|
|
19
20
|
import { CombinedNarrativeRecorder } from '../engine/narrative/CombinedNarrativeRecorder.js';
|
|
20
21
|
import type { FlowRecorder } from '../engine/narrative/types.js';
|
|
@@ -77,7 +78,7 @@ export declare class RunObservers {
|
|
|
77
78
|
* The marked-keys set is ALWAYS wired (a stage can call
|
|
78
79
|
* `setValue(key, val, true)` for per-call redaction without any policy).
|
|
79
80
|
*/
|
|
80
|
-
composeScopeFactory<TScope>(baseFactory: ScopeFactory<TScope>, redactionPolicy: RedactionPolicy | undefined, sharedRedactedKeys: Set<string
|
|
81
|
+
composeScopeFactory<TScope>(baseFactory: ScopeFactory<TScope>, redactionPolicy: RedactionPolicy | undefined, sharedRedactedKeys: Set<string>, correlation?: RunCorrelation): ScopeFactory<TScope>;
|
|
81
82
|
/**
|
|
82
83
|
* The leg's flow recorders: the narrative recorder (when on), the user's
|
|
83
84
|
* flow recorders, then the deferred tier's flow tap (RFC-001 Block 7) —
|
|
@@ -151,7 +151,7 @@ export class RunObservers {
|
|
|
151
151
|
* The marked-keys set is ALWAYS wired (a stage can call
|
|
152
152
|
* `setValue(key, val, true)` for per-call redaction without any policy).
|
|
153
153
|
*/
|
|
154
|
-
composeScopeFactory(baseFactory, redactionPolicy, sharedRedactedKeys) {
|
|
154
|
+
composeScopeFactory(baseFactory, redactionPolicy, sharedRedactedKeys, correlation) {
|
|
155
155
|
const modifiers = [];
|
|
156
156
|
// 1. Narrative recorder (if enabled)
|
|
157
157
|
if (this.combinedRecorder) {
|
|
@@ -190,6 +190,12 @@ export class RunObservers {
|
|
|
190
190
|
target.useRedactionPolicy?.(policy);
|
|
191
191
|
});
|
|
192
192
|
}
|
|
193
|
+
// 4. The leg's correlation (10.1) — one frozen object per leg, so a factory composed for one leg never
|
|
194
|
+
// stamps another's. Installed even when absent: a target a custom factory re-uses across runs is CLEARED,
|
|
195
|
+
// never left holding an earlier run's. Absent → events byte-identical.
|
|
196
|
+
modifiers.push((target) => {
|
|
197
|
+
target.useCorrelation?.(correlation);
|
|
198
|
+
});
|
|
193
199
|
return ((ctx, stageName, readOnly, envArg) => {
|
|
194
200
|
const scope = baseFactory(ctx, stageName, readOnly, envArg);
|
|
195
201
|
const { target } = requireScopeRuntime(scope);
|
|
@@ -234,4 +240,4 @@ export class RunObservers {
|
|
|
234
240
|
return this.deferredTier;
|
|
235
241
|
}
|
|
236
242
|
}
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9ydW5uZXIvYXR0YWNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUk3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVySCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQThCLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLN0YsTUFBTSxPQUFPLFlBQVk7SUFDdkIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLGdCQUFnQixDQUFvQztJQUNwRCxtR0FBbUc7SUFDbkcsZ0JBQWdCLENBQXdDO0lBQ3hELGFBQWEsR0FBbUIsRUFBRSxDQUFDO0lBQ25DLGNBQWMsR0FBb0IsRUFBRSxDQUFDO0lBQ3JDOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUF3QjtJQUVwQyxlQUFlLENBQUMsT0FBMEM7UUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLE9BQU87WUFBRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBdUIsRUFBRSxPQUErQjtRQUNsRSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUUsSUFBSSxPQUFPLEVBQUUsUUFBUSxL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QUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBeUIsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUI7UUFDZixNQUFNLFNBQVMsR0FBbUIsRUFBRSxDQUFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxDQUFDO1FBQ2xELElBQUksT0FBTztZQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsT0FBTyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdEQsQ0FBQztJQUVELHNHQUFzRztJQUN0RyxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3JHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGtCQUFrQixDQUFDLE9BQStCO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBhdHRhY2gg4oCUIHdobyBvYnNlcnZlcyBhIHJ1biwgYW5kIGhvdyB0aGV5IHJlYWNoIGl0IChGOSkuXG4gKlxuICogYFJ1bk9ic2VydmVyc2AgaXMgdGhlIGV4ZWN1dG9yJ3MgT05FIHJlZ2lzdGVyIG9mIG9ic2VydmVyczogdGhlIGJ1aWx0LWluXG4gKiBuYXJyYXRpdmUgcmVjb3JkZXIsIHRoZSBpbmxpbmUgc2NvcGUgYW5kIGZsb3cgbGlzdHMsIGFuZCB0aGUgZGVmZXJyZWQgdGllclxuICogKFJGQy0wMDEpLiBUaGUgZXhlY3V0b3IncyBgYXR0YWNoKlJlY29yZGVyYCBmYW1pbHkgZGVsZWdhdGVzIGhlcmU7IGVhY2ggbGVnXG4gKiAoYHJ1bigpYCAvIGByZXN1bWUoKWApIGFza3MgaXQgZm9yIHRoZSBjb21wb3NlZCBzY29wZSBmYWN0b3J5IGFuZCB0aGUgZmxvd1xuICogcmVjb3JkZXIgbGlzdCBpdCBoYW5kcyB0aGUgdHJhdmVyc2VyLlxuICpcbiAqIExhd3Mga2VwdCBoZXJlOlxuICogICAtIGFuIGlkIGxpdmVzIG9uIGV4YWN0bHkgT05FIGRlbGl2ZXJ5IHRpZXIgcGVyIGxpc3Qg4oCUIHJlLWF0dGFjaGluZyB0aGVcbiAqICAgICBzYW1lIGlkIFNXQVBTIHRpZXJzLCBuZXZlciBkb3VibGUgZGVsaXZlcnk7XG4gKiAgIC0gZXZlcnkgYXR0YWNoIGlzIGlkZW1wb3RlbnQgYnkgYGlkYCAocmVwbGFjZSwgbmV2ZXIgZHVwbGljYXRlKTtcbiAqICAgLSBlbWl0IHJlY29yZGVycyByaWRlIHRoZSBTQ09QRSBsaXN0IChgU2NvcGVGYWNhZGVgIGRpc3BhdGNoZXMgYG9uRW1pdGBcbiAqICAgICBmcm9tIHRoZSBzYW1lIHBlci1zdGFnZSBsaXN0IGFzIGBvblJlYWRgL2BvbldyaXRlYCk7XG4gKiAgIC0gYSBmbG93IGF0dGFjaCB0dXJucyB0aGUgbmFycmF0aXZlIG9uICh0aGUgZmxvdyBjaGFubmVsIG5lZWRzIGl0KS5cbiAqL1xuXG5pbXBvcnQgeyBpc0Rldk1vZGUgfSBmcm9tICcuLi9kZXZNb2RlLmpzJztcbmltcG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlck9wdGlvbnMgfSBmcm9tICcuLi9lbmdpbmUvbmFycmF0aXZlL0NvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIuanMnO1xuaW1wb3J0IHsgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlciB9IGZyb20gJy4uL2VuZ2luZS9uYXJyYXRpdmUvQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3dSZWNvcmRlciB9IGZyb20gJy4uL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTY29wZUZhY3RvcnkgfSBmcm9tICcuLi9lbmdpbmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZFJlY29yZGVyIH0gZnJvbSAnLi4vcmVjb3JkZXIvQ29tYmluZWRSZWNvcmRlci5qcyc7XG5pbXBvcnQgeyBoYXNFbWl0UmVjb3JkZXJNZXRob2RzLCBoYXNGbG93UmVjb3JkZXJNZXRob2RzLCBoYXNSZWNvcmRlck1ldGhvZHMgfSBmcm9tICcuLi9yZWNvcmRlci9Db21iaW5lZFJlY29yZGVyLmpzJztcbmltcG9ydCB0eXBlIHsgU2NvcGVSdW50aW1lVGFyZ2V0IH0gZnJvbSAnLi4vc2NvcGUvcnVudGltZS5qcyc7XG5pbXBvcnQgeyByZXF1aXJlU2NvcGVSdW50aW1lIH0gZnJvbSAnLi4vc2NvcGUvcnVudGltZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlZGFjdGlvblBvbGljeSwgU2NvcGVSZWNvcmRlciB9IGZyb20gJy4uL3Njb3BlL3R5cGVzLmpzJztcbmltcG9ydCB7IHR5cGUgQXR0YWNoUmVjb3JkZXJPcHRpb25zLCBEZWZlcnJlZE9ic2VydmVyVGllciB9IGZyb20gJy4vRGVmZXJyZWRPYnNlcnZlclRpZXIuanMnO1xuXG4vKiogQSBzdGVwIGFwcGxpZWQgdG8gZXZlcnkgc3RhZ2Ugc2NvcGUgcmlnaHQgYWZ0ZXIgdGhlIGJhc2UgZmFjdG9yeSBtYWtlcyBpdC4gKi9cbnR5cGUgU2NvcGVNb2RpZmllciA9ICh0YXJnZXQ6IFNjb3BlUnVudGltZVRhcmdldCkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIFJ1bk9ic2VydmVycyB7XG4gIG5hcnJhdGl2ZUVuYWJsZWQgPSBmYWxzZTtcbiAgbmFycmF0aXZlT3B0aW9ucz86IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXJPcHRpb25zO1xuICAvKiogVGhlIGJ1aWx0LWluIG5hcnJhdGl2ZSByZWNvcmRlciBvZiB0aGUgY3VycmVudCBsZWcgKGtlcHQgYWNyb3NzIGEgcmVzdW1lIHNvIGl0IGFjY3VtdWxhdGVzKS4gKi9cbiAgY29tYmluZWRSZWNvcmRlcjogQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlciB8IHVuZGVmaW5lZDtcbiAgZmxvd1JlY29yZGVyczogRmxvd1JlY29yZGVyW10gPSBbXTtcbiAgc2NvcGVSZWNvcmRlcnM6IFNjb3BlUmVjb3JkZXJbXSA9IFtdO1xuICAvKipcbiAgICogUkZDLTAwMSBkZWZlcnJlZC1vYnNlcnZlciB3aXJpbmcg4oCUIGNyZWF0ZWQgTEFaSUxZIG9uIHRoZSBmaXJzdFxuICAgKiBgZGVsaXZlcnk6ICdkZWZlcnJlZCdgIGF0dGFjaC4gYHVuZGVmaW5lZGAgZm9yIGV2ZXJ5IGV4ZWN1dG9yIHRoYXQgbmV2ZXJcbiAgICogb3B0cyBpbjogemVybyBhbGxvY2F0aW9uLCB6ZXJvIHBlci1ldmVudCBjb3N0LCBieXRlLWlkZW50aWNhbCBiZWhhdmlvclxuICAgKiAodGhlIGVtaXQgZmFzdC1wYXRoIHByZWNlZGVudCkuXG4gICAqL1xuICBkZWZlcnJlZFRpZXI/OiBEZWZlcnJlZE9ic2VydmVyVGllcjtcblxuICBlbmFibGVOYXJyYXRpdmUob3B0aW9ucz86IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXJPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5uYXJyYXRpdmVFbmFibGVkID0gdHJ1ZTtcbiAgICBpZiAob3B0aW9ucykgdGhpcy5uYXJyYXRpdmVPcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIGF0dGFjaFNjb3BlKHJlY29yZGVyOiBTY29wZVJlY29yZGVyLCBvcHRpb25zPzogQXR0YWNoUmVjb3JkZXJPcHRpb25zKTogdm9pZCB7XG4gICAgLy8gVGllciBzd2FwLCBib3RoIGRpcmVjdGlvbnM6IGFuIGlkIGxpdmVzIG9uIGV4YWN0bHkgT05FIHRpZXIgcGVyIGxpc3QuXG4gICAgdGhpcy5zY29wZVJlY29yZGVycyA9IHRoaXMuc2NvcGVSZWNvcmRlcnMuZmlsdGVyKChyKSA9PiByLmlkICE9PSByZWNvcmRlci5pZCk7XG4gICAgaWYgKG9wdGlvbnM/LmRlbGl2ZXJ5ID09PSAnZGVmZXJyZWQnKSB7XG4gICAgICB0aGlzLmVuc3VyZURlZmVycmVkVGllcihvcHRpb25zKS5yZWdpc3RlcihyZWNvcmRlciwgeyBzY29wZTogdHJ1ZSB9LCBvcHRpb25zKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kZWZlcnJlZFRpZXI/LnJlbW92ZUZyb21MaXN0cyhyZWNvcmRlci5pZCwgeyBzY29wZTogdHJ1ZSB9KTtcbiAgICB0aGlzLnNjb3BlUmVjb3JkZXJzLnB1c2gocmVjb3JkZXIpO1xuICB9XG5cbiAgYXR0YWNoRmxvdyhyZWNvcmRlcjogRmxvd1JlY29yZGVyLCBvcHRpb25zPzogQXR0YWNoUmVjb3JkZXJPcHRpb25zKTogdm9pZCB7XG4gICAgLy8gVGllciBzd2FwLCBib3RoIGRpcmVjdGlvbnM6IGFuIGlkIGxpdmVzIG9uIGV4YWN0bHkgT05FIHRpZXIgcGVyIGxpc3QuXG4gICAgdGhpcy5mbG93UmVjb3JkZXJzID0gdGhpcy5mbG93UmVjb3JkZXJzLmZpbHRlcigocikgPT4gci5pZCAhPT0gcmVjb3JkZXIuaWQpO1xuICAgIHRoaXMubmFycmF0aXZlRW5hYmxlZCA9IHRydWU7XG4gICAgaWYgKG9wdGlvbnM/LmRlbGl2ZXJ5ID09PSAnZGVmZXJyZWQnKSB7XG4gICAgICB0aGlzLmVuc3VyZURlZmVycmVkVGllcihvcHRpb25zKS5yZWdpc3RlcihyZWNvcmRlciwgeyBmbG93OiB0cnVlIH0sIG9wdGlvbnMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRlZmVycmVkVGllcj8ucmVtb3ZlRnJvbUxpc3RzKHJlY29yZGVyLmlkLCB7IGZsb3c6IHRydWUgfSk7XG4gICAgdGhpcy5mbG93UmVjb3JkZXJzLnB1c2gocmVjb3JkZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJvdXRlIGEgcmVjb3JkZXIgdG8gZXZlcnkgY2hhbm5lbCBpdCBoYXMgT1dOIGV2ZW50IG1ldGhvZHMgZm9yIChzZWVcbiAgICogYGhhc1JlY29yZGVyTWV0aG9kc2Ag4oCUIHByb3RvdHlwZS1jaGFpbiBtZXRob2RzIGFyZSBpZ25vcmVkIG9uIHB1cnBvc2UsXG4gICAqIGFnYWluc3QgYE9iamVjdC5wcm90b3R5cGVgIHBvbGx1dGlvbikuIElkZW1wb3RlbnQgYnkgYGlkYCBhY3Jvc3MgQUxMXG4gICAqIGNoYW5uZWxzOiBhIGNvbWJpbmVkIGF0dGFjaCByZXBsYWNlcyBhIHNpbmdsZS1jaGFubmVsIHJlZ2lzdHJhdGlvbiBvZiB0aGVcbiAgICogc2FtZSBpZCBvbiB3aGljaGV2ZXIgY2hhbm5lbChzKSB0aGUgcmVjb3JkZXIgaGFzIG1ldGhvZHMgZm9yLlxuICAgKi9cbiAgYXR0YWNoQ29tYmluZWQocmVjb3JkZXI6IENvbWJpbmVkUmVjb3JkZXIsIG9wdGlvbnM/OiBBdHRhY2hSZWNvcmRlck9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBoYXNEYXRhID0gaGFzUmVjb3JkZXJNZXRob2RzKHJlY29yZGVyKTtcbiAgICBjb25zdCBoYXNGbG93ID0gaGFzRmxvd1JlY29yZGVyTWV0aG9kcyhyZWNvcmRlcik7XG4gICAgY29uc3QgaGFzRW1pdCA9IGhhc0VtaXRSZWNvcmRlck1ldGhvZHMocmVjb3JkZXIpO1xuXG4gICAgLy8gRGVsaXZlcnkgdGllciAoUkZDLTAwMSk6IG9wdGlvbnMgYmFnIE9SIHRoZSByZWNvcmRlcidzIG93blxuICAgIC8vIGBkZWxpdmVyeTogJ2RlZmVycmVkJ2AgZmllbGQuIFRoZSBmaWVsZCBpcyBhIHN0cmluZyDigJQgY2hhbm5lbCByb3V0aW5nXG4gICAgLy8gYWJvdmUgY291bnRzIGV2ZW50LU1FVEhPRCBwcm9wZXJ0aWVzIG9ubHksIHNvIGRlY2xhcmluZyBpdCBuZXZlclxuICAgIC8vIGNoYW5nZXMgd2hpY2ggY2hhbm5lbHMgdGhlIHJlY29yZGVyIGxhbmRzIG9uLlxuICAgIGNvbnN0IGRlbGl2ZXJ5ID0gb3B0aW9ucz8uZGVsaXZlcnkgPz8gcmVjb3JkZXIuZGVsaXZlcnk7XG4gICAgY29uc3QgdGllck9wdGlvbnM6IEF0dGFjaFJlY29yZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCA9IGRlbGl2ZXJ5ID09PSB1bmRlZmluZWQgPyBvcHRpb25zIDogeyAuLi5vcHRpb25zLCBkZWxpdmVyeSB9O1xuXG4gICAgLy8gRW1pdCByZWNvcmRlcnMgbGl2ZSBvbiB0aGUgU0FNRSBjaGFubmVsIGFzIGRhdGEtZmxvdyByZWNvcmRlcnNcbiAgICAvLyAoU2NvcGVGYWNhZGUgaXRlcmF0ZXMgYF9yZWNvcmRlcnNgIGZvciBvbkVtaXQgZGlzcGF0Y2gpLiBTaG9ydC1jaXJjdWl0OlxuICAgIC8vIGlmIGhhc0RhdGEgT1IgaGFzRW1pdCwgdGhlIHJlY29yZGVyIGxhbmRzIG9uIHRoZSBzY29wZSBsaXN0IGV4YWN0bHkgb25jZS5cbiAgICBpZiAoaGFzRGF0YSB8fCBoYXNFbWl0KSB0aGlzLmF0dGFjaFNjb3BlKHJlY29yZGVyIGFzIFNjb3BlUmVjb3JkZXIsIHRpZXJPcHRpb25zKTtcbiAgICBpZiAoaGFzRmxvdykgdGhpcy5hdHRhY2hGbG93KHJlY29yZGVyIGFzIEZsb3dSZWNvcmRlciwgdGllck9wdGlvbnMpO1xuXG4gICAgaWYgKCFoYXNEYXRhICYmICFoYXNGbG93ICYmICFoYXNFbWl0ICYmIGlzRGV2TW9kZSgpKSB7XG4gICAgICAvLyBEZXYtbW9kZSBvbmx5OiBzaWxlbnQgc2tpcHMgYXJlIGludmlzaWJsZSBhbmQgcHJvZHVjZSBoYXJkLXRvLWRlYnVnXG4gICAgICAvLyBcIndoeSBkaWRuJ3QgbXkgcmVjb3JkZXIgZmlyZVwiIHJlcG9ydHMuIFBlciBsaWJyYXJ5IGNvbnZlbnRpb24sIGdhdGVkXG4gICAgICAvLyBvbiB0aGUgY2VudHJhbCBpc0Rldk1vZGUoKSBmbGFnIChub3QgcHJvY2Vzcy5lbnYpIHNvIGNvbnN1bWVycyBjYW5cbiAgICAgIC8vIGNvbnRyb2wgZGV2IHRvb2xpbmcgY2VudHJhbGx5IHZpYSBlbmFibGVEZXZNb2RlKCkvZGlzYWJsZURldk1vZGUoKS5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbZm9vdHByaW50anNdIGF0dGFjaENvbWJpbmVkUmVjb3JkZXI6IHJlY29yZGVyICcke3JlY29yZGVyLmlkfScgaGFzIGAgK1xuICAgICAgICAgICdubyBvYnNlcnZlciBldmVudCBtZXRob2RzIOKAlCBub3RoaW5nIHRvIGF0dGFjaC4gRGlkIHlvdSBmb3JnZXQgdG8gJyArXG4gICAgICAgICAgJ2FkZCBhbiBvbiogaGFuZGxlciAob25Xcml0ZSwgb25EZWNpc2lvbiwgb25TdWJmbG93RW50cnksIC4uLik/ICcgK1xuICAgICAgICAgICdOb3RlOiBvbmx5IE9XTiBwcm9wZXJ0aWVzIGNvdW50OyBtZXRob2RzIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gJyArXG4gICAgICAgICAgJ2FyZSBpZ25vcmVkIG9uIHB1cnBvc2UuJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqIERldGFjaCBldmVyeSBzY29wZSByZWNvcmRlciB3aXRoIHRoaXMgaWQg4oCUIGJvdGggZGVsaXZlcnkgdGllcnMuICovXG4gIGRldGFjaFNjb3BlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNjb3BlUmVjb3JkZXJzID0gdGhpcy5zY29wZVJlY29yZGVycy5maWx0ZXIoKHIpID0+IHIuaWQgIT09IGlkKTtcbiAgICB0aGlzLmRlZmVycmVkVGllcj8ucmVtb3ZlRnJvbUxpc3RzKGlkLCB7IHNjb3BlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqIERldGFjaCBldmVyeSBmbG93IHJlY29yZGVyIHdpdGggdGhpcyBpZCDigJQgYm90aCBkZWxpdmVyeSB0aWVycy4gKi9cbiAgZGV0YWNoRmxvdyhpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5mbG93UmVjb3JkZXJzID0gdGhpcy5mbG93UmVjb3JkZXJzLmZpbHRlcigocikgPT4gci5pZCAhPT0gaWQpO1xuICAgIHRoaXMuZGVmZXJyZWRUaWVyPy5yZW1vdmVGcm9tTGlzdHMoaWQsIHsgZmxvdzogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKiBBIGRlZmVuc2l2ZSBjb3B5IG9mIHRoZSBzY29wZSBsaXN0IChib3RoIHRpZXJzKS4gKi9cbiAgc2NvcGVMaXN0KCk6IFNjb3BlUmVjb3JkZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnNjb3BlUmVjb3JkZXJzLCAuLi4odGhpcy5kZWZlcnJlZFRpZXI/LnNjb3BlTGlzdFJlY29yZGVycygpID8/IFtdKV07XG4gIH1cblxuICAvKiogQSBkZWZlbnNpdmUgY29weSBvZiB0aGUgZmxvdyBsaXN0IChib3RoIHRpZXJzKS4gKi9cbiAgZmxvd0xpc3QoKTogRmxvd1JlY29yZGVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5mbG93UmVjb3JkZXJzLCAuLi4odGhpcy5kZWZlcnJlZFRpZXI/LmZsb3dMaXN0UmVjb3JkZXJzKCkgPz8gW10pXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGZyZXNoIGBydW4oKWAgY2xlYXJzIGV2ZXJ5IGF0dGFjaGVkIHJlY29yZGVyIChgY2xlYXIoKWApLCBzbyBzdGF0ZSBkb2VzXG4gICAqIG5vdCBhY2N1bXVsYXRlIGFjcm9zcyBydW5zLiBUaGUgbmFycmF0aXZlIHJlY29yZGVyIGlzIG5vdCBjbGVhcmVkOiBlYWNoXG4gICAqIGZyZXNoIGxlZyBidWlsZHMgYSBuZXcgb25lICh7QGxpbmsgc3RhcnRMZWd9KS5cbiAgICovXG4gIGNsZWFyRm9yUnVuKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgciBvZiB0aGlzLmZsb3dSZWNvcmRlcnMpIHtcbiAgICAgIHIuY2xlYXI/LigpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHIgb2YgdGhpcy5zY29wZVJlY29yZGVycykge1xuICAgICAgci5jbGVhcj8uKCk7XG4gICAgfVxuICAgIHRoaXMuZGVmZXJyZWRUaWVyPy5jbGVhclJlY29yZGVycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gYSBsZWc6IGEgZnJlc2ggbmFycmF0aXZlIHJlY29yZGVyIHdoZW4gdGhlIG5hcnJhdGl2ZSBpcyBvbiwgbm9uZSB3aGVuXG4gICAqIGl0IGlzIG9mZiDigJQgb3IsIG9uIGEgcmVzdW1lIChgcHJlc2VydmVgKSwgdGhlIGV4aXN0aW5nIG9uZSwgc28gdGhlXG4gICAqIG5hcnJhdGl2ZSBhY2N1bXVsYXRlcyBhY3Jvc3MgdGhlIHBhdXNlLiBBIGZyZXNoIGV4ZWN1dG9yIGhhcyBubyByZWNvcmRlclxuICAgKiB0byBwcmVzZXJ2ZSBhbmQgc3RhcnRzIG9uZSBmb3IgdGhlIHJlc3VtZWQgbGVnIG9ubHkuXG4gICAqIFJldHVybnMgdGhlIGxlZydzIG5hcnJhdGl2ZSBmbGFnLlxuICAgKi9cbiAgc3RhcnRMZWcoY2hhcnROYXJyYXRpdmU6IGJvb2xlYW4sIHByZXNlcnZlOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmFycmF0aXZlRmxhZyA9IHRoaXMubmFycmF0aXZlRW5hYmxlZCB8fCBjaGFydE5hcnJhdGl2ZTtcbiAgICBpZiAoIXByZXNlcnZlIHx8ICF0aGlzLmNvbWJpbmVkUmVjb3JkZXIpIHtcbiAgICAgIHRoaXMuY29tYmluZWRSZWNvcmRlciA9IG5hcnJhdGl2ZUZsYWcgPyBuZXcgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlcih0aGlzLm5hcnJhdGl2ZU9wdGlvbnMpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gbmFycmF0aXZlRmxhZztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGVnJ3Mgc2NvcGUgZmFjdG9yeTogdGhlIGJhc2UgZmFjdG9yeSwgdGhlbiBldmVyeSBzY29wZSBtb2RpZmllciBpbiBPTkVcbiAgICogZmxhdCBwYXNzIOKAlCB0aGUgbmFycmF0aXZlIHJlY29yZGVyLCB0aGUgdXNlcidzIHNjb3BlIHJlY29yZGVycywgdGhlXG4gICAqIGRlZmVycmVkIHRpZXIncyBzY29wZSB0YXAsIHRoZSByZWRhY3Rpb24gcG9saWN5LlxuICAgKlxuICAgKiBUaGUgbWFya2VkLWtleXMgc2V0IGlzIEFMV0FZUyB3aXJlZCAoYSBzdGFnZSBjYW4gY2FsbFxuICAgKiBgc2V0VmFsdWUoa2V5LCB2YWwsIHRydWUpYCBmb3IgcGVyLWNhbGwgcmVkYWN0aW9uIHdpdGhvdXQgYW55IHBvbGljeSkuXG4gICAqL1xuICBjb21wb3NlU2NvcGVGYWN0b3J5PFRTY29wZT4oXG4gICAgYmFzZUZhY3Rvcnk6IFNjb3BlRmFjdG9yeTxUU2NvcGU+LFxuICAgIHJlZGFjdGlvblBvbGljeTogUmVkYWN0aW9uUG9saWN5IHwgdW5kZWZpbmVkLFxuICAgIHNoYXJlZFJlZGFjdGVkS2V5czogU2V0PHN0cmluZz4sXG4gICk6IFNjb3BlRmFjdG9yeTxUU2NvcGU+IHtcbiAgICBjb25zdCBtb2RpZmllcnM6IFNjb3BlTW9kaWZpZXJbXSA9IFtdO1xuXG4gICAgLy8gMS4gTmFycmF0aXZlIHJlY29yZGVyIChpZiBlbmFibGVkKVxuICAgIGlmICh0aGlzLmNvbWJpbmVkUmVjb3JkZXIpIHtcbiAgICAgIGNvbnN0IHJlY29yZGVyID0gdGhpcy5jb21iaW5lZFJlY29yZGVyO1xuICAgICAgbW9kaWZpZXJzLnB1c2goKHRhcmdldCkgPT4ge1xuICAgICAgICB0YXJnZXQuYXR0YWNoU2NvcGVSZWNvcmRlcj8uKHJlY29yZGVyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIDIuIFVzZXItcHJvdmlkZWQgc2NvcGUgcmVjb3JkZXJzXG4gICAgaWYgKHRoaXMuc2NvcGVSZWNvcmRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcmVjb3JkZXJzID0gdGhpcy5zY29wZVJlY29yZGVycztcbiAgICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCByIG9mIHJlY29yZGVycykgdGFyZ2V0LmF0dGFjaFNjb3BlUmVjb3JkZXI/LihyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIDJiLiBEZWZlcnJlZC1vYnNlcnZlciBzY29wZSB0YXAgKFJGQy0wMDEgQmxvY2sgNykg4oCUIGEgc3ludGhldGljXG4gICAgLy8gcmVjb3JkZXIgd2hvc2UgaG9va3MgQ0FQVFVSRSBpbnRvIHRoZSBib3VuZGVkIHF1ZXVlIGluc3RlYWQgb2YgZG9pbmdcbiAgICAvLyBvYnNlcnZlciB3b3JrLiBJdCByaWRlcyB0aGUgc2FtZSBwZXItc3RhZ2UgcmVjb3JkZXIgbGlzdCBhcyBpbmxpbmVcbiAgICAvLyByZWNvcmRlcnMsIHNvIGl0IHJlY2VpdmVzIGV4YWN0bHkgdGhlIHBvc3QtcmVkYWN0aW9uIGV2ZW50cyB0aGV5IGRvLlxuICAgIC8vIEFic2VudCAoemVybyB3b3JrLCBpZGVudGljYWwgbGlzdCkgd2hlbiBub2JvZHkgb3B0ZWQgaW50byBkZWZlcnJhbC5cbiAgICBjb25zdCBzY29wZVRhcCA9IHRoaXMuZGVmZXJyZWRUaWVyPy5idWlsZFNjb3BlVGFwKCk7XG4gICAgaWYgKHNjb3BlVGFwKSB7XG4gICAgICBtb2RpZmllcnMucHVzaCgodGFyZ2V0KSA9PiB7XG4gICAgICAgIHRhcmdldC5hdHRhY2hTY29wZVJlY29yZGVyPy4oc2NvcGVUYXApO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gMy4gUmVkYWN0aW9uIHBvbGljeSAoY29uZGl0aW9uYWwg4oCUIG9ubHkgd2hlbiBwb2xpY3kgaXMgc2V0KS4gQVxuICAgIC8vIGBTY29wZUZhY2FkZWAgYWxyZWFkeSByZWFkcyB0aGUgcnVuJ3MgcnVsZSB0aHJvdWdoIGl0cyBjb250ZXh0ICh0aGVcbiAgICAvLyBydWxlIGlzIGluc3RhbGxlZCBvbiB0aGUgcnVudGltZSByb290KTsgdGhpcyBjYWxsIHN1cHBsaWVzIGl0IHRvXG4gICAgLy8gZXhwbGljaXRseSByZWdpc3RlcmVkIGN1c3RvbSBwb3J0cywgYW5kIG9uIGEgZmFjYWRlIGl0XG4gICAgLy8gcmUtc3RhdGVzIHRoZSBleGVjdXRvcidzIHBvbGljeSBvbiB0aGUgc2hhcmVkIHJ1bGUgKGEgbm8tb3ApLlxuICAgIGlmIChyZWRhY3Rpb25Qb2xpY3kpIHtcbiAgICAgIGNvbnN0IHBvbGljeSA9IHJlZGFjdGlvblBvbGljeTtcbiAgICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgICAgdGFyZ2V0LnVzZVJlZGFjdGlvblBvbGljeT8uKHBvbGljeSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gKChjdHg6IGFueSwgc3RhZ2VOYW1lOiBzdHJpbmcsIHJlYWRPbmx5PzogdW5rbm93biwgZW52QXJnPzogYW55KSA9PiB7XG4gICAgICBjb25zdCBzY29wZSA9IGJhc2VGYWN0b3J5KGN0eCwgc3RhZ2VOYW1lLCByZWFkT25seSwgZW52QXJnKTtcbiAgICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSByZXF1aXJlU2NvcGVSdW50aW1lKHNjb3BlKTtcbiAgICAgIC8vIEFsd2F5cyB3aXJlIHNoYXJlZCByZWRhY3Rpb24gc3RhdGVcbiAgICAgIHRhcmdldC51c2VTaGFyZWRSZWRhY3RlZEtleXM/LihzaGFyZWRSZWRhY3RlZEtleXMpO1xuICAgICAgLy8gQXBwbHkgb3B0aW9uYWwgbW9kaWZpZXJzXG4gICAgICBmb3IgKGNvbnN0IG1vZCBvZiBtb2RpZmllcnMpIG1vZCh0YXJnZXQpO1xuICAgICAgcmV0dXJuIHNjb3BlO1xuICAgIH0pIGFzIFNjb3BlRmFjdG9yeTxUU2NvcGU+O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBsZWcncyBmbG93IHJlY29yZGVyczogdGhlIG5hcnJhdGl2ZSByZWNvcmRlciAod2hlbiBvbiksIHRoZSB1c2VyJ3NcbiAgICogZmxvdyByZWNvcmRlcnMsIHRoZW4gdGhlIGRlZmVycmVkIHRpZXIncyBmbG93IHRhcCAoUkZDLTAwMSBCbG9jayA3KSDigJRcbiAgICogYXBwZW5kZWQgbGlrZSBhbnkgb3RoZXIgZmxvdyByZWNvcmRlciwgc28gdGhlIGRpc3BhdGNoZXIgbmVlZHMgbm8gdGllclxuICAgKiBsb2dpYyBvZiBpdHMgb3duLiBgdW5kZWZpbmVkYCB3aGVuIHRoZXJlIGFyZSBub25lLlxuICAgKi9cbiAgZmxvd1JlY29yZGVyc0xpc3QoKTogRmxvd1JlY29yZGVyW10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHJlY29yZGVyczogRmxvd1JlY29yZGVyW10gPSBbXTtcbiAgICBpZiAodGhpcy5jb21iaW5lZFJlY29yZGVyKSB7XG4gICAgICByZWNvcmRlcnMucHVzaCh0aGlzLmNvbWJpbmVkUmVjb3JkZXIpO1xuICAgIH1cbiAgICByZWNvcmRlcnMucHVzaCguLi50aGlzLmZsb3dSZWNvcmRlcnMpO1xuICAgIGNvbnN0IGZsb3dUYXAgPSB0aGlzLmRlZmVycmVkVGllcj8uYnVpbGRGbG93VGFwKCk7XG4gICAgaWYgKGZsb3dUYXApIHJlY29yZGVycy5wdXNoKGZsb3dUYXApO1xuICAgIHJldHVybiByZWNvcmRlcnMubGVuZ3RoID4gMCA/IHJlY29yZGVycyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBUaGUgaW5saW5lIGZsb3cgbGlzdGVuZXJzIG9mIGFuIGV4ZWN1dG9yLW1hZGUgZXZlbnQgKGBvblJlc3VtZWApOiB0aGUgbmFycmF0aXZlIHJlY29yZGVyIGZpcnN0LiAqL1xuICBpbmxpbmVGbG93TGlzdGVuZXJzKCk6IEZsb3dSZWNvcmRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5jb21iaW5lZFJlY29yZGVyID8gW3RoaXMuY29tYmluZWRSZWNvcmRlciwgLi4udGhpcy5mbG93UmVjb3JkZXJzXSA6IHRoaXMuZmxvd1JlY29yZGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBMYXppbHkgY3JlYXRlIHRoZSBleGVjdXRvcidzIE9ORSBkZWZlcnJlZC1vYnNlcnZlciB0aWVyIChvbmUgbWVyZ2VkXG4gICAqIHF1ZXVlLCB0b3RhbCBldmVudCBvcmRlciBhY3Jvc3MgYWxsIHRocmVlIGNoYW5uZWxzKS4gVGhlIEZJUlNUIGRlZmVycmVkXG4gICAqIGF0dGFjaCdzIG9wdGlvbnMgY29uZmlndXJlIHRoZSBkaXNwYXRjaGVyOyBsYXRlciBkaWZmZXJpbmcgb3B0aW9ucyBhcmVcbiAgICogZGV2LXdhcm5lZCBhbmQgaWdub3JlZCAoc2VlIGBBdHRhY2hSZWNvcmRlck9wdGlvbnNgKS5cbiAgICovXG4gIHByaXZhdGUgZW5zdXJlRGVmZXJyZWRUaWVyKG9wdGlvbnM/OiBBdHRhY2hSZWNvcmRlck9wdGlvbnMpOiBEZWZlcnJlZE9ic2VydmVyVGllciB7XG4gICAgaWYgKCF0aGlzLmRlZmVycmVkVGllcikgdGhpcy5kZWZlcnJlZFRpZXIgPSBuZXcgRGVmZXJyZWRPYnNlcnZlclRpZXIob3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuZGVmZXJyZWRUaWVyO1xuICB9XG59XG4iXX0=
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9ydW5uZXIvYXR0YWNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBR0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUk3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVySCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQThCLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLN0YsTUFBTSxPQUFPLFlBQVk7SUFDdkIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLGdCQUFnQixDQUFvQztJQUNwRCxtR0FBbUc7SUFDbkcsZ0JBQWdCLENBQXdDO0lBQ3hELGFBQWEsR0FBbUIsRUFBRSxDQUFDO0lBQ25DLGNBQWMsR0FBb0IsRUFBRSxDQUFDO0lBQ3JDOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUF3QjtJQUVwQyxlQUFlLENBQUMsT0FBMEM7UUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLE9BQU87WUFBRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBdUIsRUFBRSxPQUErQjtRQUNsRSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUUsSUFBSSxPQUFPLEVBQUUsUUFBUSxL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QUMsT0FBTyxDQUFDLENBQUM7UUFDOUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYXR0YWNoIOKAlCB3aG8gb2JzZXJ2ZXMgYSBydW4sIGFuZCBob3cgdGhleSByZWFjaCBpdCAoRjkpLlxuICpcbiAqIGBSdW5PYnNlcnZlcnNgIGlzIHRoZSBleGVjdXRvcidzIE9ORSByZWdpc3RlciBvZiBvYnNlcnZlcnM6IHRoZSBidWlsdC1pblxuICogbmFycmF0aXZlIHJlY29yZGVyLCB0aGUgaW5saW5lIHNjb3BlIGFuZCBmbG93IGxpc3RzLCBhbmQgdGhlIGRlZmVycmVkIHRpZXJcbiAqIChSRkMtMDAxKS4gVGhlIGV4ZWN1dG9yJ3MgYGF0dGFjaCpSZWNvcmRlcmAgZmFtaWx5IGRlbGVnYXRlcyBoZXJlOyBlYWNoIGxlZ1xuICogKGBydW4oKWAgLyBgcmVzdW1lKClgKSBhc2tzIGl0IGZvciB0aGUgY29tcG9zZWQgc2NvcGUgZmFjdG9yeSBhbmQgdGhlIGZsb3dcbiAqIHJlY29yZGVyIGxpc3QgaXQgaGFuZHMgdGhlIHRyYXZlcnNlci5cbiAqXG4gKiBMYXdzIGtlcHQgaGVyZTpcbiAqICAgLSBhbiBpZCBsaXZlcyBvbiBleGFjdGx5IE9ORSBkZWxpdmVyeSB0aWVyIHBlciBsaXN0IOKAlCByZS1hdHRhY2hpbmcgdGhlXG4gKiAgICAgc2FtZSBpZCBTV0FQUyB0aWVycywgbmV2ZXIgZG91YmxlIGRlbGl2ZXJ5O1xuICogICAtIGV2ZXJ5IGF0dGFjaCBpcyBpZGVtcG90ZW50IGJ5IGBpZGAgKHJlcGxhY2UsIG5ldmVyIGR1cGxpY2F0ZSk7XG4gKiAgIC0gZW1pdCByZWNvcmRlcnMgcmlkZSB0aGUgU0NPUEUgbGlzdCAoYFNjb3BlRmFjYWRlYCBkaXNwYXRjaGVzIGBvbkVtaXRgXG4gKiAgICAgZnJvbSB0aGUgc2FtZSBwZXItc3RhZ2UgbGlzdCBhcyBgb25SZWFkYC9gb25Xcml0ZWApO1xuICogICAtIGEgZmxvdyBhdHRhY2ggdHVybnMgdGhlIG5hcnJhdGl2ZSBvbiAodGhlIGZsb3cgY2hhbm5lbCBuZWVkcyBpdCkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdW5Db3JyZWxhdGlvbiB9IGZyb20gJy4uL2F0dGVtcHQvdHlwZXMuanMnO1xuaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnLi4vZGV2TW9kZS5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXJPcHRpb25zIH0gZnJvbSAnLi4vZW5naW5lL25hcnJhdGl2ZS9Db21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyLmpzJztcbmltcG9ydCB7IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIgfSBmcm9tICcuLi9lbmdpbmUvbmFycmF0aXZlL0NvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBGbG93UmVjb3JkZXIgfSBmcm9tICcuLi9lbmdpbmUvbmFycmF0aXZlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU2NvcGVGYWN0b3J5IH0gZnJvbSAnLi4vZW5naW5lL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgQ29tYmluZWRSZWNvcmRlciB9IGZyb20gJy4uL3JlY29yZGVyL0NvbWJpbmVkUmVjb3JkZXIuanMnO1xuaW1wb3J0IHsgaGFzRW1pdFJlY29yZGVyTWV0aG9kcywgaGFzRmxvd1JlY29yZGVyTWV0aG9kcywgaGFzUmVjb3JkZXJNZXRob2RzIH0gZnJvbSAnLi4vcmVjb3JkZXIvQ29tYmluZWRSZWNvcmRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNjb3BlUnVudGltZVRhcmdldCB9IGZyb20gJy4uL3Njb3BlL3J1bnRpbWUuanMnO1xuaW1wb3J0IHsgcmVxdWlyZVNjb3BlUnVudGltZSB9IGZyb20gJy4uL3Njb3BlL3J1bnRpbWUuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWRhY3Rpb25Qb2xpY3ksIFNjb3BlUmVjb3JkZXIgfSBmcm9tICcuLi9zY29wZS90eXBlcy5qcyc7XG5pbXBvcnQgeyB0eXBlIEF0dGFjaFJlY29yZGVyT3B0aW9ucywgRGVmZXJyZWRPYnNlcnZlclRpZXIgfSBmcm9tICcuL0RlZmVycmVkT2JzZXJ2ZXJUaWVyLmpzJztcblxuLyoqIEEgc3RlcCBhcHBsaWVkIHRvIGV2ZXJ5IHN0YWdlIHNjb3BlIHJpZ2h0IGFmdGVyIHRoZSBiYXNlIGZhY3RvcnkgbWFrZXMgaXQuICovXG50eXBlIFNjb3BlTW9kaWZpZXIgPSAodGFyZ2V0OiBTY29wZVJ1bnRpbWVUYXJnZXQpID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBSdW5PYnNlcnZlcnMge1xuICBuYXJyYXRpdmVFbmFibGVkID0gZmFsc2U7XG4gIG5hcnJhdGl2ZU9wdGlvbnM/OiBDb21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyT3B0aW9ucztcbiAgLyoqIFRoZSBidWlsdC1pbiBuYXJyYXRpdmUgcmVjb3JkZXIgb2YgdGhlIGN1cnJlbnQgbGVnIChrZXB0IGFjcm9zcyBhIHJlc3VtZSBzbyBpdCBhY2N1bXVsYXRlcykuICovXG4gIGNvbWJpbmVkUmVjb3JkZXI6IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIgfCB1bmRlZmluZWQ7XG4gIGZsb3dSZWNvcmRlcnM6IEZsb3dSZWNvcmRlcltdID0gW107XG4gIHNjb3BlUmVjb3JkZXJzOiBTY29wZVJlY29yZGVyW10gPSBbXTtcbiAgLyoqXG4gICAqIFJGQy0wMDEgZGVmZXJyZWQtb2JzZXJ2ZXIgd2lyaW5nIOKAlCBjcmVhdGVkIExBWklMWSBvbiB0aGUgZmlyc3RcbiAgICogYGRlbGl2ZXJ5OiAnZGVmZXJyZWQnYCBhdHRhY2guIGB1bmRlZmluZWRgIGZvciBldmVyeSBleGVjdXRvciB0aGF0IG5ldmVyXG4gICAqIG9wdHMgaW46IHplcm8gYWxsb2NhdGlvbiwgemVybyBwZXItZXZlbnQgY29zdCwgYnl0ZS1pZGVudGljYWwgYmVoYXZpb3JcbiAgICogKHRoZSBlbWl0IGZhc3QtcGF0aCBwcmVjZWRlbnQpLlxuICAgKi9cbiAgZGVmZXJyZWRUaWVyPzogRGVmZXJyZWRPYnNlcnZlclRpZXI7XG5cbiAgZW5hYmxlTmFycmF0aXZlKG9wdGlvbnM/OiBDb21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMubmFycmF0aXZlRW5hYmxlZCA9IHRydWU7XG4gICAgaWYgKG9wdGlvbnMpIHRoaXMubmFycmF0aXZlT3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBhdHRhY2hTY29wZShyZWNvcmRlcjogU2NvcGVSZWNvcmRlciwgb3B0aW9ucz86IEF0dGFjaFJlY29yZGVyT3B0aW9ucyk6IHZvaWQge1xuICAgIC8vIFRpZXIgc3dhcCwgYm90aCBkaXJlY3Rpb25zOiBhbiBpZCBsaXZlcyBvbiBleGFjdGx5IE9ORSB0aWVyIHBlciBsaXN0LlxuICAgIHRoaXMuc2NvcGVSZWNvcmRlcnMgPSB0aGlzLnNjb3BlUmVjb3JkZXJzLmZpbHRlcigocikgPT4gci5pZCAhPT0gcmVjb3JkZXIuaWQpO1xuICAgIGlmIChvcHRpb25zPy5kZWxpdmVyeSA9PT0gJ2RlZmVycmVkJykge1xuICAgICAgdGhpcy5lbnN1cmVEZWZlcnJlZFRpZXIob3B0aW9ucykucmVnaXN0ZXIocmVjb3JkZXIsIHsgc2NvcGU6IHRydWUgfSwgb3B0aW9ucyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGVmZXJyZWRUaWVyPy5yZW1vdmVGcm9tTGlzdHMocmVjb3JkZXIuaWQsIHsgc2NvcGU6IHRydWUgfSk7XG4gICAgdGhpcy5zY29wZVJlY29yZGVycy5wdXNoKHJlY29yZGVyKTtcbiAgfVxuXG4gIGF0dGFjaEZsb3cocmVjb3JkZXI6IEZsb3dSZWNvcmRlciwgb3B0aW9ucz86IEF0dGFjaFJlY29yZGVyT3B0aW9ucyk6IHZvaWQge1xuICAgIC8vIFRpZXIgc3dhcCwgYm90aCBkaXJlY3Rpb25zOiBhbiBpZCBsaXZlcyBvbiBleGFjdGx5IE9ORSB0aWVyIHBlciBsaXN0LlxuICAgIHRoaXMuZmxvd1JlY29yZGVycyA9IHRoaXMuZmxvd1JlY29yZGVycy5maWx0ZXIoKHIpID0+IHIuaWQgIT09IHJlY29yZGVyLmlkKTtcbiAgICB0aGlzLm5hcnJhdGl2ZUVuYWJsZWQgPSB0cnVlO1xuICAgIGlmIChvcHRpb25zPy5kZWxpdmVyeSA9PT0gJ2RlZmVycmVkJykge1xuICAgICAgdGhpcy5lbnN1cmVEZWZlcnJlZFRpZXIob3B0aW9ucykucmVnaXN0ZXIocmVjb3JkZXIsIHsgZmxvdzogdHJ1ZSB9LCBvcHRpb25zKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kZWZlcnJlZFRpZXI/LnJlbW92ZUZyb21MaXN0cyhyZWNvcmRlci5pZCwgeyBmbG93OiB0cnVlIH0pO1xuICAgIHRoaXMuZmxvd1JlY29yZGVycy5wdXNoKHJlY29yZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSb3V0ZSBhIHJlY29yZGVyIHRvIGV2ZXJ5IGNoYW5uZWwgaXQgaGFzIE9XTiBldmVudCBtZXRob2RzIGZvciAoc2VlXG4gICAqIGBoYXNSZWNvcmRlck1ldGhvZHNgIOKAlCBwcm90b3R5cGUtY2hhaW4gbWV0aG9kcyBhcmUgaWdub3JlZCBvbiBwdXJwb3NlLFxuICAgKiBhZ2FpbnN0IGBPYmplY3QucHJvdG90eXBlYCBwb2xsdXRpb24pLiBJZGVtcG90ZW50IGJ5IGBpZGAgYWNyb3NzIEFMTFxuICAgKiBjaGFubmVsczogYSBjb21iaW5lZCBhdHRhY2ggcmVwbGFjZXMgYSBzaW5nbGUtY2hhbm5lbCByZWdpc3RyYXRpb24gb2YgdGhlXG4gICAqIHNhbWUgaWQgb24gd2hpY2hldmVyIGNoYW5uZWwocykgdGhlIHJlY29yZGVyIGhhcyBtZXRob2RzIGZvci5cbiAgICovXG4gIGF0dGFjaENvbWJpbmVkKHJlY29yZGVyOiBDb21iaW5lZFJlY29yZGVyLCBvcHRpb25zPzogQXR0YWNoUmVjb3JkZXJPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgaGFzRGF0YSA9IGhhc1JlY29yZGVyTWV0aG9kcyhyZWNvcmRlcik7XG4gICAgY29uc3QgaGFzRmxvdyA9IGhhc0Zsb3dSZWNvcmRlck1ldGhvZHMocmVjb3JkZXIpO1xuICAgIGNvbnN0IGhhc0VtaXQgPSBoYXNFbWl0UmVjb3JkZXJNZXRob2RzKHJlY29yZGVyKTtcblxuICAgIC8vIERlbGl2ZXJ5IHRpZXIgKFJGQy0wMDEpOiBvcHRpb25zIGJhZyBPUiB0aGUgcmVjb3JkZXIncyBvd25cbiAgICAvLyBgZGVsaXZlcnk6ICdkZWZlcnJlZCdgIGZpZWxkLiBUaGUgZmllbGQgaXMgYSBzdHJpbmcg4oCUIGNoYW5uZWwgcm91dGluZ1xuICAgIC8vIGFib3ZlIGNvdW50cyBldmVudC1NRVRIT0QgcHJvcGVydGllcyBvbmx5LCBzbyBkZWNsYXJpbmcgaXQgbmV2ZXJcbiAgICAvLyBjaGFuZ2VzIHdoaWNoIGNoYW5uZWxzIHRoZSByZWNvcmRlciBsYW5kcyBvbi5cbiAgICBjb25zdCBkZWxpdmVyeSA9IG9wdGlvbnM/LmRlbGl2ZXJ5ID8/IHJlY29yZGVyLmRlbGl2ZXJ5O1xuICAgIGNvbnN0IHRpZXJPcHRpb25zOiBBdHRhY2hSZWNvcmRlck9wdGlvbnMgfCB1bmRlZmluZWQgPSBkZWxpdmVyeSA9PT0gdW5kZWZpbmVkID8gb3B0aW9ucyA6IHsgLi4ub3B0aW9ucywgZGVsaXZlcnkgfTtcblxuICAgIC8vIEVtaXQgcmVjb3JkZXJzIGxpdmUgb24gdGhlIFNBTUUgY2hhbm5lbCBhcyBkYXRhLWZsb3cgcmVjb3JkZXJzXG4gICAgLy8gKFNjb3BlRmFjYWRlIGl0ZXJhdGVzIGBfcmVjb3JkZXJzYCBmb3Igb25FbWl0IGRpc3BhdGNoKS4gU2hvcnQtY2lyY3VpdDpcbiAgICAvLyBpZiBoYXNEYXRhIE9SIGhhc0VtaXQsIHRoZSByZWNvcmRlciBsYW5kcyBvbiB0aGUgc2NvcGUgbGlzdCBleGFjdGx5IG9uY2UuXG4gICAgaWYgKGhhc0RhdGEgfHwgaGFzRW1pdCkgdGhpcy5hdHRhY2hTY29wZShyZWNvcmRlciBhcyBTY29wZVJlY29yZGVyLCB0aWVyT3B0aW9ucyk7XG4gICAgaWYgKGhhc0Zsb3cpIHRoaXMuYXR0YWNoRmxvdyhyZWNvcmRlciBhcyBGbG93UmVjb3JkZXIsIHRpZXJPcHRpb25zKTtcblxuICAgIGlmICghaGFzRGF0YSAmJiAhaGFzRmxvdyAmJiAhaGFzRW1pdCAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgLy8gRGV2LW1vZGUgb25seTogc2lsZW50IHNraXBzIGFyZSBpbnZpc2libGUgYW5kIHByb2R1Y2UgaGFyZC10by1kZWJ1Z1xuICAgICAgLy8gXCJ3aHkgZGlkbid0IG15IHJlY29yZGVyIGZpcmVcIiByZXBvcnRzLiBQZXIgbGlicmFyeSBjb252ZW50aW9uLCBnYXRlZFxuICAgICAgLy8gb24gdGhlIGNlbnRyYWwgaXNEZXZNb2RlKCkgZmxhZyAobm90IHByb2Nlc3MuZW52KSBzbyBjb25zdW1lcnMgY2FuXG4gICAgICAvLyBjb250cm9sIGRldiB0b29saW5nIGNlbnRyYWxseSB2aWEgZW5hYmxlRGV2TW9kZSgpL2Rpc2FibGVEZXZNb2RlKCkuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW2Zvb3RwcmludGpzXSBhdHRhY2hDb21iaW5lZFJlY29yZGVyOiByZWNvcmRlciAnJHtyZWNvcmRlci5pZH0nIGhhcyBgICtcbiAgICAgICAgICAnbm8gb2JzZXJ2ZXIgZXZlbnQgbWV0aG9kcyDigJQgbm90aGluZyB0byBhdHRhY2guIERpZCB5b3UgZm9yZ2V0IHRvICcgK1xuICAgICAgICAgICdhZGQgYW4gb24qIGhhbmRsZXIgKG9uV3JpdGUsIG9uRGVjaXNpb24sIG9uU3ViZmxvd0VudHJ5LCAuLi4pPyAnICtcbiAgICAgICAgICAnTm90ZTogb25seSBPV04gcHJvcGVydGllcyBjb3VudDsgbWV0aG9kcyBvbiB0aGUgcHJvdG90eXBlIGNoYWluICcgK1xuICAgICAgICAgICdhcmUgaWdub3JlZCBvbiBwdXJwb3NlLicsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBEZXRhY2ggZXZlcnkgc2NvcGUgcmVjb3JkZXIgd2l0aCB0aGlzIGlkIOKAlCBib3RoIGRlbGl2ZXJ5IHRpZXJzLiAqL1xuICBkZXRhY2hTY29wZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zY29wZVJlY29yZGVycyA9IHRoaXMuc2NvcGVSZWNvcmRlcnMuZmlsdGVyKChyKSA9PiByLmlkICE9PSBpZCk7XG4gICAgdGhpcy5kZWZlcnJlZFRpZXI/LnJlbW92ZUZyb21MaXN0cyhpZCwgeyBzY29wZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKiBEZXRhY2ggZXZlcnkgZmxvdyByZWNvcmRlciB3aXRoIHRoaXMgaWQg4oCUIGJvdGggZGVsaXZlcnkgdGllcnMuICovXG4gIGRldGFjaEZsb3coaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmxvd1JlY29yZGVycyA9IHRoaXMuZmxvd1JlY29yZGVycy5maWx0ZXIoKHIpID0+IHIuaWQgIT09IGlkKTtcbiAgICB0aGlzLmRlZmVycmVkVGllcj8ucmVtb3ZlRnJvbUxpc3RzKGlkLCB7IGZsb3c6IHRydWUgfSk7XG4gIH1cblxuICAvKiogQSBkZWZlbnNpdmUgY29weSBvZiB0aGUgc2NvcGUgbGlzdCAoYm90aCB0aWVycykuICovXG4gIHNjb3BlTGlzdCgpOiBTY29wZVJlY29yZGVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5zY29wZVJlY29yZGVycywgLi4uKHRoaXMuZGVmZXJyZWRUaWVyPy5zY29wZUxpc3RSZWNvcmRlcnMoKSA/PyBbXSldO1xuICB9XG5cbiAgLyoqIEEgZGVmZW5zaXZlIGNvcHkgb2YgdGhlIGZsb3cgbGlzdCAoYm90aCB0aWVycykuICovXG4gIGZsb3dMaXN0KCk6IEZsb3dSZWNvcmRlcltdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuZmxvd1JlY29yZGVycywgLi4uKHRoaXMuZGVmZXJyZWRUaWVyPy5mbG93TGlzdFJlY29yZGVycygpID8/IFtdKV07XG4gIH1cblxuICAvKipcbiAgICogQSBmcmVzaCBgcnVuKClgIGNsZWFycyBldmVyeSBhdHRhY2hlZCByZWNvcmRlciAoYGNsZWFyKClgKSwgc28gc3RhdGUgZG9lc1xuICAgKiBub3QgYWNjdW11bGF0ZSBhY3Jvc3MgcnVucy4gVGhlIG5hcnJhdGl2ZSByZWNvcmRlciBpcyBub3QgY2xlYXJlZDogZWFjaFxuICAgKiBmcmVzaCBsZWcgYnVpbGRzIGEgbmV3IG9uZSAoe0BsaW5rIHN0YXJ0TGVnfSkuXG4gICAqL1xuICBjbGVhckZvclJ1bigpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHIgb2YgdGhpcy5mbG93UmVjb3JkZXJzKSB7XG4gICAgICByLmNsZWFyPy4oKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCByIG9mIHRoaXMuc2NvcGVSZWNvcmRlcnMpIHtcbiAgICAgIHIuY2xlYXI/LigpO1xuICAgIH1cbiAgICB0aGlzLmRlZmVycmVkVGllcj8uY2xlYXJSZWNvcmRlcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIGEgbGVnOiBhIGZyZXNoIG5hcnJhdGl2ZSByZWNvcmRlciB3aGVuIHRoZSBuYXJyYXRpdmUgaXMgb24sIG5vbmUgd2hlblxuICAgKiBpdCBpcyBvZmYg4oCUIG9yLCBvbiBhIHJlc3VtZSAoYHByZXNlcnZlYCksIHRoZSBleGlzdGluZyBvbmUsIHNvIHRoZVxuICAgKiBuYXJyYXRpdmUgYWNjdW11bGF0ZXMgYWNyb3NzIHRoZSBwYXVzZS4gQSBmcmVzaCBleGVjdXRvciBoYXMgbm8gcmVjb3JkZXJcbiAgICogdG8gcHJlc2VydmUgYW5kIHN0YXJ0cyBvbmUgZm9yIHRoZSByZXN1bWVkIGxlZyBvbmx5LlxuICAgKiBSZXR1cm5zIHRoZSBsZWcncyBuYXJyYXRpdmUgZmxhZy5cbiAgICovXG4gIHN0YXJ0TGVnKGNoYXJ0TmFycmF0aXZlOiBib29sZWFuLCBwcmVzZXJ2ZTogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5hcnJhdGl2ZUZsYWcgPSB0aGlzLm5hcnJhdGl2ZUVuYWJsZWQgfHwgY2hhcnROYXJyYXRpdmU7XG4gICAgaWYgKCFwcmVzZXJ2ZSB8fCAhdGhpcy5jb21iaW5lZFJlY29yZGVyKSB7XG4gICAgICB0aGlzLmNvbWJpbmVkUmVjb3JkZXIgPSBuYXJyYXRpdmVGbGFnID8gbmV3IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIodGhpcy5uYXJyYXRpdmVPcHRpb25zKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIG5hcnJhdGl2ZUZsYWc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxlZydzIHNjb3BlIGZhY3Rvcnk6IHRoZSBiYXNlIGZhY3RvcnksIHRoZW4gZXZlcnkgc2NvcGUgbW9kaWZpZXIgaW4gT05FXG4gICAqIGZsYXQgcGFzcyDigJQgdGhlIG5hcnJhdGl2ZSByZWNvcmRlciwgdGhlIHVzZXIncyBzY29wZSByZWNvcmRlcnMsIHRoZVxuICAgKiBkZWZlcnJlZCB0aWVyJ3Mgc2NvcGUgdGFwLCB0aGUgcmVkYWN0aW9uIHBvbGljeS5cbiAgICpcbiAgICogVGhlIG1hcmtlZC1rZXlzIHNldCBpcyBBTFdBWVMgd2lyZWQgKGEgc3RhZ2UgY2FuIGNhbGxcbiAgICogYHNldFZhbHVlKGtleSwgdmFsLCB0cnVlKWAgZm9yIHBlci1jYWxsIHJlZGFjdGlvbiB3aXRob3V0IGFueSBwb2xpY3kpLlxuICAgKi9cbiAgY29tcG9zZVNjb3BlRmFjdG9yeTxUU2NvcGU+KFxuICAgIGJhc2VGYWN0b3J5OiBTY29wZUZhY3Rvcnk8VFNjb3BlPixcbiAgICByZWRhY3Rpb25Qb2xpY3k6IFJlZGFjdGlvblBvbGljeSB8IHVuZGVmaW5lZCxcbiAgICBzaGFyZWRSZWRhY3RlZEtleXM6IFNldDxzdHJpbmc+LFxuICAgIGNvcnJlbGF0aW9uPzogUnVuQ29ycmVsYXRpb24sXG4gICk6IFNjb3BlRmFjdG9yeTxUU2NvcGU+IHtcbiAgICBjb25zdCBtb2RpZmllcnM6IFNjb3BlTW9kaWZpZXJbXSA9IFtdO1xuXG4gICAgLy8gMS4gTmFycmF0aXZlIHJlY29yZGVyIChpZiBlbmFibGVkKVxuICAgIGlmICh0aGlzLmNvbWJpbmVkUmVjb3JkZXIpIHtcbiAgICAgIGNvbnN0IHJlY29yZGVyID0gdGhpcy5jb21iaW5lZFJlY29yZGVyO1xuICAgICAgbW9kaWZpZXJzLnB1c2goKHRhcmdldCkgPT4ge1xuICAgICAgICB0YXJnZXQuYXR0YWNoU2NvcGVSZWNvcmRlcj8uKHJlY29yZGVyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIDIuIFVzZXItcHJvdmlkZWQgc2NvcGUgcmVjb3JkZXJzXG4gICAgaWYgKHRoaXMuc2NvcGVSZWNvcmRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcmVjb3JkZXJzID0gdGhpcy5zY29wZVJlY29yZGVycztcbiAgICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCByIG9mIHJlY29yZGVycykgdGFyZ2V0LmF0dGFjaFNjb3BlUmVjb3JkZXI/LihyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIDJiLiBEZWZlcnJlZC1vYnNlcnZlciBzY29wZSB0YXAgKFJGQy0wMDEgQmxvY2sgNykg4oCUIGEgc3ludGhldGljXG4gICAgLy8gcmVjb3JkZXIgd2hvc2UgaG9va3MgQ0FQVFVSRSBpbnRvIHRoZSBib3VuZGVkIHF1ZXVlIGluc3RlYWQgb2YgZG9pbmdcbiAgICAvLyBvYnNlcnZlciB3b3JrLiBJdCByaWRlcyB0aGUgc2FtZSBwZXItc3RhZ2UgcmVjb3JkZXIgbGlzdCBhcyBpbmxpbmVcbiAgICAvLyByZWNvcmRlcnMsIHNvIGl0IHJlY2VpdmVzIGV4YWN0bHkgdGhlIHBvc3QtcmVkYWN0aW9uIGV2ZW50cyB0aGV5IGRvLlxuICAgIC8vIEFic2VudCAoemVybyB3b3JrLCBpZGVudGljYWwgbGlzdCkgd2hlbiBub2JvZHkgb3B0ZWQgaW50byBkZWZlcnJhbC5cbiAgICBjb25zdCBzY29wZVRhcCA9IHRoaXMuZGVmZXJyZWRUaWVyPy5idWlsZFNjb3BlVGFwKCk7XG4gICAgaWYgKHNjb3BlVGFwKSB7XG4gICAgICBtb2RpZmllcnMucHVzaCgodGFyZ2V0KSA9PiB7XG4gICAgICAgIHRhcmdldC5hdHRhY2hTY29wZVJlY29yZGVyPy4oc2NvcGVUYXApO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gMy4gUmVkYWN0aW9uIHBvbGljeSAoY29uZGl0aW9uYWwg4oCUIG9ubHkgd2hlbiBwb2xpY3kgaXMgc2V0KS4gQVxuICAgIC8vIGBTY29wZUZhY2FkZWAgYWxyZWFkeSByZWFkcyB0aGUgcnVuJ3MgcnVsZSB0aHJvdWdoIGl0cyBjb250ZXh0ICh0aGVcbiAgICAvLyBydWxlIGlzIGluc3RhbGxlZCBvbiB0aGUgcnVudGltZSByb290KTsgdGhpcyBjYWxsIHN1cHBsaWVzIGl0IHRvXG4gICAgLy8gZXhwbGljaXRseSByZWdpc3RlcmVkIGN1c3RvbSBwb3J0cywgYW5kIG9uIGEgZmFjYWRlIGl0XG4gICAgLy8gcmUtc3RhdGVzIHRoZSBleGVjdXRvcidzIHBvbGljeSBvbiB0aGUgc2hhcmVkIHJ1bGUgKGEgbm8tb3ApLlxuICAgIGlmIChyZWRhY3Rpb25Qb2xpY3kpIHtcbiAgICAgIGNvbnN0IHBvbGljeSA9IHJlZGFjdGlvblBvbGljeTtcbiAgICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgICAgdGFyZ2V0LnVzZVJlZGFjdGlvblBvbGljeT8uKHBvbGljeSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyA0LiBUaGUgbGVnJ3MgY29ycmVsYXRpb24gKDEwLjEpIOKAlCBvbmUgZnJvemVuIG9iamVjdCBwZXIgbGVnLCBzbyBhIGZhY3RvcnkgY29tcG9zZWQgZm9yIG9uZSBsZWcgbmV2ZXJcbiAgICAvLyBzdGFtcHMgYW5vdGhlcidzLiBJbnN0YWxsZWQgZXZlbiB3aGVuIGFic2VudDogYSB0YXJnZXQgYSBjdXN0b20gZmFjdG9yeSByZS11c2VzIGFjcm9zcyBydW5zIGlzIENMRUFSRUQsXG4gICAgLy8gbmV2ZXIgbGVmdCBob2xkaW5nIGFuIGVhcmxpZXIgcnVuJ3MuIEFic2VudCDihpIgZXZlbnRzIGJ5dGUtaWRlbnRpY2FsLlxuICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgIHRhcmdldC51c2VDb3JyZWxhdGlvbj8uKGNvcnJlbGF0aW9uKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAoKGN0eDogYW55LCBzdGFnZU5hbWU6IHN0cmluZywgcmVhZE9ubHk/OiB1bmtub3duLCBlbnZBcmc/OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHNjb3BlID0gYmFzZUZhY3RvcnkoY3R4LCBzdGFnZU5hbWUsIHJlYWRPbmx5LCBlbnZBcmcpO1xuICAgICAgY29uc3QgeyB0YXJnZXQgfSA9IHJlcXVpcmVTY29wZVJ1bnRpbWUoc2NvcGUpO1xuICAgICAgLy8gQWx3YXlzIHdpcmUgc2hhcmVkIHJlZGFjdGlvbiBzdGF0ZVxuICAgICAgdGFyZ2V0LnVzZVNoYXJlZFJlZGFjdGVkS2V5cz8uKHNoYXJlZFJlZGFjdGVkS2V5cyk7XG4gICAgICAvLyBBcHBseSBvcHRpb25hbCBtb2RpZmllcnNcbiAgICAgIGZvciAoY29uc3QgbW9kIG9mIG1vZGlmaWVycykgbW9kKHRhcmdldCk7XG4gICAgICByZXR1cm4gc2NvcGU7XG4gICAgfSkgYXMgU2NvcGVGYWN0b3J5PFRTY29wZT47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxlZydzIGZsb3cgcmVjb3JkZXJzOiB0aGUgbmFycmF0aXZlIHJlY29yZGVyICh3aGVuIG9uKSwgdGhlIHVzZXInc1xuICAgKiBmbG93IHJlY29yZGVycywgdGhlbiB0aGUgZGVmZXJyZWQgdGllcidzIGZsb3cgdGFwIChSRkMtMDAxIEJsb2NrIDcpIOKAlFxuICAgKiBhcHBlbmRlZCBsaWtlIGFueSBvdGhlciBmbG93IHJlY29yZGVyLCBzbyB0aGUgZGlzcGF0Y2hlciBuZWVkcyBubyB0aWVyXG4gICAqIGxvZ2ljIG9mIGl0cyBvd24uIGB1bmRlZmluZWRgIHdoZW4gdGhlcmUgYXJlIG5vbmUuXG4gICAqL1xuICBmbG93UmVjb3JkZXJzTGlzdCgpOiBGbG93UmVjb3JkZXJbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcmVjb3JkZXJzOiBGbG93UmVjb3JkZXJbXSA9IFtdO1xuICAgIGlmICh0aGlzLmNvbWJpbmVkUmVjb3JkZXIpIHtcbiAgICAgIHJlY29yZGVycy5wdXNoKHRoaXMuY29tYmluZWRSZWNvcmRlcik7XG4gICAgfVxuICAgIHJlY29yZGVycy5wdXNoKC4uLnRoaXMuZmxvd1JlY29yZGVycyk7XG4gICAgY29uc3QgZmxvd1RhcCA9IHRoaXMuZGVmZXJyZWRUaWVyPy5idWlsZEZsb3dUYXAoKTtcbiAgICBpZiAoZmxvd1RhcCkgcmVjb3JkZXJzLnB1c2goZmxvd1RhcCk7XG4gICAgcmV0dXJuIHJlY29yZGVycy5sZW5ndGggPiAwID8gcmVjb3JkZXJzIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIFRoZSBpbmxpbmUgZmxvdyBsaXN0ZW5lcnMgb2YgYW4gZXhlY3V0b3ItbWFkZSBldmVudCAoYG9uUmVzdW1lYCk6IHRoZSBuYXJyYXRpdmUgcmVjb3JkZXIgZmlyc3QuICovXG4gIGlubGluZUZsb3dMaXN0ZW5lcnMoKTogRmxvd1JlY29yZGVyW10ge1xuICAgIHJldHVybiB0aGlzLmNvbWJpbmVkUmVjb3JkZXIgPyBbdGhpcy5jb21iaW5lZFJlY29yZGVyLCAuLi50aGlzLmZsb3dSZWNvcmRlcnNdIDogdGhpcy5mbG93UmVjb3JkZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIExhemlseSBjcmVhdGUgdGhlIGV4ZWN1dG9yJ3MgT05FIGRlZmVycmVkLW9ic2VydmVyIHRpZXIgKG9uZSBtZXJnZWRcbiAgICogcXVldWUsIHRvdGFsIGV2ZW50IG9yZGVyIGFjcm9zcyBhbGwgdGhyZWUgY2hhbm5lbHMpLiBUaGUgRklSU1QgZGVmZXJyZWRcbiAgICogYXR0YWNoJ3Mgb3B0aW9ucyBjb25maWd1cmUgdGhlIGRpc3BhdGNoZXI7IGxhdGVyIGRpZmZlcmluZyBvcHRpb25zIGFyZVxuICAgKiBkZXYtd2FybmVkIGFuZCBpZ25vcmVkIChzZWUgYEF0dGFjaFJlY29yZGVyT3B0aW9uc2ApLlxuICAgKi9cbiAgcHJpdmF0ZSBlbnN1cmVEZWZlcnJlZFRpZXIob3B0aW9ucz86IEF0dGFjaFJlY29yZGVyT3B0aW9ucyk6IERlZmVycmVkT2JzZXJ2ZXJUaWVyIHtcbiAgICBpZiAoIXRoaXMuZGVmZXJyZWRUaWVyKSB0aGlzLmRlZmVycmVkVGllciA9IG5ldyBEZWZlcnJlZE9ic2VydmVyVGllcihvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5kZWZlcnJlZFRpZXI7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -76,6 +76,8 @@ export function buildPauseCheckpoint(signal, traverser, run) {
|
|
|
76
76
|
// The paused EXECUTION (9.37.0) — a queued sibling raised on resume
|
|
77
77
|
// carries the run it ORIGINALLY paused in.
|
|
78
78
|
...(signal.pausedExecution && { pausedExecution: signal.pausedExecution }),
|
|
79
|
+
// The key the paused touching execution ran under (10.1) — its resume runs under the same key.
|
|
80
|
+
...(signal.idempotencyKey !== undefined && { idempotencyKey: signal.idempotencyKey }),
|
|
79
81
|
subflowPath: signal.subflowPath,
|
|
80
82
|
pauseData: signal.pauseData,
|
|
81
83
|
subflowStates: signal.subflowStates,
|
|
@@ -139,4 +141,4 @@ function describeCheckpointCloneFailure(checkpoint, cause) {
|
|
|
139
141
|
'are never part of a checkpoint and never cause this error. ' +
|
|
140
142
|
'See docs/guides/execution-model.md ("Pause / resume — what a checkpoint captures").', { cause });
|
|
141
143
|
}
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL2NoZWNrcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ0c7QUFHSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVl4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLE1BQW1CLEVBQ25CLFNBQXVDLEVBQ3ZDLEdBQWM7SUFFZCw2RUFBNkU7SUFDN0UsbURBQW1EO0lBQ25ELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsTUFBTSxVQUFVLEdBQUc7UUFDakIsa0VBQWtFO1FBQ2xFLGlCQUFpQixFQUFFLGtCQUFrQjtRQUNyQyxXQUFXLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7UUFDMUQsYUFBYSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQzdCLG9FQUFvRTtRQUNwRSwyQ0FBMkM7UUFDM0MsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFFLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztRQUMvQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0IsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1FBQ25DLHVFQUF1RTtRQUN2RSwwRUFBMEU7UUFDMUUseUVBQXlFO1FBQ3pFLG9GQUFvRjtRQUNwRixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7UUFDbEMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNoRCw0RUFBNEU7UUFDNUUsMEVBQTBFO1FBQzFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2RSxzRUFBc0U7UUFDdEUsZ0VBQWdFO1FBQ2hFLDBCQUEwQjtRQUMxQixHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvRSxxRUFBcUU7UUFDckUseUVBQXlFO1FBQ3pFLHdFQUF3RTtRQUN4RSx1RUFBdUU7UUFDdkUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JELDBGQUEwRjtRQUMxRiwwRkFBMEY7UUFDMUYsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pFLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO0tBQ3JCLENBQUM7SUFDRixJQUFJLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLCtEQUErRDtRQUMvRCxNQUFNLDhCQUE4QixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0FBQ0gsQ0FBQztBQUVELDZEQUE2RDtBQUM3RCxTQUFTLFdBQVcsQ0FBQyxLQUFjO0lBQ2pDLElBQUksQ0FBQztRQUNILGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyw4QkFBOEIsQ0FBQyxVQUFtQyxFQUFFLEtBQWM7SUFDekYsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7U0FDdkMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ25FLE9BQU8sSUFBSSxLQUFLLENBQ2Qsc0ZBQXNGO1FBQ3BGLHdCQUF3QixNQUFNLDJEQUEyRDtRQUN6Riw0RkFBNEY7UUFDNUYsMEZBQTBGO1FBQzFGLDZEQUE2RDtRQUM3RCxxRkFBcUYsRUFDdkYsRUFBRSxLQUFLLEVBQUUsQ0FDVixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogY2hlY2twb2ludCDigJQgdGhlIHBhdXNlIGNoZWNrcG9pbnQsIGJ1aWx0IE9OQ0UgYXQgdGhlIHBhdXNlIChGOSkuXG4gKlxuICogYGJ1aWxkUGF1c2VDaGVja3BvaW50YCBhc3NlbWJsZXMgdGhlIGNoZWNrcG9pbnQgZnJvbSBhIGNhdWdodCBgUGF1c2VTaWduYWxgXG4gKiBhbmQgdGhlIHBhdXNlZCBydW4sIHN0YW1wZWQgd2l0aCB0aGUgZm9ybWF0IHRoZSBPTkUgY29kZWMgcmVhZHMgYmFja1xuICogKGBwYXVzZS9yZWNvcmQudHNgIMK3IGBDSEVDS1BPSU5UX1ZFUlNJT05gIC8gYGRlY29kZUNoZWNrcG9pbnRgKSwgYW5kXG4gKiBkZXRhY2hlcyBpdCB3aXRoIG9uZSBgc3RydWN0dXJlZENsb25lYC5cbiAqXG4gKiBMRUFOIChmb3JtYXQgMikuIFRoZSBjaGVja3BvaW50IGhvbGRzIHdoYXQgYHJlc3VtZSgpYCByZWFkcyBhbmQgdGhlIHBhdXNlJ3NcbiAqIG93biByZWNvcmQsIG5vdGhpbmcgZWxzZTpcbiAqXG4gKiAgIHJlYWQgYnkgcmVzdW1lICB0aGUgY3Vyc29yIChgcGF1c2VkU3RhZ2VJZGAsIGBzdWJmbG93UGF0aGAsIGBwYXVzZWRCeWApLFxuICogICAgICAgICAgICAgICAgICAgdGhlIHN0YXRlIChgc2hhcmVkU3RhdGVgLCBhbmQgYHN1YmZsb3dTdGF0ZXNgIOKAlCBvbmUgY2FwdHVyZVxuICogICAgICAgICAgICAgICAgICAgcGVyIHN1YmZsb3cgT04gdGhlIHBhdXNlIHBhdGgpLCB0aGUgY291bnRlcnNcbiAqICAgICAgICAgICAgICAgICAgIChgZXhlY3V0aW9uQ291bnRgLCBgdmlzaXRDb3VudHNgIOKAlCBvbmUgZW50cnkgcGVyIHN0YWdlIGlkKSxcbiAqICAgICAgICAgICAgICAgICAgIHRoZSB3YWl0aW5nIHNpYmxpbmdzIChgcGVuZGluZ1BhdXNlc2ApLCB0aGUgcmVkYWN0aW9uIG5hbWVzXG4gKiAgICAgICAgICAgICAgICAgICAoYHJlZGFjdGlvbk1hcmtzYCksIHRoZSBsaW5rIChgcGF1c2VkRXhlY3V0aW9uYCk7XG4gKiAgIHRoZSByZWNvcmQgICAgICBgcGF1c2VEYXRhYCAodGhlIHF1ZXN0aW9uKSwgYGludm9rZXJTdGFnZUlkYCwgYHBhdXNlZEF0YC5cbiAqXG4gKiBTbyBpdHMgc2l6ZSBpcyB0aGUgc3RhdGUncyBhbmQgdGhlIGNoYXJ0J3MsIG5ldmVyIHRoZSBydW4ncyBsZW5ndGguIEZvcm1hdCAxXG4gKiBhbHNvIGNhcnJpZWQgdGhlIHdob2xlIGV4ZWN1dGlvbiB0cmVlIGFuZCB0aGUgZmluaXNoZWQgc3ViZmxvd3MnIHJlc3VsdHMg4oCUXG4gKiB0aGUgcnVuJ3Mgc2VydmVkIHJlY29yZCwgd2hpY2ggbm8gcmVzdW1lIHJlYWQgYW5kIHdoaWNoIGdyZXcgd2l0aCBldmVyeVxuICogZmluaXNoZWQgaXRlcmF0aW9uIChgYmVuY2gvY2hlY2twb2ludC1zaXplLnRzYDogMTkuMyBNQiBhZnRlciA2MCBhZ2VudFxuICogdHVybnMgd2hvc2UgcmVzdW1hYmxlIHN0YXRlIOKAlCByb290IHBsdXMgY2FwdHVyZXMg4oCUIGlzIDAuMTMgTUI7IHRoZSB0cmVlXG4gKiBhbG9uZSB3YXMgOTclKS4gVGhhdCByZWNvcmQgaXMgYGdldFNuYXBzaG90KClgJ3MuIFBpbm5lZDpcbiAqIHRlc3QvbGliL3BhdXNlL2NoZWNrcG9pbnQtc2l6ZS50ZXN0LnRzLlxuICpcbiAqIFRIRSBMQVcgaG9sZHM6IHRoZSBjaGVja3BvaW50IGtlZXBzIFJFQUwgdmFsdWVzIOKAlCBubyByZWRhY3Rpb24gcG9saWN5IGV2ZXJcbiAqIHRvdWNoZXMgaXQgKGl0IGlzIHdoYXQgdGhlIHJlc3VtZWQgcnVuIGNvbXB1dGVzIG9uKTsgdGhlIG1hcmtzIHRyYXZlbCBhc1xuICogTkFNRVMgb25seS5cbiAqXG4gKiBUaGUgSlNPTi1zYWZlIGNvbnRyYWN0IGdvdmVybnMgd2hhdCBDT05TVU1FUlMgcHV0IGludG8gYSBjaGVja3BvaW50XG4gKiAoYHBhdXNlRGF0YWAsIHNoYXJlZCBzdGF0ZSkuIEEgdmFsdWUgYHN0cnVjdHVyZWRDbG9uZWAgcmVmdXNlcyBjYW4gb25seSBjb21lXG4gKiBmcm9tIHRoZW0g4oCUIHNoYXJlZCBzdGF0ZSBpcyBjbG9uZWQgYXQgZXZlcnkgY29tbWl0LCBzbyBhIGZ1bmN0aW9uIG5ldmVyXG4gKiByZWFjaGVzIGl0LCBhbmQgbm8gZGlhZ25vc3RpYyBiYWcgaXMgY2FycmllZCDigJQgc28gYSBmYWlsZWQgY2xvbmUgYmVjb21lcyBhXG4gKiBERVNDUklQVElWRSBjb250cmFjdCBlcnJvciBuYW1pbmcgdGhlIGZpZWxkIChgZGVzY3JpYmVDaGVja3BvaW50Q2xvbmVGYWlsdXJlYClcbiAqIGluc3RlYWQgb2YgYSBuYWtlZCBgRGF0YUNsb25lRXJyb3JgLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRmxvd2NoYXJ0VHJhdmVyc2VyIH0gZnJvbSAnLi4vZW5naW5lL3RyYXZlcnNhbC9GbG93Y2hhcnRUcmF2ZXJzZXIuanMnO1xuaW1wb3J0IHsgQ0hFQ0tQT0lOVF9WRVJTSU9OIH0gZnJvbSAnLi4vcGF1c2UvcmVjb3JkLmpzJztcbmltcG9ydCB0eXBlIHsgRmxvd2NoYXJ0Q2hlY2twb2ludCwgUGF1c2VTaWduYWwsIFJlZGFjdGlvbk1hcmtzIH0gZnJvbSAnLi4vcGF1c2UvdHlwZXMuanMnO1xuXG4vKiogVGhlIHBhdXNlZCBydW4ncyBjb3VudGVycywgYXMgdGhlIGV4ZWN1dG9yIGhvbGRzIHRoZW0gYXQgdGhlIHBhdXNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXVzZWRSdW4ge1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICByZWFkb25seSBleGVjdXRpb25Db3VudDogbnVtYmVyO1xuICByZWFkb25seSB2aXNpdENvdW50czogUmVhZG9ubHlNYXA8c3RyaW5nLCBudW1iZXI+O1xuICAvKiogVGhlIHJ1bidzIHJlZGFjdGlvbiBtYXJrcyDigJQgbmFtZXMgb25seSAoYFJlZGFjdGlvblJ1bGUgwrcgbWFya3NGb3JDaGVja3BvaW50YCk7IGFic2VudCB3aGVuIG5vbmUuICovXG4gIHJlYWRvbmx5IHJlZGFjdGlvbk1hcmtzPzogUmVkYWN0aW9uTWFya3M7XG59XG5cbi8qKlxuICogQnVpbGQgYSBmdWxseSBERVRBQ0hFRCwgbGVhbiBjaGVja3BvaW50IGZyb20gYSBjYXVnaHQgUGF1c2VTaWduYWwuXG4gKlxuICogRXZlcnkgZmllbGQgaXMgZGVlcC1jb3BpZWQgdmlhIG9uZSBgc3RydWN0dXJlZENsb25lYCBvZiB0aGUgYXNzZW1ibGVkXG4gKiBjaGVja3BvaW50LCBiZWNhdXNlIHRoZSByYXcgcGllY2VzIGFsaWFzIGxpdmUgZW5naW5lIHN0YXRlOlxuICpcbiAqICAgLSBgc2hhcmVkU3RhdGVgIElTIGBTaGFyZWRNZW1vcnlgJ3MgY3VycmVudCBnZW5lcmF0aW9uIOKAlCBuZXZlciBlZGl0ZWQsXG4gKiAgICAgYnV0IChjb3B5LW9uLXdyaXRlLCA5LjI5LjApIGV2ZXJ5IGxhdGVyIGdlbmVyYXRpb24gc2hhcmVzIGl0c1xuICogICAgIHVuY2hhbmdlZCBzdWJ0cmVlcywgc28gYSBjaGVja3BvaW50IHRoYXQgYWxpYXNlZCBpdCB3b3VsZCBhbGlhcyB0aGVcbiAqICAgICByZXN1bWVkIHJ1bidzIHN0YXRlIHRvby5cbiAqICAgLSBgc3ViZmxvd1N0YXRlc2AgdmFsdWVzIGFyZSBzaGFsbG93IGNvcGllcyB3aG9zZSBORVNURUQgb2JqZWN0cyBhbGlhc1xuICogICAgIHN1YmZsb3cgbWVtb3J5LCBhbmQgdGhleSBnZXQgc2VlZGVkIGJhY2sgaW50byBsaXZlIHJ1bnRpbWVzIG9uIHJlc3VtZS5cbiAqXG4gKiBUaGUgY2hlY2twb2ludCBpcyBwZXJzaXN0ZWQgYnkgY29udHJhY3QgKFwic3RvcmUgaW4gUmVkaXMvUG9zdGdyZXNcIikg4oCUIGl0XG4gKiBtdXN0IG5ldmVyIHNoYXJlIHN0cnVjdHVyZSB3aXRoIHRoZSBlbmdpbmUuXG4gKlxuICogVGhlIHN0YXRlIGlzIHJlYWQgc3RyYWlnaHQgb2ZmIHRoZSByb290IHJ1bnRpbWUncyBzdG9yZSDigJQgbm8gc25hcHNob3QgaXNcbiAqIGJ1aWx0IChhIHNuYXBzaG90IHdvdWxkIGJ1aWxkIHRoZSBleGVjdXRpb24gdHJlZSBhbmQgY29weSB0aGUgY29tbWl0IGxvZyxcbiAqIHdvcmsgcHJvcG9ydGlvbmFsIHRvIHRoZSBydW4ncyBsZW5ndGgsIG9ubHkgdG8gdGhyb3cgYm90aCBhd2F5KS5cbiAqXG4gKiBTdWJmbG93IHNjb3BlIGNhcHR1cmUgKGBzdWJmbG93U3RhdGVzYCkgc3Vydml2ZXMgT05MWSBvbiB0aGUgc2lnbmFsIOKAlCB0aGVcbiAqIG5lc3RlZCBydW50aW1lcyBhcmUgR0MnZCBhcyB0aGUgc3RhY2sgdW53aW5kcy4gUHJvbW90aW5nIGl0IG9udG8gdGhlXG4gKiBjaGVja3BvaW50IGhlcmUgbGV0cyBjcm9zcy1leGVjdXRvciByZXN1bWUgcmVzdG9yZSBwcmUtcGF1c2Ugc3ViZmxvd1xuICogc2NvcGUgKGUuZy4gYW4gQWdlbnQncyBgc2NvcGUuaGlzdG9yeWApLiBUaGUgc2lnbmFsIGNhcHR1cmVzIGEgc3ViZmxvdyBvbmx5XG4gKiBhcyBpdCBidWJibGVzIHRocm91Z2ggdGhhdCBzdWJmbG93J3MgYm91bmRhcnksIHNvIHRoZSBrZXlzIGFyZSBleGFjdGx5IHRoZVxuICogcGF1c2UgcGF0aCdzLiBFbXB0eSBge31gIGZvciByb290LWxldmVsIHBhdXNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUGF1c2VDaGVja3BvaW50KFxuICBzaWduYWw6IFBhdXNlU2lnbmFsLFxuICB0cmF2ZXJzZXI6IEZsb3djaGFydFRyYXZlcnNlcjxhbnksIGFueT4sXG4gIHJ1bjogUGF1c2VkUnVuLFxuKTogRmxvd2NoYXJ0Q2hlY2twb2ludCB7XG4gIC8vIEV2ZXJ5IHBhdXNlIHRoYXQgcGF1c2VkIGluIFRISVMgcnVuIGlzIG5hbWVkIGJ5IGl0OyBhIHNpYmxpbmcgcmFpc2VkIGFnYWluXG4gIC8vIG9uIHJlc3VtZSBrZWVwcyB0aGUgcnVuIGl0IG9yaWdpbmFsbHkgcGF1c2VkIGluLlxuICBzaWduYWwuY29tcGxldGVFeGVjdXRpb24ocnVuLnJ1bklkKTtcbiAgY29uc3QgY2hlY2twb2ludCA9IHtcbiAgICAvLyBUaGUgZm9ybWF0IOKAlCByZWFkIGJhY2sgYnkgYHBhdXNlL3JlY29yZC50cyDCtyBkZWNvZGVDaGVja3BvaW50YC5cbiAgICBjaGVja3BvaW50VmVyc2lvbjogQ0hFQ0tQT0lOVF9WRVJTSU9OLFxuICAgIHNoYXJlZFN0YXRlOiB0cmF2ZXJzZXIuZ2V0UnVudGltZSgpLmdsb2JhbFN0b3JlLmdldFN0YXRlKCksXG4gICAgcGF1c2VkU3RhZ2VJZDogc2lnbmFsLnN0YWdlSWQsXG4gICAgLy8gVGhlIHBhdXNlZCBFWEVDVVRJT04gKDkuMzcuMCkg4oCUIGEgcXVldWVkIHNpYmxpbmcgcmFpc2VkIG9uIHJlc3VtZVxuICAgIC8vIGNhcnJpZXMgdGhlIHJ1biBpdCBPUklHSU5BTExZIHBhdXNlZCBpbi5cbiAgICAuLi4oc2lnbmFsLnBhdXNlZEV4ZWN1dGlvbiAmJiB7IHBhdXNlZEV4ZWN1dGlvbjogc2lnbmFsLnBhdXNlZEV4ZWN1dGlvbiB9KSxcbiAgICBzdWJmbG93UGF0aDogc2lnbmFsLnN1YmZsb3dQYXRoLFxuICAgIHBhdXNlRGF0YTogc2lnbmFsLnBhdXNlRGF0YSxcbiAgICBzdWJmbG93U3RhdGVzOiBzaWduYWwuc3ViZmxvd1N0YXRlcyxcbiAgICAvLyBDb3VudGVyIGNvbnRpbnVpdHkg4oCUIHNlZWRlZCBiYWNrIGluIHJlc3VtZSgpIHNvIHJ1bnRpbWVTdGFnZUlkcyBzdGF5XG4gICAgLy8gdW5pcXVlIGFuZCBsb29wSXRlcmF0aW9uIHN0YXlzIG1vbm90b25pYyBhY3Jvc3MgYSBDUk9TUy1leGVjdXRvciByZXN1bWVcbiAgICAvLyAoYm90aCBhcmUgcGxhaW4gbnVtYmVyL3JlY29yZCwgc28gdGhleSByaWRlIHRoZSBzaW5nbGUgc3RydWN0dXJlZENsb25lXG4gICAgLy8gYmVsb3cgdW50b3VjaGVkKS4gU2VlIHRlc3QvbGliL3BhdXNlL3Jlc3VtZS1leGVjdXRpb24tY291bnRlci1jb250aW51aXR5LnRlc3QudHMuXG4gICAgZXhlY3V0aW9uQ291bnQ6IHJ1bi5leGVjdXRpb25Db3VudCxcbiAgICB2aXNpdENvdW50czogT2JqZWN0LmZyb21FbnRyaWVzKHJ1bi52aXNpdENvdW50cyksXG4gICAgLy8gSW52b2tlciBjb250ZXh0IOKAlCBjb2xsZWN0ZWQgZHVyaW5nIHRyYXZlcnNhbCBidWJibGUtdXAgKG5vdCB0cmVlLXdhbGtlZCkuXG4gICAgLy8gKGBjb250aW51YXRpb25TdGFnZUlkYCBpcyBsZWdhY3ktb25seSBzaW5jZSA5LjM5LjA6IG5vIGxvbmdlciB3cml0dGVuLilcbiAgICAuLi4oc2lnbmFsLmludm9rZXJTdGFnZUlkICYmIHsgaW52b2tlclN0YWdlSWQ6IHNpZ25hbC5pbnZva2VyU3RhZ2VJZCB9KSxcbiAgICAvLyBQYXJhbGxlbCBzaWJsaW5ncycgcGF1c2VzIGZyb20gdGhlIHNhbWUgZmFuLW91dCwgd2FpdGluZyB0aGVpciB0dXJuXG4gICAgLy8gKDkuMjguMCkuIEFic2VudCB3aGVuIG9ubHkgb25lIGNoaWxkIHBhdXNlZCDigJQgdGhlIHNoYXBlIGV2ZXJ5XG4gICAgLy8gZWFybGllciBjaGVja3BvaW50IGhhcy5cbiAgICAuLi4oc2lnbmFsLnBlbmRpbmdQYXVzZXMubGVuZ3RoID4gMCAmJiB7IHBlbmRpbmdQYXVzZXM6IHNpZ25hbC5wZW5kaW5nUGF1c2VzIH0pLFxuICAgIC8vIEhPVyB0aGUgcGF1c2Ugd2FzIHJhaXNlZC4gT25lIGNoZWNrcG9pbnQgc2hhcGUsIG9uZSBleHRyYSBvcHRpb25hbFxuICAgIC8vIGZpZWxkIOKAlCBhbiBpbnRlcnJ1cHQoKSBwYXVzZSBpcyBub3QgYSBzZWNvbmQga2luZCBvZiBjaGVja3BvaW50LCBpdCBpc1xuICAgIC8vIHRoZSBzYW1lIGNoZWNrcG9pbnQgdGhhdCByZXN1bWUoKSByZS1lbnRlcnMgZGlmZmVyZW50bHkgKHN0YWdlIHRvcCB2c1xuICAgIC8vIHJlc3VtZUZuKS4gQWJzZW50IGZvciBldmVyeSBwcmUtOS4xNC4wIGNoZWNrcG9pbnQsIHdoaWNoIGlzIGNvcnJlY3QuXG4gICAgLi4uKHNpZ25hbC5wYXVzZWRCeSAmJiB7IHBhdXNlZEJ5OiBzaWduYWwucGF1c2VkQnkgfSksXG4gICAgLy8gVGhlIHJlZGFjdGlvbiB0aGUgcGF1c2VkIHJ1biBoYWQgbWFkZSDigJQgTkFNRVMgb25seSAobWFya3MsIGEgbWFwcGVyJ3MgdGFpbnRzLCBpbmhlcml0ZWRcbiAgICAvLyBmaWVsZHMpLiBSZXN1bWUgc2VlZHMgdGhlIHJlc3VtZWQgcnVuJ3MgcnVsZSB3aXRoIHRoZW0uIEFic2VudCB3aGVuIG5vdGhpbmcgd2FzIG1hcmtlZC5cbiAgICAuLi4ocnVuLnJlZGFjdGlvbk1hcmtzICYmIHsgcmVkYWN0aW9uTWFya3M6IHJ1bi5yZWRhY3Rpb25NYXJrcyB9KSxcbiAgICBwYXVzZWRBdDogRGF0ZS5ub3coKSxcbiAgfTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gc3RydWN0dXJlZENsb25lKGNoZWNrcG9pbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIEdlbnVpbmUgSlNPTi1zYWZlIGNvbnRyYWN0IHZpb2xhdGlvbiBpbiBjb25zdW1lci1vd25lZCBkYXRhLlxuICAgIHRocm93IGRlc2NyaWJlQ2hlY2twb2ludENsb25lRmFpbHVyZShjaGVja3BvaW50LCBlcnJvcik7XG4gIH1cbn1cblxuLyoqIGB0cnVlYCB3aGVuIGBzdHJ1Y3R1cmVkQ2xvbmVgIGFjY2VwdHMgdGhlIHZhbHVlIGFzLWlzLiAqL1xuZnVuY3Rpb24gaXNDbG9uZWFibGUodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBzdHJ1Y3R1cmVkQ2xvbmUodmFsdWUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgREVTQ1JJUFRJVkUgZXJyb3IgZm9yIGEgY2hlY2twb2ludCB0aGF0IGNhbm5vdCBiZSBjbG9uZWQg4oCUIHRoZVxuICogbm9uLWNsb25lYWJsZSB2YWx1ZSBsaXZlcyBpbiBjb25zdW1lci1vd25lZCBkYXRhIChhIGdlbnVpbmUgSlNPTi1zYWZlXG4gKiBjb250cmFjdCB2aW9sYXRpb24pLiBQcm9iZXMgZWFjaCB0b3AtbGV2ZWwgY2hlY2twb2ludCBmaWVsZCBpbmRpdmlkdWFsbHkgc29cbiAqIHRoZSBtZXNzYWdlIG5hbWVzIHRoZSBvZmZlbmRpbmcgZmllbGQgZmFtaWx5LiBOZXZlciBsZXRzIGEgbmFrZWRcbiAqIGBEYXRhQ2xvbmVFcnJvcmAgZXNjYXBlLlxuICovXG5mdW5jdGlvbiBkZXNjcmliZUNoZWNrcG9pbnRDbG9uZUZhaWx1cmUoY2hlY2twb2ludDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGNhdXNlOiB1bmtub3duKTogRXJyb3Ige1xuICBjb25zdCBmYWlsaW5nID0gT2JqZWN0LmVudHJpZXMoY2hlY2twb2ludClcbiAgICAuZmlsdGVyKChbLCB2YWx1ZV0pID0+ICFpc0Nsb25lYWJsZSh2YWx1ZSkpXG4gICAgLm1hcCgoW2ZpZWxkXSkgPT4gZmllbGQpO1xuICBjb25zdCBmaWVsZHMgPSBmYWlsaW5nLmxlbmd0aCA+IDAgPyBmYWlsaW5nLmpvaW4oJywgJykgOiAndW5rbm93bic7XG4gIHJldHVybiBuZXcgRXJyb3IoXG4gICAgJ0Zsb3dDaGFydEV4ZWN1dG9yOiBjYW5ub3QgYnVpbGQgdGhlIHBhdXNlIGNoZWNrcG9pbnQg4oCUIG5vbi1zZXJpYWxpemFibGUgdmFsdWUocykgaW4gJyArXG4gICAgICBgY2hlY2twb2ludCBmaWVsZChzKTogJHtmaWVsZHN9LiBUaGUgY2hlY2twb2ludCBjb250cmFjdCBpcyBKU09OLXNhZmUgKG5vIGZ1bmN0aW9ucywgbm8gYCArXG4gICAgICBcImNsYXNzIGluc3RhbmNlcykuIENoZWNrIHRoZSBwYXVzZURhdGEgcmV0dXJuZWQgYnkgdGhlIHBhdXNhYmxlIHN0YWdlJ3MgZXhlY3V0ZSgpLCBhbmQgYW55IFwiICtcbiAgICAgICdzdWJmbG93IHN0YXRlIGNhcHR1cmVkIGF0IHRoZSBwYXVzZS4gRGlhZ25vc3RpYyB2YWx1ZXMgZnJvbSAkZGVidWcvJG1ldHJpYy8kZXJyb3IvJGV2YWwgJyArXG4gICAgICAnYXJlIG5ldmVyIHBhcnQgb2YgYSBjaGVja3BvaW50IGFuZCBuZXZlciBjYXVzZSB0aGlzIGVycm9yLiAnICtcbiAgICAgICdTZWUgZG9jcy9ndWlkZXMvZXhlY3V0aW9uLW1vZGVsLm1kIChcIlBhdXNlIC8gcmVzdW1lIOKAlCB3aGF0IGEgY2hlY2twb2ludCBjYXB0dXJlc1wiKS4nLFxuICAgIHsgY2F1c2UgfSxcbiAgKTtcbn1cbiJdfQ==
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL2NoZWNrcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ0c7QUFHSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVl4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLE1BQW1CLEVBQ25CLFNBQXVDLEVBQ3ZDLEdBQWM7SUFFZCw2RUFBNkU7SUFDN0UsbURBQW1EO0lBQ25ELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsTUFBTSxVQUFVLEdBQUc7UUFDakIsa0VBQWtFO1FBQ2xFLGlCQUFpQixFQUFFLGtCQUFrQjtRQUNyQyxXQUFXLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7UUFDMUQsYUFBYSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQzdCLG9FQUFvRTtRQUNwRSwyQ0FBMkM7UUFDM0MsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFFLCtGQUErRjtRQUMvRixHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsS0FBSyxTQUFTLElBQUksRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JGLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztRQUMvQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0IsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1FBQ25DLHVFQUF1RTtRQUN2RSwwRUFBMEU7UUFDMUUseUVBQXlFO1FBQ3pFLG9GQUFvRjtRQUNwRixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7UUFDbEMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNoRCw0RUFBNEU7UUFDNUUsMEVBQTBFO1FBQzFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2RSxzRUFBc0U7UUFDdEUsZ0VBQWdFO1FBQ2hFLDBCQUEwQjtRQUMxQixHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvRSxxRUFBcUU7UUFDckUseUVBQXlFO1FBQ3pFLHdFQUF3RTtRQUN4RSx1RUFBdUU7UUFDdkUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JELDBGQUEwRjtRQUMxRiwwRkFBMEY7UUFDMUYsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pFLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO0tBQ3JCLENBQUM7SUFDRixJQUFJLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLCtEQUErRDtRQUMvRCxNQUFNLDhCQUE4QixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0FBQ0gsQ0FBQztBQUVELDZEQUE2RDtBQUM3RCxTQUFTLFdBQVcsQ0FBQyxLQUFjO0lBQ2pDLElBQUksQ0FBQztRQUNILGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyw4QkFBOEIsQ0FBQyxVQUFtQyxFQUFFLEtBQWM7SUFDekYsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7U0FDdkMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ25FLE9BQU8sSUFBSSxLQUFLLENBQ2Qsc0ZBQXNGO1FBQ3BGLHdCQUF3QixNQUFNLDJEQUEyRDtRQUN6Riw0RkFBNEY7UUFDNUYsMEZBQTBGO1FBQzFGLDZEQUE2RDtRQUM3RCxxRkFBcUYsRUFDdkYsRUFBRSxLQUFLLEVBQUUsQ0FDVixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogY2hlY2twb2ludCDigJQgdGhlIHBhdXNlIGNoZWNrcG9pbnQsIGJ1aWx0IE9OQ0UgYXQgdGhlIHBhdXNlIChGOSkuXG4gKlxuICogYGJ1aWxkUGF1c2VDaGVja3BvaW50YCBhc3NlbWJsZXMgdGhlIGNoZWNrcG9pbnQgZnJvbSBhIGNhdWdodCBgUGF1c2VTaWduYWxgXG4gKiBhbmQgdGhlIHBhdXNlZCBydW4sIHN0YW1wZWQgd2l0aCB0aGUgZm9ybWF0IHRoZSBPTkUgY29kZWMgcmVhZHMgYmFja1xuICogKGBwYXVzZS9yZWNvcmQudHNgIMK3IGBDSEVDS1BPSU5UX1ZFUlNJT05gIC8gYGRlY29kZUNoZWNrcG9pbnRgKSwgYW5kXG4gKiBkZXRhY2hlcyBpdCB3aXRoIG9uZSBgc3RydWN0dXJlZENsb25lYC5cbiAqXG4gKiBMRUFOIChmb3JtYXQgMikuIFRoZSBjaGVja3BvaW50IGhvbGRzIHdoYXQgYHJlc3VtZSgpYCByZWFkcyBhbmQgdGhlIHBhdXNlJ3NcbiAqIG93biByZWNvcmQsIG5vdGhpbmcgZWxzZTpcbiAqXG4gKiAgIHJlYWQgYnkgcmVzdW1lICB0aGUgY3Vyc29yIChgcGF1c2VkU3RhZ2VJZGAsIGBzdWJmbG93UGF0aGAsIGBwYXVzZWRCeWApLFxuICogICAgICAgICAgICAgICAgICAgdGhlIHN0YXRlIChgc2hhcmVkU3RhdGVgLCBhbmQgYHN1YmZsb3dTdGF0ZXNgIOKAlCBvbmUgY2FwdHVyZVxuICogICAgICAgICAgICAgICAgICAgcGVyIHN1YmZsb3cgT04gdGhlIHBhdXNlIHBhdGgpLCB0aGUgY291bnRlcnNcbiAqICAgICAgICAgICAgICAgICAgIChgZXhlY3V0aW9uQ291bnRgLCBgdmlzaXRDb3VudHNgIOKAlCBvbmUgZW50cnkgcGVyIHN0YWdlIGlkKSxcbiAqICAgICAgICAgICAgICAgICAgIHRoZSB3YWl0aW5nIHNpYmxpbmdzIChgcGVuZGluZ1BhdXNlc2ApLCB0aGUgcmVkYWN0aW9uIG5hbWVzXG4gKiAgICAgICAgICAgICAgICAgICAoYHJlZGFjdGlvbk1hcmtzYCksIHRoZSBsaW5rIChgcGF1c2VkRXhlY3V0aW9uYCk7XG4gKiAgIHRoZSByZWNvcmQgICAgICBgcGF1c2VEYXRhYCAodGhlIHF1ZXN0aW9uKSwgYGludm9rZXJTdGFnZUlkYCwgYHBhdXNlZEF0YC5cbiAqXG4gKiBTbyBpdHMgc2l6ZSBpcyB0aGUgc3RhdGUncyBhbmQgdGhlIGNoYXJ0J3MsIG5ldmVyIHRoZSBydW4ncyBsZW5ndGguIEZvcm1hdCAxXG4gKiBhbHNvIGNhcnJpZWQgdGhlIHdob2xlIGV4ZWN1dGlvbiB0cmVlIGFuZCB0aGUgZmluaXNoZWQgc3ViZmxvd3MnIHJlc3VsdHMg4oCUXG4gKiB0aGUgcnVuJ3Mgc2VydmVkIHJlY29yZCwgd2hpY2ggbm8gcmVzdW1lIHJlYWQgYW5kIHdoaWNoIGdyZXcgd2l0aCBldmVyeVxuICogZmluaXNoZWQgaXRlcmF0aW9uIChgYmVuY2gvY2hlY2twb2ludC1zaXplLnRzYDogMTkuMyBNQiBhZnRlciA2MCBhZ2VudFxuICogdHVybnMgd2hvc2UgcmVzdW1hYmxlIHN0YXRlIOKAlCByb290IHBsdXMgY2FwdHVyZXMg4oCUIGlzIDAuMTMgTUI7IHRoZSB0cmVlXG4gKiBhbG9uZSB3YXMgOTclKS4gVGhhdCByZWNvcmQgaXMgYGdldFNuYXBzaG90KClgJ3MuIFBpbm5lZDpcbiAqIHRlc3QvbGliL3BhdXNlL2NoZWNrcG9pbnQtc2l6ZS50ZXN0LnRzLlxuICpcbiAqIFRIRSBMQVcgaG9sZHM6IHRoZSBjaGVja3BvaW50IGtlZXBzIFJFQUwgdmFsdWVzIOKAlCBubyByZWRhY3Rpb24gcG9saWN5IGV2ZXJcbiAqIHRvdWNoZXMgaXQgKGl0IGlzIHdoYXQgdGhlIHJlc3VtZWQgcnVuIGNvbXB1dGVzIG9uKTsgdGhlIG1hcmtzIHRyYXZlbCBhc1xuICogTkFNRVMgb25seS5cbiAqXG4gKiBUaGUgSlNPTi1zYWZlIGNvbnRyYWN0IGdvdmVybnMgd2hhdCBDT05TVU1FUlMgcHV0IGludG8gYSBjaGVja3BvaW50XG4gKiAoYHBhdXNlRGF0YWAsIHNoYXJlZCBzdGF0ZSkuIEEgdmFsdWUgYHN0cnVjdHVyZWRDbG9uZWAgcmVmdXNlcyBjYW4gb25seSBjb21lXG4gKiBmcm9tIHRoZW0g4oCUIHNoYXJlZCBzdGF0ZSBpcyBjbG9uZWQgYXQgZXZlcnkgY29tbWl0LCBzbyBhIGZ1bmN0aW9uIG5ldmVyXG4gKiByZWFjaGVzIGl0LCBhbmQgbm8gZGlhZ25vc3RpYyBiYWcgaXMgY2FycmllZCDigJQgc28gYSBmYWlsZWQgY2xvbmUgYmVjb21lcyBhXG4gKiBERVNDUklQVElWRSBjb250cmFjdCBlcnJvciBuYW1pbmcgdGhlIGZpZWxkIChgZGVzY3JpYmVDaGVja3BvaW50Q2xvbmVGYWlsdXJlYClcbiAqIGluc3RlYWQgb2YgYSBuYWtlZCBgRGF0YUNsb25lRXJyb3JgLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRmxvd2NoYXJ0VHJhdmVyc2VyIH0gZnJvbSAnLi4vZW5naW5lL3RyYXZlcnNhbC9GbG93Y2hhcnRUcmF2ZXJzZXIuanMnO1xuaW1wb3J0IHsgQ0hFQ0tQT0lOVF9WRVJTSU9OIH0gZnJvbSAnLi4vcGF1c2UvcmVjb3JkLmpzJztcbmltcG9ydCB0eXBlIHsgRmxvd2NoYXJ0Q2hlY2twb2ludCwgUGF1c2VTaWduYWwsIFJlZGFjdGlvbk1hcmtzIH0gZnJvbSAnLi4vcGF1c2UvdHlwZXMuanMnO1xuXG4vKiogVGhlIHBhdXNlZCBydW4ncyBjb3VudGVycywgYXMgdGhlIGV4ZWN1dG9yIGhvbGRzIHRoZW0gYXQgdGhlIHBhdXNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXVzZWRSdW4ge1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICByZWFkb25seSBleGVjdXRpb25Db3VudDogbnVtYmVyO1xuICByZWFkb25seSB2aXNpdENvdW50czogUmVhZG9ubHlNYXA8c3RyaW5nLCBudW1iZXI+O1xuICAvKiogVGhlIHJ1bidzIHJlZGFjdGlvbiBtYXJrcyDigJQgbmFtZXMgb25seSAoYFJlZGFjdGlvblJ1bGUgwrcgbWFya3NGb3JDaGVja3BvaW50YCk7IGFic2VudCB3aGVuIG5vbmUuICovXG4gIHJlYWRvbmx5IHJlZGFjdGlvbk1hcmtzPzogUmVkYWN0aW9uTWFya3M7XG59XG5cbi8qKlxuICogQnVpbGQgYSBmdWxseSBERVRBQ0hFRCwgbGVhbiBjaGVja3BvaW50IGZyb20gYSBjYXVnaHQgUGF1c2VTaWduYWwuXG4gKlxuICogRXZlcnkgZmllbGQgaXMgZGVlcC1jb3BpZWQgdmlhIG9uZSBgc3RydWN0dXJlZENsb25lYCBvZiB0aGUgYXNzZW1ibGVkXG4gKiBjaGVja3BvaW50LCBiZWNhdXNlIHRoZSByYXcgcGllY2VzIGFsaWFzIGxpdmUgZW5naW5lIHN0YXRlOlxuICpcbiAqICAgLSBgc2hhcmVkU3RhdGVgIElTIGBTaGFyZWRNZW1vcnlgJ3MgY3VycmVudCBnZW5lcmF0aW9uIOKAlCBuZXZlciBlZGl0ZWQsXG4gKiAgICAgYnV0IChjb3B5LW9uLXdyaXRlLCA5LjI5LjApIGV2ZXJ5IGxhdGVyIGdlbmVyYXRpb24gc2hhcmVzIGl0c1xuICogICAgIHVuY2hhbmdlZCBzdWJ0cmVlcywgc28gYSBjaGVja3BvaW50IHRoYXQgYWxpYXNlZCBpdCB3b3VsZCBhbGlhcyB0aGVcbiAqICAgICByZXN1bWVkIHJ1bidzIHN0YXRlIHRvby5cbiAqICAgLSBgc3ViZmxvd1N0YXRlc2AgdmFsdWVzIGFyZSBzaGFsbG93IGNvcGllcyB3aG9zZSBORVNURUQgb2JqZWN0cyBhbGlhc1xuICogICAgIHN1YmZsb3cgbWVtb3J5LCBhbmQgdGhleSBnZXQgc2VlZGVkIGJhY2sgaW50byBsaXZlIHJ1bnRpbWVzIG9uIHJlc3VtZS5cbiAqXG4gKiBUaGUgY2hlY2twb2ludCBpcyBwZXJzaXN0ZWQgYnkgY29udHJhY3QgKFwic3RvcmUgaW4gUmVkaXMvUG9zdGdyZXNcIikg4oCUIGl0XG4gKiBtdXN0IG5ldmVyIHNoYXJlIHN0cnVjdHVyZSB3aXRoIHRoZSBlbmdpbmUuXG4gKlxuICogVGhlIHN0YXRlIGlzIHJlYWQgc3RyYWlnaHQgb2ZmIHRoZSByb290IHJ1bnRpbWUncyBzdG9yZSDigJQgbm8gc25hcHNob3QgaXNcbiAqIGJ1aWx0IChhIHNuYXBzaG90IHdvdWxkIGJ1aWxkIHRoZSBleGVjdXRpb24gdHJlZSBhbmQgY29weSB0aGUgY29tbWl0IGxvZyxcbiAqIHdvcmsgcHJvcG9ydGlvbmFsIHRvIHRoZSBydW4ncyBsZW5ndGgsIG9ubHkgdG8gdGhyb3cgYm90aCBhd2F5KS5cbiAqXG4gKiBTdWJmbG93IHNjb3BlIGNhcHR1cmUgKGBzdWJmbG93U3RhdGVzYCkgc3Vydml2ZXMgT05MWSBvbiB0aGUgc2lnbmFsIOKAlCB0aGVcbiAqIG5lc3RlZCBydW50aW1lcyBhcmUgR0MnZCBhcyB0aGUgc3RhY2sgdW53aW5kcy4gUHJvbW90aW5nIGl0IG9udG8gdGhlXG4gKiBjaGVja3BvaW50IGhlcmUgbGV0cyBjcm9zcy1leGVjdXRvciByZXN1bWUgcmVzdG9yZSBwcmUtcGF1c2Ugc3ViZmxvd1xuICogc2NvcGUgKGUuZy4gYW4gQWdlbnQncyBgc2NvcGUuaGlzdG9yeWApLiBUaGUgc2lnbmFsIGNhcHR1cmVzIGEgc3ViZmxvdyBvbmx5XG4gKiBhcyBpdCBidWJibGVzIHRocm91Z2ggdGhhdCBzdWJmbG93J3MgYm91bmRhcnksIHNvIHRoZSBrZXlzIGFyZSBleGFjdGx5IHRoZVxuICogcGF1c2UgcGF0aCdzLiBFbXB0eSBge31gIGZvciByb290LWxldmVsIHBhdXNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUGF1c2VDaGVja3BvaW50KFxuICBzaWduYWw6IFBhdXNlU2lnbmFsLFxuICB0cmF2ZXJzZXI6IEZsb3djaGFydFRyYXZlcnNlcjxhbnksIGFueT4sXG4gIHJ1bjogUGF1c2VkUnVuLFxuKTogRmxvd2NoYXJ0Q2hlY2twb2ludCB7XG4gIC8vIEV2ZXJ5IHBhdXNlIHRoYXQgcGF1c2VkIGluIFRISVMgcnVuIGlzIG5hbWVkIGJ5IGl0OyBhIHNpYmxpbmcgcmFpc2VkIGFnYWluXG4gIC8vIG9uIHJlc3VtZSBrZWVwcyB0aGUgcnVuIGl0IG9yaWdpbmFsbHkgcGF1c2VkIGluLlxuICBzaWduYWwuY29tcGxldGVFeGVjdXRpb24ocnVuLnJ1bklkKTtcbiAgY29uc3QgY2hlY2twb2ludCA9IHtcbiAgICAvLyBUaGUgZm9ybWF0IOKAlCByZWFkIGJhY2sgYnkgYHBhdXNlL3JlY29yZC50cyDCtyBkZWNvZGVDaGVja3BvaW50YC5cbiAgICBjaGVja3BvaW50VmVyc2lvbjogQ0hFQ0tQT0lOVF9WRVJTSU9OLFxuICAgIHNoYXJlZFN0YXRlOiB0cmF2ZXJzZXIuZ2V0UnVudGltZSgpLmdsb2JhbFN0b3JlLmdldFN0YXRlKCksXG4gICAgcGF1c2VkU3RhZ2VJZDogc2lnbmFsLnN0YWdlSWQsXG4gICAgLy8gVGhlIHBhdXNlZCBFWEVDVVRJT04gKDkuMzcuMCkg4oCUIGEgcXVldWVkIHNpYmxpbmcgcmFpc2VkIG9uIHJlc3VtZVxuICAgIC8vIGNhcnJpZXMgdGhlIHJ1biBpdCBPUklHSU5BTExZIHBhdXNlZCBpbi5cbiAgICAuLi4oc2lnbmFsLnBhdXNlZEV4ZWN1dGlvbiAmJiB7IHBhdXNlZEV4ZWN1dGlvbjogc2lnbmFsLnBhdXNlZEV4ZWN1dGlvbiB9KSxcbiAgICAvLyBUaGUga2V5IHRoZSBwYXVzZWQgdG91Y2hpbmcgZXhlY3V0aW9uIHJhbiB1bmRlciAoMTAuMSkg4oCUIGl0cyByZXN1bWUgcnVucyB1bmRlciB0aGUgc2FtZSBrZXkuXG4gICAgLi4uKHNpZ25hbC5pZGVtcG90ZW5jeUtleSAhPT0gdW5kZWZpbmVkICYmIHsgaWRlbXBvdGVuY3lLZXk6IHNpZ25hbC5pZGVtcG90ZW5jeUtleSB9KSxcbiAgICBzdWJmbG93UGF0aDogc2lnbmFsLnN1YmZsb3dQYXRoLFxuICAgIHBhdXNlRGF0YTogc2lnbmFsLnBhdXNlRGF0YSxcbiAgICBzdWJmbG93U3RhdGVzOiBzaWduYWwuc3ViZmxvd1N0YXRlcyxcbiAgICAvLyBDb3VudGVyIGNvbnRpbnVpdHkg4oCUIHNlZWRlZCBiYWNrIGluIHJlc3VtZSgpIHNvIHJ1bnRpbWVTdGFnZUlkcyBzdGF5XG4gICAgLy8gdW5pcXVlIGFuZCBsb29wSXRlcmF0aW9uIHN0YXlzIG1vbm90b25pYyBhY3Jvc3MgYSBDUk9TUy1leGVjdXRvciByZXN1bWVcbiAgICAvLyAoYm90aCBhcmUgcGxhaW4gbnVtYmVyL3JlY29yZCwgc28gdGhleSByaWRlIHRoZSBzaW5nbGUgc3RydWN0dXJlZENsb25lXG4gICAgLy8gYmVsb3cgdW50b3VjaGVkKS4gU2VlIHRlc3QvbGliL3BhdXNlL3Jlc3VtZS1leGVjdXRpb24tY291bnRlci1jb250aW51aXR5LnRlc3QudHMuXG4gICAgZXhlY3V0aW9uQ291bnQ6IHJ1bi5leGVjdXRpb25Db3VudCxcbiAgICB2aXNpdENvdW50czogT2JqZWN0LmZyb21FbnRyaWVzKHJ1bi52aXNpdENvdW50cyksXG4gICAgLy8gSW52b2tlciBjb250ZXh0IOKAlCBjb2xsZWN0ZWQgZHVyaW5nIHRyYXZlcnNhbCBidWJibGUtdXAgKG5vdCB0cmVlLXdhbGtlZCkuXG4gICAgLy8gKGBjb250aW51YXRpb25TdGFnZUlkYCBpcyBsZWdhY3ktb25seSBzaW5jZSA5LjM5LjA6IG5vIGxvbmdlciB3cml0dGVuLilcbiAgICAuLi4oc2lnbmFsLmludm9rZXJTdGFnZUlkICYmIHsgaW52b2tlclN0YWdlSWQ6IHNpZ25hbC5pbnZva2VyU3RhZ2VJZCB9KSxcbiAgICAvLyBQYXJhbGxlbCBzaWJsaW5ncycgcGF1c2VzIGZyb20gdGhlIHNhbWUgZmFuLW91dCwgd2FpdGluZyB0aGVpciB0dXJuXG4gICAgLy8gKDkuMjguMCkuIEFic2VudCB3aGVuIG9ubHkgb25lIGNoaWxkIHBhdXNlZCDigJQgdGhlIHNoYXBlIGV2ZXJ5XG4gICAgLy8gZWFybGllciBjaGVja3BvaW50IGhhcy5cbiAgICAuLi4oc2lnbmFsLnBlbmRpbmdQYXVzZXMubGVuZ3RoID4gMCAmJiB7IHBlbmRpbmdQYXVzZXM6IHNpZ25hbC5wZW5kaW5nUGF1c2VzIH0pLFxuICAgIC8vIEhPVyB0aGUgcGF1c2Ugd2FzIHJhaXNlZC4gT25lIGNoZWNrcG9pbnQgc2hhcGUsIG9uZSBleHRyYSBvcHRpb25hbFxuICAgIC8vIGZpZWxkIOKAlCBhbiBpbnRlcnJ1cHQoKSBwYXVzZSBpcyBub3QgYSBzZWNvbmQga2luZCBvZiBjaGVja3BvaW50LCBpdCBpc1xuICAgIC8vIHRoZSBzYW1lIGNoZWNrcG9pbnQgdGhhdCByZXN1bWUoKSByZS1lbnRlcnMgZGlmZmVyZW50bHkgKHN0YWdlIHRvcCB2c1xuICAgIC8vIHJlc3VtZUZuKS4gQWJzZW50IGZvciBldmVyeSBwcmUtOS4xNC4wIGNoZWNrcG9pbnQsIHdoaWNoIGlzIGNvcnJlY3QuXG4gICAgLi4uKHNpZ25hbC5wYXVzZWRCeSAmJiB7IHBhdXNlZEJ5OiBzaWduYWwucGF1c2VkQnkgfSksXG4gICAgLy8gVGhlIHJlZGFjdGlvbiB0aGUgcGF1c2VkIHJ1biBoYWQgbWFkZSDigJQgTkFNRVMgb25seSAobWFya3MsIGEgbWFwcGVyJ3MgdGFpbnRzLCBpbmhlcml0ZWRcbiAgICAvLyBmaWVsZHMpLiBSZXN1bWUgc2VlZHMgdGhlIHJlc3VtZWQgcnVuJ3MgcnVsZSB3aXRoIHRoZW0uIEFic2VudCB3aGVuIG5vdGhpbmcgd2FzIG1hcmtlZC5cbiAgICAuLi4ocnVuLnJlZGFjdGlvbk1hcmtzICYmIHsgcmVkYWN0aW9uTWFya3M6IHJ1bi5yZWRhY3Rpb25NYXJrcyB9KSxcbiAgICBwYXVzZWRBdDogRGF0ZS5ub3coKSxcbiAgfTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gc3RydWN0dXJlZENsb25lKGNoZWNrcG9pbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIEdlbnVpbmUgSlNPTi1zYWZlIGNvbnRyYWN0IHZpb2xhdGlvbiBpbiBjb25zdW1lci1vd25lZCBkYXRhLlxuICAgIHRocm93IGRlc2NyaWJlQ2hlY2twb2ludENsb25lRmFpbHVyZShjaGVja3BvaW50LCBlcnJvcik7XG4gIH1cbn1cblxuLyoqIGB0cnVlYCB3aGVuIGBzdHJ1Y3R1cmVkQ2xvbmVgIGFjY2VwdHMgdGhlIHZhbHVlIGFzLWlzLiAqL1xuZnVuY3Rpb24gaXNDbG9uZWFibGUodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBzdHJ1Y3R1cmVkQ2xvbmUodmFsdWUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgREVTQ1JJUFRJVkUgZXJyb3IgZm9yIGEgY2hlY2twb2ludCB0aGF0IGNhbm5vdCBiZSBjbG9uZWQg4oCUIHRoZVxuICogbm9uLWNsb25lYWJsZSB2YWx1ZSBsaXZlcyBpbiBjb25zdW1lci1vd25lZCBkYXRhIChhIGdlbnVpbmUgSlNPTi1zYWZlXG4gKiBjb250cmFjdCB2aW9sYXRpb24pLiBQcm9iZXMgZWFjaCB0b3AtbGV2ZWwgY2hlY2twb2ludCBmaWVsZCBpbmRpdmlkdWFsbHkgc29cbiAqIHRoZSBtZXNzYWdlIG5hbWVzIHRoZSBvZmZlbmRpbmcgZmllbGQgZmFtaWx5LiBOZXZlciBsZXRzIGEgbmFrZWRcbiAqIGBEYXRhQ2xvbmVFcnJvcmAgZXNjYXBlLlxuICovXG5mdW5jdGlvbiBkZXNjcmliZUNoZWNrcG9pbnRDbG9uZUZhaWx1cmUoY2hlY2twb2ludDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGNhdXNlOiB1bmtub3duKTogRXJyb3Ige1xuICBjb25zdCBmYWlsaW5nID0gT2JqZWN0LmVudHJpZXMoY2hlY2twb2ludClcbiAgICAuZmlsdGVyKChbLCB2YWx1ZV0pID0+ICFpc0Nsb25lYWJsZSh2YWx1ZSkpXG4gICAgLm1hcCgoW2ZpZWxkXSkgPT4gZmllbGQpO1xuICBjb25zdCBmaWVsZHMgPSBmYWlsaW5nLmxlbmd0aCA+IDAgPyBmYWlsaW5nLmpvaW4oJywgJykgOiAndW5rbm93bic7XG4gIHJldHVybiBuZXcgRXJyb3IoXG4gICAgJ0Zsb3dDaGFydEV4ZWN1dG9yOiBjYW5ub3QgYnVpbGQgdGhlIHBhdXNlIGNoZWNrcG9pbnQg4oCUIG5vbi1zZXJpYWxpemFibGUgdmFsdWUocykgaW4gJyArXG4gICAgICBgY2hlY2twb2ludCBmaWVsZChzKTogJHtmaWVsZHN9LiBUaGUgY2hlY2twb2ludCBjb250cmFjdCBpcyBKU09OLXNhZmUgKG5vIGZ1bmN0aW9ucywgbm8gYCArXG4gICAgICBcImNsYXNzIGluc3RhbmNlcykuIENoZWNrIHRoZSBwYXVzZURhdGEgcmV0dXJuZWQgYnkgdGhlIHBhdXNhYmxlIHN0YWdlJ3MgZXhlY3V0ZSgpLCBhbmQgYW55IFwiICtcbiAgICAgICdzdWJmbG93IHN0YXRlIGNhcHR1cmVkIGF0IHRoZSBwYXVzZS4gRGlhZ25vc3RpYyB2YWx1ZXMgZnJvbSAkZGVidWcvJG1ldHJpYy8kZXJyb3IvJGV2YWwgJyArXG4gICAgICAnYXJlIG5ldmVyIHBhcnQgb2YgYSBjaGVja3BvaW50IGFuZCBuZXZlciBjYXVzZSB0aGlzIGVycm9yLiAnICtcbiAgICAgICdTZWUgZG9jcy9ndWlkZXMvZXhlY3V0aW9uLW1vZGVsLm1kIChcIlBhdXNlIC8gcmVzdW1lIOKAlCB3aGF0IGEgY2hlY2twb2ludCBjYXB0dXJlc1wiKS4nLFxuICAgIHsgY2F1c2UgfSxcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* runner/deadline.ts — `armRun`: the run's ONE effective signal and its deadline (design §3.1, P1b).
|
|
3
|
+
*
|
|
4
|
+
* A run has three ways to be told to stop — `RunOptions.signal`, `env.signal`, and a deadline (`RunOptions.deadline`,
|
|
5
|
+
* `now + RunOptions.timeoutMs`, or `env.deadline`; the earliest wins). Before 10.1 they did not compose: `timeoutMs`
|
|
6
|
+
* was ignored beside a `signal`, and `env.signal` was readable but never raced. `armRun` composes all of them into
|
|
7
|
+
* one signal the traverser races (and hands every subflow), and stamps the env a stage reads:
|
|
8
|
+
*
|
|
9
|
+
* env.deadline = the deadline (epoch ms) env.signal = the one composed signal
|
|
10
|
+
*
|
|
11
|
+
* — but only when there is something to stamp AND somewhere it was already going: a deadline always gives the run
|
|
12
|
+
* 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
|
|
13
|
+
* stage's `$getEnv()` stays `{}` and its commit carries no `'env'` mark — byte-identical to 10.0.
|
|
14
|
+
*
|
|
15
|
+
* At the deadline the signal aborts with a BRANDED reason (`attempt/deadline.ts`) carrying the message a run with
|
|
16
|
+
* `timeoutMs` always rejected with, so the attempt runner reads it as "out of time" (`timeout` / `no-time-left`),
|
|
17
|
+
* never as a cancellation.
|
|
18
|
+
*/
|
|
19
|
+
import type { ExecutionEnv } from '../engine/types.js';
|
|
20
|
+
/** What `armRun` reads — the run's own options. */
|
|
21
|
+
export interface RunTiming {
|
|
22
|
+
readonly signal?: AbortSignal;
|
|
23
|
+
readonly timeoutMs?: number;
|
|
24
|
+
readonly deadline?: number;
|
|
25
|
+
readonly env?: ExecutionEnv;
|
|
26
|
+
/**
|
|
27
|
+
* The executor's own stop (10.1, P6): a record sink with `onFailure: 'fail'` aborts it at the first lost entry,
|
|
28
|
+
* with the `RecordSinkError` as its reason. Composed like the others; absent for every other run.
|
|
29
|
+
*/
|
|
30
|
+
readonly stop?: AbortSignal;
|
|
31
|
+
}
|
|
32
|
+
/** The armed run: the signal the traverser races, the env stages read, and the one call that releases both. */
|
|
33
|
+
export interface ArmedRun {
|
|
34
|
+
readonly signal: AbortSignal | undefined;
|
|
35
|
+
readonly env: ExecutionEnv | undefined;
|
|
36
|
+
/** The run's deadline, epoch ms — absent without one. */
|
|
37
|
+
readonly deadline: number | undefined;
|
|
38
|
+
/** Clear the deadline timer and remove every listener composition added. Idempotent. */
|
|
39
|
+
dispose(): void;
|
|
40
|
+
}
|
|
41
|
+
/** Compose the run's signal and deadline from its options; `now` is the clock (epoch ms). */
|
|
42
|
+
export declare function armRun(timing: RunTiming, now?: () => number): ArmedRun;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* runner/deadline.ts — `armRun`: the run's ONE effective signal and its deadline (design §3.1, P1b).
|
|
3
|
+
*
|
|
4
|
+
* A run has three ways to be told to stop — `RunOptions.signal`, `env.signal`, and a deadline (`RunOptions.deadline`,
|
|
5
|
+
* `now + RunOptions.timeoutMs`, or `env.deadline`; the earliest wins). Before 10.1 they did not compose: `timeoutMs`
|
|
6
|
+
* was ignored beside a `signal`, and `env.signal` was readable but never raced. `armRun` composes all of them into
|
|
7
|
+
* one signal the traverser races (and hands every subflow), and stamps the env a stage reads:
|
|
8
|
+
*
|
|
9
|
+
* env.deadline = the deadline (epoch ms) env.signal = the one composed signal
|
|
10
|
+
*
|
|
11
|
+
* — but only when there is something to stamp AND somewhere it was already going: a deadline always gives the run
|
|
12
|
+
* 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
|
|
13
|
+
* stage's `$getEnv()` stays `{}` and its commit carries no `'env'` mark — byte-identical to 10.0.
|
|
14
|
+
*
|
|
15
|
+
* At the deadline the signal aborts with a BRANDED reason (`attempt/deadline.ts`) carrying the message a run with
|
|
16
|
+
* `timeoutMs` always rejected with, so the attempt runner reads it as "out of time" (`timeout` / `no-time-left`),
|
|
17
|
+
* never as a cancellation.
|
|
18
|
+
*/
|
|
19
|
+
import { anySignal } from '../attempt/anySignal.js';
|
|
20
|
+
import { deadlineReason, isAbortSignal, readDeadline, setLongTimeout } from '../attempt/deadline.js';
|
|
21
|
+
/** Compose the run's signal and deadline from its options; `now` is the clock (epoch ms). */
|
|
22
|
+
export function armRun(timing, now = Date.now) {
|
|
23
|
+
const startedAt = now();
|
|
24
|
+
// Each input read ONCE: a getter on the env cannot stamp a deadline that was never armed.
|
|
25
|
+
const env = timing.env;
|
|
26
|
+
const envDeadline = env?.deadline;
|
|
27
|
+
const envSignal = env?.signal;
|
|
28
|
+
const deadline = earliestDeadline(timing, envDeadline, startedAt);
|
|
29
|
+
const controller = deadline !== undefined ? new AbortController() : undefined;
|
|
30
|
+
// `env.signal` was readable-only before 10.1: a value that is not a signal is still only readable, never raced.
|
|
31
|
+
const sources = [
|
|
32
|
+
timing.signal,
|
|
33
|
+
isAbortSignal(envSignal) ? envSignal : undefined,
|
|
34
|
+
timing.stop,
|
|
35
|
+
controller?.signal,
|
|
36
|
+
].filter((s) => s !== undefined);
|
|
37
|
+
// One source is used as it is (the caller's own signal, untouched); two or more are composed. Composed BEFORE
|
|
38
|
+
// the timer is armed, so a composition that throws leaves no timer behind.
|
|
39
|
+
const composed = sources.length > 1 ? anySignal(sources) : undefined;
|
|
40
|
+
const signal = composed?.signal ?? sources[0];
|
|
41
|
+
let cancelTimer;
|
|
42
|
+
if (controller !== undefined && deadline !== undefined) {
|
|
43
|
+
const reason = deadlineReason(deadlineMessage(timing, deadline, startedAt));
|
|
44
|
+
const left = deadline - startedAt;
|
|
45
|
+
if (left <= 0)
|
|
46
|
+
controller.abort(reason);
|
|
47
|
+
else
|
|
48
|
+
cancelTimer = setLongTimeout(() => controller.abort(reason), left);
|
|
49
|
+
}
|
|
50
|
+
let disposed = false;
|
|
51
|
+
return {
|
|
52
|
+
signal,
|
|
53
|
+
env: stampedEnv(env, envSignal, signal, deadline),
|
|
54
|
+
deadline,
|
|
55
|
+
dispose: () => {
|
|
56
|
+
if (disposed)
|
|
57
|
+
return;
|
|
58
|
+
disposed = true;
|
|
59
|
+
cancelTimer?.();
|
|
60
|
+
composed?.dispose();
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/** The earliest valid deadline of the three inputs. `timeoutMs` 0 (or not finite) arms nothing, as it never did. */
|
|
65
|
+
function earliestDeadline(timing, envDeadline, startedAt) {
|
|
66
|
+
const fromTimeout = typeof timing.timeoutMs === 'number' && Number.isFinite(timing.timeoutMs) && timing.timeoutMs !== 0
|
|
67
|
+
? startedAt + timing.timeoutMs
|
|
68
|
+
: undefined;
|
|
69
|
+
const candidates = [readDeadline(timing.deadline), fromTimeout, readDeadline(envDeadline)].filter((d) => d !== undefined);
|
|
70
|
+
return candidates.length > 0 ? Math.min(...candidates) : undefined;
|
|
71
|
+
}
|
|
72
|
+
/** The deadline's message: `timeoutMs`'s historical one when it set the deadline, else the deadline's own. */
|
|
73
|
+
function deadlineMessage(timing, deadline, startedAt) {
|
|
74
|
+
if (typeof timing.timeoutMs === 'number' && startedAt + timing.timeoutMs === deadline) {
|
|
75
|
+
return `Execution timed out after ${timing.timeoutMs}ms`;
|
|
76
|
+
}
|
|
77
|
+
return `Execution passed its deadline (${deadline} epoch ms)`;
|
|
78
|
+
}
|
|
79
|
+
/** The env stages read: the caller's, plus the deadline and the one signal — only where there is one to stamp. */
|
|
80
|
+
function stampedEnv(env, envSignal, signal, deadline) {
|
|
81
|
+
const hasEnv = env !== undefined && Object.keys(env).length > 0;
|
|
82
|
+
if (deadline === undefined && (!hasEnv || signal === undefined || envSignal === signal))
|
|
83
|
+
return env;
|
|
84
|
+
return {
|
|
85
|
+
...env,
|
|
86
|
+
...(signal !== undefined && { signal }),
|
|
87
|
+
...(deadline !== undefined && { deadline }),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVhZGxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3J1bm5lci9kZWFkbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBMEJyRyw2RkFBNkY7QUFDN0YsTUFBTSxVQUFVLE1BQU0sQ0FBQyxNQUFpQixFQUFFLE1BQW9CLElBQUksQ0FBQyxHQUFHO0lBQ3BFLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLDBGQUEwRjtJQUMxRixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRSxRQUFRLENBQUM7SUFDbEMsTUFBTSxTQUFTLEdBQUcsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUM5QixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRWxFLE1BQU0sVUFBVSxHQUFHLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM5RSxnSEFBZ0g7SUFDaEgsTUFBTSxPQUFPLEdBQUc7UUFDZCxNQUFNLENBQUMsTUFBTTtRQUNiLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ2hELE1BQU0sQ0FBQyxJQUFJO1FBQ1gsVUFBVSxFQUFFLE1BQU07S0FDbkIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQW9CLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENB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QUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNoRSxJQUFJLFFBQVEsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUNwRyxPQUFPO1FBQ0wsR0FBRyxHQUFHO1FBQ04sR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN2QyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0tBQzVDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBydW5uZXIvZGVhZGxpbmUudHMg4oCUIGBhcm1SdW5gOiB0aGUgcnVuJ3MgT05FIGVmZmVjdGl2ZSBzaWduYWwgYW5kIGl0cyBkZWFkbGluZSAoZGVzaWduIMKnMy4xLCBQMWIpLlxuICpcbiAqIEEgcnVuIGhhcyB0aHJlZSB3YXlzIHRvIGJlIHRvbGQgdG8gc3RvcCDigJQgYFJ1bk9wdGlvbnMuc2lnbmFsYCwgYGVudi5zaWduYWxgLCBhbmQgYSBkZWFkbGluZSAoYFJ1bk9wdGlvbnMuZGVhZGxpbmVgLFxuICogYG5vdyArIFJ1bk9wdGlvbnMudGltZW91dE1zYCwgb3IgYGVudi5kZWFkbGluZWA7IHRoZSBlYXJsaWVzdCB3aW5zKS4gQmVmb3JlIDEwLjEgdGhleSBkaWQgbm90IGNvbXBvc2U6IGB0aW1lb3V0TXNgXG4gKiB3YXMgaWdub3JlZCBiZXNpZGUgYSBgc2lnbmFsYCwgYW5kIGBlbnYuc2lnbmFsYCB3YXMgcmVhZGFibGUgYnV0IG5ldmVyIHJhY2VkLiBgYXJtUnVuYCBjb21wb3NlcyBhbGwgb2YgdGhlbSBpbnRvXG4gKiBvbmUgc2lnbmFsIHRoZSB0cmF2ZXJzZXIgcmFjZXMgKGFuZCBoYW5kcyBldmVyeSBzdWJmbG93KSwgYW5kIHN0YW1wcyB0aGUgZW52IGEgc3RhZ2UgcmVhZHM6XG4gKlxuICogICBlbnYuZGVhZGxpbmUgPSB0aGUgZGVhZGxpbmUgKGVwb2NoIG1zKSAgICAgIGVudi5zaWduYWwgPSB0aGUgb25lIGNvbXBvc2VkIHNpZ25hbFxuICpcbiAqIOKAlCBidXQgb25seSB3aGVuIHRoZXJlIGlzIHNvbWV0aGluZyB0byBzdGFtcCBBTkQgc29tZXdoZXJlIGl0IHdhcyBhbHJlYWR5IGdvaW5nOiBhIGRlYWRsaW5lIGFsd2F5cyBnaXZlcyB0aGUgcnVuXG4gKiBhbiBlbnY7IGEgc2lnbmFsIGlzIHN0YW1wZWQgb250byBhbiBlbnYgdGhlIGNhbGxlciBnYXZlLiBBIHJ1biB3aXRoIG5vIGRlYWRsaW5lIGFuZCBubyBlbnYga2VlcHMgbm8gZW52LCBzbyBhXG4gKiBzdGFnZSdzIGAkZ2V0RW52KClgIHN0YXlzIGB7fWAgYW5kIGl0cyBjb21taXQgY2FycmllcyBubyBgJ2VudidgIG1hcmsg4oCUIGJ5dGUtaWRlbnRpY2FsIHRvIDEwLjAuXG4gKlxuICogQXQgdGhlIGRlYWRsaW5lIHRoZSBzaWduYWwgYWJvcnRzIHdpdGggYSBCUkFOREVEIHJlYXNvbiAoYGF0dGVtcHQvZGVhZGxpbmUudHNgKSBjYXJyeWluZyB0aGUgbWVzc2FnZSBhIHJ1biB3aXRoXG4gKiBgdGltZW91dE1zYCBhbHdheXMgcmVqZWN0ZWQgd2l0aCwgc28gdGhlIGF0dGVtcHQgcnVubmVyIHJlYWRzIGl0IGFzIFwib3V0IG9mIHRpbWVcIiAoYHRpbWVvdXRgIC8gYG5vLXRpbWUtbGVmdGApLFxuICogbmV2ZXIgYXMgYSBjYW5jZWxsYXRpb24uXG4gKi9cblxuaW1wb3J0IHsgYW55U2lnbmFsIH0gZnJvbSAnLi4vYXR0ZW1wdC9hbnlTaWduYWwuanMnO1xuaW1wb3J0IHsgZGVhZGxpbmVSZWFzb24sIGlzQWJvcnRTaWduYWwsIHJlYWREZWFkbGluZSwgc2V0TG9uZ1RpbWVvdXQgfSBmcm9tICcuLi9hdHRlbXB0L2RlYWRsaW5lLmpzJztcbmltcG9ydCB0eXBlIHsgRXhlY3V0aW9uRW52IH0gZnJvbSAnLi4vZW5naW5lL3R5cGVzLmpzJztcblxuLyoqIFdoYXQgYGFybVJ1bmAgcmVhZHMg4oCUIHRoZSBydW4ncyBvd24gb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuVGltaW5nIHtcbiAgcmVhZG9ubHkgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIHJlYWRvbmx5IHRpbWVvdXRNcz86IG51bWJlcjtcbiAgcmVhZG9ubHkgZGVhZGxpbmU/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGVudj86IEV4ZWN1dGlvbkVudjtcbiAgLyoqXG4gICAqIFRoZSBleGVjdXRvcidzIG93biBzdG9wICgxMC4xLCBQNik6IGEgcmVjb3JkIHNpbmsgd2l0aCBgb25GYWlsdXJlOiAnZmFpbCdgIGFib3J0cyBpdCBhdCB0aGUgZmlyc3QgbG9zdCBlbnRyeSxcbiAgICogd2l0aCB0aGUgYFJlY29yZFNpbmtFcnJvcmAgYXMgaXRzIHJlYXNvbi4gQ29tcG9zZWQgbGlrZSB0aGUgb3RoZXJzOyBhYnNlbnQgZm9yIGV2ZXJ5IG90aGVyIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IHN0b3A/OiBBYm9ydFNpZ25hbDtcbn1cblxuLyoqIFRoZSBhcm1lZCBydW46IHRoZSBzaWduYWwgdGhlIHRyYXZlcnNlciByYWNlcywgdGhlIGVudiBzdGFnZXMgcmVhZCwgYW5kIHRoZSBvbmUgY2FsbCB0aGF0IHJlbGVhc2VzIGJvdGguICovXG5leHBvcnQgaW50ZXJmYWNlIEFybWVkUnVuIHtcbiAgcmVhZG9ubHkgc2lnbmFsOiBBYm9ydFNpZ25hbCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW52OiBFeGVjdXRpb25FbnYgfCB1bmRlZmluZWQ7XG4gIC8qKiBUaGUgcnVuJ3MgZGVhZGxpbmUsIGVwb2NoIG1zIOKAlCBhYnNlbnQgd2l0aG91dCBvbmUuICovXG4gIHJlYWRvbmx5IGRlYWRsaW5lOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKiBDbGVhciB0aGUgZGVhZGxpbmUgdGltZXIgYW5kIHJlbW92ZSBldmVyeSBsaXN0ZW5lciBjb21wb3NpdGlvbiBhZGRlZC4gSWRlbXBvdGVudC4gKi9cbiAgZGlzcG9zZSgpOiB2b2lkO1xufVxuXG4vKiogQ29tcG9zZSB0aGUgcnVuJ3Mgc2lnbmFsIGFuZCBkZWFkbGluZSBmcm9tIGl0cyBvcHRpb25zOyBgbm93YCBpcyB0aGUgY2xvY2sgKGVwb2NoIG1zKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcm1SdW4odGltaW5nOiBSdW5UaW1pbmcsIG5vdzogKCkgPT4gbnVtYmVyID0gRGF0ZS5ub3cpOiBBcm1lZFJ1biB7XG4gIGNvbnN0IHN0YXJ0ZWRBdCA9IG5vdygpO1xuICAvLyBFYWNoIGlucHV0IHJlYWQgT05DRTogYSBnZXR0ZXIgb24gdGhlIGVudiBjYW5ub3Qgc3RhbXAgYSBkZWFkbGluZSB0aGF0IHdhcyBuZXZlciBhcm1lZC5cbiAgY29uc3QgZW52ID0gdGltaW5nLmVudjtcbiAgY29uc3QgZW52RGVhZGxpbmUgPSBlbnY/LmRlYWRsaW5lO1xuICBjb25zdCBlbnZTaWduYWwgPSBlbnY/LnNpZ25hbDtcbiAgY29uc3QgZGVhZGxpbmUgPSBlYXJsaWVzdERlYWRsaW5lKHRpbWluZywgZW52RGVhZGxpbmUsIHN0YXJ0ZWRBdCk7XG5cbiAgY29uc3QgY29udHJvbGxlciA9IGRlYWRsaW5lICE9PSB1bmRlZmluZWQgPyBuZXcgQWJvcnRDb250cm9sbGVyKCkgOiB1bmRlZmluZWQ7XG4gIC8vIGBlbnYuc2lnbmFsYCB3YXMgcmVhZGFibGUtb25seSBiZWZvcmUgMTAuMTogYSB2YWx1ZSB0aGF0IGlzIG5vdCBhIHNpZ25hbCBpcyBzdGlsbCBvbmx5IHJlYWRhYmxlLCBuZXZlciByYWNlZC5cbiAgY29uc3Qgc291cmNlcyA9IFtcbiAgICB0aW1pbmcuc2lnbmFsLFxuICAgIGlzQWJvcnRTaWduYWwoZW52U2lnbmFsKSA/IGVudlNpZ25hbCA6IHVuZGVmaW5lZCxcbiAgICB0aW1pbmcuc3RvcCxcbiAgICBjb250cm9sbGVyPy5zaWduYWwsXG4gIF0uZmlsdGVyKChzKTogcyBpcyBBYm9ydFNpZ25hbCA9PiBzICE9PSB1bmRlZmluZWQpO1xuICAvLyBPbmUgc291cmNlIGlzIHVzZWQgYXMgaXQgaXMgKHRoZSBjYWxsZXIncyBvd24gc2lnbmFsLCB1bnRvdWNoZWQpOyB0d28gb3IgbW9yZSBhcmUgY29tcG9zZWQuIENvbXBvc2VkIEJFRk9SRVxuICAvLyB0aGUgdGltZXIgaXMgYXJtZWQsIHNvIGEgY29tcG9zaXRpb24gdGhhdCB0aHJvd3MgbGVhdmVzIG5vIHRpbWVyIGJlaGluZC5cbiAgY29uc3QgY29tcG9zZWQgPSBzb3VyY2VzLmxlbmd0aCA+IDEgPyBhbnlTaWduYWwoc291cmNlcykgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHNpZ25hbCA9IGNvbXBvc2VkPy5zaWduYWwgPz8gc291cmNlc1swXTtcblxuICBsZXQgY2FuY2VsVGltZXI6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgaWYgKGNvbnRyb2xsZXIgIT09IHVuZGVmaW5lZCAmJiBkZWFkbGluZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgcmVhc29uID0gZGVhZGxpbmVSZWFzb24oZGVhZGxpbmVNZXNzYWdlKHRpbWluZywgZGVhZGxpbmUsIHN0YXJ0ZWRBdCkpO1xuICAgIGNvbnN0IGxlZnQgPSBkZWFkbGluZSAtIHN0YXJ0ZWRBdDtcbiAgICBpZiAobGVmdCA8PSAwKSBjb250cm9sbGVyLmFib3J0KHJlYXNvbik7XG4gICAgZWxzZSBjYW5jZWxUaW1lciA9IHNldExvbmdUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQocmVhc29uKSwgbGVmdCk7XG4gIH1cblxuICBsZXQgZGlzcG9zZWQgPSBmYWxzZTtcbiAgcmV0dXJuIHtcbiAgICBzaWduYWwsXG4gICAgZW52OiBzdGFtcGVkRW52KGVudiwgZW52U2lnbmFsLCBzaWduYWwsIGRlYWRsaW5lKSxcbiAgICBkZWFkbGluZSxcbiAgICBkaXNwb3NlOiAoKSA9PiB7XG4gICAgICBpZiAoZGlzcG9zZWQpIHJldHVybjtcbiAgICAgIGRpc3Bvc2VkID0gdHJ1ZTtcbiAgICAgIGNhbmNlbFRpbWVyPy4oKTtcbiAgICAgIGNvbXBvc2VkPy5kaXNwb3NlKCk7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqIFRoZSBlYXJsaWVzdCB2YWxpZCBkZWFkbGluZSBvZiB0aGUgdGhyZWUgaW5wdXRzLiBgdGltZW91dE1zYCAwIChvciBub3QgZmluaXRlKSBhcm1zIG5vdGhpbmcsIGFzIGl0IG5ldmVyIGRpZC4gKi9cbmZ1bmN0aW9uIGVhcmxpZXN0RGVhZGxpbmUodGltaW5nOiBSdW5UaW1pbmcsIGVudkRlYWRsaW5lOiB1bmtub3duLCBzdGFydGVkQXQ6IG51bWJlcik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGZyb21UaW1lb3V0ID1cbiAgICB0eXBlb2YgdGltaW5nLnRpbWVvdXRNcyA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHRpbWluZy50aW1lb3V0TXMpICYmIHRpbWluZy50aW1lb3V0TXMgIT09IDBcbiAgICAgID8gc3RhcnRlZEF0ICsgdGltaW5nLnRpbWVvdXRNc1xuICAgICAgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGNhbmRpZGF0ZXMgPSBbcmVhZERlYWRsaW5lKHRpbWluZy5kZWFkbGluZSksIGZyb21UaW1lb3V0LCByZWFkRGVhZGxpbmUoZW52RGVhZGxpbmUpXS5maWx0ZXIoXG4gICAgKGQpOiBkIGlzIG51bWJlciA9PiBkICE9PSB1bmRlZmluZWQsXG4gICk7XG4gIHJldHVybiBjYW5kaWRhdGVzLmxlbmd0aCA+IDAgPyBNYXRoLm1pbiguLi5jYW5kaWRhdGVzKSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIFRoZSBkZWFkbGluZSdzIG1lc3NhZ2U6IGB0aW1lb3V0TXNgJ3MgaGlzdG9yaWNhbCBvbmUgd2hlbiBpdCBzZXQgdGhlIGRlYWRsaW5lLCBlbHNlIHRoZSBkZWFkbGluZSdzIG93bi4gKi9cbmZ1bmN0aW9uIGRlYWRsaW5lTWVzc2FnZSh0aW1pbmc6IFJ1blRpbWluZywgZGVhZGxpbmU6IG51bWJlciwgc3RhcnRlZEF0OiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHRpbWluZy50aW1lb3V0TXMgPT09ICdudW1iZXInICYmIHN0YXJ0ZWRBdCArIHRpbWluZy50aW1lb3V0TXMgPT09IGRlYWRsaW5lKSB7XG4gICAgcmV0dXJuIGBFeGVjdXRpb24gdGltZWQgb3V0IGFmdGVyICR7dGltaW5nLnRpbWVvdXRNc31tc2A7XG4gIH1cbiAgcmV0dXJuIGBFeGVjdXRpb24gcGFzc2VkIGl0cyBkZWFkbGluZSAoJHtkZWFkbGluZX0gZXBvY2ggbXMpYDtcbn1cblxuLyoqIFRoZSBlbnYgc3RhZ2VzIHJlYWQ6IHRoZSBjYWxsZXIncywgcGx1cyB0aGUgZGVhZGxpbmUgYW5kIHRoZSBvbmUgc2lnbmFsIOKAlCBvbmx5IHdoZXJlIHRoZXJlIGlzIG9uZSB0byBzdGFtcC4gKi9cbmZ1bmN0aW9uIHN0YW1wZWRFbnYoXG4gIGVudjogRXhlY3V0aW9uRW52IHwgdW5kZWZpbmVkLFxuICBlbnZTaWduYWw6IHVua25vd24sXG4gIHNpZ25hbDogQWJvcnRTaWduYWwgfCB1bmRlZmluZWQsXG4gIGRlYWRsaW5lOiBudW1iZXIgfCB1bmRlZmluZWQsXG4pOiBFeGVjdXRpb25FbnYgfCB1bmRlZmluZWQge1xuICBjb25zdCBoYXNFbnYgPSBlbnYgIT09IHVuZGVmaW5lZCAmJiBPYmplY3Qua2V5cyhlbnYpLmxlbmd0aCA+IDA7XG4gIGlmIChkZWFkbGluZSA9PT0gdW5kZWZpbmVkICYmICghaGFzRW52IHx8IHNpZ25hbCA9PT0gdW5kZWZpbmVkIHx8IGVudlNpZ25hbCA9PT0gc2lnbmFsKSkgcmV0dXJuIGVudjtcbiAgcmV0dXJuIHtcbiAgICAuLi5lbnYsXG4gICAgLi4uKHNpZ25hbCAhPT0gdW5kZWZpbmVkICYmIHsgc2lnbmFsIH0pLFxuICAgIC4uLihkZWFkbGluZSAhPT0gdW5kZWZpbmVkICYmIHsgZGVhZGxpbmUgfSksXG4gIH07XG59XG4iXX0=
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export type { ComposableRunner } from './ComposableRunner.js';
|
|
2
2
|
export type { AttachRecorderOptions, ObserverDelivery, ObserverDrainResult, ObserverStats, } from './DeferredObserverTier.js';
|
|
3
|
-
export type { RecorderSnapshot, RuntimeSnapshot } from './ExecutionRuntime.js';
|
|
3
|
+
export type { RecorderSnapshot, RecordSinkStats, RuntimeSnapshot } from './ExecutionRuntime.js';
|
|
4
4
|
export { ExecutionRuntime } from './ExecutionRuntime.js';
|
|
5
5
|
export { FlowChartExecutor } from './FlowChartExecutor.js';
|
|
6
6
|
export type { SubtreeSnapshot } from './getSubtreeSnapshot.js';
|
|
7
7
|
export { getSubtreeSnapshot, listSubflowPaths } from './getSubtreeSnapshot.js';
|
|
8
8
|
export type { FlowChartExecutorOptions } from './options.js';
|
|
9
|
+
export type { RecordFlushResult, RecordSinkFailureMode, RecordSinkFlushMode, RecordSinkOption, RecordSinkOptions, } from './recordSink.js';
|
|
10
|
+
export { RecordSinkError } from './recordSink.js';
|
|
9
11
|
export type { RunResult } from './RunContext.js';
|
|
10
12
|
export { RunContext } from './RunContext.js';
|
|
11
13
|
export type { RunnableFlowChart } from './RunnableChart.js';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { ExecutionRuntime } from './ExecutionRuntime.js';
|
|
2
2
|
export { FlowChartExecutor } from './FlowChartExecutor.js';
|
|
3
3
|
export { getSubtreeSnapshot, listSubflowPaths } from './getSubtreeSnapshot.js';
|
|
4
|
+
export { RecordSinkError } from './recordSink.js';
|
|
4
5
|
export { RunContext } from './RunContext.js';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3J1bm5lci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQVMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbmV4cG9ydCB0eXBlIHsgQ29tcG9zYWJsZVJ1bm5lciB9IGZyb20gJy4vQ29tcG9zYWJsZVJ1bm5lci5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEF0dGFjaFJlY29yZGVyT3B0aW9ucyxcbiAgT2JzZXJ2ZXJEZWxpdmVyeSxcbiAgT2JzZXJ2ZXJEcmFpblJlc3VsdCxcbiAgT2JzZXJ2ZXJTdGF0cyxcbn0gZnJvbSAnLi9EZWZlcnJlZE9ic2VydmVyVGllci5qcyc7XG5leHBvcnQgdHlwZSB7IFJlY29yZGVyU25hcHNob3QsIFJlY29yZFNpbmtTdGF0cywgUnVudGltZVNuYXBzaG90IH0gZnJvbSAnLi9FeGVjdXRpb25SdW50aW1lLmpzJztcbmV4cG9ydCB7IEV4ZWN1dGlvblJ1bnRpbWUgfSBmcm9tICcuL0V4ZWN1dGlvblJ1bnRpbWUuanMnO1xuZXhwb3J0IHsgRmxvd0NoYXJ0RXhlY3V0b3IgfSBmcm9tICcuL0Zsb3dDaGFydEV4ZWN1dG9yLmpzJztcbmV4cG9ydCB0eXBlIHsgU3VidHJlZVNuYXBzaG90IH0gZnJvbSAnLi9nZXRTdWJ0cmVlU25hcHNob3QuanMnO1xuZXhwb3J0IHsgZ2V0U3VidHJlZVNuYXBzaG90LCBsaXN0U3ViZmxvd1BhdGhzIH0gZnJvbSAnLi9nZXRTdWJ0cmVlU25hcHNob3QuanMnO1xuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMuanMnO1xuZXhwb3J0IHR5cGUge1xuICBSZWNvcmRGbHVzaFJlc3VsdCxcbiAgUmVjb3JkU2lua0ZhaWx1cmVNb2RlLFxuICBSZWNvcmRTaW5rRmx1c2hNb2RlLFxuICBSZWNvcmRTaW5rT3B0aW9uLFxuICBSZWNvcmRTaW5rT3B0aW9ucyxcbn0gZnJvbSAnLi9yZWNvcmRTaW5rLmpzJztcbmV4cG9ydCB7IFJlY29yZFNpbmtFcnJvciB9IGZyb20gJy4vcmVjb3JkU2luay5qcyc7XG5leHBvcnQgdHlwZSB7IFJ1blJlc3VsdCB9IGZyb20gJy4vUnVuQ29udGV4dC5qcyc7XG5leHBvcnQgeyBSdW5Db250ZXh0IH0gZnJvbSAnLi9SdW5Db250ZXh0LmpzJztcbmV4cG9ydCB0eXBlIHsgUnVubmFibGVGbG93Q2hhcnQgfSBmcm9tICcuL1J1bm5hYmxlQ2hhcnQuanMnO1xuIl19
|
|
@@ -9,6 +9,7 @@ import type { FlowChart } from '../builder/types.js';
|
|
|
9
9
|
import type { ScopeFactory, StreamHandlers } from '../engine/types.js';
|
|
10
10
|
import type { RunDials } from '../memory/runPolicy.js';
|
|
11
11
|
import type { ScopeProtectionMode } from '../scope/protection/types.js';
|
|
12
|
+
import { type RecordSinkOption, type ResolvedRecordSink } from './recordSink.js';
|
|
12
13
|
/**
|
|
13
14
|
* Options object for `FlowChartExecutor` — preferred over positional params.
|
|
14
15
|
*
|
|
@@ -44,6 +45,20 @@ export interface FlowChartExecutorOptions<TScope = any> extends RunDials {
|
|
|
44
45
|
initialContext?: unknown;
|
|
45
46
|
/** Read-only input accessible via `scope.getArgs()` — never tracked or written. */
|
|
46
47
|
readOnlyContext?: unknown;
|
|
48
|
+
/**
|
|
49
|
+
* Where the run's record goes AS IT LANDS, so a run that never finishes still leaves it: every log of the run
|
|
50
|
+
* (the root and each subflow mount) hands the sink its `opened` base, each commit, a note per attempt that ended,
|
|
51
|
+
* and its `closed` outcome. `fileSink(path)` (`footprintjs/sinks`, Node) or `memorySink()` (`foottrace/write`);
|
|
52
|
+
* read it back with `readStoredRecord` (`foottrace`). The redaction policy applies before any entry is written.
|
|
53
|
+
* A failing sink never stops the run (`onFailure: 'report'`, the default) — `getSnapshot().sink` counts what was
|
|
54
|
+
* lost. See the guide's "A crash-safe record".
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const executor = new FlowChartExecutor(chart, { sink: fileSink('/var/footprint/run.jsonl') });
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
sink?: RecordSinkOption;
|
|
47
62
|
/**
|
|
48
63
|
* Custom error classifier for throttling detection. Return `true` if a fork
|
|
49
64
|
* child's error represents a rate-limit or backpressure condition; the
|
|
@@ -70,6 +85,8 @@ export interface ExecutorArgs<TOut, TScope> {
|
|
|
70
85
|
scopeProtectionMode?: ScopeProtectionMode;
|
|
71
86
|
/** The dials as given (absent = default) — the run's policy is built from them per leg. */
|
|
72
87
|
dials: RunDials;
|
|
88
|
+
/** The record sink, resolved and checked at construction (10.1, P6). */
|
|
89
|
+
sink?: ResolvedRecordSink;
|
|
73
90
|
}
|
|
74
91
|
/**
|
|
75
92
|
* Resolve either constructor form. The 2-param form is the options form with
|