@mycelish/cli 0.2.8 → 0.3.1

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 (187) hide show
  1. package/dist/commands/doctor.d.ts.map +1 -1
  2. package/dist/commands/doctor.js +65 -0
  3. package/dist/commands/doctor.js.map +1 -1
  4. package/dist/commands/health-checks/runner.d.ts.map +1 -1
  5. package/dist/commands/health-checks/runner.js +23 -1
  6. package/dist/commands/health-checks/runner.js.map +1 -1
  7. package/dist/commands/marketplace.d.ts.map +1 -1
  8. package/dist/commands/marketplace.js +34 -1
  9. package/dist/commands/marketplace.js.map +1 -1
  10. package/dist/commands/remote.d.ts.map +1 -1
  11. package/dist/commands/remote.js +17 -0
  12. package/dist/commands/remote.js.map +1 -1
  13. package/dist/commands/remove.d.ts +16 -8
  14. package/dist/commands/remove.d.ts.map +1 -1
  15. package/dist/commands/remove.js +195 -42
  16. package/dist/commands/remove.js.map +1 -1
  17. package/dist/commands/remove.test.js +4 -4
  18. package/dist/commands/remove.test.js.map +1 -1
  19. package/dist/commands/sync.d.ts.map +1 -1
  20. package/dist/commands/sync.js +20 -1
  21. package/dist/commands/sync.js.map +1 -1
  22. package/dist/core/auto-adapter.d.ts.map +1 -1
  23. package/dist/core/auto-adapter.js +2 -0
  24. package/dist/core/auto-adapter.js.map +1 -1
  25. package/dist/core/content-hash.d.ts +3 -0
  26. package/dist/core/content-hash.d.ts.map +1 -0
  27. package/dist/core/content-hash.js +11 -0
  28. package/dist/core/content-hash.js.map +1 -0
  29. package/dist/core/env-template.d.ts +8 -0
  30. package/dist/core/env-template.d.ts.map +1 -1
  31. package/dist/core/env-template.js +67 -1
  32. package/dist/core/env-template.js.map +1 -1
  33. package/dist/core/env-template.test.js +100 -1
  34. package/dist/core/env-template.test.js.map +1 -1
  35. package/dist/core/manifest-migrator.d.ts +0 -1
  36. package/dist/core/manifest-migrator.d.ts.map +1 -1
  37. package/dist/core/manifest-migrator.js +1 -1
  38. package/dist/core/manifest-migrator.js.map +1 -1
  39. package/dist/core/manifest-state.d.ts +4 -2
  40. package/dist/core/manifest-state.d.ts.map +1 -1
  41. package/dist/core/manifest-state.js +1 -0
  42. package/dist/core/manifest-state.js.map +1 -1
  43. package/dist/core/manifest-state.test.js +3 -2
  44. package/dist/core/manifest-state.test.js.map +1 -1
  45. package/dist/core/marketplace-cache.d.ts +12 -0
  46. package/dist/core/marketplace-cache.d.ts.map +1 -0
  47. package/dist/core/marketplace-cache.js +127 -0
  48. package/dist/core/marketplace-cache.js.map +1 -0
  49. package/dist/core/marketplace-cache.test.d.ts +2 -0
  50. package/dist/core/marketplace-cache.test.d.ts.map +1 -0
  51. package/dist/core/marketplace-cache.test.js +122 -0
  52. package/dist/core/marketplace-cache.test.js.map +1 -0
  53. package/dist/core/marketplace-constants.d.ts +14 -0
  54. package/dist/core/marketplace-constants.d.ts.map +1 -0
  55. package/dist/core/marketplace-constants.js +14 -0
  56. package/dist/core/marketplace-constants.js.map +1 -0
  57. package/dist/core/marketplace-deduplicator.d.ts +13 -0
  58. package/dist/core/marketplace-deduplicator.d.ts.map +1 -0
  59. package/dist/core/marketplace-deduplicator.js +84 -0
  60. package/dist/core/marketplace-deduplicator.js.map +1 -0
  61. package/dist/core/marketplace-deduplicator.test.d.ts +2 -0
  62. package/dist/core/marketplace-deduplicator.test.d.ts.map +1 -0
  63. package/dist/core/marketplace-deduplicator.test.js +70 -0
  64. package/dist/core/marketplace-deduplicator.test.js.map +1 -0
  65. package/dist/core/marketplace-registry.d.ts.map +1 -1
  66. package/dist/core/marketplace-registry.js +10 -16
  67. package/dist/core/marketplace-registry.js.map +1 -1
  68. package/dist/core/marketplace-registry.test.js +5 -4
  69. package/dist/core/marketplace-registry.test.js.map +1 -1
  70. package/dist/core/marketplace-sources.d.ts +47 -25
  71. package/dist/core/marketplace-sources.d.ts.map +1 -1
  72. package/dist/core/marketplace-sources.js +331 -106
  73. package/dist/core/marketplace-sources.js.map +1 -1
  74. package/dist/core/marketplace-sources.test.js +158 -5
  75. package/dist/core/marketplace-sources.test.js.map +1 -1
  76. package/dist/core/marketplace.d.ts +22 -5
  77. package/dist/core/marketplace.d.ts.map +1 -1
  78. package/dist/core/marketplace.js +287 -131
  79. package/dist/core/marketplace.js.map +1 -1
  80. package/dist/core/marketplace.test.js +24 -58
  81. package/dist/core/marketplace.test.js.map +1 -1
  82. package/dist/core/migrator/executor.d.ts.map +1 -1
  83. package/dist/core/migrator/executor.js +11 -2
  84. package/dist/core/migrator/executor.js.map +1 -1
  85. package/dist/core/migrator/manifest.d.ts +10 -1
  86. package/dist/core/migrator/manifest.d.ts.map +1 -1
  87. package/dist/core/migrator/manifest.js +12 -2
  88. package/dist/core/migrator/manifest.js.map +1 -1
  89. package/dist/core/plugin-scanner.test.js +0 -4
  90. package/dist/core/plugin-scanner.test.js.map +1 -1
  91. package/dist/core/plugin-state.d.ts.map +1 -1
  92. package/dist/core/plugin-state.js +98 -18
  93. package/dist/core/plugin-state.js.map +1 -1
  94. package/dist/core/plugin-takeover.d.ts +15 -0
  95. package/dist/core/plugin-takeover.d.ts.map +1 -1
  96. package/dist/core/plugin-takeover.js +163 -3
  97. package/dist/core/plugin-takeover.js.map +1 -1
  98. package/dist/core/presets.test.js +0 -3
  99. package/dist/core/presets.test.js.map +1 -1
  100. package/dist/core/secret-detector.d.ts +20 -0
  101. package/dist/core/secret-detector.d.ts.map +1 -0
  102. package/dist/core/secret-detector.js +83 -0
  103. package/dist/core/secret-detector.js.map +1 -0
  104. package/dist/core/secret-detector.test.d.ts +2 -0
  105. package/dist/core/secret-detector.test.d.ts.map +1 -0
  106. package/dist/core/secret-detector.test.js +91 -0
  107. package/dist/core/secret-detector.test.js.map +1 -0
  108. package/dist/core/security-scanner.d.ts +24 -0
  109. package/dist/core/security-scanner.d.ts.map +1 -0
  110. package/dist/core/security-scanner.js +182 -0
  111. package/dist/core/security-scanner.js.map +1 -0
  112. package/dist/core/security-scanner.test.d.ts +2 -0
  113. package/dist/core/security-scanner.test.d.ts.map +1 -0
  114. package/dist/core/security-scanner.test.js +120 -0
  115. package/dist/core/security-scanner.test.js.map +1 -0
  116. package/dist/core/snapshot.d.ts.map +1 -1
  117. package/dist/core/snapshot.js +0 -6
  118. package/dist/core/snapshot.js.map +1 -1
  119. package/dist/core/snapshot.test.js +0 -4
  120. package/dist/core/snapshot.test.js.map +1 -1
  121. package/dist/core/state-verifier.d.ts.map +1 -1
  122. package/dist/core/state-verifier.js +1 -0
  123. package/dist/core/state-verifier.js.map +1 -1
  124. package/dist/dashboard/assets/_baseUniq-jpnlJe91.js +1 -0
  125. package/dist/dashboard/assets/arc-dJqY5iW3.js +1 -0
  126. package/dist/dashboard/assets/architectureDiagram-VXUJARFQ-DS-AEHHe.js +36 -0
  127. package/dist/dashboard/assets/blockDiagram-VD42YOAC-Bn0VV7II.js +122 -0
  128. package/dist/dashboard/assets/c4Diagram-YG6GDRKO-CB_qD81l.js +10 -0
  129. package/dist/dashboard/assets/channel-qTocB4Pq.js +1 -0
  130. package/dist/dashboard/assets/chunk-4BX2VUAB-aOtXKVpc.js +1 -0
  131. package/dist/dashboard/assets/chunk-55IACEB6-BlTmVjwT.js +1 -0
  132. package/dist/dashboard/assets/chunk-B4BG7PRW-ByWFjAo6.js +165 -0
  133. package/dist/dashboard/assets/chunk-DI55MBZ5-DlgmWX--.js +220 -0
  134. package/dist/dashboard/assets/chunk-FMBD7UC4-CqEkD31_.js +15 -0
  135. package/dist/dashboard/assets/chunk-QN33PNHL-D-NwUBy5.js +1 -0
  136. package/dist/dashboard/assets/chunk-QZHKN3VN-5CiE9Pyg.js +1 -0
  137. package/dist/dashboard/assets/chunk-TZMSLE5B-DI4PmdOV.js +1 -0
  138. package/dist/dashboard/assets/classDiagram-2ON5EDUG-BG-TpUqS.js +1 -0
  139. package/dist/dashboard/assets/classDiagram-v2-WZHVMYZB-BG-TpUqS.js +1 -0
  140. package/dist/dashboard/assets/clone-DU2QZ4l8.js +1 -0
  141. package/dist/dashboard/assets/cose-bilkent-S5V4N54A-CK6jhm9G.js +1 -0
  142. package/dist/dashboard/assets/cytoscape.esm-5J0xJHOV.js +321 -0
  143. package/dist/dashboard/assets/dagre-6UL2VRFP-D7pcmBXr.js +4 -0
  144. package/dist/dashboard/assets/defaultLocale-DX6XiGOO.js +1 -0
  145. package/dist/dashboard/assets/diagram-PSM6KHXK-Cf5iaUrO.js +24 -0
  146. package/dist/dashboard/assets/diagram-QEK2KX5R-Ba6pejlB.js +43 -0
  147. package/dist/dashboard/assets/diagram-S2PKOQOG-MICrmiFJ.js +24 -0
  148. package/dist/dashboard/assets/erDiagram-Q2GNP2WA-Mp_TTdk-.js +60 -0
  149. package/dist/dashboard/assets/flowDiagram-NV44I4VS-DtDj1m9Q.js +162 -0
  150. package/dist/dashboard/assets/ganttDiagram-JELNMOA3-C6PAWTPX.js +267 -0
  151. package/dist/dashboard/assets/gitGraphDiagram-NY62KEGX-C5u12JOT.js +65 -0
  152. package/dist/dashboard/assets/graph-NsKMojNd.js +1 -0
  153. package/dist/dashboard/assets/index-CcxaE_OV.js +189 -0
  154. package/dist/dashboard/assets/index-D2P8RAeH.css +1 -0
  155. package/dist/dashboard/assets/infoDiagram-WHAUD3N6-Eo1K9zhj.js +2 -0
  156. package/dist/dashboard/assets/init-Gi6I4Gst.js +1 -0
  157. package/dist/dashboard/assets/journeyDiagram-XKPGCS4Q-B1kKiUUS.js +139 -0
  158. package/dist/dashboard/assets/kanban-definition-3W4ZIXB7-Dm52p6CM.js +89 -0
  159. package/dist/dashboard/assets/katex-DhXJpUyf.js +261 -0
  160. package/dist/dashboard/assets/layout-BPmnLTg1.js +1 -0
  161. package/dist/dashboard/assets/linear-BXRcMUWZ.js +1 -0
  162. package/dist/dashboard/assets/mermaid.core-ajywX_zk.js +250 -0
  163. package/dist/dashboard/assets/min-BjB8Dahw.js +1 -0
  164. package/dist/dashboard/assets/mindmap-definition-VGOIOE7T-DN6BiXQl.js +68 -0
  165. package/dist/dashboard/assets/ordinal-Cboi1Yqb.js +1 -0
  166. package/dist/dashboard/assets/pieDiagram-ADFJNKIX-BXrIkLM5.js +30 -0
  167. package/dist/dashboard/assets/quadrantDiagram-AYHSOK5B-6Ids5EIZ.js +7 -0
  168. package/dist/dashboard/assets/requirementDiagram-UZGBJVZJ-CDkzg6it.js +64 -0
  169. package/dist/dashboard/assets/sankeyDiagram-TZEHDZUN-B8IW83XN.js +10 -0
  170. package/dist/dashboard/assets/sequenceDiagram-WL72ISMW-TLaFO0qu.js +145 -0
  171. package/dist/dashboard/assets/stateDiagram-FKZM4ZOC-BTxdoKIX.js +1 -0
  172. package/dist/dashboard/assets/stateDiagram-v2-4FDKWEC3-DD-D-6rX.js +1 -0
  173. package/dist/dashboard/assets/timeline-definition-IT6M3QCI-CChAmzCr.js +61 -0
  174. package/dist/dashboard/assets/treemap-KMMF4GRG-D79S5bTA.js +128 -0
  175. package/dist/dashboard/assets/xychartDiagram-PRI3JC2R-BaeVzgs1.js +7 -0
  176. package/dist/dashboard/index.html +2 -2
  177. package/dist/routes/marketplace.d.ts.map +1 -1
  178. package/dist/routes/marketplace.js +179 -1
  179. package/dist/routes/marketplace.js.map +1 -1
  180. package/dist/routes/remove.js +4 -4
  181. package/dist/routes/remove.js.map +1 -1
  182. package/dist/routes/state.d.ts.map +1 -1
  183. package/dist/routes/state.js +97 -10
  184. package/dist/routes/state.js.map +1 -1
  185. package/package.json +2 -2
  186. package/dist/dashboard/assets/index-CAenUQES.css +0 -1
  187. package/dist/dashboard/assets/index-DDo3xcmE.js +0 -150
