@softtechai/quickmcp 1.0.16 → 1.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 (417) hide show
  1. package/dist/auth/auth-utils.d.ts +130 -0
  2. package/dist/auth/auth-utils.d.ts.map +1 -0
  3. package/dist/auth/auth-utils.js +600 -0
  4. package/dist/auth/auth-utils.js.map +1 -0
  5. package/dist/auth/jwks-provider.d.ts +9 -0
  6. package/dist/auth/jwks-provider.d.ts.map +1 -0
  7. package/dist/auth/jwks-provider.js +56 -0
  8. package/dist/auth/jwks-provider.js.map +1 -0
  9. package/dist/auth/token-utils.d.ts +40 -0
  10. package/dist/auth/token-utils.d.ts.map +1 -0
  11. package/dist/auth/token-utils.js +162 -0
  12. package/dist/auth/token-utils.js.map +1 -0
  13. package/dist/client/MCPClient.js +5 -4
  14. package/dist/client/MCPClient.js.map +1 -1
  15. package/dist/config/auth-config.d.ts +16 -0
  16. package/dist/config/auth-config.d.ts.map +1 -0
  17. package/dist/config/auth-config.js +107 -0
  18. package/dist/config/auth-config.js.map +1 -0
  19. package/dist/constant/constant.d.ts +20 -0
  20. package/dist/constant/constant.d.ts.map +1 -0
  21. package/dist/constant/constant.js +24 -0
  22. package/dist/constant/constant.js.map +1 -0
  23. package/dist/database/async-datastore.d.ts +6 -0
  24. package/dist/database/async-datastore.d.ts.map +1 -0
  25. package/dist/database/async-datastore.js +15 -0
  26. package/dist/database/async-datastore.js.map +1 -0
  27. package/dist/database/database-utils.d.ts +6 -0
  28. package/dist/database/database-utils.d.ts.map +1 -0
  29. package/dist/database/database-utils.js +29 -0
  30. package/dist/database/database-utils.js.map +1 -0
  31. package/dist/database/datastore.d.ts +164 -0
  32. package/dist/database/datastore.d.ts.map +1 -0
  33. package/dist/{parsers/types/index.js → database/datastore.js} +1 -0
  34. package/dist/database/datastore.js.map +1 -0
  35. package/dist/database/factory.d.ts +4 -0
  36. package/dist/database/factory.d.ts.map +1 -0
  37. package/dist/database/factory.js +32 -0
  38. package/dist/database/factory.js.map +1 -0
  39. package/dist/database/jdbc-manager.d.ts +49 -0
  40. package/dist/database/jdbc-manager.d.ts.map +1 -0
  41. package/dist/database/jdbc-manager.js +50 -0
  42. package/dist/database/jdbc-manager.js.map +1 -0
  43. package/dist/database/sqlite-manager.d.ts +46 -44
  44. package/dist/database/sqlite-manager.d.ts.map +1 -1
  45. package/dist/database/sqlite-manager.js +492 -42
  46. package/dist/database/sqlite-manager.js.map +1 -1
  47. package/dist/database/supabase-manager.d.ts +58 -0
  48. package/dist/database/supabase-manager.d.ts.map +1 -0
  49. package/dist/database/supabase-manager.js +432 -0
  50. package/dist/database/supabase-manager.js.map +1 -0
  51. package/dist/generators/MCPServerGenerator.d.ts +103 -20
  52. package/dist/generators/MCPServerGenerator.d.ts.map +1 -1
  53. package/dist/generators/MCPServerGenerator.js +6930 -128
  54. package/dist/generators/MCPServerGenerator.js.map +1 -1
  55. package/dist/index.d.ts +0 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +8 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/integrated-mcp-server-new.d.ts +14 -2
  60. package/dist/integrated-mcp-server-new.d.ts.map +1 -1
  61. package/dist/integrated-mcp-server-new.js +270 -180
  62. package/dist/integrated-mcp-server-new.js.map +1 -1
  63. package/dist/mcp-core/McpCoreService.d.ts +63 -0
  64. package/dist/mcp-core/McpCoreService.d.ts.map +1 -0
  65. package/dist/mcp-core/McpCoreService.js +492 -0
  66. package/dist/mcp-core/McpCoreService.js.map +1 -0
  67. package/dist/parsers/CsvParser.d.ts +1 -1
  68. package/dist/parsers/CsvParser.d.ts.map +1 -1
  69. package/dist/parsers/CsvParser.js +3 -2
  70. package/dist/parsers/CsvParser.js.map +1 -1
  71. package/dist/parsers/DatabaseParser.d.ts.map +1 -1
  72. package/dist/parsers/DatabaseParser.js +9 -8
  73. package/dist/parsers/DatabaseParser.js.map +1 -1
  74. package/dist/parsers/ExcelParser.d.ts +15 -0
  75. package/dist/parsers/ExcelParser.d.ts.map +1 -1
  76. package/dist/parsers/ExcelParser.js +287 -21
  77. package/dist/parsers/ExcelParser.js.map +1 -1
  78. package/dist/parsers/WebPageParser.d.ts +5 -0
  79. package/dist/parsers/WebPageParser.d.ts.map +1 -0
  80. package/dist/parsers/WebPageParser.js +35 -0
  81. package/dist/parsers/WebPageParser.js.map +1 -0
  82. package/dist/parsers/index.d.ts +3 -2
  83. package/dist/parsers/index.d.ts.map +1 -1
  84. package/dist/parsers/index.js +19 -16
  85. package/dist/parsers/index.js.map +1 -1
  86. package/dist/server/api/askApi.d.ts +41 -0
  87. package/dist/server/api/askApi.d.ts.map +1 -0
  88. package/dist/server/api/askApi.js +479 -0
  89. package/dist/server/api/askApi.js.map +1 -0
  90. package/dist/server/api/authApi.d.ts +101 -0
  91. package/dist/server/api/authApi.d.ts.map +1 -0
  92. package/dist/server/api/authApi.js +1472 -0
  93. package/dist/server/api/authApi.js.map +1 -0
  94. package/dist/server/api/authProperty.d.ts +18 -0
  95. package/dist/server/api/authProperty.d.ts.map +1 -0
  96. package/dist/server/api/authProperty.js +41 -0
  97. package/dist/server/api/authProperty.js.map +1 -0
  98. package/dist/server/api/configApi.d.ts +15 -0
  99. package/dist/server/api/configApi.d.ts.map +1 -0
  100. package/dist/server/api/configApi.js +42 -0
  101. package/dist/server/api/configApi.js.map +1 -0
  102. package/dist/server/api/databaseApi.d.ts +14 -0
  103. package/dist/server/api/databaseApi.d.ts.map +1 -0
  104. package/dist/server/api/databaseApi.js +111 -0
  105. package/dist/server/api/databaseApi.js.map +1 -0
  106. package/dist/server/api/directoryApi.d.ts +9 -0
  107. package/dist/server/api/directoryApi.d.ts.map +1 -0
  108. package/dist/server/api/directoryApi.js +103 -0
  109. package/dist/server/api/directoryApi.js.map +1 -0
  110. package/dist/server/api/generateApi.d.ts +24 -0
  111. package/dist/server/api/generateApi.d.ts.map +1 -0
  112. package/dist/server/api/generateApi.js +457 -0
  113. package/dist/server/api/generateApi.js.map +1 -0
  114. package/dist/server/api/healthApi.d.ts +9 -0
  115. package/dist/server/api/healthApi.d.ts.map +1 -0
  116. package/dist/server/api/healthApi.js +15 -0
  117. package/dist/server/api/healthApi.js.map +1 -0
  118. package/dist/server/api/indexApi.d.ts +21 -0
  119. package/dist/server/api/indexApi.d.ts.map +1 -0
  120. package/dist/server/api/indexApi.js +61 -0
  121. package/dist/server/api/indexApi.js.map +1 -0
  122. package/dist/server/api/logsApi.d.ts +12 -0
  123. package/dist/server/api/logsApi.d.ts.map +1 -0
  124. package/dist/server/api/logsApi.js +37 -0
  125. package/dist/server/api/logsApi.js.map +1 -0
  126. package/dist/server/api/mcpApi.d.ts +20 -0
  127. package/dist/server/api/mcpApi.d.ts.map +1 -0
  128. package/dist/server/api/mcpApi.js +120 -0
  129. package/dist/server/api/mcpApi.js.map +1 -0
  130. package/dist/server/api/nameApi.d.ts +21 -0
  131. package/dist/server/api/nameApi.d.ts.map +1 -0
  132. package/dist/server/api/nameApi.js +42 -0
  133. package/dist/server/api/nameApi.js.map +1 -0
  134. package/dist/server/api/parseApi.d.ts +9 -0
  135. package/dist/server/api/parseApi.d.ts.map +1 -0
  136. package/dist/server/api/parseApi.js +3245 -0
  137. package/dist/server/api/parseApi.js.map +1 -0
  138. package/dist/server/api/serverApi.d.ts +44 -0
  139. package/dist/server/api/serverApi.d.ts.map +1 -0
  140. package/dist/server/api/serverApi.js +417 -0
  141. package/dist/server/api/serverApi.js.map +1 -0
  142. package/dist/{dynamic-mcp-executor.d.ts → server/dynamic-mcp-executor.d.ts} +4 -5
  143. package/dist/server/dynamic-mcp-executor.d.ts.map +1 -0
  144. package/dist/server/dynamic-mcp-executor.js +62 -0
  145. package/dist/server/dynamic-mcp-executor.js.map +1 -0
  146. package/dist/server/port-utils.d.ts +14 -0
  147. package/dist/server/port-utils.d.ts.map +1 -0
  148. package/dist/server/port-utils.js +31 -0
  149. package/dist/server/port-utils.js.map +1 -0
  150. package/dist/server/server-utils.d.ts +13 -0
  151. package/dist/server/server-utils.d.ts.map +1 -0
  152. package/dist/server/server-utils.js +72 -0
  153. package/dist/server/server-utils.js.map +1 -0
  154. package/dist/{web → server}/server.d.ts +1 -0
  155. package/dist/server/server.d.ts.map +1 -0
  156. package/dist/server/server.js +535 -0
  157. package/dist/server/server.js.map +1 -0
  158. package/dist/server/tool-executer.d.ts +101 -0
  159. package/dist/server/tool-executer.d.ts.map +1 -0
  160. package/dist/server/tool-executer.js +6198 -0
  161. package/dist/server/tool-executer.js.map +1 -0
  162. package/dist/types/index.d.ts +1197 -4
  163. package/dist/types/index.d.ts.map +1 -1
  164. package/dist/types/index.js +1028 -0
  165. package/dist/types/index.js.map +1 -1
  166. package/dist/upload/upload-utils.d.ts +4 -0
  167. package/dist/upload/upload-utils.d.ts.map +1 -0
  168. package/dist/upload/upload-utils.js +29 -0
  169. package/dist/upload/upload-utils.js.map +1 -0
  170. package/dist/utils/deployment-util.d.ts +14 -0
  171. package/dist/utils/deployment-util.d.ts.map +1 -0
  172. package/dist/utils/deployment-util.js +46 -0
  173. package/dist/utils/deployment-util.js.map +1 -0
  174. package/dist/utils/logger.d.ts +15 -0
  175. package/dist/utils/logger.d.ts.map +1 -0
  176. package/dist/utils/logger.js +56 -0
  177. package/dist/utils/logger.js.map +1 -0
  178. package/package.json +18 -6
  179. package/quickmcp-direct-stdio.js +176 -187
  180. package/src/web/public/app.js +15370 -1471
  181. package/src/web/public/authorization.html +868 -0
  182. package/src/web/public/database-tables.html +283 -547
  183. package/src/web/public/how-to-use.html +446 -462
  184. package/src/web/public/how-to-use.js +4 -4
  185. package/src/web/public/images/app/activepieces.png +0 -0
  186. package/src/web/public/images/app/airtable.png +0 -0
  187. package/src/web/public/images/app/androidstudio.png +0 -0
  188. package/src/web/public/images/app/antigravity.png +0 -0
  189. package/src/web/public/images/app/applenotes.png +0 -0
  190. package/src/web/public/images/app/applereminders.png +0 -0
  191. package/src/web/public/images/app/asana.png +0 -0
  192. package/src/web/public/images/app/azureai.png +0 -0
  193. package/src/web/public/images/app/bash.png +0 -0
  194. package/src/web/public/images/app/bearnotes.png +0 -0
  195. package/src/web/public/images/app/bitbucket.png +0 -0
  196. package/src/web/public/images/app/claude.png +0 -0
  197. package/src/web/public/images/app/cli.png +0 -0
  198. package/src/web/public/images/app/clickup.png +0 -0
  199. package/src/web/public/images/app/cohere.png +0 -0
  200. package/src/web/public/images/app/confluence.png +0 -0
  201. package/src/web/public/images/app/confluence2.png +0 -0
  202. package/src/web/public/images/app/curl.png +0 -0
  203. package/src/web/public/images/app/curl_mini.png +0 -0
  204. package/src/web/public/images/app/cursor.png +0 -0
  205. package/src/web/public/images/app/db2.png +0 -0
  206. package/src/web/public/images/app/deepseek.png +0 -0
  207. package/src/web/public/images/app/discord.png +0 -0
  208. package/src/web/public/images/app/docker.png +0 -0
  209. package/src/web/public/images/app/dockerhub.png +0 -0
  210. package/src/web/public/images/app/dropbox.png +0 -0
  211. package/src/web/public/images/app/elasticsearch.png +0 -0
  212. package/src/web/public/images/app/facebook.png +0 -0
  213. package/src/web/public/images/app/falai.png +0 -0
  214. package/src/web/public/images/app/fireworks.png +0 -0
  215. package/src/web/public/images/app/gdrive.png +0 -0
  216. package/src/web/public/images/app/gemini.png +0 -0
  217. package/src/web/public/images/app/github.png +0 -0
  218. package/src/web/public/images/app/githubcopilot.png +0 -0
  219. package/src/web/public/images/app/gitlab.png +0 -0
  220. package/src/web/public/images/app/gmail.png +0 -0
  221. package/src/web/public/images/app/googlecalender.png +0 -0
  222. package/src/web/public/images/app/googledocs.png +0 -0
  223. package/src/web/public/images/app/googlesheets.png +0 -0
  224. package/src/web/public/images/app/gradle.png +0 -0
  225. package/src/web/public/images/app/grafana.png +0 -0
  226. package/src/web/public/images/app/graphql.png +0 -0
  227. package/src/web/public/images/app/grok.png +0 -0
  228. package/src/web/public/images/app/groq.png +0 -0
  229. package/src/web/public/images/app/hazelcast.png +0 -0
  230. package/src/web/public/images/app/huggingface.png +0 -0
  231. package/src/web/public/images/app/imessage.png +0 -0
  232. package/src/web/public/images/app/instagram.png +0 -0
  233. package/src/web/public/images/app/intellij.png +0 -0
  234. package/src/web/public/images/app/jenkins.png +0 -0
  235. package/src/web/public/images/app/jira.png +0 -0
  236. package/src/web/public/images/app/kafka.png +0 -0
  237. package/src/web/public/images/app/kubernetes.png +0 -0
  238. package/src/web/public/images/app/linear.png +0 -0
  239. package/src/web/public/images/app/linkedin.png +0 -0
  240. package/src/web/public/images/app/llama.png +0 -0
  241. package/src/web/public/images/app/make.png +0 -0
  242. package/src/web/public/images/app/maven.png +0 -0
  243. package/src/web/public/images/app/mcp.png +0 -0
  244. package/src/web/public/images/app/microsoftteams.png +0 -0
  245. package/src/web/public/images/app/mistral.png +0 -0
  246. package/src/web/public/images/app/monday.png +0 -0
  247. package/src/web/public/images/app/mongodb.png +0 -0
  248. package/src/web/public/images/app/mssql.png +0 -0
  249. package/src/web/public/images/app/mysql.png +0 -0
  250. package/src/web/public/images/app/n8n.png +0 -0
  251. package/src/web/public/images/app/notion.png +0 -0
  252. package/src/web/public/images/app/npm.png +0 -0
  253. package/src/web/public/images/app/nuget.png +0 -0
  254. package/src/web/public/images/app/obsidian.png +0 -0
  255. package/src/web/public/images/app/openai.png +0 -0
  256. package/src/web/public/images/app/openrouter.png +0 -0
  257. package/src/web/public/images/app/opensearch.png +0 -0
  258. package/src/web/public/images/app/openshift.png +0 -0
  259. package/src/web/public/images/app/oracle.png +0 -0
  260. package/src/web/public/images/app/perplexity.png +0 -0
  261. package/src/web/public/images/app/pipedream.png +0 -0
  262. package/src/web/public/images/app/postgresql.png +0 -0
  263. package/src/web/public/images/app/powershell.png +0 -0
  264. package/src/web/public/images/app/prometheus.png +0 -0
  265. package/src/web/public/images/app/reddit.png +0 -0
  266. package/src/web/public/images/app/redis.png +0 -0
  267. package/src/web/public/images/app/rss.png +0 -0
  268. package/src/web/public/images/app/signal.png +0 -0
  269. package/src/web/public/images/app/slack.png +0 -0
  270. package/src/web/public/images/app/soap.png +0 -0
  271. package/src/web/public/images/app/sqlite.png +0 -0
  272. package/src/web/public/images/app/supabase.png +0 -0
  273. package/src/web/public/images/app/telegram.png +0 -0
  274. package/src/web/public/images/app/things3.png +0 -0
  275. package/src/web/public/images/app/threads.png +0 -0
  276. package/src/web/public/images/app/tiktok.png +0 -0
  277. package/src/web/public/images/app/together.png +0 -0
  278. package/src/web/public/images/app/trello.png +0 -0
  279. package/src/web/public/images/app/vscode.png +0 -0
  280. package/src/web/public/images/app/webhook.png +0 -0
  281. package/src/web/public/images/app/webpage.png +0 -0
  282. package/src/web/public/images/app/whatsappbusiness.png +0 -0
  283. package/src/web/public/images/app/windsorf.png +0 -0
  284. package/src/web/public/images/app/x.png +0 -0
  285. package/src/web/public/images/app/youtube.png +0 -0
  286. package/src/web/public/images/app/zapier.png +0 -0
  287. package/src/web/public/images/app/zededitor.png +0 -0
  288. package/src/web/public/images/app/zoom.png +0 -0
  289. package/src/web/public/images/avatar-anon.svg +4 -0
  290. package/src/web/public/images/favicon.png +0 -0
  291. package/src/web/public/images/install/chatgpt-web/step0.png +0 -0
  292. package/src/web/public/images/install/chatgpt-web/step1.png +0 -0
  293. package/src/web/public/images/install/chatgpt-web/step2.png +0 -0
  294. package/src/web/public/images/install/chatgpt-web/step3.png +0 -0
  295. package/src/web/public/images/install/chatgpt-web/step4.png +0 -0
  296. package/src/web/public/images/install/chatgpt-web/step5.png +0 -0
  297. package/src/web/public/images/readme/1-generate-servers.png +0 -0
  298. package/src/web/public/images/readme/2-database-connection.png +0 -0
  299. package/src/web/public/images/readme/2-file-upload.png +0 -0
  300. package/src/web/public/images/readme/3-data-preview.png +0 -0
  301. package/src/web/public/images/readme/4-data-preview2.png +0 -0
  302. package/src/web/public/images/readme/5-server-configuration.png +0 -0
  303. package/src/web/public/images/readme/6-server-generated-modal.png +0 -0
  304. package/src/web/public/images/readme/7-generated-servers.png +0 -0
  305. package/src/web/public/images/readme/8-generated-servers-view-details.png +0 -0
  306. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.23.51.png +0 -0
  307. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.24.59.png +0 -0
  308. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.05.png +0 -0
  309. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.14.png +0 -0
  310. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.21.png +0 -0
  311. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.36.png +0 -0
  312. package/src/web/public/index.html +4685 -488
  313. package/src/web/public/landing.html +1638 -0
  314. package/src/web/public/logger.js +31 -0
  315. package/src/web/public/login.html +372 -0
  316. package/src/web/public/manage-servers.html +121 -188
  317. package/src/web/public/pricing.html +537 -0
  318. package/src/web/public/quick-ask.html +133 -0
  319. package/src/web/public/quickmcp-styles.css +708 -0
  320. package/src/web/public/roles.html +177 -0
  321. package/src/web/public/shared.js +736 -3
  322. package/src/web/public/sidebar.js +414 -0
  323. package/src/web/public/test-servers.html +605 -221
  324. package/src/web/public/users.html +191 -0
  325. package/dist/client/MCPClientUnified.d.ts +0 -31
  326. package/dist/client/MCPClientUnified.d.ts.map +0 -1
  327. package/dist/client/MCPClientUnified.js +0 -275
  328. package/dist/client/MCPClientUnified.js.map +0 -1
  329. package/dist/client/MCPTestRunnerUnified.d.ts +0 -48
  330. package/dist/client/MCPTestRunnerUnified.d.ts.map +0 -1
  331. package/dist/client/MCPTestRunnerUnified.js +0 -183
  332. package/dist/client/MCPTestRunnerUnified.js.map +0 -1
  333. package/dist/database/json-manager.d.ts +0 -55
  334. package/dist/database/json-manager.d.ts.map +0 -1
  335. package/dist/database/json-manager.js +0 -128
  336. package/dist/database/json-manager.js.map +0 -1
  337. package/dist/dynamic-mcp-executor.d.ts.map +0 -1
  338. package/dist/dynamic-mcp-executor.js +0 -274
  339. package/dist/dynamic-mcp-executor.js.map +0 -1
  340. package/dist/generators/MCPServerGenerator-new.d.ts +0 -37
  341. package/dist/generators/MCPServerGenerator-new.d.ts.map +0 -1
  342. package/dist/generators/MCPServerGenerator-new.js +0 -287
  343. package/dist/generators/MCPServerGenerator-new.js.map +0 -1
  344. package/dist/generators/database/sqlite-manager.d.ts +0 -52
  345. package/dist/generators/database/sqlite-manager.js +0 -143
  346. package/dist/generators/generators/MCPServerGenerator.d.ts +0 -37
  347. package/dist/generators/generators/MCPServerGenerator.js +0 -396
  348. package/dist/integrated-mcp-server.d.ts +0 -25
  349. package/dist/integrated-mcp-server.d.ts.map +0 -1
  350. package/dist/integrated-mcp-server.js +0 -541
  351. package/dist/integrated-mcp-server.js.map +0 -1
  352. package/dist/mcp-inspector-server.d.ts +0 -3
  353. package/dist/mcp-inspector-server.d.ts.map +0 -1
  354. package/dist/mcp-inspector-server.js +0 -119
  355. package/dist/mcp-inspector-server.js.map +0 -1
  356. package/dist/mcp-sdk-server.d.ts +0 -3
  357. package/dist/mcp-sdk-server.d.ts.map +0 -1
  358. package/dist/mcp-sdk-server.js +0 -90
  359. package/dist/mcp-sdk-server.js.map +0 -1
  360. package/dist/mcp-server.d.ts +0 -3
  361. package/dist/mcp-server.d.ts.map +0 -1
  362. package/dist/mcp-server.js +0 -300
  363. package/dist/mcp-server.js.map +0 -1
  364. package/dist/parsers/parsers/ExcelParser.js +0 -118
  365. package/dist/quickmcp-unified-bridge.d.ts +0 -13
  366. package/dist/quickmcp-unified-bridge.d.ts.map +0 -1
  367. package/dist/quickmcp-unified-bridge.js +0 -176
  368. package/dist/quickmcp-unified-bridge.js.map +0 -1
  369. package/dist/sqlite-manager.js +0 -145
  370. package/dist/test-app.d.ts +0 -2
  371. package/dist/test-app.d.ts.map +0 -1
  372. package/dist/test-app.js +0 -119
  373. package/dist/test-app.js.map +0 -1
  374. package/dist/transport/base-transport.d.ts +0 -21
  375. package/dist/transport/base-transport.d.ts.map +0 -1
  376. package/dist/transport/base-transport.js +0 -16
  377. package/dist/transport/base-transport.js.map +0 -1
  378. package/dist/transport/index.d.ts +0 -10
  379. package/dist/transport/index.d.ts.map +0 -1
  380. package/dist/transport/index.js +0 -12
  381. package/dist/transport/index.js.map +0 -1
  382. package/dist/transport/sse-transport.d.ts +0 -13
  383. package/dist/transport/sse-transport.d.ts.map +0 -1
  384. package/dist/transport/sse-transport.js +0 -106
  385. package/dist/transport/sse-transport.js.map +0 -1
  386. package/dist/transport/stdio-transport.d.ts +0 -8
  387. package/dist/transport/stdio-transport.d.ts.map +0 -1
  388. package/dist/transport/stdio-transport.js +0 -53
  389. package/dist/transport/stdio-transport.js.map +0 -1
  390. package/dist/transport/streamable-http-transport.d.ts +0 -15
  391. package/dist/transport/streamable-http-transport.d.ts.map +0 -1
  392. package/dist/transport/streamable-http-transport.js +0 -151
  393. package/dist/transport/streamable-http-transport.js.map +0 -1
  394. package/dist/web/client/MCPClient.js +0 -348
  395. package/dist/web/client/MCPTestRunner.js +0 -317
  396. package/dist/web/database/json-manager.js +0 -124
  397. package/dist/web/database/sqlite-manager.js +0 -146
  398. package/dist/web/dynamic-mcp-executor.js +0 -443
  399. package/dist/web/generators/MCPServerGenerator-new.js +0 -284
  400. package/dist/web/generators/MCPServerGenerator.js +0 -566
  401. package/dist/web/integrated-mcp-server-new.js +0 -394
  402. package/dist/web/parsers/CsvParser.js +0 -144
  403. package/dist/web/parsers/DatabaseParser.js +0 -637
  404. package/dist/web/parsers/ExcelParser.js +0 -180
  405. package/dist/web/parsers/index.js +0 -152
  406. package/dist/web/server.d.ts.map +0 -1
  407. package/dist/web/server.js +0 -790
  408. package/dist/web/server.js.map +0 -1
  409. package/dist/web/types/index.js +0 -2
  410. package/dist/web/web/server.js +0 -860
  411. package/src/web/public/modern-styles.css +0 -946
  412. package/src/web/public/shared-styles.css +0 -2091
  413. /package/src/web/public/images/{1-claude-quickmcp-stdio.png → readme/1-claude-quickmcp-stdio.png} +0 -0
  414. /package/src/web/public/images/{2-claude-tools.png → readme/2-claude-tools.png} +0 -0
  415. /package/src/web/public/images/{3-claude-developer-settings.png → readme/3-claude-developer-settings.png} +0 -0
  416. /package/src/web/public/images/{4-claude-config.png → readme/4-claude-config.png} +0 -0
  417. /package/src/web/public/images/{5-claude-config-edit.png → readme/5-claude-config-edit.png} +0 -0
