judgeval 1.2.0 → 1.2.1

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.
@@ -2,7 +2,7 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/trace/BaseTracer.ts", "../src/env.ts", "../src/utils/logger.ts", "../src/utils/dont-throw.ts", "../src/utils/serializer.ts", "../src/utils/wrappers/immutable-wrap-async.ts", "../src/utils/wrappers/immutable-wrap-async-iterator.ts", "../src/utils/wrappers/proxy-async-iterable.ts", "../src/instrumentation/llm/openai/utils.ts", "../src/instrumentation/llm/openai/beta-chat-completions.ts", "../src/instrumentation/llm/openai/chat-completions.ts", "../src/instrumentation/llm/openai/images.ts", "../src/instrumentation/llm/openai/responses.ts", "../src/instrumentation/llm/openai/index.ts", "../src/instrumentation/index.ts", "../src/utils/annotate.ts", "../src/trace/baggage/index.ts", "../src/trace/runtime.ts", "../src/trace/NoOpTracer.ts", "../src/trace/baggage/JudgmentBaggagePropagator.ts", "../src/trace/baggage/constants.ts", "../src/trace/baggage/utils.ts", "../src/trace/propagation/index.ts", "../src/workers/Tracer.ts", "../src/internal/api/client.ts", "../src/utils/sleep.ts", "../src/utils/retry.ts", "../src/utils/resolve-project-id.ts", "../src/version.ts", "../src/trace/processors/JudgmentSpanProcessor.ts", "../src/trace/processors/JudgmentBaggageSpanProcessor.ts", "../src/workers/WorkerTracerProvider.ts", "../src/workers/WorkerSpanExporter.ts"],
4
4
  "sourcesContent": [
5
- "import {\n type Attributes,\n type Context,\n INVALID_SPAN_CONTEXT,\n type Span,\n SpanStatusCode,\n type Tracer,\n} from \"@opentelemetry/api\";\nimport type { Instrumentation } from \"@opentelemetry/instrumentation\";\nimport type {\n BasicTracerProvider,\n Sampler,\n SpanLimits,\n SpanProcessor,\n} from \"@opentelemetry/sdk-trace-base\";\nimport type { OpenAI } from \"openai\";\nimport { AttributeKeys, InternalAttributeKeys } from \"../JudgmentAttributeKeys\";\nimport { wrap } from \"../instrumentation\";\nimport { JudgmentApiClient } from \"../internal/api\";\nimport type { PendingEvalPayload } from \"../internal/api/models/PendingEvalPayload\";\nimport { parseFunctionArgs } from \"../utils/annotate\";\nimport { dontThrow } from \"../utils/dont-throw\";\nimport { Logger } from \"../utils/logger\";\nimport {\n safeStringify,\n serializeAttribute,\n Serializer,\n} from \"../utils/serializer\";\nimport { Maybe } from \"../utils/type-helpers\";\nimport { createBaggage, getBaggage, setBaggage } from \"./baggage\";\nimport { extract } from \"./propagation\";\nimport type { JudgmentSpanExporter } from \"./exporters/JudgmentSpanExporter\";\nimport type { JudgmentSpanProcessor } from \"./processors/JudgmentSpanProcessor\";\nimport { getTraceRuntime, type TraceRuntime } from \"./runtime\";\n\nconst TRACER_NAME = \"judgeval\";\n\n/**\n * Metadata about an LLM call to record on a span.\n */\nexport interface LLMMetadata {\n /** Model name (e.g. \"gpt-4o\"). */\n model?: Maybe<string>;\n /** Provider name (e.g. \"openai\"). */\n provider?: Maybe<string>;\n /** Number of non-cached input tokens. */\n non_cached_input_tokens?: Maybe<number>;\n /** Number of output tokens. */\n output_tokens?: Maybe<number>;\n /** Number of cache-read input tokens. */\n cache_read_input_tokens?: Maybe<number>;\n /** Number of cache-creation input tokens. */\n cache_creation_input_tokens?: Maybe<number>;\n /** Total cost in USD. */\n total_cost_usd?: Maybe<number>;\n}\n\n/**\n * Options for {@link BaseTracer.observe}.\n */\nexport interface ObserveOptions {\n /** The span kind (e.g. `\"llm\"`, `\"tool\"`, `\"span\"`). Defaults to `\"span\"`. */\n spanType?: string;\n /** Custom span name. Defaults to the wrapped function's name. */\n spanName?: string;\n /** Whether to record function inputs as a span attribute. Defaults to `true`. */\n recordInput?: boolean;\n /** Whether to record function outputs as a span attribute. Defaults to `true`. */\n recordOutput?: boolean;\n /**\n * If `true`, run the function in a fresh linked trace instead of as a\n * child of the current trace, when an active parent span exists.\n * Defaults to `false`.\n */\n fork?: boolean;\n}\n\n/**\n * Options for {@link BaseTracer.asyncEvaluate}.\n */\nexport interface AsyncEvaluateOptions {\n /**\n * Name of the hosted judge/scorer (e.g. `\"faithfulness\"`,\n * `\"answer_relevancy\"`).\n */\n judge: string;\n /**\n * Optional dict with evaluation data. Keys like `input`, `actual_output`,\n * `expected_output`, and `retrieval_context` are commonly used.\n */\n example?: Record<string, unknown>;\n}\n\n/**\n * Configuration options for initializing a Tracer.\n *\n * Credentials are resolved in order: explicit arguments first, then\n * environment variables.\n */\nexport interface TracerConfig {\n /** Your Judgment project name. Required for span export. */\n projectName?: string;\n /** Judgment API key. Defaults to `JUDGMENT_API_KEY` env var. */\n apiKey?: string;\n /** Judgment organization ID. Defaults to `JUDGMENT_ORG_ID` env var. */\n organizationId?: string;\n /** Judgment API URL. Defaults to `JUDGMENT_API_URL` env var. */\n apiUrl?: string;\n /** Deployment environment name (e.g. \"production\"). */\n environment?: string;\n /** Whether to automatically set this tracer as active. Defaults to `true`. */\n setActive?: boolean;\n /** Custom serialization function for span attribute values. */\n serializer?: (value: unknown) => string;\n /** Additional OpenTelemetry resource attributes. */\n resourceAttributes?: Record<string, string>;\n /** Custom OpenTelemetry sampler. Defaults to the SDK's default. */\n sampler?: Sampler;\n /** Custom OpenTelemetry span limits (attribute/event/link caps). */\n spanLimits?: SpanLimits;\n /** Additional span processors to register alongside Judgment's own processor. */\n spanProcessors?: SpanProcessor[];\n}\n\n/**\n * Abstract base for all Judgment tracers.\n *\n * Provides the core tracing surface: span creation, attribute recording,\n * the `observe` decorator, context propagation for customer/session IDs,\n * tagging, and async evaluation dispatch.\n * Concrete subclasses supply the OTel TracerProvider, exporter, and\n * processor wiring.\n */\nexport abstract class BaseTracer {\n projectName: string | null;\n projectId: string | null;\n apiKey: string | null;\n organizationId: string | null;\n apiUrl: string | null;\n environment: string | null;\n serializer: Serializer;\n _tracerProvider: BasicTracerProvider;\n _client: JudgmentApiClient | null;\n _enableMonitoring: boolean;\n\n readonly supportsLiveInstrumentation: boolean = true;\n\n // ------------------------------------------------------------------ //\n // Initialization //\n // ------------------------------------------------------------------ //\n\n protected constructor(\n projectName: string | null,\n projectId: string | null,\n apiKey: string | null,\n organizationId: string | null,\n apiUrl: string | null,\n environment: string | null,\n serializer: Serializer,\n tracerProvider: BasicTracerProvider,\n client: JudgmentApiClient | null,\n enableMonitoring: boolean,\n ) {\n this.projectName = projectName;\n this.projectId = projectId;\n this.apiKey = apiKey;\n this.organizationId = organizationId;\n this.apiUrl = apiUrl;\n this.environment = environment;\n this.serializer = serializer;\n this._tracerProvider = tracerProvider;\n this._client = client;\n this._enableMonitoring = enableMonitoring;\n }\n\n /**\n * Set this tracer as the active tracer in the global provider.\n *\n * @returns `true` if activation succeeded, `false` if a root span is active.\n */\n setActive(): boolean {\n return getTraceRuntime().setActive(this);\n }\n\n // ------------------------------------------------------------------ //\n // Abstract Lifecycle //\n // ------------------------------------------------------------------ //\n\n abstract getSpanProcessor(): JudgmentSpanProcessor;\n abstract getSpanExporter(): JudgmentSpanExporter;\n\n // ------------------------------------------------------------------ //\n // Internal Helpers //\n // ------------------------------------------------------------------ //\n\n private static _getProxyProvider(): TraceRuntime {\n return getTraceRuntime();\n }\n\n private static _getSerializer(): Serializer {\n const tracer = BaseTracer._getProxyProvider().getActiveTracer();\n return tracer?.serializer ?? safeStringify;\n }\n\n private static _getCurrentTraceAndSpanId(): [string, string] | null {\n const proxy = BaseTracer._getProxyProvider();\n const currentSpan = proxy.getCurrentSpan();\n if (!currentSpan?.isRecording()) return null;\n const ctx = currentSpan.spanContext();\n if (!ctx.traceId || !(ctx.traceFlags & 0x01)) return null;\n return [ctx.traceId, ctx.spanId];\n }\n\n private static _emitPartial(): void {\n dontThrow(\"BaseTracer._emitPartial\", () => {\n const tracer = BaseTracer._getProxyProvider().getActiveTracer();\n if (!tracer || !tracer.supportsLiveInstrumentation) return;\n tracer.getSpanProcessor().emitPartial();\n });\n }\n\n // ------------------------------------------------------------------ //\n // Static API: Span Access & Lifecycle //\n // ------------------------------------------------------------------ //\n\n /**\n * Get the currently active span.\n *\n * @returns The active span, or `undefined` if none.\n */\n static getCurrentSpan(): Span | undefined {\n const proxy = BaseTracer._getProxyProvider();\n return proxy.getCurrentSpan();\n }\n\n /**\n * Flush all pending spans to the export endpoint.\n *\n * Call this before your process exits to ensure all spans are sent.\n *\n * @example\n * ```typescript\n * await Tracer.forceFlush();\n * ```\n */\n static async forceFlush(): Promise<void> {\n const proxy = BaseTracer._getProxyProvider();\n await proxy.forceFlush();\n }\n\n /**\n * Shut down the tracer and flush any pending data.\n *\n * @example\n * ```typescript\n * await Tracer.shutdown();\n * ```\n */\n static async shutdown(): Promise<void> {\n const proxy = BaseTracer._getProxyProvider();\n await proxy.shutdown();\n }\n\n /**\n * Register an OpenTelemetry instrumentation to capture spans automatically.\n *\n * @param instrumentor - The OpenTelemetry instrumentation to register.\n *\n * @example\n * ```typescript\n * import { OpenAIInstrumentation } from \"@opentelemetry/instrumentation-openai\";\n * Tracer.registerOTELInstrumentation(new OpenAIInstrumentation());\n * ```\n */\n static registerOTELInstrumentation(instrumentor: Instrumentation): void {\n dontThrow(\"BaseTracer.registerOTELInstrumentation\", () => {\n const proxy = BaseTracer._getProxyProvider();\n proxy.addInstrumentation(instrumentor);\n });\n }\n\n /**\n * Wrap a supported LLM client to add automatic tracing.\n *\n * Currently supports OpenAI clients. The client is instrumented\n * in-place and returned.\n *\n * Lives on `BaseTracer` (rather than a runtime-specific subclass) because\n * the OpenAI wrapper relies only on fetch-based method interception — the\n * `openai` import is types-only and it uses no Node built-ins — so it is\n * safe in both the Node and Workers runtimes.\n *\n * @param client - An LLM client instance (e.g. `new OpenAI()`).\n * @returns The same client instance, instrumented.\n *\n * @example\n * ```typescript\n * import OpenAI from \"openai\";\n *\n * const client = Tracer.wrap(new OpenAI());\n * ```\n */\n static wrap<T extends OpenAI>(client: T): T {\n return wrap(client);\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Creation (OTEL-like signatures) //\n // ------------------------------------------------------------------ //\n\n /**\n * Get the underlying OpenTelemetry Tracer instance.\n *\n * @returns The OpenTelemetry `Tracer`.\n */\n static getOTELTracer(): Tracer {\n const proxy = BaseTracer._getProxyProvider();\n return proxy.getTracer(TRACER_NAME);\n }\n\n /**\n * Start a new span without setting it as active.\n *\n * **Most users should prefer {@link observe} or {@link with}**, which\n * handle activation, error recording, and span ending automatically.\n * Use this only when you need low-level control over the span lifecycle.\n *\n * @param name - The span name.\n * @param attributes - Optional span attributes.\n * @returns The created span.\n */\n static startSpan(name: string, attributes?: Attributes): Span {\n const span = BaseTracer.getOTELTracer().startSpan(name, { attributes });\n BaseTracer._emitPartial();\n return span;\n }\n\n /**\n * Start a new active span and run a function within it.\n *\n * The span is automatically ended when the function completes.\n *\n * **Most users should prefer {@link observe} or {@link with}**, which\n * additionally record inputs/outputs and capture errors automatically.\n * Use this only when you need low-level control over the span lifecycle.\n *\n * @param options - Span options. `name` is required; `attributes` is optional.\n * @param fn - Function to execute within the span context.\n * @returns The return value of `fn`.\n *\n * @example\n * ```typescript\n * Tracer.startActiveSpan({ name: \"fetch-user\" }, (span) => {\n * // ...\n * });\n * ```\n */\n static startActiveSpan<T>(\n options: { name: string; attributes?: Attributes },\n fn: (span: Span) => T,\n ): T {\n const { name, attributes } = options;\n return BaseTracer.getOTELTracer().startActiveSpan(\n name,\n { attributes },\n (span) => {\n BaseTracer._emitPartial();\n try {\n const result = fn(span);\n if (result instanceof Promise) {\n return (result as Promise<unknown>).finally(() => {\n span.end();\n }) as T;\n }\n span.end();\n return result;\n } catch (e) {\n span.end();\n throw e;\n }\n },\n );\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Helpers //\n // ------------------------------------------------------------------ //\n\n /**\n * Create a named span, execute a function, and handle errors.\n *\n * Errors are recorded on the span and re-thrown.\n *\n * @param spanName - The span name.\n * @param fn - Function to execute within the span.\n * @returns The return value of `fn`.\n */\n static span<T>(spanName: string, fn: (span: Span) => T): T {\n return BaseTracer.startActiveSpan({ name: spanName }, (span) => {\n try {\n const result = fn(span);\n if (result instanceof Promise) {\n return result.catch((e: unknown) => {\n span.setStatus({ code: SpanStatusCode.ERROR, message: String(e) });\n span.recordException(e as Error);\n throw e;\n }) as T;\n }\n return result;\n } catch (e) {\n span.setStatus({ code: SpanStatusCode.ERROR, message: String(e) });\n span.recordException(e as Error);\n throw e;\n }\n });\n }\n\n /**\n * Alias for {@link span}. Create a named span and execute a function within it.\n *\n * @param spanName - The span name.\n * @param fn - Function to execute within the span.\n * @returns The return value of `fn`.\n */\n static with<T>(spanName: string, fn: (span: Span) => T): T {\n return BaseTracer.span(spanName, fn);\n }\n\n /**\n * Continue a distributed trace from an upstream service.\n *\n * Extracts W3C trace context and baggage from `carrier` and installs\n * it as the active context for the duration of `fn`. Any span started\n * inside — including `@Tracer.observe`-wrapped functions and\n * `Tracer.with` blocks — becomes a child of the upstream parent,\n * stitching your service into the caller's trace.\n *\n * Use this at the entry point of an inbound request (HTTP handler,\n * message queue consumer, RPC dispatcher, etc.) to join a trace\n * started by the upstream caller. If the carrier contains no trace\n * context, `fn` still runs normally with a fresh context.\n *\n * @param carrier - A mapping containing propagation headers. Typically\n * `req.headers` from Node's `http`/Express/Fastify, but any dict-shaped\n * object with lowercase keys works (queue attributes, Lambda event\n * headers, RPC metadata, etc.).\n * @param fn - Function to run inside the extracted context. Receives\n * the extracted {@link Context} as its argument; most callers ignore\n * it. Sync or async.\n * @returns The return value of `fn`.\n *\n * @example\n * ```typescript\n * import { Tracer } from \"judgeval\";\n *\n * const handle = Tracer.observe(async (payload: unknown) => {\n * // ... your agent logic ...\n * });\n *\n * // Express / Node http handler:\n * app.post(\"/run\", async (req, res) => {\n * await Tracer.continueTrace(req.headers, async () => {\n * const result = await handle(req.body);\n * res.json(result);\n * });\n * });\n * ```\n *\n * Propagating in the opposite direction (outbound):\n *\n * @example\n * ```typescript\n * import { propagation } from \"judgeval\";\n *\n * const headers: Record<string, string> = {};\n * propagation.inject(headers);\n * await fetch(downstreamUrl, { headers, method: \"POST\", body });\n * ```\n */\n static continueTrace<T>(carrier: object, fn: (ctx: Context) => T): T {\n const proxy = BaseTracer._getProxyProvider();\n const ctx = extract(carrier);\n return proxy.withContext(ctx, () => fn(ctx));\n }\n\n // ------------------------------------------------------------------ //\n // Static API: Observation Decorator //\n // ------------------------------------------------------------------ //\n\n /**\n * Wrap a function to automatically create spans and record inputs/outputs.\n *\n * Can be called with a function to wrap it directly, or with just options\n * to get a decorator (e.g. for TC39 decorator syntax).\n *\n * @param func - The function to wrap. Omit to get a decorator.\n * @param options - Optional observation options.\n * @returns The wrapped function, or a decorator if `func` is omitted.\n *\n * @example\n * ```typescript\n * // Direct wrapping\n * const traced = Tracer.observe(\n * async (query: string) => search(query),\n * { spanType: \"tool\" },\n * );\n *\n * // Decorator form\n * class Agent {\n * \\@Tracer.observe({ spanType: \"llm\" })\n * async chat(input: string) { ... }\n * }\n *\n * // Fork into a linked trace\n * const delegate = Tracer.observe(runSubsystem, {\n * spanType: \"agent\",\n * fork: true,\n * });\n * ```\n */\n static observe<TArgs extends unknown[], TReturn>(\n func: (...args: TArgs) => TReturn,\n options?: ObserveOptions,\n ): (...args: TArgs) => TReturn;\n static observe(\n options?: ObserveOptions,\n ): <TArgs extends unknown[], TReturn>(\n func: (...args: TArgs) => TReturn,\n context?: unknown,\n ) => (...args: TArgs) => TReturn;\n static observe<TArgs extends unknown[], TReturn>(\n funcOrOptions?: ((...args: TArgs) => TReturn) | ObserveOptions,\n options?: ObserveOptions,\n ):\n | ((...args: TArgs) => TReturn)\n | ((func: (...args: TArgs) => TReturn) => (...args: TArgs) => TReturn) {\n let func: ((...args: TArgs) => TReturn) | undefined;\n if (typeof funcOrOptions === \"function\") {\n func = funcOrOptions;\n } else {\n options = funcOrOptions;\n }\n const {\n spanType = \"span\",\n spanName,\n recordInput = true,\n recordOutput = true,\n fork = false,\n } = options ?? {};\n const proxy = BaseTracer._getProxyProvider();\n const decorator = (\n innerFunc: (...args: TArgs) => TReturn,\n ): ((...args: TArgs) => TReturn) => {\n const name = spanName ?? innerFunc.name;\n return function (this: unknown, ...args: TArgs): TReturn {\n const otelTracer = proxy.getTracer(TRACER_NAME);\n\n const shouldFork =\n fork &&\n proxy.getActiveTracer() !== null &&\n proxy.getCurrentSpan()?.isRecording() === true;\n\n if (shouldFork) {\n const serializer = BaseTracer._getSerializer();\n\n // Invocation span — child of current trace\n const invocationSpan = otelTracer.startSpan(name);\n const invocationCtx = invocationSpan.spanContext();\n if (spanType) {\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_SPAN_KIND,\n spanType,\n );\n }\n\n // Linked-root span — root of a new trace\n const linkedRootAttrs: Attributes = {\n [AttributeKeys.JUDGMENT_LINK_SOURCE_TRACE_ID]:\n invocationCtx.traceId,\n [AttributeKeys.JUDGMENT_LINK_SOURCE_SPAN_ID]: invocationCtx.spanId,\n };\n if (spanType) {\n linkedRootAttrs[AttributeKeys.JUDGMENT_SPAN_KIND] = spanType;\n }\n\n const parentlessCtx = proxy.setSpan(\n proxy.getCurrentContext(),\n proxy.wrapSpanContext(INVALID_SPAN_CONTEXT),\n );\n const linkedRoot = otelTracer.startSpan(\n name,\n { attributes: linkedRootAttrs },\n parentlessCtx,\n );\n const linkedRootCtx = linkedRoot.spanContext();\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_LINK_TARGET_TRACE_ID,\n linkedRootCtx.traceId,\n );\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_LINK_TARGET_SPAN_ID,\n linkedRootCtx.spanId,\n );\n\n const endBoth = (): void => {\n linkedRoot.end();\n invocationSpan.end();\n };\n const recordErrorOnBoth = (e: unknown): void => {\n for (const s of [linkedRoot, invocationSpan]) {\n s.recordException(e as Error);\n s.setStatus({\n code: SpanStatusCode.ERROR,\n message: String(e),\n });\n }\n };\n const recordOutputOnBoth = (value: unknown): void => {\n const serialized = serializeAttribute(value, serializer);\n linkedRoot.setAttribute(AttributeKeys.JUDGMENT_OUTPUT, serialized);\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_OUTPUT,\n serialized,\n );\n };\n\n if (recordInput) {\n const serializedInput = serializeAttribute(\n getInputs(innerFunc, args),\n serializer,\n );\n linkedRoot.setAttribute(\n AttributeKeys.JUDGMENT_INPUT,\n serializedInput,\n );\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_INPUT,\n serializedInput,\n );\n }\n BaseTracer._emitPartial();\n\n return proxy.useSpan(linkedRoot, false, false, false, (): TReturn => {\n try {\n const result = innerFunc.call(this, ...args);\n if (result instanceof Promise) {\n return (result as Promise<unknown>)\n .then((res) => {\n if (recordOutput) recordOutputOnBoth(res);\n return res as TReturn;\n })\n .catch((e: unknown) => {\n recordErrorOnBoth(e);\n throw e;\n })\n .finally(endBoth) as TReturn;\n }\n if (recordOutput) recordOutputOnBoth(result);\n endBoth();\n return result;\n } catch (e) {\n recordErrorOnBoth(e);\n endBoth();\n throw e;\n }\n });\n }\n\n return otelTracer.startActiveSpan(name, (span) => {\n if (spanType) {\n span.setAttribute(AttributeKeys.JUDGMENT_SPAN_KIND, spanType);\n }\n try {\n if (recordInput) {\n span.setAttribute(\n AttributeKeys.JUDGMENT_INPUT,\n serializeAttribute(\n getInputs(innerFunc, args),\n BaseTracer._getSerializer(),\n ),\n );\n }\n BaseTracer._emitPartial();\n const result = innerFunc.call(this, ...args);\n\n if (result instanceof Promise) {\n return (result as Promise<unknown>)\n .then((res) => {\n if (recordOutput) {\n span.setAttribute(\n AttributeKeys.JUDGMENT_OUTPUT,\n serializeAttribute(res, BaseTracer._getSerializer()),\n );\n }\n return res as TReturn;\n })\n .catch((e: unknown) => {\n span.recordException(e as Error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: String(e),\n });\n throw e;\n })\n .finally(() => {\n span.end();\n }) as TReturn;\n }\n\n if (recordOutput) {\n span.setAttribute(\n AttributeKeys.JUDGMENT_OUTPUT,\n serializeAttribute(result, BaseTracer._getSerializer()),\n );\n }\n span.end();\n return result;\n } catch (e) {\n span.recordException(e as Error);\n span.setStatus({ code: SpanStatusCode.ERROR, message: String(e) });\n span.end();\n throw e;\n }\n });\n };\n };\n\n if (!func) return decorator;\n return decorator(func);\n }\n\n // ------------------------------------------------------------------ //\n // Internal: resolve target span //\n // ------------------------------------------------------------------ //\n\n private static _resolveSpan(span?: Span): Span | undefined {\n if (span) return span;\n return BaseTracer._getProxyProvider().getCurrentSpan();\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Kind //\n // ------------------------------------------------------------------ //\n\n /**\n * Set the kind of a span.\n *\n * @param kind - The span kind (e.g. \"llm\", \"tool\", \"span\").\n * @param span - Target span. Defaults to the current active span.\n */\n static setSpanKind(kind: string): void;\n static setSpanKind(kind: string, span: Span): void;\n static setSpanKind(kind: string, span?: Span): void {\n dontThrow(\"BaseTracer.setSpanKind\", () => {\n if (!kind) return;\n const target = BaseTracer._resolveSpan(span);\n if (target?.isRecording()) {\n target.setAttribute(AttributeKeys.JUDGMENT_SPAN_KIND, kind);\n }\n });\n }\n\n /**\n * Set the current span kind to \"llm\".\n */\n static setLLMSpan(): void {\n BaseTracer.setSpanKind(\"llm\");\n }\n\n /**\n * Set the current span kind to \"tool\".\n */\n static setToolSpan(): void {\n BaseTracer.setSpanKind(\"tool\");\n }\n\n /**\n * Set the current span kind to \"span\".\n */\n static setGeneralSpan(): void {\n BaseTracer.setSpanKind(\"span\");\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Attribute Operations //\n // ------------------------------------------------------------------ //\n\n /**\n * Set a single attribute on a span.\n *\n * @param key - The attribute key.\n * @param value - The attribute value (will be serialized).\n * @param span - Target span. Defaults to the current active span.\n */\n static setAttribute(key: string, value: unknown): void;\n static setAttribute(key: string, value: unknown, span: Span): void;\n static setAttribute(key: string, value: unknown, span?: Span): void {\n dontThrow(\"BaseTracer.setAttribute\", () => {\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n if (!key || value == null) return;\n target.setAttribute(\n key,\n serializeAttribute(value, BaseTracer._getSerializer()),\n );\n });\n }\n\n /**\n * Set multiple attributes on a span.\n *\n * @param attributes - Key-value pairs to set.\n * @param span - Target span. Defaults to the current active span.\n */\n static setAttributes(attributes: Record<string, unknown>): void;\n static setAttributes(attributes: Record<string, unknown>, span: Span): void;\n static setAttributes(attributes: Record<string, unknown>, span?: Span): void {\n for (const [key, value] of Object.entries(attributes)) {\n if (span) BaseTracer.setAttribute(key, value, span);\n else BaseTracer.setAttribute(key, value);\n }\n }\n\n /**\n * Set the input data on a span.\n *\n * @param inputData - The input data to record.\n * @param span - Target span. Defaults to the current active span.\n */\n static setInput(inputData: unknown): void;\n static setInput(inputData: unknown, span: Span): void;\n static setInput(inputData: unknown, span?: Span): void {\n if (span)\n BaseTracer.setAttribute(AttributeKeys.JUDGMENT_INPUT, inputData, span);\n else BaseTracer.setAttribute(AttributeKeys.JUDGMENT_INPUT, inputData);\n }\n\n /**\n * Set the output data on a span.\n *\n * @param outputData - The output data to record.\n * @param span - Target span. Defaults to the current active span.\n */\n static setOutput(outputData: unknown): void;\n static setOutput(outputData: unknown, span: Span): void;\n static setOutput(outputData: unknown, span?: Span): void {\n if (span)\n BaseTracer.setAttribute(AttributeKeys.JUDGMENT_OUTPUT, outputData, span);\n else BaseTracer.setAttribute(AttributeKeys.JUDGMENT_OUTPUT, outputData);\n }\n\n /**\n * Record an error on a span.\n *\n * Sets the span status to ERROR and records the exception.\n *\n * @param error - The error to record.\n * @param span - Target span. Defaults to the current active span.\n */\n static setError(error: unknown): void;\n static setError(error: unknown, span: Span): void;\n static setError(error: unknown, span?: Span): void {\n dontThrow(\"BaseTracer.setError\", () => {\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n target.recordException(error as Error);\n target.setStatus({ code: SpanStatusCode.ERROR, message: String(error) });\n });\n }\n\n /**\n * Record LLM usage metadata on a span.\n *\n * @param metadata - LLM metadata including model, provider, and token counts.\n * @param span - Target span. Defaults to the current active span.\n *\n * @example\n * ```typescript\n * Tracer.recordLLMMetadata({\n * model: \"gpt-4o\",\n * provider: \"openai\",\n * output_tokens: 150,\n * });\n * ```\n */\n static recordLLMMetadata(metadata: LLMMetadata): void;\n static recordLLMMetadata(metadata: LLMMetadata, span: Span): void;\n static recordLLMMetadata(metadata: LLMMetadata, span?: Span): void {\n dontThrow(\"BaseTracer.recordLLMMetadata\", () => {\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n\n if (typeof metadata.model === \"string\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_LLM_MODEL_NAME,\n metadata.model,\n );\n }\n\n if (typeof metadata.provider === \"string\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_LLM_PROVIDER,\n metadata.provider,\n );\n }\n\n if (typeof metadata.non_cached_input_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_NON_CACHED_INPUT_TOKENS,\n metadata.non_cached_input_tokens,\n );\n }\n if (typeof metadata.output_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_OUTPUT_TOKENS,\n metadata.output_tokens,\n );\n }\n if (typeof metadata.cache_read_input_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_CACHE_READ_INPUT_TOKENS,\n metadata.cache_read_input_tokens,\n );\n }\n if (typeof metadata.cache_creation_input_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_CACHE_CREATION_INPUT_TOKENS,\n metadata.cache_creation_input_tokens,\n );\n }\n if (typeof metadata.total_cost_usd === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_TOTAL_COST_USD,\n metadata.total_cost_usd,\n );\n }\n });\n }\n\n // ------------------------------------------------------------------ //\n // Static: Context Propagation //\n // ------------------------------------------------------------------ //\n\n /**\n * Set a key on the current span and on baggage so it propagates to all\n * child spans. Also reattaches the current context to the updated one.\n */\n private static _setPropagatingBaggageKey(key: string, value: string): void {\n dontThrow(\"BaseTracer._setPropagatingBaggageKey\", () => {\n const proxy = BaseTracer._getProxyProvider();\n const currentSpan = proxy.getCurrentSpan();\n if (!currentSpan?.isRecording()) return;\n currentSpan.setAttribute(key, value);\n const ctx = proxy.getCurrentContext();\n const baggage = (getBaggage(ctx) ?? createBaggage()).setEntry(key, {\n value,\n });\n proxy.attachContext(setBaggage(ctx, baggage));\n });\n }\n\n /**\n * Set the customer ID on the current active span.\n *\n * The ID is automatically propagated to all child spans via baggage.\n * This method always targets the active span because it modifies\n * the active context's baggage for propagation.\n *\n * @param customerId - The customer identifier.\n */\n static setCustomerId(customerId: string): void {\n BaseTracer._setPropagatingBaggageKey(\n AttributeKeys.JUDGMENT_CUSTOMER_ID,\n customerId,\n );\n }\n\n /**\n * Set the customer user ID on the current active span.\n *\n * The ID is automatically propagated to all child spans via baggage.\n * This method always targets the active span because it modifies\n * the active context's baggage for propagation.\n *\n * @param customerUserId - The customer user identifier.\n */\n static setCustomerUserId(customerUserId: string): void {\n BaseTracer._setPropagatingBaggageKey(\n AttributeKeys.JUDGMENT_CUSTOMER_USER_ID,\n customerUserId,\n );\n }\n\n /**\n * Set the session ID on the current active span.\n *\n * The ID is automatically propagated to all child spans via baggage.\n * This method always targets the active span because it modifies\n * the active context's baggage for propagation.\n *\n * @param sessionId - The session identifier.\n */\n static setSessionId(sessionId: string): void {\n BaseTracer._setPropagatingBaggageKey(\n AttributeKeys.JUDGMENT_SESSION_ID,\n sessionId,\n );\n }\n\n // ------------------------------------------------------------------ //\n // Static: Tags //\n // ------------------------------------------------------------------ //\n\n /**\n * Add tags to the current trace.\n *\n * @param tags - A single tag string or an array of tag strings.\n *\n * @example\n * ```typescript\n * Tracer.tag(\"production\");\n * Tracer.tag([\"important\", \"customer-facing\"]);\n * ```\n */\n static tag(tags: string | string[]): void {\n dontThrow(\"BaseTracer.tag\", () => {\n if (!tags || (Array.isArray(tags) && tags.length === 0)) return;\n const proxy = BaseTracer._getProxyProvider();\n const tracer = proxy.getActiveTracer();\n if (!tracer?.projectId || !tracer._client) return;\n if (!tracer.supportsLiveInstrumentation) return;\n const ids = BaseTracer._getCurrentTraceAndSpanId();\n if (!ids) return;\n const [traceId] = ids;\n const tagArray = Array.isArray(tags) ? tags : [tags];\n tracer._client\n .postV1projectsTracesByTraceIdTags(tracer.projectId, traceId, {\n tags: tagArray,\n })\n .catch((err: unknown) => {\n Logger.error(`tag failed: ${String(err)}`);\n });\n });\n }\n\n // ------------------------------------------------------------------ //\n // Static API: Async Evaluation //\n // ------------------------------------------------------------------ //\n\n /**\n * Trigger an asynchronous server-side evaluation on a span.\n *\n * The evaluation is queued and processed server-side by the Judgment\n * platform after the span ends. Use this to score live traffic\n * without blocking your application.\n *\n * @param options - Evaluation options. `judge` is required; `example`\n * is optional evaluation data.\n * @param span - Target span. Defaults to the current active span.\n *\n * @example\n * ```typescript\n * Tracer.asyncEvaluate({\n * judge: \"answer_relevancy\",\n * example: {\n * input: \"What is AI?\",\n * actual_output: response,\n * },\n * });\n * ```\n */\n static asyncEvaluate(options: AsyncEvaluateOptions): void;\n static asyncEvaluate(options: AsyncEvaluateOptions, span: Span): void;\n static asyncEvaluate(options: AsyncEvaluateOptions, span?: Span): void {\n dontThrow(\"BaseTracer.asyncEvaluate\", () => {\n const { judge, example } = options;\n const proxy = BaseTracer._getProxyProvider();\n const tracer = proxy.getActiveTracer();\n if (!tracer?.projectId) return;\n if (!tracer.supportsLiveInstrumentation) return;\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n\n const processor = tracer.getSpanProcessor();\n const ctx = target.spanContext();\n\n const idx = processor.stateIncr(\n ctx,\n InternalAttributeKeys.PENDING_EVALS_COUNT,\n );\n const payload: PendingEvalPayload = {\n project_id: tracer.projectId,\n eval_name: `async_evaluate_${judge}_${idx}`,\n judges: [{ name: judge }],\n examples: [\n {\n ...example,\n example_id: crypto.randomUUID(),\n created_at: new Date().toISOString(),\n trace_id: ctx.traceId,\n span_id: ctx.spanId,\n },\n ],\n is_offline: false,\n is_behavior: false,\n };\n const updated = processor.stateAppend<PendingEvalPayload>(\n ctx,\n InternalAttributeKeys.PENDING_EVALS,\n payload,\n );\n\n // Raw setAttribute — value is already JSON-stringified, BaseTracer.setAttribute would double-serialize.\n target.setAttribute(\n AttributeKeys.JUDGMENT_PENDING_TRACE_EVAL,\n JSON.stringify(updated),\n );\n });\n }\n}\n\nfunction getInputs<TArgs extends unknown[]>(\n f: (...args: TArgs) => unknown,\n args: TArgs,\n): Record<string, unknown> {\n try {\n const paramNames = parseFunctionArgs(f)\n .map((param) =>\n param\n .replace(/^\\.\\.\\./, \"\")\n .split(\"=\")[0]\n .trim(),\n )\n .filter((param) => param.length > 0);\n const inputs: Record<string, unknown> = {};\n paramNames.forEach((name, index) => {\n if (index < args.length) {\n inputs[name] = args[index];\n }\n });\n return inputs;\n } catch {\n return {};\n }\n}\n",
5
+ "import {\n type Attributes,\n type Context,\n INVALID_SPAN_CONTEXT,\n type Span,\n SpanStatusCode,\n type Tracer,\n} from \"@opentelemetry/api\";\nimport type { Instrumentation } from \"@opentelemetry/instrumentation\";\nimport type {\n BasicTracerProvider,\n Sampler,\n SpanLimits,\n SpanProcessor,\n} from \"@opentelemetry/sdk-trace-base\";\nimport type { OpenAI } from \"openai\";\nimport { AttributeKeys, InternalAttributeKeys } from \"../JudgmentAttributeKeys\";\nimport { wrap } from \"../instrumentation\";\nimport { JudgmentApiClient } from \"../internal/api\";\nimport type { PendingEvalPayload } from \"../internal/api/models/PendingEvalPayload\";\nimport { parseFunctionArgs } from \"../utils/annotate\";\nimport { dontThrow } from \"../utils/dont-throw\";\nimport { Logger } from \"../utils/logger\";\nimport {\n safeStringify,\n serializeAttribute,\n Serializer,\n} from \"../utils/serializer\";\nimport { Maybe } from \"../utils/type-helpers\";\nimport { createBaggage, getBaggage, setBaggage } from \"./baggage\";\nimport { extract } from \"./propagation\";\nimport type { JudgmentSpanExporter } from \"./exporters/JudgmentSpanExporter\";\nimport type { JudgmentSpanProcessor } from \"./processors/JudgmentSpanProcessor\";\nimport { getTraceRuntime, type TraceRuntime } from \"./runtime\";\n\nconst TRACER_NAME = \"judgeval\";\n\n/**\n * Metadata about an LLM call to record on a span.\n */\nexport interface LLMMetadata {\n /** Model name (e.g. \"gpt-4o\"). */\n model?: Maybe<string>;\n /** Provider name (e.g. \"openai\"). */\n provider?: Maybe<string>;\n /** Number of non-cached input tokens. */\n non_cached_input_tokens?: Maybe<number>;\n /** Number of output tokens. */\n output_tokens?: Maybe<number>;\n /** Number of cache-read input tokens. */\n cache_read_input_tokens?: Maybe<number>;\n /** Number of cache-creation input tokens. */\n cache_creation_input_tokens?: Maybe<number>;\n /** Total cost in USD. */\n total_cost_usd?: Maybe<number>;\n}\n\n/**\n * Options for {@link BaseTracer.observe}.\n */\nexport interface ObserveOptions {\n /** The span kind (e.g. `\"llm\"`, `\"tool\"`, `\"span\"`). Defaults to `\"span\"`. */\n spanType?: string;\n /** Custom span name. Defaults to the wrapped function's name. */\n spanName?: string;\n /** Whether to record function inputs as a span attribute. Defaults to `true`. */\n recordInput?: boolean;\n /** Whether to record function outputs as a span attribute. Defaults to `true`. */\n recordOutput?: boolean;\n /**\n * If `true`, run the function in a fresh linked trace instead of as a\n * child of the current trace, when an active parent span exists.\n * Defaults to `false`.\n */\n fork?: boolean;\n}\n\n/**\n * Options for {@link BaseTracer.asyncEvaluate}.\n */\nexport interface AsyncEvaluateOptions {\n /**\n * Name of the hosted judge/scorer (e.g. `\"faithfulness\"`,\n * `\"answer_relevancy\"`).\n */\n judge: string;\n /**\n * Optional dict with evaluation data. Keys like `input`, `actual_output`,\n * `expected_output`, and `retrieval_context` are commonly used.\n */\n example?: Record<string, unknown>;\n}\n\n/**\n * Configuration options for initializing a Tracer.\n *\n * Credentials are resolved in order: explicit arguments first, then\n * environment variables.\n */\nexport interface TracerConfig {\n /** Your Judgment project name. Required for span export. */\n projectName?: string;\n /** Judgment API key. Defaults to `JUDGMENT_API_KEY` env var. */\n apiKey?: string;\n /** Judgment organization ID. Defaults to `JUDGMENT_ORG_ID` env var. */\n organizationId?: string;\n /** Judgment API URL. Defaults to `JUDGMENT_API_URL` env var. */\n apiUrl?: string;\n /** Deployment environment name (e.g. \"production\"). */\n environment?: string;\n /** Whether to automatically set this tracer as active. Defaults to `true`. */\n setActive?: boolean;\n /** Custom serialization function for span attribute values. */\n serializer?: (value: unknown) => string;\n /** Additional OpenTelemetry resource attributes. */\n resourceAttributes?: Record<string, string>;\n /** Custom OpenTelemetry sampler. Defaults to the SDK's default. */\n sampler?: Sampler;\n /** Custom OpenTelemetry span limits (attribute/event/link caps). */\n spanLimits?: SpanLimits;\n /** Additional span processors to register alongside Judgment's own processor. */\n spanProcessors?: SpanProcessor[];\n}\n\n/**\n * Abstract base for all Judgment tracers.\n *\n * Provides the core tracing surface: span creation, attribute recording,\n * the `observe` decorator, context propagation for customer/session IDs,\n * tagging, and async evaluation dispatch.\n * Concrete subclasses supply the OTel TracerProvider, exporter, and\n * processor wiring.\n */\nexport abstract class BaseTracer {\n projectName: string | null;\n projectId: string | null;\n apiKey: string | null;\n organizationId: string | null;\n apiUrl: string | null;\n environment: string | null;\n serializer: Serializer;\n _tracerProvider: BasicTracerProvider;\n _client: JudgmentApiClient | null;\n _enableMonitoring: boolean;\n\n readonly supportsLiveInstrumentation: boolean = true;\n\n // ------------------------------------------------------------------ //\n // Initialization //\n // ------------------------------------------------------------------ //\n\n protected constructor(\n projectName: string | null,\n projectId: string | null,\n apiKey: string | null,\n organizationId: string | null,\n apiUrl: string | null,\n environment: string | null,\n serializer: Serializer,\n tracerProvider: BasicTracerProvider,\n client: JudgmentApiClient | null,\n enableMonitoring: boolean,\n ) {\n this.projectName = projectName;\n this.projectId = projectId;\n this.apiKey = apiKey;\n this.organizationId = organizationId;\n this.apiUrl = apiUrl;\n this.environment = environment;\n this.serializer = serializer;\n this._tracerProvider = tracerProvider;\n this._client = client;\n this._enableMonitoring = enableMonitoring;\n }\n\n /**\n * Set this tracer as the active tracer in the global provider.\n *\n * @returns `true` if activation succeeded, `false` if a root span is active.\n */\n setActive(): boolean {\n return getTraceRuntime().setActive(this);\n }\n\n // ------------------------------------------------------------------ //\n // Abstract Lifecycle //\n // ------------------------------------------------------------------ //\n\n abstract getSpanProcessor(): JudgmentSpanProcessor;\n abstract getSpanExporter(): JudgmentSpanExporter;\n\n // ------------------------------------------------------------------ //\n // Internal Helpers //\n // ------------------------------------------------------------------ //\n\n private static _getProxyProvider(): TraceRuntime {\n return getTraceRuntime();\n }\n\n private static _getSerializer(): Serializer {\n const tracer = BaseTracer._getProxyProvider().getActiveTracer();\n return tracer?.serializer ?? safeStringify;\n }\n\n private static _getCurrentTraceAndSpanId(): [string, string] | null {\n const proxy = BaseTracer._getProxyProvider();\n const currentSpan = proxy.getCurrentSpan();\n if (!currentSpan?.isRecording()) return null;\n const ctx = currentSpan.spanContext();\n if (!ctx.traceId || !(ctx.traceFlags & 0x01)) return null;\n return [ctx.traceId, ctx.spanId];\n }\n\n private static _emitPartial(): void {\n dontThrow(\"BaseTracer._emitPartial\", () => {\n const tracer = BaseTracer._getProxyProvider().getActiveTracer();\n if (!tracer || !tracer.supportsLiveInstrumentation) return;\n tracer.getSpanProcessor().emitPartial();\n });\n }\n\n // ------------------------------------------------------------------ //\n // Static API: Span Access & Lifecycle //\n // ------------------------------------------------------------------ //\n\n /**\n * Get the currently active span.\n *\n * @returns The active span, or `undefined` if none.\n */\n static getCurrentSpan(): Span | undefined {\n const proxy = BaseTracer._getProxyProvider();\n return proxy.getCurrentSpan();\n }\n\n /**\n * Flush all pending spans to the export endpoint.\n *\n * Call this before your process exits to ensure all spans are sent.\n *\n * @example\n * ```typescript\n * await Tracer.forceFlush();\n * ```\n */\n static async forceFlush(): Promise<void> {\n const proxy = BaseTracer._getProxyProvider();\n await proxy.forceFlush();\n }\n\n /**\n * Shut down the tracer and flush any pending data.\n *\n * @example\n * ```typescript\n * await Tracer.shutdown();\n * ```\n */\n static async shutdown(): Promise<void> {\n const proxy = BaseTracer._getProxyProvider();\n await proxy.shutdown();\n }\n\n /**\n * Register an OpenTelemetry instrumentation to capture spans automatically.\n *\n * @param instrumentor - The OpenTelemetry instrumentation to register.\n *\n * @example\n * ```typescript\n * import { OpenAIInstrumentation } from \"@opentelemetry/instrumentation-openai\";\n * Tracer.registerOTELInstrumentation(new OpenAIInstrumentation());\n * ```\n */\n static registerOTELInstrumentation(instrumentor: Instrumentation): void {\n dontThrow(\"BaseTracer.registerOTELInstrumentation\", () => {\n const proxy = BaseTracer._getProxyProvider();\n proxy.addInstrumentation(instrumentor);\n });\n }\n\n /**\n * Wrap a supported LLM client to add automatic tracing.\n *\n * Currently supports OpenAI clients. The client is instrumented\n * in-place and returned.\n *\n * Lives on `BaseTracer` (rather than a runtime-specific subclass) because\n * the OpenAI wrapper relies only on fetch-based method interception — the\n * `openai` import is types-only and it uses no Node built-ins — so it is\n * safe in both the Node and Workers runtimes.\n *\n * @param client - An LLM client instance (e.g. `new OpenAI()`).\n * @returns The same client instance, instrumented.\n *\n * @example\n * ```typescript\n * import OpenAI from \"openai\";\n *\n * const client = Tracer.wrap(new OpenAI());\n * ```\n */\n static wrap<T extends OpenAI>(client: T): T {\n return wrap(client);\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Creation (OTEL-like signatures) //\n // ------------------------------------------------------------------ //\n\n /**\n * Get the underlying OpenTelemetry Tracer instance.\n *\n * @returns The OpenTelemetry `Tracer`.\n */\n static getOTELTracer(): Tracer {\n const proxy = BaseTracer._getProxyProvider();\n return proxy.getTracer(TRACER_NAME);\n }\n\n /**\n * Start a new span without setting it as active.\n *\n * **Most users should prefer {@link observe} or {@link with}**, which\n * handle activation, error recording, and span ending automatically.\n * Use this only when you need low-level control over the span lifecycle.\n *\n * @param name - The span name.\n * @param attributes - Optional span attributes.\n * @returns The created span.\n */\n static startSpan(name: string, attributes?: Attributes): Span {\n const span = BaseTracer.getOTELTracer().startSpan(name, { attributes });\n BaseTracer._emitPartial();\n return span;\n }\n\n /**\n * Start a new active span and run a function within it.\n *\n * The span is automatically ended when the function completes.\n *\n * **Most users should prefer {@link observe} or {@link with}**, which\n * additionally record inputs/outputs and capture errors automatically.\n * Use this only when you need low-level control over the span lifecycle.\n *\n * @param options - Span options. `name` is required; `attributes` is optional.\n * @param fn - Function to execute within the span context.\n * @returns The return value of `fn`.\n *\n * @example\n * ```typescript\n * Tracer.startActiveSpan({ name: \"fetch-user\" }, (span) => {\n * // ...\n * });\n * ```\n */\n static startActiveSpan<T>(\n options: { name: string; attributes?: Attributes },\n fn: (span: Span) => T,\n ): T {\n const { name, attributes } = options;\n return BaseTracer.getOTELTracer().startActiveSpan(\n name,\n { attributes },\n (span) => {\n BaseTracer._emitPartial();\n try {\n const result = fn(span);\n if (result instanceof Promise) {\n return (result as Promise<unknown>).finally(() => {\n span.end();\n }) as T;\n }\n span.end();\n return result;\n } catch (e) {\n span.end();\n throw e;\n }\n },\n );\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Helpers //\n // ------------------------------------------------------------------ //\n\n /**\n * Create a named span, execute a function, and handle errors.\n *\n * Errors are recorded on the span and re-thrown.\n *\n * @param spanName - The span name.\n * @param fn - Function to execute within the span.\n * @returns The return value of `fn`.\n */\n static span<T>(spanName: string, fn: (span: Span) => T): T {\n return BaseTracer.startActiveSpan({ name: spanName }, (span) => {\n try {\n const result = fn(span);\n if (result instanceof Promise) {\n return result.catch((e: unknown) => {\n span.setStatus({ code: SpanStatusCode.ERROR, message: String(e) });\n span.recordException(e as Error);\n throw e;\n }) as T;\n }\n return result;\n } catch (e) {\n span.setStatus({ code: SpanStatusCode.ERROR, message: String(e) });\n span.recordException(e as Error);\n throw e;\n }\n });\n }\n\n /**\n * Alias for {@link span}. Create a named span and execute a function within it.\n *\n * @param spanName - The span name.\n * @param fn - Function to execute within the span.\n * @returns The return value of `fn`.\n */\n static with<T>(spanName: string, fn: (span: Span) => T): T {\n return BaseTracer.span(spanName, fn);\n }\n\n /**\n * Continue a distributed trace from an upstream service.\n *\n * Extracts W3C trace context and baggage from `carrier` and installs\n * it as the active context for the duration of `fn`. Any span started\n * inside — including `@Tracer.observe`-wrapped functions and\n * `Tracer.with` blocks — becomes a child of the upstream parent,\n * stitching your service into the caller's trace.\n *\n * Use this at the entry point of an inbound request (HTTP handler,\n * message queue consumer, RPC dispatcher, etc.) to join a trace\n * started by the upstream caller. If the carrier contains no trace\n * context, `fn` still runs normally with a fresh context.\n *\n * @param carrier - A mapping containing propagation headers. Typically\n * `req.headers` from Node's `http`/Express/Fastify, but any dict-shaped\n * object with lowercase keys works (queue attributes, Lambda event\n * headers, RPC metadata, etc.).\n * @param fn - Function to run inside the extracted context. Receives\n * the extracted {@link Context} as its argument; most callers ignore\n * it. Sync or async.\n * @returns The return value of `fn`.\n *\n * @example\n * ```typescript\n * import { Tracer } from \"judgeval\";\n *\n * const handle = Tracer.observe(async (payload: unknown) => {\n * // ... your agent logic ...\n * });\n *\n * // Express / Node http handler:\n * app.post(\"/run\", async (req, res) => {\n * await Tracer.continueTrace(req.headers, async () => {\n * const result = await handle(req.body);\n * res.json(result);\n * });\n * });\n * ```\n *\n * Propagating in the opposite direction (outbound):\n *\n * @example\n * ```typescript\n * import { propagation } from \"judgeval\";\n *\n * const headers: Record<string, string> = {};\n * propagation.inject(headers);\n * await fetch(downstreamUrl, { headers, method: \"POST\", body });\n * ```\n */\n static continueTrace<T>(carrier: object, fn: (ctx: Context) => T): T {\n const proxy = BaseTracer._getProxyProvider();\n const ctx = extract(carrier);\n return proxy.withContext(ctx, () => fn(ctx));\n }\n\n // ------------------------------------------------------------------ //\n // Static API: Observation Decorator //\n // ------------------------------------------------------------------ //\n\n /**\n * Wrap a function to automatically create spans and record inputs/outputs.\n *\n * Can be called with a function to wrap it directly, or with just options\n * to get a decorator (e.g. for TC39 decorator syntax).\n *\n * @param func - The function to wrap. Omit to get a decorator.\n * @param options - Optional observation options.\n * @returns The wrapped function, or a decorator if `func` is omitted.\n *\n * @example\n * ```typescript\n * // Direct wrapping\n * const traced = Tracer.observe(\n * async (query: string) => search(query),\n * { spanType: \"tool\" },\n * );\n *\n * // Decorator form\n * class Agent {\n * \\@Tracer.observe({ spanType: \"llm\" })\n * async chat(input: string) { ... }\n * }\n *\n * // Fork into a linked trace\n * const delegate = Tracer.observe(runSubsystem, {\n * spanType: \"agent\",\n * fork: true,\n * });\n * ```\n */\n static observe<TArgs extends unknown[], TReturn>(\n func: (...args: TArgs) => TReturn,\n options?: ObserveOptions,\n ): (...args: TArgs) => TReturn;\n static observe(\n options?: ObserveOptions,\n ): <TArgs extends unknown[], TReturn>(\n func: (...args: TArgs) => TReturn,\n context?: unknown,\n ) => (...args: TArgs) => TReturn;\n static observe<TArgs extends unknown[], TReturn>(\n funcOrOptions?: ((...args: TArgs) => TReturn) | ObserveOptions,\n options?: ObserveOptions,\n ):\n | ((...args: TArgs) => TReturn)\n | ((func: (...args: TArgs) => TReturn) => (...args: TArgs) => TReturn) {\n let func: ((...args: TArgs) => TReturn) | undefined;\n if (typeof funcOrOptions === \"function\") {\n func = funcOrOptions;\n } else {\n options = funcOrOptions;\n }\n const {\n spanType = \"span\",\n spanName,\n recordInput = true,\n recordOutput = true,\n fork = false,\n } = options ?? {};\n const proxy = BaseTracer._getProxyProvider();\n const decorator = (\n innerFunc: (...args: TArgs) => TReturn,\n ): ((...args: TArgs) => TReturn) => {\n const name = spanName ?? innerFunc.name;\n return function (this: unknown, ...args: TArgs): TReturn {\n const otelTracer = proxy.getTracer(TRACER_NAME);\n\n const shouldFork =\n fork &&\n proxy.getActiveTracer() !== null &&\n proxy.getCurrentSpan()?.isRecording() === true;\n\n if (shouldFork) {\n const serializer = BaseTracer._getSerializer();\n\n // Invocation span — child of current trace\n const invocationSpan = otelTracer.startSpan(name);\n const invocationCtx = invocationSpan.spanContext();\n if (spanType) {\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_SPAN_KIND,\n spanType,\n );\n }\n\n // Linked-root span — root of a new trace\n const linkedRootAttrs: Attributes = {\n [AttributeKeys.JUDGMENT_LINK_SOURCE_TRACE_ID]:\n invocationCtx.traceId,\n [AttributeKeys.JUDGMENT_LINK_SOURCE_SPAN_ID]: invocationCtx.spanId,\n };\n if (spanType) {\n linkedRootAttrs[AttributeKeys.JUDGMENT_SPAN_KIND] = spanType;\n }\n\n const parentlessCtx = proxy.setSpan(\n proxy.getCurrentContext(),\n proxy.wrapSpanContext(INVALID_SPAN_CONTEXT),\n );\n const linkedRoot = otelTracer.startSpan(\n name,\n { attributes: linkedRootAttrs },\n parentlessCtx,\n );\n const linkedRootCtx = linkedRoot.spanContext();\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_LINK_TARGET_TRACE_ID,\n linkedRootCtx.traceId,\n );\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_LINK_TARGET_SPAN_ID,\n linkedRootCtx.spanId,\n );\n\n const endBoth = (): void => {\n linkedRoot.end();\n invocationSpan.end();\n };\n const recordErrorOnBoth = (e: unknown): void => {\n for (const s of [linkedRoot, invocationSpan]) {\n s.recordException(e as Error);\n s.setStatus({\n code: SpanStatusCode.ERROR,\n message: String(e),\n });\n }\n };\n const recordOutputOnBoth = (value: unknown): void => {\n const serialized = serializeAttribute(value, serializer);\n linkedRoot.setAttribute(AttributeKeys.JUDGMENT_OUTPUT, serialized);\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_OUTPUT,\n serialized,\n );\n };\n\n if (recordInput) {\n const serializedInput = serializeAttribute(\n getInputs(innerFunc, args),\n serializer,\n );\n linkedRoot.setAttribute(\n AttributeKeys.JUDGMENT_INPUT,\n serializedInput,\n );\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_INPUT,\n serializedInput,\n );\n }\n BaseTracer._emitPartial();\n\n return proxy.useSpan(linkedRoot, false, false, false, (): TReturn => {\n try {\n const result = innerFunc.call(this, ...args);\n if (result instanceof Promise) {\n return (result as Promise<unknown>)\n .then((res) => {\n if (recordOutput) recordOutputOnBoth(res);\n return res as TReturn;\n })\n .catch((e: unknown) => {\n recordErrorOnBoth(e);\n throw e;\n })\n .finally(endBoth) as TReturn;\n }\n if (recordOutput) recordOutputOnBoth(result);\n endBoth();\n return result;\n } catch (e) {\n recordErrorOnBoth(e);\n endBoth();\n throw e;\n }\n });\n }\n\n return otelTracer.startActiveSpan(name, (span) => {\n if (spanType) {\n span.setAttribute(AttributeKeys.JUDGMENT_SPAN_KIND, spanType);\n }\n try {\n if (recordInput) {\n span.setAttribute(\n AttributeKeys.JUDGMENT_INPUT,\n serializeAttribute(\n getInputs(innerFunc, args),\n BaseTracer._getSerializer(),\n ),\n );\n }\n BaseTracer._emitPartial();\n const result = innerFunc.call(this, ...args);\n\n if (result instanceof Promise) {\n return (result as Promise<unknown>)\n .then((res) => {\n if (recordOutput) {\n span.setAttribute(\n AttributeKeys.JUDGMENT_OUTPUT,\n serializeAttribute(res, BaseTracer._getSerializer()),\n );\n }\n return res as TReturn;\n })\n .catch((e: unknown) => {\n span.recordException(e as Error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: String(e),\n });\n throw e;\n })\n .finally(() => {\n span.end();\n }) as TReturn;\n }\n\n if (recordOutput) {\n span.setAttribute(\n AttributeKeys.JUDGMENT_OUTPUT,\n serializeAttribute(result, BaseTracer._getSerializer()),\n );\n }\n span.end();\n return result;\n } catch (e) {\n span.recordException(e as Error);\n span.setStatus({ code: SpanStatusCode.ERROR, message: String(e) });\n span.end();\n throw e;\n }\n });\n };\n };\n\n if (!func) return decorator;\n return decorator(func);\n }\n\n // ------------------------------------------------------------------ //\n // Internal: resolve target span //\n // ------------------------------------------------------------------ //\n\n private static _resolveSpan(span?: Span): Span | undefined {\n if (span) return span;\n return BaseTracer._getProxyProvider().getCurrentSpan();\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Kind //\n // ------------------------------------------------------------------ //\n\n /**\n * Set the kind of a span.\n *\n * @param kind - The span kind (e.g. \"llm\", \"tool\", \"span\").\n * @param span - Target span. Defaults to the current active span.\n */\n static setSpanKind(kind: string): void;\n static setSpanKind(kind: string, span: Span): void;\n static setSpanKind(kind: string, span?: Span): void {\n dontThrow(\"BaseTracer.setSpanKind\", () => {\n if (!kind) return;\n const target = BaseTracer._resolveSpan(span);\n if (target?.isRecording()) {\n target.setAttribute(AttributeKeys.JUDGMENT_SPAN_KIND, kind);\n }\n });\n }\n\n /**\n * Set the current span kind to \"llm\".\n */\n static setLLMSpan(): void {\n BaseTracer.setSpanKind(\"llm\");\n }\n\n /**\n * Set the current span kind to \"tool\".\n */\n static setToolSpan(): void {\n BaseTracer.setSpanKind(\"tool\");\n }\n\n /**\n * Set the current span kind to \"span\".\n */\n static setGeneralSpan(): void {\n BaseTracer.setSpanKind(\"span\");\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Attribute Operations //\n // ------------------------------------------------------------------ //\n\n /**\n * Set a single attribute on a span.\n *\n * @param key - The attribute key.\n * @param value - The attribute value (will be serialized).\n * @param span - Target span. Defaults to the current active span.\n */\n static setAttribute(key: string, value: unknown): void;\n static setAttribute(key: string, value: unknown, span: Span): void;\n static setAttribute(key: string, value: unknown, span?: Span): void {\n dontThrow(\"BaseTracer.setAttribute\", () => {\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n if (!key || value == null) return;\n target.setAttribute(\n key,\n serializeAttribute(value, BaseTracer._getSerializer()),\n );\n });\n }\n\n /**\n * Set multiple attributes on a span.\n *\n * @param attributes - Key-value pairs to set.\n * @param span - Target span. Defaults to the current active span.\n */\n static setAttributes(attributes: Record<string, unknown>): void;\n static setAttributes(attributes: Record<string, unknown>, span: Span): void;\n static setAttributes(attributes: Record<string, unknown>, span?: Span): void {\n for (const [key, value] of Object.entries(attributes)) {\n if (span) BaseTracer.setAttribute(key, value, span);\n else BaseTracer.setAttribute(key, value);\n }\n }\n\n /**\n * Set the input data on a span.\n *\n * @param inputData - The input data to record.\n * @param span - Target span. Defaults to the current active span.\n */\n static setInput(inputData: unknown): void;\n static setInput(inputData: unknown, span: Span): void;\n static setInput(inputData: unknown, span?: Span): void {\n if (span)\n BaseTracer.setAttribute(AttributeKeys.JUDGMENT_INPUT, inputData, span);\n else BaseTracer.setAttribute(AttributeKeys.JUDGMENT_INPUT, inputData);\n }\n\n /**\n * Set the output data on a span.\n *\n * @param outputData - The output data to record.\n * @param span - Target span. Defaults to the current active span.\n */\n static setOutput(outputData: unknown): void;\n static setOutput(outputData: unknown, span: Span): void;\n static setOutput(outputData: unknown, span?: Span): void {\n if (span)\n BaseTracer.setAttribute(AttributeKeys.JUDGMENT_OUTPUT, outputData, span);\n else BaseTracer.setAttribute(AttributeKeys.JUDGMENT_OUTPUT, outputData);\n }\n\n /**\n * Record an error on a span.\n *\n * Sets the span status to ERROR and records the exception.\n *\n * @param error - The error to record.\n * @param span - Target span. Defaults to the current active span.\n */\n static setError(error: unknown): void;\n static setError(error: unknown, span: Span): void;\n static setError(error: unknown, span?: Span): void {\n dontThrow(\"BaseTracer.setError\", () => {\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n target.recordException(error as Error);\n target.setStatus({ code: SpanStatusCode.ERROR, message: String(error) });\n });\n }\n\n /**\n * Record LLM usage metadata on a span.\n *\n * @param metadata - LLM metadata including model, provider, and token counts.\n * @param span - Target span. Defaults to the current active span.\n *\n * @example\n * ```typescript\n * Tracer.recordLLMMetadata({\n * model: \"gpt-4o\",\n * provider: \"openai\",\n * output_tokens: 150,\n * });\n * ```\n */\n static recordLLMMetadata(metadata: LLMMetadata): void;\n static recordLLMMetadata(metadata: LLMMetadata, span: Span): void;\n static recordLLMMetadata(metadata: LLMMetadata, span?: Span): void {\n dontThrow(\"BaseTracer.recordLLMMetadata\", () => {\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n\n if (typeof metadata.model === \"string\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_LLM_MODEL_NAME,\n metadata.model,\n );\n }\n\n if (typeof metadata.provider === \"string\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_LLM_PROVIDER,\n metadata.provider,\n );\n }\n\n if (typeof metadata.non_cached_input_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_NON_CACHED_INPUT_TOKENS,\n metadata.non_cached_input_tokens,\n );\n }\n if (typeof metadata.output_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_OUTPUT_TOKENS,\n metadata.output_tokens,\n );\n }\n if (typeof metadata.cache_read_input_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_CACHE_READ_INPUT_TOKENS,\n metadata.cache_read_input_tokens,\n );\n }\n if (typeof metadata.cache_creation_input_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_CACHE_CREATION_INPUT_TOKENS,\n metadata.cache_creation_input_tokens,\n );\n }\n if (typeof metadata.total_cost_usd === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_TOTAL_COST_USD,\n metadata.total_cost_usd,\n );\n }\n });\n }\n\n // ------------------------------------------------------------------ //\n // Static: Context Propagation //\n // ------------------------------------------------------------------ //\n\n /**\n * Set a key on the current span and on baggage so it propagates to all\n * child spans. Also reattaches the current context to the updated one.\n */\n private static _setPropagatingBaggageKey(key: string, value: string): void {\n dontThrow(\"BaseTracer._setPropagatingBaggageKey\", () => {\n const proxy = BaseTracer._getProxyProvider();\n const currentSpan = proxy.getCurrentSpan();\n if (!currentSpan?.isRecording()) return;\n currentSpan.setAttribute(key, value);\n const ctx = proxy.getCurrentContext();\n const baggage = (getBaggage(ctx) ?? createBaggage()).setEntry(key, {\n value,\n });\n proxy.attachContext(setBaggage(ctx, baggage));\n });\n }\n\n /**\n * Set the customer ID on the current active span.\n *\n * The ID is automatically propagated to all child spans via baggage.\n * This method always targets the active span because it modifies\n * the active context's baggage for propagation.\n *\n * @param customerId - The customer identifier.\n */\n static setCustomerId(customerId: string): void {\n BaseTracer._setPropagatingBaggageKey(\n AttributeKeys.JUDGMENT_CUSTOMER_ID,\n customerId,\n );\n }\n\n /**\n * Set the customer user ID on the current active span.\n *\n * The ID is automatically propagated to all child spans via baggage.\n * This method always targets the active span because it modifies\n * the active context's baggage for propagation.\n *\n * @param customerUserId - The customer user identifier.\n */\n static setCustomerUserId(customerUserId: string): void {\n BaseTracer._setPropagatingBaggageKey(\n AttributeKeys.JUDGMENT_CUSTOMER_USER_ID,\n customerUserId,\n );\n }\n\n /**\n * Set the session ID on the current active span.\n *\n * The ID is automatically propagated to all child spans via baggage.\n * This method always targets the active span because it modifies\n * the active context's baggage for propagation.\n *\n * @param sessionId - The session identifier.\n */\n static setSessionId(sessionId: string): void {\n BaseTracer._setPropagatingBaggageKey(\n AttributeKeys.JUDGMENT_SESSION_ID,\n sessionId,\n );\n }\n\n /**\n * Set an attribute and propagate it to all child spans via baggage.\n *\n * Unlike {@link setAttribute} (single span only). The `judgment.` prefix is\n * reserved and ignored.\n */\n static setPropagatingAttribute(key: string, value: string): void {\n if (key.startsWith(\"judgment.\")) {\n Logger.error(\n `setPropagatingAttribute: key \"${key}\" uses the reserved \"judgment.\" prefix; ignoring`,\n );\n return;\n }\n BaseTracer._setPropagatingBaggageKey(key, value);\n }\n\n // ------------------------------------------------------------------ //\n // Static: Tags //\n // ------------------------------------------------------------------ //\n\n /**\n * Add tags to the current trace.\n *\n * @param tags - A single tag string or an array of tag strings.\n *\n * @example\n * ```typescript\n * Tracer.tag(\"production\");\n * Tracer.tag([\"important\", \"customer-facing\"]);\n * ```\n */\n static tag(tags: string | string[]): void {\n dontThrow(\"BaseTracer.tag\", () => {\n if (!tags || (Array.isArray(tags) && tags.length === 0)) return;\n const proxy = BaseTracer._getProxyProvider();\n const tracer = proxy.getActiveTracer();\n if (!tracer?.projectId || !tracer._client) return;\n if (!tracer.supportsLiveInstrumentation) return;\n const ids = BaseTracer._getCurrentTraceAndSpanId();\n if (!ids) return;\n const [traceId] = ids;\n const tagArray = Array.isArray(tags) ? tags : [tags];\n tracer._client\n .postV1projectsTracesByTraceIdTags(tracer.projectId, traceId, {\n tags: tagArray,\n })\n .catch((err: unknown) => {\n Logger.error(`tag failed: ${String(err)}`);\n });\n });\n }\n\n // ------------------------------------------------------------------ //\n // Static API: Async Evaluation //\n // ------------------------------------------------------------------ //\n\n /**\n * Trigger an asynchronous server-side evaluation on a span.\n *\n * The evaluation is queued and processed server-side by the Judgment\n * platform after the span ends. Use this to score live traffic\n * without blocking your application.\n *\n * @param options - Evaluation options. `judge` is required; `example`\n * is optional evaluation data.\n * @param span - Target span. Defaults to the current active span.\n *\n * @example\n * ```typescript\n * Tracer.asyncEvaluate({\n * judge: \"answer_relevancy\",\n * example: {\n * input: \"What is AI?\",\n * actual_output: response,\n * },\n * });\n * ```\n */\n static asyncEvaluate(options: AsyncEvaluateOptions): void;\n static asyncEvaluate(options: AsyncEvaluateOptions, span: Span): void;\n static asyncEvaluate(options: AsyncEvaluateOptions, span?: Span): void {\n dontThrow(\"BaseTracer.asyncEvaluate\", () => {\n const { judge, example } = options;\n const proxy = BaseTracer._getProxyProvider();\n const tracer = proxy.getActiveTracer();\n if (!tracer?.projectId) return;\n if (!tracer.supportsLiveInstrumentation) return;\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n\n const processor = tracer.getSpanProcessor();\n const ctx = target.spanContext();\n\n const idx = processor.stateIncr(\n ctx,\n InternalAttributeKeys.PENDING_EVALS_COUNT,\n );\n const payload: PendingEvalPayload = {\n project_id: tracer.projectId,\n eval_name: `async_evaluate_${judge}_${idx}`,\n judges: [{ name: judge }],\n examples: [\n {\n ...example,\n example_id: crypto.randomUUID(),\n created_at: new Date().toISOString(),\n trace_id: ctx.traceId,\n span_id: ctx.spanId,\n },\n ],\n is_offline: false,\n is_behavior: false,\n };\n const updated = processor.stateAppend<PendingEvalPayload>(\n ctx,\n InternalAttributeKeys.PENDING_EVALS,\n payload,\n );\n\n // Raw setAttribute — value is already JSON-stringified, BaseTracer.setAttribute would double-serialize.\n target.setAttribute(\n AttributeKeys.JUDGMENT_PENDING_TRACE_EVAL,\n JSON.stringify(updated),\n );\n });\n }\n}\n\nfunction getInputs<TArgs extends unknown[]>(\n f: (...args: TArgs) => unknown,\n args: TArgs,\n): Record<string, unknown> {\n try {\n const paramNames = parseFunctionArgs(f)\n .map((param) =>\n param\n .replace(/^\\.\\.\\./, \"\")\n .split(\"=\")[0]\n .trim(),\n )\n .filter((param) => param.length > 0);\n const inputs: Record<string, unknown> = {};\n paramNames.forEach((name, index) => {\n if (index < args.length) {\n inputs[name] = args[index];\n }\n });\n return inputs;\n } catch {\n return {};\n }\n}\n",
6
6
  "function getEnvVar(varName: string): string | null;\nfunction getEnvVar(varName: string, defaultValue: string): string;\nfunction getEnvVar(varName: string, defaultValue?: string): string | null {\n const value = process.env[varName];\n if (!value) {\n return defaultValue ?? null;\n }\n return value;\n}\n\nexport const JUDGMENT_API_KEY = getEnvVar(\"JUDGMENT_API_KEY\");\nexport const JUDGMENT_ORG_ID = getEnvVar(\"JUDGMENT_ORG_ID\");\nexport const JUDGMENT_API_URL = getEnvVar(\n \"JUDGMENT_API_URL\",\n \"https://api.judgmentlabs.ai\",\n);\nexport const JUDGMENT_LOG_LEVEL = getEnvVar(\"JUDGMENT_LOG_LEVEL\", \"warn\");\n",
7
7
  "import { JUDGMENT_LOG_LEVEL } from \"../env\";\n\n/**\n * SDK logger with configurable levels and color output.\n *\n * Log level is controlled by the `JUDGMENT_LOG_LEVEL` environment variable.\n * Defaults to \"warn\". Supported levels: \"debug\", \"info\", \"warning\", \"error\", \"critical\".\n *\n * @example\n * ```typescript\n * import { Logger } from \"judgeval\";\n *\n * Logger.setLevel(\"debug\");\n * Logger.info(\"Tracer initialized\");\n * ```\n */\nexport class Logger {\n private static readonly RESET = \"\\x1b[0m\";\n private static readonly RED = \"\\x1b[31m\";\n private static readonly YELLOW = \"\\x1b[33m\";\n private static readonly GRAY = \"\\x1b[90m\";\n\n public static Level = {\n DEBUG: 0,\n INFO: 1,\n WARNING: 2,\n ERROR: 3,\n CRITICAL: 4,\n } as const;\n\n private static initialized = false;\n private static levelSetManually = false;\n private static currentLevel: number = Logger.Level.WARNING;\n private static useColor = true;\n\n private static initialize(): void {\n if (!Logger.initialized) {\n const noColor = process.env.JUDGMENT_NO_COLOR;\n Logger.useColor = !noColor && process.stdout.isTTY;\n\n if (!Logger.levelSetManually) {\n const logLevel = JUDGMENT_LOG_LEVEL.toLowerCase();\n if (logLevel) {\n const levelMap: Record<string, number> = {\n debug: Logger.Level.DEBUG,\n info: Logger.Level.INFO,\n warning: Logger.Level.WARNING,\n warn: Logger.Level.WARNING,\n error: Logger.Level.ERROR,\n critical: Logger.Level.CRITICAL,\n };\n Logger.currentLevel = levelMap[logLevel] ?? Logger.Level.WARNING;\n }\n }\n\n Logger.initialized = true;\n }\n }\n\n /** Set the minimum log level. */\n public static setLevel(level: number): void {\n Logger.currentLevel = level;\n Logger.levelSetManually = true;\n }\n\n /** Enable or disable colored output. */\n public static setUseColor(useColor: boolean): void {\n Logger.useColor = useColor;\n }\n\n private static log(level: number, message: string): void {\n Logger.initialize();\n\n if (level < Logger.currentLevel) {\n return;\n }\n\n const timestamp = new Date()\n .toISOString()\n .replace(\"T\", \" \")\n .substring(0, 19);\n const levelName =\n Object.keys(Logger.Level).find(\n (key) => Logger.Level[key as keyof typeof Logger.Level] === level,\n ) ?? \"UNKNOWN\";\n let formattedMessage = `${timestamp} - judgeval - ${levelName} - ${message}`;\n\n if (Logger.useColor) {\n const color =\n level === Logger.Level.DEBUG || level === Logger.Level.INFO\n ? Logger.GRAY\n : level === Logger.Level.WARNING\n ? Logger.YELLOW\n : Logger.RED;\n formattedMessage = `${color}${formattedMessage}${Logger.RESET}`;\n }\n\n const output =\n level >= Logger.Level.ERROR ? process.stderr : process.stdout;\n output.write(formattedMessage + \"\\n\");\n }\n\n /** Log a debug message. */\n public static debug(message: string): void {\n Logger.log(Logger.Level.DEBUG, message);\n }\n\n /** Log an informational message. */\n public static info(message: string): void {\n Logger.log(Logger.Level.INFO, message);\n }\n\n /** Log a warning message. */\n public static warning(message: string): void {\n Logger.log(Logger.Level.WARNING, message);\n }\n\n public static warn(message: string): void {\n Logger.log(Logger.Level.WARNING, message);\n }\n\n /** Log an error message. */\n public static error(message: string): void {\n Logger.log(Logger.Level.ERROR, message);\n }\n\n /** Log a critical error message. */\n public static critical(message: string): void {\n Logger.log(Logger.Level.CRITICAL, message);\n }\n}\n",
8
8
  "import { Logger } from \"./logger\";\n\n/**\n * Run `fn` and swallow any thrown error, logging it instead.\n *\n * @param name - Name used in the error log (typically `\"ClassName.method\"`).\n * @param fn - Function to invoke.\n * @param fallback - Optional value returned when `fn` throws.\n * @returns The return value of `fn`, or `fallback` (or `undefined`) on error.\n */\nexport function dontThrow<T>(name: string, fn: () => T): T | undefined;\nexport function dontThrow<T>(name: string, fn: () => T, fallback: T): T;\nexport function dontThrow<T>(\n name: string,\n fn: () => T,\n fallback?: T,\n): T | undefined {\n try {\n return fn();\n } catch (err) {\n const stack = err instanceof Error && err.stack ? `\\n${err.stack}` : \"\";\n Logger.error(\n `[Caught] An exception was raised in ${name}: ${String(err)}${stack}`,\n );\n return fallback;\n }\n}\n",
@@ -36,7 +36,7 @@
36
36
  "import {\n ROOT_CONTEXT,\n SpanStatusCode,\n trace,\n type Context,\n type Span,\n type SpanContext,\n type SpanOptions,\n type Tracer,\n type TracerProvider,\n} from \"@opentelemetry/api\";\nimport { AsyncLocalStorage } from \"async_hooks\";\nimport type { Instrumentation } from \"@opentelemetry/instrumentation\";\nimport { Logger } from \"../utils/logger\";\nimport { noOpTracer } from \"../trace/NoOpTracer\";\nimport { setTraceRuntime, type TraceRuntimeTracer } from \"../trace/runtime\";\n\nconst TRACER_NAME = \"judgeval\";\n\ninterface ContextHolder {\n ctx: Context;\n}\n\nconst _contextStorage = new AsyncLocalStorage<ContextHolder>();\n\nclass ProxyTracer implements Tracer {\n private _provider: WorkerTracerProvider;\n\n constructor(provider: WorkerTracerProvider) {\n this._provider = provider;\n }\n\n startSpan(name: string, options?: SpanOptions, context?: Context): Span {\n const ctx = context ?? this._provider.getCurrentContext();\n const delegate = this._provider._getDelegateTracer();\n return delegate.startSpan(name, options, ctx);\n }\n\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n options: SpanOptions,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n options: SpanOptions,\n context: Context,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n ...args: [F] | [SpanOptions, F] | [SpanOptions, Context, F]\n ): ReturnType<F> {\n let options: SpanOptions = {};\n let context: Context = this._provider.getCurrentContext();\n let fn: F;\n\n if (args.length === 1) {\n fn = args[0];\n } else if (args.length === 2) {\n options = args[0];\n fn = args[1];\n } else {\n options = args[0];\n context = args[1];\n fn = args[2];\n }\n\n const span = this.startSpan(name, options, context);\n return this._provider.useSpan(span, false, false, false, () =>\n fn(span),\n ) as ReturnType<F>;\n }\n}\n\nexport class WorkerTracerProvider implements TracerProvider {\n private static _instance: WorkerTracerProvider | null = null;\n\n private _activeTracer: TraceRuntimeTracer | null = null;\n private _proxyTracer: ProxyTracer;\n private _tracers = new Set<TraceRuntimeTracer>();\n\n private constructor() {\n this._proxyTracer = new ProxyTracer(this);\n setTraceRuntime(this);\n }\n\n static getInstance(): WorkerTracerProvider {\n WorkerTracerProvider._instance ??= new WorkerTracerProvider();\n return WorkerTracerProvider._instance;\n }\n\n register(tracer: TraceRuntimeTracer): void {\n this._tracers.add(tracer);\n }\n\n deregister(tracer: TraceRuntimeTracer): void {\n this._tracers.delete(tracer);\n }\n\n setActive(tracer: TraceRuntimeTracer): boolean {\n const currentSpan = this.getCurrentSpan();\n if (currentSpan?.isRecording()) {\n if (trace.getSpan(this.getCurrentContext()) === currentSpan) {\n Logger.error(\n \"Cannot set_active() while a root span is active. Keeping existing tracer provider.\",\n );\n return false;\n }\n }\n this.register(tracer);\n this._activeTracer = tracer;\n return true;\n }\n\n getActiveTracer(): TraceRuntimeTracer | null {\n return this._activeTracer;\n }\n\n getCurrentContext(): Context {\n return _contextStorage.getStore()?.ctx ?? ROOT_CONTEXT;\n }\n\n setSpan(ctx: Context, span: Span): Context {\n return trace.setSpan(ctx, span);\n }\n\n wrapSpanContext(spanContext: SpanContext): Span {\n return trace.wrapSpanContext(spanContext);\n }\n\n getCurrentSpan(): Span | undefined {\n return trace.getSpan(this.getCurrentContext());\n }\n\n _getDelegateTracer(): Tracer {\n const tracer = this._activeTracer;\n if (!tracer) {\n Logger.debug(\"No active tracer, returning NoOpTracer\");\n return noOpTracer;\n }\n return tracer._tracerProvider.getTracer(TRACER_NAME);\n }\n\n getTracer(\n _instrumentingModuleName: string,\n _instrumentingLibraryVersion?: string,\n _options?: { schemaUrl?: string },\n ): Tracer {\n return this._proxyTracer;\n }\n\n addInstrumentation(_instrumentor: Instrumentation): void {\n Logger.warning(\n \"OpenTelemetry instrumentations are only supported by the Node entrypoint.\",\n );\n }\n\n useSpan<T>(\n span: Span,\n endOnExit: boolean,\n recordException: boolean,\n setStatusOnException: boolean,\n fn: () => T,\n ): T {\n const prevCtx = this.getCurrentContext();\n const ctx = trace.setSpan(prevCtx, span);\n return _contextStorage.run({ ctx }, () => {\n try {\n const result = fn();\n if (result instanceof Promise) {\n return result\n .catch((exc: unknown) => {\n if (span.isRecording()) {\n if (recordException) span.recordException(exc as Error);\n if (setStatusOnException) {\n const err = exc as Error;\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: `${err.name}: ${err.message}`,\n });\n }\n }\n throw exc;\n })\n .finally(() => {\n if (endOnExit) span.end();\n }) as T;\n }\n if (endOnExit) span.end();\n return result;\n } catch (exc) {\n if (span.isRecording()) {\n if (recordException) span.recordException(exc as Error);\n if (setStatusOnException) {\n const err = exc as Error;\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: `${err.name}: ${err.message}`,\n });\n }\n }\n if (endOnExit) span.end();\n throw exc;\n }\n });\n }\n\n attachContext(ctx: Context): void {\n const holder = _contextStorage.getStore();\n if (holder) {\n holder.ctx = ctx;\n }\n }\n\n withContext<T>(ctx: Context, fn: () => T): T {\n return _contextStorage.run({ ctx }, fn);\n }\n\n async forceFlush(): Promise<void> {\n const results = await Promise.allSettled(\n Array.from(this._tracers).map((t) => t._tracerProvider.forceFlush()),\n );\n for (const r of results) {\n if (r.status === \"rejected\") {\n Logger.error(`forceFlush failed: ${String(r.reason)}`);\n }\n }\n }\n\n async shutdown(): Promise<void> {\n const results = await Promise.allSettled(\n Array.from(this._tracers).map((t) => t._tracerProvider.shutdown()),\n );\n for (const r of results) {\n if (r.status === \"rejected\") {\n Logger.error(`shutdown failed: ${String(r.reason)}`);\n }\n }\n this._activeTracer = null;\n this._tracers.clear();\n }\n}\n",
37
37
  "import type { ExportResult } from \"@opentelemetry/core\";\nimport { ExportResultCode } from \"@opentelemetry/core\";\nimport { ProtobufTraceSerializer } from \"@opentelemetry/otlp-transformer\";\nimport type { ReadableSpan, SpanExporter } from \"@opentelemetry/sdk-trace-base\";\n\n/**\n * Fetch-based OTLP/protobuf span exporter for Cloudflare Workers.\n *\n * Export outcomes (including failures) are reported through `resultCallback`,\n * which the span processor consumes. The processor's `forceFlush` drives the\n * actual flush — the exporter is stateless and keeps no error queue.\n */\nexport class WorkerSpanExporter implements SpanExporter {\n constructor(\n private readonly _endpoint: string,\n private readonly _apiKey: string,\n private readonly _organizationId: string,\n private readonly _projectId: string,\n ) {}\n\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void,\n ): void {\n const body = ProtobufTraceSerializer.serializeRequest(spans);\n if (!body) {\n resultCallback({ code: ExportResultCode.SUCCESS });\n return;\n }\n\n fetch(this._endpoint, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this._apiKey}`,\n \"Content-Type\": \"application/x-protobuf\",\n \"X-Organization-Id\": this._organizationId,\n \"X-Project-Id\": this._projectId,\n },\n body,\n })\n .then(async (res) => {\n if (res.ok) {\n resultCallback({ code: ExportResultCode.SUCCESS });\n return;\n }\n const detail = (await res.text().catch(() => \"\")).slice(0, 500);\n resultCallback({\n code: ExportResultCode.FAILED,\n error: new Error(\n detail\n ? `OTLP export failed: ${res.status}: ${detail}`\n : `OTLP export failed: ${res.status}`,\n ),\n });\n })\n .catch((error: unknown) => {\n resultCallback({\n code: ExportResultCode.FAILED,\n error: error instanceof Error ? error : new Error(String(error)),\n });\n });\n }\n\n shutdown(): Promise<void> {\n return Promise.resolve();\n }\n}\n"
38
38
  ],
