@accelerator-mzq/forge 1.4.0 → 3.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.
Files changed (85) hide show
  1. package/dist/cli/commands/archive.d.ts +73 -10
  2. package/dist/cli/commands/archive.d.ts.map +1 -1
  3. package/dist/cli/commands/archive.js +362 -89
  4. package/dist/cli/commands/archive.js.map +1 -1
  5. package/dist/cli/commands/legacy-bridge.d.ts +110 -0
  6. package/dist/cli/commands/legacy-bridge.d.ts.map +1 -1
  7. package/dist/cli/commands/legacy-bridge.js +1058 -438
  8. package/dist/cli/commands/legacy-bridge.js.map +1 -1
  9. package/dist/cli/commands/pause-capture.d.ts +24 -0
  10. package/dist/cli/commands/pause-capture.d.ts.map +1 -0
  11. package/dist/cli/commands/pause-capture.js +87 -0
  12. package/dist/cli/commands/pause-capture.js.map +1 -0
  13. package/dist/cli/index.js +3 -0
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/core/ack-log.d.ts +17 -1
  16. package/dist/core/ack-log.d.ts.map +1 -1
  17. package/dist/core/ack-log.js.map +1 -1
  18. package/dist/core/archive/ack-log-consistency.d.ts.map +1 -1
  19. package/dist/core/archive/ack-log-consistency.js +2 -1
  20. package/dist/core/archive/ack-log-consistency.js.map +1 -1
  21. package/dist/core/archive/pause-decisions-fence.d.ts +24 -1
  22. package/dist/core/archive/pause-decisions-fence.d.ts.map +1 -1
  23. package/dist/core/archive/pause-decisions-fence.js +260 -46
  24. package/dist/core/archive/pause-decisions-fence.js.map +1 -1
  25. package/dist/core/backlog/assets/backlog-readme.md +4 -2
  26. package/dist/core/backlog/index.d.ts +1 -1
  27. package/dist/core/backlog/index.d.ts.map +1 -1
  28. package/dist/core/backlog/index.js +27 -8
  29. package/dist/core/backlog/index.js.map +1 -1
  30. package/dist/core/backlog/render.d.ts +48 -3
  31. package/dist/core/backlog/render.d.ts.map +1 -1
  32. package/dist/core/backlog/render.js +151 -15
  33. package/dist/core/backlog/render.js.map +1 -1
  34. package/dist/core/legacy-bridge/extractor.d.ts +79 -0
  35. package/dist/core/legacy-bridge/extractor.d.ts.map +1 -0
  36. package/dist/core/legacy-bridge/extractor.js +374 -0
  37. package/dist/core/legacy-bridge/extractor.js.map +1 -0
  38. package/dist/core/legacy-bridge/indexer.d.ts +8 -2
  39. package/dist/core/legacy-bridge/indexer.d.ts.map +1 -1
  40. package/dist/core/legacy-bridge/indexer.js +61 -9
  41. package/dist/core/legacy-bridge/indexer.js.map +1 -1
  42. package/dist/core/legacy-bridge/legacy-requirements.d.ts +53 -0
  43. package/dist/core/legacy-bridge/legacy-requirements.d.ts.map +1 -0
  44. package/dist/core/legacy-bridge/legacy-requirements.js +114 -0
  45. package/dist/core/legacy-bridge/legacy-requirements.js.map +1 -0
  46. package/dist/core/legacy-bridge/llm-task.d.ts +54 -0
  47. package/dist/core/legacy-bridge/llm-task.d.ts.map +1 -0
  48. package/dist/core/legacy-bridge/llm-task.js +87 -0
  49. package/dist/core/legacy-bridge/llm-task.js.map +1 -0
  50. package/dist/core/legacy-bridge/mapper.d.ts +8 -9
  51. package/dist/core/legacy-bridge/mapper.d.ts.map +1 -1
  52. package/dist/core/legacy-bridge/mapper.js +24 -39
  53. package/dist/core/legacy-bridge/mapper.js.map +1 -1
  54. package/dist/core/legacy-bridge/quality-judge.d.ts +5 -0
  55. package/dist/core/legacy-bridge/quality-judge.d.ts.map +1 -1
  56. package/dist/core/legacy-bridge/quality-judge.js +25 -21
  57. package/dist/core/legacy-bridge/quality-judge.js.map +1 -1
  58. package/dist/core/legacy-bridge/regenerator.d.ts +21 -1
  59. package/dist/core/legacy-bridge/regenerator.d.ts.map +1 -1
  60. package/dist/core/legacy-bridge/regenerator.js +132 -2
  61. package/dist/core/legacy-bridge/regenerator.js.map +1 -1
  62. package/dist/core/legacy-bridge/runners.d.ts +33 -0
  63. package/dist/core/legacy-bridge/runners.d.ts.map +1 -0
  64. package/dist/core/legacy-bridge/runners.js +77 -0
  65. package/dist/core/legacy-bridge/runners.js.map +1 -0
  66. package/dist/core/legacy-bridge/sync-check.d.ts +8 -0
  67. package/dist/core/legacy-bridge/sync-check.d.ts.map +1 -1
  68. package/dist/core/legacy-bridge/sync-check.js +83 -0
  69. package/dist/core/legacy-bridge/sync-check.js.map +1 -1
  70. package/dist/core/legacy-bridge/types.d.ts +2 -0
  71. package/dist/core/legacy-bridge/types.d.ts.map +1 -1
  72. package/dist/core/markers/types.d.ts +5 -0
  73. package/dist/core/markers/types.d.ts.map +1 -1
  74. package/dist/core/parse/unified-diff.d.ts +26 -0
  75. package/dist/core/parse/unified-diff.d.ts.map +1 -0
  76. package/dist/core/parse/unified-diff.js +61 -0
  77. package/dist/core/parse/unified-diff.js.map +1 -0
  78. package/dist/core/templates/commands/apply.md +12 -3
  79. package/dist/core/templates/commands/archive.md +15 -0
  80. package/dist/core/templates/commands/verify.md +2 -0
  81. package/dist/core/templates/skills/legacy-bridge-fulfillment.md +22 -0
  82. package/dist/core/validate/marker-schema.d.ts.map +1 -1
  83. package/dist/core/validate/marker-schema.js +15 -0
  84. package/dist/core/validate/marker-schema.js.map +1 -1
  85. package/package.json +21 -20