@@ -0,0 +1,417 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ServerApi = void 0;
7
+ const promises_1 = __importDefault(require("fs/promises"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const dynamic_mcp_executor_1 = require("../dynamic-mcp-executor");
10
+ const logger_1 = require("../../utils/logger");
11
+ class ServerApi {
12
+ constructor(deps) {
13
+ this.deps = deps;
14
+ this.listServers = async (req, res) => {
15
+ const ownerUsername = this.deps.getEffectiveUsername(req);
16
+ const gen = this.deps.ensureGenerator();
17
+ const allServers = await gen.getAllServersByOwner(ownerUsername);
18
+ const servers = await Promise.all(allServers.map(async (server) => {
19
+ // Prefer persisted source_config from SQLite to avoid stale/partial objects
20
+ const persisted = await this.deps.ensureDataStore().getServer(server.id);
21
+ const rawType = persisted?.sourceConfig?.type || server?.sourceConfig?.type || 'unknown';
22
+ const type = typeof rawType === 'string' ? rawType : 'unknown';
23
+ const version = persisted?.version || server?.version || '1.0.0';
24
+ const tools = await gen.getToolsForServer(server.id);
25
+ const resources = await gen.getResourcesForServer(server.id);
26
+ const finalType = type;
27
+ return {
28
+ id: server.id,
29
+ name: server.name,
30
+ ownerUsername: server.ownerUsername,
31
+ type: finalType,
32
+ description: `${server.name} - Virtual MCP Server (${finalType})`,
33
+ version,
34
+ toolsCount: tools.length,
35
+ resourcesCount: resources.length,
36
+ promptsCount: 0
37
+ };
38
+ }));
39
+ res.json({ success: true, data: servers });
40
+ };
41
+ this.getServerDetails = async (req, res) => {
42
+ const ownerUsername = this.deps.getEffectiveUsername(req);
43
+ const server = await this.deps.ensureGenerator().getServerForOwner(req.params.id, ownerUsername);
44
+ if (!server) {
45
+ return res.status(404).json({
46
+ success: false,
47
+ error: 'Server not found'
48
+ });
49
+ }
50
+ const gen = this.deps.ensureGenerator();
51
+ const tools = await gen.getToolsForServer(server.id);
52
+ const resources = await gen.getResourcesForServer(server.id);
53
+ const rawType = server.sourceConfig?.type || 'unknown';
54
+ const finalType = typeof rawType === 'string' ? rawType : 'unknown';
55
+ const persisted = await this.deps.ensureDataStore().getServer(server.id);
56
+ const version = server.version || persisted?.version || '1.0.0';
57
+ res.json({
58
+ success: true,
59
+ data: {
60
+ config: {
61
+ name: server.name,
62
+ description: `${server.name} - Virtual MCP Server (${finalType})`,
63
+ version,
64
+ tools: tools.map((tool) => ({
65
+ name: tool.name,
66
+ description: tool.description,
67
+ inputSchema: tool.inputSchema,
68
+ operation: tool.operation
69
+ })),
70
+ resources: resources.map((resource) => ({
71
+ name: resource.name,
72
+ description: resource.description,
73
+ uri_template: resource.uri_template
74
+ })),
75
+ prompts: []
76
+ },
77
+ parsedData: []
78
+ }
79
+ });
80
+ };
81
+ this.getServerData = async (req, res) => {
82
+ try {
83
+ const serverId = req.params.id;
84
+ const ownerUsername = this.deps.getEffectiveUsername(req);
85
+ const limit = parseInt(req.query.limit, 10) || 10;
86
+ const server = await this.deps.ensureGenerator().getServerForOwner(serverId, ownerUsername);
87
+ if (!server) {
88
+ return res.status(404).json({
89
+ success: false,
90
+ error: 'Server not found'
91
+ });
92
+ }
93
+ const executor = new dynamic_mcp_executor_1.DynamicMCPExecutor();
94
+ const tools = await this.deps.ensureGenerator().getToolsForServer(serverId);
95
+ const selectTool = tools.find((tool) => tool.operation === 'SELECT');
96
+ if (!selectTool) {
97
+ return res.json({
98
+ success: true,
99
+ data: []
100
+ });
101
+ }
102
+ const result = await executor.executeTool(`${serverId}__${selectTool.name}`, { limit });
103
+ if (result.success && result.data) {
104
+ const sampleData = Array.isArray(result.data) ? result.data : [];
105
+ res.json({
106
+ success: true,
107
+ data: sampleData.slice(0, limit)
108
+ });
109
+ }
110
+ else {
111
+ res.json({
112
+ success: true,
113
+ data: []
114
+ });
115
+ }
116
+ }
117
+ catch (error) {
118
+ logger_1.logger.error('Error getting server data:', error);
119
+ res.status(400).json({
120
+ success: false,
121
+ error: error instanceof Error ? error.message : 'Unknown error'
122
+ });
123
+ }
124
+ };
125
+ this.testServer = async (req, res) => {
126
+ try {
127
+ const ownerUsername = this.deps.getEffectiveUsername(req);
128
+ const server = await this.deps.ensureDataStore().getServerForOwner(req.params.id, ownerUsername);
129
+ if (!server) {
130
+ return res.status(404).json({
131
+ success: false,
132
+ error: 'Server not found'
133
+ });
134
+ }
135
+ const tools = await this.deps.ensureDataStore().getToolsForServer(req.params.id);
136
+ const { runAll, testType, toolName, parameters } = req.body;
137
+ if (testType === 'tools/call' && toolName) {
138
+ try {
139
+ const executor = new dynamic_mcp_executor_1.DynamicMCPExecutor();
140
+ const tool = tools.find((t) => t.name === toolName);
141
+ if (!tool) {
142
+ return res.status(404).json({
143
+ success: false,
144
+ error: `Tool "${toolName}" not found`
145
+ });
146
+ }
147
+ const result = await executor.executeTool(`${req.params.id}__${toolName}`, parameters || {});
148
+ res.json({
149
+ success: true,
150
+ data: {
151
+ tool: toolName,
152
+ status: 'success',
153
+ description: tool.description,
154
+ parameters: parameters || {},
155
+ result: result.success ? 'Tool executed successfully' : result,
156
+ rowCount: result.rowCount || 0
157
+ }
158
+ });
159
+ return;
160
+ }
161
+ catch (error) {
162
+ res.json({
163
+ success: true,
164
+ data: {
165
+ tool: toolName,
166
+ status: 'error',
167
+ description: tools.find((t) => t.name === toolName)?.description || '',
168
+ parameters: parameters || {},
169
+ error: error instanceof Error ? error.message : 'Unknown error'
170
+ }
171
+ });
172
+ return;
173
+ }
174
+ }
175
+ const testResults = [];
176
+ const toolsToTest = runAll ? tools : tools.slice(0, 3);
177
+ for (const tool of toolsToTest) {
178
+ try {
179
+ const executor = new dynamic_mcp_executor_1.DynamicMCPExecutor();
180
+ const testParams = {};
181
+ if (tool.inputSchema && typeof tool.inputSchema === 'object' && tool.inputSchema.properties) {
182
+ for (const [paramName] of Object.entries(tool.inputSchema.properties)) {
183
+ if (paramName === 'limit')
184
+ testParams[paramName] = 5;
185
+ else if (paramName === 'offset')
186
+ testParams[paramName] = 0;
187
+ }
188
+ }
189
+ const result = await executor.executeTool(`${req.params.id}__${tool.name}`, testParams);
190
+ testResults.push({
191
+ tool: tool.name,
192
+ status: 'success',
193
+ description: tool.description,
194
+ parameters: testParams,
195
+ result: result.success ? 'Tool executed successfully' : result,
196
+ rowCount: result.rowCount || 0
197
+ });
198
+ }
199
+ catch (error) {
200
+ testResults.push({
201
+ tool: tool.name,
202
+ status: 'error',
203
+ description: tool.description,
204
+ error: error instanceof Error ? error.message : 'Unknown error'
205
+ });
206
+ }
207
+ }
208
+ res.json({
209
+ success: true,
210
+ data: {
211
+ serverName: server.name,
212
+ toolsCount: tools.length,
213
+ testsRun: testResults.length,
214
+ results: testResults
215
+ }
216
+ });
217
+ }
218
+ catch (error) {
219
+ logger_1.logger.error('Test error:', error);
220
+ res.status(400).json({
221
+ success: false,
222
+ error: error instanceof Error ? error.message : 'Unknown error'
223
+ });
224
+ }
225
+ };
226
+ this.renameServer = async (req, res) => {
227
+ try {
228
+ const serverId = req.params.id;
229
+ const { newName } = req.body;
230
+ const ownerUsername = this.deps.getEffectiveUsername(req);
231
+ console.log(`🔄 Rename request for server ID: ${serverId}, new name: ${newName}`);
232
+ if (!newName || typeof newName !== 'string' || !newName.trim()) {
233
+ return res.status(400).json({
234
+ success: false,
235
+ error: 'New name is required and must be a non-empty string'
236
+ });
237
+ }
238
+ const trimmedName = newName.trim();
239
+ const sqlite = this.deps.ensureDataStore();
240
+ const existingServer = await sqlite.getServerForOwner(serverId, ownerUsername);
241
+ if (!existingServer) {
242
+ console.log(`❌ Server with ID "${serverId}" not found`);
243
+ return res.status(404).json({
244
+ success: false,
245
+ error: `Server with ID "${serverId}" not found`
246
+ });
247
+ }
248
+ const allServers = await sqlite.getAllServersByOwner(ownerUsername);
249
+ const serverWithSameName = allServers.find((s) => s.name === trimmedName && s.id !== serverId);
250
+ if (serverWithSameName) {
251
+ console.log(`❌ Server name "${trimmedName}" is already taken by ID: ${serverWithSameName.id}`);
252
+ return res.status(400).json({
253
+ success: false,
254
+ error: `Server name "${trimmedName}" is already taken`
255
+ });
256
+ }
257
+ existingServer.name = trimmedName;
258
+ await sqlite.saveServer(existingServer);
259
+ console.log(`✅ Successfully renamed server ${serverId} to "${trimmedName}"`);
260
+ res.json({
261
+ success: true,
262
+ data: {
263
+ id: serverId,
264
+ name: trimmedName
265
+ }
266
+ });
267
+ }
268
+ catch (error) {
269
+ logger_1.logger.error('Rename error:', error);
270
+ res.status(400).json({
271
+ success: false,
272
+ error: error instanceof Error ? error.message : 'Unknown error'
273
+ });
274
+ }
275
+ };
276
+ this.deleteServer = async (req, res) => {
277
+ try {
278
+ const serverId = req.params.id;
279
+ const ownerUsername = this.deps.getEffectiveUsername(req);
280
+ console.log(`Attempting to delete server with ID: ${serverId}`);
281
+ const existingServer = await this.deps.ensureGenerator().getServerForOwner(serverId, ownerUsername);
282
+ if (!existingServer) {
283
+ console.log(`Server with ID "${serverId}" not found in database`);
284
+ return res.status(404).json({
285
+ success: false,
286
+ error: `Server with ID "${serverId}" not found`
287
+ });
288
+ }
289
+ await this.deps.ensureGenerator().deleteServer(serverId);
290
+ console.log(`Deleted server "${serverId}" from JSON database`);
291
+ const serverInfo = this.deps.generatedServers.get(serverId);
292
+ if (serverInfo) {
293
+ const serverDir = path_1.default.dirname(serverInfo.serverPath);
294
+ await promises_1.default.rm(serverDir, { recursive: true, force: true });
295
+ console.log(`Removed server files from ${serverDir}`);
296
+ }
297
+ this.deps.generatedServers.delete(req.params.id);
298
+ res.json({ success: true });
299
+ }
300
+ catch (error) {
301
+ logger_1.logger.error('Delete error:', error);
302
+ res.status(400).json({
303
+ success: false,
304
+ error: error instanceof Error ? error.message : 'Unknown error'
305
+ });
306
+ }
307
+ };
308
+ this.startRuntimeServer = async (req, res) => {
309
+ try {
310
+ const ownerUsername = this.deps.getEffectiveUsername(req);
311
+ const server = await this.deps.ensureGenerator().getServerForOwner(req.params.id, ownerUsername);
312
+ if (!server) {
313
+ return res.status(404).json({ success: false, error: 'Server not found' });
314
+ }
315
+ const serverInfo = this.deps.generatedServers.get(req.params.id);
316
+ if (!serverInfo) {
317
+ return res.status(404).json({
318
+ success: false,
319
+ error: 'Server not found'
320
+ });
321
+ }
322
+ const port = await this.deps.startRuntimeMCPServer(req.params.id, serverInfo.serverPath);
323
+ res.json({
324
+ success: true,
325
+ data: {
326
+ serverId: req.params.id,
327
+ port,
328
+ endpoint: `http://localhost:${port}`,
329
+ claudeConfig: {
330
+ [serverInfo.config.name]: {
331
+ command: 'curl',
332
+ args: ['-X', 'POST', `http://localhost:${port}/sse/message`],
333
+ env: {
334
+ MCP_TRANSPORT: 'sse'
335
+ }
336
+ }
337
+ }
338
+ }
339
+ });
340
+ }
341
+ catch (error) {
342
+ logger_1.logger.error('Runtime start error:', error);
343
+ res.status(500).json({
344
+ success: false,
345
+ error: error instanceof Error ? error.message : 'Unknown error'
346
+ });
347
+ }
348
+ };
349
+ this.stopRuntimeServer = async (req, res) => {
350
+ const ownerUsername = this.deps.getEffectiveUsername(req);
351
+ const server = await this.deps.ensureGenerator().getServerForOwner(req.params.id, ownerUsername);
352
+ if (!server) {
353
+ return res.status(404).json({ success: false, error: 'Server not found' });
354
+ }
355
+ const serverInfo = this.deps.generatedServers.get(req.params.id);
356
+ if (!serverInfo) {
357
+ return res.status(404).json({
358
+ success: false,
359
+ error: 'Server not found'
360
+ });
361
+ }
362
+ if (serverInfo.runtimeProcess) {
363
+ serverInfo.runtimeProcess.kill();
364
+ serverInfo.runtimeProcess = undefined;
365
+ serverInfo.runtimePort = undefined;
366
+ }
367
+ res.json({ success: true });
368
+ };
369
+ this.exportServer = async (req, res) => {
370
+ const ownerUsername = this.deps.getEffectiveUsername(req);
371
+ const server = await this.deps.ensureGenerator().getServerForOwner(req.params.id, ownerUsername);
372
+ if (!server) {
373
+ return res.status(404).json({ success: false, error: 'Server not found' });
374
+ }
375
+ const serverInfo = this.deps.generatedServers.get(req.params.id);
376
+ if (!serverInfo) {
377
+ return res.status(404).json({
378
+ success: false,
379
+ error: 'Server not found'
380
+ });
381
+ }
382
+ const archiveName = `${serverInfo.config.name}-mcp-server.zip`;
383
+ res.json({
384
+ success: true,
385
+ data: {
386
+ downloadUrl: `/api/servers/${req.params.id}/download`,
387
+ filename: archiveName
388
+ }
389
+ });
390
+ };
391
+ this.getManageServersPage = (_req, res) => {
392
+ res.sendFile(path_1.default.join(this.deps.publicDir, 'manage-servers.html'));
393
+ };
394
+ this.getTestServersPage = (_req, res) => {
395
+ res.sendFile(path_1.default.join(this.deps.publicDir, 'test-servers.html'));
396
+ };
397
+ this.getHowToUsePage = (_req, res) => {
398
+ res.sendFile(path_1.default.join(this.deps.publicDir, 'how-to-use.html'));
399
+ };
400
+ }
401
+ registerRoutes(app) {
402
+ app.get('/api/servers', this.listServers);
403
+ app.get('/api/servers/:id', this.getServerDetails);
404
+ app.get('/api/servers/:id/data', this.getServerData);
405
+ app.post('/api/servers/:id/test', this.testServer);
406
+ app.patch('/api/servers/:id/rename', this.renameServer);
407
+ app.delete('/api/servers/:id', this.deleteServer);
408
+ app.post('/api/servers/:id/start-runtime', this.startRuntimeServer);
409
+ app.post('/api/servers/:id/stop-runtime', this.stopRuntimeServer);
410
+ app.get('/api/servers/:id/export', this.exportServer);
411
+ app.get('/manage-servers', this.getManageServersPage);
412
+ app.get('/test-servers', this.getTestServersPage);
413
+ app.get('/how-to-use', this.getHowToUsePage);
414
+ }
415
+ }
416
+ exports.ServerApi = ServerApi;
417
+ //# sourceMappingURL=serverApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverApi.js","sourceRoot":"","sources":["../../../src/server/api/serverApi.ts"],"names":[],"mappings":";;;;;;AACA,2DAA6B;AAC7B,gDAAwB;AAIxB,kEAA6D;AAE7D,+CAA4C;AAoB5C,MAAa,SAAS;IACpB,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;QAiBxC,gBAAW,GAAG,KAAK,EAAE,GAAyB,EAAE,GAAqB,EAAiB,EAAE;YAC9F,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAChE,4EAA4E;gBAC5E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACzE,MAAM,OAAO,GAAI,SAAS,EAAE,YAAoB,EAAE,IAAI,IAAK,MAAc,EAAE,YAAY,EAAE,IAAI,IAAI,SAAS,CAAC;gBAC3G,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/D,MAAM,OAAO,GAAG,SAAS,EAAE,OAAO,IAAK,MAAc,EAAE,OAAO,IAAI,OAAO,CAAC;gBAC1E,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACrD,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC7D,MAAM,SAAS,GAAG,IAAI,CAAC;gBACvB,OAAO;oBACL,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,GAAG,MAAM,CAAC,IAAI,0BAA0B,SAAS,GAAG;oBACjE,OAAO;oBACP,UAAU,EAAE,KAAK,CAAC,MAAM;oBACxB,cAAc,EAAE,SAAS,CAAC,MAAM;oBAChC,YAAY,EAAE,CAAC;iBAChB,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC;YAEJ,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC;QAEM,qBAAgB,GAAG,KAAK,EAAE,GAAyB,EAAE,GAAqB,EAAoC,EAAE;YACtH,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YAEjG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC1B,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,kBAAkB;iBAC1B,CAAC,CAAC;YACL,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAI,MAAM,CAAC,YAAoB,EAAE,IAAI,IAAI,SAAS,CAAC;YAChE,MAAM,SAAS,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE,OAAO,IAAI,OAAO,CAAC;YAEhE,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,WAAW,EAAE,GAAG,MAAM,CAAC,IAAI,0BAA0B,SAAS,GAAG;wBACjE,OAAO;wBACP,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;4BAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,WAAW,EAAE,IAAI,CAAC,WAAW;4BAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;4BAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;yBAC1B,CAAC,CAAC;wBACH,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;4BACtC,IAAI,EAAE,QAAQ,CAAC,IAAI;4BACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;4BACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;yBACpC,CAAC,CAAC;wBACH,OAAO,EAAE,EAAE;qBACZ;oBACD,UAAU,EAAE,EAAE;iBACf;aACF,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,kBAAa,GAAG,KAAK,EAAE,GAAyB,EAAE,GAAqB,EAAoC,EAAE;YACnH,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;gBAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAe,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;gBAE5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAC5F,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC1B,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,kBAAkB;qBAC1B,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,yCAAkB,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAC5E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC;gBAErE,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,GAAG,CAAC,IAAI,CAAC;wBACd,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,EAAE;qBACT,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,QAAQ,KAAK,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAExF,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAClC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjE,GAAG,CAAC,IAAI,CAAC;wBACP,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;qBACjC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,IAAI,CAAC;wBACP,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,EAAE;qBACT,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;gBAClD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAChE,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAEM,eAAU,GAAG,KAAK,EAAE,GAAyB,EAAE,GAAqB,EAAoC,EAAE;YAChH,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;gBAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;gBACjG,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC1B,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,kBAAkB;qBAC1B,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACjF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;gBAE5D,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,EAAE,CAAC;oBAC1C,IAAI,CAAC;wBACH,MAAM,QAAQ,GAAG,IAAI,yCAAkB,EAAE,CAAC;wBAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;wBACpD,IAAI,CAAC,IAAI,EAAE,CAAC;4BACV,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCAC1B,OAAO,EAAE,KAAK;gCACd,KAAK,EAAE,SAAS,QAAQ,aAAa;6BACtC,CAAC,CAAC;wBACL,CAAC;wBAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;wBAE7F,GAAG,CAAC,IAAI,CAAC;4BACP,OAAO,EAAE,IAAI;4BACb,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,MAAM,EAAE,SAAS;gCACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gCAC7B,UAAU,EAAE,UAAU,IAAI,EAAE;gCAC5B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,MAAM;gCAC9D,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;6BAC/B;yBACF,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,GAAG,CAAC,IAAI,CAAC;4BACP,OAAO,EAAE,IAAI;4BACb,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,MAAM,EAAE,OAAO;gCACf,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,WAAW,IAAI,EAAE;gCACtE,UAAU,EAAE,UAAU,IAAI,EAAE;gCAC5B,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;6BAChE;yBACF,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;gBACH,CAAC;gBAED,MAAM,WAAW,GAAG,EAAE,CAAC;gBACvB,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEvD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;oBAC/B,IAAI,CAAC;wBACH,MAAM,QAAQ,GAAG,IAAI,yCAAkB,EAAE,CAAC;wBAC1C,MAAM,UAAU,GAAQ,EAAE,CAAC;wBAC3B,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;4BAC5F,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,UAAiB,CAAC,EAAE,CAAC;gCAC7E,IAAI,SAAS,KAAK,OAAO;oCAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;qCAChD,IAAI,SAAS,KAAK,QAAQ;oCAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4BAC7D,CAAC;wBACH,CAAC;wBAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;wBACxF,WAAW,CAAC,IAAI,CAAC;4BACf,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,MAAM,EAAE,SAAS;4BACjB,WAAW,EAAE,IAAI,CAAC,WAAW;4BAC7B,UAAU,EAAE,UAAU;4BACtB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,MAAM;4BAC9D,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;yBAC/B,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,WAAW,CAAC,IAAI,CAAC;4BACf,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,MAAM,EAAE,OAAO;4BACf,WAAW,EAAE,IAAI,CAAC,WAAW;4BAC7B,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;yBAChE,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,GAAG,CAAC,IAAI,CAAC;oBACP,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE;wBACJ,UAAU,EAAE,MAAM,CAAC,IAAI;wBACvB,UAAU,EAAE,KAAK,CAAC,MAAM;wBACxB,QAAQ,EAAE,WAAW,CAAC,MAAM;wBAC5B,OAAO,EAAE,WAAW;qBACrB;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gBACnC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAChE,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAEM,iBAAY,GAAG,KAAK,EAAE,GAAyB,EAAE,GAAqB,EAAoC,EAAE;YAClH,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;gBAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;gBAE1D,OAAO,CAAC,GAAG,CAAC,oCAAoC,QAAQ,eAAe,OAAO,EAAE,CAAC,CAAC;gBAElF,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC/D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC1B,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,qDAAqD;qBAC7D,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3C,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAC/E,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,aAAa,CAAC,CAAC;oBACxD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC1B,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,mBAAmB,QAAQ,aAAa;qBAChD,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;gBACpE,MAAM,kBAAkB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;gBAC/F,IAAI,kBAAkB,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,kBAAkB,WAAW,6BAA6B,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC/F,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC1B,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,gBAAgB,WAAW,oBAAoB;qBACvD,CAAC,CAAC;gBACL,CAAC;gBAED,cAAc,CAAC,IAAI,GAAG,WAAW,CAAC;gBAClC,MAAM,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gBAExC,OAAO,CAAC,GAAG,CAAC,iCAAiC,QAAQ,QAAQ,WAAW,GAAG,CAAC,CAAC;gBAE7E,GAAG,CAAC,IAAI,CAAC;oBACP,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE;wBACJ,EAAE,EAAE,QAAQ;wBACZ,IAAI,EAAE,WAAW;qBAClB;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;gBACrC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAChE,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAEM,iBAAY,GAAG,KAAK,EAAE,GAAyB,EAAE,GAAqB,EAAoC,EAAE;YAClH,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,wCAAwC,QAAQ,EAAE,CAAC,CAAC;gBAEhE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBACpG,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,yBAAyB,CAAC,CAAC;oBAClE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC1B,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,mBAAmB,QAAQ,aAAa;qBAChD,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,sBAAsB,CAAC,CAAC;gBAE/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5D,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;oBACtD,MAAM,kBAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oBACzD,OAAO,CAAC,GAAG,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;gBACxD,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACjD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;gBACrC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAChE,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAEM,uBAAkB,GAAG,KAAK,EAAE,GAAyB,EAAE,GAAqB,EAAoC,EAAE;YACxH,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;gBAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;gBACjG,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC7E,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACjE,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC1B,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,kBAAkB;qBAC1B,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;gBAEzF,GAAG,CAAC,IAAI,CAAC;oBACP,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE;wBACJ,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE;wBACvB,IAAI;wBACJ,QAAQ,EAAE,oBAAoB,IAAI,EAAE;wBACpC,YAAY,EAAE;4BACZ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gCACxB,OAAO,EAAE,MAAM;gCACf,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,oBAAoB,IAAI,cAAc,CAAC;gCAC5D,GAAG,EAAE;oCACH,aAAa,EAAE,KAAK;iCACrB;6BACF;yBACF;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAC5C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAChE,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAEM,sBAAiB,GAAG,KAAK,EAAE,GAAyB,EAAE,GAAqB,EAAoC,EAAE;YACvH,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YACjG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC7E,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC1B,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,kBAAkB;iBAC1B,CAAC,CAAC;YACL,CAAC;YAED,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;gBAC9B,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;gBACjC,UAAU,CAAC,cAAc,GAAG,SAAS,CAAC;gBACtC,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC;YACrC,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEM,iBAAY,GAAG,KAAK,EAAE,GAAyB,EAAE,GAAqB,EAAoC,EAAE;YAClH,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YACjG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC7E,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC1B,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,kBAAkB;iBAC1B,CAAC,CAAC;YACL,CAAC;YAED,MAAM,WAAW,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACJ,WAAW,EAAE,gBAAgB,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW;oBACrD,QAAQ,EAAE,WAAW;iBACtB;aACF,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,yBAAoB,GAAG,CAAC,IAAqB,EAAE,GAAqB,EAAQ,EAAE;YACpF,GAAG,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC;QAEM,uBAAkB,GAAG,CAAC,IAAqB,EAAE,GAAqB,EAAQ,EAAE;YAClF,GAAG,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC;QAEM,oBAAe,GAAG,CAAC,IAAqB,EAAE,GAAqB,EAAQ,EAAE;YAC/E,GAAG,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC;IAvbiD,CAAC;IAEpD,cAAc,CAAC,GAAoB;QACjC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnD,GAAG,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,GAAG,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACpE,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClE,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACtD,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACtD,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClD,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;CAyaF;AAzbD,8BAybC"}
@@ -1,14 +1,13 @@
1
1
  export declare class DynamicMCPExecutor {
2
- private sqliteManager;
3
- private dbConnections;
2
+ private dataStore;
3
+ private serverUtils;
4
+ private toolExecuter;
4
5
  constructor();
5
6
  getAllTools(): Promise<any[]>;
6
7
  getAllResources(): Promise<any[]>;
7
8
  executeTool(toolName: string, args: any): Promise<any>;
8
9
  readResource(resourceName: string): Promise<any>;
9
- private getOrCreateConnection;
10
- private executeQuery;
11
- getStats(): any;
10
+ getStats(): Promise<any>;
12
11
  close(): Promise<void>;
13
12
  }
14
13
  //# sourceMappingURL=dynamic-mcp-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-mcp-executor.d.ts","sourceRoot":"","sources":["../../src/server/dynamic-mcp-executor.ts"],"names":[],"mappings":"AAKA,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;;IAQ7B,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAI7B,eAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAIjC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAItD,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAqChD,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC;IAOxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DynamicMCPExecutor = void 0;
4
+ const factory_1 = require("../database/factory");
5
+ const server_utils_1 = require("./server-utils");
6
+ const tool_executer_1 = require("./tool-executer");
7
+ const logger_1 = require("../utils/logger");
8
+ class DynamicMCPExecutor {
9
+ constructor() {
10
+ this.dataStore = (0, factory_1.createDataStore)();
11
+ this.serverUtils = new server_utils_1.ServerUtils(this.dataStore);
12
+ this.toolExecuter = new tool_executer_1.ToolExecuter(this.serverUtils);
13
+ }
14
+ async getAllTools() {
15
+ return this.serverUtils.getAllTools();
16
+ }
17
+ async getAllResources() {
18
+ return this.serverUtils.getAllResources();
19
+ }
20
+ async executeTool(toolName, args) {
21
+ return this.toolExecuter.executeTool(toolName, args);
22
+ }
23
+ async readResource(resourceName) {
24
+ try {
25
+ const [serverId, actualResourceName] = await this.serverUtils.parseQualifiedName(resourceName, 'resource');
26
+ const resources = await this.dataStore.getResourcesForServer(serverId);
27
+ const resource = resources.find((r) => r.name === actualResourceName);
28
+ if (!resource) {
29
+ throw new Error(`Resource not found: ${resourceName}`);
30
+ }
31
+ const serverConfig = await this.dataStore.getServer(serverId);
32
+ if (!serverConfig) {
33
+ throw new Error(`Server not found: ${serverId}`);
34
+ }
35
+ const result = await this.toolExecuter.executeResourceQuery(serverId, serverConfig.sourceConfig, resource.sqlQuery, {}, 'SELECT');
36
+ logger_1.logger.error(`✅ Read resource ${resourceName} successfully`);
37
+ return {
38
+ contents: [{
39
+ uri: resource.uri_template,
40
+ mimeType: 'application/json',
41
+ text: JSON.stringify(result, null, 2)
42
+ }]
43
+ };
44
+ }
45
+ catch (error) {
46
+ logger_1.logger.error(`❌ Error reading resource ${resourceName}:`, error);
47
+ throw error;
48
+ }
49
+ }
50
+ async getStats() {
51
+ return {
52
+ ...(await this.dataStore.getStats()),
53
+ activeConnections: this.toolExecuter.getActiveConnectionsCount()
54
+ };
55
+ }
56
+ async close() {
57
+ await this.toolExecuter.closeConnections();
58
+ await this.dataStore.close();
59
+ }
60
+ }
61
+ exports.DynamicMCPExecutor = DynamicMCPExecutor;
62
+ //# sourceMappingURL=dynamic-mcp-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-mcp-executor.js","sourceRoot":"","sources":["../../src/server/dynamic-mcp-executor.ts"],"names":[],"mappings":";;;AAAA,iDAAsD;AAEtD,iDAA6C;AAC7C,mDAA+C;AAC/C,4CAAyC;AACzC,MAAa,kBAAkB;IAK7B;QACE,IAAI,CAAC,SAAS,GAAG,IAAA,yBAAe,GAAE,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,0BAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,IAAI,4BAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,IAAS;QAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,YAAoB;QACrC,IAAI,CAAC;YACH,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAE3G,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;YACtE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;YACnD,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CACzD,QAAQ,EACR,YAAY,CAAC,YAAY,EACzB,QAAQ,CAAC,QAAQ,EACjB,EAAE,EACF,QAAQ,CACT,CAAC;YAEF,eAAM,CAAC,KAAK,CAAC,mBAAmB,YAAY,eAAe,CAAC,CAAC;YAC7D,OAAO;gBACL,QAAQ,EAAE,CAAC;wBACT,GAAG,EAAE,QAAQ,CAAC,YAAY;wBAC1B,QAAQ,EAAE,kBAAkB;wBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtC,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,4BAA4B,YAAY,GAAG,EAAE,KAAK,CAAC,CAAC;YACjE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO;YACL,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACpC,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE;SACjE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;QAC3C,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACF;AAvED,gDAuEC"}
@@ -0,0 +1,14 @@
1
+ export declare class PortUtils {
2
+ private readonly env;
3
+ static readonly DEFAULT_WEB_PORT = 3000;
4
+ static readonly DEFAULT_MCP_PORT = 3001;
5
+ private nextAvailablePort;
6
+ constructor(env?: NodeJS.ProcessEnv);
7
+ resolvePort(value: string | undefined, fallback: number): number;
8
+ resolveServerPorts(): {
9
+ port: number;
10
+ mcpPort: number;
11
+ };
12
+ getNextPort(): number;
13
+ }
14
+ //# sourceMappingURL=port-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port-utils.d.ts","sourceRoot":"","sources":["../../src/server/port-utils.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAS;IAMR,OAAO,CAAC,QAAQ,CAAC,GAAG;IALhC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,QAAQ;IACxC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,QAAQ;IAExC,OAAO,CAAC,iBAAiB,CAAS;gBAEL,GAAG,GAAE,MAAM,CAAC,UAAwB;IAIjE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQhE,kBAAkB,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAOvD,WAAW,IAAI,MAAM;CAKtB"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PortUtils = void 0;
4
+ class PortUtils {
5
+ constructor(env = process.env) {
6
+ this.env = env;
7
+ this.nextAvailablePort = this.resolvePort(this.env.MCP_PORT, PortUtils.DEFAULT_MCP_PORT);
8
+ }
9
+ resolvePort(value, fallback) {
10
+ const parsed = Number(value);
11
+ if (Number.isFinite(parsed) && parsed > 0) {
12
+ return parsed;
13
+ }
14
+ return fallback;
15
+ }
16
+ resolveServerPorts() {
17
+ return {
18
+ port: this.resolvePort(this.env.PORT, PortUtils.DEFAULT_WEB_PORT),
19
+ mcpPort: this.resolvePort(this.env.MCP_PORT, PortUtils.DEFAULT_MCP_PORT)
20
+ };
21
+ }
22
+ getNextPort() {
23
+ const port = this.nextAvailablePort;
24
+ this.nextAvailablePort += 1;
25
+ return port;
26
+ }
27
+ }
28
+ exports.PortUtils = PortUtils;
29
+ PortUtils.DEFAULT_WEB_PORT = 3000;
30
+ PortUtils.DEFAULT_MCP_PORT = 3001;
31
+ //# sourceMappingURL=port-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port-utils.js","sourceRoot":"","sources":["../../src/server/port-utils.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;IAMpB,YAA6B,MAAyB,OAAO,CAAC,GAAG;QAApC,QAAG,GAAH,GAAG,CAAiC;QAC/D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC3F,CAAC;IAED,WAAW,CAAC,KAAyB,EAAE,QAAgB;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kBAAkB;QAChB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,gBAAgB,CAAC;YACjE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACpC,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;;AA7BH,8BA8BC;AA7BiB,0BAAgB,GAAG,IAAI,CAAC;AACxB,0BAAgB,GAAG,IAAI,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { IDataStore, ToolDefinition } from '../database/datastore';
2
+ export declare class ServerUtils {
3
+ private readonly dataStore;
4
+ constructor(dataStore: IDataStore);
5
+ getAllTools(): Promise<any[]>;
6
+ getAllResources(): Promise<any[]>;
7
+ parseQualifiedName(name: string, kind: 'tool' | 'resource'): Promise<[string, string]>;
8
+ parseToolName(toolName: string): Promise<[string, string]>;
9
+ getTool(serverId: string, toolName: string): Promise<ToolDefinition>;
10
+ getServerConfig(serverId: string): Promise<any>;
11
+ parseQueryConfig(sqlQuery: string): any;
12
+ }
13
+ //# sourceMappingURL=server-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-utils.d.ts","sourceRoot":"","sources":["../../src/server/server-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEnE,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,UAAU;IAE5C,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAS7B,eAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IASjC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAuBtF,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAI1D,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IASpE,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAQrD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;CAOxC"}