dsh-plugin-om 0.0.31 → 0.0.33
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.
- package/README.md +14 -10
- package/dist/client/OmCompactionCard.d.ts.map +1 -1
- package/dist/client/definition.d.ts +0 -2
- package/dist/client/definition.d.ts.map +1 -1
- package/dist/client/locales.d.ts +0 -1
- package/dist/client/locales.d.ts.map +1 -1
- package/dist/client.js +5 -13
- package/dist/client.js.map +1 -1
- package/dist/compaction-log.d.ts +15 -8
- package/dist/compaction-log.d.ts.map +1 -1
- package/dist/compress-loop.d.ts +31 -4
- package/dist/compress-loop.d.ts.map +1 -1
- package/dist/compress-tools.d.ts +4 -4
- package/dist/compress-tools.d.ts.map +1 -1
- package/dist/compress-view.d.ts +17 -3
- package/dist/compress-view.d.ts.map +1 -1
- package/dist/compress.d.ts.map +1 -1
- package/dist/constants.d.ts +8 -3
- package/dist/constants.d.ts.map +1 -1
- package/dist/index.mjs +273 -57
- package/dist/log-index.d.ts +8 -2
- package/dist/log-index.d.ts.map +1 -1
- package/dist/types.d.ts +11 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/compress-tools.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - getHistory:查看要求区间内的条目(压缩视图,无 <history> 包裹;区间切入已有
|
|
7
7
|
* 压缩块时返回整块全部条目;start/end 缺省为要求区间首尾)
|
|
8
8
|
* - compressHistory:把 index 单条或 start..end 连续区间的 assistant 条目替换为
|
|
9
|
-
* content
|
|
9
|
+
* content 摘要(纯文本,构建最终块时以 CDATA 包裹嵌入;含 CDATA 包裹时拒绝)。参数非法 / 越界 / 覆盖用户或
|
|
10
10
|
* 系统消息 / 与条目或已有替换区间部分重叠 → 返回错误结果(模型可修正重试);
|
|
11
11
|
* 重复覆盖同一区间:新区间完全包含旧区间时覆盖,部分重叠时报错
|
|
12
12
|
* - skill 规则:区间覆盖工具名为 skill 的 toolcall 条目时,该 skill 块首次被覆盖
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import type { ToolSchema } from '@deepseek-ai/dsh-llm';
|
|
21
21
|
import { type CompressionView } from './compress-view.ts';
|
|
22
|
-
|
|
23
|
-
export
|
|
22
|
+
import { SKILL_TOOL_NAME } from './constants.ts';
|
|
23
|
+
export { SKILL_TOOL_NAME };
|
|
24
24
|
/** 工具执行结果(isError=true 时模型应修正调用或改变策略)。 */
|
|
25
25
|
export type ToolCallResult = {
|
|
26
26
|
/** 返回给模型的文本。 */
|
|
@@ -68,7 +68,7 @@ export declare class CompressionState {
|
|
|
68
68
|
complete(): ToolCallResult;
|
|
69
69
|
/**
|
|
70
70
|
* 构建最终 <history> 块:按 index 顺序合并视图条目与替换记录——user / sys 条目
|
|
71
|
-
* 原样、被替换区间生成 <assistant index|start end> 摘要条目(content
|
|
71
|
+
* 原样、被替换区间生成 <assistant index|start end> 摘要条目(content 以 CDATA 包裹嵌入)、
|
|
72
72
|
* 未替换 assistant 条目原样保留、reasoning 不进产物;块首为格式说明注释,开标签
|
|
73
73
|
* 携带 tip 属性。产物为合法 XML,无需校验。
|
|
74
74
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress-tools.d.ts","sourceRoot":"","sources":["../src/compress-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,
|
|
1
|
+
{"version":3,"file":"compress-tools.d.ts","sourceRoot":"","sources":["../src/compress-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAEL,KAAK,eAAe,EAIrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAiD,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEhG,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAYF,iDAAiD;AACjD,qBAAa,gBAAgB;IAQf,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,UAAU,CAAS;IAE3B;;OAEG;gBAC0B,IAAI,EAAE,eAAe;IAElD,2BAA2B;IAC3B,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,iCAAiC;IACjC,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc;IAuB1D,yCAAyC;IACzC,OAAO,CAAC,cAAc;IAMtB;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc;IA8CzD,yCAAyC;IACzC,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc;IA+H9D,+CAA+C;IAC/C,QAAQ,IAAI,cAAc;IAK1B;;;;;OAKG;IACH,eAAe,IAAI,MAAM;CAmD1B;AAED,8CAA8C;AAC9C,eAAO,MAAM,wBAAwB,EAAE,UAAU,EAqChD,CAAC"}
|
package/dist/compress-view.d.ts
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* 观察视图由完整消息原文构建(buildObserveView),反思视图由已有 <history> 块内条目构建
|
|
4
4
|
* (buildReflectView);getHistory 查看、compressHistory 区间校验与最终 <history> 块构建
|
|
5
5
|
* 共用同一套条目。导出 ViewEntry / CompressionView / BuildViewOptions / buildObserveView /
|
|
6
|
-
* buildReflectView / renderEntriesXml / entryToElement / historyInner /
|
|
6
|
+
* buildReflectView / renderEntriesXml / entryToElement / appendCdataText / historyInner /
|
|
7
|
+
* toolCallNameOf / skillNameOf。
|
|
7
8
|
*/
|
|
8
9
|
import type { Document, Element } from '@xmldom/xmldom';
|
|
9
10
|
import type { CompleteMessage, Session } from './types.ts';
|
|
@@ -29,6 +30,8 @@ export type ViewEntry = {
|
|
|
29
30
|
sysKind?: string;
|
|
30
31
|
/** 观察视图 toolcall 条目的工具名(skill 判定用)。 */
|
|
31
32
|
toolName?: string;
|
|
33
|
+
/** skill 条目的 skill 名(toolName 为 skill 时存在;反思视图取自 name 属性,缺失为空串)。 */
|
|
34
|
+
skillName?: string;
|
|
32
35
|
/** 所属压缩块 seq(反思视图;块整体展开以此分组)。 */
|
|
33
36
|
blockSeq?: number;
|
|
34
37
|
};
|
|
@@ -46,6 +49,11 @@ export type CompressionView = {
|
|
|
46
49
|
* 找不到返回 undefined。
|
|
47
50
|
*/
|
|
48
51
|
export declare function toolCallNameOf(session: Session, cm: CompleteMessage): string | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* 提取 skill 条目的 skill 名(tool-call 参数 JSON 的 name 字段)。非 skill 工具的
|
|
54
|
+
* toolcall 返回 undefined;toolName 为 skill 但参数缺失或非法时返回空串。
|
|
55
|
+
*/
|
|
56
|
+
export declare function skillNameOf(session: Session, cm: CompleteMessage): string | undefined;
|
|
49
57
|
/** 视图构建选项:skipReasoning=true 时不含 <reasoning> 参考条目。 */
|
|
50
58
|
export type BuildViewOptions = {
|
|
51
59
|
/** 是否在视图中省略 reasoning 参考条目。 */
|
|
@@ -61,6 +69,11 @@ export type BuildViewOptions = {
|
|
|
61
69
|
export declare function buildObserveView(session: Session, seqs: readonly number[], options?: BuildViewOptions): CompressionView;
|
|
62
70
|
/** 提取 <history> 块的内文(去开/闭标签;非块文本原样返回)。 */
|
|
63
71
|
export declare function historyInner(text: string): string;
|
|
72
|
+
/**
|
|
73
|
+
* 向元素追加 CDATA 正文:正文统一以 CDATA 包裹(逐字原样,不做实体转义)。
|
|
74
|
+
* 正文含 ]]> 时拆为相邻多个 CDATA 段,拼接后逐字还原原文,对读取方透明。
|
|
75
|
+
*/
|
|
76
|
+
export declare function appendCdataText(doc: Document, el: Element, text: string): void;
|
|
64
77
|
/**
|
|
65
78
|
* 反思视图:全部 <history> 块(historySection 收集,按表层顺序)的内条目投影为条目。
|
|
66
79
|
* 要求区间为全部块内条目引用的最小 / 最大 index;块解析失败降级为不可定位遗留条目;
|
|
@@ -71,8 +84,9 @@ export declare function buildReflectView(blocks: Array<{
|
|
|
71
84
|
seq: number;
|
|
72
85
|
}>, options?: BuildViewOptions): CompressionView;
|
|
73
86
|
/**
|
|
74
|
-
* 把一个视图条目构建为 XML
|
|
75
|
-
* 输出为 XML
|
|
87
|
+
* 把一个视图条目构建为 XML 元素(正文统一以 CDATA 包裹,逐字原样;user 条目的注释
|
|
88
|
+
* 输出为 XML 注释节点;sys 条目为无正文的空元素,自闭合输出)。getHistory 输出与
|
|
89
|
+
* 最终 <history> 块共用。
|
|
76
90
|
*/
|
|
77
91
|
export declare function entryToElement(doc: Document, entry: ViewEntry): Element;
|
|
78
92
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress-view.d.ts","sourceRoot":"","sources":["../src/compress-view.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"compress-view.d.ts","sourceRoot":"","sources":["../src/compress-view.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAIxD,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG3D;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY;IACZ,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC;IACjD,6CAA6C;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,eAAe,GAAG;IAC5B,uDAAuD;IACvD,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAyCF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAaxF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAmBrF;AAED,sDAAsD;AACtD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+BAA+B;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAmEjB;AAiBD,0CAA0C;AAC1C,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASjD;AAyCD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAW9E;AAsFD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EAC5C,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAUjB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAkDvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAO7D"}
|
package/dist/compress.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EACV,KAAK,EAKL,OAAO,EACP,YAAY,EACZ,OAAO,EAIR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAgB,KAAK,YAAY,EAAqC,MAAM,YAAY,CAAC;AAEhG;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,MAAM,EAAE,KAAK,CAAA;CAAE,GACjB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAmED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAY1E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,GACtB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,CA8BpE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG;IAChD,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAUA;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,GACf;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAoB1D;AAgID;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAuH7B;AAwED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAgO7B;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAwB7B"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 共享常量:插件级魔法字符串,集中定义避免散落各模块。
|
|
3
3
|
* 导出 PLUGIN_LABEL / HISTORY_TAG / HISTORY_TIP / COMPLETE_MESSAGE_DEFINITION /
|
|
4
|
-
*
|
|
4
|
+
* HISTORY_FORMAT_NOTE / SKILL_TOOL_NAME / COMPACT_CHECKPOINT_PLUGIN /
|
|
5
|
+
* COMPACTION_ABORTED_ERROR / isPluginOwnedSource。
|
|
5
6
|
*/
|
|
6
7
|
/** 插件标识:压缩消息 source.plugin 取值与日志前缀。 */
|
|
7
8
|
export declare const PLUGIN_LABEL = "dsh-plugin-om";
|
|
@@ -14,8 +15,12 @@ export declare const HISTORY_TIP = "\u5F53\u524D\u5757\u662F\u5386\u53F2\u6D88\u
|
|
|
14
15
|
* 完整消息是摘要日志与 recall 共用的定位单位;首条 index 为 0,按会话顺序递增、全局稳定。
|
|
15
16
|
*/
|
|
16
17
|
export declare const COMPLETE_MESSAGE_DEFINITION = "`\u5B8C\u6574\u6D88\u606F`\u6307\u4E00\u6761`\u7528\u6237\u6D88\u606F`\u3001`\u7CFB\u7EDF\u6D88\u606F`\u3001`\u6A21\u578B\u8F93\u51FA\u6587\u672C`\u6216`\u5177\u6709result\u7684toolcall`\uFF1B\u9996\u6761 index \u4E3A 0\uFF0C\u6309\u4F1A\u8BDD\u987A\u5E8F\u9012\u589E\u3002";
|
|
17
|
-
/**
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* 最终 <history> 块内文块首的格式说明注释(XML 注释,完整消息定义 + 条目标签语义 + CDATA 约定)。
|
|
20
|
+
*/
|
|
21
|
+
export declare const HISTORY_FORMAT_NOTE = "<!-- `\u5B8C\u6574\u6D88\u606F`\u6307\u4E00\u6761`\u7528\u6237\u6D88\u606F`\u3001`\u7CFB\u7EDF\u6D88\u606F`\u3001`\u6A21\u578B\u8F93\u51FA\u6587\u672C`\u6216`\u5177\u6709result\u7684toolcall`\uFF1B\u9996\u6761 index \u4E3A 0\uFF0C\u6309\u4F1A\u8BDD\u987A\u5E8F\u9012\u589E\u3002 <TAG index=\"N\">\u8868\u793A\u5355\u6761\u5B8C\u6574\u6D88\u606F\uFF0C<TAG start=\"A\" end=\"B\"> \u8868\u793A\u591A\u6761\u8FDE\u7EED\u6D88\u606F\uFF0Cstart/end \u662F\u9996\u5C3E\u5B8C\u6574\u6D88\u606F\u7684 index\uFF1B\u6D88\u606F\u5757\u7684\u5185\u5BB9\u662F\u7528CDATA\u5305\u88F9\u7684\u7EAF\u6587\u672C\uFF1B<sys type=\"KIND\" index=\"N\"> \u8868\u793A\u88AB\u538B\u7F29\u7684\u7CFB\u7EDF\u6D88\u606F\uFF0C\u5757\u4E2D\u4E3A\u7A7A\uFF1B<skill_content name=\"S\" index=\"N\"> \u8868\u793A\u672A\u538B\u7F29\u7684\u539F\u59CB skill -->";
|
|
22
|
+
/** skill 工具名:toolcall 条目的工具名为该值时视为 skill 加载,<history> 块中以 <skill_content> 元素呈现。 */
|
|
23
|
+
export declare const SKILL_TOOL_NAME = "skill";
|
|
19
24
|
/** 旧日志压缩消息的宿主 checkpoint 标记 plugin 名(历史兼容识别用)。 */
|
|
20
25
|
export declare const COMPACT_CHECKPOINT_PLUGIN = "compact";
|
|
21
26
|
/**
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,uCAAuC;AACvC,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,iDAAiD;AACjD,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,iDAAiD;AACjD,eAAO,MAAM,WAAW,iHAAuB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,sRACqC,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,mBAAmB,2zBAAgP,CAAC;AAEjR,mFAAmF;AACnF,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC,kDAAkD;AAClD,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,6DAA0B,CAAC;AAEhE,uFAAuF;AACvF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACrD,OAAO,CAGT"}
|