@ankh-studio/ai-enablement 1.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 (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +243 -0
  3. package/dist/analyzers/tech-stack-analyzer.d.ts +63 -0
  4. package/dist/analyzers/tech-stack-analyzer.d.ts.map +1 -0
  5. package/dist/analyzers/tech-stack-analyzer.js +401 -0
  6. package/dist/analyzers/tech-stack-analyzer.js.map +1 -0
  7. package/dist/cli/index.d.ts +9 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +347 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/collectors/evidence-collector.d.ts +57 -0
  12. package/dist/collectors/evidence-collector.d.ts.map +1 -0
  13. package/dist/collectors/evidence-collector.js +386 -0
  14. package/dist/collectors/evidence-collector.js.map +1 -0
  15. package/dist/core/assessment-engine.d.ts +76 -0
  16. package/dist/core/assessment-engine.d.ts.map +1 -0
  17. package/dist/core/assessment-engine.js +310 -0
  18. package/dist/core/assessment-engine.js.map +1 -0
  19. package/dist/generators/adr-generator.d.ts +35 -0
  20. package/dist/generators/adr-generator.d.ts.map +1 -0
  21. package/dist/generators/adr-generator.js +339 -0
  22. package/dist/generators/adr-generator.js.map +1 -0
  23. package/dist/generators-backup-phase-2/adr-generator.d.ts +31 -0
  24. package/dist/generators-backup-phase-2/adr-generator.d.ts.map +1 -0
  25. package/dist/generators-backup-phase-2/adr-generator.js +309 -0
  26. package/dist/generators-backup-phase-2/adr-generator.js.map +1 -0
  27. package/dist/llm/coalescer.d.ts +45 -0
  28. package/dist/llm/coalescer.d.ts.map +1 -0
  29. package/dist/llm/coalescer.js +258 -0
  30. package/dist/llm/coalescer.js.map +1 -0
  31. package/dist/llm/copilot-client.d.ts +53 -0
  32. package/dist/llm/copilot-client.d.ts.map +1 -0
  33. package/dist/llm/copilot-client.js +198 -0
  34. package/dist/llm/copilot-client.js.map +1 -0
  35. package/dist/llm/prompt-templates.d.ts +24 -0
  36. package/dist/llm/prompt-templates.d.ts.map +1 -0
  37. package/dist/llm/prompt-templates.js +255 -0
  38. package/dist/llm/prompt-templates.js.map +1 -0
  39. package/dist/llm/response-processor.d.ts +50 -0
  40. package/dist/llm/response-processor.d.ts.map +1 -0
  41. package/dist/llm/response-processor.js +321 -0
  42. package/dist/llm/response-processor.js.map +1 -0
  43. package/dist/llm/structured-types.d.ts +184 -0
  44. package/dist/llm/structured-types.d.ts.map +1 -0
  45. package/dist/llm/structured-types.js +61 -0
  46. package/dist/llm/structured-types.js.map +1 -0
  47. package/dist/llm/validation.d.ts +57 -0
  48. package/dist/llm/validation.d.ts.map +1 -0
  49. package/dist/llm/validation.js +273 -0
  50. package/dist/llm/validation.js.map +1 -0
  51. package/dist/llm-backup-phase-1/coalescer.d.ts +40 -0
  52. package/dist/llm-backup-phase-1/coalescer.d.ts.map +1 -0
  53. package/dist/llm-backup-phase-1/coalescer.js +209 -0
  54. package/dist/llm-backup-phase-1/coalescer.js.map +1 -0
  55. package/dist/llm-backup-phase-1/copilot-client.d.ts +53 -0
  56. package/dist/llm-backup-phase-1/copilot-client.d.ts.map +1 -0
  57. package/dist/llm-backup-phase-1/copilot-client.js +198 -0
  58. package/dist/llm-backup-phase-1/copilot-client.js.map +1 -0
  59. package/dist/llm-backup-phase-1/prompt-templates.d.ts +23 -0
  60. package/dist/llm-backup-phase-1/prompt-templates.d.ts.map +1 -0
  61. package/dist/llm-backup-phase-1/prompt-templates.js +197 -0
  62. package/dist/llm-backup-phase-1/prompt-templates.js.map +1 -0
  63. package/dist/llm-backup-phase-1/response-processor.d.ts +44 -0
  64. package/dist/llm-backup-phase-1/response-processor.d.ts.map +1 -0
  65. package/dist/llm-backup-phase-1/response-processor.js +200 -0
  66. package/dist/llm-backup-phase-1/response-processor.js.map +1 -0
  67. package/dist/llm-backup-phase-1/validation.d.ts +57 -0
  68. package/dist/llm-backup-phase-1/validation.d.ts.map +1 -0
  69. package/dist/llm-backup-phase-1/validation.js +273 -0
  70. package/dist/llm-backup-phase-1/validation.js.map +1 -0
  71. package/dist/personas/base-persona.d.ts +28 -0
  72. package/dist/personas/base-persona.d.ts.map +1 -0
  73. package/dist/personas/base-persona.js +140 -0
  74. package/dist/personas/base-persona.js.map +1 -0
  75. package/dist/personas/consultant-persona.d.ts +25 -0
  76. package/dist/personas/consultant-persona.d.ts.map +1 -0
  77. package/dist/personas/consultant-persona.js +288 -0
  78. package/dist/personas/consultant-persona.js.map +1 -0
  79. package/dist/personas/persona-factory.d.ts +17 -0
  80. package/dist/personas/persona-factory.d.ts.map +1 -0
  81. package/dist/personas/persona-factory.js +53 -0
  82. package/dist/personas/persona-factory.js.map +1 -0
  83. package/dist/personas/research-backed-consultant.d.ts +12 -0
  84. package/dist/personas/research-backed-consultant.d.ts.map +1 -0
  85. package/dist/personas/research-backed-consultant.js +100 -0
  86. package/dist/personas/research-backed-consultant.js.map +1 -0
  87. package/dist/personas-backup-phase-1/base-persona.d.ts +28 -0
  88. package/dist/personas-backup-phase-1/base-persona.d.ts.map +1 -0
  89. package/dist/personas-backup-phase-1/base-persona.js +140 -0
  90. package/dist/personas-backup-phase-1/base-persona.js.map +1 -0
  91. package/dist/personas-backup-phase-1/consultant-persona.d.ts +24 -0
  92. package/dist/personas-backup-phase-1/consultant-persona.d.ts.map +1 -0
  93. package/dist/personas-backup-phase-1/consultant-persona.js +197 -0
  94. package/dist/personas-backup-phase-1/consultant-persona.js.map +1 -0
  95. package/dist/personas-backup-phase-1/persona-factory.d.ts +17 -0
  96. package/dist/personas-backup-phase-1/persona-factory.d.ts.map +1 -0
  97. package/dist/personas-backup-phase-1/persona-factory.js +53 -0
  98. package/dist/personas-backup-phase-1/persona-factory.js.map +1 -0
  99. package/dist/scanners/copilot-feature-scanner.d.ts +55 -0
  100. package/dist/scanners/copilot-feature-scanner.d.ts.map +1 -0
  101. package/dist/scanners/copilot-feature-scanner.js +259 -0
  102. package/dist/scanners/copilot-feature-scanner.js.map +1 -0
  103. package/dist/scorers/readiness-scorer.d.ts +42 -0
  104. package/dist/scorers/readiness-scorer.d.ts.map +1 -0
  105. package/dist/scorers/readiness-scorer.js +279 -0
  106. package/dist/scorers/readiness-scorer.js.map +1 -0
  107. package/dist/types/persona.d.ts +69 -0
  108. package/dist/types/persona.d.ts.map +1 -0
  109. package/dist/types/persona.js +9 -0
  110. package/dist/types/persona.js.map +1 -0
  111. package/package.json +77 -0
@@ -0,0 +1,310 @@
1
+ "use strict";
2
+ /**
3
+ * Core Assessment Engine - Spec-Driven AI Development
4
+ *
5
+ * This is the main orchestrator that combines:
6
+ * 1. Repository scanning (existing)
7
+ * 2. Tech stack analysis (existing)
8
+ * 3. AI readiness scoring (new)
9
+ * 4. Evidence-based recommendations (new)
10
+ * 5. ADR generation (existing)
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.AssessmentEngine = void 0;
47
+ const tech_stack_analyzer_1 = require("../analyzers/tech-stack-analyzer");
48
+ const evidence_collector_1 = require("../collectors/evidence-collector");
49
+ const adr_generator_1 = require("../generators/adr-generator");
50
+ const persona_factory_1 = require("../personas/persona-factory");
51
+ const copilot_feature_scanner_1 = require("../scanners/copilot-feature-scanner");
52
+ const readiness_scorer_1 = require("../scorers/readiness-scorer");
53
+ class AssessmentEngine {
54
+ constructor(config) {
55
+ this.config = {
56
+ includeRecommendations: true,
57
+ generateADR: true,
58
+ outputFormat: "json",
59
+ persona: "consultant",
60
+ targetAudience: "organization",
61
+ enableLLMCoalescing: false,
62
+ enableAdversarialValidation: true,
63
+ ...config,
64
+ };
65
+ this.scanner = new copilot_feature_scanner_1.CopilotFeatureScanner();
66
+ this.techAnalyzer = new tech_stack_analyzer_1.TechStackAnalyzer();
67
+ this.scorer = new readiness_scorer_1.ReadinessScorer();
68
+ this.adrGenerator = new adr_generator_1.ADRGenerator();
69
+ this.evidenceCollector = new evidence_collector_1.EvidenceCollector();
70
+ }
71
+ async execute() {
72
+ const startTime = Date.now();
73
+ console.log("🚀 Starting AI Enablement Assessment...");
74
+ try {
75
+ // Phase 1: Data Collection (parallel for performance)
76
+ const [copilotFeatures, techStack, evidence] = await Promise.all([
77
+ this.scanner.scan(this.config.repoPath),
78
+ this.techAnalyzer.analyze(this.config.repoPath),
79
+ this.evidenceCollector.collect(this.config.repoPath),
80
+ ]);
81
+ console.log("📊 Analysis complete, calculating scores...");
82
+ // Phase 2: Deterministic Scoring
83
+ const scores = await this.scorer.calculate({
84
+ copilotFeatures,
85
+ techStack,
86
+ evidence,
87
+ });
88
+ console.log("🎯 Scoring complete, generating recommendations...");
89
+ // Phase 3: Evidence-Based Recommendations
90
+ const recommendations = this.config.includeRecommendations
91
+ ? await this.generateRecommendations(scores, copilotFeatures, evidence)
92
+ : [];
93
+ // Phase 4: Persona Analysis (if requested)
94
+ let personaInsights;
95
+ if (this.config.persona) {
96
+ console.log("🤖 Generating persona insights...");
97
+ personaInsights = await this.generatePersonaInsights(scores, copilotFeatures, techStack, evidence);
98
+ }
99
+ // Phase 5: ADR Generation (if requested)
100
+ let adr;
101
+ if (this.config.generateADR) {
102
+ console.log("📝 Generating ADR...");
103
+ adr = await this.adrGenerator.generate({
104
+ scores,
105
+ copilotFeatures,
106
+ techStack,
107
+ evidence,
108
+ recommendations,
109
+ structuredInsights: personaInsights?.structuredInsights,
110
+ });
111
+ }
112
+ const duration = Date.now() - startTime;
113
+ const result = {
114
+ metadata: {
115
+ timestamp: new Date().toISOString(),
116
+ repository: this.config.repoPath,
117
+ version: "1.0.0",
118
+ duration,
119
+ },
120
+ analysis: {
121
+ copilotFeatures,
122
+ techStack,
123
+ evidence,
124
+ },
125
+ scores,
126
+ recommendations,
127
+ };
128
+ if (personaInsights) {
129
+ result.personaInsights = personaInsights;
130
+ }
131
+ if (adr) {
132
+ result.adr = adr;
133
+ }
134
+ console.log(`✅ Assessment complete in ${duration}ms!`);
135
+ return result;
136
+ }
137
+ catch (error) {
138
+ console.error("❌ Assessment failed:", error);
139
+ throw error;
140
+ }
141
+ }
142
+ async generateRecommendations(scores, features, evidence) {
143
+ const recommendations = [];
144
+ // Foundation recommendations
145
+ if (scores.repoReadiness < 70) {
146
+ recommendations.push({
147
+ id: "found-001",
148
+ title: "Improve Repository Structure",
149
+ description: "Standardize repository structure and add essential configuration files",
150
+ priority: "high",
151
+ category: "foundation",
152
+ effort: "medium",
153
+ timeframe: "30 days",
154
+ dependencies: [],
155
+ evidence: this.extractEvidence(evidence, ["structure", "config"]),
156
+ });
157
+ }
158
+ // Security recommendations
159
+ if (!features.githubFeatures.codeowners.found) {
160
+ recommendations.push({
161
+ id: "sec-001",
162
+ title: "Add CODEOWNERS File",
163
+ description: "Define code ownership for better security and review processes",
164
+ priority: "high",
165
+ category: "security",
166
+ effort: "small",
167
+ timeframe: "7 days",
168
+ dependencies: [],
169
+ evidence: this.extractEvidence(evidence, ["codeowners"]),
170
+ });
171
+ }
172
+ // AI/Workflow recommendations
173
+ if (!features.githubFeatures.copilotInstructions.found) {
174
+ recommendations.push({
175
+ id: "ai-001",
176
+ title: "Add Copilot Instructions",
177
+ description: "Create Copilot instructions to guide AI assistance in your repository",
178
+ priority: "medium",
179
+ category: "ai",
180
+ effort: "small",
181
+ timeframe: "14 days",
182
+ dependencies: ["found-001"],
183
+ evidence: this.extractEvidence(evidence, ["copilot", "instructions"]),
184
+ });
185
+ }
186
+ // Governance recommendations
187
+ if (scores.orgReadiness < 60) {
188
+ recommendations.push({
189
+ id: "gov-001",
190
+ title: "Establish Governance Processes",
191
+ description: "Implement clear processes for code review, testing, and deployment",
192
+ priority: "medium",
193
+ category: "governance",
194
+ effort: "large",
195
+ timeframe: "60 days",
196
+ dependencies: ["found-001", "sec-001"],
197
+ evidence: this.extractEvidence(evidence, ["governance", "process"]),
198
+ });
199
+ }
200
+ return recommendations.sort((a, b) => {
201
+ const priorityOrder = { high: 3, medium: 2, low: 1 };
202
+ return priorityOrder[b.priority] - priorityOrder[a.priority];
203
+ });
204
+ }
205
+ extractEvidence(evidence, categories) {
206
+ // Extract relevant evidence based on categories
207
+ const evidenceItems = [];
208
+ for (const category of categories) {
209
+ if (evidence[category]) {
210
+ evidenceItems.push(...Object.keys(evidence[category]));
211
+ }
212
+ }
213
+ return evidenceItems;
214
+ }
215
+ async generatePersonaInsights(scores, copilotFeatures, techStack, evidence) {
216
+ if (!this.config.persona) {
217
+ throw new Error("Persona type is required for persona insights");
218
+ }
219
+ const persona = persona_factory_1.PersonaFactory.createPersona(this.config.persona, this.config.enableLLMCoalescing);
220
+ const context = {
221
+ repository: this.config.repoPath,
222
+ assessmentResults: {
223
+ copilotFeatures,
224
+ techStack,
225
+ evidence,
226
+ scores,
227
+ },
228
+ scores,
229
+ recommendations: [], // Will be populated by persona
230
+ targetAudience: this.config.targetAudience || "organization",
231
+ };
232
+ return await persona.analyze(context);
233
+ }
234
+ async saveResults(result) {
235
+ if (!this.config.outputPath)
236
+ return;
237
+ const fs = await Promise.resolve().then(() => __importStar(require("fs/promises")));
238
+ const path = await Promise.resolve().then(() => __importStar(require("path")));
239
+ const outputFile = path.join(this.config.outputPath, `ai-enablement-assessment-${Date.now()}.${this.config.outputFormat}`);
240
+ let content;
241
+ switch (this.config.outputFormat) {
242
+ case "json":
243
+ content = JSON.stringify(result, null, 2);
244
+ break;
245
+ case "adr":
246
+ content = result.adr || "No ADR generated";
247
+ break;
248
+ case "markdown":
249
+ content = this.generateMarkdownReport(result);
250
+ break;
251
+ default:
252
+ content = JSON.stringify(result, null, 2);
253
+ }
254
+ await fs.writeFile(outputFile, content, "utf-8");
255
+ console.log(`📄 Results saved to: ${outputFile}`);
256
+ }
257
+ generateMarkdownReport(result) {
258
+ return `# AI Enablement Assessment Report
259
+
260
+ ## Overview
261
+ - **Repository**: ${result.metadata.repository}
262
+ - **Assessed**: ${result.metadata.timestamp}
263
+ - **Duration**: ${result.metadata.duration}ms
264
+
265
+ ## Readiness Scores
266
+
267
+ | Category | Score | Status |
268
+ |----------|-------|--------|
269
+ | Repository Readiness | ${result.scores.repoReadiness}/100 | ${this.getScoreStatus(result.scores.repoReadiness)} |
270
+ | Team Readiness | ${result.scores.teamReadiness}/100 | ${this.getScoreStatus(result.scores.teamReadiness)} |
271
+ | Organization Readiness | ${result.scores.orgReadiness}/100 | ${this.getScoreStatus(result.scores.orgReadiness)} |
272
+ | Overall Maturity | ${result.scores.overallMaturity}/8 | ${this.getMaturityStatus(result.scores.overallMaturity)} |
273
+
274
+ ## Recommendations
275
+
276
+ ${result.recommendations
277
+ .map((rec) => `
278
+ ### ${rec.title} (${rec.priority})
279
+ **Category**: ${rec.category} | **Effort**: ${rec.effort} | **Timeframe**: ${rec.timeframe}
280
+
281
+ ${rec.description}
282
+
283
+ **Dependencies**: ${rec.dependencies.length > 0 ? rec.dependencies.join(", ") : "None"}
284
+ `)
285
+ .join("\n")}
286
+
287
+ ${result.adr ? `\n## Architecture Decision Record\n\n${result.adr}` : ""}
288
+ `;
289
+ }
290
+ getScoreStatus(score) {
291
+ if (score >= 80)
292
+ return "✅ Excellent";
293
+ if (score >= 60)
294
+ return "⚠️ Good";
295
+ if (score >= 40)
296
+ return "🔶 Fair";
297
+ return "❌ Poor";
298
+ }
299
+ getMaturityStatus(level) {
300
+ if (level >= 6)
301
+ return "✅ Advanced";
302
+ if (level >= 4)
303
+ return "⚠️ Developing";
304
+ if (level >= 2)
305
+ return "🔶 Basic";
306
+ return "❌ Initial";
307
+ }
308
+ }
309
+ exports.AssessmentEngine = AssessmentEngine;
310
+ //# sourceMappingURL=assessment-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assessment-engine.js","sourceRoot":"","sources":["../../src/core/assessment-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * ADR Generator
3
+ *
4
+ * Generates professional Architecture Decision Records for AI enablement
5
+ * based on analysis results and evidence
6
+ */
7
+ import { TechStackAnalysis } from "../analyzers/tech-stack-analyzer";
8
+ import { EvidenceData } from "../collectors/evidence-collector";
9
+ import { Recommendation } from "../core/assessment-engine";
10
+ import { StructuredAdversarialResponse } from "../llm/structured-types";
11
+ import { CopilotFeatureAnalysis } from "../scanners/copilot-feature-scanner";
12
+ import { ReadinessScores } from "../scorers/readiness-scorer";
13
+ export interface ADRContext {
14
+ scores: ReadinessScores;
15
+ copilotFeatures: CopilotFeatureAnalysis;
16
+ techStack: TechStackAnalysis;
17
+ evidence: EvidenceData;
18
+ recommendations: Recommendation[];
19
+ structuredInsights?: StructuredAdversarialResponse | undefined;
20
+ }
21
+ export declare class ADRGenerator {
22
+ generate(context: ADRContext): Promise<string>;
23
+ private generateBaseADR;
24
+ private generateADRNumber;
25
+ private getScoreDescription;
26
+ private getMaturityDescription;
27
+ private generateRiskRationale;
28
+ private generateValueRationale;
29
+ private generatePhaseImplementation;
30
+ private generateKPIs;
31
+ private generateMitigationStrategies;
32
+ private calculateNextReviewDate;
33
+ private refineADRWithInsights;
34
+ }
35
+ //# sourceMappingURL=adr-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr-generator.d.ts","sourceRoot":"","sources":["../../src/generators/adr-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,eAAe,CAAC;IACxB,eAAe,EAAE,sBAAsB,CAAC;IACxC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,YAAY,CAAC;IACvB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,kBAAkB,CAAC,EAAE,6BAA6B,GAAG,SAAS,CAAC;CAChE;AAED,qBAAa,YAAY;IACjB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBpD,OAAO,CAAC,eAAe;IAuMvB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,qBAAqB;IAmC7B,OAAO,CAAC,sBAAsB;IAmC9B,OAAO,CAAC,2BAA2B;IAenC,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,4BAA4B;IAwBpC,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,qBAAqB;CAyB9B"}