@@ -101,6 +101,14 @@ export function renderWarningLine(w) {
101
101
  return `- [malformed-dirname] ${w.superseded_in_change} 目录名无日期前缀,superseded_at=unknown`;
102
102
  case 'skipped-block':
103
103
  return `- [skipped] ${w.change}/${w.file}: ${w.reason}`;
104
+ case 'dangling-legacy-claim':
105
+ return `- [dangling-legacy-claim] ${w.superseded_in_change} 认领的 legacy 需求 ${w.entry_id} 不在 legacy-requirements.yaml`;
106
+ case 'invalid-legacy-status':
107
+ return `- [invalid-legacy-status] ${w.superseded_in_change} 认领 ${w.entry_id} new_status=${w.raw}(legacy 仅允许 completed/obsolete)`;
108
+ case 'duplicate-legacy-claim':
109
+ return `- [duplicate-legacy-claim] ${w.entry_id} claimants=${w.claimants.join(' ')} winner=${w.winner_superseded_in_change}`;
110
+ case 'reserved-archive-dirname':
111
+ return `- [reserved-archive-dirname] forge/changes/archive/ 下存在保留名目录 legacy-requirements,请改名该归档目录`;
104
112
  }
105
113
  }
106
114
  /**
@@ -127,8 +135,39 @@ function renderEntry(e) {
127
135
  '',
128
136
  ].join('\n');
129
137
  }
138
+ /** active 的 legacy requirement:unimplemented 且未退役(spec §7.2 / §8.4) */
139
+ function openLegacyRequirements(legacyReqs, retiredIds) {
140
+ if (!legacyReqs)
141
+ return [];
142
+ return legacyReqs.requirements.filter((r) => r.status === 'unimplemented' && !retiredIds.has(r.id));
143
+ }
144
+ /** 渲染 active.md 的 ## Legacy Requirements 段;open 由 openLegacyRequirements 预过滤 */
145
+ function renderLegacyRequirementsSection(legacyReqs, open) {
146
+ if (!legacyReqs)
147
+ return []; // 无 legacy-requirements.yaml → 不出段,active.md 对既有项目不变
148
+ const lines = ['', `## Legacy Requirements (${open.length})`, ''];
149
+ if (open.length === 0) {
150
+ lines.push('(无)');
151
+ return lines;
152
+ }
153
+ const byDoc = new Map();
154
+ for (const r of open) {
155
+ const list = byDoc.get(r.source.document) ?? [];
156
+ list.push(r);
157
+ byDoc.set(r.source.document, list);
158
+ }
159
+ for (const [doc, list] of [...byDoc.entries()].sort()) {
160
+ lines.push(`### \`${doc}\``, '');
161
+ for (const r of list) {
162
+ lines.push(`- \`${r.id}\` **${r.title}** — ${r.description}` +
163
+ (r.priority ? ` (priority: ${r.priority})` : ''));
164
+ }
165
+ lines.push('');
166
+ }
167
+ return lines;
168
+ }
130
169
  /** 渲染 active.md(spec §4) */
