@tracepanel/js 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +221 -12
- package/dist/agent.d.ts +5 -1
- package/dist/agent.js +12 -3
- package/dist/agent.js.map +1 -1
- package/dist/aws.d.ts +27 -0
- package/dist/aws.js +368 -0
- package/dist/aws.js.map +1 -0
- package/dist/bun.js +6 -82
- package/dist/bun.js.map +1 -1
- package/dist/calls.d.ts +5 -0
- package/dist/calls.js +7 -0
- package/dist/calls.js.map +1 -1
- package/dist/config.d.ts +7 -0
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/explain.d.ts +5 -0
- package/dist/explain.js +56 -7
- package/dist/explain.js.map +1 -1
- package/dist/fastify.d.ts +2 -0
- package/dist/fastify.js +100 -0
- package/dist/fastify.js.map +1 -0
- package/dist/frameworks.js +3 -0
- package/dist/frameworks.js.map +1 -1
- package/dist/hono.d.ts +2 -0
- package/dist/hono.js +63 -0
- package/dist/hono.js.map +1 -0
- package/dist/koa.d.ts +2 -0
- package/dist/koa.js +119 -0
- package/dist/koa.js.map +1 -0
- package/dist/llm.d.ts +20 -0
- package/dist/llm.js +632 -0
- package/dist/llm.js.map +1 -0
- package/dist/memory.d.ts +69 -0
- package/dist/memory.js +203 -0
- package/dist/memory.js.map +1 -0
- package/dist/model.d.ts +22 -1
- package/dist/model.js.map +1 -1
- package/dist/next.js +4 -4
- package/dist/next.js.map +1 -1
- package/dist/processor.d.ts +40 -4
- package/dist/processor.js +156 -29
- package/dist/processor.js.map +1 -1
- package/dist/profile.d.ts +34 -8
- package/dist/profile.js +98 -13
- package/dist/profile.js.map +1 -1
- package/dist/queries.d.ts +20 -0
- package/dist/queries.js +75 -0
- package/dist/queries.js.map +1 -0
- package/dist/respond.d.ts +12 -0
- package/dist/respond.js +85 -0
- package/dist/respond.js.map +1 -0
- package/dist/setup.js +22 -5
- package/dist/setup.js.map +1 -1
- package/dist/sql.d.ts +1 -0
- package/dist/sql.js +11 -2
- package/dist/sql.js.map +1 -1
- package/dist/sqlite.d.ts +13 -0
- package/dist/sqlite.js +291 -0
- package/dist/sqlite.js.map +1 -0
- package/dist/stack.d.ts +3 -1
- package/dist/stack.js +30 -6
- package/dist/stack.js.map +1 -1
- package/dist/testing.d.ts +128 -0
- package/dist/testing.js +362 -0
- package/dist/testing.js.map +1 -0
- package/dist/transactions.d.ts +11 -1
- package/dist/transactions.js +70 -34
- package/dist/transactions.js.map +1 -1
- package/dist/view.d.ts +17 -0
- package/dist/view.js +71 -0
- package/dist/view.js.map +1 -0
- package/dist/vitest-setup.d.ts +1 -0
- package/dist/vitest-setup.js +63 -0
- package/dist/vitest-setup.js.map +1 -0
- package/dist/vitest.d.ts +57 -0
- package/dist/vitest.js +130 -0
- package/dist/vitest.js.map +1 -0
- package/dist/widget.d.ts +16 -0
- package/dist/widget.js +33 -1
- package/dist/widget.js.map +1 -1
- package/package.json +69 -4
package/dist/processor.js
CHANGED
|
@@ -2,21 +2,29 @@
|
|
|
2
2
|
// each request's spans become one Tracepanel trace, sent to the agent when the request's span ends.
|
|
3
3
|
import { createHash } from "node:crypto";
|
|
4
4
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
5
|
+
import { awsCall, isAws } from "./aws.js";
|
|
5
6
|
import { httpCall, isMongo, isRedis, mongoCall, redisCall } from "./calls.js";
|
|
6
7
|
import { CALL_ORIGIN } from "./fetch.js";
|
|
7
8
|
import { withVersion } from "./frameworks.js";
|
|
9
|
+
import { ANTHROPIC_SCOPE, KIND as LLM } from "./llm.js";
|
|
8
10
|
import { Locals } from "./locals.js";
|
|
9
11
|
import { countDropped, limited, MAX_LOGS, micros, newId, } from "./model.js";
|
|
10
|
-
import { ASKED, ATTRIBUTE, available, Profiler, wanted } from "./profile.js";
|
|
12
|
+
import { ASKED, ATTRIBUTE, asking, available, Profiler, wanted } from "./profile.js";
|
|
13
|
+
import { QUERY_ORIGIN } from "./queries.js";
|
|
11
14
|
import { fingerprint, spanName, statement } from "./sql.js";
|
|
12
15
|
import { frames, madeAt } from "./stack.js";
|
|
13
16
|
import { CONTROL } from "./transactions.js";
|
|
17
|
+
import { VIEW } from "./view.js";
|
|
18
|
+
/** The kinds of work a trace() or an integration starts a trace of: tracepanel.kind on its root span. */
|
|
19
|
+
const WORK = new Set(["command", "task", "test"]);
|
|
14
20
|
// A request's span can end after the response does (Express ends an async handler's span when its promise settles):
|
|
15
21
|
// the trace goes out this long after the request's span ends, with the spans that ended meanwhile.
|
|
16
22
|
const LATE_SPANS_MS = 25;
|
|
17
23
|
// A request whose root span never ends (the client went away mid-stream and the framework didn't end it) is dropped
|
|
18
24
|
// after this long, so the open traces don't grow for ever.
|
|
19
25
|
const ABANDONED_MS = 10 * 60 * 1000;
|
|
26
|
+
// What serves a request, below the framework that answers it.
|
|
27
|
+
const SERVERS = new Set(["node:http", "Bun.serve"]);
|
|
20
28
|
// Spans that are bookkeeping, not work: Express's middleware and routers, a driver's connection checkouts, and
|
|
21
29
|
// Nest's inner handler span (the same call as its request context span, which names the controller).
|
|
22
30
|
const SKIPPED_EXPRESS = new Set(["middleware", "router"]);
|
|
@@ -44,6 +52,8 @@ const NEXT_HANDLERS = new Set([
|
|
|
44
52
|
// Requests that aren't the app's work: Next.js's for its own assets and dev tooling, and the ones to Tracepanel's
|
|
45
53
|
// console on the app's own origin (the widget, the page's recording sending its traces).
|
|
46
54
|
const INTERNAL = /^\/(_next|__nextjs|__tracepanel__\/)/;
|
|
55
|
+
// Prisma's span of an interactive transaction, $transaction(async (tx) => ...): the app's callback runs in its context.
|
|
56
|
+
const ORM_TRANSACTIONS = new Set(["prisma:client:transaction"]);
|
|
47
57
|
// Prisma's own spans besides the operation: its SQL goes through the driver adapter's driver (pg, mysql2), recorded
|
|
48
58
|
// there; the rest is its query engine's bookkeeping.
|
|
49
59
|
const SKIPPED_NAMES = /^(pg\.connect|pg-pool\.connect|mysql2?\.connect|prisma:(?!client:operation$))/;
|
|
@@ -70,7 +80,20 @@ function skipped(span) {
|
|
|
70
80
|
return (SKIPPED_EXPRESS.has(String(attrs["express.type"])) ||
|
|
71
81
|
SKIPPED_NEST.has(String(attrs["nestjs.type"])) ||
|
|
72
82
|
SKIPPED_NEXT.has(String(attrs["next.span_type"])) ||
|
|
73
|
-
SKIPPED_NAMES.test(span.name)
|
|
83
|
+
SKIPPED_NAMES.test(span.name) ||
|
|
84
|
+
// Anthropic's SDK's own span of a call: the LLM call's span (llm.ts) is the call.
|
|
85
|
+
span.instrumentationScope?.name.startsWith(ANTHROPIC_SCOPE) === true);
|
|
86
|
+
}
|
|
87
|
+
/** A value an instrumentation kept as JSON (an attribute holds no objects); undefined when there is none. */
|
|
88
|
+
function parsed(value) {
|
|
89
|
+
if (typeof value !== "string")
|
|
90
|
+
return undefined;
|
|
91
|
+
try {
|
|
92
|
+
return JSON.parse(value);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
74
97
|
}
|
|
75
98
|
function statementOf(attrs) {
|
|
76
99
|
const text = first(attrs, "db.query.text", "db.statement");
|
|
@@ -89,7 +112,9 @@ export class TracepanelProcessor {
|
|
|
89
112
|
profiler;
|
|
90
113
|
/** What reads an error's local variables: made as the first trace starts; null where it can't be. */
|
|
91
114
|
locals;
|
|
92
|
-
constructor(config,
|
|
115
|
+
constructor(config,
|
|
116
|
+
/** Where the traces go: a test runner's integration puts its own in front of the agent's (testing.ts). */
|
|
117
|
+
sink) {
|
|
93
118
|
this.config = config;
|
|
94
119
|
this.sink = sink;
|
|
95
120
|
this.profiler =
|
|
@@ -104,15 +129,16 @@ export class TracepanelProcessor {
|
|
|
104
129
|
if (local) {
|
|
105
130
|
// A request, or work outside one that trace() or a task queue started: tracepanel.kind says which.
|
|
106
131
|
const kind = attrsOf(span)["tracepanel.kind"];
|
|
107
|
-
if (span.kind !== SpanKind.SERVER && kind
|
|
132
|
+
if (span.kind !== SpanKind.SERVER && !WORK.has(String(kind)))
|
|
108
133
|
return;
|
|
109
134
|
if (INTERNAL.test(String(first(attrsOf(span), "http.target", "url.path") ?? "")))
|
|
110
135
|
return;
|
|
111
136
|
this.dropAbandoned();
|
|
112
137
|
building = this.start();
|
|
113
|
-
if (kind === "command" || kind === "task")
|
|
138
|
+
if (kind === "command" || kind === "task" || kind === "test")
|
|
114
139
|
building.trace.kind = kind;
|
|
115
140
|
building.rootSpanId = context.spanId;
|
|
141
|
+
building.traceId = context.traceId;
|
|
116
142
|
const rootAttrs = attrsOf(span);
|
|
117
143
|
building.request = requestKey(first(rootAttrs, "http.request.method", "http.method"), first(rootAttrs, "http.target", "url.path"));
|
|
118
144
|
this.open.set(context.spanId, building);
|
|
@@ -120,22 +146,39 @@ export class TracepanelProcessor {
|
|
|
120
146
|
this.profiler?.enter(building);
|
|
121
147
|
// The request asked for it: its root span says so (Node's HTTP server, Bun.serve), or the context the framework
|
|
122
148
|
// started it in (Next.js).
|
|
123
|
-
const asked = rootAttrs[ATTRIBUTE]
|
|
124
|
-
|
|
125
|
-
|
|
149
|
+
const asked = asking(rootAttrs[ATTRIBUTE]) ?? asking(parentContext.getValue(ASKED));
|
|
150
|
+
const mode = this.profiler ? wanted(this.config, asked) : undefined;
|
|
151
|
+
if (mode)
|
|
152
|
+
building.recording = this.profiler?.start(building, mode === "memory");
|
|
126
153
|
}
|
|
127
154
|
if (!building)
|
|
128
155
|
return;
|
|
129
156
|
this.owner.set(context.spanId, building);
|
|
130
|
-
const { origin: found, caller } = madeAt(this.config.root);
|
|
131
|
-
if (found)
|
|
132
|
-
building.lastOrigin = found;
|
|
133
|
-
if (caller)
|
|
134
|
-
building.callers.set(context.spanId, caller);
|
|
135
157
|
const attrs = attrsOf(span);
|
|
158
|
+
const here = madeAt(this.config.root);
|
|
159
|
+
// A query whose stack has none of the app's code (Bun's, no async frames) was made where the app last called its
|
|
160
|
+
// ORM, in this context (queries.ts).
|
|
161
|
+
const query = here.origin || !first(attrs, "db.system.name", "db.system") ? undefined : queryOrigin(parentContext);
|
|
162
|
+
const found = here.origin ?? query?.origin ?? null;
|
|
163
|
+
const ormHere = here.orm ?? query?.orm ?? null;
|
|
164
|
+
// A driver's call made in a callback (pg-pool's query, once it has a connection) has neither the app's frames nor
|
|
165
|
+
// its ORM's on the stack: it went through the ORM of the app's last call, as it was made where that one was.
|
|
166
|
+
const orm = found ? ormHere : (ormHere ?? building.lastOrm);
|
|
167
|
+
if (found) {
|
|
168
|
+
building.lastOrigin = found;
|
|
169
|
+
building.lastOrm = ormHere;
|
|
170
|
+
}
|
|
171
|
+
if (here.caller && !found)
|
|
172
|
+
building.callers.set(context.spanId, here.caller);
|
|
173
|
+
if (orm)
|
|
174
|
+
building.orms.set(context.spanId, orm);
|
|
136
175
|
if (!local && parent && skipped(span)) {
|
|
137
176
|
building.ids.set(context.spanId, building.ids.get(parent.spanId) ?? null);
|
|
138
177
|
building.passedOrigins.set(context.spanId, found ?? building.passedOrigins.get(parent.spanId) ?? null);
|
|
178
|
+
building.skippedParents.set(context.spanId, {
|
|
179
|
+
parent: parent.spanId,
|
|
180
|
+
ormTransaction: ORM_TRANSACTIONS.has(span.name),
|
|
181
|
+
});
|
|
139
182
|
return;
|
|
140
183
|
}
|
|
141
184
|
if (attrs["tracepanel.span_kind"] === "transaction")
|
|
@@ -152,12 +195,34 @@ export class TracepanelProcessor {
|
|
|
152
195
|
if (!parent && attrs["next.span_type"] === "BaseServer.handleRequest")
|
|
153
196
|
building.framework = "Next.js";
|
|
154
197
|
building.ids.set(context.spanId, newId());
|
|
198
|
+
if (parent && building.transactions.has(context.spanId))
|
|
199
|
+
this.adopt(building, parent.spanId, context.spanId);
|
|
155
200
|
// A span started outside the app's code (undici's, under Next's fetch span) is the call the app made there.
|
|
156
201
|
// So is one a call made from its context, which took the app's line as the app called it (fetch()).
|
|
157
202
|
const passed = (parent ? building.passedOrigins.get(parent.spanId) : undefined) ??
|
|
158
203
|
parentContext.getValue(CALL_ORIGIN);
|
|
159
204
|
building.origins.set(context.spanId, found ?? passed ?? building.lastOrigin);
|
|
160
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* A transaction an ORM began from its own span (Prisma's interactive $transaction: BEGIN is sent from its engine,
|
|
208
|
+
* under its prisma:client:transaction span, while the app's callback runs in that span's context): what the callback
|
|
209
|
+
* does (its queries, HTTP calls, jobs) goes inside the transaction span, as it does when the app sends BEGIN itself.
|
|
210
|
+
*/
|
|
211
|
+
adopt(building, parentSpanId, spanId) {
|
|
212
|
+
let at = parentSpanId;
|
|
213
|
+
while (at !== undefined) {
|
|
214
|
+
const skippedSpan = building.skippedParents.get(at);
|
|
215
|
+
if (!skippedSpan)
|
|
216
|
+
return;
|
|
217
|
+
if (skippedSpan.ormTransaction) {
|
|
218
|
+
building.fixedParents.set(spanId, building.ids.get(parentSpanId) ?? null);
|
|
219
|
+
building.ids.set(at, building.ids.get(spanId) ?? null);
|
|
220
|
+
skippedSpan.ormTransaction = false;
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
at = skippedSpan.parent;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
161
226
|
onEnd(span) {
|
|
162
227
|
if (process.env.TRACEPANEL_DEBUG) {
|
|
163
228
|
process.stderr.write(`[tracepanel] ${span.name} kind=${span.kind} parent=${span.parentSpanContext?.spanId ?? "-"} ${JSON.stringify(span.attributes)}\n`);
|
|
@@ -178,8 +243,12 @@ export class TracepanelProcessor {
|
|
|
178
243
|
setTimeout(() => {
|
|
179
244
|
this.close(building);
|
|
180
245
|
this.finish(building, span);
|
|
181
|
-
if (sampled?.profile)
|
|
246
|
+
if (sampled?.profile) {
|
|
182
247
|
building.trace.profile = sampled.profile;
|
|
248
|
+
const gc = sampled.gc?.();
|
|
249
|
+
if (gc)
|
|
250
|
+
sampled.profile.gc = gc;
|
|
251
|
+
}
|
|
183
252
|
if (sampled?.dropped)
|
|
184
253
|
countDropped(building.trace, "tracepanel.dropped_samples", sampled.dropped);
|
|
185
254
|
this.sink.submit(limited(building.trace));
|
|
@@ -212,6 +281,19 @@ export class TracepanelProcessor {
|
|
|
212
281
|
const building = this.owner.get(context.spanId);
|
|
213
282
|
return building ? { building, spanId: building.ids.get(context.spanId) ?? null } : undefined;
|
|
214
283
|
}
|
|
284
|
+
/** The trace being built from an OTel span, while it is: a test's, its spans so far. */
|
|
285
|
+
openTrace(spanId) {
|
|
286
|
+
return this.owner.get(spanId)?.trace;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* The traces of this W3C trace id still being built, or waiting for their late spans: the requests a test made of
|
|
290
|
+
* the app, their traces not yet sent. `except`: the OTel id of a root span left out (the test's own, running).
|
|
291
|
+
*/
|
|
292
|
+
building(traceId, except) {
|
|
293
|
+
return [...this.open.values()]
|
|
294
|
+
.filter((building) => building.traceId === traceId && building.rootSpanId !== except)
|
|
295
|
+
.map((building) => building.trace);
|
|
296
|
+
}
|
|
215
297
|
/** What the widget shows before the request's span ends: its id, its queries so far and their time. */
|
|
216
298
|
timing(request) {
|
|
217
299
|
const building = this.current()?.building ?? (request ? this.waiting(request) : undefined);
|
|
@@ -294,10 +376,13 @@ export class TracepanelProcessor {
|
|
|
294
376
|
else
|
|
295
377
|
trace.logs.push({ ...log, span_id: current.spanId });
|
|
296
378
|
}
|
|
297
|
-
/**
|
|
379
|
+
/**
|
|
380
|
+
* The framework the active request runs on, unless a more specific one (Nest on Express) already said so. A server
|
|
381
|
+
* (Node's, Bun.serve) gives way to the framework on it (Hono).
|
|
382
|
+
*/
|
|
298
383
|
setFramework(name) {
|
|
299
384
|
const current = this.current();
|
|
300
|
-
if (current && current.building.framework
|
|
385
|
+
if (current && SERVERS.has(current.building.framework))
|
|
301
386
|
current.building.framework = name;
|
|
302
387
|
}
|
|
303
388
|
/** The route pattern the framework matched, when the root span doesn't carry one (Nitro). */
|
|
@@ -338,11 +423,13 @@ export class TracepanelProcessor {
|
|
|
338
423
|
ids: new Map(),
|
|
339
424
|
origins: new Map(),
|
|
340
425
|
callers: new Map(),
|
|
426
|
+
orms: new Map(),
|
|
341
427
|
queries: 0,
|
|
342
428
|
dbTime: 0,
|
|
343
429
|
framework: "node:http",
|
|
344
430
|
startedMs: performance.now(),
|
|
345
431
|
rootSpanId: "",
|
|
432
|
+
traceId: "",
|
|
346
433
|
route: null,
|
|
347
434
|
request: "",
|
|
348
435
|
answered: false,
|
|
@@ -351,8 +438,11 @@ export class TracepanelProcessor {
|
|
|
351
438
|
expressHandlers: new Set(),
|
|
352
439
|
transactions: new Set(),
|
|
353
440
|
passedOrigins: new Map(),
|
|
441
|
+
skippedParents: new Map(),
|
|
442
|
+
fixedParents: new Map(),
|
|
354
443
|
parents: new Map(),
|
|
355
444
|
lastOrigin: null,
|
|
445
|
+
lastOrm: null,
|
|
356
446
|
};
|
|
357
447
|
}
|
|
358
448
|
/** A span as Tracepanel draws it: the request, a route handler (view), a statement (sql), an outgoing call. */
|
|
@@ -361,7 +451,11 @@ export class TracepanelProcessor {
|
|
|
361
451
|
const id = building.ids.get(context.spanId);
|
|
362
452
|
if (!id)
|
|
363
453
|
return;
|
|
364
|
-
const parentId = root
|
|
454
|
+
const parentId = root
|
|
455
|
+
? null
|
|
456
|
+
: building.fixedParents.has(context.spanId)
|
|
457
|
+
? (building.fixedParents.get(context.spanId) ?? null)
|
|
458
|
+
: (building.ids.get(span.parentSpanContext?.spanId ?? "") ?? null);
|
|
365
459
|
if (!root && parentId === null)
|
|
366
460
|
return;
|
|
367
461
|
const attrs = attrsOf(span);
|
|
@@ -379,15 +473,23 @@ export class TracepanelProcessor {
|
|
|
379
473
|
// A database call none of the app's code made: the library code that asked for it, as the Python SDK records it.
|
|
380
474
|
const caller = building.callers.get(context.spanId);
|
|
381
475
|
const asked = codeOrigin === null && caller ? { "code.caller": caller } : {};
|
|
476
|
+
const orm = building.orms.get(context.spanId);
|
|
382
477
|
const sql = isRedis(attrs) || isMongo(attrs) ? "" : statementOf(attrs);
|
|
383
478
|
if (root) {
|
|
384
|
-
converted.kind = { http: "http", task: "task.run", command: "command" }[building.trace.kind];
|
|
479
|
+
converted.kind = { http: "http", task: "task.run", command: "command", test: "function" }[building.trace.kind];
|
|
385
480
|
}
|
|
386
481
|
else if (attrs["express.type"] === "request_handler") {
|
|
387
482
|
converted.kind = "view";
|
|
388
483
|
converted.name = String(attrs["express.name"] ?? span.name);
|
|
389
484
|
building.trace.attrs["code.view"] = converted.name;
|
|
390
485
|
}
|
|
486
|
+
else if (attrs["tracepanel.span_kind"] === VIEW) {
|
|
487
|
+
// A route's handler in Fastify, Koa or Hono (view.ts): named by its route, where the app added it if known.
|
|
488
|
+
converted.kind = "view";
|
|
489
|
+
converted.name = String(attrs["code.view"] ?? span.name);
|
|
490
|
+
converted.attrs = attrs["code.origin"] ? { "code.origin": attrs["code.origin"] } : {};
|
|
491
|
+
building.trace.attrs["code.view"] = converted.name;
|
|
492
|
+
}
|
|
391
493
|
else if (NEXT_HANDLERS.has(String(attrs["next.span_type"]))) {
|
|
392
494
|
converted.kind = "view";
|
|
393
495
|
converted.name = String(first(attrs, "next.route", "next.page") ?? span.name);
|
|
@@ -410,7 +512,19 @@ export class TracepanelProcessor {
|
|
|
410
512
|
else if (attrs["tracepanel.span_kind"] === "transaction") {
|
|
411
513
|
converted.kind = "transaction";
|
|
412
514
|
const { "tracepanel.span_kind": _, ...own } = attrs;
|
|
413
|
-
|
|
515
|
+
// Begun through an ORM (Prisma's $transaction, Drizzle's db.transaction()): db.client names it, as a query's does.
|
|
516
|
+
converted.attrs = { ...own, ...(orm ? { "db.client": orm } : {}), "code.origin": codeOrigin, ...asked };
|
|
517
|
+
}
|
|
518
|
+
else if (attrs["tracepanel.span_kind"] === LLM) {
|
|
519
|
+
converted.kind = LLM;
|
|
520
|
+
const { "tracepanel.span_kind": _, ...own } = attrs;
|
|
521
|
+
converted.attrs = { ...own, "code.origin": codeOrigin };
|
|
522
|
+
}
|
|
523
|
+
else if (isAws(attrs)) {
|
|
524
|
+
const call = awsCall(attrs);
|
|
525
|
+
converted.kind = call.kind;
|
|
526
|
+
converted.name = call.name;
|
|
527
|
+
converted.attrs = { ...call.attrs, "code.origin": codeOrigin };
|
|
414
528
|
}
|
|
415
529
|
else if (isRedis(attrs)) {
|
|
416
530
|
const call = redisCall(attrs, span.name);
|
|
@@ -422,7 +536,7 @@ export class TracepanelProcessor {
|
|
|
422
536
|
const call = mongoCall(attrs, span.name);
|
|
423
537
|
converted.kind = "mongodb";
|
|
424
538
|
converted.name = call.name;
|
|
425
|
-
converted.attrs = { ...call.attrs, "code.origin": codeOrigin, ...asked };
|
|
539
|
+
converted.attrs = { ...call.attrs, ...(orm ? { "db.client": orm } : {}), "code.origin": codeOrigin, ...asked };
|
|
426
540
|
}
|
|
427
541
|
else if (span.name === "prisma:client:operation") {
|
|
428
542
|
converted.name = `prisma ${attrs.model ? `${attrs.model}.` : ""}${attrs.method ?? "operation"}`;
|
|
@@ -431,7 +545,7 @@ export class TracepanelProcessor {
|
|
|
431
545
|
else if (sql) {
|
|
432
546
|
converted.kind = "sql";
|
|
433
547
|
converted.name = spanName(sql);
|
|
434
|
-
converted.attrs = { ...this.sqlAttrs(attrs, sql, codeOrigin), ...asked };
|
|
548
|
+
converted.attrs = { ...this.sqlAttrs(attrs, sql, codeOrigin, orm), ...asked };
|
|
435
549
|
building.queries += 1;
|
|
436
550
|
building.dbTime += converted.duration;
|
|
437
551
|
}
|
|
@@ -448,19 +562,25 @@ export class TracepanelProcessor {
|
|
|
448
562
|
building.trace.spans.push(converted);
|
|
449
563
|
this.collectErrors(building, span, id);
|
|
450
564
|
}
|
|
451
|
-
|
|
565
|
+
/** A statement's attributes. `orm`: the ORM it went through, which db.client names instead of the driver. */
|
|
566
|
+
sqlAttrs(attrs, sql, codeOrigin, orm) {
|
|
452
567
|
const system = String(first(attrs, "db.system.name", "db.system") ?? "");
|
|
453
568
|
// pg reports the parameters with enhancedDatabaseReporting: the same statement with the same values is a
|
|
454
|
-
// duplicate, the same statement with other values an N+1 candidate.
|
|
455
|
-
const values = first(attrs, "db.postgresql.values", "db.query.parameter");
|
|
456
|
-
// What EXPLAIN binds back: pg's values; mysql2 writes them into the statement itself.
|
|
569
|
+
// duplicate, the same statement with other values an N+1 candidate. SQLite's (sqlite.ts) come as JSON.
|
|
570
|
+
const values = first(attrs, "db.postgresql.values", "db.query.parameter") ?? parsed(attrs["tracepanel.db.params"]);
|
|
571
|
+
// What EXPLAIN binds back: pg's values, SQLite's; mysql2 writes them into the statement itself.
|
|
457
572
|
const params = Array.isArray(values) ? values : system === "mysql" ? [] : undefined;
|
|
573
|
+
const driver = attrs["tracepanel.db.client"];
|
|
574
|
+
const namespace = attrs["db.namespace"];
|
|
575
|
+
const rows = attrs["db.response.returned_rows"];
|
|
458
576
|
return {
|
|
459
577
|
...(params ? { "db.params": params } : {}),
|
|
460
|
-
"db.client": system === "postgresql" ? "pg" : system,
|
|
578
|
+
"db.client": orm ?? (typeof driver === "string" ? driver : system === "postgresql" ? "pg" : system),
|
|
461
579
|
"db.system": system,
|
|
462
580
|
"db.vendor": system,
|
|
463
581
|
"db.alias": "default",
|
|
582
|
+
...(system === "sqlite" && typeof namespace === "string" ? { "db.namespace": namespace } : {}),
|
|
583
|
+
...(typeof rows === "number" ? { "db.response.returned_rows": rows } : {}),
|
|
464
584
|
"db.statement": statement(sql),
|
|
465
585
|
"db.fingerprint": fingerprint(sql),
|
|
466
586
|
"db.params_hash": values === undefined ? null : createHash("sha1").update(JSON.stringify(values)).digest("hex").slice(0, 12),
|
|
@@ -529,7 +649,10 @@ export class TracepanelProcessor {
|
|
|
529
649
|
if (root.parentSpanContext?.isRemote)
|
|
530
650
|
tr.attrs["w3c.parent_span_id"] = root.parentSpanContext.spanId;
|
|
531
651
|
}
|
|
532
|
-
/**
|
|
652
|
+
/**
|
|
653
|
+
* A command (trace()), a task (a queue's job) or a test: named as it was started, its task.* attributes kept (a
|
|
654
|
+
* test's test.* and code.*: which test, where).
|
|
655
|
+
*/
|
|
533
656
|
finishWork(building, root) {
|
|
534
657
|
const attrs = attrsOf(root);
|
|
535
658
|
const tr = building.trace;
|
|
@@ -543,12 +666,13 @@ export class TracepanelProcessor {
|
|
|
543
666
|
rootSpan.name = tr.name;
|
|
544
667
|
rootSpan.attrs = {};
|
|
545
668
|
}
|
|
546
|
-
const
|
|
669
|
+
const kept = tr.kind === "test" ? /^(test|code)\./ : /^task\./;
|
|
670
|
+
const own = Object.fromEntries(Object.entries(attrs).filter(([key]) => kept.test(key)));
|
|
547
671
|
tr.attrs = {
|
|
548
672
|
...tr.attrs,
|
|
549
673
|
...own,
|
|
550
674
|
"service.name": this.config.service,
|
|
551
|
-
"service.role": tr.kind === "task" ? "worker" : "command",
|
|
675
|
+
"service.role": tr.kind === "task" ? "worker" : tr.kind === "test" ? "test" : "command",
|
|
552
676
|
"telemetry.sdk.language": "nodejs",
|
|
553
677
|
"process.runtime.name": process.versions.bun ? "bun" : "node",
|
|
554
678
|
"process.runtime.version": process.versions.bun ?? process.versions.node,
|
|
@@ -556,6 +680,9 @@ export class TracepanelProcessor {
|
|
|
556
680
|
};
|
|
557
681
|
}
|
|
558
682
|
}
|
|
683
|
+
function queryOrigin(parentContext) {
|
|
684
|
+
return parentContext.getValue(QUERY_ORIGIN);
|
|
685
|
+
}
|
|
559
686
|
function requestKey(method, target) {
|
|
560
687
|
return `${String(method ?? "GET").toUpperCase()} ${String(target ?? "/")}`;
|
|
561
688
|
}
|
package/dist/processor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../src/processor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../src/processor.ts"],"names":[],"mappings":"AAAA,oHAAoH;AACpH,oGAAoG;AAEpG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAgB,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGnF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAEL,YAAY,EAEZ,OAAO,EACP,QAAQ,EACR,MAAM,EACN,KAAK,GAGN,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,EAAE,MAAM,cAAc,CAAC;AACrG,OAAO,EAAE,YAAY,EAAoB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,yGAAyG;AACzG,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAuDlD,oHAAoH;AACpH,mGAAmG;AACnG,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,oHAAoH;AACpH,2DAA2D;AAC3D,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpC,8DAA8D;AAC9D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AACpD,+GAA+G;AAC/G,qGAAqG;AACrG,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;AAC1D,gGAAgG;AAChG,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,mCAAmC;IACnC,sCAAsC;IACtC,8BAA8B;IAC9B,uCAAuC;IACvC,oCAAoC;IACpC,gCAAgC;IAChC,qBAAqB;IACrB,kCAAkC;IAClC,oGAAoG;IACpG,iBAAiB;CAClB,CAAC,CAAC;AACH,0FAA0F;AAC1F,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,yBAAyB;IACzB,kCAAkC;IAClC,2BAA2B;IAC3B,uBAAuB;CACxB,CAAC,CAAC;AACH,kHAAkH;AAClH,yFAAyF;AACzF,MAAM,QAAQ,GAAG,sCAAsC,CAAC;AACxD,wHAAwH;AACxH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC;AAChE,oHAAoH;AACpH,qDAAqD;AACrD,MAAM,aAAa,GAAG,+EAA+E,CAAC;AAEtG,SAAS,OAAO,CAAC,IAA4B;IAC3C,OAAO,EAAE,GAAI,IAAqB,CAAC,UAAU,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,KAAK,CAAC,KAAY,EAAE,GAAG,IAAc;IAC5C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,IAAkB;IACpC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,OAAO,CAAC,IAAkB;IACjC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,OAAO,CAAC,IAA4B;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,CACL,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QAClD,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAC9C,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACjD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7B,kFAAkF;QACjF,IAAqB,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,IAAI,CACvF,CAAC;AACJ,CAAC;AAED,6GAA6G;AAC7G,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAY;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;IAC3D,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,OAAO,mBAAmB;IAaX,MAAM;IAEhB,IAAI;IAdb,4DAA4D;IAC3C,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;IACpD;;;OAGG;IACc,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IACpC,QAAQ,CAAuB;IAChD,qGAAqG;IAC7F,MAAM,CAA4B;IAE1C,YACmB,MAAc;IAC/B,0GAA0G;IACnG,IAAU;sBAFA,MAAM;oBAEhB,IAAI;QAEX,IAAI,CAAC,QAAQ;YACX,MAAM,CAAC,cAAc,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3G,CAAC;IAED,OAAO,CAAC,IAAa,EAAE,aAAsB;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACtC,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,6GAA6G;QAC7G,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrF,IAAI,KAAK,EAAE,CAAC;YACV,mGAAmG;YACnG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAAE,OAAO;YACrE,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;gBAAE,OAAO;YACzF,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM;gBAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YACzF,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;YACrC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YACnC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAChC,QAAQ,CAAC,OAAO,GAAG,UAAU,CAC3B,KAAK,CAAC,SAAS,EAAE,qBAAqB,EAAE,aAAa,CAAC,EACtD,KAAK,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC,CAC5C,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC/B,gHAAgH;YAChH,2BAA2B;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACpF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,IAAI,IAAI;gBAAE,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,iHAAiH;QACjH,qCAAqC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACnH,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC;QAC/C,kHAAkH;QAClH,6GAA6G;QAC7G,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,KAAK,EAAE,CAAC;YACV,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;YAC5B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;YAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7E,IAAI,GAAG;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;YAC1E,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;YACvG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC1C,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,cAAc,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;aAChD,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,sBAAsB,CAAC,KAAK,aAAa;YAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/F,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,iBAAiB;YAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9F,IAAI,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,iBAAiB,IAAI,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACxG,+FAA+F;YAC/F,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;YAC7E,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC;QAChC,CAAC;QACD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1G,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,KAAK,0BAA0B;YAAE,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;QACtG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,IAAI,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7G,4GAA4G;QAC5G,oGAAoG;QACpG,MAAM,MAAM,GACV,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/D,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAwB,CAAC;QAC9D,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/E,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,QAAkB,EAAE,YAAoB,EAAE,MAAc;QACpE,IAAI,EAAE,GAAuB,YAAY,CAAC;QAC1C,OAAO,EAAE,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,WAAW;gBAAE,OAAO;YACzB,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC/B,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC1E,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;gBACvD,WAAW,CAAC,cAAc,GAAG,KAAK,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAkB;QACtB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gBAAgB,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,iBAAiB,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CACnI,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,CAAC;QACpD,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO;QAClD,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjG,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/B,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5B,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;gBACrB,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;gBACzC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;gBAC1B,IAAI,EAAE;oBAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;YAClC,CAAC;YACD,IAAI,OAAO,EAAE,OAAO;gBAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,4BAA4B,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAClG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC,EAAE,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACK,OAAO,CAAC,QAAkB,EAAE,IAAkB;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;QAC9C,OAAO,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/G,CAAC;IAED,UAAU;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,+FAA+F;IAC/F,SAAS,CAAC,KAAgB;QACxB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,2FAA2F;IAC3F,OAAO;QACL,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,CAAC;IAED,wFAAwF;IACxF,SAAS,CAAC,MAAc;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,OAAe,EAAE,MAAe;QACvC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;aAC3B,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,OAAO,IAAI,QAAQ,CAAC,UAAU,KAAK,MAAM,CAAC;aACpF,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,uGAAuG;IACvG,MAAM,CAAC,OAAyC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3F,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAChC,uFAAuF;QACvF,IAAI,OAAO;YAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtC,OAAO;YACL,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,IAAI,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI;YAC5B,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC;IACJ,CAAC;IAEO,aAAa;QACnB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;QAChD,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;YAC/C,IAAI,QAAQ,CAAC,SAAS,GAAG,MAAM;gBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,8DAA8D;IACtD,KAAK,CAAC,QAAkB;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpE,mCAAmC;QACnC,IAAI,QAAQ,CAAC,SAAS;YAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,wFAAwF;IAChF,OAAO;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACnC,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACtE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACK,OAAO,CAAC,OAAwC;QACtD,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,KAA2B,CAAC;QAChC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,IAAI,QAAQ,CAAC,OAAO,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;gBAAE,KAAK,GAAG,QAAQ,CAAC;QACvE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0GAA0G;IAC1G,QAAQ,CAAC,KAAc;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,iEAAiE;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACpE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YACjC,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;YACvB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,OAAO;YAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnF,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,GAAyB;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;QACnC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;YAAE,YAAY,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;;YAC7E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,IAAY;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;IAC5F,CAAC;IAED,6FAA6F;IAC7F,QAAQ,CAAC,KAAa;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,OAAO;YAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,KAAY,EAAE,OAAyC;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3F,IAAI,QAAQ;YAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,sEAAsE;IACtE,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC;IAC5C,CAAC;IAEO,KAAK;QACX,OAAO;YACL,KAAK,EAAE;gBACL,EAAE,EAAE,KAAK,EAAE;gBACX,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,EAAE;gBACR,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,EAAE;gBACR,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;aACX;YACD,GAAG,EAAE,IAAI,GAAG,EAAE;YACd,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,IAAI,EAAE,IAAI,GAAG,EAAE;YACf,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE;YAC5B,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,eAAe,EAAE,IAAI,GAAG,EAAE;YAC1B,YAAY,EAAE,IAAI,GAAG,EAAE;YACvB,aAAa,EAAE,IAAI,GAAG,EAAE;YACxB,cAAc,EAAE,IAAI,GAAG,EAAE;YACzB,YAAY,EAAE,IAAI,GAAG,EAAE;YACvB,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,+GAA+G;IACvG,OAAO,CAAC,QAAkB,EAAE,IAAkB,EAAE,IAAa;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,QAAQ,GAAG,IAAI;YACnB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;gBACzC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;gBACrD,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO;QACvC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAS;YACtB,EAAE;YACF,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;YACpB,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YAClE,KAAK,EAAE,EAAE;SACV,CAAC;QACF,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QAChE,iHAAiH;QACjH,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,UAAU,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,IAAI,EAAE,CAAC;YACT,SAAS,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjH,CAAC;aAAM,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,iBAAiB,EAAE,CAAC;YACvD,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;YACxB,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC;QACrD,CAAC;aAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,4GAA4G;YAC5G,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;YACxB,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC;QACrD,CAAC;aAAM,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;YACxB,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9E,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC;QACrD,CAAC;aAAM,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,iBAAiB,EAAE,CAAC;YACtD,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;YACxB,SAAS,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,mBAAmB,CAAC,IAAI,YAAY,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1G,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC;YACnD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,KAAK,cAAc,EAAE,CAAC;YAC5D,SAAS,CAAC,IAAI,GAAG,cAAc,CAAC;YAChC,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,SAAS,CAAC,KAAK,GAAG;gBAChB,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvF,aAAa,EAAE,UAAU;aAC1B,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,KAAK,aAAa,EAAE,CAAC;YAC3D,SAAS,CAAC,IAAI,GAAG,aAAa,CAAC;YAC/B,MAAM,EAAE,sBAAsB,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC;YACpD,mHAAmH;YACnH,SAAS,CAAC,KAAK,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,CAAC;QAC1G,CAAC;aAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,KAAK,GAAG,EAAE,CAAC;YACjD,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC;YACrB,MAAM,EAAE,sBAAsB,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC;YACpD,SAAS,CAAC,KAAK,GAAG,EAAE,GAAG,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;QAC1D,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,SAAS,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;QACjE,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC;YACzB,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,SAAS,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,CAAC;QAC3E,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC;YAC3B,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,SAAS,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,CAAC;QACjH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;YACnD,SAAS,CAAC,IAAI,GAAG,UAAU,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YAChG,SAAS,CAAC,KAAK,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,CAAC;QAC5D,CAAC;aAAM,IAAI,GAAG,EAAE,CAAC;YACf,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;YACvB,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC/B,SAAS,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;YAC9E,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;YACtB,QAAQ,CAAC,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC;QACxC,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,qBAAqB,EAAE,aAAa,CAAC,EAAE,CAAC;YAC/F,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7B,SAAS,CAAC,IAAI,GAAG,aAAa,CAAC;YAC/B,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,8FAA8F;YAC9F,SAAS,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;QAChG,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;QAC5D,CAAC;QACD,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,6GAA6G;IACrG,QAAQ,CAAC,KAAY,EAAE,GAAW,EAAE,UAAyB,EAAE,GAAY;QACjF,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,yGAAyG;QACzG,uGAAuG;QACvG,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACnH,gGAAgG;QAChG,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,MAAM,MAAM,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAChD,OAAO;YACL,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YACnG,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,MAAM;YACnB,UAAU,EAAE,SAAS;YACrB,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9F,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC;YAC9B,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC;YAClC,gBAAgB,EACd,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YAC5G,SAAS,EAAE,KAAK;YAChB,aAAa,EAAE,UAAU;SAC1B,CAAC;IACJ,CAAC;IAED,kGAAkG;IAC1F,aAAa,CAAC,QAAkB,EAAE,IAAkB,EAAE,MAAc;QAC1E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBAAE,SAAS;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YACrC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1D,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;gBACzB,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC;gBAC7C,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC;gBAChD,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;gBACjD,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjE,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,4EAA4E;IACpE,MAAM,CAAC,QAAkB,EAAE,IAAkB;QACnD,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,EAAE,aAAa,CAAC,IAAI,KAAK,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,2BAA2B,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1F,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC1B,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;YAC/B,2FAA2F;YAC3F,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,EAAE,CAAC,IAAI,GAAG,GAAG,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,EAAE,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC;QAC5G,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;QAClE,IAAI,QAAQ;YAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACtC,EAAE,CAAC,KAAK,GAAG;YACT,GAAG,EAAE,CAAC,KAAK;YACX,aAAa,EAAE,MAAM;YACrB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YACtD,kBAAkB,EAAE,MAAM;YAC1B,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YACnC,cAAc,EAAE,KAAK;YACrB,wBAAwB,EAAE,QAAQ;YAClC,sBAAsB,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;YAC7D,yBAAyB,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI;YACxE,sBAAsB,EAAE,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvD,gGAAgG;YAChG,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO;SAC3C,CAAC;QACF,IAAI,IAAI,CAAC,iBAAiB,EAAE,QAAQ;YAAE,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;IACvG,CAAC;IAED;;;OAGG;IACK,UAAU,CAAC,QAAkB,EAAE,IAAkB;QACvD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC1B,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,EAAE,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC;QAC3F,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;QAClE,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;YACxB,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxF,EAAE,CAAC,KAAK,GAAG;YACT,GAAG,EAAE,CAAC,KAAK;YACX,GAAG,GAAG;YACN,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YACnC,cAAc,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACvF,wBAAwB,EAAE,QAAQ;YAClC,sBAAsB,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;YAC7D,yBAAyB,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI;YACxE,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO;SAC3C,CAAC;IACJ,CAAC;CACF;AAUD,SAAS,WAAW,CAAC,aAAsB;IACzC,OAAO,aAAa,CAAC,QAAQ,CAAC,YAAY,CAA4B,CAAC;AACzE,CAAC;AAED,SAAS,UAAU,CAAC,MAAe,EAAE,MAAe;IAClD,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;IACjC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACxC,IAAI,GAAG;QAAE,OAAO,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC;IACzE,OAAO,QAAQ,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC;AAClE,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/profile.d.ts
CHANGED
|
@@ -1,29 +1,46 @@
|
|
|
1
1
|
import type { Config } from "./config.js";
|
|
2
|
+
import { type Heap } from "./memory.js";
|
|
2
3
|
import type { Profile } from "./model.js";
|
|
3
4
|
import { type RequestHeaders } from "./request.js";
|
|
4
5
|
export declare const HEADER = "x-tracepanel-profile";
|
|
5
6
|
export declare const COOKIE = "tracepanel_profile";
|
|
6
|
-
/** On a request's root span: the request asked
|
|
7
|
+
/** On a request's root span: what the request asked for ("1", or "memory"). */
|
|
7
8
|
export declare const ATTRIBUTE = "tracepanel.profile";
|
|
8
|
-
/** In the context a framework starts the request's root span in (Next.js's): the request asked
|
|
9
|
+
/** In the context a framework starts the request's root span in (Next.js's): what the request asked for. */
|
|
9
10
|
export declare const ASKED: symbol;
|
|
10
|
-
/**
|
|
11
|
-
export
|
|
12
|
-
/**
|
|
13
|
-
export declare function
|
|
11
|
+
/** What a request asks for: the profile ("1"), or the profile with its memory ("memory"). */
|
|
12
|
+
export type Asked = "1" | "memory";
|
|
13
|
+
/** What a value asks for: "1" or "memory" as they are, true (a span marked by code) "1"; else nothing. */
|
|
14
|
+
export declare function asking(value: unknown): Asked | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* What a request asks for: the X-Tracepanel-Profile header's, else the cookie's the panel's toggle sets; undefined
|
|
17
|
+
* when neither asks.
|
|
18
|
+
*/
|
|
19
|
+
export declare function requested(headers: RequestHeaders): Asked | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* How to profile a trace: "memory" with its memory, "1" its time only; undefined for none. The setting profiles
|
|
22
|
+
* every one, a request may ask; nothing when profiling is off.
|
|
23
|
+
*/
|
|
24
|
+
export declare function wanted(config: Config, asked: Asked | undefined): Asked | undefined;
|
|
14
25
|
/** Whether this runtime can profile: Node, with its inspector. */
|
|
15
26
|
export declare function available(): boolean;
|
|
27
|
+
/** Whether this runtime can profile memory too: Node's inspector, and V8's GC profiler. */
|
|
28
|
+
export declare function memoryProfiling(): boolean;
|
|
16
29
|
/** One trace's profile while it runs: its console profile's title, and when it started (performance.now()). */
|
|
17
30
|
export interface Recording {
|
|
18
31
|
title: string;
|
|
19
32
|
startedMs: number;
|
|
20
33
|
/** The trace it profiles, as the profiler knows every trace of the process (see enter()). */
|
|
21
34
|
trace: object;
|
|
35
|
+
/** Its memory, when that was asked for. */
|
|
36
|
+
heap: Heap | undefined;
|
|
22
37
|
}
|
|
23
38
|
/** The trace's profile and the samples left out because another trace ran at the same time. */
|
|
24
39
|
export interface Result {
|
|
25
40
|
profile: Profile | undefined;
|
|
26
41
|
dropped: number;
|
|
42
|
+
/** The collector's runs during the trace, read once Node has told them (after the trace's late spans). */
|
|
43
|
+
gc?: () => Profile["gc"];
|
|
27
44
|
}
|
|
28
45
|
/** The app's profiler: the profile that runs while traces are profiled, and when each trace of the process ran. */
|
|
29
46
|
export declare class Profiler {
|
|
@@ -40,17 +57,26 @@ export declare class Profiler {
|
|
|
40
57
|
private ended;
|
|
41
58
|
/** The console profiles stopped, by title, as the inspector hands them over. */
|
|
42
59
|
private readonly finished;
|
|
60
|
+
private heaps;
|
|
61
|
+
private readonly collections;
|
|
43
62
|
constructor(root: string, intervalMs: number);
|
|
44
63
|
/** A trace started (each one, profiled or not): a sample taken while it runs may be its. */
|
|
45
64
|
enter(trace: object): void;
|
|
46
65
|
/** A trace ended. */
|
|
47
66
|
leave(trace: object): void;
|
|
48
|
-
/**
|
|
49
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Begins profiling a trace that started (enter() first), its memory too when `memory`; undefined when the
|
|
69
|
+
* inspector can't.
|
|
70
|
+
*/
|
|
71
|
+
start(trace: object, memory?: boolean): Recording | undefined;
|
|
50
72
|
/** Ends a trace's profile, before it leaves: what was sampled while it alone ran. */
|
|
51
73
|
stop(recording: Recording): Result;
|
|
52
74
|
/** The profile that runs under the traces' own: started with the first profiled trace. */
|
|
53
75
|
private ensure;
|
|
76
|
+
/** Whether another trace than the recording's ran while it did (the heap is the process's). */
|
|
77
|
+
private overlapped;
|
|
78
|
+
/** The profile's `memory`: its sites' frames added to the profile's own, each once. */
|
|
79
|
+
private memory;
|
|
54
80
|
/** No trace is profiled: the profile under them stops after a while, or now when it ran long. */
|
|
55
81
|
private rest;
|
|
56
82
|
private halt;
|