@tangle-network/sdk-telemetry 0.7.5 → 0.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/index.d.mts +72 -207
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +406 -353
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -10
package/README.md
CHANGED
|
@@ -5,6 +5,10 @@ export for the Agent Dev Container SDK.
|
|
|
5
5
|
|
|
6
6
|
The existing `server-timing` entry exports `partitionLifecycleWalls` for per-input accounting; `stage-span` exports parent, leaf and stage-tree projections. [Lifecycle accounting](src/lifecycle-wall.ts) preserves unavailable timings and signed overlap residuals. Consumers own population grouping, statistics and display labels.
|
|
7
7
|
|
|
8
|
+
## Execution traces as contract spans
|
|
9
|
+
|
|
10
|
+
`executionTraceToContractSpans(trace, { traceId, parentSpanId, attributes })` turns one execution's `TraceEvent`s into [`@tangle-network/agent-trace-contract`](https://www.npmjs.com/package/@tangle-network/agent-trace-contract) spans, which any OTLP-JSONL reader, such as the `traces` CLI, reads without an adapter. A recorded stream keeps its own clock: pass each event's recorded time to `sseToTraceEvent(event, at)`.
|
|
11
|
+
|
|
8
12
|
## LLM call capture
|
|
9
13
|
|
|
10
14
|
Capture LLM calls (model, tokens, latency, prompt/completion) with
|
package/dist/index.d.mts
CHANGED
|
@@ -1,56 +1,7 @@
|
|
|
1
1
|
import { PROVISION_TRACE_ID_HEADER, SpanRecorder, SpanStatus, isAdoptablePtid, mintPtid } from "./stage-span.mjs";
|
|
2
2
|
import { GEN_AI_CONVERSATION_ID, GEN_AI_INPUT_TOKEN_KEYS, GEN_AI_MODEL_KEYS, GEN_AI_OUTPUT_TOKEN_KEYS, GEN_AI_REQUEST_MODEL, GEN_AI_USAGE_INPUT_TOKENS, GEN_AI_USAGE_OUTPUT_TOKENS, MessagePartUpdatedEvent, ParsedSSEEvent, SSEChunkParser, SSEEventData, SSEEventData as SSEEventData$1, TOKEN_USAGE_INPUT_KEYS, TOKEN_USAGE_OUTPUT_KEYS, ToolPart, createStreamUsageExtractor, firstTokenCount, genAiUsageAttributes, isToolPart, tokenCount } from "@tangle-network/agent-core";
|
|
3
|
+
import { AgentIdentity, ContractSpan } from "@tangle-network/agent-trace-contract";
|
|
3
4
|
|
|
4
|
-
//#region src/enrichment/types.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* Enrichment Types
|
|
7
|
-
*
|
|
8
|
-
* Types for client-forwarded metadata blobs and parsed enrichment context.
|
|
9
|
-
* Partners send metadata that parseMetadataBlob turns into an enrichment
|
|
10
|
-
* context attached to traces for analytics and tenant isolation.
|
|
11
|
-
*/
|
|
12
|
-
/** Supported blob formats for metadata transmission */
|
|
13
|
-
type MetadataBlobFormat = "json" | "msgpack" | "protobuf";
|
|
14
|
-
/** Client-forwarded metadata blob */
|
|
15
|
-
interface MetadataBlob {
|
|
16
|
-
/** Serialization format of the data */
|
|
17
|
-
format: MetadataBlobFormat;
|
|
18
|
-
/** Serialized data (base64 for binary formats) */
|
|
19
|
-
data: string | Buffer;
|
|
20
|
-
/** Optional schema identifier for validation */
|
|
21
|
-
schema?: string;
|
|
22
|
-
}
|
|
23
|
-
/** Product context for trace classification */
|
|
24
|
-
type ProductType = "vibe_coding" | "simulation" | "background_agent";
|
|
25
|
-
/** Environment context */
|
|
26
|
-
type EnvironmentType = "development" | "staging" | "production";
|
|
27
|
-
/** Subscription tier for rate limiting and feature gating */
|
|
28
|
-
type SubscriptionTier = "free" | "pro" | "enterprise";
|
|
29
|
-
/**
|
|
30
|
-
* Parsed enrichment context attached to traces.
|
|
31
|
-
* Built from partner metadata blobs by parseMetadataBlob.
|
|
32
|
-
*/
|
|
33
|
-
interface EnrichmentContext {
|
|
34
|
-
/** Partner identifier for tenant isolation */
|
|
35
|
-
partnerId?: string;
|
|
36
|
-
/** Subscription tier for rate limiting */
|
|
37
|
-
subscriptionTier?: SubscriptionTier;
|
|
38
|
-
/** End user identifier within partner's system */
|
|
39
|
-
endUserId?: string;
|
|
40
|
-
/** Product context */
|
|
41
|
-
product?: ProductType;
|
|
42
|
-
/** Deployment environment */
|
|
43
|
-
environment?: EnvironmentType;
|
|
44
|
-
/** Custom key-value labels for filtering */
|
|
45
|
-
customLabels: Record<string, string>;
|
|
46
|
-
/** Original blob for audit/replay */
|
|
47
|
-
rawBlob?: MetadataBlob;
|
|
48
|
-
}
|
|
49
|
-
//#endregion
|
|
50
|
-
//#region src/enrichment/parse.d.ts
|
|
51
|
-
/** Parse a metadata blob into an enrichment context that keeps the raw blob. */
|
|
52
|
-
declare function parseMetadataBlob(blob: MetadataBlob): EnrichmentContext;
|
|
53
|
-
//#endregion
|
|
54
5
|
//#region src/trace-types.d.ts
|
|
55
6
|
/**
|
|
56
7
|
* MessagePartUpdatedEvent with timestamp for trace collection.
|
|
@@ -117,110 +68,6 @@ interface ErrorEvent extends TraceEventBase {
|
|
|
117
68
|
/** Source of error (tool name, file, etc.) */
|
|
118
69
|
source?: string;
|
|
119
70
|
}
|
|
120
|
-
/** Diagnostic severity levels */
|
|
121
|
-
type DiagnosticSeverity = "error" | "warning" | "info" | "hint";
|
|
122
|
-
/** Individual diagnostic message */
|
|
123
|
-
interface Diagnostic {
|
|
124
|
-
/** Severity level */
|
|
125
|
-
severity: DiagnosticSeverity;
|
|
126
|
-
/** Diagnostic message */
|
|
127
|
-
message: string;
|
|
128
|
-
/** Diagnostic code (e.g., "TS2304", "E0001") */
|
|
129
|
-
code?: string | number;
|
|
130
|
-
/** Source (e.g., "typescript", "eslint") */
|
|
131
|
-
source?: string;
|
|
132
|
-
/** Start line (0-indexed) */
|
|
133
|
-
startLine: number;
|
|
134
|
-
/** Start column (0-indexed) */
|
|
135
|
-
startColumn: number;
|
|
136
|
-
/** End line (0-indexed) */
|
|
137
|
-
endLine: number;
|
|
138
|
-
/** End column (0-indexed) */
|
|
139
|
-
endColumn: number;
|
|
140
|
-
}
|
|
141
|
-
/** Summary of diagnostics for a file */
|
|
142
|
-
interface DiagnosticSummary {
|
|
143
|
-
errors: number;
|
|
144
|
-
warnings: number;
|
|
145
|
-
infos: number;
|
|
146
|
-
hints: number;
|
|
147
|
-
}
|
|
148
|
-
/** Diagnostic change event - captured after file edits */
|
|
149
|
-
interface DiagnosticEvent extends TraceEventBase {
|
|
150
|
-
type: "diagnostic";
|
|
151
|
-
/** File path */
|
|
152
|
-
file: string;
|
|
153
|
-
/** Language server ID */
|
|
154
|
-
serverId?: string;
|
|
155
|
-
/** Language (e.g., "typescript", "python") */
|
|
156
|
-
language?: string;
|
|
157
|
-
/** Diagnostics before the change */
|
|
158
|
-
before?: Diagnostic[];
|
|
159
|
-
/** Diagnostics after the change */
|
|
160
|
-
after: Diagnostic[];
|
|
161
|
-
/** Summary counts before */
|
|
162
|
-
beforeSummary?: DiagnosticSummary;
|
|
163
|
-
/** Summary counts after */
|
|
164
|
-
afterSummary: DiagnosticSummary;
|
|
165
|
-
/** Net change in error count (negative = improvement) */
|
|
166
|
-
errorDelta: number;
|
|
167
|
-
/** Diagnostics that were resolved */
|
|
168
|
-
resolved?: Diagnostic[];
|
|
169
|
-
/** Diagnostics that were introduced */
|
|
170
|
-
introduced?: Diagnostic[];
|
|
171
|
-
}
|
|
172
|
-
/** File change event */
|
|
173
|
-
interface FileChangeEvent extends TraceEventBase {
|
|
174
|
-
type: "file_change";
|
|
175
|
-
/** File path */
|
|
176
|
-
file: string;
|
|
177
|
-
/** Change type */
|
|
178
|
-
changeType: "created" | "modified" | "deleted";
|
|
179
|
-
/** Lines added */
|
|
180
|
-
linesAdded?: number;
|
|
181
|
-
/** Lines removed */
|
|
182
|
-
linesRemoved?: number;
|
|
183
|
-
}
|
|
184
|
-
/** Build result event */
|
|
185
|
-
interface BuildResultEvent extends TraceEventBase {
|
|
186
|
-
type: "build_result";
|
|
187
|
-
/** Build command */
|
|
188
|
-
command?: string;
|
|
189
|
-
/** Whether build succeeded */
|
|
190
|
-
success: boolean;
|
|
191
|
-
/** Duration in milliseconds */
|
|
192
|
-
durationMs?: number;
|
|
193
|
-
/** Error count */
|
|
194
|
-
errorCount?: number;
|
|
195
|
-
/** Warning count */
|
|
196
|
-
warningCount?: number;
|
|
197
|
-
}
|
|
198
|
-
/** Test result event */
|
|
199
|
-
interface TestResultEvent extends TraceEventBase {
|
|
200
|
-
type: "test_result";
|
|
201
|
-
/** Test command */
|
|
202
|
-
command?: string;
|
|
203
|
-
/** Whether all tests passed */
|
|
204
|
-
success: boolean;
|
|
205
|
-
/** Duration in milliseconds */
|
|
206
|
-
durationMs?: number;
|
|
207
|
-
/** Number of tests passed */
|
|
208
|
-
passed?: number;
|
|
209
|
-
/** Number of tests failed */
|
|
210
|
-
failed?: number;
|
|
211
|
-
/** Number of tests skipped */
|
|
212
|
-
skipped?: number;
|
|
213
|
-
}
|
|
214
|
-
/** Environment snapshot at trace start */
|
|
215
|
-
interface EnvironmentEvent extends TraceEventBase {
|
|
216
|
-
type: "environment";
|
|
217
|
-
/** Runtime versions */
|
|
218
|
-
versions?: Record<string, string>;
|
|
219
|
-
/** Working directory */
|
|
220
|
-
workingDir?: string;
|
|
221
|
-
/** Platform info */
|
|
222
|
-
platform?: string;
|
|
223
|
-
}
|
|
224
71
|
/** Generic event for extensibility (use sparingly) */
|
|
225
72
|
interface CustomEvent extends TraceEventBase {
|
|
226
73
|
type: "custom";
|
|
@@ -230,7 +77,7 @@ interface CustomEvent extends TraceEventBase {
|
|
|
230
77
|
data: Record<string, unknown>;
|
|
231
78
|
}
|
|
232
79
|
/** Union of all trace event types */
|
|
233
|
-
type TraceEvent = MessagePartUpdatedEventWithTimestamp | MessageUpdatedEvent | ErrorEvent |
|
|
80
|
+
type TraceEvent = MessagePartUpdatedEventWithTimestamp | MessageUpdatedEvent | ErrorEvent | CustomEvent;
|
|
234
81
|
/** Execution outcome derived from signals */
|
|
235
82
|
type Outcome = "success" | "partial" | "failure" | "unknown";
|
|
236
83
|
/** Execution trace - complete record of an agent task */
|
|
@@ -246,50 +93,72 @@ interface ExecutionTrace {
|
|
|
246
93
|
metadata?: Record<string, unknown>;
|
|
247
94
|
}
|
|
248
95
|
//#endregion
|
|
249
|
-
//#region src/
|
|
250
|
-
/**
|
|
251
|
-
interface
|
|
252
|
-
/**
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
|
|
262
|
-
* Langfuse objects (HIPAA deployments: pass a PHI deep redactor). The
|
|
263
|
-
* hook is injected rather than imported so this package stays free of
|
|
264
|
-
* Node-only redaction dependencies and Worker-safe.
|
|
265
|
-
*/
|
|
266
|
-
redactTrace?: (trace: ExecutionTrace) => ExecutionTrace;
|
|
96
|
+
//#region src/contract-spans.d.ts
|
|
97
|
+
/** Where an execution's spans go and who they belong to. */
|
|
98
|
+
interface ContractSpanContext {
|
|
99
|
+
/** The W3C trace id (32 hex) every span joins; `toW3CTraceId` makes one from a readable id. */
|
|
100
|
+
readonly traceId: string;
|
|
101
|
+
/** The span the execution hangs under. Omitted or null, the execution is the trace's root. */
|
|
102
|
+
readonly parentSpanId?: string | null;
|
|
103
|
+
/** Who acted, stamped on every span. */
|
|
104
|
+
readonly agent?: AgentIdentity;
|
|
105
|
+
/** Attributes stamped on every span, such as the session id a reader groups by. */
|
|
106
|
+
readonly attributes?: Record<string, unknown>;
|
|
107
|
+
/** Characters kept of each message, reasoning part, tool input and tool output; 0 keeps none. Default 8000. */
|
|
108
|
+
readonly contentChars?: number;
|
|
267
109
|
}
|
|
110
|
+
/** Project one execution's events: the execution span, then each span in the order its first event arrived. */
|
|
111
|
+
declare function executionTraceToContractSpans(trace: ExecutionTrace, context: ContractSpanContext): ContractSpan[];
|
|
112
|
+
//#endregion
|
|
113
|
+
//#region src/enrichment/types.d.ts
|
|
268
114
|
/**
|
|
269
|
-
*
|
|
270
|
-
*
|
|
271
|
-
* Creates proper Langfuse traces with spans and generations
|
|
272
|
-
* for rich observability in the Langfuse dashboard.
|
|
115
|
+
* Enrichment Types
|
|
273
116
|
*
|
|
274
|
-
*
|
|
275
|
-
*
|
|
117
|
+
* Types for client-forwarded metadata blobs and parsed enrichment context.
|
|
118
|
+
* Partners send metadata that parseMetadataBlob turns into an enrichment
|
|
119
|
+
* context attached to traces for analytics and tenant isolation.
|
|
276
120
|
*/
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
close(): Promise<void>;
|
|
121
|
+
/** Supported blob formats for metadata transmission */
|
|
122
|
+
type MetadataBlobFormat = "json" | "msgpack" | "protobuf";
|
|
123
|
+
/** Client-forwarded metadata blob */
|
|
124
|
+
interface MetadataBlob {
|
|
125
|
+
/** Serialization format of the data */
|
|
126
|
+
format: MetadataBlobFormat;
|
|
127
|
+
/** Serialized data (base64 for binary formats) */
|
|
128
|
+
data: string | Buffer;
|
|
129
|
+
/** Optional schema identifier for validation */
|
|
130
|
+
schema?: string;
|
|
288
131
|
}
|
|
132
|
+
/** Product context for trace classification */
|
|
133
|
+
type ProductType = "vibe_coding" | "simulation" | "background_agent";
|
|
134
|
+
/** Environment context */
|
|
135
|
+
type EnvironmentType = "development" | "staging" | "production";
|
|
136
|
+
/** Subscription tier for rate limiting and feature gating */
|
|
137
|
+
type SubscriptionTier = "free" | "pro" | "enterprise";
|
|
289
138
|
/**
|
|
290
|
-
*
|
|
139
|
+
* Parsed enrichment context attached to traces.
|
|
140
|
+
* Built from partner metadata blobs by parseMetadataBlob.
|
|
291
141
|
*/
|
|
292
|
-
|
|
142
|
+
interface EnrichmentContext {
|
|
143
|
+
/** Partner identifier for tenant isolation */
|
|
144
|
+
partnerId?: string;
|
|
145
|
+
/** Subscription tier for rate limiting */
|
|
146
|
+
subscriptionTier?: SubscriptionTier;
|
|
147
|
+
/** End user identifier within partner's system */
|
|
148
|
+
endUserId?: string;
|
|
149
|
+
/** Product context */
|
|
150
|
+
product?: ProductType;
|
|
151
|
+
/** Deployment environment */
|
|
152
|
+
environment?: EnvironmentType;
|
|
153
|
+
/** Custom key-value labels for filtering */
|
|
154
|
+
customLabels: Record<string, string>;
|
|
155
|
+
/** Original blob for audit/replay */
|
|
156
|
+
rawBlob?: MetadataBlob;
|
|
157
|
+
}
|
|
158
|
+
//#endregion
|
|
159
|
+
//#region src/enrichment/parse.d.ts
|
|
160
|
+
/** Parse a metadata blob into an enrichment context that keeps the raw blob. */
|
|
161
|
+
declare function parseMetadataBlob(blob: MetadataBlob): EnrichmentContext;
|
|
293
162
|
//#endregion
|
|
294
163
|
//#region src/otel-provider.d.ts
|
|
295
164
|
/**
|
|
@@ -378,8 +247,7 @@ declare function createOtelSink(config?: OtelSinkConfig): OtelTelemetrySink;
|
|
|
378
247
|
/**
|
|
379
248
|
* Create an OTEL sink from environment variables.
|
|
380
249
|
*
|
|
381
|
-
* Returns a sink that uses the global tracer (
|
|
382
|
-
* separately via NodeSDK with LangfuseSpanProcessor or OTLPTraceExporter).
|
|
250
|
+
* Returns a sink that uses the global tracer (initialized separately).
|
|
383
251
|
*/
|
|
384
252
|
declare function createOtelSinkFromEnv(): OtelTelemetrySink | null;
|
|
385
253
|
//#endregion
|
|
@@ -429,12 +297,15 @@ declare function createHttpSink(config: {
|
|
|
429
297
|
* `ToolPart`) so consumers don't need to reach into provider-specific
|
|
430
298
|
* raw shapes to render tool calls. Unrecognized raw events fall
|
|
431
299
|
* through to a `custom` trace event.
|
|
300
|
+
*
|
|
301
|
+
* `timestamp` is when the event happened: now for a live stream, the recorded
|
|
302
|
+
* time for a recorded one, so the trace keeps the run's own clock.
|
|
432
303
|
*/
|
|
433
|
-
declare function sseToTraceEvent(event: SSEEventData$1): TraceEvent | null;
|
|
304
|
+
declare function sseToTraceEvent(event: SSEEventData$1, timestamp?: Date): TraceEvent | null;
|
|
434
305
|
/**
|
|
435
|
-
* Extract a signal from an SSE event if present
|
|
306
|
+
* Extract a signal from an SSE event if present; `at` as in {@link sseToTraceEvent}'s `timestamp`.
|
|
436
307
|
*/
|
|
437
|
-
declare function sseToSignal(event: SSEEventData$1): SignalEvent | null;
|
|
308
|
+
declare function sseToSignal(event: SSEEventData$1, at?: Date): SignalEvent | null;
|
|
438
309
|
//#endregion
|
|
439
310
|
//#region src/trace-collector.d.ts
|
|
440
311
|
interface TraceCollectorConfig {
|
|
@@ -494,18 +365,12 @@ declare function createTraceCollector(config: TraceCollectorConfig): TraceCollec
|
|
|
494
365
|
//#endregion
|
|
495
366
|
//#region src/trace-span-projection.d.ts
|
|
496
367
|
type EventAttributes = Record<string, string | number | boolean | undefined>;
|
|
497
|
-
/** A sink writes this descriptor
|
|
368
|
+
/** A sink writes this descriptor as one span. */
|
|
498
369
|
interface TraceEventProjection {
|
|
499
|
-
kind: "span" | "event" | "generation";
|
|
500
370
|
name: string;
|
|
501
371
|
startTime: Date;
|
|
502
372
|
endTime?: Date;
|
|
503
|
-
attributes
|
|
504
|
-
metadata?: Record<string, unknown>;
|
|
505
|
-
input?: unknown;
|
|
506
|
-
output?: unknown;
|
|
507
|
-
level?: "ERROR";
|
|
508
|
-
statusMessage?: string;
|
|
373
|
+
attributes: EventAttributes;
|
|
509
374
|
error?: string;
|
|
510
375
|
exception?: boolean;
|
|
511
376
|
}
|
|
@@ -516,7 +381,7 @@ declare function flattenTraceMetadata(data: Record<string, unknown> | undefined)
|
|
|
516
381
|
* their existing names, payload policies and timing rather than changing stored
|
|
517
382
|
* trace schemas. Signals, transport, redaction and native writes stay in sinks.
|
|
518
383
|
*/
|
|
519
|
-
declare function projectTraceEvent(event: TraceEvent, format: "otel" | "
|
|
384
|
+
declare function projectTraceEvent(event: TraceEvent, format: "otel" | "intelligence", includePayloads?: boolean): TraceEventProjection;
|
|
520
385
|
//#endregion
|
|
521
|
-
export { type
|
|
386
|
+
export { type ContractSpanContext, type CustomEvent, type ErrorEvent, type ExecutionTrace, GEN_AI_CONVERSATION_ID, GEN_AI_INPUT_TOKEN_KEYS, GEN_AI_MODEL_KEYS, GEN_AI_OUTPUT_TOKEN_KEYS, GEN_AI_REQUEST_MODEL, GEN_AI_USAGE_INPUT_TOKENS, GEN_AI_USAGE_OUTPUT_TOKENS, HttpTelemetrySink, type InitOtelProviderResult, type MessagePartUpdatedEventWithTimestamp, type MessageUpdatedEvent, MultiTelemetrySink, type OtelSinkConfig, OtelTelemetrySink, type Outcome, PROVISION_TRACE_ID_HEADER, type ParsedSSEEvent, SSEChunkParser, type SSEEventData, type SignalEvent, SpanRecorder, type SpanStatus, TOKEN_USAGE_INPUT_KEYS, TOKEN_USAGE_OUTPUT_KEYS, type TelemetryEvent, type TelemetrySink, type ToolPart, TraceCollector, type TraceCollectorConfig, type TraceContext, type TraceEvent, type TraceScope, createHttpSink, createOtelSink, createOtelSinkFromEnv, createStreamUsageExtractor, createTraceCollector, executionTraceToContractSpans, firstTokenCount, flattenTraceMetadata, genAiUsageAttributes, initOtelProvider, isAdoptablePtid, isToolPart, mintPtid, parseMetadataBlob, projectTraceEvent, shutdownOtelProvider, sseToSignal, sseToTraceEvent, tokenCount };
|
|
522
387
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/trace-types.ts","../src/contract-spans.ts","../src/enrichment/types.ts","../src/enrichment/parse.ts","../src/otel-provider.ts","../src/types.ts","../src/otel-sink.ts","../src/sinks.ts","../src/sse-parser.ts","../src/trace-collector.ts","../src/trace-span-projection.ts"],"mappings":";;;;;;;;;UAgBiB,oCAAA,SACP,uBAAA;EAMiB;EAJzB,SAAA,EAAW,IAAA;AAAA;;UAII,UAAA;EACf,UAAA;EACA,SAAA;EAWA;EATA,eAAA;EACA,MAAA;EAQ2B;AAI7B;;;;;AAcA;EAlBE,kBAAA,GAAqB,MAAA;AAAA;;KAIX,MAAA;AAAA,UAcK,WAAA;EACf,MAAA,EAAQ,MAAA;EACR,SAAA,EAAW,IAAA;EACX,QAAA,GAAW,MAAA;AAAA;;UAQH,cAAA;EACR,SAAA,EAAW,IAAA;AAAA;;UAII,mBAAA,SAA4B,cAAA;EAC3C,IAAA;EANsB;EAQtB,IAAA;EAPA;EASA,SAAA;EALe;EAOf,UAAA,GAAa,MAAA;;EAEb,MAAA,GAAS,MAAA;EAAA;EAET,eAAA;EAX2C;EAa3C,QAAA,GAAW,MAAA;AAAA;;UAII,UAAA,SAAmB,cAAA;EAClC,IAAA;EAbA;EAeA,QAAA;EAba;EAeb,OAAA;EAbS;EAeT,KAAA;EAXA;EAaA,IAAA;EAbiB;EAejB,MAAA;AAAA;;UAIe,WAAA,SAAoB,cAAA;EACnC,IAAA;EAhBkC;EAkBlC,IAAA;EAfA;EAiBA,IAAA,EAAM,MAAA;AAAA;;KAII,UAAA,GAER,oCAAA,GACA,mBAAA,GACA,UAAA,GACA,WAAA;;KAOQ,OAAA;AArBZ;AAAA,UAwBiB,cAAA;EACf,EAAA;EACA,KAAA,EAAO,UAAA;EACP,IAAA;EACA,MAAA,EAAQ,UAAA;EACR,OAAA,EAAS,WAAA;EACT,OAAA,EAAS,OAAA;EACT,SAAA,EAAW,IAAA;EACX,WAAA,GAAc,IAAA;EACd,QAAA,GAAW,MAAA;AAAA;;;;UC/FI,mBAAA;EDff;EAAA,SCiBS,OAAA;EDdT;EAAA,SCgBS,YAAA;EDRY;EAAA,SCUZ,KAAA,GAAQ,aAAA;EDVU;EAAA,SCYlB,UAAA,GAAa,MAAA;EDRN;EAAA,SCUP,YAAA;AAAA;;iBA0BK,6BAAA,CACd,KAAA,EAAO,cAAA,EACP,OAAA,EAAS,mBAAA,GACR,YAAA;;;;;;;;AD/DH;;;KEPY,kBAAA;;UAGK,YAAA;EFOJ;EELX,MAAA,EAAQ,kBAAA;EFKO;EEHf,IAAA,WAAe,MAAA;EFOU;EELzB,MAAA;AAAA;;KAIU,WAAA;;KAGA,eAAA;;KAGA,gBAAA;;;AFYZ;;UENiB,iBAAA;EFMC;EEJhB,SAAA;EFkBe;EEhBf,gBAAA,GAAmB,gBAAA;;EAEnB,SAAA;EFgBW;EEdX,OAAA,GAAU,WAAA;EFeO;EEbjB,WAAA,GAAc,eAAA;EFWd;EETA,YAAA,EAAc,MAAA;EFUd;EERA,OAAA,GAAU,YAAA;AAAA;;;AFhCZ;AAAA,iBGuDgB,iBAAA,CAAkB,IAAA,EAAM,YAAA,GAAe,iBAAA;;;;;;;;AHvDvD;;;;;;;;;AAOA;;;UILiB,sBAAA;EACf,MAAA;EACA,MAAA;AAAA;AAAA,iBAwBoB,gBAAA,CACpB,WAAA,WACC,OAAA,CAAQ,sBAAA;AAAA,iBA+CW,oBAAA,CAAA,GAAwB,OAAA;;;KC5FlC,kBAAA;AAAA,UAUK,cAAA;EACf,EAAA;EACA,IAAA,EAAM,kBAAA;EACN,IAAA;EACA,UAAA;EACA,SAAA;EACA,MAAA;EACA,IAAA,EAAM,MAAA;EACN,SAAA,EAAW,IAAA;EACX,QAAA;AAAA;AAAA,UAIe,aAAA;EACf,IAAA;EACA,IAAA,CAAK,MAAA,EAAQ,cAAA,KAAmB,OAAA;EAChC,KAAA,IAAS,OAAA;EACT,KAAA,IAAS,OAAA;AAAA;;;ALYX;AAAA,UMUiB,cAAA;;EAEf,WAAA;ENZgB;EMchB,eAAA;AAAA;;;;;cAwBW,iBAAA,YAA6B,aAAA;EAAA,SAC/B,IAAA;EAAA,iBACQ,MAAA;cAEL,MAAA,GAAQ,cAAA;EAOd,IAAA,CAAK,MAAA,EAAQ,cAAA,KAAmB,OAAA;ENjC3B;;;;;AAEZ;EMmFO,WAAA,CAAY,KAAA,EAAO,cAAA,GAAiB,OAAA;;;;UAiElC,eAAA;ENxI2B;EAAA,QM0J3B,gBAAA;EAUF,KAAA,CAAA,GAAS,OAAA;EAIT,KAAA,CAAA,GAAS,OAAA;AAAA;;;;;;iBAUD,cAAA,CAAe,MAAA,GAAS,cAAA,GAAiB,iBAAA;;;;;;iBASzC,qBAAA,CAAA,GAAyB,iBAAA;;;cCvP5B,iBAAA,YAA6B,aAAA;EAAA,SAC/B,IAAA;EAAA,iBACQ,QAAA;EAAA,iBACA,OAAA;EAAA,iBACA,OAAA;EAAA,iBACA,OAAA;EAAA,QACT,eAAA;cAEI,MAAA;IACV,QAAA;IACA,OAAA,GAAU,MAAA;IACV,KAAA,UAAe,KAAA;IACf,OAAA;EAAA;EAWI,IAAA,CAAK,MAAA,EAAQ,cAAA,KAAmB,OAAA;EAqBhC,KAAA,CAAA,GAAS,OAAA;EAIT,KAAA,CAAA,GAAS,OAAA;AAAA;AAAA,cAMJ,kBAAA,YAA8B,aAAA;EAAA,SAChC,IAAA;EAAA,iBACQ,KAAA;cAEL,KAAA,EAAO,aAAA;EAIb,IAAA,CAAK,MAAA,EAAQ,cAAA,KAAmB,OAAA;EAIhC,KAAA,CAAA,GAAS,OAAA;EAIT,KAAA,CAAA,GAAS,OAAA;AAAA;AAAA,iBAMD,cAAA,CAAe,MAAA;EAC7B,QAAA;EACA,OAAA,GAAU,MAAA;EACV,KAAA,UAAe,KAAA;EACf,OAAA;AAAA,IACE,iBAAA;;;;;;APpEJ;;;;;;;;;;;;AAiBA;iBQ+RgB,eAAA,CACd,KAAA,EAAO,cAAA,EACP,SAAA,GAAW,IAAA,GACV,UAAA;;;;iBA2Ia,WAAA,CACd,KAAA,EAAO,cAAA,EACP,EAAA,GAAI,IAAA,GACH,WAAA;;;UCxbc,oBAAA;ETfP;ESiBR,IAAA,EAAM,aAAA;ETfK;ESiBX,aAAA;ETjBe;ESmBf,eAAA;ETfyB;ESiBzB,YAAA,GAAe,UAAA;AAAA;;UAIA,YAAA;EACf,OAAA;EACA,SAAA,EAAW,IAAA;ETVX;ESYA,QAAA,WAAmB,UAAA,EAAY,KAAA,EAAO,IAAA,CAAK,CAAA;ETZhB;ESc3B,SAAA,CAAU,MAAA,EAAQ,MAAA,EAAQ,QAAA,GAAW,MAAA;ETV3B;ESYV,QAAA,CAAS,QAAA,GAAW,MAAA,oBAA0B,cAAA;;EAE9C,IAAA,CACE,KAAA,WAAgB,KAAA,EAChB,QAAA,GAAW,MAAA,oBACV,cAAA;ETjBa;ESmBhB,OAAA,IAAW,cAAA;AAAA;AAAA,cAiBA,cAAA;EAAA,QACH,IAAA;EAAA,QACA,MAAA;EAAA,QAGA,YAAA;EAAA,QACA,eAAA;EAAA,QACA,UAAA;EAAA,QACA,QAAA;EAAA,QACA,QAAA;cAEI,MAAA,EAAQ,oBAAA;ET/BT;ES+CX,UAAA,CACE,IAAA,UACA,KAAA,GAAQ,UAAA,EACR,QAAA,GAAW,MAAA,oBACV,YAAA;ETlDQ;ESuHL,KAAA,GAAA,CACJ,IAAA,UACA,EAAA,GAAK,GAAA,EAAK,YAAA,KAAiB,OAAA,CAAQ,CAAA,GACnC,OAAA;IAAY,KAAA,GAAQ,UAAA;IAAY,QAAA,GAAW,MAAA;EAAA,IAC1C,OAAA;IAAU,MAAA,EAAQ,CAAA;IAAG,KAAA,EAAO,cAAA;EAAA;ET9GhB;ES2Hf,KAAA,CAAA,GAAS,OAAA;;EA4CT,eAAA,CAAA;ET9JS;ESmKH,QAAA,CAAA,GAAY,OAAA;EAAA,QASV,aAAA;EAAA,QAiCA,eAAA;AAAA;AAAA,iBAmCM,oBAAA,CACd,MAAA,EAAQ,oBAAA,GACP,cAAA;;;KC1SE,eAAA,GAAkB,MAAA;;UA2Hb,oBAAA;EACR,IAAA;EACA,SAAA,EAAW,IAAA;EACX,OAAA,GAAU,IAAA;EACV,UAAA,EAAY,eAAA;EACZ,KAAA;EACA,SAAA;AAAA;;iBAIc,oBAAA,CACd,IAAA,EAAM,MAAA,gCACL,MAAA;;AVvIH;;;;iBU0JgB,iBAAA,CACd,KAAA,EAAO,UAAA,EACP,MAAA,2BACA,eAAA,aACC,oBAAA"}
|