fi-pool-server 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/README.md +26 -0
  2. package/dist/db/index.d.ts +18 -0
  3. package/dist/db/index.d.ts.map +1 -0
  4. package/dist/db/index.js +58 -0
  5. package/dist/db/index.js.map +1 -0
  6. package/dist/db/migrate.d.ts +11 -0
  7. package/dist/db/migrate.d.ts.map +1 -0
  8. package/dist/db/migrate.js +42 -0
  9. package/dist/db/migrate.js.map +1 -0
  10. package/dist/db/schema.d.ts +1101 -0
  11. package/dist/db/schema.d.ts.map +1 -0
  12. package/dist/db/schema.js +149 -0
  13. package/dist/db/schema.js.map +1 -0
  14. package/dist/index.d.ts +50 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +69 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/services/analysis.d.ts +62 -0
  19. package/dist/services/analysis.d.ts.map +1 -0
  20. package/dist/services/analysis.js +74 -0
  21. package/dist/services/analysis.js.map +1 -0
  22. package/dist/services/daily-info.d.ts +150 -0
  23. package/dist/services/daily-info.d.ts.map +1 -0
  24. package/dist/services/daily-info.js +293 -0
  25. package/dist/services/daily-info.js.map +1 -0
  26. package/dist/services/embedding.d.ts +89 -0
  27. package/dist/services/embedding.d.ts.map +1 -0
  28. package/dist/services/embedding.js +227 -0
  29. package/dist/services/embedding.js.map +1 -0
  30. package/dist/services/llm.d.ts +64 -0
  31. package/dist/services/llm.d.ts.map +1 -0
  32. package/dist/services/llm.js +109 -0
  33. package/dist/services/llm.js.map +1 -0
  34. package/dist/services/pipeline.d.ts +161 -0
  35. package/dist/services/pipeline.d.ts.map +1 -0
  36. package/dist/services/pipeline.js +844 -0
  37. package/dist/services/pipeline.js.map +1 -0
  38. package/dist/services/pool.d.ts +142 -0
  39. package/dist/services/pool.d.ts.map +1 -0
  40. package/dist/services/pool.js +208 -0
  41. package/dist/services/pool.js.map +1 -0
  42. package/dist/services/sentiment.d.ts +31 -0
  43. package/dist/services/sentiment.d.ts.map +1 -0
  44. package/dist/services/sentiment.js +76 -0
  45. package/dist/services/sentiment.js.map +1 -0
  46. package/dist/services/session.d.ts +117 -0
  47. package/dist/services/session.d.ts.map +1 -0
  48. package/dist/services/session.js +176 -0
  49. package/dist/services/session.js.map +1 -0
  50. package/dist/services/stock.d.ts +82 -0
  51. package/dist/services/stock.d.ts.map +1 -0
  52. package/dist/services/stock.js +99 -0
  53. package/dist/services/stock.js.map +1 -0
  54. package/dist/services/word-count.d.ts +61 -0
  55. package/dist/services/word-count.d.ts.map +1 -0
  56. package/dist/services/word-count.js +120 -0
  57. package/dist/services/word-count.js.map +1 -0
  58. package/dist/tools/auxiliary.d.ts +93 -0
  59. package/dist/tools/auxiliary.d.ts.map +1 -0
  60. package/dist/tools/auxiliary.js +204 -0
  61. package/dist/tools/auxiliary.js.map +1 -0
  62. package/dist/tools/command.d.ts +193 -0
  63. package/dist/tools/command.d.ts.map +1 -0
  64. package/dist/tools/command.js +263 -0
  65. package/dist/tools/command.js.map +1 -0
  66. package/dist/tools/execute.d.ts +109 -0
  67. package/dist/tools/execute.d.ts.map +1 -0
  68. package/dist/tools/execute.js +112 -0
  69. package/dist/tools/execute.js.map +1 -0
  70. package/dist/tools/manager.d.ts +150 -0
  71. package/dist/tools/manager.d.ts.map +1 -0
  72. package/dist/tools/manager.js +200 -0
  73. package/dist/tools/manager.js.map +1 -0
  74. package/dist/tools/query.d.ts +163 -0
  75. package/dist/tools/query.d.ts.map +1 -0
  76. package/dist/tools/query.js +190 -0
  77. package/dist/tools/query.js.map +1 -0
  78. package/dist/utils/http-client.d.ts +87 -0
  79. package/dist/utils/http-client.d.ts.map +1 -0
  80. package/dist/utils/http-client.js +211 -0
  81. package/dist/utils/http-client.js.map +1 -0
  82. package/dist/utils/indicators.d.ts +194 -0
  83. package/dist/utils/indicators.d.ts.map +1 -0
  84. package/dist/utils/indicators.js +395 -0
  85. package/dist/utils/indicators.js.map +1 -0
  86. package/dist/utils/signals.d.ts +65 -0
  87. package/dist/utils/signals.d.ts.map +1 -0
  88. package/dist/utils/signals.js +171 -0
  89. package/dist/utils/signals.js.map +1 -0
  90. package/drizzle/0000_equal_marvel_apes.sql +124 -0
  91. package/drizzle/meta/0000_snapshot.json +858 -0
  92. package/drizzle/meta/_journal.json +13 -0
  93. package/package.json +58 -0
