lightrace 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/client.d.ts +14 -35
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +60 -84
  4. package/dist/client.js.map +1 -1
  5. package/dist/dev-server.d.ts +18 -0
  6. package/dist/dev-server.d.ts.map +1 -0
  7. package/dist/dev-server.js +95 -0
  8. package/dist/dev-server.js.map +1 -0
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/integrations/_base.d.ts +71 -0
  14. package/dist/integrations/_base.d.ts.map +1 -0
  15. package/dist/integrations/_base.js +189 -0
  16. package/dist/integrations/_base.js.map +1 -0
  17. package/dist/integrations/anthropic.d.ts +15 -0
  18. package/dist/integrations/anthropic.d.ts.map +1 -0
  19. package/dist/integrations/anthropic.js +228 -0
  20. package/dist/integrations/anthropic.js.map +1 -0
  21. package/dist/integrations/llamaindex.d.ts +14 -0
  22. package/dist/integrations/llamaindex.d.ts.map +1 -0
  23. package/dist/integrations/llamaindex.js +222 -0
  24. package/dist/integrations/llamaindex.js.map +1 -0
  25. package/dist/integrations/openai.d.ts +17 -0
  26. package/dist/integrations/openai.d.ts.map +1 -0
  27. package/dist/integrations/openai.js +258 -0
  28. package/dist/integrations/openai.js.map +1 -0
  29. package/dist/otel-exporter.d.ts.map +1 -1
  30. package/dist/otel-exporter.js +29 -0
  31. package/dist/otel-exporter.js.map +1 -1
  32. package/dist/trace.d.ts.map +1 -1
  33. package/dist/trace.js +4 -3
  34. package/dist/trace.js.map +1 -1
  35. package/dist/types.d.ts +2 -39
  36. package/dist/types.d.ts.map +1 -1
  37. package/package.json +31 -5
  38. package/dist/security.d.ts +0 -20
  39. package/dist/security.d.ts.map +0 -1
  40. package/dist/security.js +0 -46
  41. package/dist/security.js.map +0 -1
  42. package/dist/tool-client.d.ts +0 -46
  43. package/dist/tool-client.d.ts.map +0 -1
  44. package/dist/tool-client.js +0 -237
  45. package/dist/tool-client.js.map +0 -1
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Shared tracing infrastructure for framework integrations.
3
+ *
4
+ * Provides `TracingMixin` with `registerRun` / `endRun` to manage OTel spans
5
+ * with `lightrace.*` attributes, and `normalizeUsage` for multi-provider
6
+ * token usage extraction.
7
+ */
8
+ import { trace as otelTrace } from "@opentelemetry/api";
9
+ import { generateId, jsonSerializable } from "../utils.js";
10
+ import * as attrs from "../otel-exporter.js";
11
+ import { Lightrace } from "../client.js";
12
+ /**
13
+ * Normalize token usage from any provider format to a canonical form.
14
+ *
15
+ * Supports OpenAI (`prompt_tokens`/`completion_tokens`), Anthropic
16
+ * (`input_tokens`/`output_tokens`), and camelCase variants.
17
+ */
18
+ export function normalizeUsage(raw) {
19
+ if (!raw || typeof raw !== "object")
20
+ return null;
21
+ const result = {};
22
+ const prompt = raw.promptTokens ?? raw.prompt_tokens ?? raw.input_tokens ?? undefined;
23
+ const completion = raw.completionTokens ?? raw.completion_tokens ?? raw.output_tokens ?? undefined;
24
+ const total = raw.totalTokens ?? raw.total_tokens ?? undefined;
25
+ if (prompt !== undefined)
26
+ result.promptTokens = Number(prompt);
27
+ if (completion !== undefined)
28
+ result.completionTokens = Number(completion);
29
+ if (total !== undefined)
30
+ result.totalTokens = Number(total);
31
+ else if (result.promptTokens !== undefined && result.completionTokens !== undefined)
32
+ result.totalTokens = result.promptTokens + result.completionTokens;
33
+ return Object.keys(result).length > 0 ? result : null;
34
+ }
35
+ /**
36
+ * Base class providing shared OTel tracing infrastructure for framework
37
+ * integrations. Manages span lifecycle, run-state tracking, and
38
+ * `lightrace.*` attribute setting.
39
+ */
40
+ export class TracingMixin {
41
+ runs = new Map();
42
+ runParents = new Map();
43
+ completionStartTimes = new Map();
44
+ rootRunId = null;
45
+ _traceId = null;
46
+ userId;
47
+ sessionId;
48
+ traceName;
49
+ rootMetadata;
50
+ otelExporter = null;
51
+ rootSpan = null;
52
+ /** True when rootSpan was borrowed from an existing trace() wrapper (don't end it). */
53
+ borrowedRootSpan = false;
54
+ /** The trace ID from the most recently completed root run. */
55
+ lastTraceId = null;
56
+ constructor(opts) {
57
+ this.userId = opts?.userId;
58
+ this.sessionId = opts?.sessionId;
59
+ this.traceName = opts?.traceName;
60
+ this.rootMetadata = opts?.metadata;
61
+ const client = opts?.client ?? Lightrace.getInstance();
62
+ this.otelExporter = client?.getOtelExporter() ?? null;
63
+ }
64
+ /** Get the current active trace ID (null if no run is active). */
65
+ get traceId() {
66
+ return this._traceId;
67
+ }
68
+ // ── Core span management ──────────────────────────────────────────
69
+ registerRun(runId, parentRunId, info) {
70
+ const tracer = this.otelExporter?.tracer;
71
+ const isRoot = !this.rootRunId;
72
+ if (isRoot) {
73
+ this.rootRunId = runId;
74
+ const activeSpan = otelTrace.getActiveSpan();
75
+ if (activeSpan) {
76
+ // Reuse the existing trace span — don't create a duplicate root.
77
+ this.rootSpan = activeSpan;
78
+ this.borrowedRootSpan = true;
79
+ this._traceId = activeSpan.spanContext().traceId;
80
+ }
81
+ else if (tracer) {
82
+ this._traceId = generateId();
83
+ this.rootSpan = tracer.startSpan(this.traceName ?? info.name, {
84
+ startTime: info.startTime,
85
+ });
86
+ this.rootSpan.setAttribute(attrs.AS_ROOT, "true");
87
+ this.rootSpan.setAttribute(attrs.TRACE_NAME, this.traceName ?? info.name);
88
+ this.rootSpan.setAttribute(attrs.TRACE_INPUT, attrs.safeJson(jsonSerializable(info.input)));
89
+ if (this.userId)
90
+ this.rootSpan.setAttribute(attrs.TRACE_USER_ID, this.userId);
91
+ if (this.sessionId)
92
+ this.rootSpan.setAttribute(attrs.TRACE_SESSION_ID, this.sessionId);
93
+ if (this.rootMetadata) {
94
+ this.rootSpan.setAttribute(attrs.TRACE_METADATA, attrs.safeJson(this.rootMetadata));
95
+ }
96
+ }
97
+ else {
98
+ this._traceId = generateId();
99
+ }
100
+ }
101
+ const observationId = generateId();
102
+ let span;
103
+ if (tracer) {
104
+ span = tracer.startSpan(info.name, { startTime: info.startTime });
105
+ }
106
+ else {
107
+ span = {
108
+ setAttribute: () => span,
109
+ setAttributes: () => span,
110
+ addEvent: () => span,
111
+ setStatus: () => span,
112
+ end: () => { },
113
+ isRecording: () => false,
114
+ recordException: () => { },
115
+ spanContext: () => ({ traceId: "", spanId: "", traceFlags: 0 }),
116
+ updateName: () => span,
117
+ };
118
+ }
119
+ const runInfo = { ...info, observationId, parentRunId, span };
120
+ this.runs.set(runId, runInfo);
121
+ this.runParents.set(observationId, parentRunId ? this.runs.get(parentRunId)?.observationId : undefined);
122
+ return runInfo;
123
+ }
124
+ endObservationSpan(run, output, level, statusMessage, extra) {
125
+ const obsTypeMap = {
126
+ span: "SPAN",
127
+ generation: "GENERATION",
128
+ event: "EVENT",
129
+ tool: "TOOL",
130
+ chain: "CHAIN",
131
+ };
132
+ const span = run.span;
133
+ span.setAttribute(attrs.OBSERVATION_TYPE, obsTypeMap[run.type] ?? run.type);
134
+ span.setAttribute(attrs.OBSERVATION_INPUT, attrs.safeJson(jsonSerializable(run.input)));
135
+ span.setAttribute(attrs.OBSERVATION_OUTPUT, attrs.safeJson(jsonSerializable(output)));
136
+ span.setAttribute(attrs.OBSERVATION_LEVEL, level);
137
+ if (run.metadata) {
138
+ span.setAttribute(attrs.OBSERVATION_METADATA, attrs.safeJson(run.metadata));
139
+ }
140
+ if (run.model) {
141
+ span.setAttribute(attrs.OBSERVATION_MODEL, run.model);
142
+ }
143
+ if (statusMessage) {
144
+ span.setAttribute(attrs.OBSERVATION_STATUS_MESSAGE, statusMessage);
145
+ }
146
+ if (run.modelParameters && Object.keys(run.modelParameters).length > 0) {
147
+ span.setAttribute(attrs.OBSERVATION_MODEL_PARAMETERS, attrs.safeJson(run.modelParameters));
148
+ }
149
+ if (extra) {
150
+ const usageDetails = {};
151
+ if (extra.promptTokens !== undefined)
152
+ usageDetails.promptTokens = extra.promptTokens;
153
+ if (extra.completionTokens !== undefined)
154
+ usageDetails.completionTokens = extra.completionTokens;
155
+ if (extra.totalTokens !== undefined)
156
+ usageDetails.totalTokens = extra.totalTokens;
157
+ if (Object.keys(usageDetails).length > 0) {
158
+ span.setAttribute(attrs.OBSERVATION_USAGE_DETAILS, attrs.safeJson(usageDetails));
159
+ }
160
+ }
161
+ span.end();
162
+ }
163
+ endRun(runId, output, level = "DEFAULT", statusMessage = null, extra) {
164
+ const run = this.runs.get(runId);
165
+ if (!run)
166
+ return;
167
+ this.endObservationSpan(run, output, level, statusMessage, extra);
168
+ if (runId === this.rootRunId) {
169
+ if (this.rootSpan) {
170
+ this.rootSpan.setAttribute(attrs.TRACE_OUTPUT, attrs.safeJson(jsonSerializable(output)));
171
+ if (!this.borrowedRootSpan) {
172
+ this.rootSpan.end();
173
+ }
174
+ this.rootSpan = null;
175
+ }
176
+ this.lastTraceId = this._traceId;
177
+ this.rootRunId = null;
178
+ this._traceId = null;
179
+ this.borrowedRootSpan = false;
180
+ this.runs.clear();
181
+ this.runParents.clear();
182
+ this.completionStartTimes.clear();
183
+ }
184
+ else {
185
+ this.runs.delete(runId);
186
+ }
187
+ }
188
+ }
189
+ //# sourceMappingURL=_base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_base.js","sourceRoot":"","sources":["../../src/integrations/_base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { TracingMixin, type TracingMixinOptions } from "./_base.js";
2
+ export declare class LightraceAnthropicInstrumentor extends TracingMixin {
3
+ private patchedTargets;
4
+ constructor(opts?: TracingMixinOptions);
5
+ /**
6
+ * Patch an Anthropic client instance so that `messages.create` and
7
+ * `messages.stream` calls are automatically traced.
8
+ */
9
+ instrument(client: unknown): void;
10
+ /** Restore the original methods. */
11
+ uninstrument(client: unknown): void;
12
+ /** Start a trace for an Anthropic messages call. */
13
+ private startAnthropicTrace;
14
+ }
15
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/integrations/anthropic.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAKpE,qBAAa,8BAA+B,SAAQ,YAAY;IAC9D,OAAO,CAAC,cAAc,CAGlB;gBAEQ,IAAI,CAAC,EAAE,mBAAmB;IAItC;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAmEjC,oCAAoC;IACpC,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAYnC,oDAAoD;IACpD,OAAO,CAAC,mBAAmB;CA8B5B"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Anthropic SDK integration for Lightrace.
3
+ *
4
+ * Wraps `messages.create` and `messages.stream` on Anthropic client instances
5
+ * to automatically capture traces via OpenTelemetry spans.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { LightraceAnthropicInstrumentor } from "lightrace/integrations/anthropic";
10
+ *
11
+ * const instrumentor = new LightraceAnthropicInstrumentor();
12
+ * instrumentor.instrument(client);
13
+ *
14
+ * const response = await client.messages.create({ ... });
15
+ * console.log(instrumentor.lastTraceId);
16
+ * ```
17
+ */
18
+ import { generateId, jsonSerializable } from "../utils.js";
19
+ import { TracingMixin } from "./_base.js";
20
+ export class LightraceAnthropicInstrumentor extends TracingMixin {
21
+ patchedTargets = new Map();
22
+ constructor(opts) {
23
+ super(opts);
24
+ }
25
+ /**
26
+ * Patch an Anthropic client instance so that `messages.create` and
27
+ * `messages.stream` calls are automatically traced.
28
+ */
29
+ instrument(client) {
30
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
+ const c = client;
32
+ const messages = c?.messages;
33
+ if (!messages?.create)
34
+ return;
35
+ if (this.patchedTargets.has(client))
36
+ return;
37
+ const originalCreate = messages.create.bind(messages);
38
+ const originalStream = messages.stream ? messages.stream.bind(messages) : undefined;
39
+ this.patchedTargets.set(client, {
40
+ messages,
41
+ originalCreate,
42
+ originalStream,
43
+ });
44
+ // Patch messages.create
45
+ messages.create = async (...args) => {
46
+ const kwargs = args.length === 1 && typeof args[0] === "object" && args[0] !== null
47
+ ? args[0]
48
+ : {};
49
+ const { runId } = this.startAnthropicTrace(kwargs);
50
+ const stream = Boolean(kwargs.stream);
51
+ try {
52
+ const result = await originalCreate(...args);
53
+ if (!stream) {
54
+ const output = extractOutput(result);
55
+ const usage = extractUsage(result);
56
+ this.endRun(runId, output, "DEFAULT", null, usage ?? undefined);
57
+ }
58
+ else {
59
+ // For streaming, end immediately with partial info
60
+ this.endRun(runId, { streaming: true });
61
+ }
62
+ return result;
63
+ }
64
+ catch (err) {
65
+ this.endRun(runId, null, "ERROR", err instanceof Error ? err.message : String(err));
66
+ throw err;
67
+ }
68
+ };
69
+ // Patch messages.stream (separate context-manager streaming API)
70
+ if (originalStream) {
71
+ messages.stream = (...args) => {
72
+ const kwargs = args.length === 1 && typeof args[0] === "object" && args[0] !== null
73
+ ? args[0]
74
+ : {};
75
+ const { runId } = this.startAnthropicTrace(kwargs);
76
+ try {
77
+ const streamManager = originalStream(...args);
78
+ // Wrap the stream manager to capture the final message
79
+ return wrapStreamManager(streamManager, this, runId);
80
+ }
81
+ catch (err) {
82
+ this.endRun(runId, null, "ERROR", err instanceof Error ? err.message : String(err));
83
+ throw err;
84
+ }
85
+ };
86
+ }
87
+ }
88
+ /** Restore the original methods. */
89
+ uninstrument(client) {
90
+ const entry = this.patchedTargets.get(client);
91
+ if (!entry)
92
+ return;
93
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
+ const messages = entry.messages;
95
+ messages.create = entry.originalCreate;
96
+ if (entry.originalStream) {
97
+ messages.stream = entry.originalStream;
98
+ }
99
+ this.patchedTargets.delete(client);
100
+ }
101
+ /** Start a trace for an Anthropic messages call. */
102
+ startAnthropicTrace(kwargs) {
103
+ const runId = generateId();
104
+ const model = kwargs.model;
105
+ const inputData = {
106
+ messages: jsonSerializable(kwargs.messages ?? []),
107
+ };
108
+ if (model)
109
+ inputData.model = model;
110
+ if (kwargs.system)
111
+ inputData.system = jsonSerializable(kwargs.system);
112
+ if (kwargs.tools)
113
+ inputData.tools = jsonSerializable(kwargs.tools);
114
+ if (kwargs.tool_choice)
115
+ inputData.tool_choice = jsonSerializable(kwargs.tool_choice);
116
+ const modelParams = {};
117
+ for (const key of ["temperature", "max_tokens", "top_p", "top_k", "stop_sequences"]) {
118
+ if (kwargs[key] !== undefined)
119
+ modelParams[key] = kwargs[key];
120
+ }
121
+ this.registerRun(runId, undefined, {
122
+ type: "generation",
123
+ name: model ?? "anthropic",
124
+ startTime: new Date(),
125
+ input: inputData,
126
+ model,
127
+ modelParameters: Object.keys(modelParams).length > 0 ? modelParams : undefined,
128
+ });
129
+ return { runId };
130
+ }
131
+ }
132
+ // -- Helpers ----------------------------------------------------------------
133
+ function extractOutput(response) {
134
+ if (!response || typeof response !== "object")
135
+ return response;
136
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
137
+ const r = response;
138
+ const content = r.content;
139
+ if (!Array.isArray(content))
140
+ return jsonSerializable(response);
141
+ const blocks = content.map((block) => {
142
+ if (block.type === "text") {
143
+ return { type: "text", text: block.text ?? "" };
144
+ }
145
+ if (block.type === "tool_use") {
146
+ return {
147
+ type: "tool_use",
148
+ id: block.id ?? "",
149
+ name: block.name ?? "",
150
+ input: jsonSerializable(block.input ?? {}),
151
+ };
152
+ }
153
+ return jsonSerializable(block);
154
+ });
155
+ const result = {
156
+ role: r.role ?? "assistant",
157
+ content: blocks,
158
+ };
159
+ if (r.stop_reason)
160
+ result.stop_reason = r.stop_reason;
161
+ return result;
162
+ }
163
+ function extractUsage(response) {
164
+ if (!response || typeof response !== "object")
165
+ return null;
166
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
167
+ const usage = response.usage;
168
+ if (!usage)
169
+ return null;
170
+ const raw = {};
171
+ if (usage.input_tokens !== undefined)
172
+ raw.promptTokens = usage.input_tokens;
173
+ if (usage.output_tokens !== undefined)
174
+ raw.completionTokens = usage.output_tokens;
175
+ if (raw.promptTokens !== undefined && raw.completionTokens !== undefined) {
176
+ raw.totalTokens = raw.promptTokens + raw.completionTokens;
177
+ }
178
+ return Object.keys(raw).length > 0 ? raw : null;
179
+ }
180
+ /**
181
+ * Wrap a stream manager (from `messages.stream()`) to capture the final
182
+ * message when the stream ends.
183
+ */
184
+ function wrapStreamManager(manager, instrumentor, runId) {
185
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
186
+ const m = manager;
187
+ // For async stream managers (most common in Node.js)
188
+ if (typeof m[Symbol.asyncIterator] === "function" || typeof m.then === "function") {
189
+ return {
190
+ ...m,
191
+ async *[Symbol.asyncIterator]() {
192
+ let finalMessage = null;
193
+ try {
194
+ for await (const event of m) {
195
+ if (event?.type === "message_stop") {
196
+ finalMessage = event.message ?? m.currentMessageSnapshot ?? null;
197
+ }
198
+ yield event;
199
+ }
200
+ }
201
+ finally {
202
+ const msg = finalMessage ?? m.currentMessageSnapshot ?? m.finalMessage ?? null;
203
+ if (msg) {
204
+ const output = extractOutput(msg);
205
+ const usage = extractUsage(msg);
206
+ instrumentor.endRun(runId, output, "DEFAULT", null, usage ?? undefined);
207
+ }
208
+ else {
209
+ instrumentor.endRun(runId, null);
210
+ }
211
+ }
212
+ },
213
+ // Forward method calls
214
+ on: m.on?.bind(m),
215
+ off: m.off?.bind(m),
216
+ get finalMessage() {
217
+ return m.finalMessage;
218
+ },
219
+ get currentMessageSnapshot() {
220
+ return m.currentMessageSnapshot;
221
+ },
222
+ };
223
+ }
224
+ // Fallback: return as-is and end the span
225
+ instrumentor.endRun(runId, null);
226
+ return manager;
227
+ }
228
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/integrations/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { TracingMixin, type TracingMixinOptions } from "./_base.js";
2
+ export declare class LightraceLlamaIndexHandler extends TracingMixin {
3
+ private traceRunId;
4
+ constructor(opts?: TracingMixinOptions);
5
+ /** Called when a LlamaIndex trace begins. */
6
+ startTrace(traceId?: string): void;
7
+ /** Called when a LlamaIndex trace ends. */
8
+ endTrace(): void;
9
+ /** Called when a LlamaIndex event starts. */
10
+ onEventStart(eventType: string, payload?: Record<string, unknown> | null, eventId?: string, parentId?: string): string;
11
+ /** Called when a LlamaIndex event ends. */
12
+ onEventEnd(eventType: string, payload?: Record<string, unknown> | null, eventId?: string): void;
13
+ }
14
+ //# sourceMappingURL=llamaindex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llamaindex.d.ts","sourceRoot":"","sources":["../../src/integrations/llamaindex.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAkBpE,qBAAa,0BAA2B,SAAQ,YAAY;IAC1D,OAAO,CAAC,UAAU,CAAuB;gBAE7B,IAAI,CAAC,EAAE,mBAAmB;IAItC,6CAA6C;IAC7C,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAelC,2CAA2C;IAC3C,QAAQ,IAAI,IAAI;IAWhB,6CAA6C;IAC7C,YAAY,CACV,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACxC,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM;IAmCT,2CAA2C;IAC3C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;CAmBhG"}