webaiapi 0.0.0-stage → 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 (205) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +184 -2
  3. package/bin/webapi.mjs +45 -0
  4. package/dist/browser/auth-capture.d.ts +110 -0
  5. package/dist/browser/auth-capture.d.ts.map +1 -0
  6. package/dist/browser/auth-capture.js +487 -0
  7. package/dist/browser/auth-capture.js.map +1 -0
  8. package/dist/browser/credentials.d.ts +102 -0
  9. package/dist/browser/credentials.d.ts.map +1 -0
  10. package/dist/browser/credentials.js +209 -0
  11. package/dist/browser/credentials.js.map +1 -0
  12. package/dist/browser/js-eval.d.ts +44 -0
  13. package/dist/browser/js-eval.d.ts.map +1 -0
  14. package/dist/browser/js-eval.js +20 -0
  15. package/dist/browser/js-eval.js.map +1 -0
  16. package/dist/browser/login-flow.d.ts +171 -0
  17. package/dist/browser/login-flow.d.ts.map +1 -0
  18. package/dist/browser/login-flow.js +606 -0
  19. package/dist/browser/login-flow.js.map +1 -0
  20. package/dist/browser/manager.d.ts +144 -0
  21. package/dist/browser/manager.d.ts.map +1 -0
  22. package/dist/browser/manager.js +586 -0
  23. package/dist/browser/manager.js.map +1 -0
  24. package/dist/browser/platforms.d.ts +96 -0
  25. package/dist/browser/platforms.d.ts.map +1 -0
  26. package/dist/browser/platforms.js +288 -0
  27. package/dist/browser/platforms.js.map +1 -0
  28. package/dist/browser/sse-capture.d.ts +23 -0
  29. package/dist/browser/sse-capture.d.ts.map +1 -0
  30. package/dist/browser/sse-capture.js +199 -0
  31. package/dist/browser/sse-capture.js.map +1 -0
  32. package/dist/browser/stealth.d.ts +12 -0
  33. package/dist/browser/stealth.d.ts.map +1 -0
  34. package/dist/browser/stealth.js +12 -0
  35. package/dist/browser/stealth.js.map +1 -0
  36. package/dist/cli.d.ts +12 -0
  37. package/dist/cli.d.ts.map +1 -0
  38. package/dist/cli.js +441 -0
  39. package/dist/cli.js.map +1 -0
  40. package/dist/config.d.ts +90 -0
  41. package/dist/config.d.ts.map +1 -0
  42. package/dist/config.js +246 -0
  43. package/dist/config.js.map +1 -0
  44. package/dist/controllers/history-db.d.ts +56 -0
  45. package/dist/controllers/history-db.d.ts.map +1 -0
  46. package/dist/controllers/history-db.js +260 -0
  47. package/dist/controllers/history-db.js.map +1 -0
  48. package/dist/controllers/request-pool.d.ts +78 -0
  49. package/dist/controllers/request-pool.d.ts.map +1 -0
  50. package/dist/controllers/request-pool.js +222 -0
  51. package/dist/controllers/request-pool.js.map +1 -0
  52. package/dist/controllers/router.d.ts +172 -0
  53. package/dist/controllers/router.d.ts.map +1 -0
  54. package/dist/controllers/router.js +569 -0
  55. package/dist/controllers/router.js.map +1 -0
  56. package/dist/index.d.ts +72 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +61 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/log/api-logger.d.ts +55 -0
  61. package/dist/log/api-logger.d.ts.map +1 -0
  62. package/dist/log/api-logger.js +264 -0
  63. package/dist/log/api-logger.js.map +1 -0
  64. package/dist/log/debug-logger.d.ts +49 -0
  65. package/dist/log/debug-logger.d.ts.map +1 -0
  66. package/dist/log/debug-logger.js +285 -0
  67. package/dist/log/debug-logger.js.map +1 -0
  68. package/dist/log/logger.d.ts +16 -0
  69. package/dist/log/logger.d.ts.map +1 -0
  70. package/dist/log/logger.js +35 -0
  71. package/dist/log/logger.js.map +1 -0
  72. package/dist/postinstall.d.ts +3 -0
  73. package/dist/postinstall.d.ts.map +1 -0
  74. package/dist/postinstall.js +90 -0
  75. package/dist/postinstall.js.map +1 -0
  76. package/dist/providers/base.d.ts +83 -0
  77. package/dist/providers/base.d.ts.map +1 -0
  78. package/dist/providers/base.js +51 -0
  79. package/dist/providers/base.js.map +1 -0
  80. package/dist/providers/chatglm-dom-extract.d.ts +24 -0
  81. package/dist/providers/chatglm-dom-extract.d.ts.map +1 -0
  82. package/dist/providers/chatglm-dom-extract.js +175 -0
  83. package/dist/providers/chatglm-dom-extract.js.map +1 -0
  84. package/dist/providers/chatglm-dom.d.ts +110 -0
  85. package/dist/providers/chatglm-dom.d.ts.map +1 -0
  86. package/dist/providers/chatglm-dom.js +384 -0
  87. package/dist/providers/chatglm-dom.js.map +1 -0
  88. package/dist/providers/chatglm-sse.d.ts +119 -0
  89. package/dist/providers/chatglm-sse.d.ts.map +1 -0
  90. package/dist/providers/chatglm-sse.js +241 -0
  91. package/dist/providers/chatglm-sse.js.map +1 -0
  92. package/dist/providers/chatglm.d.ts +288 -0
  93. package/dist/providers/chatglm.d.ts.map +1 -0
  94. package/dist/providers/chatglm.js +1631 -0
  95. package/dist/providers/chatglm.js.map +1 -0
  96. package/dist/routes/chat.d.ts +117 -0
  97. package/dist/routes/chat.d.ts.map +1 -0
  98. package/dist/routes/chat.js +1346 -0
  99. package/dist/routes/chat.js.map +1 -0
  100. package/dist/routes/compress.d.ts +142 -0
  101. package/dist/routes/compress.d.ts.map +1 -0
  102. package/dist/routes/compress.js +551 -0
  103. package/dist/routes/compress.js.map +1 -0
  104. package/dist/routes/failover.d.ts +34 -0
  105. package/dist/routes/failover.d.ts.map +1 -0
  106. package/dist/routes/failover.js +221 -0
  107. package/dist/routes/failover.js.map +1 -0
  108. package/dist/routes/helpers.d.ts +174 -0
  109. package/dist/routes/helpers.d.ts.map +1 -0
  110. package/dist/routes/helpers.js +525 -0
  111. package/dist/routes/helpers.js.map +1 -0
  112. package/dist/routes/meta.d.ts +31 -0
  113. package/dist/routes/meta.d.ts.map +1 -0
  114. package/dist/routes/meta.js +184 -0
  115. package/dist/routes/meta.js.map +1 -0
  116. package/dist/routes/sse.d.ts +82 -0
  117. package/dist/routes/sse.d.ts.map +1 -0
  118. package/dist/routes/sse.js +77 -0
  119. package/dist/routes/sse.js.map +1 -0
  120. package/dist/server/app.d.ts +24 -0
  121. package/dist/server/app.d.ts.map +1 -0
  122. package/dist/server/app.js +292 -0
  123. package/dist/server/app.js.map +1 -0
  124. package/dist/server/middleware/api-key.d.ts +61 -0
  125. package/dist/server/middleware/api-key.d.ts.map +1 -0
  126. package/dist/server/middleware/api-key.js +95 -0
  127. package/dist/server/middleware/api-key.js.map +1 -0
  128. package/dist/server/middleware/rate-limit.d.ts +67 -0
  129. package/dist/server/middleware/rate-limit.d.ts.map +1 -0
  130. package/dist/server/middleware/rate-limit.js +134 -0
  131. package/dist/server/middleware/rate-limit.js.map +1 -0
  132. package/dist/server/middleware/timeout.d.ts +34 -0
  133. package/dist/server/middleware/timeout.d.ts.map +1 -0
  134. package/dist/server/middleware/timeout.js +64 -0
  135. package/dist/server/middleware/timeout.js.map +1 -0
  136. package/dist/server/types.d.ts +20 -0
  137. package/dist/server/types.d.ts.map +1 -0
  138. package/dist/server/types.js +2 -0
  139. package/dist/server/types.js.map +1 -0
  140. package/dist/tools/build.d.ts +14 -0
  141. package/dist/tools/build.d.ts.map +1 -0
  142. package/dist/tools/build.js +105 -0
  143. package/dist/tools/build.js.map +1 -0
  144. package/dist/tools/clean.d.ts +32 -0
  145. package/dist/tools/clean.d.ts.map +1 -0
  146. package/dist/tools/clean.js +65 -0
  147. package/dist/tools/clean.js.map +1 -0
  148. package/dist/tools/convert.d.ts +50 -0
  149. package/dist/tools/convert.d.ts.map +1 -0
  150. package/dist/tools/convert.js +289 -0
  151. package/dist/tools/convert.js.map +1 -0
  152. package/dist/tools/names.d.ts +138 -0
  153. package/dist/tools/names.d.ts.map +1 -0
  154. package/dist/tools/names.js +578 -0
  155. package/dist/tools/names.js.map +1 -0
  156. package/dist/tools/parse.d.ts +31 -0
  157. package/dist/tools/parse.d.ts.map +1 -0
  158. package/dist/tools/parse.js +273 -0
  159. package/dist/tools/parse.js.map +1 -0
  160. package/dist/tools/placeholder.d.ts +21 -0
  161. package/dist/tools/placeholder.d.ts.map +1 -0
  162. package/dist/tools/placeholder.js +135 -0
  163. package/dist/tools/placeholder.js.map +1 -0
  164. package/dist/tools/prompts.d.ts +42 -0
  165. package/dist/tools/prompts.d.ts.map +1 -0
  166. package/dist/tools/prompts.js +69 -0
  167. package/dist/tools/prompts.js.map +1 -0
  168. package/dist/tools/protocol.d.ts +58 -0
  169. package/dist/tools/protocol.d.ts.map +1 -0
  170. package/dist/tools/protocol.js +287 -0
  171. package/dist/tools/protocol.js.map +1 -0
  172. package/dist/tools/repair.d.ts +83 -0
  173. package/dist/tools/repair.d.ts.map +1 -0
  174. package/dist/tools/repair.js +510 -0
  175. package/dist/tools/repair.js.map +1 -0
  176. package/dist/tools/workspace.d.ts +40 -0
  177. package/dist/tools/workspace.d.ts.map +1 -0
  178. package/dist/tools/workspace.js +224 -0
  179. package/dist/tools/workspace.js.map +1 -0
  180. package/dist/types/message.d.ts +87 -0
  181. package/dist/types/message.d.ts.map +1 -0
  182. package/dist/types/message.js +85 -0
  183. package/dist/types/message.js.map +1 -0
  184. package/dist/types/openai.d.ts +100 -0
  185. package/dist/types/openai.d.ts.map +1 -0
  186. package/dist/types/openai.js +66 -0
  187. package/dist/types/openai.js.map +1 -0
  188. package/dist/utils/errors.d.ts +82 -0
  189. package/dist/utils/errors.d.ts.map +1 -0
  190. package/dist/utils/errors.js +115 -0
  191. package/dist/utils/errors.js.map +1 -0
  192. package/dist/utils/mutex.d.ts +31 -0
  193. package/dist/utils/mutex.d.ts.map +1 -0
  194. package/dist/utils/mutex.js +61 -0
  195. package/dist/utils/mutex.js.map +1 -0
  196. package/dist/utils/prompt.d.ts +150 -0
  197. package/dist/utils/prompt.d.ts.map +1 -0
  198. package/dist/utils/prompt.js +514 -0
  199. package/dist/utils/prompt.js.map +1 -0
  200. package/dist/utils/text.d.ts +30 -0
  201. package/dist/utils/text.d.ts.map +1 -0
  202. package/dist/utils/text.js +70 -0
  203. package/dist/utils/text.js.map +1 -0
  204. package/package.json +67 -4
  205. package/postinstall.mjs +34 -0