@@ -2,51 +2,9 @@ import { MARKETPLACE_SOURCES as MS } from "@mycelish/core";
2
2
  import * as fs from "node:fs/promises";
3
3
  import * as os from "node:os";
4
4
  import * as path from "node:path";
5
- // ============================================================================
6
- // npm download counts
7
- // ============================================================================
8
- export async function fetchNpmDownloads(names) {
9
- const result = {};
10
- if (names.length === 0)
11
- return result;
12
- const fetches = names.slice(0, 20).map(async (name) => {
13
- try {
14
- const res = await fetch(`https://api.npmjs.org/downloads/point/last-week/${encodeURIComponent(name)}`);
15
- if (res.ok) {
16
- const data = (await res.json());
17
- if (data.downloads)
18
- result[name] = data.downloads;
19
- }
20
- }
21
- catch {
22
- // Non-critical
23
- }
24
- });
25
- await Promise.allSettled(fetches);
26
- return result;
27
- }
28
- // ============================================================================
29
- // OpenSkills (npm registry)
30
- // ============================================================================
31
- export async function searchOpenSkills(query) {
32
- const res = await fetch(`https://registry.npmjs.org/-/v1/search?text=openskills+${encodeURIComponent(query)}&size=12`);
33
- if (!res.ok)
34
- throw new Error(`openskills search failed: ${res.statusText}`);
35
- const data = (await res.json());
36
- const names = data.objects.map(o => o.package.name);
37
- const downloads = await fetchNpmDownloads(names);
38
- const entries = data.objects.map((o) => ({
39
- name: o.package.name,
40
- description: o.package.description || "",
41
- author: o.package.author?.name,
42
- version: o.package.version,
43
- latestVersion: o.package.version,
44
- downloads: downloads[o.package.name],
45
- source: MS.OPENSKILLS,
46
- type: "skill",
47
- }));
48
- return { entries, total: entries.length, source: MS.OPENSKILLS };
49
- }
5
+ import { cachedFetch } from "./marketplace-cache.js";
6
+ import { computeContentHash } from "./content-hash.js";
7
+ import { MARKETPLACE_FETCH_LIMIT, TIMEOUT_GITHUB, TIMEOUT_UNGH, TIMEOUT_NPM, TIMEOUT_GLAMA, BATCH_NPM, BATCH_GITHUB, } from "./marketplace-constants.js";
50
8
  // ============================================================================
