@flanksource/clicky-ui 0.3.56 → 0.3.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ErrorWrapper.cjs +15 -4
- package/dist/components/ErrorWrapper.cjs.map +1 -1
- package/dist/components/ErrorWrapper.d.ts +7 -0
- package/dist/components/ErrorWrapper.d.ts.map +1 -1
- package/dist/components/ErrorWrapper.js +15 -4
- package/dist/components/ErrorWrapper.js.map +1 -1
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.cjs +6 -3
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.cjs.map +1 -1
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.js +6 -3
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.js.map +1 -1
- package/dist/data/ai/PromptCatalog/PromptPage.cjs +2 -1
- package/dist/data/ai/PromptCatalog/PromptPage.cjs.map +1 -1
- package/dist/data/ai/PromptCatalog/PromptPage.d.ts.map +1 -1
- package/dist/data/ai/PromptCatalog/PromptPage.js +2 -1
- package/dist/data/ai/PromptCatalog/PromptPage.js.map +1 -1
- package/dist/data/ai/PromptCatalog/PromptPageHeader.cjs +9 -6
- package/dist/data/ai/PromptCatalog/PromptPageHeader.cjs.map +1 -1
- package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts.map +1 -1
- package/dist/data/ai/PromptCatalog/PromptPageHeader.js +9 -6
- package/dist/data/ai/PromptCatalog/PromptPageHeader.js.map +1 -1
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.cjs +3 -3
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.cjs.map +1 -1
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts +2 -1
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts.map +1 -1
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.js +3 -3
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.js.map +1 -1
- package/dist/data/ai/PromptCatalog/prompt-page-model.cjs +4 -3
- package/dist/data/ai/PromptCatalog/prompt-page-model.cjs.map +1 -1
- package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts +1 -1
- package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts.map +1 -1
- package/dist/data/ai/PromptCatalog/prompt-page-model.js +4 -3
- package/dist/data/ai/PromptCatalog/prompt-page-model.js.map +1 -1
- package/dist/data/ai/PromptCatalog/types.d.ts +1 -0
- package/dist/data/ai/PromptCatalog/types.d.ts.map +1 -1
- package/dist/data/traces/index.d.ts +7 -0
- package/dist/data/traces/index.d.ts.map +1 -1
- package/dist/data/traces/otel/OperationList.cjs +64 -0
- package/dist/data/traces/otel/OperationList.cjs.map +1 -0
- package/dist/data/traces/otel/OperationList.d.ts +10 -0
- package/dist/data/traces/otel/OperationList.d.ts.map +1 -0
- package/dist/data/traces/otel/OperationList.js +64 -0
- package/dist/data/traces/otel/OperationList.js.map +1 -0
- package/dist/data/traces/otel/OtelTraceDetail.cjs +781 -0
- package/dist/data/traces/otel/OtelTraceDetail.cjs.map +1 -0
- package/dist/data/traces/otel/OtelTraceDetail.d.ts +7 -0
- package/dist/data/traces/otel/OtelTraceDetail.d.ts.map +1 -0
- package/dist/data/traces/otel/OtelTraceDetail.js +781 -0
- package/dist/data/traces/otel/OtelTraceDetail.js.map +1 -0
- package/dist/data/traces/otel/OtelTraceSearch.cjs +145 -0
- package/dist/data/traces/otel/OtelTraceSearch.cjs.map +1 -0
- package/dist/data/traces/otel/OtelTraceSearch.d.ts +16 -0
- package/dist/data/traces/otel/OtelTraceSearch.d.ts.map +1 -0
- package/dist/data/traces/otel/OtelTraceSearch.js +145 -0
- package/dist/data/traces/otel/OtelTraceSearch.js.map +1 -0
- package/dist/data/traces/otel/OtelTraceTable.cjs +47 -0
- package/dist/data/traces/otel/OtelTraceTable.cjs.map +1 -0
- package/dist/data/traces/otel/OtelTraceTable.d.ts +12 -0
- package/dist/data/traces/otel/OtelTraceTable.d.ts.map +1 -0
- package/dist/data/traces/otel/OtelTraceTable.js +47 -0
- package/dist/data/traces/otel/OtelTraceTable.js.map +1 -0
- package/dist/data/traces/otel/QueryBar.cjs +158 -0
- package/dist/data/traces/otel/QueryBar.cjs.map +1 -0
- package/dist/data/traces/otel/QueryBar.d.ts +12 -0
- package/dist/data/traces/otel/QueryBar.d.ts.map +1 -0
- package/dist/data/traces/otel/QueryBar.js +158 -0
- package/dist/data/traces/otel/QueryBar.js.map +1 -0
- package/dist/data/traces/otel/SpanCards.cjs +264 -0
- package/dist/data/traces/otel/SpanCards.cjs.map +1 -0
- package/dist/data/traces/otel/SpanCards.d.ts +17 -0
- package/dist/data/traces/otel/SpanCards.d.ts.map +1 -0
- package/dist/data/traces/otel/SpanCards.js +261 -0
- package/dist/data/traces/otel/SpanCards.js.map +1 -0
- package/dist/data/traces/otel/SpanCategory.cjs +18 -0
- package/dist/data/traces/otel/SpanCategory.cjs.map +1 -0
- package/dist/data/traces/otel/SpanCategory.d.ts +7 -0
- package/dist/data/traces/otel/SpanCategory.d.ts.map +1 -0
- package/dist/data/traces/otel/SpanCategory.js +18 -0
- package/dist/data/traces/otel/SpanCategory.js.map +1 -0
- package/dist/data/traces/otel/TraceResults.cjs +195 -0
- package/dist/data/traces/otel/TraceResults.cjs.map +1 -0
- package/dist/data/traces/otel/TraceResults.d.ts +19 -0
- package/dist/data/traces/otel/TraceResults.d.ts.map +1 -0
- package/dist/data/traces/otel/TraceResults.js +193 -0
- package/dist/data/traces/otel/TraceResults.js.map +1 -0
- package/dist/data/traces/otel/api.cjs +36 -0
- package/dist/data/traces/otel/api.cjs.map +1 -0
- package/dist/data/traces/otel/api.d.ts +87 -0
- package/dist/data/traces/otel/api.d.ts.map +1 -0
- package/dist/data/traces/otel/api.js +33 -0
- package/dist/data/traces/otel/api.js.map +1 -0
- package/dist/data/traces/otel/fixtures.d.ts +4 -0
- package/dist/data/traces/otel/fixtures.d.ts.map +1 -0
- package/dist/data/traces/otel/metrics.cjs +7 -0
- package/dist/data/traces/otel/metrics.cjs.map +1 -0
- package/dist/data/traces/otel/metrics.d.ts +2 -0
- package/dist/data/traces/otel/metrics.d.ts.map +1 -0
- package/dist/data/traces/otel/metrics.js +7 -0
- package/dist/data/traces/otel/metrics.js.map +1 -0
- package/dist/data/traces/otel/model.cjs +167 -0
- package/dist/data/traces/otel/model.cjs.map +1 -0
- package/dist/data/traces/otel/model.d.ts +81 -0
- package/dist/data/traces/otel/model.d.ts.map +1 -0
- package/dist/data/traces/otel/model.js +154 -0
- package/dist/data/traces/otel/model.js.map +1 -0
- package/dist/data/traces/otel/query.cjs +90 -0
- package/dist/data/traces/otel/query.cjs.map +1 -0
- package/dist/data/traces/otel/query.d.ts +20 -0
- package/dist/data/traces/otel/query.d.ts.map +1 -0
- package/dist/data/traces/otel/query.js +86 -0
- package/dist/data/traces/otel/query.js.map +1 -0
- package/dist/data/traces/otel/result-model.cjs +25 -0
- package/dist/data/traces/otel/result-model.cjs.map +1 -0
- package/dist/data/traces/otel/result-model.d.ts +5 -0
- package/dist/data/traces/otel/result-model.d.ts.map +1 -0
- package/dist/data/traces/otel/result-model.js +24 -0
- package/dist/data/traces/otel/result-model.js.map +1 -0
- package/dist/data/traces/otel/source.cjs +11 -0
- package/dist/data/traces/otel/source.cjs.map +1 -0
- package/dist/data/traces/otel/source.d.ts +5 -0
- package/dist/data/traces/otel/source.d.ts.map +1 -0
- package/dist/data/traces/otel/source.js +10 -0
- package/dist/data/traces/otel/source.js.map +1 -0
- package/dist/data/traces/otel/span-traces.cjs +39 -0
- package/dist/data/traces/otel/span-traces.cjs.map +1 -0
- package/dist/data/traces/otel/span-traces.d.ts +3 -0
- package/dist/data/traces/otel/span-traces.d.ts.map +1 -0
- package/dist/data/traces/otel/span-traces.js +39 -0
- package/dist/data/traces/otel/span-traces.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +11 -0
- package/dist/data.js +6 -1
- package/dist/index.cjs +11 -0
- package/dist/index.js +6 -1
- package/dist/profiles/editor/profileEditorSections.cjs +4 -0
- package/dist/profiles/editor/profileEditorSections.cjs.map +1 -1
- package/dist/profiles/editor/profileEditorSections.d.ts.map +1 -1
- package/dist/profiles/editor/profileEditorSections.js +4 -0
- package/dist/profiles/editor/profileEditorSections.js.map +1 -1
- package/dist/rpc/CommandForm.cjs +1 -1
- package/dist/rpc/CommandForm.cjs.map +1 -1
- package/dist/rpc/CommandForm.js +1 -1
- package/dist/rpc/CommandForm.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OtelTraceDetail.cjs","names":["UiRobotAi","UiSparkles","UiDatabase","UiClock","useMemo","indexTrace","misparented","useState","buildRows","category","withAncestors","Callout","shortOperation","Button","SplitPane","GroupDetail","num","Tinted","CATEGORY_COLOR","Badge","CopyButton","StatStrip","duration","metric","UiCoins","selfTimeMs","SearchInput","CATEGORY_LABEL","Switch","Icon","UiExpandAll","UiCollapseAll","niceStep","useRef","UiChevronDown","UiChevronRight","_Fragment","UiWarningTriangle","isError","AgentCard","LlmCard","DbCard","Section","Properties","CodeBlock"],"sources":["../../../../src/data/traces/otel/OtelTraceDetail.tsx"],"sourcesContent":["import { Tinted } from \"./SpanCategory\";\nimport { AgentCard, LlmCard, DbCard, GroupDetail } from \"./SpanCards\";\nimport { metric } from \"./metrics\";\nimport { StatStrip } from \"../../StatStrip\";\nimport { Icon } from \"../../Icon\";\nimport { Callout } from \"../../Callout\";\nimport { Badge } from \"../../Badge\";\nimport { CodeBlock } from \"../../CodeBlock\";\nimport { Properties } from \"../../Properties\";\n/**\n * OpenTelemetry waterfall with grouped calls and an adjacent span inspector.\n */\nimport { useEffect, useMemo, useRef, useState, type KeyboardEvent } from \"react\";\nimport {\n Button,\n CopyButton,\n SearchInput,\n Section,\n SplitPane,\n Switch,\n} from \"../../../components\";\nimport {\n UiChevronDown,\n UiChevronRight,\n UiClock,\n UiCoins,\n UiCollapseAll,\n UiDatabase,\n UiExpandAll,\n UiRobotAi,\n UiSparkles,\n UiWarningTriangle,\n} from \"../../../icons\";\n\n\nimport {\n CATEGORY_COLOR,\n CATEGORY_LABEL,\n buildRows,\n category,\n duration,\n indexTrace,\n isError,\n misparented,\n niceStep,\n num,\n selfTimeMs,\n shortOperation,\n withAncestors,\n type Category,\n type Row,\n type Span,\n type TraceIndex,\n type Trace,\n} from \"./model\";\n\nconst CATEGORY_ICON = { agent: UiRobotAi, llm: UiSparkles, db: UiDatabase, other: UiClock } as const;\nconst ROW_HEIGHT = 28;\n\nconst NAME_COLUMN = \"minmax(15rem, 36%) minmax(0, 1fr)\";\n\n\nexport function OtelTraceDetail({ trace: TRACE, selectedSpanId, onSelectSpan }: { trace: Trace; selectedSpanId?: string; onSelectSpan: (id: string) => void }) {\n const index = useMemo(() => indexTrace(TRACE), [TRACE]);\n const suspects = useMemo(() => misparented(index), [index]);\n const selected = selectedSpanId ?? TRACE.spans[0]?.spanId ?? \"\";\n const [collapsed, setCollapsed] = useState(new Set<string>());\n const groupOf = (id: string) => buildRows(index, { collapsed: new Set(), expanded: new Set(), group: true }).find(row => row.type === \"group\" && row.spans.some(span => span.spanId === id))?.id;\n const [expanded, setExpanded] = useState(() => new Set([groupOf(selected)].filter(id => id !== undefined)));\n const [group, setGroup] = useState(true);\n const [query, setQuery] = useState(\"\");\n const [categories, setCategories] = useState(new Set<Category>());\n const [onlySuspects, setOnlySuspects] = useState(false);\n\n const visible = useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q && categories.size === 0 && !onlySuspects) return undefined;\n const hits = TRACE.spans.filter(span =>\n (!q || [span.operation, span.service, ...Object.values(span.attributes ?? {}).map(String)].some(text => text.toLowerCase().includes(q))) &&\n (categories.size === 0 || categories.has(category(span))) &&\n (!onlySuspects || suspects.has(span.spanId)));\n return withAncestors(index, hits.map(span => span.spanId));\n }, [index, query, categories, onlySuspects, suspects, TRACE]);\n\n const rows = useMemo(() => buildRows(index, { collapsed, expanded, group, ...(visible ? { visible } : {}) }), [index, collapsed, expanded, group, visible]);\n\n const select = (id: string) => {\n const group = groupOf(id);\n if (group) setExpanded(previous => new Set(previous).add(group));\n onSelectSpan(id);\n };\n const toggle = (set: typeof setCollapsed, id: string) => set(previous => {\n const next = new Set(previous);\n if (!next.delete(id)) next.add(id);\n return next;\n });\n\n const selectedSpan = index.byId.get(selected);\n const selectedGroup = rows.find((row): row is Extract<Row, { type: \"group\" }> => row.type === \"group\" && row.id === selected);\n\n return (\n <div className=\"space-y-8\">\n <section className=\"space-y-4 rounded-xl border border-border bg-background p-density-4\">\n <TraceHeader index={index} trace={TRACE} />\n {TRACE.missingParents.length > 0 && <p role=\"status\">Partial trace: {TRACE.missingParents.length} parent spans are missing from this source.</p>}\n {suspects.size > 0 && (\n <Callout variant=\"warning\" title={`${suspects.size} spans run inside a nested agent but hang off its parent`}>\n <p className=\"text-sm\">\n They start and end within <code>{shortOperation(suspects.values().next().value!.operation)}</code>, yet their parent is the root span, so the nested agent looks like it made a single LLM call. This usually means the agent's context is not propagated to its database client.{\" \"}\n <Button size=\"sm\" variant=\"link\" className=\"h-auto p-0\" onClick={() => setOnlySuspects(on => !on)}>{onlySuspects ? \"Show all spans\" : \"Show only these spans\"}</Button>\n </p>\n </Callout>\n )}\n <Toolbar\n trace={TRACE}\n query={query}\n setQuery={setQuery}\n categories={categories}\n toggleCategory={c => setCategories(previous => {\n const next = new Set(previous);\n if (!next.delete(c)) next.add(c);\n return next;\n })}\n group={group}\n setGroup={setGroup}\n expandAll={() => {\n setCollapsed(new Set());\n setExpanded(new Set(rows.filter(row => row.type === \"group\").map(row => row.id)));\n }}\n collapseAll={() => {\n setExpanded(new Set());\n setCollapsed(new Set(TRACE.spans.filter(span => index.children.has(span.spanId) && !span.parentId).map(span => span.spanId)));\n }}\n shown={rows.length}\n />\n <SplitPane\n stackOnMobile\n defaultSplit={62}\n minLeft={40}\n minRight={25}\n className=\"rounded-lg border border-border\"\n left={<Waterfall index={index} rows={rows} selected={selected} onSelect={select} suspects={suspects} onToggleSpan={id => toggle(setCollapsed, id)} onToggleGroup={id => toggle(setExpanded, id)} expanded={expanded} collapsed={collapsed} />}\n right={\n <div className=\"h-72 overflow-auto p-density-3 md:h-[calc(100dvh-14rem)] md:min-h-[30rem]\">\n {selectedGroup ? <GroupDetail index={index} spans={selectedGroup.spans} onSelect={select} />\n : selectedSpan ? <SpanDetail index={index} span={selectedSpan} host={suspects.get(selectedSpan.spanId)} onSelect={select} />\n : <p className=\"text-sm text-muted-foreground\">Select a span.</p>}\n </div>\n }\n />\n </section>\n </div>\n );\n}\n\nfunction TraceHeader({ index, trace: TRACE }: { index: TraceIndex; trace: Trace }) {\n const { summary } = TRACE;\n const by = (c: Category) => TRACE.spans.filter(span => category(span) === c);\n const llm = by(\"llm\");\n const db = by(\"db\");\n const sum = (spans: Span[], key: string) => { const values = spans.map(span => num(span.attributes?.[key])).filter(value => value !== undefined); return values.length ? values.reduce((total, value) => total + value, 0) : undefined; };\n const root = index.roots[0]!;\n const cost = num(root.attributes?.[\"captain.cost_usd\"]);\n const budget = num(root.attributes?.[\"captain.budget.cost_usd\"]);\n const tokensIn = sum(llm, \"gen_ai.usage.input_tokens\");\n const tokensOut = sum(llm, \"gen_ai.usage.output_tokens\");\n const ms = (spans: Span[]) => spans.reduce((total, span) => total + span.durationMs, 0);\n return (\n <div className=\"space-y-3\">\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div className=\"min-w-0 space-y-1\">\n \n <h2 className=\"flex items-center gap-2 text-xl font-semibold tracking-tight\">\n <Tinted icon={UiRobotAi} color={CATEGORY_COLOR.agent} />\n {shortOperation(summary.operation)}\n {summary.errors === 0 ? <Badge tone=\"success\" variant=\"soft\">no errors</Badge> : <Badge tone=\"danger\" variant=\"soft\">{summary.errors} errors</Badge>}\n </h2>\n <p className=\"flex flex-wrap items-center gap-2 text-xs text-muted-foreground\">\n <code>{summary.traceId}</code>\n <CopyButton value={summary.traceId} label=\"Copy trace ID\" />\n <span>· {summary.services.join(\", \")} · {new Date(summary.startedAt).toLocaleString()}</span>\n </p>\n </div>\n </div>\n <StatStrip\n items={[\n { label: \"Duration\", value: duration(summary.durationMs), sub: `${summary.spanCount} spans`, icon: UiClock },\n { label: \"LLM\", value: duration(ms(llm)), sub: `${llm.length} calls · ${metric(tokensIn)} in / ${metric(tokensOut)} out`, icon: UiSparkles },\n { label: \"Database\", value: duration(ms(db)), sub: `${db.length} calls · ${new Set(db.map(span => span.attributes?.[\"db.sql.table\"])).size} tables`, icon: UiDatabase },\n { label: \"Cost\", value: metric(cost, value => `$${value.toFixed(4)}`), sub: budget ? `of $${budget} budget` : \"budget unavailable\", icon: UiCoins },\n { label: \"Root self-time\", value: duration(selfTimeMs(index, root)), sub: \"not covered by any child span\", icon: UiRobotAi, tone: \"warning\" },\n ]}\n />\n </div>\n );\n}\n\nfunction Toolbar(props: {\n trace: Trace;\n query: string; setQuery: (q: string) => void;\n categories: Set<Category>; toggleCategory: (c: Category) => void;\n group: boolean; setGroup: (on: boolean) => void;\n expandAll: () => void; collapseAll: () => void; shown: number;\n}) {\n const counts = props.trace.spans.reduce((acc, span) => ({ ...acc, [category(span)]: (acc[category(span)] ?? 0) + 1 }), {} as Partial<Record<Category, number>>);\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n <SearchInput className=\"w-72\" placeholder=\"Filter by name, table or attribute\" value={props.query} onChange={props.setQuery} />\n {(Object.keys(counts) as Category[]).map(c => {\n const on = props.categories.has(c);\n return (\n <Button key={c} size=\"sm\" variant={on ? \"default\" : \"outline\"} aria-pressed={on} onClick={() => props.toggleCategory(c)}>\n <span className=\"mr-1.5 inline-block size-2 rounded-full\" style={{ background: CATEGORY_COLOR[c] }} />\n {CATEGORY_LABEL[c]} <span className=\"ml-1 text-muted-foreground\">{counts[c]}</span>\n </Button>\n );\n })}\n <label className=\"ml-2 inline-flex items-center gap-2 text-xs text-muted-foreground\">\n <Switch checked={props.group} aria-label=\"Group repeated database calls\" onChange={props.setGroup} />\n Group repeated DB calls\n </label>\n <div className=\"ml-auto flex items-center gap-1\">\n <span className=\"mr-2 text-xs text-muted-foreground\">{props.shown} rows</span>\n <Button size=\"sm\" variant=\"ghost\" onClick={props.expandAll}><Icon icon={UiExpandAll} className=\"mr-1\" />Expand all</Button>\n <Button size=\"sm\" variant=\"ghost\" onClick={props.collapseAll}><Icon icon={UiCollapseAll} className=\"mr-1\" />Collapse</Button>\n </div>\n </div>\n );\n}\n\nfunction Waterfall(props: {\n index: TraceIndex; rows: Row[]; selected: string; onSelect: (id: string) => void; suspects: Map<string, Span>;\n onToggleSpan: (id: string) => void; onToggleGroup: (id: string) => void; expanded: Set<string>; collapsed: Set<string>;\n}) {\n const { index, rows, selected, onSelect } = props;\n const total = Math.max(index.totalMs, 0.001);\n const step = niceStep(total);\n const ticks = Array.from({ length: Math.floor(total / step) + 1 }, (_, i) => i * step);\n const scroller = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n scroller.current?.querySelector<HTMLElement>(`[data-row-id=\"${CSS.escape(selected)}\"]`)?.scrollIntoView?.({ block: \"nearest\" });\n }, [selected]);\n\n const onKey = (event: KeyboardEvent) => {\n const at = rows.findIndex(row => row.id === selected);\n const next = event.key === \"ArrowDown\" ? rows[at + 1] : event.key === \"ArrowUp\" ? rows[at - 1] : undefined;\n const row = rows[at];\n if (next) onSelect(next.id);\n else if (row && (event.key === \"ArrowRight\" || event.key === \"ArrowLeft\")) {\n const open = row.type === \"group\" ? props.expanded.has(row.id) : !props.collapsed.has(row.id);\n const want = event.key === \"ArrowRight\";\n if (open !== want && (row.type === \"group\" || row.childCount > 0)) (row.type === \"group\" ? props.onToggleGroup : props.onToggleSpan)(row.id);\n } else return;\n event.preventDefault();\n };\n\n const pct = (ms: number) => `${(ms / total) * 100}%`;\n return (\n <div ref={scroller} tabIndex={0} onKeyDown={onKey} aria-label=\"Span waterfall\" className=\"h-72 overflow-auto text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring md:h-[calc(100dvh-14rem)] md:min-h-[30rem]\">\n <div className=\"min-w-[40rem]\">\n <div className=\"sticky top-0 z-10 grid border-b border-border bg-muted text-muted-foreground\" style={{ gridTemplateColumns: NAME_COLUMN, height: ROW_HEIGHT }}>\n <div className=\"flex items-center px-density-2 font-medium\">Span</div>\n <div className=\"relative mr-12\">\n {ticks.map(t => <span key={t} className=\"absolute top-1.5 -translate-x-1/2 tabular-nums\" style={{ left: pct(t) }}>{t === 0 ? \"0\" : duration(t)}</span>)}\n </div>\n </div>\n <div className=\"relative\">\n <div aria-hidden className=\"pointer-events-none absolute inset-y-0 grid\" style={{ gridTemplateColumns: NAME_COLUMN, left: 0, right: 0 }}>\n <div />\n <div className=\"relative mr-12\">{ticks.map(t => <span key={t} className=\"absolute inset-y-0 border-l border-border\" style={{ left: pct(t), opacity: 0.6 }} />)}</div>\n </div>\n {rows.map(row => <WaterfallRow key={row.id} {...props} row={row} pct={pct} active={row.id === selected} />)}\n {rows.length === 0 && <p className=\"p-density-4 text-sm text-muted-foreground\">No spans match these filters.</p>}\n </div>\n </div>\n </div>\n );\n}\n\nfunction WaterfallRow({ index, row, active, pct, onSelect, suspects, onToggleSpan, onToggleGroup, expanded, collapsed }: Parameters<typeof Waterfall>[0] & { row: Row; active: boolean; pct: (ms: number) => string }) {\n const indent = { paddingLeft: `${row.depth * 14 + 4}px` };\n const toggleButton = (open: boolean, onClick: () => void, label: string) => (\n <button type=\"button\" aria-label={`${open ? \"Collapse\" : \"Expand\"} ${label}`} className=\"flex size-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted\" onClick={event => { event.stopPropagation(); onClick(); }}>\n <Icon icon={open ? UiChevronDown : UiChevronRight} />\n </button>\n );\n const rowClass = `relative grid w-full cursor-pointer items-center text-left ${active ? \"bg-accent\" : \"hover:bg-muted\"}`;\n\n if (row.type === \"group\") {\n const open = expanded.has(row.id);\n const ops = Object.entries(row.spans.reduce<Record<string, number>>((acc, span) => ({ ...acc, [span.operation.replace(\"gorm.\", \"\")]: (acc[span.operation.replace(\"gorm.\", \"\")] ?? 0) + 1 }), {}));\n const first = index.offsetMs(row.spans[0]!);\n const last = row.spans.at(-1)!;\n const end = index.offsetMs(last) + last.durationMs;\n const busy = row.spans.reduce((total, span) => total + span.durationMs, 0);\n const suspectCount = row.spans.filter(span => suspects.has(span.spanId)).length;\n return (\n <div role=\"button\" tabIndex={-1} data-row-id={row.id} aria-selected={active} className={rowClass} style={{ gridTemplateColumns: NAME_COLUMN, height: ROW_HEIGHT }} onClick={() => onSelect(row.id)}>\n <div className=\"flex min-w-0 items-center gap-1 pr-2\" style={indent}>\n {toggleButton(open, () => onToggleGroup(row.id), \"database group\")}\n <Tinted icon={UiDatabase} color={CATEGORY_COLOR.db} />\n <span className=\"truncate\"><span className=\"font-medium\">{row.spans.length} DB calls</span> <span className=\"text-muted-foreground\">{ops.map(([op, n]) => `${op} ×${n}`).join(\", \")}</span></span>\n {suspectCount > 0 && <><Tinted icon={UiWarningTriangle} color=\"var(--fs-warning)\" label={`${suspectCount} calls run inside a nested agent but are parented elsewhere`} /><span className=\"text-muted-foreground\">{suspectCount}</span></>}\n </div>\n <div className=\"relative mr-12 h-full\">\n <span className=\"absolute rounded-sm\" style={{ left: pct(first), width: pct(end - first), top: 11, height: 6, background: CATEGORY_COLOR.db, opacity: 0.18 }} />\n {row.spans.map(span => <span key={span.spanId} className=\"absolute rounded-sm\" style={{ left: pct(index.offsetMs(span)), width: pct(span.durationMs), minWidth: 2, top: 8, height: 12, background: CATEGORY_COLOR.db }} />)}\n <BarLabel start={(first / Math.max(index.totalMs, 0.001)) * 100} end={(end / Math.max(index.totalMs, 0.001)) * 100} text={`${duration(busy)} busy`} />\n </div>\n </div>\n );\n }\n\n const { span } = row;\n const c = category(span);\n const parent = span.parentId ? index.byId.get(span.parentId) : undefined;\n const left = (index.offsetMs(span) / Math.max(index.totalMs, 0.001)) * 100;\n const width = (span.durationMs / Math.max(index.totalMs, 0.001)) * 100;\n const error = isError(span);\n const label = shortOperation(span.operation);\n const table = span.attributes?.[\"db.sql.table\"];\n return (\n <div role=\"button\" tabIndex={-1} data-row-id={row.id} aria-selected={active} className={rowClass} style={{ gridTemplateColumns: NAME_COLUMN, height: ROW_HEIGHT }} onClick={() => onSelect(row.id)} title={span.operation}>\n <div className=\"flex min-w-0 items-center gap-1 pr-2\" style={indent}>\n {row.childCount > 0 ? toggleButton(!collapsed.has(span.spanId), () => onToggleSpan(span.spanId), label) : <span className=\"size-5 shrink-0\" />}\n <Tinted icon={CATEGORY_ICON[c]} color={CATEGORY_COLOR[c]} />\n {parent && parent.service !== span.service && <Badge size=\"sm\" variant=\"outline\">{span.service}</Badge>}\n <span className={`truncate ${c === \"db\" ? \"\" : \"font-medium\"}`}>{label}</span>\n {typeof table === \"string\" && <span className=\"truncate text-muted-foreground\">{table}</span>}\n {row.childCount > 0 && collapsed.has(span.spanId) && <span className=\"text-muted-foreground\">+{row.childCount}</span>}\n {suspects.has(span.spanId) && <Tinted icon={UiWarningTriangle} color=\"var(--fs-warning)\" label=\"Runs inside a nested agent but is parented elsewhere\" />}\n {error && <Badge size=\"sm\" tone=\"danger\" variant=\"soft\">error</Badge>}\n </div>\n <div className=\"relative mr-12 h-full\">\n <span className=\"absolute rounded-sm\" style={{ left: `${left}%`, width: `${width}%`, minWidth: 2, top: 7, height: 14, background: error ? \"var(--destructive)\" : CATEGORY_COLOR[c], opacity: c === \"agent\" ? 0.85 : 1 }} />\n <BarLabel start={left} end={left + width} inside={width > 14} text={duration(span.durationMs)} />\n </div>\n </div>\n );\n}\n\n/** Duration next to the bar's end — or inside a wide bar — and flipped left of the start near the right edge. */\nfunction BarLabel({ start, end, inside, text }: { start: number; end: number; inside?: boolean; text: string }) {\n if (inside) return <span className=\"absolute top-1.5 px-1.5 font-medium text-white tabular-nums\" style={{ left: `${start}%` }}>{text}</span>;\n const position = end > 90 ? { right: `${100 - start}%`, paddingRight: 4 } : { left: `${end}%`, paddingLeft: 4 };\n return <span className=\"absolute top-1.5 whitespace-nowrap tabular-nums text-muted-foreground\" style={position}>{text}</span>;\n}\n\nfunction SpanDetail({ index, span, host, onSelect }: { index: TraceIndex; span: Span; host: Span | undefined; onSelect: (id: string) => void }) {\n const c = category(span);\n const ancestors: Span[] = [];\n for (let p = span.parentId ? index.byId.get(span.parentId) : undefined; p; p = p.parentId ? index.byId.get(p.parentId) : undefined) ancestors.unshift(p);\n const attributes = Object.entries(span.attributes ?? {});\n return (\n <div className=\"space-y-4\">\n <div className=\"space-y-1.5\">\n {ancestors.length > 0 && (\n <p className=\"flex flex-wrap items-center gap-1 text-xs text-muted-foreground\">\n {ancestors.map(a => (\n <span key={a.spanId} className=\"inline-flex items-center gap-1\">\n <button type=\"button\" className=\"hover:underline\" onClick={() => onSelect(a.spanId)}>{shortOperation(a.operation)}</button>\n <Icon icon={UiChevronRight} />\n </span>\n ))}\n </p>\n )}\n <h3 className=\"flex items-center gap-2 text-base font-semibold\" title={span.operation}>\n <Tinted icon={CATEGORY_ICON[c]} color={CATEGORY_COLOR[c]} />\n <span className=\"truncate\">{shortOperation(span.operation)}</span>\n </h3>\n <div className=\"flex flex-wrap items-center gap-1.5 text-xs\">\n <Badge variant=\"soft\" size=\"sm\">{CATEGORY_LABEL[c]}</Badge>\n {span.kind && <Badge variant=\"outline\" size=\"sm\">{span.kind}</Badge>}\n {isError(span) && <Badge tone=\"danger\" variant=\"soft\" size=\"sm\">error</Badge>}\n <span className=\"tabular-nums text-muted-foreground\">{duration(span.durationMs)} · starts at +{duration(index.offsetMs(span))}</span>\n <span className=\"ml-auto inline-flex items-center gap-1 text-muted-foreground\"><code>{span.spanId}</code><CopyButton value={span.spanId} label=\"Copy span ID\" /></span>\n </div>\n </div>\n {host && (\n <Callout variant=\"warning\" title=\"Likely mis-parented\">\n <p className=\"text-sm\">Runs entirely inside <button type=\"button\" className=\"underline\" onClick={() => onSelect(host.spanId)}>{shortOperation(host.operation)}</button> but its parent is {span.parentId ? shortOperation(index.byId.get(span.parentId)?.operation ?? span.parentId) : \"missing\"}.</p>\n </Callout>\n )}\n {c === \"agent\" && <AgentCard index={index} span={span} />}\n {c === \"llm\" && <LlmCard span={span} />}\n {c === \"db\" && <DbCard span={span} />}\n <Section title={`All attributes (${attributes.length})`} defaultOpen={c === \"other\"}>\n <Properties renderLabel={key => <code className=\"text-xs\">{key}</code>} items={attributes.map(([key, value]) => ({ key, value }))} />\n </Section>\n {span.otlp && <Section title=\"OpenTelemetry metadata\" defaultOpen={false}><CodeBlock language=\"json\" source={JSON.stringify(span.otlp, null, 2)} jsonDefaultOpenDepth={4} copyable /></Section>}\n <Section title={`Resource (${Object.keys(span.resource ?? {}).length})`} defaultOpen={false}>\n <Properties renderLabel={key => <code className=\"text-xs\">{key}</code>} items={Object.entries(span.resource ?? {}).map(([key, value]) => ({ key, value }))} />\n </Section>\n </div>\n );\n}\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,IAAM,gBAAgB;CAAE,OAAOA,kBAAAA;CAAW,KAAKC,mBAAAA;CAAY,IAAIC,mBAAAA;CAAY,OAAOC,gBAAAA;AAAQ;AAC1F,IAAM,aAAa;AAEnB,IAAM,cAAc;AAGpB,SAAgB,gBAAgB,EAAE,OAAO,OAAO,gBAAgB,gBAA+F;CAC7J,MAAM,SAAA,GAAQC,MAAAA,QAAAA,OAAcC,cAAAA,WAAW,KAAK,GAAG,CAAC,KAAK,CAAC;CACtD,MAAM,YAAA,GAAWD,MAAAA,QAAAA,OAAcE,cAAAA,YAAY,KAAK,GAAG,CAAC,KAAK,CAAC;CAC1D,MAAM,WAAW,kBAAkB,MAAM,MAAM,EAAE,EAAE,UAAU;CAC7D,MAAM,CAAC,WAAW,iBAAA,GAAgBC,MAAAA,SAAAA,iBAAS,IAAI,IAAY,CAAC;CAC5D,MAAM,WAAW,OAAeC,cAAAA,UAAU,OAAO;EAAE,2BAAW,IAAI,IAAI;EAAG,0BAAU,IAAI,IAAI;EAAG,OAAO;CAAK,CAAC,CAAC,CAAC,MAAK,QAAO,IAAI,SAAS,WAAW,IAAI,MAAM,MAAK,SAAQ,KAAK,WAAW,EAAE,CAAC,CAAC,EAAE;CAC9L,MAAM,CAAC,UAAU,gBAAA,GAAeD,MAAAA,SAAAA,OAAe,IAAI,IAAI,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,QAAO,OAAM,OAAO,KAAA,CAAS,CAAC,CAAC;CAC1G,MAAM,CAAC,OAAO,aAAA,GAAYA,MAAAA,SAAAA,CAAS,IAAI;CACvC,MAAM,CAAC,OAAO,aAAA,GAAYA,MAAAA,SAAAA,CAAS,EAAE;CACrC,MAAM,CAAC,YAAY,kBAAA,GAAiBA,MAAAA,SAAAA,iBAAS,IAAI,IAAc,CAAC;CAChE,MAAM,CAAC,cAAc,oBAAA,GAAmBA,MAAAA,SAAAA,CAAS,KAAK;CAEtD,MAAM,WAAA,GAAUH,MAAAA,QAAAA,OAAc;EAC5B,MAAM,IAAI,MAAM,KAAK,CAAC,CAAC,YAAY;EACnC,IAAI,CAAC,KAAK,WAAW,SAAS,KAAK,CAAC,cAAc,OAAO,KAAA;EACzD,MAAM,OAAO,MAAM,MAAM,QAAO,UAC7B,CAAC,KAAK;GAAC,KAAK;GAAW,KAAK;GAAS,GAAG,OAAO,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM;EAAC,CAAC,CAAC,MAAK,SAAQ,KAAK,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,OACrI,WAAW,SAAS,KAAK,WAAW,IAAIK,cAAAA,SAAS,IAAI,CAAC,OACtD,CAAC,gBAAgB,SAAS,IAAI,KAAK,MAAM,EAAE;EAC9C,OAAOC,cAAAA,cAAc,OAAO,KAAK,KAAI,SAAQ,KAAK,MAAM,CAAC;CAC3D,GAAG;EAAC;EAAO;EAAO;EAAY;EAAc;EAAU;CAAK,CAAC;CAE5D,MAAM,QAAA,GAAON,MAAAA,QAAAA,OAAcI,cAAAA,UAAU,OAAO;EAAE;EAAW;EAAU;EAAO,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;CAAG,CAAC,GAAG;EAAC;EAAO;EAAW;EAAU;EAAO;CAAO,CAAC;CAE1J,MAAM,UAAU,OAAe;EAC7B,MAAM,QAAQ,QAAQ,EAAE;EACxB,IAAI,OAAO,aAAY,aAAY,IAAI,IAAI,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC;EAC/D,aAAa,EAAE;CACjB;CACA,MAAM,UAAU,KAA0B,OAAe,KAAI,aAAY;EACvE,MAAM,OAAO,IAAI,IAAI,QAAQ;EAC7B,IAAI,CAAC,KAAK,OAAO,EAAE,GAAG,KAAK,IAAI,EAAE;EACjC,OAAO;CACT,CAAC;CAED,MAAM,eAAe,MAAM,KAAK,IAAI,QAAQ;CAC5C,MAAM,gBAAgB,KAAK,MAAM,QAAgD,IAAI,SAAS,WAAW,IAAI,OAAO,QAAQ;CAE5H,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAU;EACb,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,WAAD;GAAS,WAAU;GAAnB,UAAA;IACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,aAAD;KAAoB;KAAO,OAAO;IAAQ,CAAA;IACzC,MAAM,eAAe,SAAS,KAAK,iBAAA,GAAA,kBAAA,KAAA,CAAC,KAAD;KAAG,MAAK;KAAR,UAAA;MAAiB;MAAgB,MAAM,eAAe;MAAO;KAA8C;;IAC9I,SAAS,OAAO,KACf,iBAAA,GAAA,kBAAA,IAAA,CAACG,gBAAAA,SAAD;KAAS,SAAQ;KAAU,OAAO,GAAG,SAAS,KAAK;KACjD,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,KAAD;MAAG,WAAU;MAAb,UAAA;OAAuB;OACK,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAA,UAAOC,cAAAA,eAAe,SAAS,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAO,SAAS,EAAQ,CAAA;OAAC;OAAgL;OAClR,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,QAAD;QAAQ,MAAK;QAAK,SAAQ;QAAO,WAAU;QAAa,eAAe,iBAAgB,OAAM,CAAC,EAAE;QAAI,UAAA,eAAe,mBAAmB;OAAgC,CAAA;MACrK;;IACI,CAAA;IAEX,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;KACE,OAAO;KACA;KACG;KACE;KACZ,iBAAgB,MAAK,eAAc,aAAY;MAC7C,MAAM,OAAO,IAAI,IAAI,QAAQ;MAC7B,IAAI,CAAC,KAAK,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC;MAC/B,OAAO;KACT,CAAC;KACM;KACG;KACV,iBAAiB;MACf,6BAAa,IAAI,IAAI,CAAC;MACtB,YAAY,IAAI,IAAI,KAAK,QAAO,QAAO,IAAI,SAAS,OAAO,CAAC,CAAC,KAAI,QAAO,IAAI,EAAE,CAAC,CAAC;KAClF;KACA,mBAAmB;MACjB,4BAAY,IAAI,IAAI,CAAC;MACrB,aAAa,IAAI,IAAI,MAAM,MAAM,QAAO,SAAQ,MAAM,SAAS,IAAI,KAAK,MAAM,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,KAAI,SAAQ,KAAK,MAAM,CAAC,CAAC;KAC9H;KACA,OAAO,KAAK;IACb,CAAA;IACD,iBAAA,GAAA,kBAAA,IAAA,CAACC,kBAAAA,WAAD;KACE,eAAA;KACA,cAAc;KACd,SAAS;KACT,UAAU;KACV,WAAU;KACV,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;MAAkB;MAAa;MAAgB;MAAU,UAAU;MAAkB;MAAU,eAAc,OAAM,OAAO,cAAc,EAAE;MAAG,gBAAe,OAAM,OAAO,aAAa,EAAE;MAAa;MAAqB;KAAY,CAAA;KAC5O,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;MAAK,WAAU;MACZ,UAAA,gBAAgB,iBAAA,GAAA,kBAAA,IAAA,CAACC,kBAAAA,aAAD;OAAoB;OAAO,OAAO,cAAc;OAAO,UAAU;MAAS,CAAA,IACvF,eAAe,iBAAA,GAAA,kBAAA,IAAA,CAAC,YAAD;OAAmB;OAAO,MAAM;OAAc,MAAM,SAAS,IAAI,aAAa,MAAM;OAAG,UAAU;MAAS,CAAA,IACzH,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;OAAG,WAAU;OAAgC,UAAA;MAAiB,CAAA;KAC/D,CAAA;IAER,CAAA;GACM;;CACN,CAAA;AAET;AAEA,SAAS,YAAY,EAAE,OAAO,OAAO,SAA8C;CACjF,MAAM,EAAE,YAAY;CACpB,MAAM,MAAM,MAAgB,MAAM,MAAM,QAAO,SAAQN,cAAAA,SAAS,IAAI,MAAM,CAAC;CAC3E,MAAM,MAAM,GAAG,KAAK;CACpB,MAAM,KAAK,GAAG,IAAI;CAClB,MAAM,OAAO,OAAe,QAAgB;EAAE,MAAM,SAAS,MAAM,KAAI,SAAQO,cAAAA,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,CAAC,QAAO,UAAS,UAAU,KAAA,CAAS;EAAG,OAAO,OAAO,SAAS,OAAO,QAAQ,OAAO,UAAU,QAAQ,OAAO,CAAC,IAAI,KAAA;CAAW;CACxO,MAAM,OAAO,MAAM,MAAM;CACzB,MAAM,OAAOA,cAAAA,IAAI,KAAK,aAAa,mBAAmB;CACtD,MAAM,SAASA,cAAAA,IAAI,KAAK,aAAa,0BAA0B;CAC/D,MAAM,WAAW,IAAI,KAAK,2BAA2B;CACrD,MAAM,YAAY,IAAI,KAAK,4BAA4B;CACvD,MAAM,MAAM,UAAkB,MAAM,QAAQ,OAAO,SAAS,QAAQ,KAAK,YAAY,CAAC;CACtF,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GAAK,WAAU;GACb,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CAEE,iBAAA,GAAA,kBAAA,KAAA,CAAC,MAAD;KAAI,WAAU;KAAd,UAAA;MACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,QAAD;OAAQ,MAAMjB,kBAAAA;OAAW,OAAOkB,cAAAA,eAAe;MAAQ,CAAA;MACtDN,cAAAA,eAAe,QAAQ,SAAS;MAChC,QAAQ,WAAW,IAAI,iBAAA,GAAA,kBAAA,IAAA,CAACO,cAAAA,OAAD;OAAO,MAAK;OAAU,SAAQ;OAAO,UAAA;MAAgB,CAAA,IAAI,iBAAA,GAAA,kBAAA,KAAA,CAACA,cAAAA,OAAD;OAAO,MAAK;OAAS,SAAQ;OAA7B,UAAA,CAAqC,QAAQ,QAAO,SAAc;;KACjJ;IACJ,CAAA,GAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,KAAD;KAAG,WAAU;KAAb,UAAA;MACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAA,UAAO,QAAQ,QAAc,CAAA;MAC7B,iBAAA,GAAA,kBAAA,IAAA,CAACC,mBAAAA,YAAD;OAAY,OAAO,QAAQ;OAAS,OAAM;MAAiB,CAAA;MAC3D,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD,EAAA,UAAA;OAAM;OAAG,QAAQ,SAAS,KAAK,IAAI;OAAE;OAAI,IAAI,KAAK,QAAQ,SAAS,CAAC,CAAC,eAAe;MAAQ,EAAA,CAAA;KAC3F;IACA,CAAA,CAAA;;EACF,CAAA,GACL,iBAAA,GAAA,kBAAA,IAAA,CAACC,kBAAAA,WAAD,EACE,OAAO;GACL;IAAE,OAAO;IAAY,OAAOC,cAAAA,SAAS,QAAQ,UAAU;IAAG,KAAK,GAAG,QAAQ,UAAU;IAAS,MAAMnB,gBAAAA;GAAQ;GAC3G;IAAE,OAAO;IAAO,OAAOmB,cAAAA,SAAS,GAAG,GAAG,CAAC;IAAG,KAAK,GAAG,IAAI,OAAO,WAAWC,gBAAAA,OAAO,QAAQ,EAAE,QAAQA,gBAAAA,OAAO,SAAS,EAAE;IAAO,MAAMtB,mBAAAA;GAAW;GAC3I;IAAE,OAAO;IAAY,OAAOqB,cAAAA,SAAS,GAAG,EAAE,CAAC;IAAG,KAAK,GAAG,GAAG,OAAO,WAAW,IAAI,IAAI,GAAG,KAAI,SAAQ,KAAK,aAAa,eAAe,CAAC,CAAC,CAAC,KAAK;IAAU,MAAMpB,mBAAAA;GAAW;GACtK;IAAE,OAAO;IAAQ,OAAOqB,gBAAAA,OAAO,OAAM,UAAS,IAAI,MAAM,QAAQ,CAAC,GAAG;IAAG,KAAK,SAAS,OAAO,OAAO,WAAW;IAAsB,MAAMC,gBAAAA;GAAQ;GAClJ;IAAE,OAAO;IAAkB,OAAOF,cAAAA,SAASG,cAAAA,WAAW,OAAO,IAAI,CAAC;IAAG,KAAK;IAAiC,MAAMzB,kBAAAA;IAAW,MAAM;GAAU;EAC9I,EACD,CAAA,CACE;;AAET;AAEA,SAAS,QAAQ,OAMd;CACD,MAAM,SAAS,MAAM,MAAM,MAAM,QAAQ,KAAK,UAAU;EAAE,GAAG;GAAMS,cAAAA,SAAS,IAAI,KAAK,IAAIA,cAAAA,SAAS,IAAI,MAAM,KAAK;CAAE,IAAI,CAAC,CAAsC;CAC9J,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GACE,iBAAA,GAAA,kBAAA,IAAA,CAACiB,oBAAAA,aAAD;IAAa,WAAU;IAAO,aAAY;IAAqC,OAAO,MAAM;IAAO,UAAU,MAAM;GAAW,CAAA;GAC5H,OAAO,KAAK,MAAM,CAAC,CAAgB,KAAI,MAAK;IAC5C,MAAM,KAAK,MAAM,WAAW,IAAI,CAAC;IACjC,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACb,eAAAA,QAAD;KAAgB,MAAK;KAAK,SAAS,KAAK,YAAY;KAAW,gBAAc;KAAI,eAAe,MAAM,eAAe,CAAC;KAAtH,UAAA;MACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,WAAU;OAA0C,OAAO,EAAE,YAAYK,cAAAA,eAAe,GAAG;MAAI,CAAA;MACpGS,cAAAA,eAAe;MAAG;MAAC,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,WAAU;OAA8B,UAAA,OAAO;MAAS,CAAA;KAC5E;IAHK,GAAA,CAGL;GAEZ,CAAC;GACD,iBAAA,GAAA,kBAAA,KAAA,CAAC,SAAD;IAAO,WAAU;IAAjB,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,QAAD;KAAQ,SAAS,MAAM;KAAO,cAAW;KAAgC,UAAU,MAAM;IAAW,CAAA,GAAC,yBAEhG;;GACP,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;MAAM,WAAU;MAAhB,UAAA,CAAsD,MAAM,OAAM,OAAW;;KAC7E,iBAAA,GAAA,kBAAA,KAAA,CAACf,eAAAA,QAAD;MAAQ,MAAK;MAAK,SAAQ;MAAQ,SAAS,MAAM;MAAjD,UAAA,CAA4D,iBAAA,GAAA,kBAAA,IAAA,CAACgB,aAAAA,MAAD;OAAM,MAAMC,oBAAAA;OAAa,WAAU;MAAQ,CAAA,GAAC,YAAkB;;KAC1H,iBAAA,GAAA,kBAAA,KAAA,CAACjB,eAAAA,QAAD;MAAQ,MAAK;MAAK,SAAQ;MAAQ,SAAS,MAAM;MAAjD,UAAA,CAA8D,iBAAA,GAAA,kBAAA,IAAA,CAACgB,aAAAA,MAAD;OAAM,MAAME,sBAAAA;OAAe,WAAU;MAAQ,CAAA,GAAC,UAAgB;;IACzH;;EACF;;AAET;AAEA,SAAS,UAAU,OAGhB;CACD,MAAM,EAAE,OAAO,MAAM,UAAU,aAAa;CAC5C,MAAM,QAAQ,KAAK,IAAI,MAAM,SAAS,IAAK;CAC3C,MAAM,OAAOC,cAAAA,SAAS,KAAK;CAC3B,MAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,IAAI,GAAG,MAAM,IAAI,IAAI;CACrF,MAAM,YAAA,GAAWC,MAAAA,OAAAA,CAAuB,IAAI;CAE5C,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,SAAS,SAAS,cAA2B,iBAAiB,IAAI,OAAO,QAAQ,EAAE,GAAG,CAAC,EAAE,iBAAiB,EAAE,OAAO,UAAU,CAAC;CAChI,GAAG,CAAC,QAAQ,CAAC;CAEb,MAAM,SAAS,UAAyB;EACtC,MAAM,KAAK,KAAK,WAAU,QAAO,IAAI,OAAO,QAAQ;EACpD,MAAM,OAAO,MAAM,QAAQ,cAAc,KAAK,KAAK,KAAK,MAAM,QAAQ,YAAY,KAAK,KAAK,KAAK,KAAA;EACjG,MAAM,MAAM,KAAK;EACjB,IAAI,MAAM,SAAS,KAAK,EAAE;OACrB,IAAI,QAAQ,MAAM,QAAQ,gBAAgB,MAAM,QAAQ,cAC9C;QAAA,IAAI,SAAS,UAAU,MAAM,SAAS,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,UAAU,IAAI,IAAI,EAAE,QAC/E,MAAM,QAAQ,kBACL,IAAI,SAAS,WAAW,IAAI,aAAa,IAAI,CAAC,IAAI,SAAS,UAAU,MAAM,gBAAgB,MAAM,aAAA,CAAc,IAAI,EAAE;EAAA,OACtI;EACP,MAAM,eAAe;CACvB;CAEA,MAAM,OAAO,OAAe,GAAI,KAAK,QAAS,IAAI;CAClD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,KAAK;EAAU,UAAU;EAAG,WAAW;EAAO,cAAW;EAAiB,WAAU;EACvF,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAU;IAA+E,OAAO;KAAE,qBAAqB;KAAa,QAAQ;IAAW;IAA5J,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;KAAK,WAAU;KAA6C,UAAA;IAAS,CAAA,GACrE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;KAAK,WAAU;KACZ,UAAA,MAAM,KAAI,MAAK,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;MAAc,WAAU;MAAiD,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE;MAAI,UAAA,MAAM,IAAI,MAAMX,cAAAA,SAAS,CAAC;KAAQ,GAA1H,CAA0H,CAAC;IACnJ,CAAA,CACF;GACL,CAAA,GAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;MAAK,eAAA;MAAY,WAAU;MAA8C,OAAO;OAAE,qBAAqB;OAAa,MAAM;OAAG,OAAO;MAAE;MAAtI,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,CAAM,CAAA,GACN,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;OAAK,WAAU;OAAkB,UAAA,MAAM,KAAI,MAAK,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;QAAc,WAAU;QAA4C,OAAO;SAAE,MAAM,IAAI,CAAC;SAAG,SAAS;QAAI;OAAI,GAAjG,CAAiG,CAAC;MAAO,CAAA,CACjK;;KACJ,KAAK,KAAI,QAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAD;MAA2B,GAAI;MAAY;MAAU;MAAK,QAAQ,IAAI,OAAO;KAAW,GAArE,IAAI,EAAiE,CAAC;KACzG,KAAK,WAAW,KAAK,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;MAAG,WAAU;MAA4C,UAAA;KAAgC,CAAA;IAC5G;GACA,CAAA,CAAA;;CACF,CAAA;AAET;AAEA,SAAS,aAAa,EAAE,OAAO,KAAK,QAAQ,KAAK,UAAU,UAAU,cAAc,eAAe,UAAU,aAA2G;CACrN,MAAM,SAAS,EAAE,aAAa,GAAG,IAAI,QAAQ,KAAK,EAAE,IAAI;CACxD,MAAM,gBAAgB,MAAe,SAAqB,UACxD,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;EAAQ,MAAK;EAAS,cAAY,GAAG,OAAO,aAAa,SAAS,GAAG;EAAS,WAAU;EAAgG,UAAS,UAAS;GAAE,MAAM,gBAAgB;GAAG,QAAQ;EAAG;EAC9O,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACO,aAAAA,MAAD,EAAM,MAAM,OAAOK,sBAAAA,gBAAgBC,uBAAAA,eAAiB,CAAA;CAC9C,CAAA;CAEV,MAAM,WAAW,8DAA8D,SAAS,cAAc;CAEtG,IAAI,IAAI,SAAS,SAAS;EACxB,MAAM,OAAO,SAAS,IAAI,IAAI,EAAE;EAChC,MAAM,MAAM,OAAO,QAAQ,IAAI,MAAM,QAAgC,KAAK,UAAU;GAAE,GAAG;IAAM,KAAK,UAAU,QAAQ,SAAS,EAAE,KAAK,IAAI,KAAK,UAAU,QAAQ,SAAS,EAAE,MAAM,KAAK;EAAE,IAAI,CAAC,CAAC,CAAC;EAChM,MAAM,QAAQ,MAAM,SAAS,IAAI,MAAM,EAAG;EAC1C,MAAM,OAAO,IAAI,MAAM,GAAG,EAAE;EAC5B,MAAM,MAAM,MAAM,SAAS,IAAI,IAAI,KAAK;EACxC,MAAM,OAAO,IAAI,MAAM,QAAQ,OAAO,SAAS,QAAQ,KAAK,YAAY,CAAC;EACzE,MAAM,eAAe,IAAI,MAAM,QAAO,SAAQ,SAAS,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;EACzE,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,MAAK;GAAS,UAAU;GAAI,eAAa,IAAI;GAAI,iBAAe;GAAQ,WAAW;GAAU,OAAO;IAAE,qBAAqB;IAAa,QAAQ;GAAW;GAAG,eAAe,SAAS,IAAI,EAAE;GAAjM,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAU;IAAuC,OAAO;IAA7D,UAAA;KACG,aAAa,YAAY,cAAc,IAAI,EAAE,GAAG,gBAAgB;KACjE,iBAAA,GAAA,kBAAA,IAAA,CAAClB,qBAAAA,QAAD;MAAQ,MAAMf,mBAAAA;MAAY,OAAOgB,cAAAA,eAAe;KAAK,CAAA;KACrD,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;MAAM,WAAU;MAAhB,UAAA;OAA2B,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;QAAM,WAAU;QAAhB,UAAA,CAA+B,IAAI,MAAM,QAAO,WAAe;;OAAC;OAAC,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;QAAM,WAAU;QAAyB,UAAA,IAAI,KAAK,CAAC,IAAI,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI;OAAQ,CAAA;MAAO;;KAChM,eAAe,KAAK,iBAAA,GAAA,kBAAA,KAAA,CAAAkB,kBAAAA,UAAA,EAAA,UAAA,CAAE,iBAAA,GAAA,kBAAA,IAAA,CAACnB,qBAAAA,QAAD;MAAQ,MAAMoB,0BAAAA;MAAmB,OAAM;MAAoB,OAAO,GAAG,aAAa;KAA+D,CAAA,GAAC,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;MAAM,WAAU;MAAyB,UAAA;KAAmB,CAAA,CAAG,EAAA,CAAA;IACrO;GACL,CAAA,GAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;MAAM,WAAU;MAAsB,OAAO;OAAE,MAAM,IAAI,KAAK;OAAG,OAAO,IAAI,MAAM,KAAK;OAAG,KAAK;OAAI,QAAQ;OAAG,YAAYnB,cAAAA,eAAe;OAAI,SAAS;MAAK;KAAI,CAAA;KAC9J,IAAI,MAAM,KAAI,SAAQ,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;MAAwB,WAAU;MAAsB,OAAO;OAAE,MAAM,IAAI,MAAM,SAAS,IAAI,CAAC;OAAG,OAAO,IAAI,KAAK,UAAU;OAAG,UAAU;OAAG,KAAK;OAAG,QAAQ;OAAI,YAAYA,cAAAA,eAAe;MAAG;KAAI,GAAvL,KAAK,MAAkL,CAAC;KAC1N,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;MAAU,OAAQ,QAAQ,KAAK,IAAI,MAAM,SAAS,IAAK,IAAK;MAAK,KAAM,MAAM,KAAK,IAAI,MAAM,SAAS,IAAK,IAAK;MAAK,MAAM,GAAGI,cAAAA,SAAS,IAAI,EAAE;KAAS,CAAA;IAClJ;GACF,CAAA,CAAA;;CAET;CAEA,MAAM,EAAE,SAAS;CACjB,MAAM,IAAIb,cAAAA,SAAS,IAAI;CACvB,MAAM,SAAS,KAAK,WAAW,MAAM,KAAK,IAAI,KAAK,QAAQ,IAAI,KAAA;CAC/D,MAAM,OAAQ,MAAM,SAAS,IAAI,IAAI,KAAK,IAAI,MAAM,SAAS,IAAK,IAAK;CACvE,MAAM,QAAS,KAAK,aAAa,KAAK,IAAI,MAAM,SAAS,IAAK,IAAK;CACnE,MAAM,QAAQ6B,cAAAA,QAAQ,IAAI;CAC1B,MAAM,QAAQ1B,cAAAA,eAAe,KAAK,SAAS;CAC3C,MAAM,QAAQ,KAAK,aAAa;CAChC,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,MAAK;EAAS,UAAU;EAAI,eAAa,IAAI;EAAI,iBAAe;EAAQ,WAAW;EAAU,OAAO;GAAE,qBAAqB;GAAa,QAAQ;EAAW;EAAG,eAAe,SAAS,IAAI,EAAE;EAAG,OAAO,KAAK;EAAhN,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAU;GAAuC,OAAO;GAA7D,UAAA;IACG,IAAI,aAAa,IAAI,aAAa,CAAC,UAAU,IAAI,KAAK,MAAM,SAAS,aAAa,KAAK,MAAM,GAAG,KAAK,IAAI,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAM,WAAU,kBAAmB,CAAA;IAC7I,iBAAA,GAAA,kBAAA,IAAA,CAACK,qBAAAA,QAAD;KAAQ,MAAM,cAAc;KAAI,OAAOC,cAAAA,eAAe;IAAK,CAAA;IAC1D,UAAU,OAAO,YAAY,KAAK,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,OAAD;KAAO,MAAK;KAAK,SAAQ;KAAW,UAAA,KAAK;IAAe,CAAA;IACtG,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;KAAM,WAAW,YAAY,MAAM,OAAO,KAAK;KAAkB,UAAA;IAAY,CAAA;IAC5E,OAAO,UAAU,YAAY,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;KAAM,WAAU;KAAkC,UAAA;IAAY,CAAA;IAC3F,IAAI,aAAa,KAAK,UAAU,IAAI,KAAK,MAAM,KAAK,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;KAAM,WAAU;KAAhB,UAAA,CAAwC,KAAE,IAAI,UAAiB;;IACnH,SAAS,IAAI,KAAK,MAAM,KAAK,iBAAA,GAAA,kBAAA,IAAA,CAACF,qBAAAA,QAAD;KAAQ,MAAMoB,0BAAAA;KAAmB,OAAM;KAAoB,OAAM;IAAwD,CAAA;IACtJ,SAAS,iBAAA,GAAA,kBAAA,IAAA,CAAClB,cAAAA,OAAD;KAAO,MAAK;KAAK,MAAK;KAAS,SAAQ;KAAO,UAAA;IAAY,CAAA;GACjE;EACL,CAAA,GAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,WAAU;IAAsB,OAAO;KAAE,MAAM,GAAG,KAAK;KAAI,OAAO,GAAG,MAAM;KAAI,UAAU;KAAG,KAAK;KAAG,QAAQ;KAAI,YAAY,QAAQ,uBAAuBD,cAAAA,eAAe;KAAI,SAAS,MAAM,UAAU,MAAO;IAAE;GAAI,CAAA,GAC1N,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;IAAU,OAAO;IAAM,KAAK,OAAO;IAAO,QAAQ,QAAQ;IAAI,MAAMI,cAAAA,SAAS,KAAK,UAAU;GAAI,CAAA,CAC7F;EACF,CAAA,CAAA;;AAET;;AAGA,SAAS,SAAS,EAAE,OAAO,KAAK,QAAQ,QAAwE;CAC9G,IAAI,QAAQ,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;EAAM,WAAU;EAA8D,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG;EAAI,UAAA;CAAW,CAAA;CAC3I,MAAM,WAAW,MAAM,KAAK;EAAE,OAAO,GAAG,MAAM,MAAM;EAAI,cAAc;CAAE,IAAI;EAAE,MAAM,GAAG,IAAI;EAAI,aAAa;CAAE;CAC9G,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;EAAM,WAAU;EAAwE,OAAO;EAAW,UAAA;CAAW,CAAA;AAC9H;AAEA,SAAS,WAAW,EAAE,OAAO,MAAM,MAAM,YAAuG;CAC9I,MAAM,IAAIb,cAAAA,SAAS,IAAI;CACvB,MAAM,YAAoB,CAAC;CAC3B,KAAK,IAAI,IAAI,KAAK,WAAW,MAAM,KAAK,IAAI,KAAK,QAAQ,IAAI,KAAA,GAAW,GAAG,IAAI,EAAE,WAAW,MAAM,KAAK,IAAI,EAAE,QAAQ,IAAI,KAAA,GAAW,UAAU,QAAQ,CAAC;CACvJ,MAAM,aAAa,OAAO,QAAQ,KAAK,cAAc,CAAC,CAAC;CACvD,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACG,UAAU,SAAS,KAClB,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;MAAG,WAAU;MACV,UAAA,UAAU,KAAI,MACb,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;OAAqB,WAAU;OAA/B,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;QAAQ,MAAK;QAAS,WAAU;QAAkB,eAAe,SAAS,EAAE,MAAM;QAAI,UAAAG,cAAAA,eAAe,EAAE,SAAS;OAAU,CAAA,GAC1H,iBAAA,GAAA,kBAAA,IAAA,CAACiB,aAAAA,MAAD,EAAM,MAAMM,uBAAAA,eAAiB,CAAA,CACzB;MAHK,GAAA,EAAE,MAGP,CACP;KACA,CAAA;KAEL,iBAAA,GAAA,kBAAA,KAAA,CAAC,MAAD;MAAI,WAAU;MAAkD,OAAO,KAAK;MAA5E,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAClB,qBAAAA,QAAD;OAAQ,MAAM,cAAc;OAAI,OAAOC,cAAAA,eAAe;MAAK,CAAA,GAC3D,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,WAAU;OAAY,UAAAN,cAAAA,eAAe,KAAK,SAAS;MAAQ,CAAA,CAC/D;;KACJ,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;MAAK,WAAU;MAAf,UAAA;OACE,iBAAA,GAAA,kBAAA,IAAA,CAACO,cAAAA,OAAD;QAAO,SAAQ;QAAO,MAAK;QAAM,UAAAQ,cAAAA,eAAe;OAAU,CAAA;OACzD,KAAK,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAACR,cAAAA,OAAD;QAAO,SAAQ;QAAU,MAAK;QAAM,UAAA,KAAK;OAAY,CAAA;OAClEmB,cAAAA,QAAQ,IAAI,KAAK,iBAAA,GAAA,kBAAA,IAAA,CAACnB,cAAAA,OAAD;QAAO,MAAK;QAAS,SAAQ;QAAO,MAAK;QAAK,UAAA;OAAY,CAAA;OAC5E,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;QAAM,WAAU;QAAhB,UAAA;SAAsDG,cAAAA,SAAS,KAAK,UAAU;SAAE;SAAeA,cAAAA,SAAS,MAAM,SAAS,IAAI,CAAC;QAAQ;;OACpI,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;QAAM,WAAU;QAAhB,UAAA,CAA+E,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAA,UAAO,KAAK,OAAa,CAAA,GAAC,iBAAA,GAAA,kBAAA,IAAA,CAACF,mBAAAA,YAAD;SAAY,OAAO,KAAK;SAAQ,OAAM;QAAgB,CAAA,CAAO;;MACnK;;IACF;;GACJ,QACC,iBAAA,GAAA,kBAAA,IAAA,CAACT,gBAAAA,SAAD;IAAS,SAAQ;IAAU,OAAM;IAC/B,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,KAAD;KAAG,WAAU;KAAb,UAAA;MAAuB;MAAqB,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;OAAQ,MAAK;OAAS,WAAU;OAAY,eAAe,SAAS,KAAK,MAAM;OAAI,UAAAC,cAAAA,eAAe,KAAK,SAAS;MAAU,CAAA;MAAC;MAAoB,KAAK,WAAWA,cAAAA,eAAe,MAAM,KAAK,IAAI,KAAK,QAAQ,CAAC,EAAE,aAAa,KAAK,QAAQ,IAAI;MAAU;KAAI;;GAC9R,CAAA;GAEV,MAAM,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAAC2B,kBAAAA,WAAD;IAAkB;IAAa;GAAO,CAAA;GACvD,MAAM,SAAS,iBAAA,GAAA,kBAAA,IAAA,CAACC,kBAAAA,SAAD,EAAe,KAAO,CAAA;GACrC,MAAM,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAACC,kBAAAA,QAAD,EAAc,KAAO,CAAA;GACpC,iBAAA,GAAA,kBAAA,IAAA,CAACC,gBAAAA,SAAD;IAAS,OAAO,mBAAmB,WAAW,OAAO;IAAI,aAAa,MAAM;IAC1E,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,mBAAAA,YAAD;KAAY,cAAa,QAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;MAAM,WAAU;MAAW,UAAA;KAAU,CAAA;KAAG,OAAO,WAAW,KAAK,CAAC,KAAK,YAAY;MAAE;MAAK;KAAM,EAAE;IAAI,CAAA;GAC7H,CAAA;GACR,KAAK,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAACD,gBAAAA,SAAD;IAAS,OAAM;IAAyB,aAAa;IAAO,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACE,kBAAAA,WAAD;KAAW,UAAS;KAAO,QAAQ,KAAK,UAAU,KAAK,MAAM,MAAM,CAAC;KAAG,sBAAsB;KAAG,UAAA;IAAU,CAAA;GAAU,CAAA;GAC9L,iBAAA,GAAA,kBAAA,IAAA,CAACF,gBAAAA,SAAD;IAAS,OAAO,aAAa,OAAO,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO;IAAI,aAAa;IACpF,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,mBAAAA,YAAD;KAAY,cAAa,QAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;MAAM,WAAU;MAAW,UAAA;KAAU,CAAA;KAAG,OAAO,OAAO,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,YAAY;MAAE;MAAK;KAAM,EAAE;IAAI,CAAA;GACtJ,CAAA;EACN;;AAET"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Trace } from './model.js';
|
|
2
|
+
export declare function OtelTraceDetail({ trace: TRACE, selectedSpanId, onSelectSpan }: {
|
|
3
|
+
trace: Trace;
|
|
4
|
+
selectedSpanId?: string;
|
|
5
|
+
onSelectSpan: (id: string) => void;
|
|
6
|
+
}): import("react").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=OtelTraceDetail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OtelTraceDetail.d.ts","sourceRoot":"","sources":["../../../../src/data/traces/otel/OtelTraceDetail.tsx"],"names":[],"mappings":"AAmCA,OAAO,EAkBL,KAAK,KAAK,EACX,MAAM,SAAS,CAAC;AAQjB,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,+BA2F5J"}
|