@@ -0,0 +1,144 @@
1
+ import type { Browser, BrowserContext, Page } from 'playwright';
2
+ import { type CapturedCookie } from './credentials.js';
3
+ /** 账号在共享状态里的键(约定 `{platform}:{accountId}`)。 */
4
+ export declare function accountKey(platform: string, accountId: string): string;
5
+ /**
6
+ * 标记「正在这个账号上干活」(provider 在拿到锁之后调用)。
7
+ *
8
+ * ⚠️ 这是**重入计数**,必须与 {@link exitAccount} 成对(放 `finally`),
9
+ * 否则计数泄漏会让账号被永久当成「正忙」。
10
+ */
11
+ export declare function enterAccount(platform: string, accountId: string): void;
12
+ /** 解除「正在这个账号上干活」的标记(与 {@link enterAccount} 配对)。 */
13
+ export declare function exitAccount(platform: string, accountId: string): void;
14
+ /** 该账号此刻是否有人正在用。 */
15
+ export declare function isAccountBusy(platform: string, accountId: string): boolean;
16
+ /**
17
+ * 把 busy 占用从旧账号转移到新账号。
18
+ *
19
+ * ⚠️ **换号时必须调用**。原因:`enterAccount()` 是按**进入时**的账号登记 busy 的,
20
+ * 而 `chatStream()` 的 `finally` 只会 `exitAccount(当前账号)` —— 主通道被限流换号后
21
+ * 账号已经变了,两个账号对不上:**旧账号的 busy 计数永远不会归零**
22
+ * (被永久当成「正忙」,辅助通道挑账号、主通道再换号都会一直避开它)。
23
+ * 这里一次性完成「旧的退出 + 新的进入」,使重入计数配平。
24
+ */
25
+ export declare function transferAccountBusy(platform: string, oldAccountId: string, newAccountId: string): void;
26
+ /** 登记某账号当前服务的角色(main / aux)。 */
27
+ export declare function setAccountRole(platform: string, accountId: string, role: string): void;
28
+ /** 查询某账号的服务角色(未登记返回 undefined)。 */
29
+ export declare function getAccountRole(platform: string, accountId: string): string | undefined;
30
+ /** 释放某账号的角色占用(传了 `role` 时只在匹配时释放)。 */
31
+ export declare function clearAccountRole(platform: string, accountId: string, role?: string): void;
32
+ /** 把账号标记为冷却中(例如被平台限流),返回冷却截止时间戳。 */
33
+ export declare function markAccountCooldown(platform: string, accountId: string, seconds: number, now?: () => number): number;
34
+ /** 账号剩余冷却秒数(0 表示不在冷却中)。 */
35
+ export declare function accountCooldownRemaining(platform: string, accountId: string, now?: () => number): number;
36
+ /** 该账号是否在冷却中。 */
37
+ export declare function isAccountCooling(platform: string, accountId: string, now?: () => number): boolean;
38
+ /** 仅供测试:清空全部账号状态。 */
39
+ export declare function resetAccountState(): void;
40
+ /**
41
+ * 关闭所有通道。
42
+ *
43
+ * ⚠️ 浏览器重建/关闭时**必须**调用,否则会留下孤儿 context
44
+ * (占内存,且再也无法从 Node 侧关掉)。
45
+ */
46
+ export declare function disposeAllChannels(): Promise<void>;
47
+ /**
48
+ * 返回(必要时创建)某个「通道」的页面:**独立 context** + 指定账号的 cookie。
49
+ *
50
+ * ⚠️ 与 {@link newWorkPage} 的区别:`newWorkPage()` 是在**同一个 context** 里再开一页
51
+ * (cookie 与主页面共享 → 同一个账号);本函数开的是**另一个 context**
52
+ * (cookie 独立 → 可以换账号,从而绕开「同一账号同时只能有一个对话」的平台限制)。
53
+ *
54
+ * 这是辅助任务能与主对话**真并行**的唯一方式。
55
+ */
56
+ export declare function getChannelPage(channelKey: string, platform: string, accountId: string): Promise<Page | null>;
57
+ /**
58
+ * 清理**孤儿** playwright Firefox / driver 进程(上一次服务运行留下的)。
59
+ *
60
+ * 只在启动全新实例前调用。判据是「父进程是 init(1)」—— 说明启动它的进程已经退出,
61
+ * 没有任何一方还持有它,属于纯垃圾。
62
+ *
63
+ * ⚠️ 只匹配 `ms-playwright/.../firefox`,不会碰用户自己登录用的系统 Firefox。
64
+ */
65
+ export declare function sweepOrphanBrowsers(): number;
66
+ /**
67
+ * 释放当前(多半已失效的)浏览器实例。
68
+ *
69
+ * ⚠️ **重建前必须先释放**:旧实现只把 `initialized` 置 false 就 `launch()` 新实例,
70
+ * 旧 Firefox 永远不会退出(Python 侧引用被覆盖后没有任何代码再去关它)。
71
+ */
72
+ export declare function disposeSharedBrowser(): Promise<void>;
73
+ export interface SharedBrowser {
74
+ browser: Browser;
75
+ context: BrowserContext;
76
+ page: Page;
77
+ }
78
+ /**
79
+ * 获取或创建共享的 Playwright Firefox 实例。
80
+ *
81
+ * 健康检查**只读本地状态**(不发 RPC),见文件头「三条铁律」。
82
+ */
83
+ export declare function getBrowser(): Promise<SharedBrowser>;
84
+ /**
85
+ * 在同一浏览器上下文里再开一个「工作页面」。
86
+ *
87
+ * 用途:需要在**独立对话**里再问一次模型的场景(两轮策略的 reparse)。
88
+ * 若共用主页面,reparse 会把主页面上的会话切走 —— 主会话上下文丢失、
89
+ * 会话复用(只补发增量)失效。
90
+ *
91
+ * ⚠️ 返回的是**新页面**,不会改动共享单例 `page`。
92
+ * Cookie / localStorage 属于 context,页面间共享,登录态自动沿用。
93
+ */
94
+ export declare function newWorkPage(): Promise<Page | null>;
95
+ /**
96
+ * 标记共享浏览器实例已失效,下次 `getBrowser()` 会重建它。
97
+ *
98
+ * 用于「操作时报了连接类错误」的场景:此时 `isConnected()` 可能还没更新,
99
+ * 不主动失效就会一直拿到坏实例、每个请求都失败,只能重启服务。
100
+ */
101
+ export declare function invalidateBrowser(reason?: string): void;
102
+ /** 关闭共享浏览器(服务优雅退出时调用)。 */
103
+ export declare function closeBrowser(): Promise<void>;
104
+ /**
105
+ * 把某账号的 Cookie 注入**主 context**。
106
+ *
107
+ * ⚠️ 注入后**必须重新导航**才生效(调用方负责)。
108
+ * 另外:旧实现把这段嵌在 `if (!page)` 里,导致 `checkLoginStatus()` 先赋好 `page` 之后
109
+ * 整块被跳过 —— 表现为「凭证明明在却永远是访客」。
110
+ * 所以本函数**每次都要独立调用**,不要加任何前置条件。
111
+ */
112
+ export declare function loadCookies(platformName: string, accountId?: string, targetContext?: BrowserContext): Promise<boolean>;
113
+ /** 获取当前共享页面。 */
114
+ export declare function getPage(): Page;
115
+ /** 当前共享页面(可能为 null,不抛异常)。 */
116
+ export declare function peekPage(): Page | null;
117
+ /** 导航到指定 URL(主导航一律等 `networkidle`,见 hard-constraints)。 */
118
+ export declare function navigateTo(url: string, timeout?: number): Promise<void>;
119
+ /**
120
+ * 在页面里注册通用的响应提取函数(兜底用)。
121
+ *
122
+ * 注册 `window.__ai_api_get_response()` / `__ai_api_clear_input()` / `__ai_api_set_input()`。
123
+ * ⚠️ ChatGLM 的正文**不用**这个(DOM innerText 已被 Markdown 渲染破坏),
124
+ * 只作为其它场景的兜底。
125
+ */
126
+ export declare function injectResponseJs(targetPage?: Page): Promise<void>;
127
+ /** 供测试/诊断:当前实例状态。 */
128
+ export declare function browserState(): {
129
+ initialized: boolean;
130
+ hasBrowser: boolean;
131
+ hasPage: boolean;
132
+ channels: string[];
133
+ };
134
+ /** 供测试:把一个假的 page/context/browser 塞进去(不启动真实浏览器)。 */
135
+ export declare function __setSharedForTest(state: {
136
+ browser?: Browser | null;
137
+ context?: BrowserContext | null;
138
+ page?: Page | null;
139
+ initialized?: boolean;
140
+ }): void;
141
+ /** 落盘一份 cookie(供 CLI 复用);目录不存在会自动创建。 */
142
+ export declare function writeAuthFile(platform: string, accountId: string, payload: Record<string, unknown>): string;
143
+ export type { CapturedCookie };
144
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/browser/manager.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAMhE,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,kBAAkB,CAAC;AA8B1B,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAGtE;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAKrE;AAED,oBAAoB;AACpB,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,IAAI,CAON;AAED,gCAAgC;AAChC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEtF;AAED,mCAAmC;AACnC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEtF;AAED,sCAAsC;AACtC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAGzF;AAED,oCAAoC;AACpC,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAM,MAAiB,GAC3B,MAAM,CAIR;AAED,2BAA2B;AAC3B,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAM,MAAiB,GAC3B,MAAM,CAGR;AAED,iBAAiB;AACjB,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAM,MAAiB,GAC3B,OAAO,CAET;AAED,qBAAqB;AACrB,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC;AA2BD;;;;;GAKG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMxD;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAoDtB;AAYD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAuC5C;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B1D;AAMD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED;;;;GAIG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,CAiEzD;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAYxD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,SAAK,GAAG,IAAI,CAKnD;AAED,0BAA0B;AAC1B,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBlD;AAMD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,SAAS,SAAY,EACrB,aAAa,CAAC,EAAE,cAAc,GAC7B,OAAO,CAAC,OAAO,CAAC,CAqBlB;AAED,gBAAgB;AAChB,wBAAgB,OAAO,IAAI,IAAI,CAG9B;AAED,6BAA6B;AAC7B,wBAAgB,QAAQ,IAAI,IAAI,GAAG,IAAI,CAEtC;AAED,0DAA0D;AAC1D,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,SAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAS5E;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDvE;AAED,qBAAqB;AACrB,wBAAgB,YAAY,IAAI;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAOA;AAED,oDAAoD;AACpD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,IAAI,CAKP;AAED,wCAAwC;AACxC,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAKR;AAED,YAAY,EAAE,cAAc,EAAE,CAAC"}