51
9
  // Claude Plugins (local installed_plugins.json v2)
52
10
  // ============================================================================
@@ -55,29 +13,19 @@ export async function listInstalledPlugins() {
55
13
  const filePath = path.join(os.homedir(), ".claude", "plugins", "installed_plugins.json");
56
14
  const raw = await fs.readFile(filePath, "utf-8");
57
15
  const data = JSON.parse(raw);
58
- if (!Array.isArray(data) && data.version === 2 && data.plugins) {
16
+ if (data.version === 2 && data.plugins) {
59
17
  return parseV2Plugins(data.plugins);
60
18
  }
61
- if (Array.isArray(data)) {
62
- return data.map((p) => ({
63
- name: p.name,
64
- description: p.description || "",
65
- version: p.version,
66
- author: p.author,
67
- installed: true,
68
- source: MS.CLAUDE_PLUGINS,
69
- type: "plugin",
70
- }));
71
- }
72
19
  return [];
73
20
  }
74
21
  catch (e) {
75
22
  if (e && typeof e === "object" && e.code !== "ENOENT") {
76
- console.warn("Failed to read installed plugins:", e);
23
+ // Non-critical warning skip logging to avoid noise
77
24
  }
78
25
  return [];
79
26
  }
80
27
  }
28
+ /** Pure parser — no filtering. Visibility policy is handled by getLivePluginState. */
81
29
  function parseV2Plugins(plugins) {
82
30
  const entries = [];
83
31
  for (const [key, installs] of Object.entries(plugins)) {
@@ -91,27 +39,102 @@ function parseV2Plugins(plugins) {
91
39
  name: pluginName,
92
40
  description: marketplace ? `From ${marketplace}` : "",
93
41
  version: latest.version,
94
- latestVersion: latest.version,
95
42
  installedVersion: latest.version,
96
43
  installed: true,
97
44
  updatedAt: latest.lastUpdated ? new Date(latest.lastUpdated).toISOString().slice(0, 10) : undefined,
98
45
  source: MS.CLAUDE_PLUGINS,
99
46
  type: "plugin",
47
+ category: marketplace,
100
48
  });
101
49
  }
102
50
  return entries;
103
51
  }
104
52
  export async function searchClaudePlugins(query) {
105
53
  const plugins = await listInstalledPlugins();
54
+ await enrichPluginsWithLatestVersions(plugins);
106
55
  const q = query.toLowerCase();
107
56
  const entries = plugins.filter((p) => p.name.toLowerCase().includes(q) || p.description.toLowerCase().includes(q));
108
57
  return { entries, total: entries.length, source: MS.CLAUDE_PLUGINS };
109
58
  }
