media-analysis-mcp 2.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,226 @@
1
+ import { readBounded } from "./bytes.js";
2
+ /**
3
+ * Bounded MPEG audio (MP3) probe. Only MPEG Layer III audio frames are accepted;
4
+ * an ID3-only file, a Layer I/II stream, or a file whose first frame lies past
5
+ * the bounded window is refused instead of being handed to the provider as
6
+ * "audio" that cannot be decoded.
7
+ */
8
+ export const MP3_PROBE_BYTES_LIMIT = 64 * 1024;
9
+ const MAX_ID3V2_TAG_BYTES = 1024 * 1024;
10
+ const FRAME_SCAN_BYTES = 1024;
11
+ const MIN_CONSECUTIVE_FRAMES = 3;
12
+ const MAX_SAMPLED_FRAMES = 16;
13
+ const MIN_PLAUSIBLE_KBPS = 8;
14
+ const MAX_PLAUSIBLE_KBPS = 320;
15
+ const LAYER3_BITRATES = {
16
+ "1": [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320],
17
+ "2": [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],
18
+ "2.5": [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],
19
+ };
20
+ const SAMPLE_RATES = {
21
+ "1": [44100, 48000, 32000],
22
+ "2": [22050, 24000, 16000],
23
+ "2.5": [11025, 12000, 8000],
24
+ };
25
+ function versionFromBits(bits) {
26
+ if (bits === 0)
27
+ return "2.5";
28
+ if (bits === 2)
29
+ return "2";
30
+ if (bits === 3)
31
+ return "1";
32
+ return undefined;
33
+ }
34
+ /**
35
+ * Parses one 4-byte MPEG audio frame header. `other-layer` is reported instead of
36
+ * `undefined` so a Layer I/II file can be refused with its actual codec name.
37
+ */
38
+ export function parseMpegFrameHeader(buffer) {
39
+ if (buffer.length < 4)
40
+ return undefined;
41
+ const b0 = buffer[0];
42
+ const b1 = buffer[1];
43
+ const b2 = buffer[2];
44
+ const b3 = buffer[3];
45
+ if (b0 === undefined || b1 === undefined || b2 === undefined || b3 === undefined)
46
+ return undefined;
47
+ if (b0 !== 0xff || (b1 & 0xe0) !== 0xe0)
48
+ return undefined;
49
+ const version = versionFromBits((b1 >> 3) & 0x03);
50
+ const layerBits = (b1 >> 1) & 0x03;
51
+ if (version === undefined || layerBits === 0)
52
+ return undefined;
53
+ const layer = (4 - layerBits);
54
+ if (layer !== 3) {
55
+ return { kind: "other-layer", codec: `mpeg${version}-layer${String(layer)}` };
56
+ }
57
+ const bitrateIndex = (b2 >> 4) & 0x0f;
58
+ const sampleRateIndex = (b2 >> 2) & 0x03;
59
+ if (bitrateIndex === 0 || bitrateIndex === 15 || sampleRateIndex === 3)
60
+ return undefined;
61
+ if ((b3 & 0x03) === 2)
62
+ return undefined;
63
+ const bitrateKbps = LAYER3_BITRATES[version][bitrateIndex];
64
+ const sampleRate = SAMPLE_RATES[version][sampleRateIndex];
65
+ if (bitrateKbps === undefined || sampleRate === undefined || bitrateKbps <= 0)
66
+ return undefined;
67
+ const samplesPerFrame = version === "1" ? 1152 : 576;
68
+ const padding = (b2 >> 1) & 0x01;
69
+ const frameLength = Math.floor((samplesPerFrame / 8) * ((bitrateKbps * 1000) / sampleRate)) + padding;
70
+ if (frameLength < 24 || frameLength > 8192)
71
+ return undefined;
72
+ return {
73
+ kind: "frame",
74
+ header: {
75
+ version,
76
+ layer,
77
+ bitrateKbps,
78
+ sampleRate,
79
+ mono: ((b3 >> 6) & 0x03) === 3,
80
+ frameLength,
81
+ samplesPerFrame,
82
+ },
83
+ };
84
+ }
85
+ function syncSafeSize(bytes) {
86
+ if (bytes.length < 4)
87
+ return undefined;
88
+ let size = 0;
89
+ for (const byte of bytes) {
90
+ if ((byte & 0x80) !== 0)
91
+ return undefined;
92
+ size = size * 128 + byte;
93
+ }
94
+ return size;
95
+ }
96
+ function sideInfoBytes(header) {
97
+ if (header.version === "1") {
98
+ return header.mono ? 17 : 32;
99
+ }
100
+ return header.mono ? 9 : 17;
101
+ }
102
+ /** Xing/Info/VBRI frame counts are exact enough to report a duration. */
103
+ function frameCountFromTags(head, header) {
104
+ const xingRelative = 4 + sideInfoBytes(header);
105
+ if (xingRelative + 12 <= head.length) {
106
+ const tag = head.toString("ascii", xingRelative, xingRelative + 4);
107
+ if (tag === "Xing" || tag === "Info") {
108
+ const flags = head.readUInt32BE(xingRelative + 4);
109
+ if ((flags & 0x01) !== 0) {
110
+ const count = head.readUInt32BE(xingRelative + 8);
111
+ if (count > 0)
112
+ return count;
113
+ }
114
+ }
115
+ }
116
+ if (44 <= head.length && head.toString("ascii", 36, 40) === "VBRI") {
117
+ const count = head.readUInt32BE(36 + 14);
118
+ if (count > 0)
119
+ return count;
120
+ }
121
+ return undefined;
122
+ }
123
+ function plausibleDuration(seconds, byteLength) {
124
+ if (!Number.isFinite(seconds) || seconds <= 0 || byteLength <= 0)
125
+ return undefined;
126
+ const impliedKbps = (byteLength * 8) / seconds / 1000;
127
+ if (impliedKbps < MIN_PLAUSIBLE_KBPS || impliedKbps > MAX_PLAUSIBLE_KBPS)
128
+ return undefined;
129
+ return seconds;
130
+ }
131
+ async function findFirstFrame(reader, from, fileSize, budget) {
132
+ const windowLength = Math.min(FRAME_SCAN_BYTES, fileSize - from);
133
+ if (windowLength < 4)
134
+ return undefined;
135
+ const window = await readBounded(reader, from, windowLength, budget, MP3_PROBE_BYTES_LIMIT);
136
+ if (window === undefined)
137
+ return undefined;
138
+ for (let index = 0; index + 4 <= window.length; index += 1) {
139
+ const parsed = parseMpegFrameHeader(window.subarray(index, index + 4));
140
+ if (parsed === undefined)
141
+ continue;
142
+ if (parsed.kind === "other-layer")
143
+ return { otherLayer: parsed.codec };
144
+ return { offset: from + index, header: parsed.header };
145
+ }
146
+ return undefined;
147
+ }
148
+ export async function probeMpegAudio(reader, fileSize) {
149
+ const budget = { bytesRead: 0 };
150
+ if (!Number.isSafeInteger(fileSize) || fileSize < 128)
151
+ return { status: "invalid" };
152
+ const start = await readBounded(reader, 0, 12, budget, MP3_PROBE_BYTES_LIMIT);
153
+ if (start === undefined)
154
+ return { status: "invalid" };
155
+ // Decided before any frame sync search: a container must never be scanned for
156
+ // frame headers, because media bytes can contain accidental sync patterns.
157
+ if (start.toString("ascii", 4, 8) === "ftyp")
158
+ return { status: "container" };
159
+ const id3 = start.subarray(0, 10);
160
+ let audioStart = 0;
161
+ if (id3.toString("ascii", 0, 3) === "ID3") {
162
+ const version = id3[3];
163
+ if (version === undefined || version < 2 || version > 4)
164
+ return { status: "invalid" };
165
+ const size = syncSafeSize(id3.subarray(6, 10));
166
+ if (size === undefined)
167
+ return { status: "invalid" };
168
+ const footerBytes = ((id3[5] ?? 0) & 0x10) === 0 ? 0 : 10;
169
+ audioStart = 10 + size + footerBytes;
170
+ if (audioStart >= fileSize || audioStart > MAX_ID3V2_TAG_BYTES)
171
+ return { status: "invalid" };
172
+ }
173
+ const first = await findFirstFrame(reader, audioStart, fileSize, budget);
174
+ if (first === undefined)
175
+ return { status: "invalid" };
176
+ if ("otherLayer" in first)
177
+ return { status: "unsupported", codec: first.otherLayer };
178
+ const firstHeader = first.header;
179
+ const firstOffset = first.offset;
180
+ const validatedOffsets = [];
181
+ let inconsistent = false;
182
+ let cursor = firstHeader;
183
+ let offset = firstOffset;
184
+ for (let index = 0; index < MAX_SAMPLED_FRAMES; index += 1) {
185
+ validatedOffsets.push(offset);
186
+ const next = offset + cursor.frameLength;
187
+ if (next + 4 > fileSize)
188
+ break;
189
+ const head = await readBounded(reader, next, 4, budget, MP3_PROBE_BYTES_LIMIT);
190
+ const parsed = head === undefined ? undefined : parseMpegFrameHeader(head);
191
+ if (parsed === undefined || parsed.kind !== "frame")
192
+ break;
193
+ const header = parsed.header;
194
+ if (header.version !== firstHeader.version ||
195
+ header.sampleRate !== firstHeader.sampleRate ||
196
+ header.layer !== firstHeader.layer) {
197
+ inconsistent = true;
198
+ break;
199
+ }
200
+ cursor = header;
201
+ offset = next;
202
+ }
203
+ if (validatedOffsets.length < MIN_CONSECUTIVE_FRAMES || inconsistent) {
204
+ return { status: "invalid" };
205
+ }
206
+ const headLength = Math.min(firstHeader.frameLength, 320);
207
+ const head = await readBounded(reader, firstOffset, headLength, budget, MP3_PROBE_BYTES_LIMIT);
208
+ const declaredFrames = head === undefined ? undefined : frameCountFromTags(head, firstHeader);
209
+ // A duration is only reported when the stream declares it. Sampling cannot prove that
210
+ // a whole file is constant bitrate — a region between two samples can differ — and a
211
+ // wrong number would drive the one-hour gate, so an undeclared stream stays unknown.
212
+ const durationSeconds = declaredFrames === undefined
213
+ ? undefined
214
+ : plausibleDuration((declaredFrames * firstHeader.samplesPerFrame) / firstHeader.sampleRate, fileSize);
215
+ return {
216
+ status: "ok",
217
+ facts: {
218
+ codec: "mp3",
219
+ sampleRate: firstHeader.sampleRate,
220
+ bitrateKbps: firstHeader.bitrateKbps,
221
+ audioStartOffset: firstOffset,
222
+ durationSeconds,
223
+ },
224
+ };
225
+ }
226
+ //# sourceMappingURL=mpeg-audio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mpeg-audio.js","sourceRoot":"","sources":["../src/mpeg-audio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { MediaError, looksSensitive } from "./errors.js";
2
+ function asRecord(value) {
3
+ return typeof value === "object" && value !== null && !Array.isArray(value)
4
+ ? value
5
+ : undefined;
6
+ }
7
+ function safeErrorCode(value) {
8
+ return typeof value === "string" && /^[A-Za-z0-9_.-]{1,64}$/.test(value) ? value : undefined;
9
+ }
10
+ export function safeProviderRequestId(value) {
11
+ return typeof value === "string" && /^[A-Za-z0-9_-]{1,128}$/.test(value) && !looksSensitive(value)
12
+ ? value
13
+ : undefined;
14
+ }
15
+ /**
16
+ * Provider error codes that name a model/modality capability failure rather than a
17
+ * bad request. This list is fixed by mock tests only: a live probe must confirm the
18
+ * exact spellings before MEDIA_MODEL_UNSUPPORTED is claimed as verified. An unknown
19
+ * code never becomes "this model cannot do it".
20
+ */
21
+ const MODEL_UNSUPPORTED_CODES = new Set([
22
+ "unsupportedmodel",
23
+ "modelnotsupported",
24
+ "unsupportedmodality",
25
+ "modalnotsupported",
26
+ "unsupportedmediatype",
27
+ "invalidmodality",
28
+ ].map((code) => code.toLowerCase()));
29
+ function inspectionSide(value) {
30
+ if (typeof value !== "string")
31
+ return "unknown";
32
+ if (/^Input(?: [A-Za-z0-9_-]+)? data may contain inappropriate content\.?$/i.test(value)) {
33
+ return "input";
34
+ }
35
+ if (/^Output data may contain inappropriate content\.?$/i.test(value)) {
36
+ return "output";
37
+ }
38
+ return "unknown";
39
+ }
40
+ /** Map only bounded identifiers and a known verdict; never relay provider prose. */
41
+ export function mapProviderError(payload, options = {}) {
42
+ const root = asRecord(payload);
43
+ if (root === undefined || !("error" in root || "code" in root))
44
+ return undefined;
45
+ const error = asRecord(root.error) ?? root;
46
+ const errorCode = safeErrorCode(error.code);
47
+ const requestId = safeProviderRequestId(error.request_id) ??
48
+ safeProviderRequestId(root.request_id) ??
49
+ safeProviderRequestId(options.requestId);
50
+ const inspection = errorCode !== undefined && /^(?:data_inspection_failed|DataInspectionFailed)$/i.test(errorCode);
51
+ const modelUnsupported = errorCode !== undefined && MODEL_UNSUPPORTED_CODES.has(errorCode.toLowerCase());
52
+ const code = inspection
53
+ ? "PROVIDER_CONTENT_REJECTED"
54
+ : modelUnsupported
55
+ ? "MEDIA_MODEL_UNSUPPORTED"
56
+ : "MEDIA_ANALYSIS_FAILED";
57
+ return new MediaError({
58
+ code,
59
+ stage: "analyzing",
60
+ ...(options.httpStatus === undefined ? {} : { httpStatus: options.httpStatus }),
61
+ ...(requestId === undefined ? {} : { requestId }),
62
+ diagnostic: {
63
+ parse_reason: "provider_error",
64
+ ...(errorCode === undefined ? {} : { error_code: errorCode }),
65
+ ...(options.receivedEvents === undefined
66
+ ? {}
67
+ : { received_sse_events: options.receivedEvents }),
68
+ ...(inspection ? { inspection_side: inspectionSide(error.message) } : {}),
69
+ ...(modelUnsupported ? { input_kind: "model_capability" } : {}),
70
+ },
71
+ });
72
+ }
73
+ //# sourceMappingURL=provider-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-error.js","sourceRoot":"","sources":["../src/provider-error.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Agent-visible answer redaction. This is the only text rewriting the media gateway
3
+ * performs on a model answer: it removes internal upload locations, credential-shaped
4
+ * tokens and local absolute paths. It never changes what the model said about the media.
5
+ *
6
+ * Two layers, in this order:
7
+ *
8
+ * 1. `redactKnownPaths` — the exact path strings the Agent passed for this call, in both
9
+ * slash styles (and lowercase for Windows). A model echoing the prompt's path is the
10
+ * realistic leak, and this layer is exact: it does not depend on guessing which
11
+ * characters a file name may contain (spaces, kana, punctuation all work).
12
+ * 2. The generic rules below — a supplement for paths this call never saw. They cover
13
+ * Windows drive and UNC paths in both slash styles, forward-slash UNC, and POSIX
14
+ * paths with non-ASCII segments. A generic match cannot cross whitespace, so a path
15
+ * that was never supplied and contains a space may be only partially redacted.
16
+ * Public URLs, time codes and prose that merely uses a slash (`画面/声音`) stay intact.
17
+ */
18
+ const PATH_SEGMENT = "[^\\s/<>\"',。;!?|?*]";
19
+ const KNOWN_POSIX_ROOTS = "home|tmp|Users|var|mnt|private|Volumes|media|srv|opt|etc|root|data";
20
+ /** Slash-style (and, for Windows paths, case) variants a model may echo. */
21
+ export function pathVariants(raw) {
22
+ const trimmed = raw.trim();
23
+ if (trimmed.length < 3) {
24
+ return [];
25
+ }
26
+ const forward = trimmed.replaceAll("\\", "/");
27
+ const backward = trimmed.replaceAll("/", "\\");
28
+ const variants = new Set([trimmed, forward, backward]);
29
+ if (/^[A-Za-z]:/.test(trimmed) || trimmed.startsWith("\\\\") || forward.startsWith("//")) {
30
+ for (const variant of [...variants]) {
31
+ variants.add(variant.toLowerCase());
32
+ }
33
+ }
34
+ return [...variants];
35
+ }
36
+ /** Public links are preserved, so the deterministic layer must not rewrite inside one. */
37
+ const PUBLIC_URL_SPAN = /\bhttps?:\/\/[^\s"'<>]+/gi;
38
+ const URL_PATH_SEPARATORS = new Set([",", "。", ";", "!", "?", "、", ",", ";", ".", "!", "?"]);
39
+ function replaceInGaps(segment, variants) {
40
+ let out = segment;
41
+ for (const variant of variants) {
42
+ if (out.includes(variant)) {
43
+ out = out.split(variant).join("[本地路径已隐藏]");
44
+ }
45
+ }
46
+ return out;
47
+ }
48
+ /**
49
+ * Exact, deterministic redaction of the media paths supplied for this call. Applied
50
+ * before the generic rules so characters a heuristic would have to enumerate (spaces,
51
+ * kana, punctuation) are covered.
52
+ *
53
+ * Public `http(s)` spans are left untouched: a local path can be a substring of an
54
+ * unrelated public link (local `/tmp/x.mp4` inside `https://cdn.example/tmp/x.mp4`).
55
+ * A sentence separator followed immediately by a known path ends the public link;
56
+ * the path then belongs to the replaceable gap, even when it contains spaces. An
57
+ * `oss://` link needs no special case here because the generic rules hide the whole
58
+ * token on the next pass.
59
+ */
60
+ export function redactKnownPaths(text, knownPaths) {
61
+ const variants = knownPaths
62
+ .flatMap((raw) => pathVariants(raw))
63
+ .filter((variant) => variant.length >= 3);
64
+ if (variants.length === 0) {
65
+ return text;
66
+ }
67
+ let out = "";
68
+ let cursor = 0;
69
+ const urlMatcher = new RegExp(PUBLIC_URL_SPAN);
70
+ for (let match = urlMatcher.exec(text); match !== null; match = urlMatcher.exec(text)) {
71
+ const start = match.index;
72
+ let end = start + match[0].length;
73
+ for (let index = start; index < end; index += 1) {
74
+ if (URL_PATH_SEPARATORS.has(text[index] ?? "") &&
75
+ variants.some((variant) => text.startsWith(variant, index + 1))) {
76
+ end = index;
77
+ break;
78
+ }
79
+ }
80
+ out += replaceInGaps(text.slice(cursor, start), variants);
81
+ out += text.slice(start, end);
82
+ cursor = end;
83
+ urlMatcher.lastIndex = end;
84
+ }
85
+ return out + replaceInGaps(text.slice(cursor), variants);
86
+ }
87
+ export function sanitizeSensitiveText(text) {
88
+ return (text
89
+ .replace(/\boss:\/\/[^\s"'<>]+/gi, "[内部媒体地址已隐藏]")
90
+ .replace(/\b(?:sk-(?:ws-|proj-|live-|test-)?[A-Za-z0-9_-]{12,}|Bearer\s+[A-Za-z0-9._~-]{12,})\b/gi, "[凭证已隐藏]")
91
+ .replace(/(?<![A-Za-z0-9])(?:[A-Za-z]:[\\/]|\\\\)[^\r\n<>"',。;!?|?*]*?\.[A-Za-z0-9]{1,8}(?=$|[\s,。;!?<>"'])/gi, "[本地路径已隐藏]")
92
+ .replace(/(?<![A-Za-z0-9])(?:[A-Za-z]:[\\/]|\\\\)[^\s\r\n<>"',。;!?|?*]+/g, "[本地路径已隐藏]")
93
+ // Forward-slash UNC: two slashes, a host and at least one segment. A URL's `//`
94
+ // is preceded by `:` and is therefore excluded by the lookbehind.
95
+ .replace(new RegExp(`(?<![A-Za-z0-9:/._-])//${PATH_SEGMENT}+(?:/${PATH_SEGMENT}+)+`, "g"), "[本地路径已隐藏]")
96
+ // POSIX path under a standard root, whatever the leaf is called.
97
+ .replace(new RegExp(`(?<![A-Za-z0-9:/._-])/(?:${KNOWN_POSIX_ROOTS})(?:/${PATH_SEGMENT}+)+`, "g"), "[本地路径已隐藏]")
98
+ // Any other multi-segment POSIX path, recognised by its file extension.
99
+ .replace(new RegExp(`(?<![A-Za-z0-9:/._-])(?:/${PATH_SEGMENT}+)+/${PATH_SEGMENT}*\\.[A-Za-z0-9]{1,8}(?=$|[\\s,。;!?<>"'])`, "g"), "[本地路径已隐藏]")
100
+ // A root-level file, also recognised by its extension.
101
+ .replace(new RegExp(`(?<![A-Za-z0-9:/._-])/(?!/)${PATH_SEGMENT}+\\.[A-Za-z0-9]{1,8}(?=$|[\\s,。;!?<>"'])`, "g"), "[本地路径已隐藏]"));
102
+ }
103
+ //# sourceMappingURL=sanitize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAC5C,MAAM,iBAAiB,GAAG,oEAAoE,CAAC;AAE/F,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvD,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzF,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;YACpC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvB,CAAC;AAED,0FAA0F;AAC1F,MAAM,eAAe,GAAG,2BAA2B,CAAC;AACpD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAE7F,SAAS,aAAa,CAAC,OAAe,EAAE,QAA2B;IACjE,IAAI,GAAG,GAAG,OAAO,CAAC;IAClB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,UAA6B;IAC1E,MAAM,QAAQ,GAAG,UAAU;SACxB,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;SACnC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,KAAK,IAAI,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAClC,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAChD,IACE,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC1C,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,EAC/D,CAAC;gBACD,GAAG,GAAG,KAAK,CAAC;gBACZ,MAAM;YACR,CAAC;QACH,CAAC;QACD,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC1D,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,CAAC;QACb,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,CACL,IAAI;SACD,OAAO,CAAC,wBAAwB,EAAE,aAAa,CAAC;SAChD,OAAO,CACN,yFAAyF,EACzF,SAAS,CACV;SACA,OAAO,CACN,qGAAqG,EACrG,WAAW,CACZ;SACA,OAAO,CACN,gEAAgE,EAChE,WAAW,CACZ;QACD,gFAAgF;QAChF,kEAAkE;SACjE,OAAO,CACN,IAAI,MAAM,CAAC,0BAA0B,YAAY,QAAQ,YAAY,KAAK,EAAE,GAAG,CAAC,EAChF,WAAW,CACZ;QACD,iEAAiE;SAChE,OAAO,CACN,IAAI,MAAM,CAAC,4BAA4B,iBAAiB,QAAQ,YAAY,KAAK,EAAE,GAAG,CAAC,EACvF,WAAW,CACZ;QACD,wEAAwE;SACvE,OAAO,CACN,IAAI,MAAM,CACR,4BAA4B,YAAY,OAAO,YAAY,0CAA0C,EACrG,GAAG,CACJ,EACD,WAAW,CACZ;QACD,uDAAuD;SACtD,OAAO,CACN,IAAI,MAAM,CACR,8BAA8B,YAAY,0CAA0C,EACpF,GAAG,CACJ,EACD,WAAW,CACZ,CACJ,CAAC;AACJ,CAAC"}