@@ -0,0 +1,64 @@
1
+ /**
2
+ * LLM 推理服务 — LM Studio (OpenAI 兼容 API)
3
+ *
4
+ * 通过 LM Studio 的 OpenAI 兼容 HTTP 接口调用本地 LLM 模型。
5
+ * 支持聊天补全、模型列表查询和连接检查。
6
+ *
7
+ * @module services/llm
8
+ */
9
+ /**
10
+ * 调用 LM Studio 聊天补全 API。
11
+ *
12
+ * 向本地 LLM 发送消息列表并获取回复文本。
13
+ * 内置超时(60s)和重试(2 次)机制。
14
+ *
15
+ * @param params.model - 模型名称,不传则使用环境变量 LLM_MODEL
16
+ * @param params.messages - 对话消息列表(role: system/user/assistant)
17
+ * @param params.maxTokens - 最大生成 token 数,不传则由模型决定
18
+ * @param params.temperature - 采样温度,默认 0.7
19
+ * @param params.sessionId - 会话 ID(透传,暂未用于 LM Studio 本身)
20
+ * @returns LLM 回复文本
21
+ *
22
+ * @throws 当 LM Studio 不可达、返回错误或结果为空白时抛出
23
+ *
24
+ * @example
25
+ * const reply = await chatCompletion({
26
+ * messages: [{ role: 'user', content: '分析贵州茅台' }],
27
+ * maxTokens: 500,
28
+ * });
29
+ */
30
+ export declare function chatCompletion(params: {
31
+ model?: string;
32
+ messages: {
33
+ role: string;
34
+ content: string;
35
+ }[];
36
+ maxTokens?: number;
37
+ temperature?: number;
38
+ sessionId?: string;
39
+ }): Promise<string>;
40
+ /**
41
+ * 列出 LM Studio 中可用的模型。
42
+ *
43
+ * @returns 模型 ID 数组
44
+ *
45
+ * @example
46
+ * const models = await listModels();
47
+ * // ['qwen/qwen3.5-9b', '...']
48
+ */
49
+ export declare function listModels(): Promise<string[]>;
50
+ /**
51
+ * 检查 LM Studio 服务是否可达。
52
+ *
53
+ * 通过调用 listModels() 验证连接,不抛出异常即为可达。
54
+ *
55
+ * @returns true 表示连接正常,false 表示不可达
56
+ */
57
+ export declare function checkConnection(): Promise<boolean>;
58
+ /**
59
+ * 获取 LLM 上下文窗口限制。
60
+ *
61
+ * @returns 环境变量 LLM_CONTEXT_LIMIT 的值(默认 262144)
62
+ */
63
+ export declare function getContextLimit(): number;
64
+ //# sourceMappingURL=llm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/services/llm.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAoDH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE;IACN,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACA,OAAO,CAAC,MAAM,CAAC,CA0CjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAUpD;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * LLM 推理服务 — LM Studio (OpenAI 兼容 API)
3
+ *
4
+ * 通过 LM Studio 的 OpenAI 兼容 HTTP 接口调用本地 LLM 模型。
5
+ * 支持聊天补全、模型列表查询和连接检查。
6
+ *
7
+ * @module services/llm
8
+ */
9
+ import { fetchJson, fetchWithRetry } from '../utils/http-client.js';
10
+ // ─── 配置 ────────────────────────────────────────────────────────
11
+ /** LM Studio 服务地址,默认 http://127.0.0.1:1234 */
12
+ const BASE_URL = process.env.LLM_BASE_URL || 'http://127.0.0.1:1234';
13
+ /** 默认使用的模型名称 */
14
+ const DEFAULT_MODEL = process.env.LLM_MODEL || 'qwen/qwen3.5-9b';
15
+ /** LLM 上下文窗口限制(token),默认 262144 */
16
+ const CONTEXT_LIMIT = parseInt(process.env.LLM_CONTEXT_LIMIT || '262144', 10);
17
+ // ─── 公开 API ────────────────────────────────────────────────────
18
+ /**
19
+ * 调用 LM Studio 聊天补全 API。
20
+ *
21
+ * 向本地 LLM 发送消息列表并获取回复文本。
22
+ * 内置超时(60s)和重试(2 次)机制。
23
+ *
24
+ * @param params.model - 模型名称,不传则使用环境变量 LLM_MODEL
25
+ * @param params.messages - 对话消息列表(role: system/user/assistant)
26
+ * @param params.maxTokens - 最大生成 token 数,不传则由模型决定
27
+ * @param params.temperature - 采样温度,默认 0.7
28
+ * @param params.sessionId - 会话 ID(透传,暂未用于 LM Studio 本身)
29
+ * @returns LLM 回复文本
30
+ *
31
+ * @throws 当 LM Studio 不可达、返回错误或结果为空白时抛出
32
+ *
33
+ * @example
34
+ * const reply = await chatCompletion({
35
+ * messages: [{ role: 'user', content: '分析贵州茅台' }],
36
+ * maxTokens: 500,
37
+ * });
38
+ */
39
+ export async function chatCompletion(params) {
40
+ const url = `${BASE_URL}/v1/chat/completions`;
41
+ const body = {
42
+ model: params.model || DEFAULT_MODEL,
43
+ messages: params.messages,
44
+ max_tokens: params.maxTokens,
45
+ temperature: params.temperature ?? 0.7,
46
+ stream: false,
47
+ };
48
+ // 使用 fetchWithRetry:传入一个返回 Promise 的函数
49
+ // LLM 推理可能较慢(尤其首次加载模型),超时设为 120s
50
+ const LLM_TIMEOUT = 120_000;
51
+ const data = await fetchWithRetry(() => fetchJson(url, {
52
+ method: 'POST',
53
+ headers: {
54
+ 'Content-Type': 'application/json',
55
+ },
56
+ body: JSON.stringify(body),
57
+ }, undefined, // signal
58
+ LLM_TIMEOUT), 2, 1000);
59
+ if (!data.choices || data.choices.length === 0) {
60
+ throw new Error(`LLM 返回空结果: 无 choices (model=${body.model})`);
61
+ }
62
+ const content = data.choices[0].message?.content;
63
+ if (content === undefined || content === null) {
64
+ throw new Error(`LLM 返回空消息内容 (model=${body.model})`);
65
+ }
66
+ return content;
67
+ }
68
+ /**
69
+ * 列出 LM Studio 中可用的模型。
70
+ *
71
+ * @returns 模型 ID 数组
72
+ *
73
+ * @example
74
+ * const models = await listModels();
75
+ * // ['qwen/qwen3.5-9b', '...']
76
+ */
77
+ export async function listModels() {
78
+ const url = `${BASE_URL}/v1/models`;
79
+ const data = await fetchJson(url);
80
+ if (!data.data || !Array.isArray(data.data)) {
81
+ throw new Error(`模型列表响应格式异常: ${JSON.stringify(data).slice(0, 200)}`);
82
+ }
83
+ return data.data.map((m) => m.id);
84
+ }
85
+ /**
86
+ * 检查 LM Studio 服务是否可达。
87
+ *
88
+ * 通过调用 listModels() 验证连接,不抛出异常即为可达。
89
+ *
90
+ * @returns true 表示连接正常,false 表示不可达
91
+ */
92
+ export async function checkConnection() {
93
+ try {
94
+ await listModels();
95
+ return true;
96
+ }
97
+ catch {
98
+ return false;
99
+ }
100
+ }
101
+ /**
102
+ * 获取 LLM 上下文窗口限制。
103
+ *
104
+ * @returns 环境变量 LLM_CONTEXT_LIMIT 的值(默认 262144)
105
+ */
106
+ export function getContextLimit() {
107
+ return CONTEXT_LIMIT;
108
+ }
109
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/services/llm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * 流水线编排器
3
+ *
4
+ * 将数据获取、LLM 分析、舆情搜索、多角色讨论和最终报告
5
+ * 组装为可执行的个股分析流水线。
6
+ *
7
+ * @module services/pipeline
8
+ */
9
+ export interface Stage1Result {
10
+ date: string;
11
+ records: number;
12
+ }
13
+ export interface Stage2Result {
14
+ id: number;
15
+ summary: string;
16
+ indicators: string;
17
+ signals: string;
18
+ }
19
+ export interface Stage3Result {
20
+ id: number;
21
+ report: string;
22
+ sources: string[];
23
+ }
24
+ export interface Stage4Result {
25
+ roles: {
26
+ id: number;
27
+ role: string;
28
+ report: string;
29
+ round: number;
30
+ wordCount: number;
31
+ }[];
32
+ }
33
+ export interface Stage5Result {
34
+ id: number;
35
+ summary: string;
36
+ fullReport: string;
37
+ roleSummary: string;
38
+ pipelineId: string;
39
+ }
40
+ export interface PipelineResult {
41
+ date: string;
42
+ pipelineId: string;
43
+ finalReportId: number;
44
+ }
45
+ export interface LocalAnalysisResult {
46
+ date: string;
47
+ analysisReportId: number;
48
+ }
49
+ export declare class Pipeline {
50
+ code: string;
51
+ sessionId: string;
52
+ constructor(code: string);
53
+ /**
54
+ * Stage 1 — 数据获取
55
+ *
56
+ * 从腾讯财经接口获取最近 60 个交易日数据,
57
+ * 写入 daily_info 表并更新 stock.current_price。
58
+ *
59
+ * @returns 最新交易日日期和记录数
60
+ *
61
+ * @throws 股票不存在或数据获取失败时抛出
62
+ */
63
+ stage1FetchData(): Promise<Stage1Result>;
64
+ /**
65
+ * Stage 2 — 客观报告(LLM)
66
+ *
67
+ * 基于最近 60 个交易日的行情数据和技术指标,
68
+ * 调用本地 LLM 生成客观分析报告。
69
+ *
70
+ * 报告包含结构化技术指标和文字摘要,
71
+ * 写入 daily_analysis_report 表并生成向量嵌入。
72
+ *
73
+ * @param date - 报告日期(yyyy-MM-dd)
74
+ * @returns 创建的客观报告信息
75
+ */
76
+ stage2ObjectiveReport(date: string): Promise<Stage2Result>;
77
+ /**
78
+ * Stage 3 — 舆情获取
79
+ *
80
+ * 调用 DashScope API 搜索股票最近三天的新闻和市场舆情,
81
+ * 将结果写入 sentiment_report 表。
82
+ *
83
+ * @param date - 报告日期(yyyy-MM-dd)
84
+ * @returns 舆情报告信息
85
+ */
86
+ stage3Sentiment(date: string): Promise<Stage3Result>;
87
+ /**
88
+ * Stage 4 — 多角色分析
89
+ *
90
+ * 4 个角色按顺序发言,每轮每人聚焦各自专业领域。
91
+ * 第一轮(必须):技术分析师 → 基本面分析师 → 舆情分析师 → 风控官
92
+ * 第二轮(可选):风控官 → 舆情分析师 → 基本面分析师 → 技术分析师(回应分歧)
93
+ *
94
+ * 每个角色的发言写入 analysis_roler 表。
95
+ *
96
+ * @param date - 分析日期
97
+ * @param darId - 客观报告 ID
98
+ * @param srId - 舆情报告 ID(可为 null)
99
+ * @returns 所有角色发言记录
100
+ */
101
+ stage4MultiRole(date: string, darId: number, srId: number | null): Promise<Stage4Result>;
102
+ /**
103
+ * Stage 5 — 最终报告
104
+ *
105
+ * 综合客观报告、舆情报告和多角色分析结果,
106
+ * 调用 LLM 生成包含概述(overview)和完整报告(full)的最终报告。
107
+ *
108
+ * 写入 final_report 表并生成向量嵌入。
109
+ *
110
+ * @param date - 报告日期
111
+ * @returns 最终报告信息
112
+ */
113
+ stage5FinalReport(date: string): Promise<Stage5Result>;
114
+ /**
115
+ * 运行完整流水线(Stage 1→5)。
116
+ *
117
+ * 依次执行数据获取、客观报告、
118
+ * 舆情获取、多角色分析和最终报告。
119
+ *
120
+ * @returns 流水线运行结果(日期、流水线 ID、最终报告 ID)
121
+ *
122
+ * @example
123
+ * const result = await new Pipeline('600519').runFull();
124
+ * console.log(result.date, result.pipelineId);
125
+ */
126
+ runFull(): Promise<PipelineResult>;
127
+ /**
128
+ * 运行本地分析(Stage 1→2)。
129
+ *
130
+ * 仅执行数据获取和客观分析报告生成,跳过舆情和多角色环节。
131
+ *
132
+ * @returns 分析结果(日期和报告 ID)
133
+ *
134
+ * @example
135
+ * const result = await new Pipeline('600519').runLocalAnalysis();
136
+ * console.log(result.date, result.analysisReportId);
137
+ */
138
+ runLocalAnalysis(): Promise<LocalAnalysisResult>;
139
+ }
140
+ /**
141
+ * Stage 1 — 数据获取(向后兼容包装)
142
+ *
143
+ * @param code - 六位股票代码
144
+ * @returns 最新交易日日期和记录数
145
+ */
146
+ export declare function stage1FetchData(code: string): Promise<Stage1Result>;
147
+ /**
148
+ * 运行完整流水线(Stage 1→5,向后兼容包装)。
149
+ *
150
+ * @param code - 股票代码
151
+ * @returns 流水线运行结果(日期、流水线 ID、最终报告 ID)
152
+ */
153
+ export declare function runFullPipeline(code: string): Promise<PipelineResult>;
154
+ /**
155
+ * 运行本地分析(Stage 1→2,向后兼容包装)。
156
+ *
157
+ * @param code - 股票代码
158
+ * @returns 分析结果(日期和报告 ID)
159
+ */
160
+ export declare function runLocalAnalysis(code: string): Promise<LocalAnalysisResult>;
161
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/services/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAyBH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;CACL;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAoUD,qBAAa,QAAQ;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;gBAEN,IAAI,EAAE,MAAM;IAOxB;;;;;;;;;OASG;IACG,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC;IAuC9C;;;;;;;;;;;OAWG;IACG,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA2JhE;;;;;;;;OAQG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAmD1D;;;;;;;;;;;;;OAaG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GAAG,IAAI,GAClB,OAAO,CAAC,YAAY,CAAC;IA2IxB;;;;;;;;;;OAUG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkK5D;;;;;;;;;;;OAWG;IACG,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC;IA+CxC;;;;;;;;;;OAUG;IACG,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAsBvD;AAID;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAGzE;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAG3E;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mBAAmB,CAAC,CAG9B"}