59
+ /**
60
+ * Enrich installed plugins with latest versions from their marketplace repos.
61
+ * Reads known_marketplaces.json → fetches marketplace.json from GitHub → extracts latest versions.
62
+ */
63
+ export async function enrichPluginsWithLatestVersions(plugins) {
64
+ try {
65
+ const knownPath = path.join(os.homedir(), ".claude", "plugins", "known_marketplaces.json");
66
+ const raw = await fs.readFile(knownPath, "utf-8");
67
+ const known = JSON.parse(raw);
68
+ // Build a map: marketplace name → GitHub owner/repo
69
+ const repoMap = new Map();
70
+ for (const [name, info] of Object.entries(known)) {
71
+ if (info.source?.source === "github" && info.source.repo) {
72
+ const parts = info.source.repo.split("/");
73
+ if (parts.length === 2)
74
+ repoMap.set(name, { owner: parts[0], repo: parts[1] });
75
+ }
76
+ }
77
+ if (repoMap.size === 0)
78
+ return;
79
+ const marketplacePlugins = new Map();
80
+ const fetches = [...repoMap.entries()].map(async ([marketplace, { owner, repo }]) => {
81
+ try {
82
+ const data = await cachedFetch(`plugin-meta-${marketplace}`, async () => {
83
+ const headers = {};
84
+ const ghToken = process.env.GITHUB_TOKEN || process.env.GH_TOKEN;
85
+ if (ghToken)
86
+ headers.Authorization = `Bearer ${ghToken}`;
87
+ const res = await fetch(`https://raw.githubusercontent.com/${owner}/${repo}/main/.claude-plugin/marketplace.json`, { headers, signal: AbortSignal.timeout(TIMEOUT_GITHUB) });
88
+ if (!res.ok)
89
+ return { plugins: [] };
90
+ return (await res.json());
91
+ });
92
+ const meta = new Map();
93
+ for (const p of data.plugins ?? []) {
94
+ if (!p.name)
95
+ continue;
96
+ // Extract the actual plugin repo URL from the source field
97
+ let pluginUrl;
98
+ if (p.source?.url) {
99
+ pluginUrl = p.source.url.replace(/\.git$/, "");
100
+ }
101
+ meta.set(p.name, { version: p.version, url: pluginUrl });
102
+ }
103
+ marketplacePlugins.set(marketplace, meta);
104
+ }
105
+ catch {
106
+ // Non-critical
107
+ }
108
+ });
109
+ await Promise.allSettled(fetches);
110
+ // Enrich entries with latest versions and correct plugin URLs
111
+ for (const plugin of plugins) {
112
+ const mpName = plugin.category;
113
+ const mpMeta = mpName ? marketplacePlugins.get(mpName) : undefined;
114
+ const meta = mpMeta?.get(plugin.name)
115
+ ?? [...marketplacePlugins.values()].find(m => m.has(plugin.name))?.get(plugin.name);
116
+ if (meta?.version)
117
+ plugin.latestVersion = meta.version;
118
+ // Use the actual plugin repo URL, not the marketplace repo
119
+ if (!plugin.url && meta?.url) {
120
+ plugin.url = meta.url;
121
+ }
122
+ // Fallback: marketplace repo if no per-plugin URL
123
+ if (!plugin.url && mpName && repoMap.has(mpName)) {
124
+ const { owner, repo } = repoMap.get(mpName);
125
+ plugin.url = `https://github.com/${owner}/${repo}`;
126
+ }
127
+ }
128
+ }
129
+ catch {
130
+ // known_marketplaces.json missing or unreadable — skip
131
+ }
132
+ }
110
133
  const MCP_REGISTRY_URL = "https://registry.modelcontextprotocol.io";
