footprintjs 6.1.1 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CLAUDE.md +31 -26
  2. package/README.md +20 -1
  3. package/dist/advanced.js +2 -6
  4. package/dist/esm/advanced.js +1 -3
  5. package/dist/esm/lib/builder/structure/StructureRecorder.js +2 -2
  6. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +59 -24
  7. package/dist/esm/lib/recorder/InOutRecorder.js +31 -15
  8. package/dist/esm/lib/recorder/QualityRecorder.js +40 -13
  9. package/dist/esm/lib/recorder/RecorderOperation.js +3 -3
  10. package/dist/esm/lib/recorder/index.js +1 -8
  11. package/dist/esm/lib/recorder/qualityTrace.js +1 -1
  12. package/dist/esm/lib/runner/ExecutionRuntime.js +1 -1
  13. package/dist/esm/lib/scope/recorders/MetricRecorder.js +37 -9
  14. package/dist/esm/package.json +1 -0
  15. package/dist/esm/trace.js +1 -12
  16. package/dist/lib/builder/structure/StructureRecorder.js +2 -2
  17. package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +59 -24
  18. package/dist/lib/recorder/InOutRecorder.js +31 -15
  19. package/dist/lib/recorder/QualityRecorder.js +40 -13
  20. package/dist/lib/recorder/RecorderOperation.js +3 -3
  21. package/dist/lib/recorder/index.js +2 -12
  22. package/dist/lib/recorder/qualityTrace.js +1 -1
  23. package/dist/lib/runner/ExecutionRuntime.js +1 -1
  24. package/dist/lib/scope/recorders/MetricRecorder.js +37 -9
  25. package/dist/trace.js +2 -16
  26. package/dist/types/advanced.d.ts +0 -2
  27. package/dist/types/lib/builder/structure/StructureRecorder.d.ts +1 -1
  28. package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +26 -5
  29. package/dist/types/lib/recorder/InOutRecorder.d.ts +17 -6
  30. package/dist/types/lib/recorder/QualityRecorder.d.ts +17 -3
  31. package/dist/types/lib/recorder/RecorderOperation.d.ts +2 -2
  32. package/dist/types/lib/recorder/index.d.ts +0 -3
  33. package/dist/types/lib/recorder/qualityTrace.d.ts +5 -2
  34. package/dist/types/lib/runner/ExecutionRuntime.d.ts +1 -1
  35. package/dist/types/lib/scope/recorders/MetricRecorder.d.ts +18 -3
  36. package/dist/types/trace.d.ts +0 -3
  37. package/package.json +3 -2
  38. package/dist/esm/lib/recorder/BoundaryStateTracker.js +0 -260
  39. package/dist/esm/lib/recorder/KeyedRecorder.js +0 -94
  40. package/dist/esm/lib/recorder/SequenceRecorder.js +0 -193
  41. package/dist/lib/recorder/BoundaryStateTracker.js +0 -264
  42. package/dist/lib/recorder/KeyedRecorder.js +0 -98
  43. package/dist/lib/recorder/SequenceRecorder.js +0 -197
  44. package/dist/types/lib/recorder/BoundaryStateTracker.d.ts +0 -212
  45. package/dist/types/lib/recorder/KeyedRecorder.d.ts +0 -56
  46. package/dist/types/lib/recorder/SequenceRecorder.d.ts +0 -112
package/CLAUDE.md CHANGED
@@ -296,7 +296,6 @@ const llmCommit = findCommit(commitLog, 'call-llm', 'adapterRawResponse');
296
296
  | `SequenceStore<T>` | class | **Primary** 1:N ordered store (has `getEntryRanges()` for O(1) time-travel) |
297
297
  | `BoundaryStateStore<T>` | class | **Primary** transient bracket-scoped state store |
298
298
  | `CommitRangeIndex<TLabel>` | class | Interval index over commit indices (`open`/`close`/`enclosing`/`overlapping`) |
299
- | `KeyedRecorder<T>` / `SequenceRecorder<T>` / `BoundaryStateTracker<T>` | abstract classes (DEPRECATED) | Legacy bases — migrate to the stores above |
300
299
  | `topologyRecorder()` / `TopologyRecorder` | factory / class | Live composition graph for streaming consumers (subflow nodes + control-flow edges) |
301
300
  | `inOutRecorder()` / `InOutRecorder` | factory / class | Chart in/out stream — `entry`/`exit` pairs at every chart boundary (top-level run + every subflow) |
302
301
  | `QualityRecorder` + `qualityTrace`/`formatQualityTrace` | class / functions | Per-step quality scoring + Quality Stack Trace backtracking |
@@ -331,7 +330,7 @@ flowChart() builder → STATIC flowchart (design-time definition)
331
330
 
332
331
  **What it ISN'T:**
333
332
  - Not a full execution tree — that's `StageContext` / `executor.getSnapshot()`
334
- - Not per-stage data — that's `MetricRecorder` / custom `KeyedRecorder<T>`
333
+ - Not per-stage data — that's `MetricRecorder` / a custom recorder composing `KeyedStore<T>`
335
334
  - Not agent-specific — agentfootprint composes it; footprintjs owns it
336
335
 
337
336
  **Why live consumers need it:** The executor already has the topology internally (execution tree in `StageContext`). But streaming consumers can't access that tree mid-run — they only see events. `TopologyRecorder` = "the tree, reconstructed from events, live-queryable."
@@ -403,7 +402,7 @@ Each chart execution → 2 boundaries:
403
402
  Loop re-entry produces distinct pairs because the parent stage's executionIndex increments.
404
403
 
405
404
  **What it IS:**
406
- - `SequenceRecorder<InOutEntry>` — flat ordered list + per-`runtimeStageId` index
405
+ - composes `SequenceStore<InOutEntry>` — flat ordered list + per-`runtimeStageId` index
407
406
  - Captures the **payloads** at every chart boundary (what flowed IN and OUT)
408
407
  - Path-aware: `subflowPath` is decomposed from the engine's path-prefixed `subflowId` and rooted under `__root__`
409
408
  - Domain-agnostic — knows nothing about LLMs, tools, agents
@@ -451,39 +450,45 @@ inOut.getEntryRanges(); // O(1) per-step range index for time-trave
451
450
 
452
451
  Example: [examples/runtime-features/flow-recorder/07-inout.ts](examples/runtime-features/flow-recorder/07-inout.ts)
453
452
 
454
- **Two recorder base classes (DEPRECATED v5 migration window, slated for removal)** — choose based on data shape. New code MUST use the v5 stores instead (own a `KeyedStore<T>` / `SequenceStore<T>` / `BoundaryStateStore<T>` field and implement the channel interface yourselfsee "Project conventions" Convention 1). These bases are kept only for downstream consumers that still extend them:
453
+ **Three storage primitives (the v5 recorder model)** — choose by data shape. A recorder OWNS a store as a field and implements its channel interface (Convention 1 — "one purpose per recorder"). There are NO abstract base classes; composition is the only model.
455
454
 
456
- | Base Class | Store replacement | Relationship | Use When |
457
- |------------|-------------------|-------------|----------|
458
- | `KeyedRecorder<T>` | `KeyedStore<T>` | 1:1 Map | Each step produces one record (MetricRecorder, TokenRecorder) |
459
- | `SequenceRecorder<T>` | `SequenceStore<T>` | 1:N sequence + Map | Multiple records per step, ordering matters (CombinedNarrativeRecorder) |
460
- | `BoundaryStateTracker<T>` | `BoundaryStateStore<T>` | bracket-scoped state | Live transient state during a `[start, stop]` event interval |
455
+ | Store | Relationship | Use When |
456
+ |-------|-------------|----------|
457
+ | `KeyedStore<T>` | 1:1 Map | Each step produces one record (MetricRecorder, TokenRecorder) |
458
+ | `SequenceStore<T>` | 1:N sequence + Map | Multiple records per step, ordering matters (CombinedNarrativeRecorder) |
459
+ | `BoundaryStateStore<T>` | bracket-scoped state | Live transient state during a `[start, stop]` event interval |
461
460
 
462
461
  ```typescript
463
- import { KeyedRecorder, SequenceRecorder } from 'footprintjs/trace';
462
+ import { KeyedStore, SequenceStore } from 'footprintjs/trace';
463
+ import type { ScopeRecorder } from 'footprintjs';
464
464
 
465
- // KeyedRecorder: one entry per step
466
- class TokenRecorder extends KeyedRecorder<TokenEntry> {
465
+ // KeyedStore: one entry per step
466
+ class TokenRecorder implements ScopeRecorder {
467
467
  readonly id = 'tokens';
468
- onLLMCall(event) { this.store(event.runtimeStageId, { tokens: event.usage }); }
468
+ private readonly store = new KeyedStore<TokenEntry>();
469
+ onLLMCall(event) { this.store.set(event.runtimeStageId, { tokens: event.usage }); }
470
+
471
+ getForStep(id) { return this.store.get(id); } // Translate: per-step value
472
+ getTotal() { return this.store.aggregate((sum, e) => sum + e.tokens, 0); } // Aggregate: grand total
473
+ getUpTo(keys) { return this.store.accumulate((sum, e) => sum + e.tokens, 0, keys); } // Accumulate: up to slider
474
+ clear() { this.store.clear(); }
469
475
  }
470
- recorder.getByKey('call-llm#5'); // Translate: per-step value
471
- recorder.aggregate((sum, e) => sum + e.tokens, 0); // Aggregate: grand total
472
- recorder.accumulate((sum, e) => sum + e.tokens, 0, visibleKeys); // Accumulate: up to slider
473
476
 
474
- // SequenceRecorder: multiple entries per step, ordered
475
- class AuditRecorder extends SequenceRecorder<AuditEntry> {
477
+ // SequenceStore: multiple entries per step, ordered
478
+ class AuditRecorder implements ScopeRecorder {
476
479
  readonly id = 'audit';
477
- onRead(event) { this.emit({ runtimeStageId: event.runtimeStageId, type: 'read', key: event.key }); }
478
- onDecision(event) { this.emit({ runtimeStageId: event.traversalContext?.runtimeStageId, ... }); }
480
+ private readonly store = new SequenceStore<AuditEntry>();
481
+ onRead(event) { this.store.push({ runtimeStageId: event.runtimeStageId, type: 'read', key: event.key }); }
482
+
483
+ getForStep(id) { return this.store.getByKey(id); } // Translate: per-step entries
484
+ getCount() { return this.store.aggregate((count, _) => count + 1, 0); } // Aggregate: grand total
485
+ getUpTo(keys) { return this.store.getEntriesUpTo(keys); } // Progressive: up to slider
486
+ getRanges() { return this.store.getEntryRanges(); } // Range index: O(1) slider sync
487
+ clear() { this.store.clear(); }
479
488
  }
480
- recorder.getEntriesForStep('call-llm#5'); // Translate: per-step entries
481
- recorder.aggregate((count, _) => count + 1, 0); // Aggregate: grand total
482
- recorder.getEntriesUpTo(visibleKeys); // Progressive: up to slider
483
- recorder.getEntryRanges(); // Range index: O(1) slider sync
484
489
  ```
485
490
 
486
- **`getEntryRanges()`** returns a precomputed `Map<runtimeStageId, {firstIdx, endIdx}>` maintained during `emit()`. Use for O(1) per-step range lookups during time-travel scrubbing. Same shape as `buildEntryRangeIndex()` in `footprint-explainable-ui`.
491
+ **`getEntryRanges()`** returns a precomputed `Map<runtimeStageId, {firstIdx, endIdx}>` maintained during `push()`. Use for O(1) per-step range lookups during time-travel scrubbing. Same shape as `buildEntryRangeIndex()` in `footprint-explainable-ui`.
487
492
 
488
493
  **`CombinedNarrativeEntry.direction`** — subflow entries carry `direction: 'entry' | 'exit'`. Use for programmatic subflow boundary detection instead of text scanning (which breaks with custom `NarrativeRenderer`).
489
494
 
