@shiftleftpt/sbd-toe-mcp 0.1.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.
Files changed (93) hide show
  1. package/.env.example +35 -0
  2. package/LICENSE +201 -0
  3. package/README.md +323 -0
  4. package/data/publish/algolia_docs_records.json +148847 -0
  5. package/data/publish/algolia_docs_records_enriched.json +194004 -0
  6. package/data/publish/algolia_entities_records.json +74715 -0
  7. package/data/publish/algolia_entities_records_enriched.json +177587 -0
  8. package/data/publish/algolia_index_settings.json +102 -0
  9. package/data/publish/sbd-toe-index-compact.json +111 -0
  10. package/data/reports/run_manifest.json +10 -0
  11. package/dist/backend/semantic-index-gateway.d.ts +25 -0
  12. package/dist/backend/semantic-index-gateway.js +555 -0
  13. package/dist/backend/semantic-index-gateway.js.map +1 -0
  14. package/dist/backend/semantic-index-gateway.test.d.ts +1 -0
  15. package/dist/backend/semantic-index-gateway.test.js +384 -0
  16. package/dist/backend/semantic-index-gateway.test.js.map +1 -0
  17. package/dist/bootstrap/checkout-backend.d.ts +31 -0
  18. package/dist/bootstrap/checkout-backend.js +136 -0
  19. package/dist/bootstrap/checkout-backend.js.map +1 -0
  20. package/dist/bootstrap/checkout-backend.test.d.ts +1 -0
  21. package/dist/bootstrap/checkout-backend.test.js +158 -0
  22. package/dist/bootstrap/checkout-backend.test.js.map +1 -0
  23. package/dist/bootstrap/release-checkout.d.ts +8 -0
  24. package/dist/bootstrap/release-checkout.js +168 -0
  25. package/dist/bootstrap/release-checkout.js.map +1 -0
  26. package/dist/bootstrap/release-checkout.test.d.ts +1 -0
  27. package/dist/bootstrap/release-checkout.test.js +137 -0
  28. package/dist/bootstrap/release-checkout.test.js.map +1 -0
  29. package/dist/config.d.ts +4 -0
  30. package/dist/config.js +81 -0
  31. package/dist/config.js.map +1 -0
  32. package/dist/index.d.ts +2 -0
  33. package/dist/index.js +1063 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/orchestrator/ask-manual.d.ts +13 -0
  36. package/dist/orchestrator/ask-manual.js +202 -0
  37. package/dist/orchestrator/ask-manual.js.map +1 -0
  38. package/dist/prompt/build-answer-prompt.d.ts +2 -0
  39. package/dist/prompt/build-answer-prompt.js +51 -0
  40. package/dist/prompt/build-answer-prompt.js.map +1 -0
  41. package/dist/prompt/system-prompt.d.ts +1 -0
  42. package/dist/prompt/system-prompt.js +94 -0
  43. package/dist/prompt/system-prompt.js.map +1 -0
  44. package/dist/resources/sbd-toe-resources.d.ts +18 -0
  45. package/dist/resources/sbd-toe-resources.js +164 -0
  46. package/dist/resources/sbd-toe-resources.js.map +1 -0
  47. package/dist/resources/sbd-toe-resources.test.d.ts +1 -0
  48. package/dist/resources/sbd-toe-resources.test.js +134 -0
  49. package/dist/resources/sbd-toe-resources.test.js.map +1 -0
  50. package/dist/test-utils.d.ts +153 -0
  51. package/dist/test-utils.js +176 -0
  52. package/dist/test-utils.js.map +1 -0
  53. package/dist/tools/generate-document.d.ts +22 -0
  54. package/dist/tools/generate-document.js +392 -0
  55. package/dist/tools/generate-document.js.map +1 -0
  56. package/dist/tools/generate-document.test.d.ts +1 -0
  57. package/dist/tools/generate-document.test.js +189 -0
  58. package/dist/tools/generate-document.test.js.map +1 -0
  59. package/dist/tools/map-review-scope.d.ts +20 -0
  60. package/dist/tools/map-review-scope.js +299 -0
  61. package/dist/tools/map-review-scope.js.map +1 -0
  62. package/dist/tools/map-review-scope.test.d.ts +1 -0
  63. package/dist/tools/map-review-scope.test.js +204 -0
  64. package/dist/tools/map-review-scope.test.js.map +1 -0
  65. package/dist/tools/plan-repo-governance.d.ts +41 -0
  66. package/dist/tools/plan-repo-governance.js +509 -0
  67. package/dist/tools/plan-repo-governance.js.map +1 -0
  68. package/dist/tools/plan-repo-governance.test.d.ts +1 -0
  69. package/dist/tools/plan-repo-governance.test.js +237 -0
  70. package/dist/tools/plan-repo-governance.test.js.map +1 -0
  71. package/dist/tools/structured-tools.d.ts +5 -0
  72. package/dist/tools/structured-tools.js +310 -0
  73. package/dist/tools/structured-tools.js.map +1 -0
  74. package/dist/tools/structured-tools.test.d.ts +1 -0
  75. package/dist/tools/structured-tools.test.js +459 -0
  76. package/dist/tools/structured-tools.test.js.map +1 -0
  77. package/dist/types.d.ts +160 -0
  78. package/dist/types.js +2 -0
  79. package/dist/types.js.map +1 -0
  80. package/dist/upstream/backend-contract.d.ts +3 -0
  81. package/dist/upstream/backend-contract.js +37 -0
  82. package/dist/upstream/backend-contract.js.map +1 -0
  83. package/dist/validators/ai-disclosure.d.ts +39 -0
  84. package/dist/validators/ai-disclosure.js +183 -0
  85. package/dist/validators/ai-disclosure.js.map +1 -0
  86. package/dist/validators/ai-disclosure.test.d.ts +1 -0
  87. package/dist/validators/ai-disclosure.test.js +244 -0
  88. package/dist/validators/ai-disclosure.test.js.map +1 -0
  89. package/examples/claude-desktop.json +8 -0
  90. package/examples/vscode.mcp.json +9 -0
  91. package/package.json +50 -0
  92. package/prompts/sbd-toe-chat-system.md +71 -0
  93. package/smithery.yaml +44 -0