111
134
  export async function fetchMcpServers(query) {
112
135
  const url = query
113
- ? `${MCP_REGISTRY_URL}/v0.1/servers?q=${encodeURIComponent(query)}&limit=20`
114
- : `${MCP_REGISTRY_URL}/v0.1/servers?limit=20`;
136
+ ? `${MCP_REGISTRY_URL}/v0.1/servers?search=${encodeURIComponent(query)}&limit=${MARKETPLACE_FETCH_LIMIT}`
137
+ : `${MCP_REGISTRY_URL}/v0.1/servers?limit=${MARKETPLACE_FETCH_LIMIT}`;
115
138
  const res = await fetch(url);
116
139
  if (!res.ok)
117
140
  throw new Error(`MCP Registry failed: ${res.statusText}`);
@@ -120,6 +143,8 @@ export async function fetchMcpServers(query) {
120
143
  }
121
144
  export function mcpServerToEntry(s) {
122
145
  const srv = s.server;
146
+ const url = srv.repository?.url || srv.websiteUrl || undefined;
147
+ const npmPkg = srv.packages?.find(p => p.registryType === "npm")?.identifier;
123
148
  return {
124
149
  name: srv.name,
125
150
  description: srv.description || "",
@@ -127,23 +152,69 @@ export function mcpServerToEntry(s) {
127
152
  latestVersion: srv.version,
128
153
  source: MS.MCP_REGISTRY,
129
154
  type: "mcp",
155
+ url,
156
+ npmPackage: npmPkg,
130
157
  };
131
158
  }
132
- export async function searchMcpRegistry(query) {
133
- const servers = await fetchMcpServers(query);
159
+ export async function searchMcpRegistry(query, options) {
160
+ const servers = query
161
+ ? await fetchMcpServers(query) // user search: live
162
+ : await cachedFetch("mcp-registry", () => fetchMcpServers(""), options); // browse: cached
134
163
  const entries = servers.map(mcpServerToEntry);
135
164
  return { entries, total: entries.length, source: MS.MCP_REGISTRY };
136
165
  }
166
+ const GLAMA_API = "https://glama.ai/api/mcp/v1/servers";
167
+ export async function fetchGlamaServers(query) {
168
+ const params = new URLSearchParams({ limit: String(MARKETPLACE_FETCH_LIMIT) });
169
+ if (query)
170
+ params.set("query", query);
171
+ const res = await fetch(`${GLAMA_API}?${params}`, { signal: AbortSignal.timeout(TIMEOUT_GLAMA) });
172
+ if (!res.ok)
173
+ throw new Error(`Glama API failed: ${res.statusText}`);
174
+ const data = (await res.json());
175
+ return data.servers || [];
176
+ }
177
+ export function glamaServerToEntry(s) {
178
+ return {
179
+ name: s.name,
180
+ description: s.description || "",
181
+ source: MS.GLAMA,
182
+ type: "mcp",
183
+ url: s.repository?.url || s.url || undefined,
184
+ };
185
+ }
186
+ export async function searchGlama(query, options) {
187
+ const servers = query
188
+ ? await fetchGlamaServers(query)
189
+ : await cachedFetch("glama", () => fetchGlamaServers(""), options);
190
+ const entries = servers.map(glamaServerToEntry);
191
+ return { entries, total: entries.length, source: MS.GLAMA };
192
+ }
193
+ // ============================================================================
194
+ // GitHub tree (uses cachedFetch for L1+L2 caching)
195
+ // ============================================================================
196
+ async function fetchGitHubTree(owner, repo, options) {
197
+ return cachedFetch(`github-${owner}-${repo}`, async () => {
198
+ const headers = { Accept: "application/vnd.github.v3+json" };
199
+ const ghToken = process.env.GITHUB_TOKEN || process.env.GH_TOKEN;
200
+ if (ghToken)
201
+ headers.Authorization = `Bearer ${ghToken}`;
202
+ const res = await fetch(`https://api.github.com/repos/${owner}/${repo}/git/trees/main?recursive=1`, { headers });
203
+ if (!res.ok) {
204
+ const hint = res.status === 403 ? " (rate limited — try again later or set GITHUB_TOKEN)" : "";
205
+ throw new Error(`GitHub API ${res.status} for ${owner}/${repo}${hint}`);
206
+ }
207
+ const body = (await res.json());
208
+ return body.tree;
209
+ }, options);
210
+ }
137
211
  // ============================================================================
138
212
  // Anthropic Skills (GitHub)
139
213
  // ============================================================================
140
- export async function fetchAnthropicSkillsList() {
141
- const res = await fetch("https://api.github.com/repos/anthropics/skills/git/trees/main?recursive=1", { headers: { Accept: "application/vnd.github.v3+json" } });
142
- if (!res.ok)
143
- return [];
144
- const data = (await res.json());
214
+ export async function fetchAnthropicSkillsList(options) {
215
+ const tree = await fetchGitHubTree("anthropics", "skills", options);
145
216
  const skills = [];
146
- for (const t of data.tree) {
217
+ for (const t of tree) {
147
218
  if (t.type === "blob" && t.path.endsWith("/SKILL.md") && t.path.startsWith("skills/")) {
148
219
  const parts = t.path.split("/");
149
220
  if (parts.length === 3)
@@ -152,8 +223,11 @@ export async function fetchAnthropicSkillsList() {
152
223
  }
153
224
  return skills;
154
225
  }
155
- export async function searchAnthropicSkills(query) {
156
- const allSkills = await fetchAnthropicSkillsList();
226
+ export async function searchAnthropicSkills(query, options) {
227
+ const [allSkills, stars] = await Promise.all([
228
+ fetchAnthropicSkillsList(options),
229
+ fetchGitHubRepoStars("anthropics", "skills", options),
230
+ ]);
157
231
  const q = query.toLowerCase();
158
232
  const filtered = q ? allSkills.filter(s => s.toLowerCase().includes(q)) : allSkills;
159
233
  const entries = filtered.map(name => ({
@@ -162,47 +236,67 @@ export async function searchAnthropicSkills(query) {
162
236
  author: "anthropics",
163
237
  source: MS.ANTHROPIC_SKILLS,
164
238
  type: "skill",
239
+ stars,
240
+ url: `https://github.com/anthropics/skills/tree/main/skills/${name}`,
165
241
  }));
166
242
  return { entries, total: entries.length, source: MS.ANTHROPIC_SKILLS };
167
243
  }
168
- export async function searchClawHub(query) {
169
- const res = await fetch(`https://clawhub.ai/api/v1/search?q=${encodeURIComponent(query)}&limit=12`, { headers: { Accept: "application/json" } });
170
- if (!res.ok)
171
- throw new Error(`ClawHub search failed: ${res.statusText}`);
172
- const data = (await res.json());
173
- const entries = (data.results || []).map((item) => ({
174
- name: item.slug,
175
- description: item.summary || item.displayName || "",
176
- version: item.version,
177
- latestVersion: item.version,
178
- updatedAt: item.updatedAt ? new Date(item.updatedAt).toISOString().slice(0, 10) : undefined,
179
- source: MS.CLAWHUB,
180
- type: "skill",
181
- }));
182
- return { entries, total: entries.length, source: MS.CLAWHUB };
183
- }
184
- // ============================================================================
185
- // SkillsMP (disabled — needs API key)
186
- // ============================================================================
187
- export async function searchSkillsmp(_query) {
188
- return { entries: [], total: 0, source: MS.SKILLSMP };
189
- }
190
244
  /**
191
245
  * Parse a github.com URL into owner/repo.
192
246
  * Returns null if not a GitHub URL.
193
247
  */
248
+ const GITHUB_NAME_RE = /^[a-zA-Z0-9._-]+$/;
194
249
  export function parseGitHubUrl(url) {
195
250
  const m = url.match(/github\.com\/([^/]+)\/([^/]+)/);
196
251
  if (!m)
197
252
  return null;
198
- return { owner: m[1], repo: m[2].replace(/\.git$/, "") };
253
+ const owner = m[1];
254
+ const repo = m[2].replace(/\.git$/, "");
255
+ if (!GITHUB_NAME_RE.test(owner) || !GITHUB_NAME_RE.test(repo))
256
+ return null;
257
+ return { owner, repo };
199
258
  }
200
259
  /**
201
260
  * Search a GitHub repo for skills, agents, and commands.
202
261
  * Uses the recursive tree endpoint (same pattern as fetchAnthropicSkillsList).
203
262
  */
204
- export async function searchGitHubRepo(owner, repo, query, sourceName) {
205
- const items = await fetchGitHubRepoItems(owner, repo);
263
+ async function fetchGitHubRepoStars(owner, repo, options) {
264
+ try {
265
+ const data = await cachedFetch(`github-stars-${owner}-${repo}`, async () => {
266
+ // Tier 1: ungh.cc — free, no auth, no rate limit
267
+ try {
268
+ const unghRes = await fetch(`https://ungh.cc/repos/${owner}/${repo}`, { signal: AbortSignal.timeout(TIMEOUT_UNGH) });
269
+ if (unghRes.ok) {
270
+ const json = (await unghRes.json());
271
+ if (json.repo?.stars != null)
272
+ return { stars: json.repo.stars };
273
+ }
274
+ }
275
+ catch {
276
+ // Fall through to GitHub API
277
+ }
278
+ // Tier 2/3: GitHub API (with token if available, unauth otherwise)
279
+ const headers = { Accept: "application/vnd.github.v3+json" };
280
+ const ghToken = process.env.GITHUB_TOKEN || process.env.GH_TOKEN;
281
+ if (ghToken)
282
+ headers.Authorization = `Bearer ${ghToken}`;
283
+ const res = await fetch(`https://api.github.com/repos/${owner}/${repo}`, { headers, signal: AbortSignal.timeout(TIMEOUT_GITHUB) });
284
+ if (!res.ok)
285
+ throw new Error(`GitHub API ${res.status} for ${owner}/${repo}`);
286
+ const json = (await res.json());
287
+ return { stars: json.stargazers_count };
288
+ }, options);
289
+ return data.stars;
290
+ }
291
+ catch {
292
+ return undefined;
293
+ }
294
+ }
295
+ export async function searchGitHubRepo(owner, repo, query, sourceName, options) {
296
+ const [items, stars] = await Promise.all([
297
+ fetchGitHubRepoItems(owner, repo, options),
298
+ fetchGitHubRepoStars(owner, repo, options),
299
+ ]);
206
300
  const q = query.toLowerCase();
207
301
  const filtered = q
208
302
  ? items.filter(i => i.name.toLowerCase().includes(q) || (i.description?.toLowerCase().includes(q) ?? false))
@@ -213,24 +307,37 @@ export async function searchGitHubRepo(owner, repo, query, sourceName) {
213
307
  author: owner,
214
308
  source: sourceName,
215
309
  type: item.type,
310
+ stars,
311
+ url: `https://github.com/${owner}/${repo}/tree/main/${item.path}`,
216
312
  }));
313
+ // If the repo has multiple item types, add a plugin entry representing the whole repo
314
+ const types = new Set(items.map(i => i.type));
315
+ if (types.size > 1 && (!q || repo.toLowerCase().includes(q) || owner.toLowerCase().includes(q))) {
316
+ const counts = [...types].map(t => `${items.filter(i => i.type === t).length} ${t}s`).join(", ");
317
+ entries.unshift({
318
+ name: repo,
319
+ description: `Plugin bundle: ${counts}`,
320
+ author: owner,
321
+ source: sourceName,
322
+ type: "plugin",
323
+ stars,
324
+ url: `https://github.com/${owner}/${repo}`,
325
+ });
326
+ }
217
327
  return { entries, total: entries.length, source: sourceName };
218
328
  }
219
329
  /**
220
330
  * Fetch all items (skills, agents, commands) from a GitHub repo tree.
221
331
  */
222
- export async function fetchGitHubRepoItems(owner, repo) {
223
- const res = await fetch(`https://api.github.com/repos/${owner}/${repo}/git/trees/main?recursive=1`, { headers: { Accept: "application/vnd.github.v3+json" } });
224
- if (!res.ok)
225
- return [];
226
- const data = (await res.json());
332
+ export async function fetchGitHubRepoItems(owner, repo, options) {
333
+ const tree = await fetchGitHubTree(owner, repo, options);
227
334
  const items = [];
228
335
  const dirMap = {
229
336
  skills: "skill",
230
337
  agents: "agent",
231
338
  commands: "command",
232
339
  };
233
- for (const t of data.tree) {
340
+ for (const t of tree) {
234
341
  if (t.type !== "blob")
235
342
  continue;
236
343
  for (const [dir, itemType] of Object.entries(dirMap)) {
@@ -284,17 +391,135 @@ export async function installGitHubRepoItem(owner, repo, entry) {
284
391
  await fs.mkdir(localDir, { recursive: true });
285
392
  const filePath = path.join(localDir, fileName);
286
393
  await fs.writeFile(filePath, content, "utf-8");
287
- return { success: true, path: filePath };
394
+ return { success: true, path: filePath, contentHash: computeContentHash(content) };
395
+ }
396
+ // ============================================================================
397
+ // npm Download Enrichment
398
+ // ============================================================================
399
+ /**
400
+ * Enrich marketplace entries with npm weekly download counts.
401
+ * Tries the entry name as an npm package name (works for most MCP servers).
402
+ * Uses cachedFetch to avoid redundant API calls.
403
+ */
404
+ export async function enrichWithNpmDownloads(entries) {
405
+ // Only enrich MCP-type entries (not plugins — plugin names don't match npm packages)
406
+ const candidates = entries.filter(e => e.downloads == null && e.type === "mcp");
407
+ if (candidates.length === 0)
408
+ return;
409
+ // Batch: max BATCH_NPM concurrent
410
+ const batch = candidates.slice(0, BATCH_NPM);
411
+ await Promise.allSettled(batch.map(async (entry) => {
412
+ try {
413
+ // Use the npm package name — for scoped names like @modelcontextprotocol/server-*
414
+ // the entry name is usually the npm package name for MCP entries
415
+ const pkgName = entry.name;
416
+ const data = await cachedFetch(`npm-dl-${pkgName}`, async () => {
417
+ // First verify the package exists and is MCP-related (check keywords)
418
+ const metaRes = await fetch(`https://registry.npmjs.org/${encodeURIComponent(pkgName)}`, { signal: AbortSignal.timeout(TIMEOUT_NPM), headers: { Accept: "application/vnd.npm.install-v1+json" } });
419
+ if (!metaRes.ok)
420
+ return { downloads: undefined };
421
+ const meta = (await metaRes.json());
422
+ // Validate it's actually an MCP package (description or keywords mention "mcp")
423
+ const desc = (meta.description || "").toLowerCase();
424
+ const kw = (meta.keywords || []).join(" ").toLowerCase();
425
+ if (!desc.includes("mcp") && !kw.includes("mcp") && !desc.includes("model context protocol")) {
426
+ return { downloads: undefined };
427
+ }
428
+ const dlRes = await fetch(`https://api.npmjs.org/downloads/point/last-week/${encodeURIComponent(pkgName)}`, { signal: AbortSignal.timeout(TIMEOUT_NPM) });
429
+ if (!dlRes.ok)
430
+ return { downloads: undefined };
431
+ const json = (await dlRes.json());
432
+ return { downloads: json.downloads };
433
+ });
434
+ if (data.downloads != null && data.downloads > 0) {
435
+ entry.downloads = data.downloads;
436
+ }
437
+ }
438
+ catch {
439
+ // Non-critical
440
+ }
441
+ }));
442
+ }
443
+ // ============================================================================
444
+ // GitHub Stars Enrichment (for entries with GitHub URLs)
445
+ // ============================================================================
446
+ /**
447
+ * Resolve a GitHub URL from an npm package name via the npm registry.
448
+ * Returns a github.com URL or undefined.
449
+ */
450
+ async function resolveGitHubUrlFromNpm(pkg) {
451
+ try {
452
+ const data = await cachedFetch(`npm-repo-${pkg}`, async () => {
453
+ const res = await fetch(`https://registry.npmjs.org/${encodeURIComponent(pkg)}`, { signal: AbortSignal.timeout(TIMEOUT_NPM) });
454
+ if (!res.ok)
455
+ throw new Error(`npm ${res.status}`);
456
+ const json = (await res.json());
457
+ const repoUrl = typeof json.repository === "string" ? json.repository : json.repository?.url;
458
+ return { repoUrl: repoUrl || null };
459
+ });
460
+ if (data.repoUrl && data.repoUrl.includes("github.com")) {
461
+ // Normalize git+https://github.com/foo/bar.git → https://github.com/foo/bar
462
+ return data.repoUrl.replace(/^git\+/, "").replace(/\.git$/, "");
463
+ }
464
+ return undefined;
465
+ }
466
+ catch {
467
+ return undefined;
468
+ }
469
+ }
470
+ /**
471
+ * Enrich marketplace entries with GitHub star counts.
472
+ * For entries without a GitHub URL but with an npm package, resolves the repo via npm first.
473
+ * Uses ungh.cc → GitHub API (token) → GitHub API (unauth) priority chain.
474
+ */
475
+ export async function enrichWithGitHubStars(entries) {
476
+ // Phase 1: resolve GitHub URLs from npm packages for entries missing a GitHub URL
477
+ const needsNpmResolve = entries.filter(e => e.stars == null && e.npmPackage && (!e.url || !e.url.includes("github.com")));
478
+ if (needsNpmResolve.length > 0) {
479
+ await Promise.allSettled(needsNpmResolve.map(async (entry) => {
480
+ const ghUrl = await resolveGitHubUrlFromNpm(entry.npmPackage);
481
+ if (ghUrl)
482
+ entry.url = ghUrl;
483
+ }));
484
+ }
485
+ // Phase 2: enrich with stars
486
+ const needsStars = entries.filter(e => e.url && e.stars == null && e.url.includes("github.com"));
487
+ if (needsStars.length === 0)
488
+ return;
489
+ // Extract owner/repo from URL, dedupe repos
490
+ const repoMap = new Map();
491
+ for (const entry of needsStars) {
492
+ const parsed = parseGitHubUrl(entry.url);
493
+ if (!parsed)
494
+ continue;
495
+ const key = `${parsed.owner}/${parsed.repo}`;
496
+ if (!repoMap.has(key))
497
+ repoMap.set(key, []);
498
+ repoMap.get(key).push(entry);
499
+ }
500
+ // Fetch stars in parallel (max BATCH_GITHUB repos per batch to be polite)
501
+ const repos = [...repoMap.entries()].slice(0, BATCH_GITHUB);
502
+ await Promise.allSettled(repos.map(async ([repo, repoEntries]) => {
503
+ try {
504
+ const [owner, repoName] = repo.split("/");
505
+ const stars = await fetchGitHubRepoStars(owner, repoName);
506
+ if (stars != null) {
507
+ for (const entry of repoEntries)
508
+ entry.stars = stars;
509
+ }
510
+ }
511
+ catch {
512
+ // Non-critical — skip enrichment for failed repos
513
+ }
514
+ }));
288
515
  }
289
516
  // ============================================================================
290
517
  // Searcher map
291
518
  // ============================================================================
292
519
  export const KNOWN_SEARCHERS = {
293
- [MS.SKILLSMP]: searchSkillsmp,
294
- [MS.OPENSKILLS]: searchOpenSkills,
295
520
  [MS.CLAUDE_PLUGINS]: searchClaudePlugins,
296
521
  [MS.MCP_REGISTRY]: searchMcpRegistry,
522
+ [MS.GLAMA]: searchGlama,
297
523
  [MS.ANTHROPIC_SKILLS]: searchAnthropicSkills,
298
- [MS.CLAWHUB]: searchClawHub,
299
524
  };
300
525
  //# sourceMappingURL=marketplace-sources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"marketplace-sources.js","sourceRoot":"","sources":["../../src/core/marketplace-sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"marketplace-sources.js","sourceRoot":"","sources":["../../src/core/marketplace-sources.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,IAAI,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,WAAW,EAAqB,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,aAAa,EACb,SAAS,EACT,YAAY,GACb,MAAM,4BAA4B,CAAC;AAEpC,+EAA+E;AAC/E,mDAAmD;AACnD,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;QACzF,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAS1B,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAK,CAAuB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7E,qDAAqD;QACvD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,SAAS,cAAc,CACrB,OAAmI;IAEnI,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACzD,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;YACrD,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,gBAAgB,EAAE,MAAM,CAAC,OAAO;YAChC,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YACnG,MAAM,EAAE,EAAE,CAAC,cAAc;YACzB,IAAI,EAAE,QAAiB;YACvB,QAAQ,EAAE,WAAW;SACtB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAa;IACrD,MAAM,OAAO,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC7C,MAAM,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CACnF,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,OAA2B;IAC/E,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,yBAAyB,CAAC,CAAC;QAC3F,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAE1B,CAAC;QAEH,oDAAoD;QACpD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2C,CAAC;QACnE,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACzD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAK/B,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAmC,CAAC;QACtE,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;YAClF,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,eAAe,WAAW,EAAE,EAAE,KAAK,IAAI,EAAE;oBACtE,MAAM,OAAO,GAA2B,EAAE,CAAC;oBAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;oBACjE,IAAI,OAAO;wBAAE,OAAO,CAAC,aAAa,GAAG,UAAU,OAAO,EAAE,CAAC;oBACzD,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,qCAAqC,KAAK,IAAI,IAAI,uCAAuC,EACzF,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CACzD,CAAC;oBACF,IAAI,CAAC,GAAG,CAAC,EAAE;wBAAE,OAAO,EAAE,OAAO,EAAE,EAA0E,EAAE,CAAC;oBAC5G,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwG,CAAC;gBACnI,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,GAAG,EAAsB,CAAC;gBAC3C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;oBACnC,IAAI,CAAC,CAAC,CAAC,IAAI;wBAAE,SAAS;oBACtB,2DAA2D;oBAC3D,IAAI,SAA6B,CAAC;oBAClC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;wBAClB,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBACjD,CAAC;oBACD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC3D,CAAC;gBACD,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;YAAC,MAAM,CAAC;gBACP,eAAe;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAElC,8DAA8D;QAC9D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACnE,MAAM,IAAI,GAAG,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;mBAChC,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtF,IAAI,IAAI,EAAE,OAAO;gBAAE,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;YACvD,2DAA2D;YAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;gBAC7B,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACxB,CAAC;YACD,kDAAkD;YAClD,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;gBAC7C,MAAM,CAAC,GAAG,GAAG,sBAAsB,KAAK,IAAI,IAAI,EAAE,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;AACH,CAAC;AAiBD,MAAM,gBAAgB,GAAG,0CAA0C,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAa;IACjD,MAAM,GAAG,GAAG,KAAK;QACf,CAAC,CAAC,GAAG,gBAAgB,wBAAwB,kBAAkB,CAAC,KAAK,CAAC,UAAU,uBAAuB,EAAE;QACzG,CAAC,CAAC,GAAG,gBAAgB,uBAAuB,uBAAuB,EAAE,CAAC;IACxE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqC,CAAC;IACpE,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAoB;IACnD,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACrB,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC;IAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,KAAK,CAAC,EAAE,UAAU,CAAC;IAC7E,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;QAClC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,aAAa,EAAE,GAAG,CAAC,OAAO;QAC1B,MAAM,EAAE,EAAE,CAAC,YAAY;QACvB,IAAI,EAAE,KAAc;QACpB,GAAG;QACH,UAAU,EAAE,MAAM;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAa,EAAE,OAAsB;IAC3E,MAAM,OAAO,GAAG,KAAK;QACnB,CAAC,CAAC,MAAM,eAAe,CAAC,KAAK,CAAC,CAAE,oBAAoB;QACpD,CAAC,CAAC,MAAM,WAAW,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAE,iBAAiB;IAC7F,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC;AACrE,CAAC;AAkBD,MAAM,SAAS,GAAG,qCAAqC,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAa;IACnD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC/E,IAAI,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,IAAI,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAClG,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA+B,CAAC;IAC9D,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAc;IAC/C,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;QAChC,MAAM,EAAE,EAAE,CAAC,KAAK;QAChB,IAAI,EAAE,KAAc;QACpB,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,SAAS;KAC7C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,OAAsB;IACrE,MAAM,OAAO,GAAG,KAAK;QACnB,CAAC,CAAC,MAAM,iBAAiB,CAAC,KAAK,CAAC;QAChC,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;AAC9D,CAAC;AAED,+EAA+E;AAC/E,mDAAmD;AACnD,+EAA+E;AAE/E,KAAK,UAAU,eAAe,CAAC,KAAa,EAAE,IAAY,EAAE,OAAsB;IAChF,OAAO,WAAW,CAAC,UAAU,KAAK,IAAI,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAA2B,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;QACrF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QACjE,IAAI,OAAO;YAAE,OAAO,CAAC,aAAa,GAAG,UAAU,OAAO,EAAE,CAAC;QAEzD,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,gCAAgC,KAAK,IAAI,IAAI,6BAA6B,EAC1E,EAAE,OAAO,EAAE,CACZ,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/F,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,MAAM,QAAQ,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA+C,CAAC;QAC9E,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC,EAAE,OAAO,CAAC,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAAsB;IACnE,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACtF,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAAa,EAAE,OAAsB;IAC/E,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3C,wBAAwB,CAAC,OAAO,CAAC;QACjC,oBAAoB,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC;KACtD,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,MAAM,OAAO,GAAuB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI;QACJ,WAAW,EAAE,6BAA6B,IAAI,EAAE;QAChD,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,EAAE,CAAC,gBAAgB;QAC3B,IAAI,EAAE,OAAgB;QACtB,KAAK;QACL,GAAG,EAAE,yDAAyD,IAAI,EAAE;KACrE,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC;AACzE,CAAC;AAaD;;;GAGG;AACH,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAE3C,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,oBAAoB,CAAC,KAAa,EAAE,IAAY,EAAE,OAAsB;IACrF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,gBAAgB,KAAK,IAAI,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE;YACzE,iDAAiD;YACjD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,yBAAyB,KAAK,IAAI,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACrH,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAkC,CAAC;oBACrE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI;wBAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClE,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;YAED,mEAAmE;YACnE,MAAM,OAAO,GAA2B,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;YACrF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YACjE,IAAI,OAAO;gBAAE,OAAO,CAAC,aAAa,GAAG,UAAU,OAAO,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gCAAgC,KAAK,IAAI,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACnI,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,MAAM,QAAQ,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;YAC9E,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAkC,CAAC;YACjE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,CAAC,EAAE,OAAO,CAAC,CAAC;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,IAAY,EACZ,KAAa,EACb,UAAkB,EAClB,OAAsB;IAEtB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvC,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC;QAC1C,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC;KAC3C,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,CAAC;QAChB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;QAC5G,CAAC,CAAC,KAAK,CAAC;IACV,MAAM,OAAO,GAAuB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG,IAAI,CAAC,IAAI,SAAS,KAAK,IAAI,IAAI,EAAE;QACrE,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK;QACL,GAAG,EAAE,sBAAsB,KAAK,IAAI,IAAI,cAAc,IAAI,CAAC,IAAI,EAAE;KAClE,CAAC,CAAC,CAAC;IAEJ,sFAAsF;IACtF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjG,OAAO,CAAC,OAAO,CAAC;YACd,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,kBAAkB,MAAM,EAAE;YACvC,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,QAAQ;YACd,KAAK;YACL,GAAG,EAAE,sBAAsB,KAAK,IAAI,IAAI,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAa,EAAE,IAAY,EAAE,OAAsB;IAC5F,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAkD;QAC5D,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,SAAS;KACpB,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAChC,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3D,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChC,6DAA6D;gBAC7D,IAAI,IAAwB,CAAC;gBAC7B,IAAI,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;oBAC1E,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;qBAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtD,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAI,IAAI,EAAE,CAAC;oBACT,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAAa,EACb,IAAY,EACZ,KAAuB;IAEvB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAqC,CAAC;IAC7D,IAAI,UAAkB,CAAC;IACvB,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IACrB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEjE,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,UAAU,GAAG,UAAU,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QACjE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,QAAQ,GAAG,UAAU,CAAC;IACxB,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,UAAU,GAAG,UAAU,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3D,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC1C,QAAQ,GAAG,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,YAAY,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7D,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC5C,QAAQ,GAAG,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAG,qCAAqC,KAAK,IAAI,IAAI,SAAS,UAAU,EAAE,CAAC;IACvF,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAA2B;IACtE,qFAAqF;IACrF,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IAChF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEpC,kCAAkC;IAClC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,OAAO,CAAC,UAAU,CACtB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,kFAAkF;YAClF,iEAAiE;YACjE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,OAAO,EAAE,EAAE,KAAK,IAAI,EAAE;gBAC7D,sEAAsE;gBACtE,MAAM,OAAO,GAAG,MAAM,KAAK,CACzB,8BAA8B,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAC3D,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,qCAAqC,EAAE,EAAE,CACzG,CAAC;gBACF,IAAI,CAAC,OAAO,CAAC,EAAE;oBAAE,OAAO,EAAE,SAAS,EAAE,SAA+B,EAAE,CAAC;gBACvE,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAkD,CAAC;gBACrF,gFAAgF;gBAChF,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBACpD,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;gBACzD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;oBAC7F,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;gBAClC,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,KAAK,CACvB,mDAAmD,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAChF,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAC7C,CAAC;gBACF,IAAI,CAAC,KAAK,CAAC,EAAE;oBAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;gBAC/C,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAA2B,CAAC;gBAC5D,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,CAAC,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACnC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,yDAAyD;AACzD,+EAA+E;AAE/E;;;GAGG;AACH,KAAK,UAAU,uBAAuB,CAAC,GAAW;IAChD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,8BAA8B,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC/H,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA+C,CAAC;YAC9E,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;YAC7F,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACxD,4EAA4E;YAC5E,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAA2B;IACrE,kFAAkF;IAClF,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1H,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC3D,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,KAAK,CAAC,UAAW,CAAC,CAAC;YAC/D,IAAI,KAAK;gBAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;QAC/B,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,6BAA6B;IAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IACjG,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEpC,4CAA4C;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAA8B,CAAC;IACtD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,GAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,0EAA0E;IAC1E,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC5D,MAAM,OAAO,CAAC,UAAU,CACtB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1D,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,KAAK,MAAM,KAAK,IAAI,WAAW;oBAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACvD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAGxB;IACF,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,mBAAmB;IACxC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,iBAAiB;IACpC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW;IACvB,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,qBAAqB;CAC7C,CAAC"}