@@ -701,7 +706,7 @@ A recorder owns exactly ONE concern (storage, OR event ingestion, OR state machi
701
706
 
702
707
  Use composition: own a `SequenceStore<T>` / `KeyedStore<T>` / `BoundaryStateStore<T>` field, implement the relevant `ScopeRecorder` / `FlowRecorder` / `EmitRecorder` / `CombinedRecorder` interface, delegate event handling to internal helpers, delegate storage to the store. See `examples/recorders/` for canonical patterns.
703
708
 
704
- Inheritance is allowed only when the subclass adds NO behavior beyond what the base provides pure storage extension is fine, mixing in state machines is not. The abstract base classes (`SequenceRecorder`, `KeyedRecorder`, `BoundaryStateTracker`) exported during the v5 migration window are slated for removal — new code MUST use stores.
709
+ Composition is the ONLY recorder model. The abstract base classes (`SequenceRecorder`, `KeyedRecorder`, `BoundaryStateTracker`) were removed in 7.0.0 there is no inheritance path. Every recorder (including the built-ins `MetricRecorder`, `QualityRecorder`, `InOutRecorder`, `CombinedNarrativeRecorder`) owns a store as a field.
705
710
 
706
711
  ### Convention 2 — Examples are mandatory integration tests
707
712
 
package/README.md CHANGED
@@ -9,6 +9,8 @@
9
9
  <a href="https://github.com/footprintjs/footPrint/actions"><img src="https://github.com/footprintjs/footPrint/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
10
10
  <!-- coverage-badge --><img src="https://img.shields.io/badge/coverage-93%25-brightgreen.svg" alt="coverage: 93%"><!-- /coverage-badge -->
11
11
  <a href="https://www.npmjs.com/package/footprintjs"><img src="https://img.shields.io/npm/v/footprintjs.svg?style=flat" alt="npm version"></a>
12
+ <a href="https://bundlephobia.com/package/footprintjs"><img src="https://img.shields.io/bundlephobia/minzip/footprintjs?label=minzipped" alt="minzipped size"></a>
13
+ <a href="#tree-shakeable--esm-first"><img src="https://img.shields.io/badge/tree--shakeable-%E2%9C%93-success?style=flat" alt="tree-shakeable"></a>
12
14
  <a href="https://github.com/footprintjs/footPrint/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License"></a>
13
15
  <a href="https://www.npmjs.com/package/footprintjs"><img src="https://img.shields.io/npm/dm/footprintjs.svg" alt="Downloads"></a>
14
16
  <a href="https://footprintjs.github.io/footprint-playground/samples/llm-agent-tool"><img src="https://img.shields.io/badge/Try_with_LLM-Live_Demo-7c6cf0?style=flat" alt="Try with LLM"></a>
@@ -166,7 +168,24 @@ The LLM calls the tool, gets back the decision and causal trace, and explains th
166
168
  | **Subflow break propagation** | Mount a subflow with `propagateBreak: true` &mdash; inner `$break` terminates the parent loop, with drill-down preserved |
167
169
  | **Emit channel** | `scope.$emit(name, payload)` &mdash; user-authored structured events to `EmitRecorder`, pass-through, zero-allocation when no recorder attached, redactable via `emitPatterns` |
168
170
  | **Detach** *(new in 4.17)* | `scope.$detachAndForget(driver, child, input)` and `scope.$detachAndJoinLater(driver, child, input)` &mdash; fire-and-forget child flowcharts via the `footprintjs/detach` subpath. Six built-in drivers (microtask / immediate / setImmediate / setTimeout / sendBeacon / workerThread) + custom-driver protocol. Builder-native composition (`addDetachAndForget` / `addDetachAndJoinLater`) makes detach a labeled chart stage. `flushAllDetached()` for graceful shutdown. [Guide →](https://footprintjs.github.io/footPrint/guides/patterns/detach/) |
169
- | **Recorder storage primitives** | `BoundaryStateStore<TState>` &mdash; one of three composable storage shelves alongside `SequenceStore<T>` (durable ordered, with `getEntryRanges()`) and `KeyedStore<T>` (durable 1:1). `BoundaryStateStore` tracks live transient state DURING a `[start, stop]` event interval (LLM stream partial, tool args streaming, agent turn state) and clears on stop. O(1) reads via `get` / `hasActive` / `activeCount`. Mental model: recorder *interfaces* (`ScopeRecorder` / `FlowRecorder` / `EmitRecorder`) are observers; stores are *bookkeeping shelves*. A real recorder picks ONE observer interface and OWNS the store as a field (composition &mdash; "one purpose per recorder"). The `Store` classes are exported from `footprintjs/trace`. (Older `KeyedRecorder` / `SequenceRecorder` / `BoundaryStateTracker` abstract bases are deprecated and slated for removal &mdash; use the stores.) [Guide →](https://footprintjs.github.io/footPrint/guides/features/recorder-storage-primitives/) |
171
+ | **Recorder storage primitives** | `BoundaryStateStore<TState>` &mdash; one of three composable storage shelves alongside `SequenceStore<T>` (durable ordered, with `getEntryRanges()`) and `KeyedStore<T>` (durable 1:1). `BoundaryStateStore` tracks live transient state DURING a `[start, stop]` event interval (LLM stream partial, tool args streaming, agent turn state) and clears on stop. O(1) reads via `get` / `hasActive` / `activeCount`. Mental model: recorder *interfaces* (`ScopeRecorder` / `FlowRecorder` / `EmitRecorder`) are observers; stores are *bookkeeping shelves*. A real recorder picks ONE observer interface and OWNS the store as a field (composition &mdash; "one purpose per recorder"). The `Store` classes are exported from `footprintjs/trace` and are the only recorder-storage model &mdash; there are no abstract base classes to extend. [Guide →](https://footprintjs.github.io/footPrint/guides/features/recorder-storage-primitives/) |
172
+
173
+ ---
174
+
175
+ ## Tree-shakeable & ESM-first
176
+
177
+ Import one thing, ship one thing. footprintjs is built so your bundle grows only with what you actually use:
178
+
179
+ - **Dual build, true ESM.** Ships CommonJS (`require`) **and** real ECMAScript Modules (`import`) with TypeScript types. The ESM build is marked `type:module` and every internal import carries an explicit `.js` extension, so it loads as true ESM under Node, Vite, Next, Deno, and Bun — no compatibility shims.
180
+ - **Per-file modules + `sideEffects:false`.** The dist is emitted file-by-file (never pre-bundled) and declares zero side effects, so bundlers can drop every export you don't touch.
181
+ - **Subpath exports.** Pull execution tracing from `footprintjs/trace`, fire-and-forget children from `footprintjs/detach`, engine internals from `footprintjs/advanced` — each is independently tree-shakeable.
182
+
183
+ **Proven, not promised.** A CI smoke test bundles a minimal `import { flowChart } from 'footprintjs'` and asserts the recorder, detach, and trace layers are pruned — your flowchart core doesn't drag them in. See [`test/esm-packaging.test.ts`](test/esm-packaging.test.ts).
184
+
185
+ ```ts
186
+ // Only flowChart? The recorder/detach/trace layers are tree-shaken away.
187
+ import { flowChart } from 'footprintjs';
188
+ ```
170
189
 
171
190
  ---
172
191
 
package/dist/advanced.js CHANGED
@@ -22,7 +22,7 @@
22
22
  */
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.createSubflowHandlerDeps = exports.ContinuationResolver = exports.computeNodeType = exports.ChildrenExecutor = exports.applyOutputMapping = exports.NullControlFlowNarrativeGenerator = exports.isStageNodeReturn = exports.FlowchartTraverser = exports.shouldWrapWithProxy = exports.SCOPE_METHOD_NAMES = exports.joinPath = exports.createArrayProxy = exports.buildNestedPatch = exports.BREAK_SETTER = exports.ExecutionRuntime = exports.ZodScopeResolver = exports.isScopeSchema = exports.defineScopeSchema = exports.createScopeProxyFromZod = exports.toScopeFactory = exports.resolveScopeProvider = exports.registerScopeResolver = exports.makeFactoryProvider = exports.makeClassProvider = exports.looksLikeFactory = exports.looksLikeClassCtor = exports.isSubclassOfScopeFacade = exports.attachScopeMethods = exports.ScopeFacade = exports.createProtectedScope = exports.createErrorMessage = exports.createTypedScopeFactory = exports.specToStageNode = exports.SelectorFnList = exports.DeciderList = exports.ArrayMergeMode = exports.updateValue = exports.updateNestedValue = exports.setNestedValue = exports.redactPatch = exports.normalisePath = exports.getRunAndGlobalPaths = exports.getNestedValue = exports.deepSmartMerge = exports.applySmartMerge = exports.DiagnosticCollector = exports.TransactionBuffer = exports.EventLog = exports.StageContext = exports.SharedMemory = void 0;
25
- exports.KeyedRecorder = exports.BoundaryStateTracker = exports.findLastWriter = exports.findCommits = exports.findCommit = exports.parseRuntimeStageId = exports.createExecutionCounter = exports.buildRuntimeStageId = exports.SubflowExecutor = exports.StageRunner = exports.SelectorHandler = exports.seedSubflowGlobalStore = exports.RuntimeStructureManager = exports.NodeResolver = exports.getInitialScopeValues = exports.extractParentScopeValues = exports.DEFAULT_MAX_ITERATIONS = exports.DeciderHandler = void 0;
25
+ exports.findLastWriter = exports.findCommits = exports.findCommit = exports.parseRuntimeStageId = exports.createExecutionCounter = exports.buildRuntimeStageId = exports.SubflowExecutor = exports.StageRunner = exports.SelectorHandler = exports.seedSubflowGlobalStore = exports.RuntimeStructureManager = exports.NodeResolver = exports.getInitialScopeValues = exports.extractParentScopeValues = exports.DEFAULT_MAX_ITERATIONS = exports.DeciderHandler = void 0;
26
26
  var index_js_1 = require("./lib/memory/index.js");
27
27
  Object.defineProperty(exports, "SharedMemory", { enumerable: true, get: function () { return index_js_1.SharedMemory; } });
28
28
  var index_js_2 = require("./lib/memory/index.js");
@@ -109,8 +109,4 @@ var commitLogUtils_js_1 = require("./lib/memory/commitLogUtils.js");
109
109
  Object.defineProperty(exports, "findCommit", { enumerable: true, get: function () { return commitLogUtils_js_1.findCommit; } });
110
110
  Object.defineProperty(exports, "findCommits", { enumerable: true, get: function () { return commitLogUtils_js_1.findCommits; } });
111
111
  Object.defineProperty(exports, "findLastWriter", { enumerable: true, get: function () { return commitLogUtils_js_1.findLastWriter; } });
112
- var BoundaryStateTracker_js_1 = require("./lib/recorder/BoundaryStateTracker.js");
113
- Object.defineProperty(exports, "BoundaryStateTracker", { enumerable: true, get: function () { return BoundaryStateTracker_js_1.BoundaryStateTracker; } });
114
- var KeyedRecorder_js_1 = require("./lib/recorder/KeyedRecorder.js");
115
- Object.defineProperty(exports, "KeyedRecorder", { enumerable: true, get: function () { return KeyedRecorder_js_1.KeyedRecorder; } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNIOzs7Ozs7O0dBT0c7Ozs7QUFjSCxrREFBcUQ7QUFBNUMsd0dBQUEsWUFBWSxPQUFBO0FBQ3JCLGtEQUFxRDtBQUE1Qyx3R0FBQSxZQUFZLE9BQUE7QUFDckIsa0RBQWlEO0FBQXhDLG9HQUFBLFFBQVEsT0FBQTtBQUNqQixrREFBMEQ7QUFBakQsNkdBQUEsaUJBQWlCLE9BQUE7QUFDMUIsa0RBQTREO0FBQW5ELCtHQUFBLG1CQUFtQixPQUFBO0FBQzVCLGtEQVUrQjtBQVQ3QiwyR0FBQSxlQUFlLE9BQUE7QUFDZiwwR0FBQSxjQUFjLE9BQUE7QUFDZCwwR0FBQSxjQUFjLE9BQUE7QUFDZCxnSEFBQSxvQkFBb0IsT0FBQTtBQUNwQix5R0FBQSxhQUFhLE9BQUE7QUFDYix1R0FBQSxXQUFXLE9BQUE7QUFDWCwwR0FBQSxjQUFjLE9BQUE7QUFDZCw2R0FBQSxpQkFBaUIsT0FBQTtBQUNqQix1R0FBQSxXQUFXLE9BQUE7QUF1QmIsbURBQXNHO0FBQTdGLDBHQUFBLGNBQWMsT0FBQTtBQUFFLHVHQUFBLFdBQVcsT0FBQTtBQUFFLDBHQUFBLGNBQWMsT0FBQTtBQUFFLDJHQUFBLGVBQWUsT0FBQTtBQUNyRSxxRUFBMEU7QUFBakUsNEhBQUEsdUJBQXVCLE9BQUE7QUFhaEMsaURBQTZGO0FBQXBGLDhHQUFBLGtCQUFrQixPQUFBO0FBQUUsZ0hBQUEsb0JBQW9CLE9BQUE7QUFBRSx1R0FBQSxXQUFXLE9BQUE7QUFDOUQsaURBVThCO0FBVDVCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLG1IQUFBLHVCQUF1QixPQUFBO0FBQ3ZCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDRHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDZHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLCtHQUFBLG1CQUFtQixPQUFBO0FBQ25CLGlIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLGdIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDBHQUFBLGNBQWMsT0FBQTtBQWVoQixnQkFBZ0I7QUFDaEIsa0RBQW1IO0FBQTFHLG9IQUFBLHVCQUF1QixPQUFBO0FBQUUsOEdBQUEsaUJBQWlCLE9BQUE7QUFBRSwwR0FBQSxhQUFhLE9BQUE7QUFBRSw2R0FBQSxnQkFBZ0IsT0FBQTtBQU9wRixtREFBeUQ7QUFBaEQsNkdBQUEsZ0JBQWdCLE9BQUE7QUFPekIscURBT2lDO0FBTi9CLHlHQUFBLFlBQVksT0FBQTtBQUNaLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLHFHQUFBLFFBQVEsT0FBQTtBQUNSLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLGdIQUFBLG1CQUFtQixPQUFBO0FBU3JCLG1EQUEyRDtBQUFsRCwrR0FBQSxrQkFBa0IsT0FBQTtBQUMzQixtREFBMEQ7QUFBakQsOEdBQUEsaUJBQWlCLE9BQUE7QUFtQjFCLG1EQUEwRTtBQUFqRSw4SEFBQSxpQ0FBaUMsT0FBQTtBQUkxQyxtREFnQitCO0FBZjdCLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDRHQUFBLGVBQWUsT0FBQTtBQUNmLGlIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLHFIQUFBLHdCQUF3QixPQUFBO0FBQ3hCLDJHQUFBLGNBQWMsT0FBQTtBQUNkLG1IQUFBLHNCQUFzQixPQUFBO0FBQ3RCLHFIQUFBLHdCQUF3QixPQUFBO0FBQ3hCLGtIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLHlHQUFBLFlBQVksT0FBQTtBQUNaLG9IQUFBLHVCQUF1QixPQUFBO0FBQ3ZCLG1IQUFBLHNCQUFzQixPQUFBO0FBQ3RCLDRHQUFBLGVBQWUsT0FBQTtBQUNmLHdHQUFBLFdBQVcsT0FBQTtBQUNYLDRHQUFBLGVBQWUsT0FBQTtBQUtqQixvRUFBa0g7QUFBekcsd0hBQUEsbUJBQW1CLE9BQUE7QUFBRSwySEFBQSxzQkFBc0IsT0FBQTtBQUFFLHdIQUFBLG1CQUFtQixPQUFBO0FBQ3pFLG9FQUF5RjtBQUFoRiwrR0FBQSxVQUFVLE9BQUE7QUFBRSxnSEFBQSxXQUFXLE9BQUE7QUFBRSxtSEFBQSxjQUFjLE9BQUE7QUFDaEQsa0ZBQThFO0FBQXJFLCtIQUFBLG9CQUFvQixPQUFBO0FBQzdCLG9FQUFnRTtBQUF2RCxpSEFBQSxhQUFhLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGZvb3RwcmludGpzL2FkdmFuY2VkIOKAlCBMb3ctbGV2ZWwgaW50ZXJuYWxzIGZvciBjdXN0b20gZXhlY3V0aW9uIGVuZ2luZXMgYW5kIHRlc3RpbmcuXG4gKlxuICogTW9zdCB1c2VycyBuZXZlciBuZWVkIHRoaXMuIFVzZSBgZm9vdHByaW50anNgIChtYWluKSBpbnN0ZWFkLlxuICogVGhpcyBlbnRyeSBwb2ludCBleHBvc2VzIGBTaGFyZWRNZW1vcnlgLCBgU3RhZ2VDb250ZXh0YCwgYEZsb3djaGFydFRyYXZlcnNlcmAsXG4gKiBhbmQgb3RoZXIgcHJpbWl0aXZlcyB0aGF0IHBvd2VyIHRoZSBlbmdpbmUuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IFNoYXJlZE1lbW9yeSwgU3RhZ2VDb250ZXh0IH0gZnJvbSAnZm9vdHByaW50anMvYWR2YW5jZWQnO1xuICogYGBgXG4gKlxuICogQG1vZHVsZSBhZHZhbmNlZFxuICovXG4vKipcbiAqIEZvb3RQcmludCDigJQgQWR2YW5jZWQgLyBJbnRlcm5hbCBBUElcbiAqXG4gKiBUaGVzZSBleHBvcnRzIGFyZSBmb3IgYWR2YW5jZWQgdXNlIGNhc2VzLCB0ZXN0aW5nLCBhbmQgYnVpbGRpbmdcbiAqIGN1c3RvbSBleGVjdXRpb24gZW5naW5lcy4gTW9zdCB1c2VycyBzaG91bGQgdXNlIHRoZSBtYWluICdmb290cHJpbnQnIGVudHJ5IHBvaW50LlxuICpcbiAqIEltcG9ydCB2aWE6IGltcG9ydCB7IC4uLiB9IGZyb20gJ2Zvb3RwcmludC9hZHZhbmNlZCdcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW1vcnkg4oCUIExvdy1sZXZlbCB0cmFuc2FjdGlvbmFsIHN0YXRlIHByaW1pdGl2ZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBDb21taXRCdW5kbGUsXG4gIEZsb3dDb250cm9sVHlwZSxcbiAgRmxvd01lc3NhZ2UsXG4gIE1lbW9yeVBhdGNoLFxuICBTdGFnZVNuYXBzaG90LFxuICBUcmFjZUVudHJ5LFxufSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgU2hhcmVkTWVtb3J5IH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBFdmVudExvZyB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1ZmZlciB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBEaWFnbm9zdGljQ29sbGVjdG9yIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5U21hcnRNZXJnZSxcbiAgZGVlcFNtYXJ0TWVyZ2UsXG4gIGdldE5lc3RlZFZhbHVlLFxuICBnZXRSdW5BbmRHbG9iYWxQYXRocyxcbiAgbm9ybWFsaXNlUGF0aCxcbiAgcmVkYWN0UGF0Y2gsXG4gIHNldE5lc3RlZFZhbHVlLFxuICB1cGRhdGVOZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlVmFsdWUsXG59IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1aWxkZXIg4oCUIFR5cGVzIGFuZCBpbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBFeGVjT3B0aW9ucyxcbiAgRmxvd0NoYXJ0T3B0aW9ucyxcbiAgRmxvd0NoYXJ0U3BlYyxcbiAgSUxvZ2dlcixcbiAgU2NvcGVQcm90ZWN0aW9uTW9kZSxcbiAgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBTaW1wbGlmaWVkUGFyYWxsZWxTcGVjLFxuICBTdGFnZUZuLFxuICBTdGFnZU5vZGUsXG4gIFN0cmVhbUNhbGxiYWNrLFxuICBTdHJlYW1MaWZlY3ljbGVIYW5kbGVyLFxuICBTdHJlYW1Ub2tlbkhhbmRsZXIsXG4gIFN1YmZsb3dNb3VudE9wdGlvbnMsXG4gIFN1YmZsb3dSZWYsXG59IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgQXJyYXlNZXJnZU1vZGUsIERlY2lkZXJMaXN0LCBTZWxlY3RvckZuTGlzdCwgc3BlY1RvU3RhZ2VOb2RlIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5leHBvcnQgeyBjcmVhdGVUeXBlZFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZSDigJQgUHJvdmlkZXJzLCBwcm90ZWN0aW9uLCByZWNvcmRlciBvcHRpb25zLCBhbmQgZXZlbnQgdHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBQcm92aWRlclJlc29sdmVyLFxuICBSZXNvbHZlT3B0aW9ucyxcbiAgU2NvcGVQcm92aWRlcixcbiAgU3RhZ2VDb250ZXh0TGlrZSxcbiAgU3RyaWN0TW9kZSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHsgY3JlYXRlRXJyb3JNZXNzYWdlLCBjcmVhdGVQcm90ZWN0ZWRTY29wZSwgU2NvcGVGYWNhZGUgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhdHRhY2hTY29wZU1ldGhvZHMsXG4gIGlzU3ViY2xhc3NPZlNjb3BlRmFjYWRlLFxuICBsb29rc0xpa2VDbGFzc0N0b3IsXG4gIGxvb2tzTGlrZUZhY3RvcnksXG4gIG1ha2VDbGFzc1Byb3ZpZGVyLFxuICBtYWtlRmFjdG9yeVByb3ZpZGVyLFxuICByZWdpc3RlclNjb3BlUmVzb2x2ZXIsXG4gIHJlc29sdmVTY29wZVByb3ZpZGVyLFxuICB0b1Njb3BlRmFjdG9yeSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBTY29wZVJlY29yZGVyIGNvbmZpZy9vcHRpb24gdHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQWdncmVnYXRlZE1ldHJpY3MsXG4gIERlYnVnRW50cnksXG4gIERlYnVnUmVjb3JkZXJPcHRpb25zLFxuICBEZWJ1Z1ZlcmJvc2l0eSxcbiAgRGVmaW5lU2NvcGVPcHRpb25zLFxuICBSZWNvcmRlckNvbnRleHQsXG4gIFN0YWdlRXZlbnQsXG4gIFN0YWdlTWV0cmljcyxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBab2QgaW50ZXJuYWxzXG5leHBvcnQgeyBjcmVhdGVTY29wZVByb3h5RnJvbVpvZCwgZGVmaW5lU2NvcGVTY2hlbWEsIGlzU2NvcGVTY2hlbWEsIFpvZFNjb3BlUmVzb2x2ZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJ1bm5lciDigJQgSW50ZXJuYWxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgUnVudGltZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcbmV4cG9ydCB7IEV4ZWN1dGlvblJ1bnRpbWUgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSZWFjdGl2ZSDigJQgVHlwZWRTY29wZSBpbnRlcm5hbHMgKGZvciBjdXN0b20gcHJveHkgaW1wbGVtZW50YXRpb25zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFJlYWN0aXZlT3B0aW9ucywgUmVhY3RpdmVUYXJnZXQgfSBmcm9tICcuL2xpYi9yZWFjdGl2ZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBCUkVBS19TRVRURVIsXG4gIGJ1aWxkTmVzdGVkUGF0Y2gsXG4gIGNyZWF0ZUFycmF5UHJveHksXG4gIGpvaW5QYXRoLFxuICBTQ09QRV9NRVRIT0RfTkFNRVMsXG4gIHNob3VsZFdyYXBXaXRoUHJveHksXG59IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRW5naW5lIOKAlCBERlMgZ3JhcGggdHJhdmVyc2FsIGludGVybmFsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFRyYXZlcnNlck9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUgeyBEZWNpZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IEZsb3djaGFydFRyYXZlcnNlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBpc1N0YWdlTm9kZVJldHVybiB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIE5hcnJhdGl2ZSBpbnRlcm5hbHNcbmV4cG9ydCB0eXBlIHsgSUNvbnRyb2xGbG93TmFycmF0aXZlIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSwgQ29tYmluZWROYXJyYXRpdmVPcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQnJhbmNoUmVzdWx0LFxuICBCcmFuY2hSZXN1bHRzLFxuICBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUgYXMgRW5naW5lU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBIYW5kbGVyRGVwcyxcbiAgSUV4ZWN1dGlvblJ1bnRpbWUsXG4gIE5vZGVSZXN1bHRUeXBlLFxuICBSdW50aW1lU3RydWN0dXJlTWV0YWRhdGEsXG4gIFNjb3BlRmFjdG9yeSxcbiAgU2VyaWFsaXplZFBpcGVsaW5lTm9kZSxcbiAgU3RhZ2VGdW5jdGlvbixcbiAgU3ViZmxvd1Jlc3VsdCxcbiAgVHJhdmVyc2FsUmVzdWx0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgTnVsbENvbnRyb2xGbG93TmFycmF0aXZlR2VuZXJhdG9yIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gSGFuZGxlcnMgKHRlc3RpbmcgLyBjdXN0b20gZW5naW5lcylcbmV4cG9ydCB0eXBlIHsgRXhlY3V0ZU5vZGVGbiwgUnVuU3RhZ2VGbiB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhcHBseU91dHB1dE1hcHBpbmcsXG4gIENoaWxkcmVuRXhlY3V0b3IsXG4gIGNvbXB1dGVOb2RlVHlwZSxcbiAgQ29udGludWF0aW9uUmVzb2x2ZXIsXG4gIGNyZWF0ZVN1YmZsb3dIYW5kbGVyRGVwcyxcbiAgRGVjaWRlckhhbmRsZXIsXG4gIERFRkFVTFRfTUFYX0lURVJBVElPTlMsXG4gIGV4dHJhY3RQYXJlbnRTY29wZVZhbHVlcyxcbiAgZ2V0SW5pdGlhbFNjb3BlVmFsdWVzLFxuICBOb2RlUmVzb2x2ZXIsXG4gIFJ1bnRpbWVTdHJ1Y3R1cmVNYW5hZ2VyLFxuICBzZWVkU3ViZmxvd0dsb2JhbFN0b3JlLFxuICBTZWxlY3RvckhhbmRsZXIsXG4gIFN0YWdlUnVubmVyLFxuICBTdWJmbG93RXhlY3V0b3IsXG59IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIFRyYWNlIHV0aWxpdGllcyDigJQgcmUtZXhwb3J0ZWQgaGVyZSBmb3IgY29udmVuaWVuY2UuIENhbm9uaWNhbCBwYXRoOiAnZm9vdHByaW50anMvdHJhY2UnXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvbkNvdW50ZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvcnVudGltZVN0YWdlSWQuanMnO1xuZXhwb3J0IHsgYnVpbGRSdW50aW1lU3RhZ2VJZCwgY3JlYXRlRXhlY3V0aW9uQ291bnRlciwgcGFyc2VSdW50aW1lU3RhZ2VJZCB9IGZyb20gJy4vbGliL2VuZ2luZS9ydW50aW1lU3RhZ2VJZC5qcyc7XG5leHBvcnQgeyBmaW5kQ29tbWl0LCBmaW5kQ29tbWl0cywgZmluZExhc3RXcml0ZXIgfSBmcm9tICcuL2xpYi9tZW1vcnkvY29tbWl0TG9nVXRpbHMuanMnO1xuZXhwb3J0IHsgQm91bmRhcnlTdGF0ZVRyYWNrZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Cb3VuZGFyeVN0YXRlVHJhY2tlci5qcyc7XG5leHBvcnQgeyBLZXllZFJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvS2V5ZWRSZWNvcmRlci5qcyc7XG4iXX0=
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNIOzs7Ozs7O0dBT0c7Ozs7QUFjSCxrREFBcUQ7QUFBNUMsd0dBQUEsWUFBWSxPQUFBO0FBQ3JCLGtEQUFxRDtBQUE1Qyx3R0FBQSxZQUFZLE9BQUE7QUFDckIsa0RBQWlEO0FBQXhDLG9HQUFBLFFBQVEsT0FBQTtBQUNqQixrREFBMEQ7QUFBakQsNkdBQUEsaUJBQWlCLE9BQUE7QUFDMUIsa0RBQTREO0FBQW5ELCtHQUFBLG1CQUFtQixPQUFBO0FBQzVCLGtEQVUrQjtBQVQ3QiwyR0FBQSxlQUFlLE9BQUE7QUFDZiwwR0FBQSxjQUFjLE9BQUE7QUFDZCwwR0FBQSxjQUFjLE9BQUE7QUFDZCxnSEFBQSxvQkFBb0IsT0FBQTtBQUNwQix5R0FBQSxhQUFhLE9BQUE7QUFDYix1R0FBQSxXQUFXLE9BQUE7QUFDWCwwR0FBQSxjQUFjLE9BQUE7QUFDZCw2R0FBQSxpQkFBaUIsT0FBQTtBQUNqQix1R0FBQSxXQUFXLE9BQUE7QUF1QmIsbURBQXNHO0FBQTdGLDBHQUFBLGNBQWMsT0FBQTtBQUFFLHVHQUFBLFdBQVcsT0FBQTtBQUFFLDBHQUFBLGNBQWMsT0FBQTtBQUFFLDJHQUFBLGVBQWUsT0FBQTtBQUNyRSxxRUFBMEU7QUFBakUsNEhBQUEsdUJBQXVCLE9BQUE7QUFhaEMsaURBQTZGO0FBQXBGLDhHQUFBLGtCQUFrQixPQUFBO0FBQUUsZ0hBQUEsb0JBQW9CLE9BQUE7QUFBRSx1R0FBQSxXQUFXLE9BQUE7QUFDOUQsaURBVThCO0FBVDVCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLG1IQUFBLHVCQUF1QixPQUFBO0FBQ3ZCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDRHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDZHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLCtHQUFBLG1CQUFtQixPQUFBO0FBQ25CLGlIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLGdIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDBHQUFBLGNBQWMsT0FBQTtBQWVoQixnQkFBZ0I7QUFDaEIsa0RBQW1IO0FBQTFHLG9IQUFBLHVCQUF1QixPQUFBO0FBQUUsOEdBQUEsaUJBQWlCLE9BQUE7QUFBRSwwR0FBQSxhQUFhLE9BQUE7QUFBRSw2R0FBQSxnQkFBZ0IsT0FBQTtBQU9wRixtREFBeUQ7QUFBaEQsNkdBQUEsZ0JBQWdCLE9BQUE7QUFPekIscURBT2lDO0FBTi9CLHlHQUFBLFlBQVksT0FBQTtBQUNaLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLHFHQUFBLFFBQVEsT0FBQTtBQUNSLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLGdIQUFBLG1CQUFtQixPQUFBO0FBU3JCLG1EQUEyRDtBQUFsRCwrR0FBQSxrQkFBa0IsT0FBQTtBQUMzQixtREFBMEQ7QUFBakQsOEdBQUEsaUJBQWlCLE9BQUE7QUFtQjFCLG1EQUEwRTtBQUFqRSw4SEFBQSxpQ0FBaUMsT0FBQTtBQUkxQyxtREFnQitCO0FBZjdCLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDRHQUFBLGVBQWUsT0FBQTtBQUNmLGlIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLHFIQUFBLHdCQUF3QixPQUFBO0FBQ3hCLDJHQUFBLGNBQWMsT0FBQTtBQUNkLG1IQUFBLHNCQUFzQixPQUFBO0FBQ3RCLHFIQUFBLHdCQUF3QixPQUFBO0FBQ3hCLGtIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLHlHQUFBLFlBQVksT0FBQTtBQUNaLG9IQUFBLHVCQUF1QixPQUFBO0FBQ3ZCLG1IQUFBLHNCQUFzQixPQUFBO0FBQ3RCLDRHQUFBLGVBQWUsT0FBQTtBQUNmLHdHQUFBLFdBQVcsT0FBQTtBQUNYLDRHQUFBLGVBQWUsT0FBQTtBQUtqQixvRUFBa0g7QUFBekcsd0hBQUEsbUJBQW1CLE9BQUE7QUFBRSwySEFBQSxzQkFBc0IsT0FBQTtBQUFFLHdIQUFBLG1CQUFtQixPQUFBO0FBQ3pFLG9FQUF5RjtBQUFoRiwrR0FBQSxVQUFVLE9BQUE7QUFBRSxnSEFBQSxXQUFXLE9BQUE7QUFBRSxtSEFBQSxjQUFjLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGZvb3RwcmludGpzL2FkdmFuY2VkIOKAlCBMb3ctbGV2ZWwgaW50ZXJuYWxzIGZvciBjdXN0b20gZXhlY3V0aW9uIGVuZ2luZXMgYW5kIHRlc3RpbmcuXG4gKlxuICogTW9zdCB1c2VycyBuZXZlciBuZWVkIHRoaXMuIFVzZSBgZm9vdHByaW50anNgIChtYWluKSBpbnN0ZWFkLlxuICogVGhpcyBlbnRyeSBwb2ludCBleHBvc2VzIGBTaGFyZWRNZW1vcnlgLCBgU3RhZ2VDb250ZXh0YCwgYEZsb3djaGFydFRyYXZlcnNlcmAsXG4gKiBhbmQgb3RoZXIgcHJpbWl0aXZlcyB0aGF0IHBvd2VyIHRoZSBlbmdpbmUuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IFNoYXJlZE1lbW9yeSwgU3RhZ2VDb250ZXh0IH0gZnJvbSAnZm9vdHByaW50anMvYWR2YW5jZWQnO1xuICogYGBgXG4gKlxuICogQG1vZHVsZSBhZHZhbmNlZFxuICovXG4vKipcbiAqIEZvb3RQcmludCDigJQgQWR2YW5jZWQgLyBJbnRlcm5hbCBBUElcbiAqXG4gKiBUaGVzZSBleHBvcnRzIGFyZSBmb3IgYWR2YW5jZWQgdXNlIGNhc2VzLCB0ZXN0aW5nLCBhbmQgYnVpbGRpbmdcbiAqIGN1c3RvbSBleGVjdXRpb24gZW5naW5lcy4gTW9zdCB1c2VycyBzaG91bGQgdXNlIHRoZSBtYWluICdmb290cHJpbnQnIGVudHJ5IHBvaW50LlxuICpcbiAqIEltcG9ydCB2aWE6IGltcG9ydCB7IC4uLiB9IGZyb20gJ2Zvb3RwcmludC9hZHZhbmNlZCdcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW1vcnkg4oCUIExvdy1sZXZlbCB0cmFuc2FjdGlvbmFsIHN0YXRlIHByaW1pdGl2ZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBDb21taXRCdW5kbGUsXG4gIEZsb3dDb250cm9sVHlwZSxcbiAgRmxvd01lc3NhZ2UsXG4gIE1lbW9yeVBhdGNoLFxuICBTdGFnZVNuYXBzaG90LFxuICBUcmFjZUVudHJ5LFxufSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgU2hhcmVkTWVtb3J5IH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBFdmVudExvZyB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1ZmZlciB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBEaWFnbm9zdGljQ29sbGVjdG9yIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5U21hcnRNZXJnZSxcbiAgZGVlcFNtYXJ0TWVyZ2UsXG4gIGdldE5lc3RlZFZhbHVlLFxuICBnZXRSdW5BbmRHbG9iYWxQYXRocyxcbiAgbm9ybWFsaXNlUGF0aCxcbiAgcmVkYWN0UGF0Y2gsXG4gIHNldE5lc3RlZFZhbHVlLFxuICB1cGRhdGVOZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlVmFsdWUsXG59IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1aWxkZXIg4oCUIFR5cGVzIGFuZCBpbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBFeGVjT3B0aW9ucyxcbiAgRmxvd0NoYXJ0T3B0aW9ucyxcbiAgRmxvd0NoYXJ0U3BlYyxcbiAgSUxvZ2dlcixcbiAgU2NvcGVQcm90ZWN0aW9uTW9kZSxcbiAgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBTaW1wbGlmaWVkUGFyYWxsZWxTcGVjLFxuICBTdGFnZUZuLFxuICBTdGFnZU5vZGUsXG4gIFN0cmVhbUNhbGxiYWNrLFxuICBTdHJlYW1MaWZlY3ljbGVIYW5kbGVyLFxuICBTdHJlYW1Ub2tlbkhhbmRsZXIsXG4gIFN1YmZsb3dNb3VudE9wdGlvbnMsXG4gIFN1YmZsb3dSZWYsXG59IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgQXJyYXlNZXJnZU1vZGUsIERlY2lkZXJMaXN0LCBTZWxlY3RvckZuTGlzdCwgc3BlY1RvU3RhZ2VOb2RlIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5leHBvcnQgeyBjcmVhdGVUeXBlZFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZSDigJQgUHJvdmlkZXJzLCBwcm90ZWN0aW9uLCByZWNvcmRlciBvcHRpb25zLCBhbmQgZXZlbnQgdHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBQcm92aWRlclJlc29sdmVyLFxuICBSZXNvbHZlT3B0aW9ucyxcbiAgU2NvcGVQcm92aWRlcixcbiAgU3RhZ2VDb250ZXh0TGlrZSxcbiAgU3RyaWN0TW9kZSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHsgY3JlYXRlRXJyb3JNZXNzYWdlLCBjcmVhdGVQcm90ZWN0ZWRTY29wZSwgU2NvcGVGYWNhZGUgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhdHRhY2hTY29wZU1ldGhvZHMsXG4gIGlzU3ViY2xhc3NPZlNjb3BlRmFjYWRlLFxuICBsb29rc0xpa2VDbGFzc0N0b3IsXG4gIGxvb2tzTGlrZUZhY3RvcnksXG4gIG1ha2VDbGFzc1Byb3ZpZGVyLFxuICBtYWtlRmFjdG9yeVByb3ZpZGVyLFxuICByZWdpc3RlclNjb3BlUmVzb2x2ZXIsXG4gIHJlc29sdmVTY29wZVByb3ZpZGVyLFxuICB0b1Njb3BlRmFjdG9yeSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBTY29wZVJlY29yZGVyIGNvbmZpZy9vcHRpb24gdHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQWdncmVnYXRlZE1ldHJpY3MsXG4gIERlYnVnRW50cnksXG4gIERlYnVnUmVjb3JkZXJPcHRpb25zLFxuICBEZWJ1Z1ZlcmJvc2l0eSxcbiAgRGVmaW5lU2NvcGVPcHRpb25zLFxuICBSZWNvcmRlckNvbnRleHQsXG4gIFN0YWdlRXZlbnQsXG4gIFN0YWdlTWV0cmljcyxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBab2QgaW50ZXJuYWxzXG5leHBvcnQgeyBjcmVhdGVTY29wZVByb3h5RnJvbVpvZCwgZGVmaW5lU2NvcGVTY2hlbWEsIGlzU2NvcGVTY2hlbWEsIFpvZFNjb3BlUmVzb2x2ZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJ1bm5lciDigJQgSW50ZXJuYWxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgUnVudGltZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcbmV4cG9ydCB7IEV4ZWN1dGlvblJ1bnRpbWUgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSZWFjdGl2ZSDigJQgVHlwZWRTY29wZSBpbnRlcm5hbHMgKGZvciBjdXN0b20gcHJveHkgaW1wbGVtZW50YXRpb25zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFJlYWN0aXZlT3B0aW9ucywgUmVhY3RpdmVUYXJnZXQgfSBmcm9tICcuL2xpYi9yZWFjdGl2ZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBCUkVBS19TRVRURVIsXG4gIGJ1aWxkTmVzdGVkUGF0Y2gsXG4gIGNyZWF0ZUFycmF5UHJveHksXG4gIGpvaW5QYXRoLFxuICBTQ09QRV9NRVRIT0RfTkFNRVMsXG4gIHNob3VsZFdyYXBXaXRoUHJveHksXG59IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRW5naW5lIOKAlCBERlMgZ3JhcGggdHJhdmVyc2FsIGludGVybmFsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFRyYXZlcnNlck9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUgeyBEZWNpZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IEZsb3djaGFydFRyYXZlcnNlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBpc1N0YWdlTm9kZVJldHVybiB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIE5hcnJhdGl2ZSBpbnRlcm5hbHNcbmV4cG9ydCB0eXBlIHsgSUNvbnRyb2xGbG93TmFycmF0aXZlIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSwgQ29tYmluZWROYXJyYXRpdmVPcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQnJhbmNoUmVzdWx0LFxuICBCcmFuY2hSZXN1bHRzLFxuICBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUgYXMgRW5naW5lU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBIYW5kbGVyRGVwcyxcbiAgSUV4ZWN1dGlvblJ1bnRpbWUsXG4gIE5vZGVSZXN1bHRUeXBlLFxuICBSdW50aW1lU3RydWN0dXJlTWV0YWRhdGEsXG4gIFNjb3BlRmFjdG9yeSxcbiAgU2VyaWFsaXplZFBpcGVsaW5lTm9kZSxcbiAgU3RhZ2VGdW5jdGlvbixcbiAgU3ViZmxvd1Jlc3VsdCxcbiAgVHJhdmVyc2FsUmVzdWx0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgTnVsbENvbnRyb2xGbG93TmFycmF0aXZlR2VuZXJhdG9yIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gSGFuZGxlcnMgKHRlc3RpbmcgLyBjdXN0b20gZW5naW5lcylcbmV4cG9ydCB0eXBlIHsgRXhlY3V0ZU5vZGVGbiwgUnVuU3RhZ2VGbiB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhcHBseU91dHB1dE1hcHBpbmcsXG4gIENoaWxkcmVuRXhlY3V0b3IsXG4gIGNvbXB1dGVOb2RlVHlwZSxcbiAgQ29udGludWF0aW9uUmVzb2x2ZXIsXG4gIGNyZWF0ZVN1YmZsb3dIYW5kbGVyRGVwcyxcbiAgRGVjaWRlckhhbmRsZXIsXG4gIERFRkFVTFRfTUFYX0lURVJBVElPTlMsXG4gIGV4dHJhY3RQYXJlbnRTY29wZVZhbHVlcyxcbiAgZ2V0SW5pdGlhbFNjb3BlVmFsdWVzLFxuICBOb2RlUmVzb2x2ZXIsXG4gIFJ1bnRpbWVTdHJ1Y3R1cmVNYW5hZ2VyLFxuICBzZWVkU3ViZmxvd0dsb2JhbFN0b3JlLFxuICBTZWxlY3RvckhhbmRsZXIsXG4gIFN0YWdlUnVubmVyLFxuICBTdWJmbG93RXhlY3V0b3IsXG59IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIFRyYWNlIHV0aWxpdGllcyDigJQgcmUtZXhwb3J0ZWQgaGVyZSBmb3IgY29udmVuaWVuY2UuIENhbm9uaWNhbCBwYXRoOiAnZm9vdHByaW50anMvdHJhY2UnXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvbkNvdW50ZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvcnVudGltZVN0YWdlSWQuanMnO1xuZXhwb3J0IHsgYnVpbGRSdW50aW1lU3RhZ2VJZCwgY3JlYXRlRXhlY3V0aW9uQ291bnRlciwgcGFyc2VSdW50aW1lU3RhZ2VJZCB9IGZyb20gJy4vbGliL2VuZ2luZS9ydW50aW1lU3RhZ2VJZC5qcyc7XG5leHBvcnQgeyBmaW5kQ29tbWl0LCBmaW5kQ29tbWl0cywgZmluZExhc3RXcml0ZXIgfSBmcm9tICcuL2xpYi9tZW1vcnkvY29tbWl0TG9nVXRpbHMuanMnO1xuIl19
@@ -39,6 +39,4 @@ export { NullControlFlowNarrativeGenerator } from './lib/engine/index.js';
39
39
  export { applyOutputMapping, ChildrenExecutor, computeNodeType, ContinuationResolver, createSubflowHandlerDeps, DeciderHandler, DEFAULT_MAX_ITERATIONS, extractParentScopeValues, getInitialScopeValues, NodeResolver, RuntimeStructureManager, seedSubflowGlobalStore, SelectorHandler, StageRunner, SubflowExecutor, } from './lib/engine/index.js';
40
40
  export { buildRuntimeStageId, createExecutionCounter, parseRuntimeStageId } from './lib/engine/runtimeStageId.js';
41
41
  export { findCommit, findCommits, findLastWriter } from './lib/memory/commitLogUtils.js';
42
- export { BoundaryStateTracker } from './lib/recorder/BoundaryStateTracker.js';
43
- export { KeyedRecorder } from './lib/recorder/KeyedRecorder.js';
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0g7Ozs7Ozs7R0FPRztBQWNILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLFdBQVcsRUFDWCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFdBQVcsR0FDWixNQUFNLHVCQUF1QixDQUFDO0FBc0IvQixPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFhMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGNBQWMsR0FDZixNQUFNLHNCQUFzQixDQUFDO0FBYzlCLGdCQUFnQjtBQUNoQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPekQsT0FBTyxFQUNMLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsbUJBQW1CLEdBQ3BCLE1BQU0seUJBQXlCLENBQUM7QUFRakMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFtQjFELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTFFLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCxzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsV0FBVyxFQUNYLGVBQWUsR0FDaEIsTUFBTSx1QkFBdUIsQ0FBQztBQUkvQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsSCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGZvb3RwcmludGpzL2FkdmFuY2VkIOKAlCBMb3ctbGV2ZWwgaW50ZXJuYWxzIGZvciBjdXN0b20gZXhlY3V0aW9uIGVuZ2luZXMgYW5kIHRlc3RpbmcuXG4gKlxuICogTW9zdCB1c2VycyBuZXZlciBuZWVkIHRoaXMuIFVzZSBgZm9vdHByaW50anNgIChtYWluKSBpbnN0ZWFkLlxuICogVGhpcyBlbnRyeSBwb2ludCBleHBvc2VzIGBTaGFyZWRNZW1vcnlgLCBgU3RhZ2VDb250ZXh0YCwgYEZsb3djaGFydFRyYXZlcnNlcmAsXG4gKiBhbmQgb3RoZXIgcHJpbWl0aXZlcyB0aGF0IHBvd2VyIHRoZSBlbmdpbmUuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IFNoYXJlZE1lbW9yeSwgU3RhZ2VDb250ZXh0IH0gZnJvbSAnZm9vdHByaW50anMvYWR2YW5jZWQnO1xuICogYGBgXG4gKlxuICogQG1vZHVsZSBhZHZhbmNlZFxuICovXG4vKipcbiAqIEZvb3RQcmludCDigJQgQWR2YW5jZWQgLyBJbnRlcm5hbCBBUElcbiAqXG4gKiBUaGVzZSBleHBvcnRzIGFyZSBmb3IgYWR2YW5jZWQgdXNlIGNhc2VzLCB0ZXN0aW5nLCBhbmQgYnVpbGRpbmdcbiAqIGN1c3RvbSBleGVjdXRpb24gZW5naW5lcy4gTW9zdCB1c2VycyBzaG91bGQgdXNlIHRoZSBtYWluICdmb290cHJpbnQnIGVudHJ5IHBvaW50LlxuICpcbiAqIEltcG9ydCB2aWE6IGltcG9ydCB7IC4uLiB9IGZyb20gJ2Zvb3RwcmludC9hZHZhbmNlZCdcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW1vcnkg4oCUIExvdy1sZXZlbCB0cmFuc2FjdGlvbmFsIHN0YXRlIHByaW1pdGl2ZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBDb21taXRCdW5kbGUsXG4gIEZsb3dDb250cm9sVHlwZSxcbiAgRmxvd01lc3NhZ2UsXG4gIE1lbW9yeVBhdGNoLFxuICBTdGFnZVNuYXBzaG90LFxuICBUcmFjZUVudHJ5LFxufSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgU2hhcmVkTWVtb3J5IH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBFdmVudExvZyB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1ZmZlciB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBEaWFnbm9zdGljQ29sbGVjdG9yIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5U21hcnRNZXJnZSxcbiAgZGVlcFNtYXJ0TWVyZ2UsXG4gIGdldE5lc3RlZFZhbHVlLFxuICBnZXRSdW5BbmRHbG9iYWxQYXRocyxcbiAgbm9ybWFsaXNlUGF0aCxcbiAgcmVkYWN0UGF0Y2gsXG4gIHNldE5lc3RlZFZhbHVlLFxuICB1cGRhdGVOZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlVmFsdWUsXG59IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1aWxkZXIg4oCUIFR5cGVzIGFuZCBpbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBFeGVjT3B0aW9ucyxcbiAgRmxvd0NoYXJ0T3B0aW9ucyxcbiAgRmxvd0NoYXJ0U3BlYyxcbiAgSUxvZ2dlcixcbiAgU2NvcGVQcm90ZWN0aW9uTW9kZSxcbiAgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBTaW1wbGlmaWVkUGFyYWxsZWxTcGVjLFxuICBTdGFnZUZuLFxuICBTdGFnZU5vZGUsXG4gIFN0cmVhbUNhbGxiYWNrLFxuICBTdHJlYW1MaWZlY3ljbGVIYW5kbGVyLFxuICBTdHJlYW1Ub2tlbkhhbmRsZXIsXG4gIFN1YmZsb3dNb3VudE9wdGlvbnMsXG4gIFN1YmZsb3dSZWYsXG59IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgQXJyYXlNZXJnZU1vZGUsIERlY2lkZXJMaXN0LCBTZWxlY3RvckZuTGlzdCwgc3BlY1RvU3RhZ2VOb2RlIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5leHBvcnQgeyBjcmVhdGVUeXBlZFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZSDigJQgUHJvdmlkZXJzLCBwcm90ZWN0aW9uLCByZWNvcmRlciBvcHRpb25zLCBhbmQgZXZlbnQgdHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBQcm92aWRlclJlc29sdmVyLFxuICBSZXNvbHZlT3B0aW9ucyxcbiAgU2NvcGVQcm92aWRlcixcbiAgU3RhZ2VDb250ZXh0TGlrZSxcbiAgU3RyaWN0TW9kZSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHsgY3JlYXRlRXJyb3JNZXNzYWdlLCBjcmVhdGVQcm90ZWN0ZWRTY29wZSwgU2NvcGVGYWNhZGUgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhdHRhY2hTY29wZU1ldGhvZHMsXG4gIGlzU3ViY2xhc3NPZlNjb3BlRmFjYWRlLFxuICBsb29rc0xpa2VDbGFzc0N0b3IsXG4gIGxvb2tzTGlrZUZhY3RvcnksXG4gIG1ha2VDbGFzc1Byb3ZpZGVyLFxuICBtYWtlRmFjdG9yeVByb3ZpZGVyLFxuICByZWdpc3RlclNjb3BlUmVzb2x2ZXIsXG4gIHJlc29sdmVTY29wZVByb3ZpZGVyLFxuICB0b1Njb3BlRmFjdG9yeSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBTY29wZVJlY29yZGVyIGNvbmZpZy9vcHRpb24gdHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQWdncmVnYXRlZE1ldHJpY3MsXG4gIERlYnVnRW50cnksXG4gIERlYnVnUmVjb3JkZXJPcHRpb25zLFxuICBEZWJ1Z1ZlcmJvc2l0eSxcbiAgRGVmaW5lU2NvcGVPcHRpb25zLFxuICBSZWNvcmRlckNvbnRleHQsXG4gIFN0YWdlRXZlbnQsXG4gIFN0YWdlTWV0cmljcyxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBab2QgaW50ZXJuYWxzXG5leHBvcnQgeyBjcmVhdGVTY29wZVByb3h5RnJvbVpvZCwgZGVmaW5lU2NvcGVTY2hlbWEsIGlzU2NvcGVTY2hlbWEsIFpvZFNjb3BlUmVzb2x2ZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJ1bm5lciDigJQgSW50ZXJuYWxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgUnVudGltZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcbmV4cG9ydCB7IEV4ZWN1dGlvblJ1bnRpbWUgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSZWFjdGl2ZSDigJQgVHlwZWRTY29wZSBpbnRlcm5hbHMgKGZvciBjdXN0b20gcHJveHkgaW1wbGVtZW50YXRpb25zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFJlYWN0aXZlT3B0aW9ucywgUmVhY3RpdmVUYXJnZXQgfSBmcm9tICcuL2xpYi9yZWFjdGl2ZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBCUkVBS19TRVRURVIsXG4gIGJ1aWxkTmVzdGVkUGF0Y2gsXG4gIGNyZWF0ZUFycmF5UHJveHksXG4gIGpvaW5QYXRoLFxuICBTQ09QRV9NRVRIT0RfTkFNRVMsXG4gIHNob3VsZFdyYXBXaXRoUHJveHksXG59IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRW5naW5lIOKAlCBERlMgZ3JhcGggdHJhdmVyc2FsIGludGVybmFsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFRyYXZlcnNlck9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUgeyBEZWNpZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IEZsb3djaGFydFRyYXZlcnNlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBpc1N0YWdlTm9kZVJldHVybiB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIE5hcnJhdGl2ZSBpbnRlcm5hbHNcbmV4cG9ydCB0eXBlIHsgSUNvbnRyb2xGbG93TmFycmF0aXZlIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSwgQ29tYmluZWROYXJyYXRpdmVPcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQnJhbmNoUmVzdWx0LFxuICBCcmFuY2hSZXN1bHRzLFxuICBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUgYXMgRW5naW5lU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBIYW5kbGVyRGVwcyxcbiAgSUV4ZWN1dGlvblJ1bnRpbWUsXG4gIE5vZGVSZXN1bHRUeXBlLFxuICBSdW50aW1lU3RydWN0dXJlTWV0YWRhdGEsXG4gIFNjb3BlRmFjdG9yeSxcbiAgU2VyaWFsaXplZFBpcGVsaW5lTm9kZSxcbiAgU3RhZ2VGdW5jdGlvbixcbiAgU3ViZmxvd1Jlc3VsdCxcbiAgVHJhdmVyc2FsUmVzdWx0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgTnVsbENvbnRyb2xGbG93TmFycmF0aXZlR2VuZXJhdG9yIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gSGFuZGxlcnMgKHRlc3RpbmcgLyBjdXN0b20gZW5naW5lcylcbmV4cG9ydCB0eXBlIHsgRXhlY3V0ZU5vZGVGbiwgUnVuU3RhZ2VGbiB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhcHBseU91dHB1dE1hcHBpbmcsXG4gIENoaWxkcmVuRXhlY3V0b3IsXG4gIGNvbXB1dGVOb2RlVHlwZSxcbiAgQ29udGludWF0aW9uUmVzb2x2ZXIsXG4gIGNyZWF0ZVN1YmZsb3dIYW5kbGVyRGVwcyxcbiAgRGVjaWRlckhhbmRsZXIsXG4gIERFRkFVTFRfTUFYX0lURVJBVElPTlMsXG4gIGV4dHJhY3RQYXJlbnRTY29wZVZhbHVlcyxcbiAgZ2V0SW5pdGlhbFNjb3BlVmFsdWVzLFxuICBOb2RlUmVzb2x2ZXIsXG4gIFJ1bnRpbWVTdHJ1Y3R1cmVNYW5hZ2VyLFxuICBzZWVkU3ViZmxvd0dsb2JhbFN0b3JlLFxuICBTZWxlY3RvckhhbmRsZXIsXG4gIFN0YWdlUnVubmVyLFxuICBTdWJmbG93RXhlY3V0b3IsXG59IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIFRyYWNlIHV0aWxpdGllcyDigJQgcmUtZXhwb3J0ZWQgaGVyZSBmb3IgY29udmVuaWVuY2UuIENhbm9uaWNhbCBwYXRoOiAnZm9vdHByaW50anMvdHJhY2UnXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvbkNvdW50ZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvcnVudGltZVN0YWdlSWQuanMnO1xuZXhwb3J0IHsgYnVpbGRSdW50aW1lU3RhZ2VJZCwgY3JlYXRlRXhlY3V0aW9uQ291bnRlciwgcGFyc2VSdW50aW1lU3RhZ2VJZCB9IGZyb20gJy4vbGliL2VuZ2luZS9ydW50aW1lU3RhZ2VJZC5qcyc7XG5leHBvcnQgeyBmaW5kQ29tbWl0LCBmaW5kQ29tbWl0cywgZmluZExhc3RXcml0ZXIgfSBmcm9tICcuL2xpYi9tZW1vcnkvY29tbWl0TG9nVXRpbHMuanMnO1xuZXhwb3J0IHsgQm91bmRhcnlTdGF0ZVRyYWNrZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Cb3VuZGFyeVN0YXRlVHJhY2tlci5qcyc7XG5leHBvcnQgeyBLZXllZFJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvS2V5ZWRSZWNvcmRlci5qcyc7XG4iXX0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0g7Ozs7Ozs7R0FPRztBQWNILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLFdBQVcsRUFDWCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFdBQVcsR0FDWixNQUFNLHVCQUF1QixDQUFDO0FBc0IvQixPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFhMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGNBQWMsR0FDZixNQUFNLHNCQUFzQixDQUFDO0FBYzlCLGdCQUFnQjtBQUNoQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPekQsT0FBTyxFQUNMLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsbUJBQW1CLEdBQ3BCLE1BQU0seUJBQXlCLENBQUM7QUFRakMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFtQjFELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTFFLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCxzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsV0FBVyxFQUNYLGVBQWUsR0FDaEIsTUFBTSx1QkFBdUIsQ0FBQztBQUkvQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsSCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZm9vdHByaW50anMvYWR2YW5jZWQg4oCUIExvdy1sZXZlbCBpbnRlcm5hbHMgZm9yIGN1c3RvbSBleGVjdXRpb24gZW5naW5lcyBhbmQgdGVzdGluZy5cbiAqXG4gKiBNb3N0IHVzZXJzIG5ldmVyIG5lZWQgdGhpcy4gVXNlIGBmb290cHJpbnRqc2AgKG1haW4pIGluc3RlYWQuXG4gKiBUaGlzIGVudHJ5IHBvaW50IGV4cG9zZXMgYFNoYXJlZE1lbW9yeWAsIGBTdGFnZUNvbnRleHRgLCBgRmxvd2NoYXJ0VHJhdmVyc2VyYCxcbiAqIGFuZCBvdGhlciBwcmltaXRpdmVzIHRoYXQgcG93ZXIgdGhlIGVuZ2luZS5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgU2hhcmVkTWVtb3J5LCBTdGFnZUNvbnRleHQgfSBmcm9tICdmb290cHJpbnRqcy9hZHZhbmNlZCc7XG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlIGFkdmFuY2VkXG4gKi9cbi8qKlxuICogRm9vdFByaW50IOKAlCBBZHZhbmNlZCAvIEludGVybmFsIEFQSVxuICpcbiAqIFRoZXNlIGV4cG9ydHMgYXJlIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMsIHRlc3RpbmcsIGFuZCBidWlsZGluZ1xuICogY3VzdG9tIGV4ZWN1dGlvbiBlbmdpbmVzLiBNb3N0IHVzZXJzIHNob3VsZCB1c2UgdGhlIG1haW4gJ2Zvb3RwcmludCcgZW50cnkgcG9pbnQuXG4gKlxuICogSW1wb3J0IHZpYTogaW1wb3J0IHsgLi4uIH0gZnJvbSAnZm9vdHByaW50L2FkdmFuY2VkJ1xuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbW9yeSDigJQgTG93LWxldmVsIHRyYW5zYWN0aW9uYWwgc3RhdGUgcHJpbWl0aXZlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEJ1bmRsZSxcbiAgRmxvd0NvbnRyb2xUeXBlLFxuICBGbG93TWVzc2FnZSxcbiAgTWVtb3J5UGF0Y2gsXG4gIFN0YWdlU25hcHNob3QsXG4gIFRyYWNlRW50cnksXG59IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBTaGFyZWRNZW1vcnkgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IEV2ZW50TG9nIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVmZmVyIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IERpYWdub3N0aWNDb2xsZWN0b3IgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgYXBwbHlTbWFydE1lcmdlLFxuICBkZWVwU21hcnRNZXJnZSxcbiAgZ2V0TmVzdGVkVmFsdWUsXG4gIGdldFJ1bkFuZEdsb2JhbFBhdGhzLFxuICBub3JtYWxpc2VQYXRoLFxuICByZWRhY3RQYXRjaCxcbiAgc2V0TmVzdGVkVmFsdWUsXG4gIHVwZGF0ZU5lc3RlZFZhbHVlLFxuICB1cGRhdGVWYWx1ZSxcbn0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQnVpbGRlciDigJQgVHlwZXMgYW5kIGludGVybmFsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7XG4gIEV4ZWNPcHRpb25zLFxuICBGbG93Q2hhcnRPcHRpb25zLFxuICBGbG93Q2hhcnRTcGVjLFxuICBJTG9nZ2VyLFxuICBTY29wZVByb3RlY3Rpb25Nb2RlLFxuICBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUsXG4gIFNpbXBsaWZpZWRQYXJhbGxlbFNwZWMsXG4gIFN0YWdlRm4sXG4gIFN0YWdlTm9kZSxcbiAgU3RyZWFtQ2FsbGJhY2ssXG4gIFN0cmVhbUxpZmVjeWNsZUhhbmRsZXIsXG4gIFN0cmVhbVRva2VuSGFuZGxlcixcbiAgU3ViZmxvd01vdW50T3B0aW9ucyxcbiAgU3ViZmxvd1JlZixcbn0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5leHBvcnQgeyBBcnJheU1lcmdlTW9kZSwgRGVjaWRlckxpc3QsIFNlbGVjdG9yRm5MaXN0LCBzcGVjVG9TdGFnZU5vZGUgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcbmV4cG9ydCB7IGNyZWF0ZVR5cGVkU2NvcGVGYWN0b3J5IH0gZnJvbSAnLi9saWIvYnVpbGRlci90eXBlZEZsb3dDaGFydC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNjb3BlIOKAlCBQcm92aWRlcnMsIHByb3RlY3Rpb24sIHJlY29yZGVyIG9wdGlvbnMsIGFuZCBldmVudCB0eXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7XG4gIFByb3ZpZGVyUmVzb2x2ZXIsXG4gIFJlc29sdmVPcHRpb25zLFxuICBTY29wZVByb3ZpZGVyLFxuICBTdGFnZUNvbnRleHRMaWtlLFxuICBTdHJpY3RNb2RlLFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5leHBvcnQgeyBjcmVhdGVFcnJvck1lc3NhZ2UsIGNyZWF0ZVByb3RlY3RlZFNjb3BlLCBTY29wZUZhY2FkZSB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGF0dGFjaFNjb3BlTWV0aG9kcyxcbiAgaXNTdWJjbGFzc09mU2NvcGVGYWNhZGUsXG4gIGxvb2tzTGlrZUNsYXNzQ3RvcixcbiAgbG9va3NMaWtlRmFjdG9yeSxcbiAgbWFrZUNsYXNzUHJvdmlkZXIsXG4gIG1ha2VGYWN0b3J5UHJvdmlkZXIsXG4gIHJlZ2lzdGVyU2NvcGVSZXNvbHZlcixcbiAgcmVzb2x2ZVNjb3BlUHJvdmlkZXIsXG4gIHRvU2NvcGVGYWN0b3J5LFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8vIFNjb3BlUmVjb3JkZXIgY29uZmlnL29wdGlvbiB0eXBlc1xuZXhwb3J0IHR5cGUge1xuICBBZ2dyZWdhdGVkTWV0cmljcyxcbiAgRGVidWdFbnRyeSxcbiAgRGVidWdSZWNvcmRlck9wdGlvbnMsXG4gIERlYnVnVmVyYm9zaXR5LFxuICBEZWZpbmVTY29wZU9wdGlvbnMsXG4gIFJlY29yZGVyQ29udGV4dCxcbiAgU3RhZ2VFdmVudCxcbiAgU3RhZ2VNZXRyaWNzLFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8vIFpvZCBpbnRlcm5hbHNcbmV4cG9ydCB7IGNyZWF0ZVNjb3BlUHJveHlGcm9tWm9kLCBkZWZpbmVTY29wZVNjaGVtYSwgaXNTY29wZVNjaGVtYSwgWm9kU2NvcGVSZXNvbHZlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVubmVyIOKAlCBJbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBSdW50aW1lU25hcHNob3QgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgRXhlY3V0aW9uUnVudGltZSB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJlYWN0aXZlIOKAlCBUeXBlZFNjb3BlIGludGVybmFscyAoZm9yIGN1c3RvbSBwcm94eSBpbXBsZW1lbnRhdGlvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgUmVhY3RpdmVPcHRpb25zLCBSZWFjdGl2ZVRhcmdldCB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIEJSRUFLX1NFVFRFUixcbiAgYnVpbGROZXN0ZWRQYXRjaCxcbiAgY3JlYXRlQXJyYXlQcm94eSxcbiAgam9pblBhdGgsXG4gIFNDT1BFX01FVEhPRF9OQU1FUyxcbiAgc2hvdWxkV3JhcFdpdGhQcm94eSxcbn0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFbmdpbmUg4oCUIERGUyBncmFwaCB0cmF2ZXJzYWwgaW50ZXJuYWxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgVHJhdmVyc2VyT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7IERlY2lkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgRmxvd2NoYXJ0VHJhdmVyc2VyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IGlzU3RhZ2VOb2RlUmV0dXJuIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gTmFycmF0aXZlIGludGVybmFsc1xuZXhwb3J0IHR5cGUgeyBJQ29udHJvbEZsb3dOYXJyYXRpdmUgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUgeyBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5LCBDb21iaW5lZE5hcnJhdGl2ZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUge1xuICBCcmFuY2hSZXN1bHQsXG4gIEJyYW5jaFJlc3VsdHMsXG4gIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSBhcyBFbmdpbmVTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUsXG4gIEhhbmRsZXJEZXBzLFxuICBJRXhlY3V0aW9uUnVudGltZSxcbiAgTm9kZVJlc3VsdFR5cGUsXG4gIFJ1bnRpbWVTdHJ1Y3R1cmVNZXRhZGF0YSxcbiAgU2NvcGVGYWN0b3J5LFxuICBTZXJpYWxpemVkUGlwZWxpbmVOb2RlLFxuICBTdGFnZUZ1bmN0aW9uLFxuICBTdWJmbG93UmVzdWx0LFxuICBUcmF2ZXJzYWxSZXN1bHQsXG59IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBOdWxsQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3IgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBIYW5kbGVycyAodGVzdGluZyAvIGN1c3RvbSBlbmdpbmVzKVxuZXhwb3J0IHR5cGUgeyBFeGVjdXRlTm9kZUZuLCBSdW5TdGFnZUZuIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5T3V0cHV0TWFwcGluZyxcbiAgQ2hpbGRyZW5FeGVjdXRvcixcbiAgY29tcHV0ZU5vZGVUeXBlLFxuICBDb250aW51YXRpb25SZXNvbHZlcixcbiAgY3JlYXRlU3ViZmxvd0hhbmRsZXJEZXBzLFxuICBEZWNpZGVySGFuZGxlcixcbiAgREVGQVVMVF9NQVhfSVRFUkFUSU9OUyxcbiAgZXh0cmFjdFBhcmVudFNjb3BlVmFsdWVzLFxuICBnZXRJbml0aWFsU2NvcGVWYWx1ZXMsXG4gIE5vZGVSZXNvbHZlcixcbiAgUnVudGltZVN0cnVjdHVyZU1hbmFnZXIsXG4gIHNlZWRTdWJmbG93R2xvYmFsU3RvcmUsXG4gIFNlbGVjdG9ySGFuZGxlcixcbiAgU3RhZ2VSdW5uZXIsXG4gIFN1YmZsb3dFeGVjdXRvcixcbn0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gVHJhY2UgdXRpbGl0aWVzIOKAlCByZS1leHBvcnRlZCBoZXJlIGZvciBjb252ZW5pZW5jZS4gQ2Fub25pY2FsIHBhdGg6ICdmb290cHJpbnRqcy90cmFjZSdcbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uQ291bnRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9ydW50aW1lU3RhZ2VJZC5qcyc7XG5leHBvcnQgeyBidWlsZFJ1bnRpbWVTdGFnZUlkLCBjcmVhdGVFeGVjdXRpb25Db3VudGVyLCBwYXJzZVJ1bnRpbWVTdGFnZUlkIH0gZnJvbSAnLi9saWIvZW5naW5lL3J1bnRpbWVTdGFnZUlkLmpzJztcbmV4cG9ydCB7IGZpbmRDb21taXQsIGZpbmRDb21taXRzLCBmaW5kTGFzdFdyaXRlciB9IGZyb20gJy4vbGliL21lbW9yeS9jb21taXRMb2dVdGlscy5qcyc7XG4iXX0=
@@ -14,7 +14,7 @@
14
14
  *
15
15
  * - Runtime events carry `runtimeStageId` (`[subflowPath/]stageId#N`),
16
16
  * `iteration`, `traversalContext` — load-bearing for time-travel
17
- * UIs, commit-log indices, and `SequenceRecorder<T>` consumers.
17
+ * UIs, commit-log indices, and `SequenceStore<T>` consumers.
18
18
  * NONE of these exist at build time.
19
19
  *
20
20
  * - Build events carry only `stageId` + structural fields. No
@@ -155,4 +155,4 @@
155
155
  * ```
156
156
  */
157
157
  export {};
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RydWN0dXJlUmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2J1aWxkZXIvc3RydWN0dXJlL1N0cnVjdHVyZVJlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJKRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RydWN0dXJlUmVjb3JkZXIg4oCUIHBhc3NpdmUgb2JzZXJ2ZXIgb2YgQlVJTEQtVElNRSBjaGFydCBjb25zdHJ1Y3Rpb24gZXZlbnRzLlxuICpcbiAqIFRoZSBidWlsZC10aW1lIHR3aW4gb2YgYEZsb3dSZWNvcmRlcmAuIFdoZXJlIGBGbG93UmVjb3JkZXJgIG9ic2VydmVzXG4gKiBSVU5USU1FIGNvbnRyb2wtZmxvdyB0cmFuc2l0aW9ucyAocGVyLWV4ZWN1dGlvbiBgcnVudGltZVN0YWdlSWRgLFxuICogaXRlcmF0aW9uIGNvdW50cywgZXJyb3JzLCBwYXVzZXMpLCBgU3RydWN0dXJlUmVjb3JkZXJgIG9ic2VydmVzXG4gKiBTVEFUSUMgY2hhcnQgc2hhcGUgYXMgaXQncyBhc3NlbWJsZWQgYnkgdGhlIGJ1aWxkZXIg4oCUIGV2ZXJ5IHNwZWNcbiAqIG5vZGUgYWRkZWQsIGV2ZXJ5IG91dGdvaW5nIGVkZ2Ugd2lyZWQsIGV2ZXJ5IGRlY2lkZXIgY2xvc2VkLlxuICpcbiAqIFdoeSB0d28gaW50ZXJmYWNlcywgbm90IG9uZVxuICog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gKiAgIEJ1aWxkIGFuZCBydW50aW1lIGV2ZW50cyBoYXZlIGRpZmZlcmVudCBJTlZBUklBTlRTLCBub3QganVzdFxuICogICBkaWZmZXJlbnQgdGltaW5nOlxuICpcbiAqICAgICAtIFJ1bnRpbWUgZXZlbnRzIGNhcnJ5IGBydW50aW1lU3RhZ2VJZGAgKGBbc3ViZmxvd1BhdGgvXXN0YWdlSWQjTmApLFxuICogICAgICAgYGl0ZXJhdGlvbmAsIGB0cmF2ZXJzYWxDb250ZXh0YCDigJQgbG9hZC1iZWFyaW5nIGZvciB0aW1lLXRyYXZlbFxuICogICAgICAgVUlzLCBjb21taXQtbG9nIGluZGljZXMsIGFuZCBgU2VxdWVuY2VSZWNvcmRlcjxUPmAgY29uc3VtZXJzLlxuICogICAgICAgTk9ORSBvZiB0aGVzZSBleGlzdCBhdCBidWlsZCB0aW1lLlxuICpcbiAqICAgICAtIEJ1aWxkIGV2ZW50cyBjYXJyeSBvbmx5IGBzdGFnZUlkYCArIHN0cnVjdHVyYWwgZmllbGRzLiBOb1xuICogICAgICAgZXhlY3V0aW9uIGluZGV4LCBubyBpdGVyYXRpb24sIG5vIHNuYXBzaG90LlxuICpcbiAqICAgICAtIFNvbWUgZXZlbnRzIGhhdmUgbm8gYW5hbG9nIGFjcm9zcyBwaGFzZXM6IGBvblBhdXNlYCAvXG4gKiAgICAgICBgb25SZXN1bWVgIC8gYG9uRXJyb3JgIC8gYG9uUnVuU3RhcnRgIGFyZSBydW50aW1lLW9ubHk7XG4gKiAgICAgICBgb25EZWNpZGVyQ29tcGxldGVgIC8gYG9uU3RhZ2VBZGRlZGAgYXJlIGJ1aWxkLW9ubHkuXG4gKlxuICogICBBIHNpbmdsZSBgRmxvd1JlY29yZGVyYCB3aXRoIGBwaGFzZTogJ3N0YXRpYycgfCAnZHluYW1pYydgXG4gKiAgIGRpc2NyaW1pbmF0b3Igd291bGQgZm9yY2UgZXZlcnkgY29uc3VtZXIgdG8gd3JpdGVcbiAqICAgYGlmIChlLnBoYXNlID09PSAnc3RhdGljJykgLi4uYCBicmFuY2hlcyBhbmQgd291bGQgZXJhc2UgdGhlXG4gKiAgIGxlYXN0LXByaXZpbGVnZSBib3VuZGFyeSAoYSBzdGF0aWMtb25seSBjb25zdW1lciBzaG91bGQgTk9UXG4gKiAgIGFjY2lkZW50YWxseSBvYnNlcnZlIHJ1bnRpbWUgZGF0YSDigJQgZS5nLiwgYSBwdWJsaWMgZG9jcyBzaXRlXG4gKiAgIHJlbmRlcmluZyBjaGFydCB0b3BvbG9neSBtdXN0IG5vdCBzZWUgc2NvcGUgdmFsdWVzKS5cbiAqXG4gKiAgIFR3byBpbnRlcmZhY2VzLCBzYW1lIG1lbnRhbCBtb2RlbCwgY2xlYW4gc2VwYXJhdGlvbi4gVHdvXG4gKiAgIHJlZ2lzdHJhdGlvbiBzaXRlcyBzaGlwIHRvZGF5IChwaWNrIHdoaWNoZXZlciBmaXRzIHlvdXIgY2FsbFxuICogICBzaXRlKTpcbiAqXG4gKiAgICAgMS4gKipPcHRpb25zLWJhZyoqIChwcmVmZXJyZWQgd2hlbiB0aGUgcmVjb3JkZXIgc2V0IGlzIGtub3duXG4gKiAgICAgICAgYXQgY29uc3RydWN0aW9uIHRpbWUg4oCUIHJlZ2lzdGVycyBCRUZPUkUgYHN0YXJ0KClgIHNvIGV2ZW5cbiAqICAgICAgICB0aGUgc2VlZCBldmVudCBmaXJlcyB0aHJvdWdoIHRoZSBub3JtYWwgZGlzcGF0Y2hlciBmYW4tb3V0KTpcbiAqICAgICAgICBgYGB0c1xuICogICAgICAgIGZsb3dDaGFydCgnc2VlZCcsIGZuLCAnc2VlZCcsIHsgc3RydWN0dXJlUmVjb3JkZXJzOiBbcmVjXSB9KVxuICogICAgICAgICAgLmFkZEZ1bmN0aW9uKCdhJywgZm5BLCAnYScpLmJ1aWxkKCk7XG4gKiAgICAgICAgYGBgXG4gKlxuICogICAgIDIuICoqRmx1ZW50KiogKHByZWZlcnJlZCB3aGVuIGF0dGFjaCBpcyBjb25kaXRpb25hbCwgbGF0ZSwgb3JcbiAqICAgICAgICBpbiBhIGNoYWluIGJ1aWxkZXIg4oCUIHRoZSBqdXN0LWF0dGFjaGVkIHJlY29yZGVyIGdldHMgYVxuICogICAgICAgIG9uZS10aW1lIHNlZWQgcmVwbGF5IHNvIGl0IG9ic2VydmVzIHRoZSByb290IHN0YWdlKTpcbiAqICAgICAgICBgYGB0c1xuICogICAgICAgIGZsb3dDaGFydCgnc2VlZCcsIGZuLCAnc2VlZCcpXG4gKiAgICAgICAgICAuYXR0YWNoU3RydWN0dXJlUmVjb3JkZXIocmVjKVxuICogICAgICAgICAgLmFkZEZ1bmN0aW9uKCdhJywgZm5BLCAnYScpLmJ1aWxkKCk7XG4gKiAgICAgICAgYGBgXG4gKlxuICogICBCb3RoIGRlbGl2ZXIgdGhlIHNhbWUgZXZlbnQgc3RyZWFtIHRvIHRoZSBzYW1lIHJlY29yZGVyLiBTZWUgdGhlXG4gKiAgIGBAZXhhbXBsZWAgYmxvY2sgYmVsb3cgZm9yIGEgZnVsbHktZmxlc2hlZC1vdXQgaW1wbGVtZW50YXRpb24uXG4gKlxuICogTGlmZWN5Y2xlICsgb3JkZXJpbmcgaW52YXJpYW50c1xuICog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gKiAgIC0gRmlyZXMgU1lOQ0hST05PVVNMWSBkdXJpbmcgYnVpbGRlciBjaGFpbiBjYWxscyAoYW5kIGR1cmluZ1xuICogICAgIGAuYnVpbGQoKWAgZm9yIHRoZSB0ZXJtaW5hbCBub2RlKSBhdCB0aGUgbmF0dXJhbCBtb21lbnQgZWFjaFxuICogICAgIHNwZWMgbXV0YXRpb24gY29tcGxldGVzLlxuICogICAtIGBvblN0YWdlQWRkZWQoQSlgIGFuZCBgb25TdGFnZUFkZGVkKEIpYCBmaXJlIEJFRk9SRSBhbnlcbiAqICAgICBgb25FZGdlQWRkZWQoe2Zyb206IEEsIHRvOiBCfSlgIOKAlCBlbmRwb2ludCByZWdpc3RyYXRpb25cbiAqICAgICBoYXBwZW5zIGJlZm9yZSBlZGdlIHdpcmluZy5cbiAqICAgLSBgb25EZWNpZGVyQ29tcGxldGUoRClgIGZpcmVzIGF0IHN1Yi1idWlsZGVyIGAuZW5kKClgIHRpbWUsIEFGVEVSXG4gKiAgICAgZXZlcnkgY2hpbGQncyBgb25TdGFnZUFkZGVkYCBhbmQgZXZlcnkgYG9uRWRnZUFkZGVkKHtmcm9tOiBELFxuICogICAgIHRvOiBjaGlsZH0pYC4gTWFya3MgdGhlIGRlY2lkZXIgYXMgbm8tZnVydGhlci1tdXRhdGlvbi5cbiAqICAgLSBgb25TdWJmbG93TW91bnRlZCh7c3ViZmxvd0lkfSlgIGZpcmVzIG9uY2UgcGVyIG1vdW50LlxuICogICAgICoqTU9VTlQtT05MWSoqOiBwYXJlbnQgcmVjb3JkZXJzIGRvIE5PVCByZWNlaXZlIGEgcmVwbGF5IG9mXG4gKiAgICAgdGhlIHN1YmZsb3cncyBvd24gaW50ZXJuYWwgc3RydWN0dXJlIGV2ZW50cyAodGhvc2UgZmlyZWRcbiAqICAgICBkdXJpbmcgdGhlIHN1YmZsb3cncyBvd24gYC5idWlsZCgpYCkuIE1hdGNoZXMgdGhlIHJ1bnRpbWVcbiAqICAgICBgb25TdWJmbG93RW50cnlgIHNlbWFudGljcyDigJQgY29tcG9zaXRpb24gb3ZlciByZXBsYXkuXG4gKlxuICogRXJyb3IgaXNvbGF0aW9uIChtYXRjaGVzIEZsb3dSZWNvcmRlciBjb250cmFjdClcbiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICogICAtIEEgdGhyb3dpbmcgaGFuZGxlciBpcyBjYXVnaHQsIGxvZ2dlZCB2aWEgYGlzRGV2TW9kZSgpYCB3YXJuaW5nLFxuICogICAgIGFuZCBhY2N1bXVsYXRlZCBvbiBgYnVpbGRlci5nZXRTdHJ1Y3R1cmVCdWlsZEVycm9ycygpYCBmb3JcbiAqICAgICBwb3N0LWhvYyBpbnNwZWN0aW9uLlxuICogICAtIFN1YnNlcXVlbnQgcmVjb3JkZXJzICsgc3Vic2VxdWVudCBldmVudHMgZmlyZSBub3JtYWxseTsgb25lXG4gKiAgICAgbWlzYmVoYXZpbmcgcmVjb3JkZXIgY2Fubm90IFRIUk9XIGl0cyB3YXkgaW50byBibG9ja2luZ1xuICogICAgIGNvbnN0cnVjdGlvbi5cbiAqICAgLSBUaGUgZXJyb3JzW10gYWNjdW11bGF0b3IgaXMgc29mdC1jYXBwZWQgKH4xMDAgZW50cmllcykgd2l0aCBhXG4gKiAgICAgYF9fdHJ1bmNhdGVkX19gIHNlbnRpbmVsIHJlY29yZCBvbmNlIHRoZSBjYXAgaXMgaGl0LCB0byBwcmV2ZW50XG4gKiAgICAgdW5ib3VuZGVkIGdyb3d0aCBvbiBjaGF0dHkgYnJva2VuIHJlY29yZGVycy5cbiAqICAgLSBOb3RlOiB0aHJvdyBpc29sYXRpb24gZG9lcyBOT1QgZGVmZW5kIGFnYWluc3QgYSBoYW5kbGVyIHRoYXRcbiAqICAgICBzdWNjZWVkcyBhdCBydW50aW1lIGJ1dCBtdXRhdGVzIGBldmVudC5zcGVjYCB0byBjb3JydXB0IHRoZVxuICogICAgIGNoYXJ0LiBTZWUgXCJTcGVjIG11dGF0aW9uXCIgYmVsb3cuXG4gKlxuICogU3BlYyBtdXRhdGlvbiDigJQgcmVhZG9ubHktYnktY29udHJhY3QgKE5PVCBydW50aW1lLWVuZm9yY2VkKVxuICog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gKiAgIC0gRXZlbnQgcGF5bG9hZHMgcGFzcyBzcGVjIHJlZmVyZW5jZXMgd2hlcmUgdXNlZnVsIChlLmcuLCBgc3BlY2BcbiAqICAgICBvbiBgb25TdGFnZUFkZGVkYCkuIEV2ZXJ5IGZpZWxkIG9uIGV2ZXJ5IGV2ZW50IHBheWxvYWQgaXNcbiAqICAgICBtYXJrZWQgYHJlYWRvbmx5YCBpbiBUeXBlU2NyaXB0IOKAlCB0aGUgdHlwZSBzeXN0ZW0gc2lnbmFsc1xuICogICAgIGNvbnN1bWVyIGludGVudCBhdCBhdXRob3IgdGltZS5cbiAqICAgLSBUaGVyZSBpcyBOTyBydW50aW1lIGZyZWV6ZS4gVGhlIGJ1aWxkZXIgZmlyZXMgYG9uU3RhZ2VBZGRlZGBcbiAqICAgICBJTU1FRElBVEVMWSB3aGVuIGEgc3BlYyBub2RlIGlzIGFkZGVkLCBCRUZPUkUgdGhlIGJ1aWxkZXJcbiAqICAgICB3aXJlcyB0aGF0IG5vZGUncyBgLm5leHRgL2AuY2hpbGRyZW5gL2AubG9vcFRhcmdldGAgaW4gdGhlXG4gKiAgICAgc3Vic2VxdWVudCBgYWRkWGAgY2FsbC4gRnJlZXppbmcgaGVyZSB3b3VsZCBicmVhayB0aGVcbiAqICAgICBidWlsZGVyJ3Mgb3duIHN1YnNlcXVlbnQgbXV0YXRpb24uXG4gKiAgIC0gSGFuZGxlciBtdXRhdGlvbiBvZiBgZXZlbnQuc3BlY2AgaXMgRE9DVU1FTlRFRCBVTkRFRklORURcbiAqICAgICBCRUhBVklPUiDigJQgaXQgd2lsbCBzdWNjZWVkIGF0IHJ1bnRpbWUsIGJ1dCBpcyBub3Qgc3VwcG9ydGVkXG4gKiAgICAgYW5kIGRvd25zdHJlYW0gY29uc3VtZXJzIG1heSBicmVhay4gU3BlY2lmaWNhbGx5LCBtdXRhdGluZ1xuICogICAgIGBldmVudC5zcGVjLmZuYCwgYGV2ZW50LnNwZWMuaWRgLCBvciBgZXZlbnQuc3BlYy5jaGlsZHJlbmBcbiAqICAgICBjYW4gY29ycnVwdCBzdWJzZXF1ZW50IHJ1bnRpbWUgYmVoYXZpb3Igb2YgdGhlIGNoYXJ0LlxuICogICAtICoqVHJ1c3QgbW9kZWwqKjogYXR0YWNoIE9OTFkgcmVjb3JkZXJzIGZyb20gdHJ1c3RlZCBjb2RlIHBhdGhzLlxuICogICAgIEEgaG9zdGlsZSBvciBidWdneSByZWNvcmRlciBjYW4gZWZmZWN0aXZlbHkgc3Vic3RpdHV0ZSBzdGFnZVxuICogICAgIGZ1bmN0aW9ucyBvciByZXdpcmUgdGhlIGNoYXJ0IHN0cnVjdHVyZS4gVGhlIGByZWFkb25seWBcbiAqICAgICBtYXJrZXJzIGNhbm5vdCBkZWZlbmQgYWdhaW5zdCBpbnRlbnRpb25hbCBtdXRhdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNsYXNzIFRyYWNlU3RydWN0dXJlUmVjb3JkZXIgaW1wbGVtZW50cyBTdHJ1Y3R1cmVSZWNvcmRlciB7XG4gKiAgIHJlYWRvbmx5IGlkID0gJ3RyYWNlLXN0YXRpYyc7XG4gKiAgIG5vZGVzOiBYeWZsb3dOb2RlW10gPSBbXTtcbiAqICAgZWRnZXM6IFh5Zmxvd0VkZ2VbXSA9IFtdO1xuICpcbiAqICAgb25TdGFnZUFkZGVkKGUpIHtcbiAqICAgICAvLyBOb2RlIHJvbGU6ICdzdGFnZScgaXMgdGhlIGluaXRpYWwgdHlwZS4gSWYgb3V0Z29pbmcgZWRnZXNcbiAqICAgICAvLyBhcnJpdmUgd2l0aCBraW5kICdmb3JrLWJyYW5jaCcgLyAnZGVjaXNpb24tYnJhbmNoJyB0aGUgbm9kZVxuICogICAgIC8vIGlzIGZ1bmN0aW9uaW5nIGFzIGEgZm9yay9kZWNpZGVyIOKAlCBkZXJpdmUgdGhlIHZpc3VhbCBzdHlsZVxuICogICAgIC8vIGZyb20gdGhvc2UgZWRnZXMsIG5vdCBmcm9tIGBlLnR5cGVgIGFsb25lLlxuICogICAgIHRoaXMubm9kZXMucHVzaCh7IGlkOiBlLnN0YWdlSWQsIHR5cGU6ICdsZW5zU3RhZ2UnLCBkYXRhOiB7IGxhYmVsOiBlLm5hbWUgfSB9KTtcbiAqICAgfVxuICogICBvbkVkZ2VBZGRlZChlKSB7XG4gKiAgICAgdGhpcy5lZGdlcy5wdXNoKHsgaWQ6IGAke2UuZnJvbX0tPiR7ZS50b31gLCBzb3VyY2U6IGUuZnJvbSwgdGFyZ2V0OiBlLnRvIH0pO1xuICogICB9XG4gKiAgIG9uU3ViZmxvd01vdW50ZWQoZSkge1xuICogICAgIHRoaXMubm9kZXMucHVzaCh7IGlkOiBlLnN1YmZsb3dJZCwgdHlwZTogJ3N1YmZsb3cnLCBkYXRhOiB7IGxhYmVsOiBlLnN1YmZsb3dOYW1lIH0gfSk7XG4gKiAgIH1cbiAqICAgb25EZWNpZGVyQ29tcGxldGUoZSkge1xuICogICAgIC8vIE9wdGlvbmFsOiBmaW5hbGl6ZSBub2RlIHN0eWxpbmcgbm93IHRoYXQgYnJhbmNoIGxpc3QgaXMgc2VhbGVkLlxuICogICB9XG4gKiB9XG4gKlxuICogLy8gUmVnaXN0cmF0aW9uIG9wdGlvbiBBIOKAlCBvcHRpb25zLWJhZyAocHJlZmVycmVkIHdoZW4gcmVjb3JkZXJzXG4gKiAvLyBhcmUga25vd24gdXAgZnJvbnQ7IGF0dGFjaGVzIEJFRk9SRSB0aGUgc2VlZCBldmVudCBmaXJlcyk6XG4gKiBjb25zdCByZWMgPSBuZXcgVHJhY2VTdHJ1Y3R1cmVSZWNvcmRlcigpO1xuICogY29uc3QgYnVpbGRlciA9IGZsb3dDaGFydCgnc2VlZCcsIGZuLCAnc2VlZCcsIHtcbiAqICAgc3RydWN0dXJlUmVjb3JkZXJzOiBbcmVjXSxcbiAqIH0pLmFkZEZ1bmN0aW9uKCdhJywgZm5BLCAnYScpO1xuICogY29uc3QgY2hhcnQgPSBidWlsZGVyLmJ1aWxkKCk7XG4gKlxuICogLy8gUmVnaXN0cmF0aW9uIG9wdGlvbiBCIOKAlCBmbHVlbnQgY2hhaW4gKHByZWZlcnJlZCBmb3IgY29uZGl0aW9uYWxcbiAqIC8vIG9yIGxhdGUgYXR0YWNoOyB0aGUganVzdC1hdHRhY2hlZCByZWNvcmRlciBnZXRzIGEgc2VlZCByZXBsYXkpOlxuICogY29uc3QgcmVjMiA9IG5ldyBUcmFjZVN0cnVjdHVyZVJlY29yZGVyKCk7XG4gKiBjb25zdCBidWlsZGVyMiA9IGZsb3dDaGFydCgnc2VlZCcsIGZuLCAnc2VlZCcpXG4gKiAgIC5hdHRhY2hTdHJ1Y3R1cmVSZWNvcmRlcihyZWMyKVxuICogICAuYWRkRnVuY3Rpb24oJ2EnLCBmbkEsICdhJyk7XG4gKlxuICogLy8gSW5zcGVjdCBhbnkgcmVjb3JkZXIgZXJyb3JzIChjYWxsIG9uIHRoZSBCVUlMREVSLCBub3QgdGhlIGNoYXJ0KTpcbiAqIGNvbnN0IGVycm9ycyA9IGJ1aWxkZXIuZ2V0U3RydWN0dXJlQnVpbGRFcnJvcnMoKTtcbiAqXG4gKiA8UmVhY3RGbG93IG5vZGVzPXtyZWMubm9kZXN9IGVkZ2VzPXtyZWMuZWRnZXN9IC8+XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZsb3dDaGFydFNwZWMsIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBFdmVudCBwYXlsb2FkIHR5cGVzXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBFdmVudCBwYXlsb2FkIGZvciBgU3RydWN0dXJlUmVjb3JkZXIub25TdGFnZUFkZGVkYC4gRmlyZXMgZm9yIGV2ZXJ5XG4gKiBzcGVjIG5vZGUgYWRkZWQgdG8gdGhlIGNoYXJ0LCBpbmNsdWRpbmcgdGhlIHNlZWQgKGFkZGVkIHZpYVxuICogYGZsb3dDaGFydCgpYCBmYWN0b3J5KSBhbmQgc3ViZmxvdyBtb3VudCBub2Rlcy4gRXhjbHVkZXMgc3ludGhldGljXG4gKiBsb29wLXJlZmVyZW5jZSBub2RlcyAodGhvc2UgY2FycnkgYGlzTG9vcFJlZmVyZW5jZTogdHJ1ZWAgb24gdGhlXG4gKiBzcGVjOyBjb25zdW1lcnMgc2VlIHRoZW0gdmlhIHRoZSBzZXBhcmF0ZSBgb25Mb29wRWRnZUFkZGVkYCBldmVudFxuICogaW5zdGVhZCBvZiBhcyBmcmVzaCBzdGFnZXMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cnVjdHVyZVN0YWdlQWRkZWRFdmVudCB7XG4gIC8qKlxuICAgKiBTdGFibGUgaWRlbnRpZmllciBmb3IgdGhpcyBub2RlLiBBVCBFVkVOVCBGSVJFIFRJTUUgdGhpcyBpcyB0aGVcbiAgICogYnVpbGRlcidzIExPQ0FMIGZvcm0gKG5vIHN1YmZsb3cgcHJlZml4IOKAlCB0aGUgcHJlZml4IGlzIGFwcGxpZWRcbiAgICogbGF0ZXIgYnkgYF9wcmVmaXhOb2RlVHJlZWAgd2hlbiB0aGlzIGJ1aWxkZXIgaXMgbW91bnRlZCBhcyBhXG4gICAqIHN1YmZsb3cgaW50byBhIHBhcmVudCkuXG4gICAqXG4gICAqIE5vdGU6IGBzcGVjLmlkYCBpcyBhIExJVkUgcmVmZXJlbmNlLiBJZiB5b3UgcmVhZCBpdCBBRlRFUiB0aGlzXG4gICAqIGNoYXJ0IGhhcyBiZWVuIG1vdW50ZWQgYXMgYSBzdWJmbG93LCBpdCBtYXkgaGF2ZSBiZWVuIHJld3JpdHRlblxuICAgKiB0byB0aGUgRlVMTCBwcmVmaXhlZCBmb3JtLiBVc2UgYHNwbGl0U3RhZ2VJZChzcGVjLmlkKWAgZnJvbVxuICAgKiBgZm9vdHByaW50anMvdHJhY2VgIHRvIGRlY29tcG9zZSBpdCBiYWNrIGludG8gbG9jYWwgKyBzdWJmbG93UGF0aC5cbiAgICpcbiAgICogQ29ycmVsYXRpbmcgd2l0aCBydW50aW1lIGV2ZW50czpcbiAgICogICAtIFNhbWUgYnVpbGRlciAobm8gbW91bnQpIOKGklxuICAgKiAgICAgYGV2ZW50LnN0YWdlSWQgPT09IHBhcnNlUnVudGltZVN0YWdlSWQocnVudGltZSkuc3RhZ2VJZGBcbiAgICogICAtIFRoaXMgYnVpbGRlciBtb3VudGVkIGFzIHN1YmZsb3cg4oaSIHVzZSBgc3BsaXRTdGFnZUlkYCBvbiB0aGVcbiAgICogICAgIHByZWZpeGVkIGZvcm0gKG9yIGBwYXJzZVJ1bnRpbWVTdGFnZUlkYCBvbiB0aGUgZnVsbFxuICAgKiAgICAgcnVudGltZVN0YWdlSWQpIGJlZm9yZSBjb21wYXJpbmcuXG4gICAqL1xuICByZWFkb25seSBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCBmb3IgdGhlIG5vZGUuICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqIFNwZWMgbm9kZSBgdHlwZWAuIExldHMgcmVjb3JkZXJzIGJyYW5jaCBvbiBzdGFnZSB2cyBkZWNpZGVyIHZzXG4gICAqICBmb3JrIHZzIHN1YmZsb3cgd2l0aG91dCByZS1kZXJpdmluZyBmcm9tIG90aGVyIGZpZWxkcy4gKi9cbiAgcmVhZG9ubHkgdHlwZTogTm9uTnVsbGFibGU8Rmxvd0NoYXJ0U3BlY1sndHlwZSddPjtcbiAgLyoqIFRydWUgZm9yIG5vZGVzIGFkZGVkIHZpYSBgYWRkUGF1c2FibGVGdW5jdGlvbigpYCDigJQgdXNlZnVsIGZvclxuICAgKiAgdmlzdWFsaXNlcnMgdGhhdCB3YW50IHRvIG1hcmsgc3RhZ2VzIHRoYXQgY2FuIHBhdXNlIGV4ZWN1dGlvbi4gKi9cbiAgcmVhZG9ubHkgaXNQYXVzYWJsZT86IGJvb2xlYW47XG4gIC8qKiBMaXZlIHJlZmVyZW5jZSB0byB0aGUgZnVsbCBzcGVjIG5vZGUsIGZvciBoYW5kbGVycyB0aGF0IHdhbnRcbiAgICogIGRldGFpbHMgYmV5b25kIHRoZSBkaXNjcmltaW5hdG9yIGZpZWxkcyBhYm92ZS4gTVVTVCBOT1QgYmVcbiAgICogIG11dGF0ZWQgYnkgdGhlIGhhbmRsZXIg4oCUIHJlYWRvbmx5IGlzIHR5cGUtbGV2ZWwgaW50ZW50OyBub1xuICAgKiAgcnVudGltZSBmcmVlemUuIFNlZSBcIlNwZWMgbXV0YXRpb25cIiBpbiB0aGUgZmlsZSBoZWFkZXIgZm9yIHRoZVxuICAgKiAgdHJ1c3QtbW9kZWwgY2F2ZWF0cy4gKi9cbiAgcmVhZG9ubHkgc3BlYzogRmxvd0NoYXJ0U3BlYztcbn1cblxuLyoqIEVkZ2Uga2luZHMgdGhlIGJ1aWxkZXIgcHJvZHVjZXMgYXQgc3RydWN0dXJhbCB0aW1lLiBNYXRjaGVzIHRoZVxuICogIGZvb3RwcmludGpzIGNvbnRyb2wtZmxvdyB2b2NhYnVsYXJ5IHVzZWQgYXQgcnVudGltZS5cbiAqXG4gKiAgV2h5IG5vIGBzdWJmbG93LWVudHJ5YCBoZXJlOiBzdWJmbG93IG1vdW50cyB1c2UgdGhlIGxpZmVjeWNsZVxuICogIGV2ZW50IGBvblN1YmZsb3dNb3VudGVkYCAobm90IGFuIGVkZ2UgZXZlbnQpLiBJZiBhIGZ1dHVyZSB1c2UgY2FzZVxuICogIG5lZWRzIHRoZSBwYXJlbnTihpJzdWJmbG93LXJvb3QgZWRnZSBhcyBhIGRpc3RpbmN0IGtpbmQsIGl0J2xsIGJlXG4gKiAgYWRkZWQgdGhlbiDigJQgWUFHTkkgbm93IChQYW5lbCAzLCBMNy4yIHJldmlldykuICovXG5leHBvcnQgdHlwZSBTdHJ1Y3R1cmVFZGdlS2luZCA9XG4gIHwgJ25leHQnIC8vIGxpbmVhciBjaGFpbjogcHJldi5uZXh0ID0gY3VyclxuICB8ICdmb3JrLWJyYW5jaCcgLy8gZm9yayBwYXJlbnQg4oaSIHBhcmFsbGVsIGNoaWxkXG4gIHwgJ2RlY2lzaW9uLWJyYW5jaCc7IC8vIGRlY2lkZXIg4oaSIGJyYW5jaCBjaGlsZFxuXG4vKipcbiAqIEV2ZW50IHBheWxvYWQgZm9yIGBTdHJ1Y3R1cmVSZWNvcmRlci5vbkVkZ2VBZGRlZGAuIEZpcmVzIHdoZW5ldmVyXG4gKiB0aGUgYnVpbGRlciB3aXJlcyBhbiBvdXRnb2luZyBlZGdlIGZyb20gb25lIG5vZGUgdG8gYW5vdGhlci4gQm90aFxuICogZW5kcG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIGFubm91bmNlZCB2aWEgYG9uU3RhZ2VBZGRlZGAgYnkgdGhlXG4gKiB0aW1lIHRoaXMgZmlyZXMuXG4gKlxuICogTG9vcCBiYWNrLWVkZ2VzIGhhdmUgdGhlaXIgT1dOIGV2ZW50IChgb25Mb29wRWRnZUFkZGVkYCkgc29cbiAqIGNvbnN1bWVycyBjYW4gdGhlbWUgdGhlbSBkaXN0aW5jdGx5IGFuZCBzbyBidWlsZC10aW1lIGV2ZW50cyBzdGF5XG4gKiBmcmVlIG9mIHRoZSBydW50aW1lLW9ubHkgYGl0ZXJhdGlvbmAgZmllbGQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlRWRnZUFkZGVkRXZlbnQge1xuICByZWFkb25seSBmcm9tOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRvOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGtpbmQ6IFN0cnVjdHVyZUVkZ2VLaW5kO1xuICAvKiogT3B0aW9uYWwgaHVtYW4tcmVhZGFibGUgbGFiZWwg4oCUIHVzZWQgdG9kYXkgZm9yIGRlY2lkZXIgYnJhbmNoXG4gICAqICBrZXlzIChlLmcuLCBgJ2xvdydgLCBgJ2hpZ2gnYCwgYCdoaWdoIChkZWZhdWx0KSdgKSBhbmQgcGFyYWxsZWxcbiAgICogIGJyYW5jaCBpZHMuICovXG4gIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV2ZW50IHBheWxvYWQgZm9yIGBTdHJ1Y3R1cmVSZWNvcmRlci5vbkxvb3BFZGdlQWRkZWRgLiBGaXJlcyB3aGVuXG4gKiBgLmxvb3BUbyh0YXJnZXQpYCBpbnN0YWxscyBhIGJhY2stZWRnZS4gRGlzdGluY3QgZnJvbVxuICogYG9uRWRnZUFkZGVkYCBzbyBjb25zdW1lcnMgY2FuIHRoZW1lIGJhY2stZWRnZXMgZGlmZmVyZW50bHkgYW5kXG4gKiBiZWNhdXNlIHJ1bnRpbWUgYG9uTG9vcGAgY2FycmllcyBgaXRlcmF0aW9uOiBudW1iZXJgIHdoaWNoIGhhcyBub1xuICogYnVpbGQtdGltZSBtZWFuaW5nIOKAlCBrZWVwaW5nIHRoZSBldmVudHMgc2VwYXJhdGVkIGF2b2lkcyBmb3JjaW5nXG4gKiBhbiBgaXRlcmF0aW9uPzogbnVtYmVyYCBsaWUgaW50byB0aGUgc3RydWN0dXJhbCBzaGFwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJ1Y3R1cmVMb29wRWRnZUFkZGVkRXZlbnQge1xuICByZWFkb25seSBmcm9tOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRvOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXZlbnQgcGF5bG9hZCBmb3IgYFN0cnVjdHVyZVJlY29yZGVyLm9uRGVjaWRlckNvbXBsZXRlYC4gRmlyZXNcbiAqIHdoZW4gYSBkZWNpZGVyIC8gc2VsZWN0b3Igc3ViLWJ1aWxkZXIgY2xvc2VzIHZpYSBgLmVuZCgpYC4gQnkgdGhlXG4gKiB0aW1lIHRoaXMgZmlyZXMgZXZlcnkgYnJhbmNoIGhhcyBiZWVuIGFubm91bmNlZCBhbmQgdGhlXG4gKiBgZGVmYXVsdEJyYW5jaGAgKGlmIHNldCB2aWEgYC5zZXREZWZhdWx0KClgKSBpcyBmaW5hbC4gTGV0c1xuICogcmVjb3JkZXJzIHRyZWF0IHRoZSBkZWNpZGVyIGFzIG5vLWZ1cnRoZXItbXV0YXRpb24gYW5kIHNuYXBzaG90XG4gKiBpdHMgYnJhbmNoIGxpc3QgYXMgZmluYWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlRGVjaWRlckNvbXBsZXRlRXZlbnQge1xuICAvKiogRGVjaWRlciAvIHNlbGVjdG9yIHN0YWdlIGlkLiAqL1xuICByZWFkb25seSBkZWNpZGVyOiBzdHJpbmc7XG4gIC8qKiBTcGVjIHR5cGUgKGAnZGVjaWRlcidgIHZzIGAnc2VsZWN0b3InYCkg4oCUIGV4cG9zZWQgc28gY29uc3VtZXJzXG4gICAqICBkb24ndCBuZWVkIHRvIGxvb2sgdXAgdGhlIG9yaWdpbmFsIGBvblN0YWdlQWRkZWRgIGV2ZW50LiAqL1xuICByZWFkb25seSB0eXBlOiAnZGVjaWRlcicgfCAnc2VsZWN0b3InO1xuICAvKiogQnJhbmNoIG1lbWJlciBpZHMgaW4gZGVjbGFyYXRpb24gb3JkZXIuICovXG4gIHJlYWRvbmx5IGJyYW5jaElkczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBEZWZhdWx0IGJyYW5jaCBpZCB3aGVuIHNldCB2aWEgYC5zZXREZWZhdWx0KClgOyB1bmRlZmluZWQgd2hlblxuICAgKiAgbm8gZGVmYXVsdCBpcyBjb25maWd1cmVkIChlLmcuLCBzZWxlY3RvcnMpLiAqL1xuICByZWFkb25seSBkZWZhdWx0QnJhbmNoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV2ZW50IHBheWxvYWQgZm9yIGBTdHJ1Y3R1cmVSZWNvcmRlci5vblN1YmZsb3dNb3VudGVkYC4gRmlyZXMgb25jZVxuICogcGVyIHN1YmZsb3cgbW91bnQgKGBhZGRTdWJGbG93Q2hhcnRgIC8gYGFkZFN1YkZsb3dDaGFydE5leHRgIGFuZFxuICogdGhlaXIgbGF6eSB2YXJpYW50cykuXG4gKlxuICogKipNT1VOVC1PTkxZIHNlbWFudGljcyoqIOKAlCB0aGUgc3ViZmxvdydzIE9XTiBzdHJ1Y3R1cmUgZXZlbnRzXG4gKiAoZXZlcnkgYG9uU3RhZ2VBZGRlZGAgLyBgb25FZGdlQWRkZWRgIGluc2lkZSB0aGUgc3ViZmxvdykgZmlyZWRcbiAqIGR1cmluZyB0aGUgc3ViZmxvdydzIG93biBgLmJ1aWxkKClgLCBiZWZvcmUgdGhlIG1vdW50LiBQYXJlbnRcbiAqIHJlY29yZGVycyBkbyBOT1QgcmVjZWl2ZSBhIHJlcGxheS4gSW5zdGVhZCwgdGhpcyBldmVudCBkZWxpdmVyc1xuICogdGhlIHN1YmZsb3cncyBmdWxsIHN0cnVjdHVyZSB2aWEgYHN1YmZsb3dTcGVjYCwgYW5kIGNvbnN1bWVycyBjYW5cbiAqIHdhbGsgaXQgdmlhIGB3YWxrU3ViZmxvd1NwZWNgIGZyb20gYGZvb3RwcmludGpzL3RyYWNlYC5cbiAqXG4gKiBUaGlzIG1hdGNoZXMgYEZsb3dSZWNvcmRlci5vblN1YmZsb3dFbnRyeWAgc2VtYW50aWNzIGF0IHJ1bnRpbWVcbiAqIChwYXJlbnRzIHNlZSB0aGUgYm91bmRhcnksIG5vdCBhIHJlcGxheSBvZiBpbnRlcm5hbHMpIGFuZFxuICogcHJlc2VydmVzIHRoZSBcIm9uZSBwdXJwb3NlIHBlciByZWNvcmRlclwiIGNvbnZlbnRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlU3ViZmxvd01vdW50ZWRFdmVudCB7XG4gIC8qKiBTdWJmbG93IGlkZW50aWZpZXIgdGhlIHBhcmVudCBhc3NpZ25lZCBhdCBtb3VudC4gKi9cbiAgcmVhZG9ubHkgc3ViZmxvd0lkOiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBzdWJmbG93IG5hbWUuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dOYW1lOiBzdHJpbmc7XG4gIC8qKiBNb3VudCBub2RlIGlkIGluIHRoZSBwYXJlbnQncyBjaGFydC4gKi9cbiAgcmVhZG9ubHkgcm9vdFN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFRydWUgd2hlbiB0aGUgbW91bnQgdXNlcyBsYXp5IHJlc29sdXRpb24gKGRlZmVycmVkIHN1YmZsb3dcbiAgICogIHJlc29sdXRpb24gdW50aWwgZXhlY3V0aW9uKS4gKi9cbiAgcmVhZG9ubHkgaXNMYXp5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG1vdW50ZWQgc3ViZmxvdydzIGNvbXBsZXRlIHNwZWMg4oCUIHRoZSBTQU1FIE9CSkVDVFxuICAgKiAoPT09IHJlZmVyZW5jZSBlcXVhbGl0eSkgcmVhY2hhYmxlIHZpYSBgc3ViZmxvdy5idWlsZFRpbWVTdHJ1Y3R1cmVgXG4gICAqIGZvciB0aGUgRmxvd0NoYXJ0IHRoZSBjb25zdW1lciBwYXNzZWQgdG8gYGFkZFN1YkZsb3dDaGFydEJyYW5jaGAgL1xuICAgKiBgYWRkU3ViRmxvd0NoYXJ0YCAvIGBhZGRTdWJGbG93Q2hhcnROZXh0YC5cbiAgICpcbiAgICogVU5ERUZJTkVEIGZvciBsYXp5IG1vdW50cyBhdCBidWlsZCB0aW1lIChgaXNMYXp5OiB0cnVlYCkg4oCUIHRoZVxuICAgKiBzdWJmbG93J3Mgc3RydWN0dXJlIGhhc24ndCBiZWVuIHJlc29sdmVkIHlldC4gQ29uc3VtZXJzIHdhaXRpbmcgb25cbiAgICogbGF6eSBzdWJmbG93cyBoYW5kbGUgdGhlIHJ1bnRpbWUgYG9uU3ViZmxvd0VudHJ5YCBldmVudCBpbnN0ZWFkLlxuICAgKlxuICAgKiBJbW11dGFibGUgcG9zdC1idWlsZDsgY29uc3VtZXJzIE1VU1QgTk9UIG11dGF0ZS5cbiAgICpcbiAgICogQGludGVybmFsIGBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmVgIGlzIGxpYnJhcnktaW50ZXJuYWwuXG4gICAqICAgICAgICAgICBVc2UgYHdhbGtTdWJmbG93U3BlY2AgZnJvbSBgZm9vdHByaW50anMvdHJhY2VgIGZvciB0aGVcbiAgICogICAgICAgICAgIHN0YWJsZSBwdWJsaWMgY29udHJhY3QuXG4gICAqL1xuICByZWFkb25seSBzdWJmbG93U3BlYz86IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZTtcblxuICAvKipcbiAgICogTG9jYWwgbW91bnQgaWQgb2YgdGhpcyBzdWJmbG93IHdpdGhpbiBpdHMgcGFyZW50IOKAlCBlcXVhbCB0b1xuICAgKiBgc3ViZmxvd0lkYCBmb3IgdG9wLWxldmVsIG1vdW50cyAoZS5nLiBgJ2F1dGgnYCksIGNvbXBvc2VkXG4gICAqIChgJ2F1dGgvdmVyaWZ5J2ApIGZvciBuZXN0ZWQgbW91bnRzIHdob3NlIHJlY29yZGVyIGlzIGF0dGFjaGVkXG4gICAqIHRvIHRoZSBncmFuZHBhcmVudC4gTWF0Y2hlcyBydW50aW1lIGB0cmF2ZXJzYWxDb250ZXh0LnN1YmZsb3dQYXRoYFxuICAgKiBzZW1hbnRpY3Mg4oCUIE5FVkVSIHByZWZpeGVkIHdpdGggYF9fcm9vdF9fL2AuXG4gICAqL1xuICByZWFkb25seSBzdWJmbG93UGF0aDogc3RyaW5nO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFN0cnVjdHVyZVJlY29yZGVyIGludGVyZmFjZVxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBCVUlMRC1USU1FIGNoYXJ0IGNvbnN0cnVjdGlvbiBldmVudHMuXG4gKlxuICogQWxsIG1ldGhvZHMgYXJlIG9wdGlvbmFsIOKAlCBpbXBsZW1lbnQgb25seSB0aGUgaG9va3MgeW91IG5lZWQuXG4gKiBIYW5kbGVycyBmaXJlIFNZTkNIUk9OT1VTTFkgZHVyaW5nIGJ1aWxkZXIgb3BlcmF0aW9ucyBhbmQgYC5idWlsZCgpYC5cbiAqIEEgdGhyb3dpbmcgaGFuZGxlciBpcyBjYXVnaHQgKHNlZSBcIkVycm9yIGlzb2xhdGlvblwiIGluIHRoZSBmaWxlXG4gKiBoZWFkZXIpOyBzdWJzZXF1ZW50IGRpc3BhdGNoIGNvbnRpbnVlcy5cbiAqXG4gKiBMaWZlY3ljbGU6IGVhY2ggYFN0cnVjdHVyZVJlY29yZGVyYCBpbnN0YW5jZSBpcyByZWdpc3RlcmVkIHZpYVxuICogRUlUSEVSIHRoZSBgZmxvd0NoYXJ0KClgIG9wdGlvbnMgYmFnIChgeyBzdHJ1Y3R1cmVSZWNvcmRlcnM6IFtyZWNdIH1gKVxuICogT1IgdGhlIGZsdWVudCBgLmF0dGFjaFN0cnVjdHVyZVJlY29yZGVyKHJlYylgIGNoYWluIOKAlCBzZWUgdGhlIGZpbGVcbiAqIGhlYWRlciBmb3IgdGhlIHRyYWRlLW9mZnMuIFJlZ2lzdHJhdGlvbiBhZnRlciBgLmJ1aWxkKClgIGlzXG4gKiByZWplY3RlZCAoY2hhcnQgaXMgc2VhbGVkKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJ1Y3R1cmVSZWNvcmRlciB7XG4gIC8qKlxuICAgKiBTdGFibGUgaWRlbnRpZmllciDigJQgdXNlZCBieSB0aGUgZGlzcGF0Y2hlciB0byBzY29wZSBlcnJvclxuICAgKiBtZXNzYWdlcyBhbmQgdG8gc3VwcG9ydCBgZGV0YWNoKGlkKWAgbG9va3VwLlxuICAgKlxuICAgKiBDb252ZW50aW9uIChtYXRjaGVzIGBGbG93UmVjb3JkZXIuaWRgIGZyb20gQ0xBVURFLm1kKTpcbiAgICogICAtIGRvbWFpbi1wcmVmaXhlZCBrZWJhYi1jYXNlIChgJ2xlbnMtc3RydWN0dXJlJ2AsXG4gICAqICAgICBgJ2FnZW50Zm9vdHByaW50LWNvbXBvc2l0aW9uJ2AsIGAndHJhY2UtZXhwbGFpbmFibGUnYClcbiAgICogICAtIHNhbWUgaWQg4oaSIG11bHRpcGxlIHJlY29yZGVycyBjb2V4aXN0IChOT1QgZGVkdXBsaWNhdGVkIGJ5XG4gICAqICAgICBpZDsgdGhlIGRpc3BhdGNoZXIgZmlyZXMgZXZlcnkgYXR0YWNoZWQgcmVjb3JkZXIgcmVnYXJkbGVzcylcbiAgICogICAtIGBkZXRhY2goaWQpYCByZW1vdmVzIEVWRVJZIHJlY29yZGVyIHdpdGggdGhhdCBpZCDigJQgYmVcbiAgICogICAgIGludGVudGlvbmFsIGFib3V0IHJldXNlIGlmIHlvdSByZWx5IG9uIHNlbGVjdGl2ZSBkZXRhY2hcbiAgICpcbiAgICogQ2hvb3NlIGEgc3RhYmxlIGlkIGF0IG1vZHVsZSBsb2FkIGFuZCBkb24ndCByYW5kb21pc2UgaXQgYWNyb3NzXG4gICAqIHJ1bnMg4oCUIGl0IGxhbmRzIGluIGBTdHJ1Y3R1cmVCdWlsZEVycm9yLnJlY29yZGVySWRgIHNvIGRlYnVnXG4gICAqIG91dHB1dCBpcyBncmVwcGFibGUuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIG9uU3RhZ2VBZGRlZD8oZXZlbnQ6IFN0cnVjdHVyZVN0YWdlQWRkZWRFdmVudCk6IHZvaWQ7XG4gIG9uRWRnZUFkZGVkPyhldmVudDogU3RydWN0dXJlRWRnZUFkZGVkRXZlbnQpOiB2b2lkO1xuICBvbkxvb3BFZGdlQWRkZWQ/KGV2ZW50OiBTdHJ1Y3R1cmVMb29wRWRnZUFkZGVkRXZlbnQpOiB2b2lkO1xuICBvbkRlY2lkZXJDb21wbGV0ZT8oZXZlbnQ6IFN0cnVjdHVyZURlY2lkZXJDb21wbGV0ZUV2ZW50KTogdm9pZDtcbiAgb25TdWJmbG93TW91bnRlZD8oZXZlbnQ6IFN0cnVjdHVyZVN1YmZsb3dNb3VudGVkRXZlbnQpOiB2b2lkO1xufVxuIl19
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RydWN0dXJlUmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2J1aWxkZXIvc3RydWN0dXJlL1N0cnVjdHVyZVJlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJKRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RydWN0dXJlUmVjb3JkZXIg4oCUIHBhc3NpdmUgb2JzZXJ2ZXIgb2YgQlVJTEQtVElNRSBjaGFydCBjb25zdHJ1Y3Rpb24gZXZlbnRzLlxuICpcbiAqIFRoZSBidWlsZC10aW1lIHR3aW4gb2YgYEZsb3dSZWNvcmRlcmAuIFdoZXJlIGBGbG93UmVjb3JkZXJgIG9ic2VydmVzXG4gKiBSVU5USU1FIGNvbnRyb2wtZmxvdyB0cmFuc2l0aW9ucyAocGVyLWV4ZWN1dGlvbiBgcnVudGltZVN0YWdlSWRgLFxuICogaXRlcmF0aW9uIGNvdW50cywgZXJyb3JzLCBwYXVzZXMpLCBgU3RydWN0dXJlUmVjb3JkZXJgIG9ic2VydmVzXG4gKiBTVEFUSUMgY2hhcnQgc2hhcGUgYXMgaXQncyBhc3NlbWJsZWQgYnkgdGhlIGJ1aWxkZXIg4oCUIGV2ZXJ5IHNwZWNcbiAqIG5vZGUgYWRkZWQsIGV2ZXJ5IG91dGdvaW5nIGVkZ2Ugd2lyZWQsIGV2ZXJ5IGRlY2lkZXIgY2xvc2VkLlxuICpcbiAqIFdoeSB0d28gaW50ZXJmYWNlcywgbm90IG9uZVxuICog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gKiAgIEJ1aWxkIGFuZCBydW50aW1lIGV2ZW50cyBoYXZlIGRpZmZlcmVudCBJTlZBUklBTlRTLCBub3QganVzdFxuICogICBkaWZmZXJlbnQgdGltaW5nOlxuICpcbiAqICAgICAtIFJ1bnRpbWUgZXZlbnRzIGNhcnJ5IGBydW50aW1lU3RhZ2VJZGAgKGBbc3ViZmxvd1BhdGgvXXN0YWdlSWQjTmApLFxuICogICAgICAgYGl0ZXJhdGlvbmAsIGB0cmF2ZXJzYWxDb250ZXh0YCDigJQgbG9hZC1iZWFyaW5nIGZvciB0aW1lLXRyYXZlbFxuICogICAgICAgVUlzLCBjb21taXQtbG9nIGluZGljZXMsIGFuZCBgU2VxdWVuY2VTdG9yZTxUPmAgY29uc3VtZXJzLlxuICogICAgICAgTk9ORSBvZiB0aGVzZSBleGlzdCBhdCBidWlsZCB0aW1lLlxuICpcbiAqICAgICAtIEJ1aWxkIGV2ZW50cyBjYXJyeSBvbmx5IGBzdGFnZUlkYCArIHN0cnVjdHVyYWwgZmllbGRzLiBOb1xuICogICAgICAgZXhlY3V0aW9uIGluZGV4LCBubyBpdGVyYXRpb24sIG5vIHNuYXBzaG90LlxuICpcbiAqICAgICAtIFNvbWUgZXZlbnRzIGhhdmUgbm8gYW5hbG9nIGFjcm9zcyBwaGFzZXM6IGBvblBhdXNlYCAvXG4gKiAgICAgICBgb25SZXN1bWVgIC8gYG9uRXJyb3JgIC8gYG9uUnVuU3RhcnRgIGFyZSBydW50aW1lLW9ubHk7XG4gKiAgICAgICBgb25EZWNpZGVyQ29tcGxldGVgIC8gYG9uU3RhZ2VBZGRlZGAgYXJlIGJ1aWxkLW9ubHkuXG4gKlxuICogICBBIHNpbmdsZSBgRmxvd1JlY29yZGVyYCB3aXRoIGBwaGFzZTogJ3N0YXRpYycgfCAnZHluYW1pYydgXG4gKiAgIGRpc2NyaW1pbmF0b3Igd291bGQgZm9yY2UgZXZlcnkgY29uc3VtZXIgdG8gd3JpdGVcbiAqICAgYGlmIChlLnBoYXNlID09PSAnc3RhdGljJykgLi4uYCBicmFuY2hlcyBhbmQgd291bGQgZXJhc2UgdGhlXG4gKiAgIGxlYXN0LXByaXZpbGVnZSBib3VuZGFyeSAoYSBzdGF0aWMtb25seSBjb25zdW1lciBzaG91bGQgTk9UXG4gKiAgIGFjY2lkZW50YWxseSBvYnNlcnZlIHJ1bnRpbWUgZGF0YSDigJQgZS5nLiwgYSBwdWJsaWMgZG9jcyBzaXRlXG4gKiAgIHJlbmRlcmluZyBjaGFydCB0b3BvbG9neSBtdXN0IG5vdCBzZWUgc2NvcGUgdmFsdWVzKS5cbiAqXG4gKiAgIFR3byBpbnRlcmZhY2VzLCBzYW1lIG1lbnRhbCBtb2RlbCwgY2xlYW4gc2VwYXJhdGlvbi4gVHdvXG4gKiAgIHJlZ2lzdHJhdGlvbiBzaXRlcyBzaGlwIHRvZGF5IChwaWNrIHdoaWNoZXZlciBmaXRzIHlvdXIgY2FsbFxuICogICBzaXRlKTpcbiAqXG4gKiAgICAgMS4gKipPcHRpb25zLWJhZyoqIChwcmVmZXJyZWQgd2hlbiB0aGUgcmVjb3JkZXIgc2V0IGlzIGtub3duXG4gKiAgICAgICAgYXQgY29uc3RydWN0aW9uIHRpbWUg4oCUIHJlZ2lzdGVycyBCRUZPUkUgYHN0YXJ0KClgIHNvIGV2ZW5cbiAqICAgICAgICB0aGUgc2VlZCBldmVudCBmaXJlcyB0aHJvdWdoIHRoZSBub3JtYWwgZGlzcGF0Y2hlciBmYW4tb3V0KTpcbiAqICAgICAgICBgYGB0c1xuICogICAgICAgIGZsb3dDaGFydCgnc2VlZCcsIGZuLCAnc2VlZCcsIHsgc3RydWN0dXJlUmVjb3JkZXJzOiBbcmVjXSB9KVxuICogICAgICAgICAgLmFkZEZ1bmN0aW9uKCdhJywgZm5BLCAnYScpLmJ1aWxkKCk7XG4gKiAgICAgICAgYGBgXG4gKlxuICogICAgIDIuICoqRmx1ZW50KiogKHByZWZlcnJlZCB3aGVuIGF0dGFjaCBpcyBjb25kaXRpb25hbCwgbGF0ZSwgb3JcbiAqICAgICAgICBpbiBhIGNoYWluIGJ1aWxkZXIg4oCUIHRoZSBqdXN0LWF0dGFjaGVkIHJlY29yZGVyIGdldHMgYVxuICogICAgICAgIG9uZS10aW1lIHNlZWQgcmVwbGF5IHNvIGl0IG9ic2VydmVzIHRoZSByb290IHN0YWdlKTpcbiAqICAgICAgICBgYGB0c1xuICogICAgICAgIGZsb3dDaGFydCgnc2VlZCcsIGZuLCAnc2VlZCcpXG4gKiAgICAgICAgICAuYXR0YWNoU3RydWN0dXJlUmVjb3JkZXIocmVjKVxuICogICAgICAgICAgLmFkZEZ1bmN0aW9uKCdhJywgZm5BLCAnYScpLmJ1aWxkKCk7XG4gKiAgICAgICAgYGBgXG4gKlxuICogICBCb3RoIGRlbGl2ZXIgdGhlIHNhbWUgZXZlbnQgc3RyZWFtIHRvIHRoZSBzYW1lIHJlY29yZGVyLiBTZWUgdGhlXG4gKiAgIGBAZXhhbXBsZWAgYmxvY2sgYmVsb3cgZm9yIGEgZnVsbHktZmxlc2hlZC1vdXQgaW1wbGVtZW50YXRpb24uXG4gKlxuICogTGlmZWN5Y2xlICsgb3JkZXJpbmcgaW52YXJpYW50c1xuICog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gKiAgIC0gRmlyZXMgU1lOQ0hST05PVVNMWSBkdXJpbmcgYnVpbGRlciBjaGFpbiBjYWxscyAoYW5kIGR1cmluZ1xuICogICAgIGAuYnVpbGQoKWAgZm9yIHRoZSB0ZXJtaW5hbCBub2RlKSBhdCB0aGUgbmF0dXJhbCBtb21lbnQgZWFjaFxuICogICAgIHNwZWMgbXV0YXRpb24gY29tcGxldGVzLlxuICogICAtIGBvblN0YWdlQWRkZWQoQSlgIGFuZCBgb25TdGFnZUFkZGVkKEIpYCBmaXJlIEJFRk9SRSBhbnlcbiAqICAgICBgb25FZGdlQWRkZWQoe2Zyb206IEEsIHRvOiBCfSlgIOKAlCBlbmRwb2ludCByZWdpc3RyYXRpb25cbiAqICAgICBoYXBwZW5zIGJlZm9yZSBlZGdlIHdpcmluZy5cbiAqICAgLSBgb25EZWNpZGVyQ29tcGxldGUoRClgIGZpcmVzIGF0IHN1Yi1idWlsZGVyIGAuZW5kKClgIHRpbWUsIEFGVEVSXG4gKiAgICAgZXZlcnkgY2hpbGQncyBgb25TdGFnZUFkZGVkYCBhbmQgZXZlcnkgYG9uRWRnZUFkZGVkKHtmcm9tOiBELFxuICogICAgIHRvOiBjaGlsZH0pYC4gTWFya3MgdGhlIGRlY2lkZXIgYXMgbm8tZnVydGhlci1tdXRhdGlvbi5cbiAqICAgLSBgb25TdWJmbG93TW91bnRlZCh7c3ViZmxvd0lkfSlgIGZpcmVzIG9uY2UgcGVyIG1vdW50LlxuICogICAgICoqTU9VTlQtT05MWSoqOiBwYXJlbnQgcmVjb3JkZXJzIGRvIE5PVCByZWNlaXZlIGEgcmVwbGF5IG9mXG4gKiAgICAgdGhlIHN1YmZsb3cncyBvd24gaW50ZXJuYWwgc3RydWN0dXJlIGV2ZW50cyAodGhvc2UgZmlyZWRcbiAqICAgICBkdXJpbmcgdGhlIHN1YmZsb3cncyBvd24gYC5idWlsZCgpYCkuIE1hdGNoZXMgdGhlIHJ1bnRpbWVcbiAqICAgICBgb25TdWJmbG93RW50cnlgIHNlbWFudGljcyDigJQgY29tcG9zaXRpb24gb3ZlciByZXBsYXkuXG4gKlxuICogRXJyb3IgaXNvbGF0aW9uIChtYXRjaGVzIEZsb3dSZWNvcmRlciBjb250cmFjdClcbiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICogICAtIEEgdGhyb3dpbmcgaGFuZGxlciBpcyBjYXVnaHQsIGxvZ2dlZCB2aWEgYGlzRGV2TW9kZSgpYCB3YXJuaW5nLFxuICogICAgIGFuZCBhY2N1bXVsYXRlZCBvbiBgYnVpbGRlci5nZXRTdHJ1Y3R1cmVCdWlsZEVycm9ycygpYCBmb3JcbiAqICAgICBwb3N0LWhvYyBpbnNwZWN0aW9uLlxuICogICAtIFN1YnNlcXVlbnQgcmVjb3JkZXJzICsgc3Vic2VxdWVudCBldmVudHMgZmlyZSBub3JtYWxseTsgb25lXG4gKiAgICAgbWlzYmVoYXZpbmcgcmVjb3JkZXIgY2Fubm90IFRIUk9XIGl0cyB3YXkgaW50byBibG9ja2luZ1xuICogICAgIGNvbnN0cnVjdGlvbi5cbiAqICAgLSBUaGUgZXJyb3JzW10gYWNjdW11bGF0b3IgaXMgc29mdC1jYXBwZWQgKH4xMDAgZW50cmllcykgd2l0aCBhXG4gKiAgICAgYF9fdHJ1bmNhdGVkX19gIHNlbnRpbmVsIHJlY29yZCBvbmNlIHRoZSBjYXAgaXMgaGl0LCB0byBwcmV2ZW50XG4gKiAgICAgdW5ib3VuZGVkIGdyb3d0aCBvbiBjaGF0dHkgYnJva2VuIHJlY29yZGVycy5cbiAqICAgLSBOb3RlOiB0aHJvdyBpc29sYXRpb24gZG9lcyBOT1QgZGVmZW5kIGFnYWluc3QgYSBoYW5kbGVyIHRoYXRcbiAqICAgICBzdWNjZWVkcyBhdCBydW50aW1lIGJ1dCBtdXRhdGVzIGBldmVudC5zcGVjYCB0byBjb3JydXB0IHRoZVxuICogICAgIGNoYXJ0LiBTZWUgXCJTcGVjIG11dGF0aW9uXCIgYmVsb3cuXG4gKlxuICogU3BlYyBtdXRhdGlvbiDigJQgcmVhZG9ubHktYnktY29udHJhY3QgKE5PVCBydW50aW1lLWVuZm9yY2VkKVxuICog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gKiAgIC0gRXZlbnQgcGF5bG9hZHMgcGFzcyBzcGVjIHJlZmVyZW5jZXMgd2hlcmUgdXNlZnVsIChlLmcuLCBgc3BlY2BcbiAqICAgICBvbiBgb25TdGFnZUFkZGVkYCkuIEV2ZXJ5IGZpZWxkIG9uIGV2ZXJ5IGV2ZW50IHBheWxvYWQgaXNcbiAqICAgICBtYXJrZWQgYHJlYWRvbmx5YCBpbiBUeXBlU2NyaXB0IOKAlCB0aGUgdHlwZSBzeXN0ZW0gc2lnbmFsc1xuICogICAgIGNvbnN1bWVyIGludGVudCBhdCBhdXRob3IgdGltZS5cbiAqICAgLSBUaGVyZSBpcyBOTyBydW50aW1lIGZyZWV6ZS4gVGhlIGJ1aWxkZXIgZmlyZXMgYG9uU3RhZ2VBZGRlZGBcbiAqICAgICBJTU1FRElBVEVMWSB3aGVuIGEgc3BlYyBub2RlIGlzIGFkZGVkLCBCRUZPUkUgdGhlIGJ1aWxkZXJcbiAqICAgICB3aXJlcyB0aGF0IG5vZGUncyBgLm5leHRgL2AuY2hpbGRyZW5gL2AubG9vcFRhcmdldGAgaW4gdGhlXG4gKiAgICAgc3Vic2VxdWVudCBgYWRkWGAgY2FsbC4gRnJlZXppbmcgaGVyZSB3b3VsZCBicmVhayB0aGVcbiAqICAgICBidWlsZGVyJ3Mgb3duIHN1YnNlcXVlbnQgbXV0YXRpb24uXG4gKiAgIC0gSGFuZGxlciBtdXRhdGlvbiBvZiBgZXZlbnQuc3BlY2AgaXMgRE9DVU1FTlRFRCBVTkRFRklORURcbiAqICAgICBCRUhBVklPUiDigJQgaXQgd2lsbCBzdWNjZWVkIGF0IHJ1bnRpbWUsIGJ1dCBpcyBub3Qgc3VwcG9ydGVkXG4gKiAgICAgYW5kIGRvd25zdHJlYW0gY29uc3VtZXJzIG1heSBicmVhay4gU3BlY2lmaWNhbGx5LCBtdXRhdGluZ1xuICogICAgIGBldmVudC5zcGVjLmZuYCwgYGV2ZW50LnNwZWMuaWRgLCBvciBgZXZlbnQuc3BlYy5jaGlsZHJlbmBcbiAqICAgICBjYW4gY29ycnVwdCBzdWJzZXF1ZW50IHJ1bnRpbWUgYmVoYXZpb3Igb2YgdGhlIGNoYXJ0LlxuICogICAtICoqVHJ1c3QgbW9kZWwqKjogYXR0YWNoIE9OTFkgcmVjb3JkZXJzIGZyb20gdHJ1c3RlZCBjb2RlIHBhdGhzLlxuICogICAgIEEgaG9zdGlsZSBvciBidWdneSByZWNvcmRlciBjYW4gZWZmZWN0aXZlbHkgc3Vic3RpdHV0ZSBzdGFnZVxuICogICAgIGZ1bmN0aW9ucyBvciByZXdpcmUgdGhlIGNoYXJ0IHN0cnVjdHVyZS4gVGhlIGByZWFkb25seWBcbiAqICAgICBtYXJrZXJzIGNhbm5vdCBkZWZlbmQgYWdhaW5zdCBpbnRlbnRpb25hbCBtdXRhdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNsYXNzIFRyYWNlU3RydWN0dXJlUmVjb3JkZXIgaW1wbGVtZW50cyBTdHJ1Y3R1cmVSZWNvcmRlciB7XG4gKiAgIHJlYWRvbmx5IGlkID0gJ3RyYWNlLXN0YXRpYyc7XG4gKiAgIG5vZGVzOiBYeWZsb3dOb2RlW10gPSBbXTtcbiAqICAgZWRnZXM6IFh5Zmxvd0VkZ2VbXSA9IFtdO1xuICpcbiAqICAgb25TdGFnZUFkZGVkKGUpIHtcbiAqICAgICAvLyBOb2RlIHJvbGU6ICdzdGFnZScgaXMgdGhlIGluaXRpYWwgdHlwZS4gSWYgb3V0Z29pbmcgZWRnZXNcbiAqICAgICAvLyBhcnJpdmUgd2l0aCBraW5kICdmb3JrLWJyYW5jaCcgLyAnZGVjaXNpb24tYnJhbmNoJyB0aGUgbm9kZVxuICogICAgIC8vIGlzIGZ1bmN0aW9uaW5nIGFzIGEgZm9yay9kZWNpZGVyIOKAlCBkZXJpdmUgdGhlIHZpc3VhbCBzdHlsZVxuICogICAgIC8vIGZyb20gdGhvc2UgZWRnZXMsIG5vdCBmcm9tIGBlLnR5cGVgIGFsb25lLlxuICogICAgIHRoaXMubm9kZXMucHVzaCh7IGlkOiBlLnN0YWdlSWQsIHR5cGU6ICdsZW5zU3RhZ2UnLCBkYXRhOiB7IGxhYmVsOiBlLm5hbWUgfSB9KTtcbiAqICAgfVxuICogICBvbkVkZ2VBZGRlZChlKSB7XG4gKiAgICAgdGhpcy5lZGdlcy5wdXNoKHsgaWQ6IGAke2UuZnJvbX0tPiR7ZS50b31gLCBzb3VyY2U6IGUuZnJvbSwgdGFyZ2V0OiBlLnRvIH0pO1xuICogICB9XG4gKiAgIG9uU3ViZmxvd01vdW50ZWQoZSkge1xuICogICAgIHRoaXMubm9kZXMucHVzaCh7IGlkOiBlLnN1YmZsb3dJZCwgdHlwZTogJ3N1YmZsb3cnLCBkYXRhOiB7IGxhYmVsOiBlLnN1YmZsb3dOYW1lIH0gfSk7XG4gKiAgIH1cbiAqICAgb25EZWNpZGVyQ29tcGxldGUoZSkge1xuICogICAgIC8vIE9wdGlvbmFsOiBmaW5hbGl6ZSBub2RlIHN0eWxpbmcgbm93IHRoYXQgYnJhbmNoIGxpc3QgaXMgc2VhbGVkLlxuICogICB9XG4gKiB9XG4gKlxuICogLy8gUmVnaXN0cmF0aW9uIG9wdGlvbiBBIOKAlCBvcHRpb25zLWJhZyAocHJlZmVycmVkIHdoZW4gcmVjb3JkZXJzXG4gKiAvLyBhcmUga25vd24gdXAgZnJvbnQ7IGF0dGFjaGVzIEJFRk9SRSB0aGUgc2VlZCBldmVudCBmaXJlcyk6XG4gKiBjb25zdCByZWMgPSBuZXcgVHJhY2VTdHJ1Y3R1cmVSZWNvcmRlcigpO1xuICogY29uc3QgYnVpbGRlciA9IGZsb3dDaGFydCgnc2VlZCcsIGZuLCAnc2VlZCcsIHtcbiAqICAgc3RydWN0dXJlUmVjb3JkZXJzOiBbcmVjXSxcbiAqIH0pLmFkZEZ1bmN0aW9uKCdhJywgZm5BLCAnYScpO1xuICogY29uc3QgY2hhcnQgPSBidWlsZGVyLmJ1aWxkKCk7XG4gKlxuICogLy8gUmVnaXN0cmF0aW9uIG9wdGlvbiBCIOKAlCBmbHVlbnQgY2hhaW4gKHByZWZlcnJlZCBmb3IgY29uZGl0aW9uYWxcbiAqIC8vIG9yIGxhdGUgYXR0YWNoOyB0aGUganVzdC1hdHRhY2hlZCByZWNvcmRlciBnZXRzIGEgc2VlZCByZXBsYXkpOlxuICogY29uc3QgcmVjMiA9IG5ldyBUcmFjZVN0cnVjdHVyZVJlY29yZGVyKCk7XG4gKiBjb25zdCBidWlsZGVyMiA9IGZsb3dDaGFydCgnc2VlZCcsIGZuLCAnc2VlZCcpXG4gKiAgIC5hdHRhY2hTdHJ1Y3R1cmVSZWNvcmRlcihyZWMyKVxuICogICAuYWRkRnVuY3Rpb24oJ2EnLCBmbkEsICdhJyk7XG4gKlxuICogLy8gSW5zcGVjdCBhbnkgcmVjb3JkZXIgZXJyb3JzIChjYWxsIG9uIHRoZSBCVUlMREVSLCBub3QgdGhlIGNoYXJ0KTpcbiAqIGNvbnN0IGVycm9ycyA9IGJ1aWxkZXIuZ2V0U3RydWN0dXJlQnVpbGRFcnJvcnMoKTtcbiAqXG4gKiA8UmVhY3RGbG93IG5vZGVzPXtyZWMubm9kZXN9IGVkZ2VzPXtyZWMuZWRnZXN9IC8+XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZsb3dDaGFydFNwZWMsIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBFdmVudCBwYXlsb2FkIHR5cGVzXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBFdmVudCBwYXlsb2FkIGZvciBgU3RydWN0dXJlUmVjb3JkZXIub25TdGFnZUFkZGVkYC4gRmlyZXMgZm9yIGV2ZXJ5XG4gKiBzcGVjIG5vZGUgYWRkZWQgdG8gdGhlIGNoYXJ0LCBpbmNsdWRpbmcgdGhlIHNlZWQgKGFkZGVkIHZpYVxuICogYGZsb3dDaGFydCgpYCBmYWN0b3J5KSBhbmQgc3ViZmxvdyBtb3VudCBub2Rlcy4gRXhjbHVkZXMgc3ludGhldGljXG4gKiBsb29wLXJlZmVyZW5jZSBub2RlcyAodGhvc2UgY2FycnkgYGlzTG9vcFJlZmVyZW5jZTogdHJ1ZWAgb24gdGhlXG4gKiBzcGVjOyBjb25zdW1lcnMgc2VlIHRoZW0gdmlhIHRoZSBzZXBhcmF0ZSBgb25Mb29wRWRnZUFkZGVkYCBldmVudFxuICogaW5zdGVhZCBvZiBhcyBmcmVzaCBzdGFnZXMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cnVjdHVyZVN0YWdlQWRkZWRFdmVudCB7XG4gIC8qKlxuICAgKiBTdGFibGUgaWRlbnRpZmllciBmb3IgdGhpcyBub2RlLiBBVCBFVkVOVCBGSVJFIFRJTUUgdGhpcyBpcyB0aGVcbiAgICogYnVpbGRlcidzIExPQ0FMIGZvcm0gKG5vIHN1YmZsb3cgcHJlZml4IOKAlCB0aGUgcHJlZml4IGlzIGFwcGxpZWRcbiAgICogbGF0ZXIgYnkgYF9wcmVmaXhOb2RlVHJlZWAgd2hlbiB0aGlzIGJ1aWxkZXIgaXMgbW91bnRlZCBhcyBhXG4gICAqIHN1YmZsb3cgaW50byBhIHBhcmVudCkuXG4gICAqXG4gICAqIE5vdGU6IGBzcGVjLmlkYCBpcyBhIExJVkUgcmVmZXJlbmNlLiBJZiB5b3UgcmVhZCBpdCBBRlRFUiB0aGlzXG4gICAqIGNoYXJ0IGhhcyBiZWVuIG1vdW50ZWQgYXMgYSBzdWJmbG93LCBpdCBtYXkgaGF2ZSBiZWVuIHJld3JpdHRlblxuICAgKiB0byB0aGUgRlVMTCBwcmVmaXhlZCBmb3JtLiBVc2UgYHNwbGl0U3RhZ2VJZChzcGVjLmlkKWAgZnJvbVxuICAgKiBgZm9vdHByaW50anMvdHJhY2VgIHRvIGRlY29tcG9zZSBpdCBiYWNrIGludG8gbG9jYWwgKyBzdWJmbG93UGF0aC5cbiAgICpcbiAgICogQ29ycmVsYXRpbmcgd2l0aCBydW50aW1lIGV2ZW50czpcbiAgICogICAtIFNhbWUgYnVpbGRlciAobm8gbW91bnQpIOKGklxuICAgKiAgICAgYGV2ZW50LnN0YWdlSWQgPT09IHBhcnNlUnVudGltZVN0YWdlSWQocnVudGltZSkuc3RhZ2VJZGBcbiAgICogICAtIFRoaXMgYnVpbGRlciBtb3VudGVkIGFzIHN1YmZsb3cg4oaSIHVzZSBgc3BsaXRTdGFnZUlkYCBvbiB0aGVcbiAgICogICAgIHByZWZpeGVkIGZvcm0gKG9yIGBwYXJzZVJ1bnRpbWVTdGFnZUlkYCBvbiB0aGUgZnVsbFxuICAgKiAgICAgcnVudGltZVN0YWdlSWQpIGJlZm9yZSBjb21wYXJpbmcuXG4gICAqL1xuICByZWFkb25seSBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCBmb3IgdGhlIG5vZGUuICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqIFNwZWMgbm9kZSBgdHlwZWAuIExldHMgcmVjb3JkZXJzIGJyYW5jaCBvbiBzdGFnZSB2cyBkZWNpZGVyIHZzXG4gICAqICBmb3JrIHZzIHN1YmZsb3cgd2l0aG91dCByZS1kZXJpdmluZyBmcm9tIG90aGVyIGZpZWxkcy4gKi9cbiAgcmVhZG9ubHkgdHlwZTogTm9uTnVsbGFibGU8Rmxvd0NoYXJ0U3BlY1sndHlwZSddPjtcbiAgLyoqIFRydWUgZm9yIG5vZGVzIGFkZGVkIHZpYSBgYWRkUGF1c2FibGVGdW5jdGlvbigpYCDigJQgdXNlZnVsIGZvclxuICAgKiAgdmlzdWFsaXNlcnMgdGhhdCB3YW50IHRvIG1hcmsgc3RhZ2VzIHRoYXQgY2FuIHBhdXNlIGV4ZWN1dGlvbi4gKi9cbiAgcmVhZG9ubHkgaXNQYXVzYWJsZT86IGJvb2xlYW47XG4gIC8qKiBMaXZlIHJlZmVyZW5jZSB0byB0aGUgZnVsbCBzcGVjIG5vZGUsIGZvciBoYW5kbGVycyB0aGF0IHdhbnRcbiAgICogIGRldGFpbHMgYmV5b25kIHRoZSBkaXNjcmltaW5hdG9yIGZpZWxkcyBhYm92ZS4gTVVTVCBOT1QgYmVcbiAgICogIG11dGF0ZWQgYnkgdGhlIGhhbmRsZXIg4oCUIHJlYWRvbmx5IGlzIHR5cGUtbGV2ZWwgaW50ZW50OyBub1xuICAgKiAgcnVudGltZSBmcmVlemUuIFNlZSBcIlNwZWMgbXV0YXRpb25cIiBpbiB0aGUgZmlsZSBoZWFkZXIgZm9yIHRoZVxuICAgKiAgdHJ1c3QtbW9kZWwgY2F2ZWF0cy4gKi9cbiAgcmVhZG9ubHkgc3BlYzogRmxvd0NoYXJ0U3BlYztcbn1cblxuLyoqIEVkZ2Uga2luZHMgdGhlIGJ1aWxkZXIgcHJvZHVjZXMgYXQgc3RydWN0dXJhbCB0aW1lLiBNYXRjaGVzIHRoZVxuICogIGZvb3RwcmludGpzIGNvbnRyb2wtZmxvdyB2b2NhYnVsYXJ5IHVzZWQgYXQgcnVudGltZS5cbiAqXG4gKiAgV2h5IG5vIGBzdWJmbG93LWVudHJ5YCBoZXJlOiBzdWJmbG93IG1vdW50cyB1c2UgdGhlIGxpZmVjeWNsZVxuICogIGV2ZW50IGBvblN1YmZsb3dNb3VudGVkYCAobm90IGFuIGVkZ2UgZXZlbnQpLiBJZiBhIGZ1dHVyZSB1c2UgY2FzZVxuICogIG5lZWRzIHRoZSBwYXJlbnTihpJzdWJmbG93LXJvb3QgZWRnZSBhcyBhIGRpc3RpbmN0IGtpbmQsIGl0J2xsIGJlXG4gKiAgYWRkZWQgdGhlbiDigJQgWUFHTkkgbm93IChQYW5lbCAzLCBMNy4yIHJldmlldykuICovXG5leHBvcnQgdHlwZSBTdHJ1Y3R1cmVFZGdlS2luZCA9XG4gIHwgJ25leHQnIC8vIGxpbmVhciBjaGFpbjogcHJldi5uZXh0ID0gY3VyclxuICB8ICdmb3JrLWJyYW5jaCcgLy8gZm9yayBwYXJlbnQg4oaSIHBhcmFsbGVsIGNoaWxkXG4gIHwgJ2RlY2lzaW9uLWJyYW5jaCc7IC8vIGRlY2lkZXIg4oaSIGJyYW5jaCBjaGlsZFxuXG4vKipcbiAqIEV2ZW50IHBheWxvYWQgZm9yIGBTdHJ1Y3R1cmVSZWNvcmRlci5vbkVkZ2VBZGRlZGAuIEZpcmVzIHdoZW5ldmVyXG4gKiB0aGUgYnVpbGRlciB3aXJlcyBhbiBvdXRnb2luZyBlZGdlIGZyb20gb25lIG5vZGUgdG8gYW5vdGhlci4gQm90aFxuICogZW5kcG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIGFubm91bmNlZCB2aWEgYG9uU3RhZ2VBZGRlZGAgYnkgdGhlXG4gKiB0aW1lIHRoaXMgZmlyZXMuXG4gKlxuICogTG9vcCBiYWNrLWVkZ2VzIGhhdmUgdGhlaXIgT1dOIGV2ZW50IChgb25Mb29wRWRnZUFkZGVkYCkgc29cbiAqIGNvbnN1bWVycyBjYW4gdGhlbWUgdGhlbSBkaXN0aW5jdGx5IGFuZCBzbyBidWlsZC10aW1lIGV2ZW50cyBzdGF5XG4gKiBmcmVlIG9mIHRoZSBydW50aW1lLW9ubHkgYGl0ZXJhdGlvbmAgZmllbGQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlRWRnZUFkZGVkRXZlbnQge1xuICByZWFkb25seSBmcm9tOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRvOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGtpbmQ6IFN0cnVjdHVyZUVkZ2VLaW5kO1xuICAvKiogT3B0aW9uYWwgaHVtYW4tcmVhZGFibGUgbGFiZWwg4oCUIHVzZWQgdG9kYXkgZm9yIGRlY2lkZXIgYnJhbmNoXG4gICAqICBrZXlzIChlLmcuLCBgJ2xvdydgLCBgJ2hpZ2gnYCwgYCdoaWdoIChkZWZhdWx0KSdgKSBhbmQgcGFyYWxsZWxcbiAgICogIGJyYW5jaCBpZHMuICovXG4gIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV2ZW50IHBheWxvYWQgZm9yIGBTdHJ1Y3R1cmVSZWNvcmRlci5vbkxvb3BFZGdlQWRkZWRgLiBGaXJlcyB3aGVuXG4gKiBgLmxvb3BUbyh0YXJnZXQpYCBpbnN0YWxscyBhIGJhY2stZWRnZS4gRGlzdGluY3QgZnJvbVxuICogYG9uRWRnZUFkZGVkYCBzbyBjb25zdW1lcnMgY2FuIHRoZW1lIGJhY2stZWRnZXMgZGlmZmVyZW50bHkgYW5kXG4gKiBiZWNhdXNlIHJ1bnRpbWUgYG9uTG9vcGAgY2FycmllcyBgaXRlcmF0aW9uOiBudW1iZXJgIHdoaWNoIGhhcyBub1xuICogYnVpbGQtdGltZSBtZWFuaW5nIOKAlCBrZWVwaW5nIHRoZSBldmVudHMgc2VwYXJhdGVkIGF2b2lkcyBmb3JjaW5nXG4gKiBhbiBgaXRlcmF0aW9uPzogbnVtYmVyYCBsaWUgaW50byB0aGUgc3RydWN0dXJhbCBzaGFwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJ1Y3R1cmVMb29wRWRnZUFkZGVkRXZlbnQge1xuICByZWFkb25seSBmcm9tOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRvOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXZlbnQgcGF5bG9hZCBmb3IgYFN0cnVjdHVyZVJlY29yZGVyLm9uRGVjaWRlckNvbXBsZXRlYC4gRmlyZXNcbiAqIHdoZW4gYSBkZWNpZGVyIC8gc2VsZWN0b3Igc3ViLWJ1aWxkZXIgY2xvc2VzIHZpYSBgLmVuZCgpYC4gQnkgdGhlXG4gKiB0aW1lIHRoaXMgZmlyZXMgZXZlcnkgYnJhbmNoIGhhcyBiZWVuIGFubm91bmNlZCBhbmQgdGhlXG4gKiBgZGVmYXVsdEJyYW5jaGAgKGlmIHNldCB2aWEgYC5zZXREZWZhdWx0KClgKSBpcyBmaW5hbC4gTGV0c1xuICogcmVjb3JkZXJzIHRyZWF0IHRoZSBkZWNpZGVyIGFzIG5vLWZ1cnRoZXItbXV0YXRpb24gYW5kIHNuYXBzaG90XG4gKiBpdHMgYnJhbmNoIGxpc3QgYXMgZmluYWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlRGVjaWRlckNvbXBsZXRlRXZlbnQge1xuICAvKiogRGVjaWRlciAvIHNlbGVjdG9yIHN0YWdlIGlkLiAqL1xuICByZWFkb25seSBkZWNpZGVyOiBzdHJpbmc7XG4gIC8qKiBTcGVjIHR5cGUgKGAnZGVjaWRlcidgIHZzIGAnc2VsZWN0b3InYCkg4oCUIGV4cG9zZWQgc28gY29uc3VtZXJzXG4gICAqICBkb24ndCBuZWVkIHRvIGxvb2sgdXAgdGhlIG9yaWdpbmFsIGBvblN0YWdlQWRkZWRgIGV2ZW50LiAqL1xuICByZWFkb25seSB0eXBlOiAnZGVjaWRlcicgfCAnc2VsZWN0b3InO1xuICAvKiogQnJhbmNoIG1lbWJlciBpZHMgaW4gZGVjbGFyYXRpb24gb3JkZXIuICovXG4gIHJlYWRvbmx5IGJyYW5jaElkczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBEZWZhdWx0IGJyYW5jaCBpZCB3aGVuIHNldCB2aWEgYC5zZXREZWZhdWx0KClgOyB1bmRlZmluZWQgd2hlblxuICAgKiAgbm8gZGVmYXVsdCBpcyBjb25maWd1cmVkIChlLmcuLCBzZWxlY3RvcnMpLiAqL1xuICByZWFkb25seSBkZWZhdWx0QnJhbmNoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV2ZW50IHBheWxvYWQgZm9yIGBTdHJ1Y3R1cmVSZWNvcmRlci5vblN1YmZsb3dNb3VudGVkYC4gRmlyZXMgb25jZVxuICogcGVyIHN1YmZsb3cgbW91bnQgKGBhZGRTdWJGbG93Q2hhcnRgIC8gYGFkZFN1YkZsb3dDaGFydE5leHRgIGFuZFxuICogdGhlaXIgbGF6eSB2YXJpYW50cykuXG4gKlxuICogKipNT1VOVC1PTkxZIHNlbWFudGljcyoqIOKAlCB0aGUgc3ViZmxvdydzIE9XTiBzdHJ1Y3R1cmUgZXZlbnRzXG4gKiAoZXZlcnkgYG9uU3RhZ2VBZGRlZGAgLyBgb25FZGdlQWRkZWRgIGluc2lkZSB0aGUgc3ViZmxvdykgZmlyZWRcbiAqIGR1cmluZyB0aGUgc3ViZmxvdydzIG93biBgLmJ1aWxkKClgLCBiZWZvcmUgdGhlIG1vdW50LiBQYXJlbnRcbiAqIHJlY29yZGVycyBkbyBOT1QgcmVjZWl2ZSBhIHJlcGxheS4gSW5zdGVhZCwgdGhpcyBldmVudCBkZWxpdmVyc1xuICogdGhlIHN1YmZsb3cncyBmdWxsIHN0cnVjdHVyZSB2aWEgYHN1YmZsb3dTcGVjYCwgYW5kIGNvbnN1bWVycyBjYW5cbiAqIHdhbGsgaXQgdmlhIGB3YWxrU3ViZmxvd1NwZWNgIGZyb20gYGZvb3RwcmludGpzL3RyYWNlYC5cbiAqXG4gKiBUaGlzIG1hdGNoZXMgYEZsb3dSZWNvcmRlci5vblN1YmZsb3dFbnRyeWAgc2VtYW50aWNzIGF0IHJ1bnRpbWVcbiAqIChwYXJlbnRzIHNlZSB0aGUgYm91bmRhcnksIG5vdCBhIHJlcGxheSBvZiBpbnRlcm5hbHMpIGFuZFxuICogcHJlc2VydmVzIHRoZSBcIm9uZSBwdXJwb3NlIHBlciByZWNvcmRlclwiIGNvbnZlbnRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlU3ViZmxvd01vdW50ZWRFdmVudCB7XG4gIC8qKiBTdWJmbG93IGlkZW50aWZpZXIgdGhlIHBhcmVudCBhc3NpZ25lZCBhdCBtb3VudC4gKi9cbiAgcmVhZG9ubHkgc3ViZmxvd0lkOiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBzdWJmbG93IG5hbWUuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dOYW1lOiBzdHJpbmc7XG4gIC8qKiBNb3VudCBub2RlIGlkIGluIHRoZSBwYXJlbnQncyBjaGFydC4gKi9cbiAgcmVhZG9ubHkgcm9vdFN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFRydWUgd2hlbiB0aGUgbW91bnQgdXNlcyBsYXp5IHJlc29sdXRpb24gKGRlZmVycmVkIHN1YmZsb3dcbiAgICogIHJlc29sdXRpb24gdW50aWwgZXhlY3V0aW9uKS4gKi9cbiAgcmVhZG9ubHkgaXNMYXp5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG1vdW50ZWQgc3ViZmxvdydzIGNvbXBsZXRlIHNwZWMg4oCUIHRoZSBTQU1FIE9CSkVDVFxuICAgKiAoPT09IHJlZmVyZW5jZSBlcXVhbGl0eSkgcmVhY2hhYmxlIHZpYSBgc3ViZmxvdy5idWlsZFRpbWVTdHJ1Y3R1cmVgXG4gICAqIGZvciB0aGUgRmxvd0NoYXJ0IHRoZSBjb25zdW1lciBwYXNzZWQgdG8gYGFkZFN1YkZsb3dDaGFydEJyYW5jaGAgL1xuICAgKiBgYWRkU3ViRmxvd0NoYXJ0YCAvIGBhZGRTdWJGbG93Q2hhcnROZXh0YC5cbiAgICpcbiAgICogVU5ERUZJTkVEIGZvciBsYXp5IG1vdW50cyBhdCBidWlsZCB0aW1lIChgaXNMYXp5OiB0cnVlYCkg4oCUIHRoZVxuICAgKiBzdWJmbG93J3Mgc3RydWN0dXJlIGhhc24ndCBiZWVuIHJlc29sdmVkIHlldC4gQ29uc3VtZXJzIHdhaXRpbmcgb25cbiAgICogbGF6eSBzdWJmbG93cyBoYW5kbGUgdGhlIHJ1bnRpbWUgYG9uU3ViZmxvd0VudHJ5YCBldmVudCBpbnN0ZWFkLlxuICAgKlxuICAgKiBJbW11dGFibGUgcG9zdC1idWlsZDsgY29uc3VtZXJzIE1VU1QgTk9UIG11dGF0ZS5cbiAgICpcbiAgICogQGludGVybmFsIGBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmVgIGlzIGxpYnJhcnktaW50ZXJuYWwuXG4gICAqICAgICAgICAgICBVc2UgYHdhbGtTdWJmbG93U3BlY2AgZnJvbSBgZm9vdHByaW50anMvdHJhY2VgIGZvciB0aGVcbiAgICogICAgICAgICAgIHN0YWJsZSBwdWJsaWMgY29udHJhY3QuXG4gICAqL1xuICByZWFkb25seSBzdWJmbG93U3BlYz86IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZTtcblxuICAvKipcbiAgICogTG9jYWwgbW91bnQgaWQgb2YgdGhpcyBzdWJmbG93IHdpdGhpbiBpdHMgcGFyZW50IOKAlCBlcXVhbCB0b1xuICAgKiBgc3ViZmxvd0lkYCBmb3IgdG9wLWxldmVsIG1vdW50cyAoZS5nLiBgJ2F1dGgnYCksIGNvbXBvc2VkXG4gICAqIChgJ2F1dGgvdmVyaWZ5J2ApIGZvciBuZXN0ZWQgbW91bnRzIHdob3NlIHJlY29yZGVyIGlzIGF0dGFjaGVkXG4gICAqIHRvIHRoZSBncmFuZHBhcmVudC4gTWF0Y2hlcyBydW50aW1lIGB0cmF2ZXJzYWxDb250ZXh0LnN1YmZsb3dQYXRoYFxuICAgKiBzZW1hbnRpY3Mg4oCUIE5FVkVSIHByZWZpeGVkIHdpdGggYF9fcm9vdF9fL2AuXG4gICAqL1xuICByZWFkb25seSBzdWJmbG93UGF0aDogc3RyaW5nO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFN0cnVjdHVyZVJlY29yZGVyIGludGVyZmFjZVxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBCVUlMRC1USU1FIGNoYXJ0IGNvbnN0cnVjdGlvbiBldmVudHMuXG4gKlxuICogQWxsIG1ldGhvZHMgYXJlIG9wdGlvbmFsIOKAlCBpbXBsZW1lbnQgb25seSB0aGUgaG9va3MgeW91IG5lZWQuXG4gKiBIYW5kbGVycyBmaXJlIFNZTkNIUk9OT1VTTFkgZHVyaW5nIGJ1aWxkZXIgb3BlcmF0aW9ucyBhbmQgYC5idWlsZCgpYC5cbiAqIEEgdGhyb3dpbmcgaGFuZGxlciBpcyBjYXVnaHQgKHNlZSBcIkVycm9yIGlzb2xhdGlvblwiIGluIHRoZSBmaWxlXG4gKiBoZWFkZXIpOyBzdWJzZXF1ZW50IGRpc3BhdGNoIGNvbnRpbnVlcy5cbiAqXG4gKiBMaWZlY3ljbGU6IGVhY2ggYFN0cnVjdHVyZVJlY29yZGVyYCBpbnN0YW5jZSBpcyByZWdpc3RlcmVkIHZpYVxuICogRUlUSEVSIHRoZSBgZmxvd0NoYXJ0KClgIG9wdGlvbnMgYmFnIChgeyBzdHJ1Y3R1cmVSZWNvcmRlcnM6IFtyZWNdIH1gKVxuICogT1IgdGhlIGZsdWVudCBgLmF0dGFjaFN0cnVjdHVyZVJlY29yZGVyKHJlYylgIGNoYWluIOKAlCBzZWUgdGhlIGZpbGVcbiAqIGhlYWRlciBmb3IgdGhlIHRyYWRlLW9mZnMuIFJlZ2lzdHJhdGlvbiBhZnRlciBgLmJ1aWxkKClgIGlzXG4gKiByZWplY3RlZCAoY2hhcnQgaXMgc2VhbGVkKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJ1Y3R1cmVSZWNvcmRlciB7XG4gIC8qKlxuICAgKiBTdGFibGUgaWRlbnRpZmllciDigJQgdXNlZCBieSB0aGUgZGlzcGF0Y2hlciB0byBzY29wZSBlcnJvclxuICAgKiBtZXNzYWdlcyBhbmQgdG8gc3VwcG9ydCBgZGV0YWNoKGlkKWAgbG9va3VwLlxuICAgKlxuICAgKiBDb252ZW50aW9uIChtYXRjaGVzIGBGbG93UmVjb3JkZXIuaWRgIGZyb20gQ0xBVURFLm1kKTpcbiAgICogICAtIGRvbWFpbi1wcmVmaXhlZCBrZWJhYi1jYXNlIChgJ2xlbnMtc3RydWN0dXJlJ2AsXG4gICAqICAgICBgJ2FnZW50Zm9vdHByaW50LWNvbXBvc2l0aW9uJ2AsIGAndHJhY2UtZXhwbGFpbmFibGUnYClcbiAgICogICAtIHNhbWUgaWQg4oaSIG11bHRpcGxlIHJlY29yZGVycyBjb2V4aXN0IChOT1QgZGVkdXBsaWNhdGVkIGJ5XG4gICAqICAgICBpZDsgdGhlIGRpc3BhdGNoZXIgZmlyZXMgZXZlcnkgYXR0YWNoZWQgcmVjb3JkZXIgcmVnYXJkbGVzcylcbiAgICogICAtIGBkZXRhY2goaWQpYCByZW1vdmVzIEVWRVJZIHJlY29yZGVyIHdpdGggdGhhdCBpZCDigJQgYmVcbiAgICogICAgIGludGVudGlvbmFsIGFib3V0IHJldXNlIGlmIHlvdSByZWx5IG9uIHNlbGVjdGl2ZSBkZXRhY2hcbiAgICpcbiAgICogQ2hvb3NlIGEgc3RhYmxlIGlkIGF0IG1vZHVsZSBsb2FkIGFuZCBkb24ndCByYW5kb21pc2UgaXQgYWNyb3NzXG4gICAqIHJ1bnMg4oCUIGl0IGxhbmRzIGluIGBTdHJ1Y3R1cmVCdWlsZEVycm9yLnJlY29yZGVySWRgIHNvIGRlYnVnXG4gICAqIG91dHB1dCBpcyBncmVwcGFibGUuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIG9uU3RhZ2VBZGRlZD8oZXZlbnQ6IFN0cnVjdHVyZVN0YWdlQWRkZWRFdmVudCk6IHZvaWQ7XG4gIG9uRWRnZUFkZGVkPyhldmVudDogU3RydWN0dXJlRWRnZUFkZGVkRXZlbnQpOiB2b2lkO1xuICBvbkxvb3BFZGdlQWRkZWQ/KGV2ZW50OiBTdHJ1Y3R1cmVMb29wRWRnZUFkZGVkRXZlbnQpOiB2b2lkO1xuICBvbkRlY2lkZXJDb21wbGV0ZT8oZXZlbnQ6IFN0cnVjdHVyZURlY2lkZXJDb21wbGV0ZUV2ZW50KTogdm9pZDtcbiAgb25TdWJmbG93TW91bnRlZD8oZXZlbnQ6IFN0cnVjdHVyZVN1YmZsb3dNb3VudGVkRXZlbnQpOiB2b2lkO1xufVxuIl19