39
- "mappings": "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",
40
- "debugId": "89E216D3105A8A9C64756E2164756E21",
39
+ "mappings": "iIAAA,+BAGE,qBAEA,2BCHF,SAAS,CAAS,CAAC,EAAiB,EAAsC,CACxE,IAAM,EAAQ,QAAQ,IAAI,GAC1B,GAAI,CAAC,EACH,OAAO,GAAgB,KAEzB,OAAO,EAGF,IAAM,GAAmB,EAAU,kBAAkB,EAC/C,GAAkB,EAAU,iBAAiB,EAC7C,GAAmB,EAC9B,mBACA,6BACF,EACa,GAAqB,EAAU,qBAAsB,MAAM,ECAjE,MAAM,CAAO,OACM,OAAQ,gBACR,KAAM,iBACN,QAAS,iBACT,MAAO,iBAEjB,OAAQ,CACpB,MAAO,EACP,KAAM,EACN,QAAS,EACT,MAAO,EACP,SAAU,CACZ,QAEe,aAAc,SACd,kBAAmB,SACnB,cAAuB,EAAO,MAAM,cACpC,UAAW,SAEX,WAAU,EAAS,CAChC,GAAI,CAAC,EAAO,YAAa,CACvB,IAAM,EAAU,QAAQ,IAAI,kBAG5B,GAFA,EAAO,SAAW,CAAC,GAAW,QAAQ,OAAO,MAEzC,CAAC,EAAO,iBAAkB,CAC5B,IAAM,EAAW,GAAmB,YAAY,EAChD,GAAI,EAAU,CACZ,IAAM,EAAmC,CACvC,MAAO,EAAO,MAAM,MACpB,KAAM,EAAO,MAAM,KACnB,QAAS,EAAO,MAAM,QACtB,KAAM,EAAO,MAAM,QACnB,MAAO,EAAO,MAAM,MACpB,SAAU,EAAO,MAAM,QACzB,EACA,EAAO,aAAe,EAAS,IAAa,EAAO,MAAM,SAI7D,EAAO,YAAc,UAKX,SAAQ,CAAC,EAAqB,CAC1C,EAAO,aAAe,EACtB,EAAO,iBAAmB,SAId,YAAW,CAAC,EAAyB,CACjD,EAAO,SAAW,QAGL,IAAG,CAAC,EAAe,EAAuB,CAGvD,GAFA,EAAO,WAAW,EAEd,EAAQ,EAAO,aACjB,OAGF,IAAM,EAAY,IAAI,KAAK,EACxB,YAAY,EACZ,QAAQ,IAAK,GAAG,EAChB,UAAU,EAAG,EAAE,EACZ,EACJ,OAAO,KAAK,EAAO,KAAK,EAAE,KACxB,CAAC,IAAQ,EAAO,MAAM,KAAsC,CAC9D,GAAK,UACH,EAAmB,GAAG,kBAA0B,OAAe,IAEnE,GAAI,EAAO,SAOT,EAAmB,GALjB,IAAU,EAAO,MAAM,OAAS,IAAU,EAAO,MAAM,KACnD,EAAO,KACP,IAAU,EAAO,MAAM,QACrB,EAAO,OACP,EAAO,MACe,IAAmB,EAAO,SAIxD,GAAS,EAAO,MAAM,MAAQ,QAAQ,OAAS,QAAQ,QAClD,MAAM,EAAmB;AAAA,CAAI,QAIxB,MAAK,CAAC,EAAuB,CACzC,EAAO,IAAI,EAAO,MAAM,MAAO,CAAO,QAI1B,KAAI,CAAC,EAAuB,CACxC,EAAO,IAAI,EAAO,MAAM,KAAM,CAAO,QAIzB,QAAO,CAAC,EAAuB,CAC3C,EAAO,IAAI,EAAO,MAAM,QAAS,CAAO,QAG5B,KAAI,CAAC,EAAuB,CACxC,EAAO,IAAI,EAAO,MAAM,QAAS,CAAO,QAI5B,MAAK,CAAC,EAAuB,CACzC,EAAO,IAAI,EAAO,MAAM,MAAO,CAAO,QAI1B,SAAQ,CAAC,EAAuB,CAC5C,EAAO,IAAI,EAAO,MAAM,SAAU,CAAO,EAE7C,CCtHO,SAAS,CAAY,CAC1B,EACA,EACA,EACe,CACf,GAAI,CACF,OAAO,EAAG,EACV,MAAO,EAAK,CACZ,IAAM,EAAQ,aAAe,OAAS,EAAI,MAAQ;AAAA,EAAK,EAAI,QAAU,GAIrE,OAHA,EAAO,MACL,uCAAuC,MAAS,OAAO,CAAG,IAAI,GAChE,EACO,GCpBX,SAAS,EAAsB,EAIlB,CACX,IAAM,EAAO,IAAI,QACjB,OAAO,QAAS,CAAC,EAAc,EAAyB,CACtD,GAAI,OAAO,IAAU,SAAU,OAAO,EAAM,SAAS,EACrD,GAAI,OAAO,IAAU,UAAY,IAAU,KAAM,CAC/C,GAAI,EAAK,IAAI,CAAK,EAAG,MAAO,aAC5B,EAAK,IAAI,CAAK,EAEhB,OAAO,GAIJ,SAAS,CAAa,CAAC,EAAsB,CAClD,GAAI,CACF,IAAM,EAAS,KAAK,UAAU,CAAG,EACjC,GAAI,OAAO,IAAW,SAAU,OAAO,EACvC,OAAO,OAAO,CAAM,EACpB,KAAM,CACN,GAAI,CACF,IAAM,EAAS,KAAK,UAAU,EAAK,GAAuB,CAAC,EAC3D,OAAO,OAAO,IAAW,SAAW,EAAS,OAAO,CAAG,EACvD,MAAO,EAAG,CAEV,OADA,EAAO,MAAM,yBAAyB,GAAG,EAClC,OAAO,CAAG,IAYhB,SAAS,CAAkB,CAChC,EACA,EAC2B,CAC3B,GACE,OAAO,IAAU,UACjB,OAAO,IAAU,UACjB,OAAO,IAAU,UAEjB,OAAO,EACT,OAAO,EAAW,CAAK,EClDlB,SAAS,CAKf,CACC,EACA,EAA2E,CAAC,EACzE,CACH,IACE,IAAK,EACL,KAAM,EACN,MAAO,EACP,QAAS,GACP,EAEJ,OAAO,cAAsB,IAExB,EAC8B,CACjC,IAAM,EAAO,EACT,EAAU,yBAA0B,IAAM,EAAM,GAAG,CAAI,CAAC,EACxD,OAEA,EACJ,GAAI,CAEF,IAAM,EAAiC,MAAM,EAAG,MAAM,KAAM,CAAI,EAChE,GAAI,EACF,EAAW,EAAU,0BAA2B,IAC9C,EAAO,EAAM,EAAQ,CAAI,CAC3B,EAEF,OAAO,EACP,MAAO,EAAK,CACZ,GAAI,EACF,EAAW,EAAU,2BAA4B,IAC/C,EAAQ,EAAM,EAAK,CAAI,CACzB,EAEF,MAAM,SACN,CACA,GAAI,EACF,EAAU,6BAA8B,IAAM,CAC5C,EAAU,CAAQ,EACnB,IC7CF,SAAS,CAMf,CACC,EACA,EAAkD,CAAC,EAChB,CACnC,IACE,IAAK,EACL,MAAO,EACP,KAAM,EACN,MAAO,EACP,QAAS,GACP,EAEJ,OAAO,eAAuB,IAAI,EAA4B,CAC5D,IAAM,EAAO,EACT,EAAU,iCAAkC,IAAM,EAAM,GAAG,CAAI,CAAC,EAChE,OAEA,EACJ,GAAI,CACF,cAAiB,KAAS,EAAG,GAAG,CAAI,EAAG,CACrC,GAAI,EACF,EAAU,mCAAoC,IAAM,CAClD,EAAQ,EAAM,CAAK,EACpB,EAEH,MAAM,EAER,GAAI,EACF,EAAW,EAAU,kCAAmC,IACtD,EAAO,CAAI,CACb,EAEF,MAAO,EAAK,CACZ,GAAI,EACF,EAAW,EAAU,mCAAoC,IACvD,EAAQ,EAAM,CAAG,CACnB,EAEF,MAAM,SACN,CACA,GAAI,EACF,EAAU,qCAAsC,IAAM,CACpD,EAAU,CAAQ,EACnB,IC5CF,SAAS,CAAqB,CACnC,EACA,EAMM,CACN,IAAM,EAAW,EAAO,OAAO,eAAe,KAAK,CAAM,EAEnD,EAAU,EACd,KAAO,EAAG,OAAO,eAAgB,CAAS,GAC1C,CACE,MAAO,CAAC,EAAM,IAAU,CACtB,EAAM,QAAQ,CAAK,GAErB,KAAM,IAAM,CACV,EAAM,OAAO,GAEf,MAAO,CAAC,EAAM,IAAQ,CACpB,EAAM,QAAQ,CAAG,GAEnB,QAAS,IAAM,CACb,EAAM,UAAU,EAEpB,CACF,EAEC,EACC,OAAO,eACL,IAAM,EAAQ,EChCb,SAAS,CAAe,CAAC,EAAY,EAA8B,CACxE,EAAU,kBAAmB,IAAM,CACjC,IAAM,EAAY,EAAM,uBAAuB,eAAiB,EAC1D,EAAM,EAAM,cAAgB,EAAM,kBAAoB,EAC5D,EAAW,kBACT,CACE,wBACE,EAAM,EAAM,aACR,EAAM,cAAgB,EACtB,EAAM,cACZ,cAAe,EAAM,mBAAqB,OAC1C,wBAAyB,GAAa,MACxC,EACA,CACF,EACA,EAAW,uCAET,EAAc,CAAK,EACnB,CACF,EACD,ECjBI,SAAS,EAAwB,CAAC,EAAsB,CAC7D,EAAO,KAAK,YAAY,MAAQ,EAC9B,EAAO,KAAK,YAAY,MAAM,KAAK,EAAO,KAAK,WAAW,EAC1D,CACE,IAAK,CAAC,IAAS,CACb,IAAM,EAAO,EAAW,UAAU,iBAAiB,EAInD,OAHA,EAAW,YAAY,MAAO,CAAI,EAClC,EAAW,kBAAkB,CAAE,MAAO,EAAK,KAAM,EAAG,CAAI,EACxD,EAAW,SAAS,EAAM,CAAI,EACvB,GAGT,KAAM,CAAC,EAAM,IAAW,CACtB,GAAI,CAAC,EAAM,OAEX,GADA,EAAW,UAAU,EAAc,CAAM,EAAG,CAAI,EAC5C,EAAO,MAAO,EAAgB,EAAM,EAAO,KAAK,EAEpD,OADA,EAAW,kBAAkB,CAAE,MAAO,EAAO,KAAM,EAAG,CAAI,EACnD,GAGT,MAAO,CAAC,EAAM,IAAQ,CACpB,GAAI,EAAM,EAAW,SAAS,EAAK,CAAI,EACvC,OAAO,GAGT,QAAS,CAAC,IAAS,CACjB,GAAM,IAAI,EAEd,CACF,ECrBK,SAAS,EAAyB,CAAC,EAAsB,CAC9D,EAAO,KAAK,YAAY,OAAS,EAC/B,EAAO,KAAK,YAAY,OAAO,KAAK,EAAO,KAAK,WAAW,EAC3D,CACE,IAAK,CAAC,IAAS,CACb,GAAI,EAAK,OAAQ,EAAK,iBAAmB,CAAE,cAAe,EAAK,EAC/D,IAAM,EAAO,EAAW,UAAU,iBAAiB,EAInD,OAHA,EAAW,YAAY,MAAO,CAAI,EAClC,EAAW,kBAAkB,CAAE,MAAO,EAAK,KAAM,EAAG,CAAI,EACxD,EAAW,SAAS,EAAM,CAAI,EACvB,CAAE,OAAM,QAAS,EAAM,GAGhC,KAAM,CAAC,EAAK,EAAQ,IAAS,CAC3B,GAAI,CAAC,EAAK,OACV,IAAQ,QAAS,EAEjB,GAAI,EAAK,GAAG,OAAQ,CAClB,IAAM,EAAS,EACX,EAAqB,GAoBzB,OAlBA,EAAmB,EAAQ,CACzB,OAAO,CAAC,EAAO,CACb,GAAI,OAAO,EAAM,QAAQ,IAAI,MAAM,UAAY,SAC7C,GAAsB,EAAM,QAAQ,GAAG,MAAM,QAE/C,GAAI,EAAM,MAAO,EAAgB,EAAM,EAAM,KAAK,GAEpD,MAAM,EAAG,CACP,EAAW,UAAU,EAAoB,CAAI,GAE/C,OAAO,CAAC,EAAK,CACX,EAAW,SAAS,EAAK,CAAI,GAE/B,SAAS,EAAG,CACV,EAAK,IAAI,EAEb,CAAC,EAEM,CAAE,OAAM,QAAS,EAAK,EAI/B,IAAM,EAAa,EAEnB,GADA,EAAW,UAAU,EAAc,CAAU,EAAG,CAAI,EAChD,EAAW,MAAO,EAAgB,EAAM,EAAW,KAAK,EAE5D,OADA,EAAW,kBAAkB,CAAE,MAAO,EAAW,KAAM,EAAG,CAAI,EACvD,GAGT,MAAO,CAAC,EAAK,IAAQ,CACnB,GAAI,EAAK,EAAW,SAAS,EAAK,EAAI,IAAI,EAC1C,OAAO,GAGT,QAAS,CAAC,IAAQ,CAChB,GAAI,GAAO,CAAC,EAAI,QAAS,EAAI,KAAK,IAAI,EAE1C,CACF,EC5DF,IAAM,GAAwB,IAAI,IAAI,CACpC,6BACA,sBACF,CAAC,EAID,SAAS,EAAW,CAAC,EAAY,EAAyB,CACxD,EAAU,qBAAsB,IAAM,CACpC,IAAM,EACJ,yBAA0B,EAAQ,EAAM,qBAAuB,OAC3D,EAAmB,GAAc,cAAgB,EAUvD,GARA,EAAW,kBACT,CACE,wBAAyB,GAAc,aAAe,EACtD,cAAe,EAAM,eAAiB,MACxC,EACA,CACF,EAEI,EACF,EAAW,4DAET,EACA,CACF,EAEF,GAAI,EAAM,cACR,EAAW,kDAET,EAAM,cACN,CACF,EAEF,EAAW,uCAET,EAAc,CAAK,EACnB,CACF,EACD,EAOI,SAAS,EAAkB,CAAC,EAAsB,CACvD,EAAO,OAAO,SAAW,EACvB,EAAO,OAAO,SAAS,KAAK,EAAO,MAAM,EACzC,CACE,IAAK,CAAC,IAAS,CACb,IAAM,EAAO,EAAW,UAAU,iBAAiB,EAInD,OAHA,EAAW,YAAY,MAAO,CAAI,EAClC,EAAW,kBAAkB,CAAE,MAAO,EAAK,KAAM,EAAG,CAAI,EACxD,EAAW,SAAS,EAAM,CAAI,EACvB,CAAE,OAAM,QAAS,EAAM,GAGhC,KAAM,CAAC,EAAK,EAAQ,IAAS,CAC3B,GAAI,CAAC,EAAK,OACV,IAAQ,QAAS,EAEjB,GAAI,EAAK,GAAG,OAAQ,CAClB,IAAM,EAAS,EACX,EAoBJ,OAlBA,EAAmB,EAAQ,CACzB,OAAO,CAAC,EAAO,CACb,GAAI,GAAsB,IAAI,EAAM,IAAI,EACtC,EAAiB,EACjB,GAAY,EAAM,EAAe,KAAK,GAG1C,MAAM,EAAG,CACP,EAAW,UAAU,EAAc,GAAkB,CAAC,CAAC,EAAG,CAAI,GAEhE,OAAO,CAAC,EAAK,CACX,EAAW,SAAS,EAAK,CAAI,GAE/B,SAAS,EAAG,CACV,EAAK,IAAI,EAEb,CAAC,EAEM,CAAE,OAAM,QAAS,EAAK,EAI/B,IAAM,EAAY,EAElB,GADA,EAAW,UAAU,EAAc,CAAS,EAAG,CAAI,EAC/C,EAAU,MAAO,GAAY,EAAM,EAAU,KAAK,EACtD,OAAO,GAGT,MAAO,CAAC,EAAK,IAAQ,CACnB,GAAI,EAAK,EAAW,SAAS,EAAK,EAAI,IAAI,EAC1C,OAAO,GAGT,QAAS,CAAC,IAAQ,CAChB,GAAI,GAAO,CAAC,EAAI,QAAS,EAAI,KAAK,IAAI,EAE1C,CACF,ECxGF,SAAS,EAAW,CAAC,EAAY,EAA4B,CAC3D,EAAU,wBAAyB,IAAM,CACvC,IAAM,EAAY,EAAM,qBAAqB,cACvC,EAAM,EAAM,aAAe,EAAM,cAAgB,EACvD,EAAW,kBACT,CACE,wBACE,EAAM,EAAM,aACR,EAAM,aAAe,EACrB,EAAM,aACZ,cAAe,EAAM,eAAiB,OACtC,wBAAyB,GAAa,MACxC,EACA,CACF,EACA,EAAW,uCAET,EAAc,CAAK,EACnB,CACF,EACD,EAOI,SAAS,EAAmB,CAAC,EAAsB,CACxD,EAAO,UAAU,OAAS,EACxB,EAAO,UAAU,OAAO,KAAK,EAAO,SAAS,EAC7C,CACE,IAAK,CAAC,IAAS,CACb,IAAM,EAAO,EAAW,UAAU,iBAAiB,EAInD,OAHA,EAAW,YAAY,MAAO,CAAI,EAClC,EAAW,kBAAkB,CAAE,MAAO,EAAK,KAAM,EAAG,CAAI,EACxD,EAAW,SAAS,EAAM,CAAI,EACvB,CAAE,OAAM,QAAS,EAAM,GAGhC,KAAM,CAAC,EAAK,EAAQ,IAAS,CAC3B,GAAI,CAAC,EAAK,OACV,IAAQ,QAAS,EAEjB,GAAI,EAAK,GAAG,OAAQ,CAClB,IAAM,EAAS,EACX,EAAqB,GAwBzB,OAtBA,EAAmB,EAAQ,CACzB,OAAO,CAAC,EAAO,CACb,GAAI,EAAM,OAAS,6BACjB,GAAsB,EAAM,MAE9B,GAAI,EAAM,OAAS,qBAAsB,CACvC,IAAM,EAAO,EAAM,SACnB,GAAI,EAAK,MAAO,GAAY,EAAM,EAAK,KAAK,EAC5C,EAAW,kBAAkB,CAAE,MAAO,EAAK,KAAM,EAAG,CAAI,IAG5D,MAAM,EAAG,CACP,EAAW,UAAU,EAAoB,CAAI,GAE/C,OAAO,CAAC,EAAK,CACX,EAAW,SAAS,EAAK,CAAI,GAE/B,SAAS,EAAG,CACV,EAAK,IAAI,EAEb,CAAC,EAEM,CAAE,OAAM,QAAS,EAAK,EAI/B,IAAM,EAAO,EAEb,GADA,EAAW,UAAU,EAAc,CAAI,EAAG,CAAI,EAC1C,EAAK,MAAO,GAAY,EAAM,EAAK,KAAK,EAC5C,GAAI,OAAO,EAAK,QAAU,SACxB,EAAW,kBAAkB,CAAE,MAAO,EAAK,KAAM,EAAG,CAAI,EAE1D,OAAO,GAGT,MAAO,CAAC,EAAK,IAAQ,CACnB,GAAI,EAAK,EAAW,SAAS,EAAK,EAAI,IAAI,EAC1C,OAAO,GAGT,QAAS,CAAC,IAAQ,CAChB,GAAI,GAAO,CAAC,EAAI,QAAS,EAAI,KAAK,IAAI,EAE1C,CACF,EC1FK,SAAS,CAA4B,CAAC,EAAc,CAOzD,OANA,EAAU,aAAc,IAAM,CAC5B,GAA0B,CAAM,EAChC,GAAyB,CAAM,EAC/B,GAAoB,CAAM,EAC1B,GAAmB,CAAM,EAC1B,EACM,ECHF,SAAS,CAAsB,CAAC,EAAc,CACnD,OAAO,EAAW,CAAM,ECpB1B,IAAM,GAAY,cACZ,GAAU,wBACV,GAAe,IACf,GAAS,uBACT,GAAiB,mCAEvB,SAAS,EAAW,CAAC,EAAsB,CACzC,OAAO,SAAS,UAAU,SAAS,KAAK,CAAE,EAG5C,SAAS,EAAW,CAAC,EAAuC,CAC1D,IAAM,EAAS,GAAY,CAAE,EAAE,QAAQ,GAAgB,EAAE,EACzD,OAAO,EAAO,MAAM,EAAS,GAAK,EAAO,MAAM,EAAO,EAGjD,SAAS,EAAiB,CAAC,EAAwB,CACxD,IAAM,EAAO,GAAY,CAAE,EAC3B,GAAI,CAAC,GAAQ,CAAC,EAAK,GACjB,MAAO,CAAC,EAGV,OAAO,EAAK,GACT,MAAM,EAAY,EAClB,IAAI,CAAC,IAAQ,CAEZ,OADc,EAAI,QAAQ,GAAQ,CAAC,EAAK,EAAY,IAAS,CAAI,EACpD,KAAK,EACnB,EACA,OAAO,CAAC,IAAS,EAAK,OAAS,CAAC,8LC9BrC,2BAGE,kBACA,4BCJF,uBACE,YACA,4BCFF,+BACE,YACA,4BAOK,MAAM,EAA6B,CACxC,SAAS,EAAS,CAChB,OAAO,GAAM,gBAAgB,EAAoB,EAkBnD,eAAkD,CAChD,KACG,EACY,CAGf,OADE,EAAK,SAAW,EAAI,EAAK,GAAK,EAAK,SAAW,EAAI,EAAK,GAAK,EAAK,IACzD,KAAK,UAAU,CAAC,EAE9B,CAOO,IAAM,EAAa,IAAI,GDgC9B,IAAM,GAA4B,CAChC,QAAQ,EAAG,GAGX,UAAU,EAAG,GAGb,SAAS,EAAG,CACV,MAAO,IAET,eAAe,EAAG,CAChB,OAAO,MAET,iBAAiB,EAAG,CAClB,OAAO,IAKT,OAAO,CAAC,EAAK,EAAM,CACjB,OAAO,GAAM,QAAQ,EAAK,CAAI,GAEhC,eAAe,CAAC,EAAa,CAC3B,OAAO,GAAM,gBAAgB,CAAW,GAE1C,cAAc,EAAG,CACf,QAEF,SAAS,EAAG,CAEV,OADA,EAAO,MAAM,iDAAiD,EACvD,GAET,kBAAkB,EAAG,CACnB,EAAO,QACL,gEACF,GAKF,OAAO,CAAC,EAAO,EAAY,EAAkB,EAAuB,EAAI,CACtE,OAAO,EAAG,GAEZ,aAAa,EAAG,GAGhB,WAAW,CAAC,EAAM,EAAI,CACpB,OAAO,EAAG,GAEZ,UAAU,EAAG,CACX,OAAO,QAAQ,QAAQ,GAEzB,QAAQ,EAAG,CACT,OAAO,QAAQ,QAAQ,EAE3B,EAEI,GAA+B,KAE5B,SAAS,EAAe,CAAC,EAAiC,CAC/D,GAAU,EAGL,SAAS,CAAe,EAAiB,CAC9C,OAAO,IAAW,GDrGpB,yCAAS,4BGhCT,8BAAS,6BCPF,IAAM,GAA6B,IAC7B,EAA+B,IAC/B,EAA0B,IAG1B,EAAiB,UAGjB,GAA+B,IAG/B,GAAmC,KAGnC,GAA2B,KCdxC,yCAGE,4BAaK,SAAS,EAAiB,CAAC,EAA4B,CAC5D,OAAO,EAAS,OAAO,CAAC,EAAQ,IAAY,CAC1C,IAAM,EAAQ,GAAG,IAAS,IAAW,GAAK,EAA0B,KAAK,IACzE,OAAO,EAAM,OAAS,GAA2B,EAAS,GACzD,EAAE,EAOA,SAAS,EAAW,CAAC,EAA4B,CACtD,OAAO,EAAQ,cAAc,EAAE,IAAI,EAAE,EAAK,KAAW,CACnD,IAAI,EAAQ,GAAG,mBAAmB,CAAG,KAAK,mBAAmB,EAAM,KAAK,IACxE,GAAI,EAAM,WAAa,OACrB,GAAS,EAA+B,EAAM,SAAS,SAAS,EAElE,OAAO,EACR,EAII,SAAS,EAAiB,CAC/B,EAC6E,CAC7E,IAAM,EAAa,EAAM,MAAM,CAA4B,EAC3D,GAAI,EAAW,QAAU,EAAG,OAC5B,IAAM,EAAc,EAAW,MAAM,EACrC,GAAI,CAAC,EAAa,OAClB,IAAM,EAAiB,EAAY,QAAQ,EAA0B,EACrE,GAAI,GAAkB,EAAG,OACzB,IAAM,EAAM,mBACV,EAAY,UAAU,EAAG,CAAc,EAAE,KAAK,CAChD,EACM,EAAQ,mBACZ,EAAY,UAAU,EAAiB,CAAC,EAAE,KAAK,CACjD,EACI,EACJ,GAAI,EAAW,OAAS,EACtB,EAAW,GACT,EAAW,KAAK,CAA4B,CAC9C,EAEF,MAAO,CAAE,MAAK,QAAO,UAAS,EFrCzB,MAAM,CAAuD,CAClE,MAAM,CAAC,EAAkB,EAAkB,EAA6B,CACtE,IAAM,EAAU,EAAW,CAAO,EAClC,GAAI,CAAC,GAAW,GAAoB,CAAO,EAAG,OAC9C,IAAM,EAAW,GAAY,CAAO,EACjC,OAAO,CAAC,IAAS,EAAK,QAAU,EAAgC,EAChE,MAAM,EAAG,EAA4B,EAClC,EAAc,GAAkB,CAAQ,EAC9C,GAAI,EAAY,OAAS,EACvB,EAAO,IAAI,EAAS,EAAgB,CAAW,EAInD,OAAO,CAAC,EAAkB,EAAkB,EAAgC,CAC1E,IAAM,EAAc,EAAO,IAAI,EAAS,CAAc,EAChD,EAAgB,MAAM,QAAQ,CAAW,EAC3C,EAAY,KAAK,CAAuB,EACxC,EACJ,GAAI,CAAC,EAAe,OAAO,EAC3B,IAAM,EAAwC,CAAC,EAC/C,GAAI,EAAc,SAAW,EAAG,OAAO,EAYvC,GAXc,EAAc,MAAM,CAAuB,EACnD,QAAQ,CAAC,IAAU,CACvB,IAAM,EAAU,GAAkB,CAAK,EACvC,GAAI,EAAS,CACX,IAAM,EAA6B,CAAE,MAAO,EAAQ,KAAM,EAC1D,GAAI,EAAQ,SACV,EAAa,SAAW,EAAQ,SAElC,EAAQ,EAAQ,KAAO,GAE1B,EACG,OAAO,QAAQ,CAAO,EAAE,SAAW,EACrC,OAAO,EAET,OAAO,EAAW,EAAS,EAAc,CAAO,CAAC,EAGnD,MAAM,EAAa,CACjB,MAAO,CAAC,CAAc,EAE1B,CHhDO,IAAM,EAAgB,GAAY,cAAc,KAAK,EAAW,EAEjE,EAAc,GAAiB,SAAS,EAGvC,SAAS,CAAU,CAAC,EAAuC,CAChE,OAAO,EAAQ,SAAS,CAAW,EAI9B,SAAS,EAAgB,EAAwB,CACtD,OAAO,EAAW,EAAgB,EAAE,kBAAkB,CAAC,EAIlD,SAAS,CAAU,CAAC,EAAkB,EAA2B,CACtE,OAAO,EAAQ,SAAS,EAAa,CAAO,EAIvC,SAAS,EAAa,CAAC,EAA2B,CACvD,OAAO,EAAQ,YAAY,CAAW,kGMpCxC,+BAEE,2BACA,4BAKF,8BACE,gCACA,6BAWF,IAAI,GAAoC,IAAI,GAAoB,CAC9D,YAAa,CACX,IAAI,GACJ,IAAI,CACN,CACF,CAAC,EAGM,SAAS,EAAgB,EAAsB,CACpD,OAAO,GAIF,SAAS,EAAgB,CAAC,EAAqC,CACpE,GAAiB,EAGnB,SAAS,EAAe,CAAC,EAA4B,CACnD,GAAI,IAAY,OAAW,OAAO,EAClC,OAAO,EAAgB,EAAE,kBAAkB,EAsBtC,SAAS,EAAe,CAC7B,EACA,EACA,EAAiC,GAC3B,CACN,EAAU,qBAAsB,IAAM,CACpC,GAAiB,EAAE,OAAO,GAAgB,CAAO,EAAG,EAAS,CAAM,EACpE,EAkBI,SAAS,EAAgB,CAC9B,EACA,EACA,EAAiC,GACxB,CACT,IAAM,EAAO,GAAgB,CAAO,EACpC,OAAO,EACL,sBACA,IAAM,GAAiB,EAAE,QAAQ,EAAM,EAAS,CAAM,EACtD,CACF,EtB9DF,IAAM,GAAc,WAkGb,MAAe,CAAW,CAC/B,YACA,UACA,OACA,eACA,OACA,YACA,WACA,gBACA,QACA,kBAES,4BAAuC,GAMtC,WAAW,CACnB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACA,KAAK,YAAc,EACnB,KAAK,UAAY,EACjB,KAAK,OAAS,EACd,KAAK,eAAiB,EACtB,KAAK,OAAS,EACd,KAAK,YAAc,EACnB,KAAK,WAAa,EAClB,KAAK,gBAAkB,EACvB,KAAK,QAAU,EACf,KAAK,kBAAoB,EAQ3B,SAAS,EAAY,CACnB,OAAO,EAAgB,EAAE,UAAU,IAAI,QAc1B,kBAAiB,EAAiB,CAC/C,OAAO,EAAgB,QAGV,eAAc,EAAe,CAE1C,OADe,EAAW,kBAAkB,EAAE,gBAAgB,GAC/C,YAAc,QAGhB,0BAAyB,EAA4B,CAElE,IAAM,EADQ,EAAW,kBAAkB,EACjB,eAAe,EACzC,GAAI,CAAC,GAAa,YAAY,EAAG,OAAO,KACxC,IAAM,EAAM,EAAY,YAAY,EACpC,GAAI,CAAC,EAAI,SAAW,EAAE,EAAI,WAAa,GAAO,OAAO,KACrD,MAAO,CAAC,EAAI,QAAS,EAAI,MAAM,QAGlB,aAAY,EAAS,CAClC,EAAU,0BAA2B,IAAM,CACzC,IAAM,EAAS,EAAW,kBAAkB,EAAE,gBAAgB,EAC9D,GAAI,CAAC,GAAU,CAAC,EAAO,4BAA6B,OACpD,EAAO,iBAAiB,EAAE,YAAY,EACvC,QAYI,eAAc,EAAqB,CAExC,OADc,EAAW,kBAAkB,EAC9B,eAAe,cAajB,WAAU,EAAkB,CAEvC,MADc,EAAW,kBAAkB,EAC/B,WAAW,cAWZ,SAAQ,EAAkB,CAErC,MADc,EAAW,kBAAkB,EAC/B,SAAS,QAchB,4BAA2B,CAAC,EAAqC,CACtE,EAAU,yCAA0C,IAAM,CAC1C,EAAW,kBAAkB,EACrC,mBAAmB,CAAY,EACtC,QAwBI,KAAsB,CAAC,EAAc,CAC1C,OAAO,EAAK,CAAM,QAYb,cAAa,EAAW,CAE7B,OADc,EAAW,kBAAkB,EAC9B,UAAU,EAAW,QAc7B,UAAS,CAAC,EAAc,EAA+B,CAC5D,IAAM,EAAO,EAAW,cAAc,EAAE,UAAU,EAAM,CAAE,YAAW,CAAC,EAEtE,OADA,EAAW,aAAa,EACjB,QAuBF,gBAAkB,CACvB,EACA,EACG,CACH,IAAQ,OAAM,cAAe,EAC7B,OAAO,EAAW,cAAc,EAAE,gBAChC,EACA,CAAE,YAAW,EACb,CAAC,IAAS,CACR,EAAW,aAAa,EACxB,GAAI,CACF,IAAM,EAAS,EAAG,CAAI,EACtB,GAAI,aAAkB,QACpB,OAAQ,EAA4B,QAAQ,IAAM,CAChD,EAAK,IAAI,EACV,EAGH,OADA,EAAK,IAAI,EACF,EACP,MAAO,EAAG,CAEV,MADA,EAAK,IAAI,EACH,GAGZ,QAgBK,KAAO,CAAC,EAAkB,EAA0B,CACzD,OAAO,EAAW,gBAAgB,CAAE,KAAM,CAAS,EAAG,CAAC,IAAS,CAC9D,GAAI,CACF,IAAM,EAAS,EAAG,CAAI,EACtB,GAAI,aAAkB,QACpB,OAAO,EAAO,MAAM,CAAC,IAAe,CAGlC,MAFA,EAAK,UAAU,CAAE,KAAM,EAAe,MAAO,QAAS,OAAO,CAAC,CAAE,CAAC,EACjE,EAAK,gBAAgB,CAAU,EACzB,EACP,EAEH,OAAO,EACP,MAAO,EAAG,CAGV,MAFA,EAAK,UAAU,CAAE,KAAM,EAAe,MAAO,QAAS,OAAO,CAAC,CAAE,CAAC,EACjE,EAAK,gBAAgB,CAAU,EACzB,GAET,QAUI,KAAO,CAAC,EAAkB,EAA0B,CACzD,OAAO,EAAW,KAAK,EAAU,CAAE,QAsD9B,cAAgB,CAAC,EAAiB,EAA4B,CACnE,IAAM,EAAQ,EAAW,kBAAkB,EACrC,EAAM,GAAQ,CAAO,EAC3B,OAAO,EAAM,YAAY,EAAK,IAAM,EAAG,CAAG,CAAC,QAgDtC,QAAyC,CAC9C,EACA,EAGuE,CACvE,IAAI,EACJ,GAAI,OAAO,IAAkB,WAC3B,EAAO,EAEP,OAAU,EAEZ,IACE,WAAW,OACX,WACA,cAAc,GACd,eAAe,GACf,OAAO,IACL,GAAW,CAAC,EACV,EAAQ,EAAW,kBAAkB,EACrC,EAAY,CAChB,IACkC,CAClC,IAAM,EAAO,GAAY,EAAU,KACnC,OAAO,QAAS,IAAmB,EAAsB,CACvD,IAAM,EAAa,EAAM,UAAU,EAAW,EAO9C,GAJE,GACA,EAAM,gBAAgB,IAAM,MAC5B,EAAM,eAAe,GAAG,YAAY,IAAM,GAE5B,CACd,IAAM,EAAa,EAAW,eAAe,EAGvC,EAAiB,EAAW,UAAU,CAAI,EAC1C,EAAgB,EAAe,YAAY,EACjD,GAAI,EACF,EAAe,kCAEb,CACF,EAIF,IAAM,GAA8B,CACjC,gCACC,EAAc,QACf,+BAA6C,EAAc,MAC9D,EACA,GAAI,EACF,GAAgB,sBAAoC,EAGtD,IAAM,GAAgB,EAAM,QAC1B,EAAM,kBAAkB,EACxB,EAAM,gBAAgB,EAAoB,CAC5C,EACM,EAAa,EAAW,UAC5B,EACA,CAAE,WAAY,EAAgB,EAC9B,EACF,EACM,GAAgB,EAAW,YAAY,EAC7C,EAAe,6CAEb,GAAc,OAChB,EACA,EAAe,4CAEb,GAAc,MAChB,EAEA,IAAM,EAAU,IAAY,CAC1B,EAAW,IAAI,EACf,EAAe,IAAI,GAEf,GAAoB,CAAC,IAAqB,CAC9C,QAAW,IAAK,CAAC,EAAY,CAAc,EACzC,EAAE,gBAAgB,CAAU,EAC5B,EAAE,UAAU,CACV,KAAM,EAAe,MACrB,QAAS,OAAO,CAAC,CACnB,CAAC,GAGC,GAAqB,CAAC,IAAyB,CACnD,IAAM,EAAa,EAAmB,EAAO,CAAU,EACvD,EAAW,+BAA4C,CAAU,EACjE,EAAe,+BAEb,CACF,GAGF,GAAI,EAAa,CACf,IAAM,EAAkB,EACtB,GAAU,EAAW,CAAI,EACzB,CACF,EACA,EAAW,8BAET,CACF,EACA,EAAe,8BAEb,CACF,EAIF,OAFA,EAAW,aAAa,EAEjB,EAAM,QAAQ,EAAY,GAAO,GAAO,GAAO,IAAe,CACnE,GAAI,CACF,IAAM,EAAS,EAAU,KAAK,KAAM,GAAG,CAAI,EAC3C,GAAI,aAAkB,QACpB,OAAQ,EACL,KAAK,CAAC,IAAQ,CACb,GAAI,EAAc,GAAmB,CAAG,EACxC,OAAO,EACR,EACA,MAAM,CAAC,IAAe,CAErB,MADA,GAAkB,CAAC,EACb,EACP,EACA,QAAQ,CAAO,EAEpB,GAAI,EAAc,GAAmB,CAAM,EAE3C,OADA,EAAQ,EACD,EACP,MAAO,EAAG,CAGV,MAFA,GAAkB,CAAC,EACnB,EAAQ,EACF,GAET,EAGH,OAAO,EAAW,gBAAgB,EAAM,CAAC,IAAS,CAChD,GAAI,EACF,EAAK,kCAA+C,CAAQ,EAE9D,GAAI,CACF,GAAI,EACF,EAAK,8BAEH,EACE,GAAU,EAAW,CAAI,EACzB,EAAW,eAAe,CAC5B,CACF,EAEF,EAAW,aAAa,EACxB,IAAM,EAAS,EAAU,KAAK,KAAM,GAAG,CAAI,EAE3C,GAAI,aAAkB,QACpB,OAAQ,EACL,KAAK,CAAC,IAAQ,CACb,GAAI,EACF,EAAK,+BAEH,EAAmB,EAAK,EAAW,eAAe,CAAC,CACrD,EAEF,OAAO,EACR,EACA,MAAM,CAAC,IAAe,CAMrB,MALA,EAAK,gBAAgB,CAAU,EAC/B,EAAK,UAAU,CACb,KAAM,EAAe,MACrB,QAAS,OAAO,CAAC,CACnB,CAAC,EACK,EACP,EACA,QAAQ,IAAM,CACb,EAAK,IAAI,EACV,EAGL,GAAI,EACF,EAAK,+BAEH,EAAmB,EAAQ,EAAW,eAAe,CAAC,CACxD,EAGF,OADA,EAAK,IAAI,EACF,EACP,MAAO,EAAG,CAIV,MAHA,EAAK,gBAAgB,CAAU,EAC/B,EAAK,UAAU,CAAE,KAAM,EAAe,MAAO,QAAS,OAAO,CAAC,CAAE,CAAC,EACjE,EAAK,IAAI,EACH,GAET,IAIL,GAAI,CAAC,EAAM,OAAO,EAClB,OAAO,EAAU,CAAI,QAOR,aAAY,CAAC,EAA+B,CACzD,GAAI,EAAM,OAAO,EACjB,OAAO,EAAW,kBAAkB,EAAE,eAAe,QAehD,YAAW,CAAC,EAAc,EAAmB,CAClD,EAAU,yBAA0B,IAAM,CACxC,GAAI,CAAC,EAAM,OACX,IAAM,EAAS,EAAW,aAAa,CAAI,EAC3C,GAAI,GAAQ,YAAY,EACtB,EAAO,kCAA+C,CAAI,EAE7D,QAMI,WAAU,EAAS,CACxB,EAAW,YAAY,KAAK,QAMvB,YAAW,EAAS,CACzB,EAAW,YAAY,MAAM,QAMxB,eAAc,EAAS,CAC5B,EAAW,YAAY,MAAM,QAgBxB,aAAY,CAAC,EAAa,EAAgB,EAAmB,CAClE,EAAU,0BAA2B,IAAM,CACzC,IAAM,EAAS,EAAW,aAAa,CAAI,EAC3C,GAAI,CAAC,GAAQ,YAAY,EAAG,OAC5B,GAAI,CAAC,GAAO,GAAS,KAAM,OAC3B,EAAO,aACL,EACA,EAAmB,EAAO,EAAW,eAAe,CAAC,CACvD,EACD,QAWI,cAAa,CAAC,EAAqC,EAAmB,CAC3E,QAAY,EAAK,KAAU,OAAO,QAAQ,CAAU,EAClD,GAAI,EAAM,EAAW,aAAa,EAAK,EAAO,CAAI,EAC7C,OAAW,aAAa,EAAK,CAAK,QAYpC,SAAQ,CAAC,EAAoB,EAAmB,CACrD,GAAI,EACF,EAAW,8BAA2C,EAAW,CAAI,EAClE,OAAW,8BAA2C,CAAS,QAW/D,UAAS,CAAC,EAAqB,EAAmB,CACvD,GAAI,EACF,EAAW,+BAA4C,EAAY,CAAI,EACpE,OAAW,+BAA4C,CAAU,QAajE,SAAQ,CAAC,EAAgB,EAAmB,CACjD,EAAU,sBAAuB,IAAM,CACrC,IAAM,EAAS,EAAW,aAAa,CAAI,EAC3C,GAAI,CAAC,GAAQ,YAAY,EAAG,OAC5B,EAAO,gBAAgB,CAAc,EACrC,EAAO,UAAU,CAAE,KAAM,EAAe,MAAO,QAAS,OAAO,CAAK,CAAE,CAAC,EACxE,QAoBI,kBAAiB,CAAC,EAAuB,EAAmB,CACjE,EAAU,+BAAgC,IAAM,CAC9C,IAAM,EAAS,EAAW,aAAa,CAAI,EAC3C,GAAI,CAAC,GAAQ,YAAY,EAAG,OAE5B,GAAI,OAAO,EAAS,QAAU,SAC5B,EAAO,kCAEL,EAAS,KACX,EAGF,GAAI,OAAO,EAAS,WAAa,SAC/B,EAAO,qCAEL,EAAS,QACX,EAGF,GAAI,OAAO,EAAS,0BAA4B,SAC9C,EAAO,sDAEL,EAAS,uBACX,EAEF,GAAI,OAAO,EAAS,gBAAkB,SACpC,EAAO,4CAEL,EAAS,aACX,EAEF,GAAI,OAAO,EAAS,0BAA4B,SAC9C,EAAO,sDAEL,EAAS,uBACX,EAEF,GAAI,OAAO,EAAS,8BAAgC,SAClD,EAAO,0DAEL,EAAS,2BACX,EAEF,GAAI,OAAO,EAAS,iBAAmB,SACrC,EAAO,6CAEL,EAAS,cACX,EAEH,QAWY,0BAAyB,CAAC,EAAa,EAAqB,CACzE,EAAU,uCAAwC,IAAM,CACtD,IAAM,EAAQ,EAAW,kBAAkB,EACrC,EAAc,EAAM,eAAe,EACzC,GAAI,CAAC,GAAa,YAAY,EAAG,OACjC,EAAY,aAAa,EAAK,CAAK,EACnC,IAAM,EAAM,EAAM,kBAAkB,EAC9B,GAAW,EAAW,CAAG,GAAK,EAAc,GAAG,SAAS,EAAK,CACjE,OACF,CAAC,EACD,EAAM,cAAc,EAAW,EAAK,CAAO,CAAC,EAC7C,QAYI,cAAa,CAAC,EAA0B,CAC7C,EAAW,iDAET,CACF,QAYK,kBAAiB,CAAC,EAA8B,CACrD,EAAW,sDAET,CACF,QAYK,aAAY,CAAC,EAAyB,CAC3C,EAAW,gDAET,CACF,QASK,wBAAuB,CAAC,EAAa,EAAqB,CAC/D,GAAI,EAAI,WAAW,WAAW,EAAG,CAC/B,EAAO,MACL,iCAAiC,mDACnC,EACA,OAEF,EAAW,0BAA0B,EAAK,CAAK,QAkB1C,IAAG,CAAC,EAA+B,CACxC,EAAU,iBAAkB,IAAM,CAChC,GAAI,CAAC,GAAS,MAAM,QAAQ,CAAI,GAAK,EAAK,SAAW,EAAI,OAEzD,IAAM,EADQ,EAAW,kBAAkB,EACtB,gBAAgB,EACrC,GAAI,CAAC,GAAQ,WAAa,CAAC,EAAO,QAAS,OAC3C,GAAI,CAAC,EAAO,4BAA6B,OACzC,IAAM,EAAM,EAAW,0BAA0B,EACjD,GAAI,CAAC,EAAK,OACV,IAAO,GAAW,EACZ,EAAW,MAAM,QAAQ,CAAI,EAAI,EAAO,CAAC,CAAI,EACnD,EAAO,QACJ,kCAAkC,EAAO,UAAW,EAAS,CAC5D,KAAM,CACR,CAAC,EACA,MAAM,CAAC,IAAiB,CACvB,EAAO,MAAM,eAAe,OAAO,CAAG,GAAG,EAC1C,EACJ,QA+BI,cAAa,CAAC,EAA+B,EAAmB,CACrE,EAAU,2BAA4B,IAAM,CAC1C,IAAQ,QAAO,WAAY,EAErB,EADQ,EAAW,kBAAkB,EACtB,gBAAgB,EACrC,GAAI,CAAC,GAAQ,UAAW,OACxB,GAAI,CAAC,EAAO,4BAA6B,OACzC,IAAM,EAAS,EAAW,aAAa,CAAI,EAC3C,GAAI,CAAC,GAAQ,YAAY,EAAG,OAE5B,IAAM,EAAY,EAAO,iBAAiB,EACpC,EAAM,EAAO,YAAY,EAEzB,EAAM,EAAU,UACpB,uBAEF,EACM,EAA8B,CAClC,WAAY,EAAO,UACnB,UAAW,kBAAkB,KAAS,IACtC,OAAQ,CAAC,CAAE,KAAM,CAAM,CAAC,EACxB,SAAU,CACR,IACK,EACH,WAAY,OAAO,WAAW,EAC9B,WAAY,IAAI,KAAK,EAAE,YAAY,EACnC,SAAU,EAAI,QACd,QAAS,EAAI,MACf,CACF,EACA,WAAY,GACZ,YAAa,EACf,EACM,EAAU,EAAU,YACxB,kBAEA,CACF,EAGA,EAAO,2CAEL,KAAK,UAAU,CAAO,CACxB,EACD,EAEL,CAEA,SAAS,EAAkC,CACzC,EACA,EACyB,CACzB,GAAI,CACF,IAAM,EAAa,GAAkB,CAAC,EACnC,IAAI,CAAC,IACJ,EACG,QAAQ,UAAW,EAAE,EACrB,MAAM,GAAG,EAAE,GACX,KAAK,CACV,EACC,OAAO,CAAC,IAAU,EAAM,OAAS,CAAC,EAC/B,EAAkC,CAAC,EAMzC,OALA,EAAW,QAAQ,CAAC,EAAM,IAAU,CAClC,GAAI,EAAQ,EAAK,OACf,EAAO,GAAQ,EAAK,GAEvB,EACM,EACP,KAAM,CACN,MAAO,CAAC,GuBtoCZ,0BACE,6BACA,kCAEF,4BAAS,sCC4DF,MAAM,EAAkB,CACrB,QACA,OACA,eAER,WAAW,CAAC,EAAiB,EAAgB,EAAwB,CACnE,KAAK,QAAU,EACf,KAAK,OAAS,EACd,KAAK,eAAiB,EAGxB,UAAU,EAAW,CACnB,OAAO,KAAK,QAEd,SAAS,EAAW,CAClB,OAAO,KAAK,OAEd,iBAAiB,EAAW,CAC1B,OAAO,KAAK,oBAGA,QAAU,CACtB,EACA,EACA,EACY,CACZ,IAAM,EAAW,MAAM,MAAM,EAAK,CAChC,SACA,QAAS,CACP,eAAgB,mBAChB,cAAe,UAAU,KAAK,SAC9B,oBAAqB,KAAK,cAC5B,EACA,KAAM,IAAS,OAAY,KAAK,UAAU,CAAI,EAAI,MACpD,CAAC,EACD,GAAI,CAAC,EAAS,GAAI,CAChB,IAAM,EAAO,MAAM,EAAS,KAAK,EACjC,MAAU,MAAM,QAAQ,EAAS,WAAW,GAAM,EAEpD,OAAO,EAAS,KAAK,OAGjB,iBAAgB,EAAqB,CACzC,IAAM,EAAM,KAAK,QAAU,kBAC3B,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAC,CAAC,OAG/B,wBAAuB,EAAqB,CAChD,IAAM,EAAM,KAAK,QAAU,0BAC3B,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAC,CAAC,OAG/B,sBAAqB,CACzB,EACiC,CACjC,IAAM,EAAM,KAAK,QAAU,wBAC3B,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,eAAc,CAClB,EAC6B,CAC7B,IAAM,EAAM,KAAK,QAAU,eAC3B,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,iBAAgB,CAAC,EAAmD,CACxE,IAAM,EAAM,KAAK,QAAU,gBAAgB,IAC3C,OAAO,KAAK,QAAQ,SAAU,EAAK,CAAC,CAAC,OAGjC,uBAAsB,CAC1B,EACA,EACuC,CACvC,IAAM,EAAM,KAAK,QAAU,gBAAgB,aAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,sBAAqB,CACzB,EACyC,CACzC,IAAM,EAAM,KAAK,QAAU,gBAAgB,aAC3C,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,iDAAgD,CACpD,EACA,EACyC,CACzC,IAAM,EACJ,KAAK,QACL,gBAAgB,cAAsB,aACxC,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,6CAA4C,CAChD,EACA,EACA,EACA,EACA,EACA,EACqC,CACrC,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAY,OAAW,EAAO,IAAI,UAAW,CAAO,EACxD,GAAI,IAAU,OAAW,EAAO,IAAI,QAAS,CAAK,EAClD,GAAI,IAAsB,OACxB,EAAO,IAAI,oBAAqB,CAAiB,EACnD,GAAI,IAAsB,OACxB,EAAO,IAAI,oBAAqB,CAAiB,EACnD,IAAM,EACJ,KAAK,QACL,gBAAgB,cAAsB,UACrC,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,kDAAiD,CACrD,EACA,EACA,EACkC,CAClC,IAAM,EACJ,KAAK,QACL,gBAAgB,cAAsB,aACxC,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,4CAA2C,CAC/C,EACA,EACuC,CACvC,IAAM,EACJ,KAAK,QAAU,gBAAgB,cAAsB,IACvD,OAAO,KAAK,QAAQ,SAAU,EAAK,CAAC,CAAC,OAGjC,yCAAwC,CAC5C,EACA,EACqC,CACrC,IAAM,EACJ,KAAK,QAAU,gBAAgB,cAAsB,IACvD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,yBAAwB,CAC5B,EACA,EAC8B,CAC9B,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAe,OAAW,EAAO,IAAI,aAAc,CAAU,EACjE,IAAM,EACJ,KAAK,QACL,gBAAgB,kBACf,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,0BAAyB,CAC7B,EACA,EAC6B,CAC7B,IAAM,EAAM,KAAK,QAAU,gBAAgB,iBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,uCAAsC,CAC1C,EACA,EAC6B,CAC7B,IAAM,EACJ,KAAK,QAAU,gBAAgB,kBAA0B,IAC3D,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,yCAAwC,CAC5C,EACA,EACA,EAC6B,CAC7B,IAAM,EACJ,KAAK,QAAU,gBAAgB,kBAA0B,IAC3D,OAAO,KAAK,QAAQ,QAAS,EAAK,CAAO,OAGrC,0CAAyC,CAC7C,EACA,EACmC,CACnC,IAAM,EACJ,KAAK,QAAU,gBAAgB,kBAA0B,IAC3D,OAAO,KAAK,QAAQ,SAAU,EAAK,CAAC,CAAC,OAGjC,sBAAqB,CACzB,EACA,EACA,EACA,EACA,EAC2B,CAC3B,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAmB,OACrB,EAAO,IAAI,iBAAkB,CAAc,EAC7C,GAAI,IAAe,OAAW,EAAO,IAAI,aAAc,CAAU,EACjE,GAAI,IAAW,OAAW,EAAO,IAAI,SAAU,CAAM,EACrD,GAAI,IAAU,OAAW,EAAO,IAAI,QAAS,CAAK,EAClD,IAAM,EACJ,KAAK,QACL,gBAAgB,eACf,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,uBAAsB,CAC1B,EACA,EACkC,CAClC,IAAM,EAAM,KAAK,QAAU,gBAAgB,cAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,iCAAgC,CACpC,EACA,EAC0B,CAC1B,IAAM,EACJ,KAAK,QAAU,gBAAgB,eAAuB,IACxD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,yCAAwC,CAC5C,EACA,EACA,EAC0B,CAC1B,IAAM,EACJ,KAAK,QAAU,gBAAgB,eAAuB,WACxD,OAAO,KAAK,QAAQ,QAAS,EAAK,CAAO,OAGrC,0CAAyC,CAC7C,EACA,EACA,EACsC,CACtC,IAAM,EACJ,KAAK,QAAU,gBAAgB,eAAuB,YACxD,OAAO,KAAK,QAAQ,QAAS,EAAK,CAAO,OAGrC,sCAAqC,CACzC,EACA,EACA,EACA,EAC+B,CAC/B,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAU,OAAW,EAAO,IAAI,QAAS,CAAK,EAClD,GAAI,IAAW,OAAW,EAAO,IAAI,SAAU,CAAM,EACrD,IAAM,EACJ,KAAK,QACL,gBAAgB,eAAuB,WACtC,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,wCAAuC,CAC3C,EACA,EACA,EACA,EAC+B,CAC/B,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAU,OAAW,EAAO,IAAI,QAAS,CAAK,EAClD,GAAI,IAAW,OAAW,EAAO,IAAI,SAAU,CAAM,EACrD,IAAM,EACJ,KAAK,QACL,gBAAgB,eAAuB,aACtC,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,sCAAqC,CACzC,EACA,EAC+B,CAC/B,IAAM,EACJ,KAAK,QAAU,gBAAgB,eAAuB,UACxD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,gCAA+B,CACnC,EACA,EACA,EACA,EACiD,CACjD,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAU,OAAW,EAAO,IAAI,QAAS,CAAK,EAClD,GAAI,IAAW,OAAW,EAAO,IAAI,SAAU,CAAM,EACrD,IAAM,EACJ,KAAK,QACL,gBAAgB,iBAAyB,KACxC,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,0BAAyB,CAC7B,EACA,EAC6C,CAC7C,IAAM,EAAM,KAAK,QAAU,gBAAgB,iBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,kCAAiC,CACrC,EACA,EACqD,CACrD,IAAM,EACJ,KAAK,QAAU,gBAAgB,0BACjC,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,+BAA8B,CAClC,EACA,EACkB,CAClB,IAAM,EAAM,KAAK,QAAU,gBAAgB,sBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,6BAA4B,CAChC,EACA,EACkB,CAClB,IAAM,EAAM,KAAK,QAAU,gBAAgB,oBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,gCAA+B,CACnC,EACA,EAC4C,CAC5C,IAAM,EAAM,KAAK,QAAU,gBAAgB,wBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,8BAA6B,CACjC,EACA,EAC0C,CAC1C,IAAM,EAAM,KAAK,QAAU,gBAAgB,sBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,2BAA0B,CAC9B,EACA,EACA,EACA,EAC8B,CAC9B,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAc,OAAW,EAAO,IAAI,YAAa,CAAS,EAC9D,GAAI,IAAQ,OAAW,EAAO,IAAI,MAAO,CAAG,EAC5C,IAAM,EACJ,KAAK,QACL,gBAAgB,aAAqB,KACpC,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,sBAAqB,CACzB,EACA,EAC+B,CAC/B,IAAM,EAAM,KAAK,QAAU,gBAAgB,YAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,gCAA+B,CACnC,EACA,EACA,EAC4B,CAC5B,IAAM,EAAM,KAAK,QAAU,gBAAgB,aAAqB,SAChE,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,kCAAiC,CACrC,EACA,EACA,EAC8B,CAC9B,IAAM,EAAM,KAAK,QAAU,gBAAgB,aAAqB,SAChE,OAAO,KAAK,QAAQ,SAAU,EAAK,CAAO,OAGtC,mCAAkC,CACtC,EACA,EACoC,CACpC,IAAM,EACJ,KAAK,QAAU,gBAAgB,aAAqB,aACtD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,qBAAoB,CACxB,EACA,EACA,EACqC,CACrC,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAU,OAAW,EAAO,IAAI,QAAS,CAAK,EAClD,GAAI,IAAa,OAAW,EAAO,IAAI,WAAY,CAAQ,EAC3D,IAAM,EACJ,KAAK,QACL,gBAAgB,aACf,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,iCAAgC,CACpC,EACA,EAC+B,CAC/B,IAAM,EACJ,KAAK,QAAU,gBAAgB,aAAqB,WACtD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,4BAA2B,CAAC,EAAqC,CACrE,IAAM,EAAM,KAAK,QAAU,gBAAgB,mBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAC,CAAC,OAG/B,kCAAiC,CACrC,EACqC,CACrC,IAAM,EACJ,KAAK,QAAU,gBAAgB,0BACjC,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAC,CAAC,OAG/B,uCAAsC,CAC1C,EACA,EACqC,CACrC,IAAM,EACJ,KAAK,QAAU,gBAAgB,oBAA4B,WAC7D,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,kCAAiC,CACrC,EACA,EACA,EAC+B,CAC/B,IAAM,EACJ,KAAK,QAAU,gBAAgB,YAAoB,SACrD,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,yCAAwC,CAC5C,EACA,EACgC,CAChC,IAAM,EAAM,KAAK,QAAU,uBAAuB,KAAe,IACjE,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,yBAAwB,CAAC,EAAqC,CAClE,IAAM,EAAM,KAAK,QAAU,8BAA8B,IACzD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,wBAAuB,CAC3B,EACoC,CACpC,IAAM,EAAM,KAAK,QAAU,4BAC3B,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,qBAAoB,CACxB,EACA,EACsC,CACtC,IAAM,EAAM,KAAK,QAAU,gBAAgB,WAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,+BAA8B,CAClC,EACA,EACA,EACsC,CACtC,IAAM,EAAM,KAAK,QAAU,gBAAgB,YAAoB,IAC/D,OAAO,KAAK,QAAQ,QAAS,EAAK,CAAO,EAE7C,CCrjBO,SAAS,EAAK,CAAC,EAA2B,CAC/C,OAAO,IAAI,QAAQ,CAAC,IAAY,WAAW,EAAS,CAAE,CAAC,EC0BzD,eAAsB,EAAQ,CAC5B,EACA,EAAsB,CAAC,EACX,CACZ,IAAQ,aAAa,EAAG,UAAU,IAAM,KAAM,WAAY,EAE1D,QAAS,EAAU,EAAG,GAAW,EAAY,IAC3C,GAAI,CACF,OAAO,MAAM,EAAG,EAChB,MAAO,EAAO,CACd,GAAI,IAAY,EACd,MAAM,EAGR,IAAU,EAAS,CAAK,EACxB,MAAM,GAAM,EAAQ,CAAO,CAAC,EAKhC,MAAU,MAAM,+BAA+B,EC5CjD,IAAM,GAAQ,IAAI,IACZ,GAAW,IAAI,IAErB,eAAsB,EAAgB,CACpC,EACA,EACiB,CACjB,IAAM,EAAW,OAAO,EAAO,kBAAkB,aAAa,IACxD,EAAS,GAAM,IAAI,CAAQ,EACjC,GAAI,EACF,OAAO,EAET,IAAM,EAAU,GAAS,IAAI,CAAQ,EACrC,GAAI,EACF,OAAO,EAET,IAAM,GAAW,SAA6B,CAC5C,EAAO,KAAK,qCAAqC,GAAa,EAC9D,IAAM,EAAY,MAAM,GACtB,SAAY,CAIV,IAAM,GAHW,MAAM,EAAO,sBAAsB,CAClD,aAAc,CAChB,CAAC,GACmB,WACpB,GAAI,CAAC,EACH,MAAU,MAAM,qCAAqC,GAAa,EAEpE,OAAO,GAET,CACE,WAAY,EACZ,QAAS,CAAC,IAAc,EAAY,KACpC,QAAS,CAAC,EAAS,IAAU,CAC3B,EAAO,QACL,qCAAqC,eAAyB,OAAa,OAAO,CAAK,GACzF,EAEJ,CACF,EAGA,OAFA,EAAO,KAAK,wBAAwB,GAAW,EAC/C,GAAM,IAAI,EAAU,CAAS,EACtB,IACN,EACH,GAAS,IAAI,EAAU,CAAO,EAC9B,GAAI,CACF,OAAO,MAAM,SACb,CACA,GAAS,OAAO,CAAQ,kBCjDrB,IAAM,GAAU,GCIvB,6BACE,uCCQK,IAAM,GAA8C,IAAM,GAa1D,MAAM,CAAsD,CACzD,cAER,WAAW,CAAC,EAAoC,GAAwB,CACtE,KAAK,cAAgB,EAIvB,OAAO,CAAC,EAAY,EAA8B,CAChD,IAAM,EAAU,EAAW,CAAa,GAAG,cAAc,GAAK,CAAC,EAC/D,QAAY,EAAK,KAAU,EACzB,GAAI,KAAK,cAAc,CAAG,EACxB,EAAK,aAAa,EAAK,EAAM,KAAK,EAMxC,KAAK,CAAC,EAA2B,EAKjC,UAAU,EAAkB,CAC1B,OAAO,QAAQ,QAAQ,EAIzB,QAAQ,EAAkB,CACxB,OAAO,QAAQ,QAAQ,EAE3B,CDpCA,SAAS,CAAW,CAAC,EAA2B,CAC9C,MAAO,GAAG,EAAI,WAAW,EAAI,SAG/B,SAAS,EAAY,CAAC,EAAyB,CAC7C,OAAO,EAAO,KAAO,GAAK,EAAO,KAAO,EAYnC,MAAM,UAA8B,EAAmB,CAC5D,OACQ,OAAS,IAAI,IACb,gBACA,kBAER,WAAW,CACT,EACA,EACA,EAMA,CACA,MAAM,EAAU,CAAM,EACtB,KAAK,OAAS,EACd,KAAK,gBAAkB,IAAI,qBAA8B,CAAC,IAAY,CACpE,KAAK,kBAAkB,CAAO,EAC/B,EACD,KAAK,kBAAoB,IAAI,EAGvB,iBAAiB,CAAC,EAAwB,CAChD,KAAK,OAAO,OAAO,CAAO,EAGpB,aAAa,CAAC,EAAkB,CACtC,IAAM,EAAM,EAAK,YAAY,EAC7B,GAAI,CAAC,EAAI,SAAW,CAAC,EAAI,OAAQ,OACjC,IAAM,EAAU,EAAY,CAAG,EAG/B,KAAK,gBAAgB,SAAS,EAAM,CAAO,EAI7C,QAAQ,CAAC,EAA0B,EAAa,EAAsB,CACpE,IAAM,EAAU,EAAY,CAAW,EACnC,EAAQ,KAAK,OAAO,IAAI,CAAO,EACnC,GAAI,CAAC,EACH,EAAQ,IAAI,IACZ,KAAK,OAAO,IAAI,EAAS,CAAK,EAEhC,EAAM,IAAI,EAAK,CAAK,EAItB,QAAW,CAAC,EAA0B,EAAa,EAAoB,CACrE,IAAM,EAAU,EAAY,CAAW,EACjC,EAAQ,KAAK,OAAO,IAAI,CAAO,EACrC,GAAI,CAAC,GAAO,IAAI,CAAG,EAAG,OAAO,EAC7B,OAAO,EAAM,IAAI,CAAG,EAItB,SAAS,CAAC,EAA0B,EAAqB,CACvD,IAAM,EAAU,EAAY,CAAW,EACnC,EAAQ,KAAK,OAAO,IAAI,CAAO,EACnC,GAAI,CAAC,EACH,EAAQ,IAAI,IACZ,KAAK,OAAO,IAAI,EAAS,CAAK,EAEhC,IAAM,EAAS,EAAM,IAAI,CAAG,EACtB,EAAO,OAAO,IAAW,SAAW,EAAS,EAEnD,OADA,EAAM,IAAI,EAAK,EAAO,CAAC,EAChB,EAIT,WAAc,CAAC,EAA0B,EAAa,EAAc,CAClE,IAAM,EAAU,EAAY,CAAW,EACnC,EAAQ,KAAK,OAAO,IAAI,CAAO,EACnC,GAAI,CAAC,EACH,EAAQ,IAAI,IACZ,KAAK,OAAO,IAAI,EAAS,CAAK,EAEhC,IAAM,EAAS,EAAM,IAAI,CAAG,EACtB,EAAY,MAAM,QAAQ,CAAM,EAClC,CAAC,GAAI,EAAgB,CAAI,EACzB,CAAC,CAAI,EAET,OADA,EAAM,IAAI,EAAK,CAAI,EACZ,EAGD,SAAS,CAAC,EAAoB,EAAY,GAAa,CAC7D,IAAM,EAAM,EAAK,YAAY,EAC7B,GAAI,CAAC,EAAI,QAAS,OAClB,IAAM,EAAS,KAAK,UAAU,sBAAqC,EAC7D,EAAyB,IAC1B,EAAK,WACP,qBAAmC,CACtC,EAEA,GAAI,EAEF,OAAO,EAAW,+BAGpB,IAAM,EAAc,OAAO,OAAO,CAAI,EACtC,OAAO,eAAe,EAAa,aAAc,CAC/C,MAAO,EACP,SAAU,EACZ,CAAC,EACD,IAAM,EAAU,GAAa,EAAK,OAAO,EAAI,EAAK,UAAY,EAAK,QACnE,OAAO,eAAe,EAAa,UAAW,CAC5C,MAAO,EACP,SAAU,EACZ,CAAC,EAED,MAAM,MAAM,CAAW,EAIzB,WAAW,EAAS,CAClB,EAAU,oCAAqC,IAAM,CACnD,IAAM,EAAO,EAAgB,EAAE,eAAe,EAC9C,GAAI,CAAC,GAAM,YAAY,EAAG,OAC1B,IAAM,EAAM,EAAK,YAAY,EAC7B,GAAI,CAAC,EAAI,QAAS,OAClB,GACE,KAAK,SACH,yBAEA,EACF,EAEA,OAEF,KAAK,UAAU,EAAiC,EAAI,EACrD,EAGH,OAAO,CAAC,EAAY,EAA8B,CAChD,EAAU,gCAAiC,IAAM,CAC/C,KAAK,kBAAkB,QAAQ,EAAM,CAAa,EAClD,KAAK,cAAc,CAAI,EACxB,EAGH,KAAK,CAAC,EAA0B,CAC9B,EAAU,8BAA+B,IAAM,CAC7C,IAAM,EAAM,EAAK,YAAY,EAC7B,GAAI,CAAC,EAAI,QAAS,CAChB,MAAM,MAAM,CAAI,EAChB,OAEF,IAAM,EAAU,EAAY,CAAG,EAC/B,GAAI,CAMF,GAAI,CALgB,KAAK,SACvB,cAEA,EACF,EAEE,KAAK,UAAU,CAAI,SAErB,CACA,KAAK,kBAAkB,CAAO,GAEjC,EAEL,CE3MA,uBACE,qBACA,YACA,2BAQF,4BAAS,qBAMT,IAAM,GAAc,WAMd,EAAkB,IAAI,GAE5B,MAAM,EAA8B,CAC1B,UAER,WAAW,CAAC,EAAgC,CAC1C,KAAK,UAAY,EAGnB,SAAS,CAAC,EAAc,EAAuB,EAAyB,CACtE,IAAM,EAAM,GAAW,KAAK,UAAU,kBAAkB,EAExD,OADiB,KAAK,UAAU,mBAAmB,EACnC,UAAU,EAAM,EAAS,CAAG,EAkB9C,eAAkD,CAChD,KACG,EACY,CACf,IAAI,EAAuB,CAAC,EACxB,EAAmB,KAAK,UAAU,kBAAkB,EACpD,EAEJ,GAAI,EAAK,SAAW,EAClB,EAAK,EAAK,GACL,QAAI,EAAK,SAAW,EACzB,EAAU,EAAK,GACf,EAAK,EAAK,GAEV,OAAU,EAAK,GACf,EAAU,EAAK,GACf,EAAK,EAAK,GAGZ,IAAM,EAAO,KAAK,UAAU,EAAM,EAAS,CAAO,EAClD,OAAO,KAAK,UAAU,QAAQ,EAAM,GAAO,GAAO,GAAO,IACvD,EAAG,CAAI,CACT,EAEJ,CAEO,MAAM,CAA+C,OAC3C,WAAyC,KAEhD,cAA2C,KAC3C,aACA,SAAW,IAAI,IAEf,WAAW,EAAG,CACpB,KAAK,aAAe,IAAI,GAAY,IAAI,EACxC,GAAgB,IAAI,QAGf,YAAW,EAAyB,CAEzC,OADA,EAAqB,YAAc,IAAI,EAChC,EAAqB,UAG9B,QAAQ,CAAC,EAAkC,CACzC,KAAK,SAAS,IAAI,CAAM,EAG1B,UAAU,CAAC,EAAkC,CAC3C,KAAK,SAAS,OAAO,CAAM,EAG7B,SAAS,CAAC,EAAqC,CAC7C,IAAM,EAAc,KAAK,eAAe,EACxC,GAAI,GAAa,YAAY,GAC3B,GAAI,EAAM,QAAQ,KAAK,kBAAkB,CAAC,IAAM,EAI9C,OAHA,EAAO,MACL,oFACF,EACO,GAKX,OAFA,KAAK,SAAS,CAAM,EACpB,KAAK,cAAgB,EACd,GAGT,eAAe,EAA8B,CAC3C,OAAO,KAAK,cAGd,iBAAiB,EAAY,CAC3B,OAAO,EAAgB,SAAS,GAAG,KAAO,GAG5C,OAAO,CAAC,EAAc,EAAqB,CACzC,OAAO,EAAM,QAAQ,EAAK,CAAI,EAGhC,eAAe,CAAC,EAAgC,CAC9C,OAAO,EAAM,gBAAgB,CAAW,EAG1C,cAAc,EAAqB,CACjC,OAAO,EAAM,QAAQ,KAAK,kBAAkB,CAAC,EAG/C,kBAAkB,EAAW,CAC3B,IAAM,EAAS,KAAK,cACpB,GAAI,CAAC,EAEH,OADA,EAAO,MAAM,wCAAwC,EAC9C,EAET,OAAO,EAAO,gBAAgB,UAAU,EAAW,EAGrD,SAAS,CACP,EACA,EACA,EACQ,CACR,OAAO,KAAK,aAGd,kBAAkB,CAAC,EAAsC,CACvD,EAAO,QACL,2EACF,EAGF,OAAU,CACR,EACA,EACA,EACA,EACA,EACG,CACH,IAAM,EAAU,KAAK,kBAAkB,EACjC,EAAM,EAAM,QAAQ,EAAS,CAAI,EACvC,OAAO,EAAgB,IAAI,CAAE,KAAI,EAAG,IAAM,CACxC,GAAI,CACF,IAAM,EAAS,EAAG,EAClB,GAAI,aAAkB,QACpB,OAAO,EACJ,MAAM,CAAC,IAAiB,CACvB,GAAI,EAAK,YAAY,EAAG,CACtB,GAAI,EAAiB,EAAK,gBAAgB,CAAY,EACtD,GAAI,EAAsB,CACxB,IAAM,EAAM,EACZ,EAAK,UAAU,CACb,KAAM,GAAe,MACrB,QAAS,GAAG,EAAI,SAAS,EAAI,SAC/B,CAAC,GAGL,MAAM,EACP,EACA,QAAQ,IAAM,CACb,GAAI,EAAW,EAAK,IAAI,EACzB,EAEL,GAAI,EAAW,EAAK,IAAI,EACxB,OAAO,EACP,MAAO,EAAK,CACZ,GAAI,EAAK,YAAY,EAAG,CACtB,GAAI,EAAiB,EAAK,gBAAgB,CAAY,EACtD,GAAI,EAAsB,CACxB,IAAM,EAAM,EACZ,EAAK,UAAU,CACb,KAAM,GAAe,MACrB,QAAS,GAAG,EAAI,SAAS,EAAI,SAC/B,CAAC,GAGL,GAAI,EAAW,EAAK,IAAI,EACxB,MAAM,GAET,EAGH,aAAa,CAAC,EAAoB,CAChC,IAAM,EAAS,EAAgB,SAAS,EACxC,GAAI,EACF,EAAO,IAAM,EAIjB,WAAc,CAAC,EAAc,EAAgB,CAC3C,OAAO,EAAgB,IAAI,CAAE,KAAI,EAAG,CAAE,OAGlC,WAAU,EAAkB,CAChC,IAAM,EAAU,MAAM,QAAQ,WAC5B,MAAM,KAAK,KAAK,QAAQ,EAAE,IAAI,CAAC,IAAM,EAAE,gBAAgB,WAAW,CAAC,CACrE,EACA,QAAW,KAAK,EACd,GAAI,EAAE,SAAW,WACf,EAAO,MAAM,sBAAsB,OAAO,EAAE,MAAM,GAAG,OAKrD,SAAQ,EAAkB,CAC9B,IAAM,EAAU,MAAM,QAAQ,WAC5B,MAAM,KAAK,KAAK,QAAQ,EAAE,IAAI,CAAC,IAAM,EAAE,gBAAgB,SAAS,CAAC,CACnE,EACA,QAAW,KAAK,EACd,GAAI,EAAE,SAAW,WACf,EAAO,MAAM,oBAAoB,OAAO,EAAE,MAAM,GAAG,EAGvD,KAAK,cAAgB,KACrB,KAAK,SAAS,MAAM,EAExB,CCrPA,2BAAS,4BACT,kCAAS,yCAUF,MAAM,CAA2C,CAEnC,UACA,QACA,gBACA,WAJnB,WAAW,CACQ,EACA,EACA,EACA,EACjB,CAJiB,iBACA,eACA,uBACA,kBAGnB,MAAM,CACJ,EACA,EACM,CACN,IAAM,EAAO,GAAwB,iBAAiB,CAAK,EAC3D,GAAI,CAAC,EAAM,CACT,EAAe,CAAE,KAAM,EAAiB,OAAQ,CAAC,EACjD,OAGF,MAAM,KAAK,UAAW,CACpB,OAAQ,OACR,QAAS,CACP,cAAe,UAAU,KAAK,UAC9B,eAAgB,yBAChB,oBAAqB,KAAK,gBAC1B,eAAgB,KAAK,UACvB,EACA,MACF,CAAC,EACE,KAAK,MAAO,IAAQ,CACnB,GAAI,EAAI,GAAI,CACV,EAAe,CAAE,KAAM,EAAiB,OAAQ,CAAC,EACjD,OAEF,IAAM,GAAU,MAAM,EAAI,KAAK,EAAE,MAAM,IAAM,EAAE,GAAG,MAAM,EAAG,GAAG,EAC9D,EAAe,CACb,KAAM,EAAiB,OACvB,MAAW,MACT,EACI,uBAAuB,EAAI,WAAW,IACtC,uBAAuB,EAAI,QACjC,CACF,CAAC,EACF,EACA,MAAM,CAAC,IAAmB,CACzB,EAAe,CACb,KAAM,EAAiB,OACvB,MAAO,aAAiB,MAAQ,EAAY,MAAM,OAAO,CAAK,CAAC,CACjE,CAAC,EACF,EAGL,QAAQ,EAAkB,CACxB,OAAO,QAAQ,QAAQ,EAE3B,CTlCA,SAAS,CAAkB,CAAC,EAA2B,EAAqB,CAC1E,GAAI,CAAC,EACH,MAAU,MAAM,GAAG,gDAAkD,EAEvE,OAAO,EAGF,MAAM,WAAe,CAAW,CAC7B,cAAqC,KACrC,eAA+C,KAE7C,WAAW,CACnB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACA,MACE,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACF,cAGW,KAAI,CAAC,EAA8C,CAC9D,IAAM,EAAS,EAAmB,EAAO,OAAQ,QAAQ,EACnD,EAAiB,EACrB,EAAO,eACP,gBACF,EACM,EAAS,EAAmB,EAAO,OAAQ,QAAQ,EACnD,EAAa,EAAO,YAAc,EAElC,EAAS,IAAI,GAAkB,EAAQ,EAAQ,CAAc,EAC/D,EAAY,EAAO,UACvB,GAAI,CAAC,EAAW,CACd,IAAM,EAAc,EAAmB,EAAO,YAAa,aAAa,EACxE,GAAI,CACF,EAAY,MAAM,GAAiB,EAAQ,CAAW,EACtD,MAAO,GAAK,CACZ,MAAU,MACR,YAAY,uDAAiE,OAAO,EAAG,GACzF,GAKJ,IAAM,EAAwC,CAC5C,eAFkB,EAAO,aAAe,EAGxC,qBAAsB,WACtB,wBAAyB,GACzB,sBAAuB,CACzB,EACA,GAAI,EAAO,YACT,EAAc,0BAA4B,EAAO,YAEnD,GAAI,EAAO,mBACT,OAAO,OAAO,EAAe,EAAO,kBAAkB,EAGxD,IAAM,EAAW,GAAgB,EAAE,MACjC,GAAuB,CAAa,CACtC,EAEM,EAAS,IAAI,GACjB,EAAO,aAAe,KACtB,EACA,EACA,EACA,EACA,EAAO,aAAe,KACtB,EACA,IAAI,GAAkB,CACpB,WACA,QAAS,EAAO,QAChB,WAAY,EAAO,UACrB,CAAC,EACD,CACF,EAEM,EAAwB,IAAI,GAAkB,CAClD,WACA,QAAS,EAAO,QAChB,WAAY,EAAO,WACnB,eAAgB,CACd,EAAO,iBAAiB,EACxB,GAAI,EAAO,gBAAkB,CAAC,CAChC,CACF,CAAC,EAMD,GALA,EAAO,gBAAkB,EAEX,EAAqB,YAAY,EACzC,SAAS,CAAM,EAEjB,EAAO,WAAa,GACtB,EAAO,UAAU,EAGnB,OAAO,EAGT,eAAe,EAAyB,CACtC,GAAI,KAAK,cAAe,OAAO,KAAK,cAEpC,IAAM,EAAW,KAAK,OAAQ,SAAS,GAAG,EACtC,KAAK,OAAS,iBACd,KAAK,OAAS,kBAOlB,OANA,KAAK,cAAgB,IAAI,EACvB,EACA,KAAK,OACL,KAAK,eACL,KAAK,SACP,EACO,KAAK,cAGd,gBAAgB,EAA0B,CACxC,GAAI,KAAK,eAAgB,OAAO,KAAK,eAMrC,OAJA,KAAK,eAAiB,IAAI,EACxB,KACA,KAAK,gBAAgB,CACvB,EACO,KAAK,eAEhB",
40
+ "debugId": "2AF355154FC590C464756E2164756E21",
41
41
  "names": []
42
42
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "judgeval",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "JavaScript/TypeScript client for Judgment evaluation platform",
5
5
  "main": "./dist/node/index.cjs",
6
6
  "module": "./dist/node/index.mjs",