@@ -0,0 +1,555 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { getConfig, resolveAppPath } from "../config.js";
3
+ import { tryLoadBackendCheckout } from "../upstream/backend-contract.js";
4
+ const TITLE_KEYS = [
5
+ "title",
6
+ "heading",
7
+ "section_title",
8
+ "practice_title",
9
+ "chapter_title",
10
+ "label",
11
+ "name",
12
+ "entity",
13
+ "entity_label"
14
+ ];
15
+ const EXCERPT_KEYS = [
16
+ "content",
17
+ "content_text",
18
+ "text",
19
+ "summary",
20
+ "body",
21
+ "description",
22
+ "chunk_text",
23
+ "record_text",
24
+ "plain_text",
25
+ "searchable_text"
26
+ ];
27
+ const CHAPTER_KEYS = ["chapter_title", "chapter_name", "chapter", "chapter_id"];
28
+ const SECTION_KEYS = ["section_title", "section_name", "section", "section_id"];
29
+ const ROLE_KEYS = ["role", "roles", "persona", "owner_role", "related_roles"];
30
+ const PHASE_KEYS = ["phase", "lifecycle_phase", "stage", "go_live_phase", "related_phases"];
31
+ const ACTION_KEYS = ["action", "recommended_action", "requirement", "control"];
32
+ const ARTEFACT_KEYS = ["artefact", "artifact", "evidence", "deliverable"];
33
+ const URL_KEYS = ["url", "source_url", "page_url", "record_url", "manual_url"];
34
+ const PAGE_KEYS = ["page", "page_label", "page_number", "location"];
35
+ const TAG_KEYS = [
36
+ "tags",
37
+ "keywords",
38
+ "labels",
39
+ "topics",
40
+ "related_frameworks",
41
+ "related_risk_levels"
42
+ ];
43
+ const DOCUMENT_PATH_KEYS = ["document_path"];
44
+ const CHAPTER_PATH_KEYS = ["chapter_path"];
45
+ const DOCUMENT_TITLE_KEYS = ["document_title"];
46
+ const SOURCE_PRIORITY = {
47
+ docs: 0,
48
+ entities: 1
49
+ };
50
+ const SOURCE_PREFIX = {
51
+ docs: "D",
52
+ entities: "E"
53
+ };
54
+ let cachedSnapshots;
55
+ function extractStringArray(value) {
56
+ if (!Array.isArray(value)) {
57
+ return undefined;
58
+ }
59
+ const result = value.filter((item) => typeof item === "string");
60
+ return result.length > 0 ? result : undefined;
61
+ }
62
+ export function buildEnrichedLookup(payload) {
63
+ const map = new Map();
64
+ for (const item of payload.items ?? []) {
65
+ const id = typeof item.objectID === "string" ? item.objectID : undefined;
66
+ if (!id) {
67
+ continue;
68
+ }
69
+ map.set(id, {
70
+ aliases_pt_en: extractStringArray(item.aliases_pt_en),
71
+ intent_topics: extractStringArray(item.intent_topics),
72
+ canonical_control_ids: extractStringArray(item.canonical_control_ids),
73
+ artifact_ids: extractStringArray(item.artifact_ids),
74
+ authority_level: typeof item.authority_level === "string" ? item.authority_level : undefined
75
+ });
76
+ }
77
+ return map;
78
+ }
79
+ function normalizeWhitespace(value) {
80
+ return value.replace(/\s+/g, " ").trim();
81
+ }
82
+ function flattenUnknown(value) {
83
+ if (value === null || value === undefined) {
84
+ return undefined;
85
+ }
86
+ if (typeof value === "string") {
87
+ const normalized = normalizeWhitespace(value);
88
+ return normalized.length > 0 ? normalized : undefined;
89
+ }
90
+ if (typeof value === "number" || typeof value === "boolean") {
91
+ return String(value);
92
+ }
93
+ if (Array.isArray(value)) {
94
+ const flattened = value
95
+ .map((item) => flattenUnknown(item))
96
+ .filter((item) => Boolean(item));
97
+ return flattened.length > 0 ? normalizeWhitespace(flattened.join(" | ")) : undefined;
98
+ }
99
+ if (typeof value === "object") {
100
+ const object = value;
101
+ const directText = ["value", "text", "label", "name"]
102
+ .map((key) => flattenUnknown(object[key]))
103
+ .find(Boolean);
104
+ if (directText) {
105
+ return directText;
106
+ }
107
+ }
108
+ return undefined;
109
+ }
110
+ function firstString(record, keys) {
111
+ for (const key of keys) {
112
+ const value = flattenUnknown(record[key]);
113
+ if (value) {
114
+ return value;
115
+ }
116
+ }
117
+ return undefined;
118
+ }
119
+ function stringList(record, keys) {
120
+ const values = [];
121
+ for (const key of keys) {
122
+ const rawValue = record[key];
123
+ if (Array.isArray(rawValue)) {
124
+ for (const item of rawValue) {
125
+ const text = flattenUnknown(item);
126
+ if (text) {
127
+ values.push(text);
128
+ }
129
+ }
130
+ continue;
131
+ }
132
+ const text = flattenUnknown(rawValue);
133
+ if (text) {
134
+ values.push(text);
135
+ }
136
+ }
137
+ return Array.from(new Set(values));
138
+ }
139
+ function numericValue(value) {
140
+ if (typeof value === "number" && Number.isFinite(value)) {
141
+ return value;
142
+ }
143
+ if (typeof value === "string" && value.trim().length > 0) {
144
+ const parsed = Number(value);
145
+ return Number.isFinite(parsed) ? parsed : undefined;
146
+ }
147
+ return undefined;
148
+ }
149
+ function booleanValue(value) {
150
+ if (typeof value === "boolean") {
151
+ return value;
152
+ }
153
+ if (typeof value === "string") {
154
+ const normalized = value.trim().toLowerCase();
155
+ if (["true", "1", "yes", "on"].includes(normalized)) {
156
+ return true;
157
+ }
158
+ if (["false", "0", "no", "off"].includes(normalized)) {
159
+ return false;
160
+ }
161
+ }
162
+ return undefined;
163
+ }
164
+ function truncate(text, maxLength = 420) {
165
+ if (text.length <= maxLength) {
166
+ return text;
167
+ }
168
+ return `${text.slice(0, maxLength - 1).trimEnd()}…`;
169
+ }
170
+ function normalizeForSearch(value) {
171
+ return value
172
+ .normalize("NFD")
173
+ .replace(/\p{Diacritic}/gu, "")
174
+ .toLowerCase();
175
+ }
176
+ function tokenize(value) {
177
+ return normalizeForSearch(value)
178
+ .split(/[^\p{L}\p{N}]+/gu)
179
+ .filter((token) => token.length > 2);
180
+ }
181
+ const CANONICAL_ALIASES_PT_EN = {
182
+ "repositório de código": ["code repository", "codebase", "repository"],
183
+ "dependências": ["dependencies", "dependency", "package"],
184
+ "dependência": ["dependency", "dependencies", "package"],
185
+ sbom: ["software bill of materials", "bill of materials"],
186
+ "bill of materials": ["sbom", "bills"],
187
+ sca: ["software composition analysis", "composition analysis"],
188
+ "composition analysis": ["sca", "software composition"],
189
+ "ci/cd": ["continuous integration", "continuous delivery", "pipeline", "ci", "cd"],
190
+ "continuous integration": ["ci/cd", "ci", "pipeline"],
191
+ "continuous delivery": ["ci/cd", "cd", "pipeline"],
192
+ pipeline: ["ci/cd", "workflow", "workflow github actions"],
193
+ "github actions": ["pipeline", "workflow", "action", "github"],
194
+ "workflow github": ["github actions", "workflow github actions"],
195
+ aprovação: ["approval", "review", "approve"],
196
+ "aprovação de publicação": ["release approval", "publish approval"],
197
+ aprovações: ["approvals", "reviews"],
198
+ exceção: ["exception", "exemption", "waiver"],
199
+ exceções: ["exceptions", "exemptions", "waivers"],
200
+ capítulo: ["chapter", "section", "guide"],
201
+ controlo: ["control", "requirement", "verificação"],
202
+ "sast": ["static analysis", "security analysis", "code scanning"],
203
+ "static analysis": ["sast", "security analysis"],
204
+ "git": ["version control", "vcs", "scm"],
205
+ "configuration management": ["version control", "git"],
206
+ "upstream": ["backend", "source"],
207
+ "snapshot": ["snapshot", "snapshot enriched", "enriched"],
208
+ publicação: ["publication", "publishing", "release"],
209
+ publicar: ["publish", "publishing", "release"]
210
+ };
211
+ const INTENT_KEYWORDS = {
212
+ repo_bootstrap: ["bootstrap", "criar", "create", "new", "setup", "inicializar", "init", "repository"],
213
+ dependency_governance: [
214
+ "dependência",
215
+ "dependency",
216
+ "sbom",
217
+ "sca",
218
+ "package",
219
+ "lock",
220
+ "upgrade",
221
+ "atualizar",
222
+ "vendor"
223
+ ],
224
+ ci_cd_gates: [
225
+ "ci/cd",
226
+ "pipeline",
227
+ "workflow",
228
+ "github actions",
229
+ "gate",
230
+ "approval",
231
+ "validação",
232
+ "check",
233
+ "teste"
234
+ ],
235
+ review_scope: ["rever", "review", "auditar", "verificar", "check", "scope", "escopo", "o que", "what"],
236
+ canonical_guidance: ["como", "how", "quando", "when", "onde", "where", "guidance", "melhor", "best"],
237
+ generic: []
238
+ };
239
+ export function expandQueryWithAliases(query) {
240
+ let expanded = query;
241
+ for (const [canonical, aliases] of Object.entries(CANONICAL_ALIASES_PT_EN)) {
242
+ const pattern = new RegExp(`\\b${canonical}\\b`, "gi");
243
+ if (pattern.test(expanded)) {
244
+ const expansion = aliases.join(" ");
245
+ expanded = expanded.replace(pattern, (match) => `${match} ${expansion}`);
246
+ }
247
+ }
248
+ return expanded;
249
+ }
250
+ export function classifyQueryIntent(query) {
251
+ const normalized = normalizeForSearch(query);
252
+ const tokens = tokenize(query);
253
+ for (const [intent, keywords] of Object.entries(INTENT_KEYWORDS)) {
254
+ if (intent === "generic")
255
+ continue;
256
+ for (const keyword of keywords) {
257
+ const keywordNormalized = normalizeForSearch(keyword);
258
+ if (normalized.includes(keywordNormalized) || tokens.some((t) => keywordNormalized.includes(t) || t.includes(keywordNormalized))) {
259
+ return intent;
260
+ }
261
+ }
262
+ }
263
+ return "generic";
264
+ }
265
+ export function computeIntentScore(record, intent, expandedTokens) {
266
+ let boost = 0;
267
+ if (record.intent_topics && record.intent_topics.length > 0) {
268
+ for (const topic of record.intent_topics) {
269
+ const topicNormalized = normalizeForSearch(topic);
270
+ if (intent === "repo_bootstrap" && topicNormalized.includes("bootstrap")) {
271
+ boost += 3;
272
+ }
273
+ if (intent === "dependency_governance" && (topicNormalized.includes("depend") || topicNormalized.includes("sbom") || topicNormalized.includes("sca"))) {
274
+ boost += 3;
275
+ }
276
+ if (intent === "ci_cd_gates" && (topicNormalized.includes("pipeline") || topicNormalized.includes("ci") || topicNormalized.includes("gate"))) {
277
+ boost += 3;
278
+ }
279
+ if (intent === "review_scope" && topicNormalized.includes("review")) {
280
+ boost += 2;
281
+ }
282
+ }
283
+ }
284
+ if (record.aliases_pt_en && record.aliases_pt_en.length > 0) {
285
+ for (const alias of record.aliases_pt_en) {
286
+ const aliasNormalized = normalizeForSearch(alias);
287
+ const aliasTokenized = tokenize(alias);
288
+ if (expandedTokens.some((t) => aliasNormalized.includes(t) || aliasTokenized.includes(t))) {
289
+ boost += 2;
290
+ }
291
+ }
292
+ }
293
+ if (record.authority_level) {
294
+ const levelNormalized = normalizeForSearch(record.authority_level);
295
+ if (levelNormalized === "canonical" && intent !== "generic") {
296
+ boost += 1;
297
+ }
298
+ if ((levelNormalized === "demo" || levelNormalized === "example" || levelNormalized === "training") && intent !== "generic") {
299
+ boost -= 1;
300
+ }
301
+ }
302
+ return boost;
303
+ }
304
+ function deriveExcerpt(record) {
305
+ const excerpt = firstString(record, EXCERPT_KEYS);
306
+ if (excerpt) {
307
+ return truncate(excerpt);
308
+ }
309
+ const fallback = Object.entries(record)
310
+ .filter(([key]) => !key.startsWith("_"))
311
+ .slice(0, 10)
312
+ .map(([key, value]) => {
313
+ const flattened = flattenUnknown(value);
314
+ return flattened ? `${key}: ${flattened}` : undefined;
315
+ })
316
+ .filter((item) => Boolean(item))
317
+ .join(" | ");
318
+ return truncate(fallback || "Sem excerto textual disponível no record recuperado.");
319
+ }
320
+ function buildObjectId(record, indexName, rank) {
321
+ const candidates = [record.objectID, record.id, record.record_id]
322
+ .map((value) => flattenUnknown(value))
323
+ .filter((value) => Boolean(value));
324
+ return candidates[0] ?? `${indexName}#${rank + 1}`;
325
+ }
326
+ function trimLeadingSlashes(value) {
327
+ return value.replace(/^\/+/, "");
328
+ }
329
+ function trimTrailingSlashes(value) {
330
+ return value.replace(/\/+$/, "");
331
+ }
332
+ function derivePageUrl(record) {
333
+ const config = getConfig();
334
+ const explicitUrl = firstString(record, URL_KEYS);
335
+ if (explicitUrl) {
336
+ return explicitUrl;
337
+ }
338
+ const rawPath = firstString(record, DOCUMENT_PATH_KEYS) ?? firstString(record, CHAPTER_PATH_KEYS);
339
+ if (!rawPath) {
340
+ return undefined;
341
+ }
342
+ const normalizedPath = trimLeadingSlashes(rawPath.replace(/\\/g, "/"));
343
+ if (normalizedPath.startsWith("010-sbd-manual/")) {
344
+ const relativePath = normalizedPath
345
+ .slice("010-sbd-manual/".length)
346
+ .replace(/\.md$/i, "")
347
+ .replace(/\/index$/i, "");
348
+ return `${trimTrailingSlashes(config.prompt.manualBaseUrl)}/${trimLeadingSlashes(relativePath)}`;
349
+ }
350
+ if (normalizedPath.startsWith("002-cross-check-normativo/")) {
351
+ const relativePath = normalizedPath
352
+ .slice("002-cross-check-normativo/".length)
353
+ .replace(/\.md$/i, "")
354
+ .replace(/\/index$/i, "");
355
+ return `${trimTrailingSlashes(config.prompt.crossCheckBaseUrl)}/${trimLeadingSlashes(relativePath)}`;
356
+ }
357
+ return undefined;
358
+ }
359
+ function buildLocalScore(query, record) {
360
+ const expandedQuery = expandQueryWithAliases(query);
361
+ const queryText = normalizeForSearch(expandedQuery);
362
+ const tokens = Array.from(new Set(tokenize(expandedQuery)));
363
+ const intent = classifyQueryIntent(query);
364
+ const title = normalizeForSearch(record.title);
365
+ const metadata = normalizeForSearch([
366
+ record.chapter,
367
+ record.section,
368
+ record.role,
369
+ record.phase,
370
+ record.action,
371
+ record.artefact,
372
+ record.tags.join(" "),
373
+ record.documentTitle
374
+ ]
375
+ .filter(Boolean)
376
+ .join(" "));
377
+ const excerpt = normalizeForSearch(record.excerpt);
378
+ let score = record.source === "docs" ? 6 : 4;
379
+ if (queryText.length > 0 && title.includes(queryText)) {
380
+ score += 10;
381
+ }
382
+ if (queryText.length > 0 && metadata.includes(queryText)) {
383
+ score += 6;
384
+ }
385
+ if (queryText.length > 0 && excerpt.includes(queryText)) {
386
+ score += 4;
387
+ }
388
+ for (const token of tokens) {
389
+ if (title.includes(token)) {
390
+ score += 3;
391
+ continue;
392
+ }
393
+ if (metadata.includes(token)) {
394
+ score += 2;
395
+ continue;
396
+ }
397
+ if (excerpt.includes(token)) {
398
+ score += 1;
399
+ }
400
+ }
401
+ const askAiPriority = numericValue(record.raw.ask_ai_priority_rank);
402
+ if (askAiPriority !== undefined) {
403
+ score += Math.max(0, 6 - askAiPriority);
404
+ }
405
+ const confidence = numericValue(record.raw.confidence);
406
+ if (confidence !== undefined) {
407
+ score += confidence * 2;
408
+ }
409
+ if (booleanValue(record.raw.is_primary_source)) {
410
+ score += 2;
411
+ }
412
+ const intentBoost = computeIntentScore(record, intent, tokens);
413
+ score += intentBoost;
414
+ return Number(score.toFixed(2));
415
+ }
416
+ export function normalizeHit(hit, source, indexName, rank, citationId, query, enrichedLookup) {
417
+ const enrichedId = typeof hit.objectID === "string" ? hit.objectID : undefined;
418
+ const enriched = enrichedId ? enrichedLookup?.get(enrichedId) : undefined;
419
+ const documentPath = firstString(hit, DOCUMENT_PATH_KEYS);
420
+ const chapterPath = firstString(hit, CHAPTER_PATH_KEYS);
421
+ const baseRecord = {
422
+ citationId,
423
+ source,
424
+ indexName,
425
+ objectID: buildObjectId(hit, indexName, rank),
426
+ title: firstString(hit, TITLE_KEYS) ??
427
+ firstString(hit, SECTION_KEYS) ??
428
+ firstString(hit, CHAPTER_KEYS) ??
429
+ `Record ${rank + 1}`,
430
+ excerpt: deriveExcerpt(hit),
431
+ chapter: firstString(hit, CHAPTER_KEYS),
432
+ section: firstString(hit, SECTION_KEYS),
433
+ role: firstString(hit, ROLE_KEYS),
434
+ phase: firstString(hit, PHASE_KEYS),
435
+ action: firstString(hit, ACTION_KEYS),
436
+ artefact: firstString(hit, ARTEFACT_KEYS),
437
+ url: derivePageUrl(hit),
438
+ pageLabel: firstString(hit, PAGE_KEYS) ?? documentPath ?? chapterPath,
439
+ documentPath,
440
+ chapterPath,
441
+ documentTitle: firstString(hit, DOCUMENT_TITLE_KEYS),
442
+ tags: stringList(hit, TAG_KEYS),
443
+ aliases_pt_en: enriched?.aliases_pt_en,
444
+ intent_topics: enriched?.intent_topics,
445
+ canonical_control_ids: enriched?.canonical_control_ids,
446
+ artifact_ids: enriched?.artifact_ids,
447
+ authority_level: enriched?.authority_level,
448
+ algoliaRank: rank + 1,
449
+ raw: hit
450
+ };
451
+ return {
452
+ ...baseRecord,
453
+ localScore: buildLocalScore(query, baseRecord)
454
+ };
455
+ }
456
+ function sortByPriority(records) {
457
+ return [...records].sort((left, right) => {
458
+ const sourceDifference = SOURCE_PRIORITY[left.source] - SOURCE_PRIORITY[right.source];
459
+ if (sourceDifference !== 0) {
460
+ return sourceDifference;
461
+ }
462
+ if (right.localScore !== left.localScore) {
463
+ return right.localScore - left.localScore;
464
+ }
465
+ return left.algoliaRank - right.algoliaRank;
466
+ });
467
+ }
468
+ function dedupeRecords(records) {
469
+ const seen = new Set();
470
+ const deduped = [];
471
+ for (const record of records) {
472
+ const fingerprint = normalizeForSearch(`${record.objectID}|${record.title}|${record.chapter ?? ""}|${record.excerpt}`);
473
+ if (seen.has(fingerprint)) {
474
+ continue;
475
+ }
476
+ seen.add(fingerprint);
477
+ deduped.push(record);
478
+ }
479
+ return deduped;
480
+ }
481
+ function readSnapshotFile(filePath) {
482
+ const absolutePath = resolveAppPath(filePath);
483
+ let raw;
484
+ try {
485
+ raw = readFileSync(absolutePath, "utf8");
486
+ }
487
+ catch {
488
+ throw new Error(`Falta o snapshot publicado em "${absolutePath}". Corre "npm run checkout:backend" primeiro.`);
489
+ }
490
+ return JSON.parse(raw);
491
+ }
492
+ export function tryReadSnapshotFile(filePath) {
493
+ const absolutePath = resolveAppPath(filePath);
494
+ try {
495
+ const raw = readFileSync(absolutePath, "utf8");
496
+ return JSON.parse(raw);
497
+ }
498
+ catch {
499
+ return undefined;
500
+ }
501
+ }
502
+ function loadSnapshots() {
503
+ if (cachedSnapshots) {
504
+ return cachedSnapshots;
505
+ }
506
+ const config = getConfig();
507
+ const docsEnriched = tryReadSnapshotFile(config.backend.docsEnrichedSnapshotFile);
508
+ const entitiesEnriched = tryReadSnapshotFile(config.backend.entitiesEnrichedSnapshotFile);
509
+ cachedSnapshots = {
510
+ docs: readSnapshotFile(config.backend.docsSnapshotFile),
511
+ entities: readSnapshotFile(config.backend.entitiesSnapshotFile),
512
+ docsEnrichedLookup: docsEnriched ? buildEnrichedLookup(docsEnriched) : new Map(),
513
+ entitiesEnrichedLookup: entitiesEnriched ? buildEnrichedLookup(entitiesEnriched) : new Map()
514
+ };
515
+ return cachedSnapshots;
516
+ }
517
+ export function getSnapshotCache() {
518
+ return loadSnapshots();
519
+ }
520
+ function createCitationIds(source, total) {
521
+ return Array.from({ length: total }, (_, index) => `${SOURCE_PREFIX[source]}${index + 1}`);
522
+ }
523
+ export async function retrievePublishedContext(query, topK) {
524
+ const config = getConfig();
525
+ const checkout = await tryLoadBackendCheckout();
526
+ const snapshots = loadSnapshots();
527
+ const docsHits = snapshots.docs.items ?? [];
528
+ const entityHits = snapshots.entities.items ?? [];
529
+ const docIds = createCitationIds("docs", docsHits.length);
530
+ const entityIds = createCitationIds("entities", entityHits.length);
531
+ const docsIndex = checkout?.indices.docs.indexName ?? config.backend.docsIndex;
532
+ const entitiesIndex = checkout?.indices.entities.indexName ?? config.backend.entitiesIndex;
533
+ const docsRecords = docsHits.map((hit, index) => normalizeHit(hit, "docs", docsIndex, index, docIds[index], query, snapshots.docsEnrichedLookup));
534
+ const entityRecords = entityHits.map((hit, index) => normalizeHit(hit, "entities", entitiesIndex, index, entityIds[index], query, snapshots.entitiesEnrichedLookup));
535
+ const retrieved = dedupeRecords(sortByPriority([...docsRecords, ...entityRecords]));
536
+ const selected = retrieved.slice(0, Math.min(topK ?? config.backend.maxContextRecords, config.backend.maxContextRecords));
537
+ const promptChapters = Array.from(new Set(selected.map((record) => record.chapter).filter((value) => Boolean(value))));
538
+ return {
539
+ query,
540
+ selected,
541
+ retrieved,
542
+ promptChapters,
543
+ consultedIndices: [docsIndex, entitiesIndex],
544
+ backendSnapshot: {
545
+ runId: checkout?.runManifest.runId ?? snapshots.docs.run_id ?? snapshots.entities.run_id,
546
+ commitSha: checkout?.runManifest.commitSha,
547
+ upstreamRepoPath: checkout?.upstreamRepoPath,
548
+ docsSnapshotFile: config.backend.docsSnapshotFile,
549
+ entitiesSnapshotFile: config.backend.entitiesSnapshotFile,
550
+ docsEnrichedSnapshotFile: config.backend.docsEnrichedSnapshotFile,
551
+ entitiesEnrichedSnapshotFile: config.backend.entitiesEnrichedSnapshotFile
552
+ }
553
+ };
554
+ }
555
+ //# sourceMappingURL=semantic-index-gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-index-gateway.js","sourceRoot":"","sources":["../../src/backend/semantic-index-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,MAAM,UAAU,GAAG;IACjB,OAAO;IACP,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,OAAO;IACP,MAAM;IACN,QAAQ;IACR,cAAc;CACN,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,SAAS;IACT,cAAc;IACd,MAAM;IACN,SAAS;IACT,MAAM;IACN,aAAa;IACb,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,iBAAiB;CACT,CAAC;AAEX,MAAM,YAAY,GAAG,CAAC,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,CAAU,CAAC;AACzF,MAAM,YAAY,GAAG,CAAC,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,CAAU,CAAC;AACzF,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,CAAU,CAAC;AACvF,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,CAAU,CAAC;AACrG,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,oBAAoB,EAAE,aAAa,EAAE,SAAS,CAAU,CAAC;AACxF,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,CAAU,CAAC;AACnF,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AACxF,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,CAAU,CAAC;AAC7E,MAAM,QAAQ,GAAG;IACf,MAAM;IACN,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,oBAAoB;IACpB,qBAAqB;CACb,CAAC;AACX,MAAM,kBAAkB,GAAG,CAAC,eAAe,CAAU,CAAC;AACtD,MAAM,iBAAiB,GAAG,CAAC,cAAc,CAAU,CAAC;AACpD,MAAM,mBAAmB,GAAG,CAAC,gBAAgB,CAAU,CAAC;AAExD,MAAM,eAAe,GAAoC;IACvD,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,aAAa,GAAoC;IACrD,IAAI,EAAE,GAAG;IACT,QAAQ,EAAE,GAAG;CACd,CAAC;AAmBF,IAAI,eAA0C,CAAC;AAE/C,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;IAChF,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAwB;IAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,SAAS;QACX,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE;YACV,aAAa,EAAE,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC;YACrD,aAAa,EAAE,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC;YACrD,qBAAqB,EAAE,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,CAAC;YACrE,YAAY,EAAE,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;YACnD,eAAe,EACb,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;SAC9E,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,KAAK;aACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aACnC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;aAClD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;aACzC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjB,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,MAAmB,EAAE,IAAuB;IAC/D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,MAAmB,EAAE,IAAuB;IAC9D,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,IAAI,EAAE,CAAC;oBACT,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,SAAS,GAAG,GAAG;IAC7C,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;AACtD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK;SACT,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,kBAAkB,CAAC,KAAK,CAAC;SAC7B,KAAK,CAAC,kBAAkB,CAAC;SACzB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAUD,MAAM,uBAAuB,GAAsC;IACjE,uBAAuB,EAAE,CAAC,iBAAiB,EAAE,UAAU,EAAE,YAAY,CAAC;IACtE,cAAc,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,SAAS,CAAC;IACzD,aAAa,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,SAAS,CAAC;IACxD,IAAI,EAAE,CAAC,4BAA4B,EAAE,mBAAmB,CAAC;IACzD,mBAAmB,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IACtC,GAAG,EAAE,CAAC,+BAA+B,EAAE,sBAAsB,CAAC;IAC9D,sBAAsB,EAAE,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvD,OAAO,EAAE,CAAC,wBAAwB,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC;IAClF,wBAAwB,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC;IACrD,qBAAqB,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC;IAClD,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,yBAAyB,CAAC;IAC1D,gBAAgB,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC9D,iBAAiB,EAAE,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;IAChE,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC5C,yBAAyB,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACnE,UAAU,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;IACpC,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;IAC7C,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,CAAC;IACjD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;IACzC,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC;IACnD,MAAM,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,CAAC;IACjE,iBAAiB,EAAE,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAChD,KAAK,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC;IACxC,0BAA0B,EAAE,CAAC,iBAAiB,EAAE,KAAK,CAAC;IACtD,UAAU,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IACjC,UAAU,EAAE,CAAC,UAAU,EAAE,mBAAmB,EAAE,UAAU,CAAC;IACzD,UAAU,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC;IACpD,QAAQ,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;CAC/C,CAAC;AAEF,MAAM,eAAe,GAA2C;IAC9D,cAAc,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC;IACrG,qBAAqB,EAAE;QACrB,aAAa;QACb,YAAY;QACZ,MAAM;QACN,KAAK;QACL,SAAS;QACT,MAAM;QACN,SAAS;QACT,WAAW;QACX,QAAQ;KACT;IACD,WAAW,EAAE;QACX,OAAO;QACP,UAAU;QACV,UAAU;QACV,gBAAgB;QAChB,MAAM;QACN,UAAU;QACV,WAAW;QACX,OAAO;QACP,OAAO;KACR;IACD,YAAY,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;IACtG,kBAAkB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC;IACpG,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,SAAS,KAAK,EAAE,IAAI,CAAC,CAAC;QACvD,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE/B,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAA4C,EAAE,CAAC;QAC5G,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QAEnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC;gBACjI,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAA4C,EAC5C,MAAmB,EACnB,cAAwB;IAExB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzC,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,MAAM,KAAK,gBAAgB,IAAI,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACzE,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;YACD,IAAI,MAAM,KAAK,uBAAuB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtJ,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;YACD,IAAI,MAAM,KAAK,aAAa,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC7I,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;YACD,IAAI,MAAM,KAAK,cAAc,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpE,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzC,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1F,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACnE,IAAI,eAAe,KAAK,WAAW,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5D,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QACD,IAAI,CAAC,eAAe,KAAK,MAAM,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,KAAK,UAAU,CAAC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5H,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,MAAmB;IACxC,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACvC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACpB,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC/C,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,OAAO,QAAQ,CAAC,QAAQ,IAAI,sDAAsD,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,aAAa,CAAC,MAAmB,EAAE,SAAiB,EAAE,IAAY;IACzE,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC;SAC9D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SACrC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAEtD,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,aAAa,CAAC,MAAmB;IACxC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,OAAO,GACX,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACpF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACjD,MAAM,YAAY,GAAG,cAAc;aAChC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC;aAC/B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACrB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC5B,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;IACnG,CAAC;IAED,IAAI,cAAc,CAAC,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC;QAC5D,MAAM,YAAY,GAAG,cAAc;aAChC,KAAK,CAAC,4BAA4B,CAAC,MAAM,CAAC;aAC1C,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACrB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC5B,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;IACvG,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,MAA4C;IAClF,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE1C,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,kBAAkB,CACjC;QACE,MAAM,CAAC,OAAO;QACd,MAAM,CAAC,OAAO;QACd,MAAM,CAAC,IAAI;QACX,MAAM,CAAC,KAAK;QACZ,MAAM,CAAC,MAAM;QACb,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,CAAC,aAAa;KACrB;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CACb,CAAC;IACF,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACxD,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,IAAI,UAAU,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC/C,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/D,KAAK,IAAI,WAAW,CAAC;IAErB,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,GAAgB,EAChB,MAAuB,EACvB,SAAiB,EACjB,IAAY,EACZ,UAAkB,EAClB,KAAa,EACb,cAA+B;IAE/B,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACxD,MAAM,UAAU,GAAyC;QACvD,UAAU;QACV,MAAM;QACN,SAAS;QACT,QAAQ,EAAE,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC;QAC7C,KAAK,EACH,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC;YAC5B,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC;YAC9B,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC;YAC9B,UAAU,IAAI,GAAG,CAAC,EAAE;QACtB,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC;QAC3B,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC;QACvC,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC;QACvC,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC;QACjC,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC;QACnC,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC;QACrC,QAAQ,EAAE,WAAW,CAAC,GAAG,EAAE,aAAa,CAAC;QACzC,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;QACvB,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,YAAY,IAAI,WAAW;QACrE,YAAY;QACZ,WAAW;QACX,aAAa,EAAE,WAAW,CAAC,GAAG,EAAE,mBAAmB,CAAC;QACpD,IAAI,EAAE,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC/B,aAAa,EAAE,QAAQ,EAAE,aAAa;QACtC,aAAa,EAAE,QAAQ,EAAE,aAAa;QACtC,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB;QACtD,YAAY,EAAE,QAAQ,EAAE,YAAY;QACpC,eAAe,EAAE,QAAQ,EAAE,eAAe;QAC1C,WAAW,EAAE,IAAI,GAAG,CAAC;QACrB,GAAG,EAAE,GAAG;KACT,CAAC;IAEF,OAAO;QACL,GAAG,UAAU;QACb,UAAU,EAAE,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,OAA2B;IACjD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACvC,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtF,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,OAA2B;IAChD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,kBAAkB,CACpC,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,CAC/E,CAAC;QACF,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE9C,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,kCAAkC,YAAY,+CAA+C,CAC9F,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAClF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC1F,eAAe,GAAG;QAChB,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACvD,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC/D,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;QAChF,sBAAsB,EAAE,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;KAC7F,CAAC;IACF,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAuB,EAAE,KAAa;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAa,EACb,IAAa;IAEb,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAC/E,MAAM,aAAa,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;IAE3F,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAC9C,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAE,EAAE,KAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC,CACjG,CAAC;IACF,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAClD,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAE,EAAE,KAAK,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAChH,CAAC;IAEF,MAAM,SAAS,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAC9B,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CACrF,CAAC;IACF,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CACrG,CAAC;IAEF,OAAO;QACL,KAAK;QACL,QAAQ;QACR,SAAS;QACT,cAAc;QACd,gBAAgB,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;QAC5C,eAAe,EAAE;YACf,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM;YACxF,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,SAAS;YAC1C,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB;YAC5C,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,gBAAgB;YACjD,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,oBAAoB;YACzD,wBAAwB,EAAE,MAAM,CAAC,OAAO,CAAC,wBAAwB;YACjE,4BAA4B,EAAE,MAAM,CAAC,OAAO,CAAC,4BAA4B;SAC1E;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export {};