skool-cli 1.0.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 (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +179 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +33 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/create-folder.d.ts +3 -0
  8. package/dist/commands/create-folder.d.ts.map +1 -0
  9. package/dist/commands/create-folder.js +24 -0
  10. package/dist/commands/create-folder.js.map +1 -0
  11. package/dist/commands/create-lesson.d.ts +3 -0
  12. package/dist/commands/create-lesson.d.ts.map +1 -0
  13. package/dist/commands/create-lesson.js +35 -0
  14. package/dist/commands/create-lesson.js.map +1 -0
  15. package/dist/commands/create-post.d.ts +3 -0
  16. package/dist/commands/create-post.d.ts.map +1 -0
  17. package/dist/commands/create-post.js +36 -0
  18. package/dist/commands/create-post.js.map +1 -0
  19. package/dist/commands/debug-api.d.ts +3 -0
  20. package/dist/commands/debug-api.d.ts.map +1 -0
  21. package/dist/commands/debug-api.js +112 -0
  22. package/dist/commands/debug-api.js.map +1 -0
  23. package/dist/commands/debug-manual.d.ts +3 -0
  24. package/dist/commands/debug-manual.d.ts.map +1 -0
  25. package/dist/commands/debug-manual.js +66 -0
  26. package/dist/commands/debug-manual.js.map +1 -0
  27. package/dist/commands/debug.d.ts +3 -0
  28. package/dist/commands/debug.d.ts.map +1 -0
  29. package/dist/commands/debug.js +114 -0
  30. package/dist/commands/debug.js.map +1 -0
  31. package/dist/commands/delete-lesson.d.ts +3 -0
  32. package/dist/commands/delete-lesson.d.ts.map +1 -0
  33. package/dist/commands/delete-lesson.js +17 -0
  34. package/dist/commands/delete-lesson.js.map +1 -0
  35. package/dist/commands/get-categories.d.ts +3 -0
  36. package/dist/commands/get-categories.d.ts.map +1 -0
  37. package/dist/commands/get-categories.js +34 -0
  38. package/dist/commands/get-categories.js.map +1 -0
  39. package/dist/commands/get-members.d.ts +3 -0
  40. package/dist/commands/get-members.d.ts.map +1 -0
  41. package/dist/commands/get-members.js +35 -0
  42. package/dist/commands/get-members.js.map +1 -0
  43. package/dist/commands/get-posts.d.ts +3 -0
  44. package/dist/commands/get-posts.d.ts.map +1 -0
  45. package/dist/commands/get-posts.js +41 -0
  46. package/dist/commands/get-posts.js.map +1 -0
  47. package/dist/commands/list-lessons.d.ts +3 -0
  48. package/dist/commands/list-lessons.d.ts.map +1 -0
  49. package/dist/commands/list-lessons.js +45 -0
  50. package/dist/commands/list-lessons.js.map +1 -0
  51. package/dist/commands/login.d.ts +3 -0
  52. package/dist/commands/login.d.ts.map +1 -0
  53. package/dist/commands/login.js +30 -0
  54. package/dist/commands/login.js.map +1 -0
  55. package/dist/commands/test-api.d.ts +3 -0
  56. package/dist/commands/test-api.d.ts.map +1 -0
  57. package/dist/commands/test-api.js +143 -0
  58. package/dist/commands/test-api.js.map +1 -0
  59. package/dist/commands/whoami.d.ts +3 -0
  60. package/dist/commands/whoami.d.ts.map +1 -0
  61. package/dist/commands/whoami.js +17 -0
  62. package/dist/commands/whoami.js.map +1 -0
  63. package/dist/core/browser-manager.d.ts +25 -0
  64. package/dist/core/browser-manager.d.ts.map +1 -0
  65. package/dist/core/browser-manager.js +104 -0
  66. package/dist/core/browser-manager.js.map +1 -0
  67. package/dist/core/config.d.ts +15 -0
  68. package/dist/core/config.d.ts.map +1 -0
  69. package/dist/core/config.js +17 -0
  70. package/dist/core/config.js.map +1 -0
  71. package/dist/core/html-generator.d.ts +15 -0
  72. package/dist/core/html-generator.d.ts.map +1 -0
  73. package/dist/core/html-generator.js +254 -0
  74. package/dist/core/html-generator.js.map +1 -0
  75. package/dist/core/page-ops.d.ts +69 -0
  76. package/dist/core/page-ops.d.ts.map +1 -0
  77. package/dist/core/page-ops.js +511 -0
  78. package/dist/core/page-ops.js.map +1 -0
  79. package/dist/core/skool-api.d.ts +74 -0
  80. package/dist/core/skool-api.d.ts.map +1 -0
  81. package/dist/core/skool-api.js +389 -0
  82. package/dist/core/skool-api.js.map +1 -0
  83. package/dist/core/skool-client.d.ts +63 -0
  84. package/dist/core/skool-client.d.ts.map +1 -0
  85. package/dist/core/skool-client.js +501 -0
  86. package/dist/core/skool-client.js.map +1 -0
  87. package/dist/core/types.d.ts +58 -0
  88. package/dist/core/types.d.ts.map +1 -0
  89. package/dist/core/types.js +2 -0
  90. package/dist/core/types.js.map +1 -0
  91. package/package.json +51 -0
@@ -0,0 +1,389 @@
1
+ /**
2
+ * Direct HTTP API client for Skool's internal API (api2.skool.com).
3
+ * Discovered via network interception.
4
+ *
5
+ * Uses auth cookies from the browser session for authentication.
6
+ */
7
+ const API_BASE = "https://api2.skool.com";
8
+ /**
9
+ * Convert HTML to Skool's TipTap JSON desc format.
10
+ * Skool stores content as "[v2]" + JSON array of TipTap nodes.
11
+ *
12
+ * Supported: paragraphs, headings (h1-h4), bullet lists, ordered lists,
13
+ * bold, italic, code, code blocks, links, horizontal rules.
14
+ */
15
+ function htmlToSkoolDesc(html) {
16
+ const nodes = [];
17
+ // Simple HTML parser — convert HTML tags to TipTap JSON nodes
18
+ // Split by block-level tags
19
+ const blockRegex = /<(h[1-4]|p|ul|ol|pre|hr|blockquote)[^>]*>([\s\S]*?)<\/\1>|<hr\s*\/?>/gi;
20
+ let match;
21
+ let lastIndex = 0;
22
+ while ((match = blockRegex.exec(html)) !== null) {
23
+ // Check for text between blocks
24
+ const between = html.slice(lastIndex, match.index).trim();
25
+ if (between) {
26
+ nodes.push({ type: "paragraph", content: parseInline(between) });
27
+ }
28
+ lastIndex = match.index + match[0].length;
29
+ const tag = (match[1] || "").toLowerCase();
30
+ const inner = match[2] || "";
31
+ if (tag.startsWith("h")) {
32
+ const level = parseInt(tag[1]);
33
+ nodes.push({
34
+ type: "heading",
35
+ attrs: { level },
36
+ content: parseInline(stripTags(inner)),
37
+ });
38
+ }
39
+ else if (tag === "p") {
40
+ nodes.push({ type: "paragraph", content: parseInline(inner) });
41
+ }
42
+ else if (tag === "ul") {
43
+ nodes.push({ type: "bulletList", content: parseListItems(inner) });
44
+ }
45
+ else if (tag === "ol") {
46
+ nodes.push({ type: "orderedList", content: parseListItems(inner) });
47
+ }
48
+ else if (tag === "pre") {
49
+ const code = stripTags(inner).replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&");
50
+ nodes.push({
51
+ type: "codeBlock",
52
+ content: [{ type: "text", text: code }],
53
+ });
54
+ }
55
+ else if (tag === "blockquote") {
56
+ nodes.push({
57
+ type: "blockquote",
58
+ content: [{ type: "paragraph", content: parseInline(stripTags(inner)) }],
59
+ });
60
+ }
61
+ else if (match[0].startsWith("<hr")) {
62
+ nodes.push({ type: "horizontalRule" });
63
+ }
64
+ }
65
+ // Remaining text after last block
66
+ const remaining = html.slice(lastIndex).trim();
67
+ if (remaining) {
68
+ nodes.push({ type: "paragraph", content: parseInline(remaining) });
69
+ }
70
+ // If no blocks were found, treat the whole thing as a paragraph
71
+ if (nodes.length === 0 && html.trim()) {
72
+ nodes.push({ type: "paragraph", content: parseInline(html) });
73
+ }
74
+ return "[v2]" + JSON.stringify(nodes);
75
+ }
76
+ /** Parse inline HTML (bold, italic, code, links) into TipTap text nodes with marks */
77
+ function parseInline(html) {
78
+ const nodes = [];
79
+ // Regex to find inline formatting tags
80
+ const inlineRegex = /<(strong|b|em|i|code|s|a)([^>]*)>([\s\S]*?)<\/\1>|([^<]+)/gi;
81
+ let match;
82
+ while ((match = inlineRegex.exec(html)) !== null) {
83
+ if (match[4]) {
84
+ // Plain text (no tag) — preserve spaces for inline continuity
85
+ const text = decodeEntities(match[4]);
86
+ if (text)
87
+ nodes.push({ type: "text", text });
88
+ }
89
+ else {
90
+ const tag = match[1].toLowerCase();
91
+ const attrs = match[2] || "";
92
+ const inner = decodeEntities(stripTags(match[3]));
93
+ if (!inner.trim())
94
+ continue;
95
+ const marks = [];
96
+ if (tag === "strong" || tag === "b")
97
+ marks.push({ type: "bold" });
98
+ if (tag === "em" || tag === "i")
99
+ marks.push({ type: "italic" });
100
+ if (tag === "code")
101
+ marks.push({ type: "code" });
102
+ if (tag === "s")
103
+ marks.push({ type: "strike" });
104
+ if (tag === "a") {
105
+ const hrefMatch = attrs.match(/href="([^"]+)"/);
106
+ if (hrefMatch) {
107
+ marks.push({ type: "link", attrs: { href: hrefMatch[1], target: "_blank" } });
108
+ }
109
+ }
110
+ if (marks.length > 0) {
111
+ nodes.push({ type: "text", text: inner, marks });
112
+ }
113
+ else {
114
+ nodes.push({ type: "text", text: inner });
115
+ }
116
+ }
117
+ }
118
+ if (nodes.length === 0) {
119
+ const text = decodeEntities(stripTags(html).trim());
120
+ if (text)
121
+ return [{ type: "text", text }];
122
+ return [{ type: "text", text: " " }];
123
+ }
124
+ return nodes;
125
+ }
126
+ /** Decode HTML entities */
127
+ function decodeEntities(text) {
128
+ return text
129
+ .replace(/&lt;/g, "<")
130
+ .replace(/&gt;/g, ">")
131
+ .replace(/&amp;/g, "&")
132
+ .replace(/&quot;/g, '"')
133
+ .replace(/&#39;/g, "'");
134
+ }
135
+ /** Parse <li> items from a list */
136
+ function parseListItems(html) {
137
+ const items = [];
138
+ const liRegex = /<li[^>]*>([\s\S]*?)<\/li>/gi;
139
+ let liMatch;
140
+ while ((liMatch = liRegex.exec(html)) !== null) {
141
+ items.push({
142
+ type: "listItem",
143
+ content: [
144
+ { type: "paragraph", content: parseInline(liMatch[1]) },
145
+ ],
146
+ });
147
+ }
148
+ return items;
149
+ }
150
+ /** Strip HTML tags */
151
+ function stripTags(html) {
152
+ return html.replace(/<[^>]+>/g, "");
153
+ }
154
+ export class SkoolApi {
155
+ browser;
156
+ constructor(browser) {
157
+ this.browser = browser;
158
+ }
159
+ /** Get auth cookies from the browser session */
160
+ async getCookies() {
161
+ const page = await this.browser.getPage();
162
+ const context = page.context();
163
+ const cookies = await context.cookies();
164
+ return cookies.map((c) => `${c.name}=${c.value}`).join("; ");
165
+ }
166
+ /** Make an authenticated API request */
167
+ async request(method, path, body) {
168
+ const cookies = await this.getCookies();
169
+ const url = `${API_BASE}${path}`;
170
+ const response = await fetch(url, {
171
+ method,
172
+ headers: {
173
+ Cookie: cookies,
174
+ "Content-Type": "application/json",
175
+ Accept: "application/json",
176
+ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
177
+ Origin: "https://www.skool.com",
178
+ Referer: "https://www.skool.com/",
179
+ },
180
+ body: body ? JSON.stringify(body) : undefined,
181
+ });
182
+ const text = await response.text();
183
+ let data;
184
+ try {
185
+ data = JSON.parse(text);
186
+ }
187
+ catch {
188
+ data = { error: text };
189
+ }
190
+ return { status: response.status, data };
191
+ }
192
+ /**
193
+ * Create a new page (lesson) in a course.
194
+ *
195
+ * @param groupId - Group ID (from the classroom URL or course data)
196
+ * @param userId - User ID (the logged-in user)
197
+ * @param parentId - Parent folder/module ID
198
+ * @param rootId - Root course ID
199
+ * @param title - Page title
200
+ * @param content - HTML content for the page body
201
+ */
202
+ async createPage(options) {
203
+ const { groupId, userId, parentId, rootId, title, content } = options;
204
+ // Step 1: Create the page
205
+ const createResult = await this.request("POST", "/courses", {
206
+ group_id: groupId,
207
+ user_id: userId,
208
+ parent_id: parentId,
209
+ root_id: rootId,
210
+ unit_type: "module",
211
+ state: 2,
212
+ metadata: {
213
+ title,
214
+ resources: "[]",
215
+ },
216
+ });
217
+ if (createResult.status !== 200) {
218
+ return {
219
+ success: false,
220
+ pageId: "",
221
+ message: `Create failed with status ${createResult.status}: ${JSON.stringify(createResult.data)}`,
222
+ };
223
+ }
224
+ const pageId = createResult.data.id;
225
+ // Step 2: If content provided, update the page with content
226
+ // Skool uses TipTap JSON format with [v2] prefix for the desc field
227
+ if (content) {
228
+ const desc = htmlToSkoolDesc(content);
229
+ const updateResult = await this.request("PUT", `/courses/${pageId}`, {
230
+ title,
231
+ desc,
232
+ transcript: null,
233
+ video_id: "",
234
+ });
235
+ if (updateResult.status !== 200) {
236
+ return {
237
+ success: true,
238
+ pageId,
239
+ message: `Page created but content update failed (${updateResult.status}): ${JSON.stringify(updateResult.data)}`,
240
+ };
241
+ }
242
+ }
243
+ return {
244
+ success: true,
245
+ pageId,
246
+ message: `Page "${title}" created successfully. ID: ${pageId}`,
247
+ };
248
+ }
249
+ /**
250
+ * List courses and their modules for a group.
251
+ * This gives us the real root_id and parent_id (folder IDs) needed for API calls.
252
+ */
253
+ async listCourses(groupId) {
254
+ const result = await this.request("GET", `/courses?group_id=${groupId}`);
255
+ if (result.status === 200 && Array.isArray(result.data)) {
256
+ return result.data;
257
+ }
258
+ // Maybe the response is wrapped
259
+ if (result.data.courses && Array.isArray(result.data.courses)) {
260
+ return result.data.courses;
261
+ }
262
+ // Try with the data directly
263
+ return [result.data];
264
+ }
265
+ /**
266
+ * Create a folder (module) in a course.
267
+ */
268
+ async createFolder(options) {
269
+ const result = await this.request("POST", "/courses", {
270
+ group_id: options.groupId,
271
+ parent_id: options.parentId,
272
+ root_id: options.rootId,
273
+ unit_type: "set",
274
+ state: 2,
275
+ metadata: { title: options.title },
276
+ });
277
+ if (result.status !== 200) {
278
+ return {
279
+ success: false,
280
+ folderId: "",
281
+ message: `Create folder failed (${result.status}): ${JSON.stringify(result.data)}`,
282
+ };
283
+ }
284
+ return {
285
+ success: true,
286
+ folderId: result.data.id,
287
+ message: `Folder "${options.title}" created. ID: ${result.data.id}`,
288
+ };
289
+ }
290
+ /**
291
+ * List all items (folders + pages) in a course.
292
+ */
293
+ async listCourseItems(groupId, rootId) {
294
+ // Try different endpoint patterns
295
+ for (const path of [
296
+ `/courses?group_id=${groupId}&root_id=${rootId}`,
297
+ `/courses?group_id=${groupId}`,
298
+ `/courses/${rootId}/children`,
299
+ `/courses/${rootId}`,
300
+ ]) {
301
+ const result = await this.request("GET", path);
302
+ if (result.status === 200) {
303
+ if (Array.isArray(result.data))
304
+ return result.data;
305
+ // Single course with children
306
+ if (result.data.children && Array.isArray(result.data.children))
307
+ return result.data.children;
308
+ if (result.data.items && Array.isArray(result.data.items))
309
+ return result.data.items;
310
+ // Single item response - could be the course itself
311
+ if (result.data.id)
312
+ return [result.data];
313
+ }
314
+ }
315
+ return [];
316
+ }
317
+ /**
318
+ * Delete a page by ID.
319
+ */
320
+ async deletePage(pageId) {
321
+ const result = await this.request("DELETE", `/courses/${pageId}`);
322
+ return result.status === 200 || result.status === 204;
323
+ }
324
+ /**
325
+ * Extract group_id, user_id, root_id from the classroom page.
326
+ * These IDs are needed for API calls.
327
+ */
328
+ async getClassroomIds(groupSlug, courseName) {
329
+ const page = await this.browser.getPage();
330
+ // Navigate to classroom
331
+ await page.goto(`https://www.skool.com/${groupSlug}/classroom`, {
332
+ waitUntil: "domcontentloaded",
333
+ });
334
+ await page.waitForTimeout(2000);
335
+ // Click into course if needed
336
+ if (courseName) {
337
+ const courseCard = page.getByText(courseName, { exact: false });
338
+ await courseCard.first().click();
339
+ await page.waitForTimeout(3000);
340
+ }
341
+ else {
342
+ const courseLink = page.locator('a[href*="/classroom/"]').first();
343
+ if ((await courseLink.count()) > 0) {
344
+ await courseLink.click();
345
+ await page.waitForTimeout(3000);
346
+ }
347
+ }
348
+ const courseUrl = page.url();
349
+ // Intercept the next API call to capture IDs
350
+ // The IDs were visible in the telemetry calls:
351
+ // group_id, member_id from the pv telemetry event
352
+ // We can also extract from the URL and page data
353
+ // Extract from page context using __NEXT_DATA__ or similar
354
+ const ids = await page.evaluate(() => {
355
+ // Try to find IDs from the React state or data attributes
356
+ // The telemetry calls contain: group_id, member_id
357
+ // Check __NEXT_DATA__ (Next.js)
358
+ const nextData = window.__NEXT_DATA__;
359
+ if (nextData?.props?.pageProps) {
360
+ const props = nextData.props.pageProps;
361
+ return {
362
+ groupId: (props.group_id || props.groupId || ""),
363
+ userId: (props.user_id || props.userId || ""),
364
+ };
365
+ }
366
+ return null;
367
+ });
368
+ if (ids?.groupId && ids?.userId) {
369
+ // Extract rootId from URL: /classroom/{rootId}?md=...
370
+ const urlMatch = courseUrl.match(/\/classroom\/([a-f0-9]+)/);
371
+ const rootId = urlMatch ? urlMatch[1] : "";
372
+ return {
373
+ groupId: ids.groupId,
374
+ userId: ids.userId,
375
+ rootId,
376
+ courseUrl,
377
+ };
378
+ }
379
+ // Fallback: extract from known values in the intercepted API calls
380
+ // We know from the debug-api output:
381
+ // group_id: 01fe75d52c50463fbe45d0a34bbcc398
382
+ // user_id: 84e41d162d6a46178e173fce440ea094
383
+ // root_id: fce518d5f6b84a18a4105fc5d353f660 (same as parent_id for top-level)
384
+ // But these are specific to Mario's account, so we need a dynamic way
385
+ // Try intercepting by navigating and capturing
386
+ return null;
387
+ }
388
+ }
389
+ //# sourceMappingURL=skool-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skool-api.js","sourceRoot":"","sources":["../../src/core/skool-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { CreateLessonOptions, CreateFolderOptions, CreatePostOptions, OperationResult, SkoolPost, SkoolMember } from "./types.js";
2
+ /**
3
+ * High-level Skool client.
4
+ * This is the main API for both CLI commands and programmatic usage.
5
+ */
6
+ export declare class SkoolClient {
7
+ private browser;
8
+ private ops;
9
+ private api;
10
+ private cachedGroupId;
11
+ private cachedUserId;
12
+ private cachedRootId;
13
+ constructor();
14
+ /** Discover group_id, user_id, root_id for API calls */
15
+ private discoverIds;
16
+ /** Login to Skool with email and password */
17
+ login(email: string, password: string): Promise<OperationResult>;
18
+ /** Check if the current session is valid */
19
+ checkSession(groupSlug: string): Promise<OperationResult>;
20
+ /** Create a new folder (module) in a Skool classroom course */
21
+ createFolder(options: CreateFolderOptions): Promise<OperationResult>;
22
+ /** Find a folder by name and return its ID.
23
+ * Extracts folder names + IDs from the sidebar DOM via Playwright.
24
+ */
25
+ private findFolderByName;
26
+ /** Create a new lesson in a Skool classroom module */
27
+ createLesson(options: CreateLessonOptions): Promise<OperationResult>;
28
+ /** List all lessons and folders in a course (from sidebar DOM) */
29
+ listLessons(groupSlug: string, courseName?: string): Promise<{
30
+ success: boolean;
31
+ message: string;
32
+ items: Array<{
33
+ name: string;
34
+ type: "folder" | "lesson";
35
+ children?: Array<{
36
+ name: string;
37
+ }>;
38
+ }>;
39
+ }>;
40
+ /** Delete a lesson or folder by ID */
41
+ deleteLesson(pageId: string): Promise<OperationResult>;
42
+ /** Create a community post */
43
+ createPost(options: CreatePostOptions): Promise<OperationResult>;
44
+ /** Get posts from a community */
45
+ getPosts(groupSlug: string): Promise<{
46
+ success: boolean;
47
+ posts: SkoolPost[];
48
+ }>;
49
+ /** Get categories from a community */
50
+ getCategories(groupSlug: string): Promise<{
51
+ success: boolean;
52
+ categories: string[];
53
+ }>;
54
+ /** Get members from a community */
55
+ getMembers(groupSlug: string, search?: string): Promise<{
56
+ success: boolean;
57
+ members: SkoolMember[];
58
+ }>;
59
+ /** Close the browser and cleanup */
60
+ close(): Promise<void>;
61
+ }
62
+ export type { CreateLessonOptions, CreatePostOptions, OperationResult, SkoolPost, SkoolMember, } from "./types.js";
63
+ //# sourceMappingURL=skool-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skool-client.d.ts","sourceRoot":"","sources":["../../src/core/skool-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,GAAG,CAAW;IAGtB,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,YAAY,CAAM;;IAQ1B,wDAAwD;YAC1C,WAAW;IAgIzB,6CAA6C;IACvC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAUtE,4CAA4C;IACtC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAe/D,+DAA+D;IACzD,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;IA2B1E;;OAEG;YACW,gBAAgB;IA0E9B,sDAAsD;IAChD,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;IAkF1E,kEAAkE;IAC5D,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,KAAK,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;YAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SACpC,CAAC,CAAC;KACJ,CAAC;IAmGF,sCAAsC;IAChC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAqB5D,8BAA8B;IACxB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC;IA8BtE,iCAAiC;IAC3B,QAAQ,CACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC;IAkBpD,sCAAsC;IAChC,aAAa,CACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAatD,mCAAmC;IAC7B,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC;IAmBxD,oCAAoC;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAGD,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,WAAW,GACZ,MAAM,YAAY,CAAC"}