@shipfox/api-agent-access-dto 21.1.0 → 21.2.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +11 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/schemas/diagnostic-tools.d.ts +3 -1
- package/dist/schemas/diagnostic-tools.d.ts.map +1 -1
- package/dist/schemas/diagnostic-tools.js +6 -2
- package/dist/schemas/diagnostic-tools.js.map +1 -1
- package/dist/schemas/workflow-execution-events.d.ts +272 -0
- package/dist/schemas/workflow-execution-events.d.ts.map +1 -0
- package/dist/schemas/workflow-execution-events.js +250 -0
- package/dist/schemas/workflow-execution-events.js.map +1 -0
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/index.ts +17 -0
- package/src/schemas/diagnostic-tools.test.ts +43 -0
- package/src/schemas/diagnostic-tools.ts +11 -2
- package/src/schemas/workflow-execution-events.test.ts +126 -0
- package/src/schemas/workflow-execution-events.ts +217 -0
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { AGENT_ACCESS_PAGE_LIMIT_MAX, AGENT_ACCESS_TEXT_MAX_BYTES } from './paged-tools.js';
|
|
3
|
+
import { dateTimeSchema, idSchema, utf8CappedString } from './primitives.js';
|
|
4
|
+
/** Default page size for one execution's listener-event history. */ export const AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_LIMIT = 25;
|
|
5
|
+
/** Maximum number of execution listener-event summaries in one page. */ export const AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_MAX = AGENT_ACCESS_PAGE_LIMIT_MAX;
|
|
6
|
+
/** Maximum serialized UTF-8 size of one untrusted payload preview. */ export const AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PREVIEW_MAX_BYTES = 16 * 1024;
|
|
7
|
+
const textSchema = utf8CappedString(AGENT_ACCESS_TEXT_MAX_BYTES);
|
|
8
|
+
const payloadPreviewSchema = utf8CappedString(AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PREVIEW_MAX_BYTES).refine(isSerializedJson, {
|
|
9
|
+
message: 'Payload preview must be serialized JSON'
|
|
10
|
+
});
|
|
11
|
+
const executionTriggerEventDispositionSchema = z.enum([
|
|
12
|
+
'fire',
|
|
13
|
+
'resolve'
|
|
14
|
+
]);
|
|
15
|
+
const executionTriggerEventOutcomeSchema = z.enum([
|
|
16
|
+
'pending',
|
|
17
|
+
'consumed',
|
|
18
|
+
'honored',
|
|
19
|
+
'rejected',
|
|
20
|
+
'abandoned'
|
|
21
|
+
]);
|
|
22
|
+
const executionTriggerEventOutcomeReasonSchema = z.enum([
|
|
23
|
+
'payload_too_large',
|
|
24
|
+
'until',
|
|
25
|
+
'timeout',
|
|
26
|
+
'max_executions',
|
|
27
|
+
'cancelled'
|
|
28
|
+
]).nullable();
|
|
29
|
+
const eventRefSchema = z.string().min(1);
|
|
30
|
+
const executionTriggerEventSummarySchema = z.object({
|
|
31
|
+
event_ref: eventRefSchema,
|
|
32
|
+
delivery_id: textSchema,
|
|
33
|
+
source: textSchema,
|
|
34
|
+
event: textSchema,
|
|
35
|
+
disposition: executionTriggerEventDispositionSchema,
|
|
36
|
+
outcome: executionTriggerEventOutcomeSchema,
|
|
37
|
+
outcome_reason: executionTriggerEventOutcomeReasonSchema,
|
|
38
|
+
received_at: dateTimeSchema,
|
|
39
|
+
stored_payload_bytes: z.number().int().nonnegative(),
|
|
40
|
+
normalized_event_bytes: z.number().int().nonnegative()
|
|
41
|
+
}).strict();
|
|
42
|
+
export const listExecutionTriggerEventsInputSchema = z.object({
|
|
43
|
+
job_id: idSchema,
|
|
44
|
+
execution_id: idSchema,
|
|
45
|
+
limit: z.number().int().min(1).max(AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_MAX).default(AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_LIMIT),
|
|
46
|
+
cursor: z.string().min(1).optional()
|
|
47
|
+
}).strict();
|
|
48
|
+
export const getExecutionTriggerEventInputSchema = z.object({
|
|
49
|
+
job_id: idSchema,
|
|
50
|
+
execution_id: idSchema,
|
|
51
|
+
event_ref: eventRefSchema
|
|
52
|
+
}).strict();
|
|
53
|
+
export const listExecutionTriggerEventsResultSchema = z.object({
|
|
54
|
+
job_id: idSchema,
|
|
55
|
+
execution_id: idSchema,
|
|
56
|
+
trigger_events: z.array(executionTriggerEventSummarySchema).max(AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_MAX),
|
|
57
|
+
next_cursor: z.string().nullable(),
|
|
58
|
+
total: z.number().int().nonnegative().optional()
|
|
59
|
+
}).strict();
|
|
60
|
+
export const getExecutionTriggerEventResultSchema = executionTriggerEventSummarySchema.extend({
|
|
61
|
+
/** Serialized JSON text. It is untrusted data, not a typed workflow value. */ payload_preview: payloadPreviewSchema.nullable(),
|
|
62
|
+
payload_preview_truncated: z.literal(true).optional(),
|
|
63
|
+
payload_preview_total_bytes: z.number().int().nonnegative().optional()
|
|
64
|
+
}).strict();
|
|
65
|
+
const uuid = {
|
|
66
|
+
type: 'string',
|
|
67
|
+
format: 'uuid'
|
|
68
|
+
};
|
|
69
|
+
const dateTime = {
|
|
70
|
+
type: 'string',
|
|
71
|
+
format: 'date-time'
|
|
72
|
+
};
|
|
73
|
+
const text = {
|
|
74
|
+
type: 'string',
|
|
75
|
+
maxLength: AGENT_ACCESS_TEXT_MAX_BYTES
|
|
76
|
+
};
|
|
77
|
+
const eventRef = {
|
|
78
|
+
type: 'string',
|
|
79
|
+
minLength: 1
|
|
80
|
+
};
|
|
81
|
+
const serializedJson = {
|
|
82
|
+
type: 'string',
|
|
83
|
+
maxLength: AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PREVIEW_MAX_BYTES,
|
|
84
|
+
contentMediaType: 'application/json'
|
|
85
|
+
};
|
|
86
|
+
const nullable = (schema)=>({
|
|
87
|
+
anyOf: [
|
|
88
|
+
schema,
|
|
89
|
+
{
|
|
90
|
+
type: 'null'
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
});
|
|
94
|
+
export const listExecutionTriggerEventsInputJsonSchema = {
|
|
95
|
+
type: 'object',
|
|
96
|
+
properties: {
|
|
97
|
+
job_id: uuid,
|
|
98
|
+
execution_id: uuid,
|
|
99
|
+
limit: {
|
|
100
|
+
type: 'integer',
|
|
101
|
+
minimum: 1,
|
|
102
|
+
maximum: AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_MAX,
|
|
103
|
+
default: AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_LIMIT
|
|
104
|
+
},
|
|
105
|
+
cursor: {
|
|
106
|
+
type: 'string',
|
|
107
|
+
minLength: 1
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
required: [
|
|
111
|
+
'job_id',
|
|
112
|
+
'execution_id'
|
|
113
|
+
],
|
|
114
|
+
additionalProperties: false
|
|
115
|
+
};
|
|
116
|
+
export const getExecutionTriggerEventInputJsonSchema = {
|
|
117
|
+
type: 'object',
|
|
118
|
+
properties: {
|
|
119
|
+
job_id: uuid,
|
|
120
|
+
execution_id: uuid,
|
|
121
|
+
event_ref: eventRef
|
|
122
|
+
},
|
|
123
|
+
required: [
|
|
124
|
+
'job_id',
|
|
125
|
+
'execution_id',
|
|
126
|
+
'event_ref'
|
|
127
|
+
],
|
|
128
|
+
additionalProperties: false
|
|
129
|
+
};
|
|
130
|
+
const executionTriggerEventSummaryJson = {
|
|
131
|
+
type: 'object',
|
|
132
|
+
properties: {
|
|
133
|
+
event_ref: eventRef,
|
|
134
|
+
delivery_id: text,
|
|
135
|
+
source: text,
|
|
136
|
+
event: text,
|
|
137
|
+
disposition: {
|
|
138
|
+
type: 'string',
|
|
139
|
+
enum: [
|
|
140
|
+
'fire',
|
|
141
|
+
'resolve'
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
outcome: {
|
|
145
|
+
type: 'string',
|
|
146
|
+
enum: [
|
|
147
|
+
'pending',
|
|
148
|
+
'consumed',
|
|
149
|
+
'honored',
|
|
150
|
+
'rejected',
|
|
151
|
+
'abandoned'
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
outcome_reason: {
|
|
155
|
+
anyOf: [
|
|
156
|
+
{
|
|
157
|
+
type: 'string',
|
|
158
|
+
enum: [
|
|
159
|
+
'payload_too_large',
|
|
160
|
+
'until',
|
|
161
|
+
'timeout',
|
|
162
|
+
'max_executions',
|
|
163
|
+
'cancelled'
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'null'
|
|
168
|
+
}
|
|
169
|
+
]
|
|
170
|
+
},
|
|
171
|
+
received_at: dateTime,
|
|
172
|
+
stored_payload_bytes: {
|
|
173
|
+
type: 'integer',
|
|
174
|
+
minimum: 0
|
|
175
|
+
},
|
|
176
|
+
normalized_event_bytes: {
|
|
177
|
+
type: 'integer',
|
|
178
|
+
minimum: 0
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
required: [
|
|
182
|
+
'event_ref',
|
|
183
|
+
'delivery_id',
|
|
184
|
+
'source',
|
|
185
|
+
'event',
|
|
186
|
+
'disposition',
|
|
187
|
+
'outcome',
|
|
188
|
+
'outcome_reason',
|
|
189
|
+
'received_at',
|
|
190
|
+
'stored_payload_bytes',
|
|
191
|
+
'normalized_event_bytes'
|
|
192
|
+
],
|
|
193
|
+
additionalProperties: false
|
|
194
|
+
};
|
|
195
|
+
const executionTriggerEventDetailJson = {
|
|
196
|
+
...executionTriggerEventSummaryJson,
|
|
197
|
+
properties: {
|
|
198
|
+
...executionTriggerEventSummaryJson.properties,
|
|
199
|
+
payload_preview: nullable(serializedJson),
|
|
200
|
+
payload_preview_truncated: {
|
|
201
|
+
const: true
|
|
202
|
+
},
|
|
203
|
+
payload_preview_total_bytes: {
|
|
204
|
+
type: 'integer',
|
|
205
|
+
minimum: 0
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
required: [
|
|
209
|
+
...executionTriggerEventSummaryJson.required,
|
|
210
|
+
'payload_preview'
|
|
211
|
+
]
|
|
212
|
+
};
|
|
213
|
+
export const listExecutionTriggerEventsResultJsonSchema = {
|
|
214
|
+
type: 'object',
|
|
215
|
+
properties: {
|
|
216
|
+
job_id: uuid,
|
|
217
|
+
execution_id: uuid,
|
|
218
|
+
trigger_events: {
|
|
219
|
+
type: 'array',
|
|
220
|
+
maxItems: AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_MAX,
|
|
221
|
+
items: executionTriggerEventSummaryJson
|
|
222
|
+
},
|
|
223
|
+
next_cursor: nullable({
|
|
224
|
+
type: 'string',
|
|
225
|
+
minLength: 1
|
|
226
|
+
}),
|
|
227
|
+
total: {
|
|
228
|
+
type: 'integer',
|
|
229
|
+
minimum: 0
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
required: [
|
|
233
|
+
'job_id',
|
|
234
|
+
'execution_id',
|
|
235
|
+
'trigger_events',
|
|
236
|
+
'next_cursor'
|
|
237
|
+
],
|
|
238
|
+
additionalProperties: false
|
|
239
|
+
};
|
|
240
|
+
export const getExecutionTriggerEventResultJsonSchema = executionTriggerEventDetailJson;
|
|
241
|
+
function isSerializedJson(value) {
|
|
242
|
+
try {
|
|
243
|
+
JSON.parse(value);
|
|
244
|
+
return true;
|
|
245
|
+
} catch {
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
//# sourceMappingURL=workflow-execution-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/schemas/workflow-execution-events.ts"],"sourcesContent":["import {z} from 'zod';\nimport type {AgentAccessObjectSchema} from './envelope.js';\nimport {AGENT_ACCESS_PAGE_LIMIT_MAX, AGENT_ACCESS_TEXT_MAX_BYTES} from './paged-tools.js';\nimport {dateTimeSchema, idSchema, utf8CappedString} from './primitives.js';\n\n/** Default page size for one execution's listener-event history. */\nexport const AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_LIMIT = 25;\n\n/** Maximum number of execution listener-event summaries in one page. */\nexport const AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_MAX = AGENT_ACCESS_PAGE_LIMIT_MAX;\n\n/** Maximum serialized UTF-8 size of one untrusted payload preview. */\nexport const AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PREVIEW_MAX_BYTES = 16 * 1024;\n\nconst textSchema = utf8CappedString(AGENT_ACCESS_TEXT_MAX_BYTES);\nconst payloadPreviewSchema = utf8CappedString(\n AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PREVIEW_MAX_BYTES,\n).refine(isSerializedJson, {message: 'Payload preview must be serialized JSON'});\n\nconst executionTriggerEventDispositionSchema = z.enum(['fire', 'resolve']);\nconst executionTriggerEventOutcomeSchema = z.enum([\n 'pending',\n 'consumed',\n 'honored',\n 'rejected',\n 'abandoned',\n]);\nconst executionTriggerEventOutcomeReasonSchema = z\n .enum(['payload_too_large', 'until', 'timeout', 'max_executions', 'cancelled'])\n .nullable();\nconst eventRefSchema = z.string().min(1);\n\nconst executionTriggerEventSummarySchema = z\n .object({\n event_ref: eventRefSchema,\n delivery_id: textSchema,\n source: textSchema,\n event: textSchema,\n disposition: executionTriggerEventDispositionSchema,\n outcome: executionTriggerEventOutcomeSchema,\n outcome_reason: executionTriggerEventOutcomeReasonSchema,\n received_at: dateTimeSchema,\n stored_payload_bytes: z.number().int().nonnegative(),\n normalized_event_bytes: z.number().int().nonnegative(),\n })\n .strict();\n\nexport const listExecutionTriggerEventsInputSchema = z\n .object({\n job_id: idSchema,\n execution_id: idSchema,\n limit: z\n .number()\n .int()\n .min(1)\n .max(AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_MAX)\n .default(AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_LIMIT),\n cursor: z.string().min(1).optional(),\n })\n .strict();\n\nexport const getExecutionTriggerEventInputSchema = z\n .object({\n job_id: idSchema,\n execution_id: idSchema,\n event_ref: eventRefSchema,\n })\n .strict();\n\nexport type ListExecutionTriggerEventsInputDto = z.output<\n typeof listExecutionTriggerEventsInputSchema\n>;\nexport type GetExecutionTriggerEventInputDto = z.output<typeof getExecutionTriggerEventInputSchema>;\n\nexport const listExecutionTriggerEventsResultSchema = z\n .object({\n job_id: idSchema,\n execution_id: idSchema,\n trigger_events: z\n .array(executionTriggerEventSummarySchema)\n .max(AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_MAX),\n next_cursor: z.string().nullable(),\n total: z.number().int().nonnegative().optional(),\n })\n .strict();\n\nexport type ListExecutionTriggerEventsResultDto = z.infer<\n typeof listExecutionTriggerEventsResultSchema\n>;\n\nexport const getExecutionTriggerEventResultSchema = executionTriggerEventSummarySchema\n .extend({\n /** Serialized JSON text. It is untrusted data, not a typed workflow value. */\n payload_preview: payloadPreviewSchema.nullable(),\n payload_preview_truncated: z.literal(true).optional(),\n payload_preview_total_bytes: z.number().int().nonnegative().optional(),\n })\n .strict();\n\nexport type GetExecutionTriggerEventResultDto = z.infer<\n typeof getExecutionTriggerEventResultSchema\n>;\n\nconst uuid = {type: 'string', format: 'uuid'} as const;\nconst dateTime = {type: 'string', format: 'date-time'} as const;\nconst text = {type: 'string', maxLength: AGENT_ACCESS_TEXT_MAX_BYTES} as const;\nconst eventRef = {type: 'string', minLength: 1} as const;\nconst serializedJson = {\n type: 'string',\n maxLength: AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PREVIEW_MAX_BYTES,\n contentMediaType: 'application/json',\n} as const;\nconst nullable = (schema: Record<string, unknown>) => ({anyOf: [schema, {type: 'null'}]}) as const;\n\nexport const listExecutionTriggerEventsInputJsonSchema = {\n type: 'object',\n properties: {\n job_id: uuid,\n execution_id: uuid,\n limit: {\n type: 'integer',\n minimum: 1,\n maximum: AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_MAX,\n default: AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_LIMIT,\n },\n cursor: {type: 'string', minLength: 1},\n },\n required: ['job_id', 'execution_id'],\n additionalProperties: false,\n} as const satisfies AgentAccessObjectSchema;\n\nexport const getExecutionTriggerEventInputJsonSchema = {\n type: 'object',\n properties: {job_id: uuid, execution_id: uuid, event_ref: eventRef},\n required: ['job_id', 'execution_id', 'event_ref'],\n additionalProperties: false,\n} as const satisfies AgentAccessObjectSchema;\n\nconst executionTriggerEventSummaryJson = {\n type: 'object',\n properties: {\n event_ref: eventRef,\n delivery_id: text,\n source: text,\n event: text,\n disposition: {type: 'string', enum: ['fire', 'resolve']},\n outcome: {\n type: 'string',\n enum: ['pending', 'consumed', 'honored', 'rejected', 'abandoned'],\n },\n outcome_reason: {\n anyOf: [\n {\n type: 'string',\n enum: ['payload_too_large', 'until', 'timeout', 'max_executions', 'cancelled'],\n },\n {type: 'null'},\n ],\n },\n received_at: dateTime,\n stored_payload_bytes: {type: 'integer', minimum: 0},\n normalized_event_bytes: {type: 'integer', minimum: 0},\n },\n required: [\n 'event_ref',\n 'delivery_id',\n 'source',\n 'event',\n 'disposition',\n 'outcome',\n 'outcome_reason',\n 'received_at',\n 'stored_payload_bytes',\n 'normalized_event_bytes',\n ],\n additionalProperties: false,\n} as const;\n\nconst executionTriggerEventDetailJson = {\n ...executionTriggerEventSummaryJson,\n properties: {\n ...executionTriggerEventSummaryJson.properties,\n payload_preview: nullable(serializedJson),\n payload_preview_truncated: {const: true},\n payload_preview_total_bytes: {type: 'integer', minimum: 0},\n },\n required: [...executionTriggerEventSummaryJson.required, 'payload_preview'],\n} as const;\n\nexport const listExecutionTriggerEventsResultJsonSchema = {\n type: 'object',\n properties: {\n job_id: uuid,\n execution_id: uuid,\n trigger_events: {\n type: 'array',\n maxItems: AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_MAX,\n items: executionTriggerEventSummaryJson,\n },\n next_cursor: nullable({type: 'string', minLength: 1}),\n total: {type: 'integer', minimum: 0},\n },\n required: ['job_id', 'execution_id', 'trigger_events', 'next_cursor'],\n additionalProperties: false,\n} as const satisfies AgentAccessObjectSchema;\n\nexport const getExecutionTriggerEventResultJsonSchema =\n executionTriggerEventDetailJson satisfies AgentAccessObjectSchema;\n\nfunction isSerializedJson(value: string): boolean {\n try {\n JSON.parse(value);\n return true;\n } catch {\n return false;\n }\n}\n"],"names":["z","AGENT_ACCESS_PAGE_LIMIT_MAX","AGENT_ACCESS_TEXT_MAX_BYTES","dateTimeSchema","idSchema","utf8CappedString","AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_LIMIT","AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PAGE_MAX","AGENT_ACCESS_EXECUTION_TRIGGER_EVENT_PREVIEW_MAX_BYTES","textSchema","payloadPreviewSchema","refine","isSerializedJson","message","executionTriggerEventDispositionSchema","enum","executionTriggerEventOutcomeSchema","executionTriggerEventOutcomeReasonSchema","nullable","eventRefSchema","string","min","executionTriggerEventSummarySchema","object","event_ref","delivery_id","source","event","disposition","outcome","outcome_reason","received_at","stored_payload_bytes","number","int","nonnegative","normalized_event_bytes","strict","listExecutionTriggerEventsInputSchema","job_id","execution_id","limit","max","default","cursor","optional","getExecutionTriggerEventInputSchema","listExecutionTriggerEventsResultSchema","trigger_events","array","next_cursor","total","getExecutionTriggerEventResultSchema","extend","payload_preview","payload_preview_truncated","literal","payload_preview_total_bytes","uuid","type","format","dateTime","text","maxLength","eventRef","minLength","serializedJson","contentMediaType","schema","anyOf","listExecutionTriggerEventsInputJsonSchema","properties","minimum","maximum","required","additionalProperties","getExecutionTriggerEventInputJsonSchema","executionTriggerEventSummaryJson","executionTriggerEventDetailJson","const","listExecutionTriggerEventsResultJsonSchema","maxItems","items","getExecutionTriggerEventResultJsonSchema","value","JSON","parse"],"mappings":"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"}
|