131
- export function renderActiveMarkdown(entries, warnings) {
170
+ export function renderActiveMarkdown(entries, warnings, legacyReqs = null, retiredLegacyIds = new Set()) {
132
171
  // 按 category 分组过滤
133
172
  const byCat = (c) => entries.filter((e) => e.category === c);
134
173
  const fw = byCat('future-work');
@@ -141,6 +180,10 @@ export function renderActiveMarkdown(entries, warnings) {
141
180
  lines.push('');
142
181
  lines.push('> 生成产物 —— 由 `/forge:archive` 自动重生成,**勿手编**。Schema 见 README.md。');
143
182
  lines.push(`> 待办计 ${openCount} 项(Future Work + Out of Scope;Non-Goals 不计入)。`);
183
+ const legacyOpen = openLegacyRequirements(legacyReqs, retiredLegacyIds);
184
+ if (legacyReqs) {
185
+ lines.push(`> 另有 ${legacyOpen.length} 项 legacy requirements 待办(不计入上面 ${openCount})。`);
186
+ }
144
187
  lines.push('');
145
188
  lines.push(`## Warnings (${warnings.length})`);
146
189
  lines.push('');
@@ -164,10 +207,26 @@ export function renderActiveMarkdown(entries, warnings) {
164
207
  lines.push(renderEntry(e));
165
208
  }
166
209
  }
210
+ // Legacy Requirements 段(仅 legacyReqs 非 null 时出现)
211
+ lines.push(...renderLegacyRequirementsSection(legacyReqs, legacyOpen));
167
212
  return lines.join('\n').trimEnd() + '\n';
168
213
  }
214
+ /** 渲染 archived.md 的 ## Legacy Requirements — Retired 段(spec §8.3);仅在 legacyTombstones 非空时被调用 */
215
+ function renderLegacyRetiredSection(tombstones) {
216
+ const lines = ['', `## Legacy Requirements — Retired (${tombstones.length})`, ''];
217
+ for (const t of tombstones) {
218
+ lines.push(`### \`${t.entry_id}\``, '');
219
+ lines.push(`- **new_status**: ${t.new_status}`);
220
+ lines.push(`- **superseded_in_change**: ${t.superseded_in_change}`);
221
+ lines.push(`- **superseded_at**: ${t.superseded_at}`);
222
+ lines.push(`- **rationale**: ${t.rationale}`);
223
+ lines.push(`- **requirement_snapshot**: ${JSON.stringify(t.requirement_snapshot)}`);
224
+ lines.push('');
225
+ }
226
+ return lines;
227
+ }
169
228
  /** 渲染 archived.md tombstone(spec §5);入参为 deriveWarningsAndTombstones 选出的 winner 列表 */
170
- export function renderArchivedMarkdown(tombstones) {
229
+ export function renderArchivedMarkdown(tombstones, legacyTombstones = []) {
171
230
  const lines = [];
172
231
  lines.push('# Archived Backlog (Tombstones)');
173
232
  lines.push('');
@@ -176,21 +235,98 @@ export function renderArchivedMarkdown(tombstones) {
176
235
  lines.push('');
177
236
  if (tombstones.length === 0) {
178
237
  lines.push('(无)');
179
- return lines.join('\n').trimEnd() + '\n';
180
238
  }
181
- for (const t of tombstones) {
182
- // registry_entry_snapshot 一定非 null(deriveWarningsAndTombstones 已剔 dangling)
183
- const snapshot = JSON.stringify(t.registry_entry_snapshot);
184
- lines.push(`### \`${t.source_change}::${t.entry_id}\``);
185
- lines.push('');
186
- lines.push(`- **superseded_in_change**: ${t.superseded_in_change}`);
187
- lines.push(`- **superseded_at**: ${t.superseded_at}`);
188
- lines.push(`- **new_status**: ${t.new_status}`);
189
- // rationale 字段对应 spec §5 tombstone 的 cancellation_reason 显示标签
190
- lines.push(`- **cancellation_reason**: ${t.rationale}`);
191
- lines.push(`- **registry_entry_snapshot**: ${snapshot}`);
192
- lines.push('');
239
+ else {
240
+ for (const t of tombstones) {
241
+ // registry_entry_snapshot 一定非 null(deriveWarningsAndTombstones 已剔 dangling)
242
+ const snapshot = JSON.stringify(t.registry_entry_snapshot);
243
+ lines.push(`### \`${t.source_change}::${t.entry_id}\``);
244
+ lines.push('');
245
+ lines.push(`- **superseded_in_change**: ${t.superseded_in_change}`);
246
+ lines.push(`- **superseded_at**: ${t.superseded_at}`);
247
+ lines.push(`- **new_status**: ${t.new_status}`);
248
+ // rationale 字段对应 spec §5 tombstone 的 cancellation_reason 显示标签
249
+ lines.push(`- **cancellation_reason**: ${t.rationale}`);
250
+ lines.push(`- **registry_entry_snapshot**: ${snapshot}`);
251
+ lines.push('');
252
+ }
253
+ }
254
+ // Legacy Retired 段(仅 legacyTombstones 非空时追加)
255
+ if (legacyTombstones.length > 0) {
256
+ lines.push(...renderLegacyRetiredSection(legacyTombstones));
193
257
  }
194
258
  return lines.join('\n').trimEnd() + '\n';
195
259
  }
260
+ /** legacy 退役允许的 new_status(spec §8.1 收紧子集) */
261
+ const LEGACY_VALID_STATUS = new Set(['completed', 'obsolete']);
262
+ /**
263
+ * 分流处理 source_change='legacy-requirements' 的 superseding 明细(spec §8.5)。
264
+ * 三步:① 校验剔除 dangling/invalid ② 有效 claim 按 entry_id 选 winner ③ 目录名异常。
265
+ * @param legacyClaims 已分流出的 legacy superseding 明细
266
+ * @param legacyReqs legacy-requirements.yaml 的 requirements(查 snapshot 用)
267
+ */
268
+ export function splitLegacyClaims(legacyClaims, legacyReqs) {
269
+ const byId = new Map(legacyReqs.map((r) => [r.id, r]));
270
+ const warnings = [];
271
+ const valid = [];
272
+ // 第 1 步:校验,剔除无效 claim
273
+ for (const c of legacyClaims) {
274
+ const snapshot = byId.get(c.entry_id);
275
+ if (!snapshot) {
276
+ warnings.push({
277
+ kind: 'dangling-legacy-claim',
278
+ entry_id: c.entry_id,
279
+ superseded_in_change: c.superseded_in_change,
280
+ });
281
+ continue;
282
+ }
283
+ if (!LEGACY_VALID_STATUS.has(c.new_status)) {
284
+ warnings.push({
285
+ kind: 'invalid-legacy-status',
286
+ entry_id: c.entry_id,
287
+ superseded_in_change: c.superseded_in_change,
288
+ raw: c.new_status,
289
+ });
290
+ continue;
291
+ }
292
+ valid.push(c);
293
+ }
294
+ // 第 3 步(与有效性无关,对全部 claim 查目录名异常)
295
+ for (const c of legacyClaims) {
296
+ if (c.superseded_at === 'unknown') {
297
+ warnings.push({ kind: 'malformed-dirname', superseded_in_change: c.superseded_in_change });
298
+ }
299
+ }
300
+ // 第 2 步:有效 claim 按 entry_id 分组选 winner
301
+ const groups = new Map();
302
+ for (const c of valid) {
303
+ (groups.get(c.entry_id) ?? groups.set(c.entry_id, []).get(c.entry_id)).push(c);
304
+ }
305
+ const tombstones = [];
306
+ const retiredIds = new Set();
307
+ for (const [entryId, g] of groups) {
308
+ // winner:复用 earlier helper(与 deriveWarningsAndTombstones 同口径,显式处理 'unknown' 排最后)
309
+ const winner = g.reduce(earlier);
310
+ tombstones.push({
311
+ entry_id: entryId,
312
+ new_status: winner.new_status,
313
+ rationale: winner.rationale,
314
+ superseded_in_change: winner.superseded_in_change,
315
+ superseded_at: winner.superseded_at,
316
+ requirement_snapshot: byId.get(entryId) ?? null,
317
+ });
318
+ retiredIds.add(entryId);
319
+ if (g.length > 1) {
320
+ warnings.push({
321
+ kind: 'duplicate-legacy-claim',
322
+ entry_id: entryId,
323
+ winner_superseded_in_change: winner.superseded_in_change,
324
+ claimants: g.map((c) => c.superseded_in_change),
325
+ });
326
+ }
327
+ }
328
+ // tombstone 排序:跨平台确定
329
+ tombstones.sort((a, b) => (a.entry_id < b.entry_id ? -1 : a.entry_id > b.entry_id ? 1 : 0));
330
+ return { tombstones, warnings, retiredIds };
331
+ }
196
332
  //# sourceMappingURL=render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/core/backlog/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/core/backlog/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import type { LegacyRequirementKind, LegacyRequirementStatus, LegacyRequirement, LegacyRequirementsFile } from './legacy-requirements.js';
2
+ import type { LlmTask } from './llm-task.js';
3
+ /** 一个被发现的来源文件 */
4
+ export interface DiscoveredSource {
5
+ /** 相对仓库根的路径 */
6
+ path: string;
7
+ kind: LegacyRequirementKind;
8
+ /** 小写扩展名,如 '.md' */
9
+ ext: string;
10
+ }
11
+ /**
12
+ * whole-repo 发现(spec §5.1):扫整个仓库,识别需求文档 / backlog 文件。
13
+ * 排除 SKIP_DIRS;只收 DOC_EXTS 扩展名;按文件名 classifyKind。
14
+ */
15
+ export declare function discoverSources(repoRoot: string): Promise<DiscoveredSource[]>;
16
+ /**
17
+ * 按扩展名抽纯文本(spec §5.2)。
18
+ * .md/.txt 直读;.xlsx 复用 excel.ts;.docx 用 mammoth;.pdf 用 pdf-parse(v2 class API)。
19
+ * 读取/解析失败抛带路径的错误。
20
+ */
21
+ export declare function extractText(repoRoot: string, relPath: string): Promise<string>;
22
+ /**
23
+ * prep:每来源文档建一个 LlmTask(spec §4.1 第 4 步 / §4.2)。
24
+ * redact 对**全部输入**(文档文本 + 代码索引);prompt 内嵌 redact 后两者(ApiRunner 只发 prompt)。
25
+ * @param codeIndex whole-repo 代码文件路径列表(file tree),由调用方传入
26
+ */
27
+ export declare function buildExtractTasks(repoRoot: string, sources: DiscoveredSource[], codeIndex: string[]): Promise<LlmTask[]>;
28
+ /** 一个 task 的原始结果 + 来源元信息 */
29
+ export interface ExtractResultInput {
30
+ /** readTaskResults 取出的 { text } 信封里的 text 字符串 */
31
+ text: string;
32
+ /** 该 task 对应的来源文档路径 */
33
+ source: string;
34
+ kind: LegacyRequirementKind;
35
+ }
36
+ /** LLM 抽出的一条需求(尚未分配 id / review) */
37
+ export interface ExtractedRequirement {
38
+ title: string;
39
+ description: string;
40
+ status: LegacyRequirementStatus;
41
+ /** 来源文档 + 章节(section 来自 LLM,document/kind 来自 ExtractResultInput) */
42
+ source: {
43
+ document: string;
44
+ section: string;
45
+ kind: LegacyRequirementKind;
46
+ };
47
+ evidence: string[];
48
+ confidence: 'high' | 'medium' | 'low';
49
+ }
50
+ /**
51
+ * 解析 + 校验各 task 结果(spec §4.4 第 2-3 步)。
52
+ * 每个 ExtractResultInput.text 是需求条目数组的 JSON 字符串。
53
+ * 非法 JSON / schema 不符 → 抛带 source 的错误。
54
+ */
55
+ export declare function parseExtractResults(inputs: ExtractResultInput[]): ExtractedRequirement[];
56
+ /** draft 条目的变化类别(spec §6.1) */
57
+ export type ExtractChangeKind = 'new' | 'changed' | 'unchanged' | 'vanished' | 'conflict';
58
+ /** 带变化标注的 draft 条目 */
59
+ export interface DraftEntry {
60
+ requirement: LegacyRequirement;
61
+ change: ExtractChangeKind;
62
+ }
63
+ /**
64
+ * 增量 diff(spec §6.1):本轮抽取条目 vs 已确认 yaml。
65
+ * 匹配仅在键唯一(旧侧、新侧各恰好 1 条)时进行;任一侧多于 1 条 → conflict。
66
+ * confirmed 为 null(首次抽取)时全部 new。
67
+ */
68
+ export declare function diffAgainstConfirmed(extracted: ExtractedRequirement[], confirmed: LegacyRequirementsFile | null): DraftEntry[];
69
+ /** applyExtractResult 输出 */
70
+ export interface ExtractApplyOutput {
71
+ draftYaml: string;
72
+ draftMarkdown: string;
73
+ }
74
+ /**
75
+ * --apply 后处理(spec §4.4 第 3-5 步):
76
+ * 校验汇总 → 增量 diff → 产 draft yaml + md 概览。
77
+ */
78
+ export declare function applyExtractResult(results: ExtractResultInput[], confirmed: LegacyRequirementsFile | null): ExtractApplyOutput;
79
+ //# sourceMappingURL=extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/core/legacy-bridge/extractor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAuB7C,iBAAiB;AACjB,MAAM,WAAW,gBAAgB;IAC/B,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,qBAAqB,CAAC;IAC5B,oBAAoB;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAkCD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAYnF;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiCpF;AAsCD;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,OAAO,EAAE,CAAC,CA4BpB;AAED,4BAA4B;AAC5B,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,qBAAqB,CAAC;CAC7B;AAED,oCAAoC;AACpC,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,uBAAuB,CAAC;IAChC,oEAAoE;IACpE,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,qBAAqB,CAAA;KAAE,CAAC;IAC3E,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACvC;AAKD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,oBAAoB,EAAE,CAyCxF;AAED,+BAA+B;AAC/B,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;AAE1F,sBAAsB;AACtB,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AA+BD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,oBAAoB,EAAE,EACjC,SAAS,EAAE,sBAAsB,GAAG,IAAI,GACvC,UAAU,EAAE,CA8Dd;AAED,4BAA4B;AAC5B,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAmCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,SAAS,EAAE,sBAAsB,GAAG,IAAI,GACvC,kBAAkB,CAWpB"}