nextworks 0.2.0-alpha.0 → 0.2.0-alpha.10

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 (94) hide show
  1. package/README.md +99 -26
  2. package/dist/cli_manifests/blocks_manifest.json +16 -29
  3. package/dist/commands/blocks.d.ts +3 -0
  4. package/dist/commands/blocks.d.ts.map +1 -1
  5. package/dist/commands/blocks.js +295 -31
  6. package/dist/commands/blocks.js.map +1 -1
  7. package/dist/commands/doctor.d.ts +48 -0
  8. package/dist/commands/doctor.d.ts.map +1 -0
  9. package/dist/commands/doctor.js +197 -0
  10. package/dist/commands/doctor.js.map +1 -0
  11. package/dist/commands/remove-blocks.d.ts +4 -1
  12. package/dist/commands/remove-blocks.d.ts.map +1 -1
  13. package/dist/commands/remove-blocks.js +24 -6
  14. package/dist/commands/remove-blocks.js.map +1 -1
  15. package/dist/index.js +103 -4
  16. package/dist/index.js.map +1 -1
  17. package/dist/kits/blocks/.nextworks/docs/BLOCKS_QUICKSTART.md +90 -177
  18. package/dist/kits/blocks/.nextworks/docs/BLOCKS_README.md +83 -44
  19. package/dist/kits/blocks/.nextworks/docs/THEME_GUIDE.md +269 -240
  20. package/dist/kits/blocks/app/templates/digitalagency/README.md +8 -2
  21. package/dist/kits/blocks/app/templates/digitalagency/components/About.tsx +71 -99
  22. package/dist/kits/blocks/app/templates/digitalagency/components/CTA.tsx +40 -74
  23. package/dist/kits/blocks/app/templates/digitalagency/components/Contact.tsx +123 -227
  24. package/dist/kits/blocks/app/templates/digitalagency/components/Footer.tsx +89 -89
  25. package/dist/kits/blocks/app/templates/digitalagency/components/Hero.tsx +83 -90
  26. package/dist/kits/blocks/app/templates/digitalagency/components/Navbar.tsx +121 -168
  27. package/dist/kits/blocks/app/templates/digitalagency/components/NetworkPattern.tsx +288 -297
  28. package/dist/kits/blocks/app/templates/digitalagency/components/Portfolio.tsx +157 -157
  29. package/dist/kits/blocks/app/templates/gallery/PresetThemeVars.tsx +1 -2
  30. package/dist/kits/blocks/app/templates/gallery/page.tsx +300 -303
  31. package/dist/kits/blocks/app/templates/productlaunch/PresetThemeVars.tsx +1 -0
  32. package/dist/kits/blocks/app/templates/productlaunch/README.md +9 -2
  33. package/dist/kits/blocks/app/templates/productlaunch/components/About.tsx +0 -94
  34. package/dist/kits/blocks/app/templates/productlaunch/components/CTA.tsx +2 -45
  35. package/dist/kits/blocks/app/templates/productlaunch/components/FAQ.tsx +4 -11
  36. package/dist/kits/blocks/app/templates/productlaunch/components/Features.tsx +1 -2
  37. package/dist/kits/blocks/app/templates/productlaunch/components/Footer.tsx +1 -1
  38. package/dist/kits/blocks/app/templates/productlaunch/components/Hero.tsx +6 -7
  39. package/dist/kits/blocks/app/templates/productlaunch/components/Navbar.tsx +8 -54
  40. package/dist/kits/blocks/app/templates/productlaunch/components/Pricing.tsx +1 -1
  41. package/dist/kits/blocks/app/templates/productlaunch/components/ProcessTimeline.tsx +1 -1
  42. package/dist/kits/blocks/app/templates/productlaunch/components/ServicesGrid.tsx +1 -1
  43. package/dist/kits/blocks/app/templates/productlaunch/components/Team.tsx +1 -1
  44. package/dist/kits/blocks/app/templates/productlaunch/components/Testimonials.tsx +2 -1
  45. package/dist/kits/blocks/app/templates/productlaunch/components/TrustBadges.tsx +1 -1
  46. package/dist/kits/blocks/app/templates/saasdashboard/README.md +9 -3
  47. package/dist/kits/blocks/app/templates/saasdashboard/components/Contact.tsx +0 -47
  48. package/dist/kits/blocks/app/templates/saasdashboard/components/Dashboard.tsx +2 -2
  49. package/dist/kits/blocks/app/templates/saasdashboard/components/Features.tsx +0 -1
  50. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero.tsx +0 -1
  51. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero_mask.tsx +0 -1
  52. package/dist/kits/blocks/app/templates/saasdashboard/components/Navbar.tsx +4 -46
  53. package/dist/kits/blocks/app/templates/saasdashboard/components/SmoothScroll.tsx +3 -4
  54. package/dist/kits/blocks/app/templates/saasdashboard/components/Testimonials.tsx +1 -1
  55. package/dist/kits/blocks/components/app-providers.app.tsx +17 -0
  56. package/dist/kits/blocks/components/app-providers.pages.tsx +12 -0
  57. package/dist/kits/blocks/components/app-providers.tsx +1 -1
  58. package/dist/kits/blocks/components/enhanced-theme-provider.tsx +195 -195
  59. package/dist/kits/blocks/components/providers/BlocksAppProviders.tsx +27 -0
  60. package/dist/kits/blocks/components/sections/CTA.tsx +0 -1
  61. package/dist/kits/blocks/components/sections/FAQ.tsx +0 -11
  62. package/dist/kits/blocks/components/sections/Features.tsx +2 -4
  63. package/dist/kits/blocks/components/sections/HeroMotion.tsx +1 -1
  64. package/dist/kits/blocks/components/sections/HeroOverlay.tsx +2 -2
  65. package/dist/kits/blocks/components/sections/HeroSplit.tsx +1 -1
  66. package/dist/kits/blocks/components/sections/Navbar.tsx +1 -4
  67. package/dist/kits/blocks/components/sections/PortfolioSimple.tsx +0 -1
  68. package/dist/kits/blocks/components/sections/ServicesGrid.tsx +1 -1
  69. package/dist/kits/blocks/components/theme-provider.tsx +0 -33
  70. package/dist/kits/blocks/components/ui/theme-selector.tsx +1 -5
  71. package/dist/kits/blocks/lib/utils.ts +0 -3
  72. package/dist/kits/blocks/package-deps.json +40 -28
  73. package/dist/utils/file-operations.d.ts +6 -2
  74. package/dist/utils/file-operations.d.ts.map +1 -1
  75. package/dist/utils/file-operations.js +317 -22
  76. package/dist/utils/file-operations.js.map +1 -1
  77. package/dist/utils/installation-tracker.d.ts +2 -2
  78. package/dist/utils/installation-tracker.d.ts.map +1 -1
  79. package/dist/utils/installation-tracker.js +11 -11
  80. package/dist/utils/installation-tracker.js.map +1 -1
  81. package/dist/utils/next-pages-document.d.ts +3 -0
  82. package/dist/utils/next-pages-document.d.ts.map +1 -0
  83. package/dist/utils/next-pages-document.js +48 -0
  84. package/dist/utils/next-pages-document.js.map +1 -0
  85. package/dist/utils/package-manager.d.ts +6 -0
  86. package/dist/utils/package-manager.d.ts.map +1 -0
  87. package/dist/utils/package-manager.js +58 -0
  88. package/dist/utils/package-manager.js.map +1 -0
  89. package/dist/utils/yarn-pnp.d.ts +6 -0
  90. package/dist/utils/yarn-pnp.d.ts.map +1 -0
  91. package/dist/utils/yarn-pnp.js +39 -0
  92. package/dist/utils/yarn-pnp.js.map +1 -0
  93. package/package.json +7 -7
  94. package/dist/kits/blocks/notes/THEME_GUIDE.md +0 -29
package/README.md CHANGED
@@ -1,37 +1,76 @@
1
1
  # nextworks
2
2
 
3
+ ## 90-second install demo (silent)
4
+
5
+ Fresh `create-next-app` + `npx nextworks add blocks --templates`, plus a quick browser tour of the gallery + templates:
6
+
7
+ [![Nextworks install demo](https://img.youtube.com/vi/7YKmGFmFY5c/hqdefault.jpg)](https://www.youtube.com/watch?v=7YKmGFmFY5c)
8
+
3
9
  Nextworks is a CLI that installs **modular Next.js building blocks** into your app:
4
10
 
5
11
  - **Blocks** – UI sections, templates, and core UI primitives.
6
12
 
7
13
  > **Status:** early‑access alpha. Expect rough edges and breaking changes between alpha releases.
8
14
  >
9
- > **Package manager:** npm only (for now).
15
+ > **Support matrix:**
16
+ >
17
+ > **CI-tested:**
18
+ >
19
+ > - OS: Windows, macOS, Linux
20
+ > - Node: 20.x and 22.x
21
+ > - Next.js (sandbox pin): 16.0.7 and 16.1.4 (via create-next-app in CI)
22
+ > - Router: App Router and Pages Router
23
+ > - Package managers: npm, pnpm, yarn
24
+ >
25
+ > Note: CI uses pinned Next.js versions for stability and security (see CVE-2025-66478 / RSC protocol advisory).
10
26
  >
11
27
  > In this alpha, the most reliable setup is:
12
28
  >
13
- > 1. Create a new Next.js App Router project:
29
+ > 1. Create a new Next.js project (App Router **or** Pages Router):
14
30
  >
15
31
  > ```bash
16
32
  > npx create-next-app@latest
17
33
  > ```
18
34
  >
19
- > 2. From your app root, install **Blocks** first:
35
+ > 2. From your app root, install **Blocks**:
36
+ >
37
+ > ```bash
38
+ > npx nextworks@latest add blocks --templates
39
+ > ```
40
+ >
41
+ > pnpm / yarn equivalents:
20
42
  >
21
43
  > ```bash
22
- > npx nextworks@latest add blocks --sections --templates
44
+ > pnpm dlx nextworks@latest add blocks --templates
45
+ > yarn dlx nextworks@latest add blocks --templates
23
46
  > ```
24
47
  >
25
48
  > Non-interactive / CI-friendly:
26
49
  >
27
50
  > ```bash
28
- > npx nextworks@latest add blocks --sections --templates --yes
51
+ > npx nextworks@latest add blocks --templates --yes
52
+ > ```
53
+ >
54
+ > Force a specific package manager (overrides lockfile detection):
55
+ >
56
+ > ```bash
57
+ > npx nextworks@latest add blocks --templates --pm pnpm
58
+ > npx nextworks@latest add blocks --templates --pm yarn
59
+ > npx nextworks@latest add blocks --templates --pm npm
29
60
  > ```
30
61
  >
31
62
  > 3. Optionally, adjust flags to install only what you want (UI-only, sections, templates).
32
63
 
33
64
  ---
34
65
 
66
+ ## Known issues (alpha)
67
+
68
+ - **Existing files may be overwritten** if they collide with kit paths. Commit first.
69
+ - **Router entrypoint patching can conflict** with heavily customized `app/layout.tsx` or `pages/_app.tsx`.
70
+ - **Fonts/providers wiring:** Blocks configures fonts in your router entrypoint (not inside shared packages) for Turbopack compatibility. If you manually edit fonts/providers and see errors, re-run the Blocks install to re-apply the patch.
71
+
72
+ ---
73
+
35
74
  ## Safety (read this first)
36
75
 
37
76
  `nextworks` installs kits by copying files into your Next.js project. If a destination path already exists, kit installs may **overwrite** your files.
@@ -49,10 +88,13 @@ Before running installs, strongly consider:
49
88
  Kits may also:
50
89
 
51
90
  - **merge dependencies** into `package.json`
52
- - **edit `app/layout.tsx`** (Blocks)
91
+ - **edit your router entrypoint** (Blocks):
92
+ - App Router: `app/layout.tsx`
93
+ - Pages Router: `pages/_app.tsx` (and may create/update `pages/_document.tsx`)
53
94
  - create/update `.nextworks/config.json`
54
95
 
55
96
  For a transparent breakdown of what each kit writes/edits, see:
97
+
56
98
  - https://github.com/jblh/nextworks-cli/blob/main/docs/FILE_CHANGES.md
57
99
 
58
100
  ---
@@ -66,6 +108,8 @@ Nextworks is early‑access alpha and I’m actively looking for feedback from e
66
108
  - **Start here (installation + where to post feedback):** https://github.com/jblh/nextworks-cli/discussions/1
67
109
  - **Alpha feedback thread (what broke / what’s missing):** https://github.com/jblh/nextworks-cli/discussions/2
68
110
 
111
+ If you’re reporting an install/runtime issue, please include OS, Node version, Next.js version, package manager, the exact command you ran, and the error output.
112
+
69
113
  ### Bug reports
70
114
 
71
115
  For reproducible bugs / errors (especially install/runtime issues), please open a GitHub Issue using the templates in `.github/ISSUE_TEMPLATE/`.
@@ -78,17 +122,25 @@ If you need to share something privately (e.g. security-related), email: nextjsw
78
122
 
79
123
  ## Install and run the CLI
80
124
 
81
- From your Next.js app root, use `npx`:
125
+ From your Next.js app root, run the CLI with your preferred package manager:
82
126
 
83
127
  ```bash
84
128
  npx nextworks@latest --help
129
+ pnpm dlx nextworks@latest --help
130
+ yarn dlx nextworks@latest --help
85
131
  ```
86
132
 
87
133
  Example commands:
88
134
 
89
135
  ```bash
90
- npx nextworks@latest add blocks --sections --templates
91
- npx nextworks@latest add blocks --sections --templates --yes # non-interactive / CI
136
+ npx nextworks@latest add blocks --templates
137
+ pnpm dlx nextworks@latest add blocks --templates
138
+ yarn dlx nextworks@latest add blocks --templates
139
+
140
+ npx nextworks@latest add blocks --templates --yes # non-interactive / CI
141
+
142
+ # Force a specific package manager (overrides lockfile detection)
143
+ npx nextworks@latest add blocks --templates --pm pnpm
92
144
  ```
93
145
 
94
146
  ---
@@ -97,7 +149,7 @@ npx nextworks@latest add blocks --sections --templates --yes # non-interactive
97
149
 
98
150
  Prerequisites:
99
151
 
100
- - A Next.js App Router project (e.g. from `create-next-app`).
152
+ - A Next.js project (App Router **or** Pages Router).
101
153
  - TypeScript required.
102
154
  - Tailwind CSS required (the Blocks kit and templates rely on Tailwind classes).
103
155
 
@@ -108,33 +160,45 @@ From your app root:
108
160
  Non-interactive / CI-friendly (auto-accept defaults where possible):
109
161
 
110
162
  ```bash
111
- npx nextworks@latest add blocks --sections --templates --yes
163
+ npx nextworks@latest add blocks --templates --yes
112
164
  ```
113
165
 
114
166
  > **Turbopack / Next 16 note (fonts + AppProviders)**
115
167
  >
116
- > As of the current alpha, `@nextworks/blocks-core/server` intentionally **does not** import `next/font/*`.
117
- > Fonts are instead configured directly in your app’s `app/layout.tsx` (the CLI patches this for you).
118
- > This avoids Turbopack dev issues related to internal Next font modules.
168
+ > Shared packages intentionally avoid importing `next/font/*`.
169
+ > Fonts are configured directly in your app’s router entrypoint (the CLI patches this for you):
170
+ >
171
+ > - App Router: `app/layout.tsx`
172
+ > - Pages Router: `pages/_app.tsx`
173
+ > This avoids Turbopack dev issues related to internal Next font modules.
119
174
  >
120
175
  > If you ever see a font-related Turbopack error after upgrades or manual edits, re-run:
121
176
  >
122
177
  > ```bash
123
- > npx nextworks@latest add blocks --sections --templates
178
+ > npx nextworks@latest add blocks --templates
124
179
  > ```
125
180
  >
126
- > to re-apply the layout patch, and ensure `app/layout.tsx` contains a valid
181
+ > to re-apply the patch, and ensure your router entrypoint contains a valid
127
182
  > `import { ... } from "next/font/google";` plus the corresponding `const geistSans = ...` etc.
183
+ >
184
+ > - App Router: `app/layout.tsx`
185
+ > - Pages Router: `pages/_app.tsx`
128
186
 
129
187
  ```bash
130
- npx nextworks@latest add blocks --sections --templates
188
+ npx nextworks@latest add blocks --templates
131
189
  ```
132
190
 
191
+ > Note: Older docs (and the demo video) may show `--sections --templates`. It still works, but `--sections` is no longer needed.
192
+
133
193
  This copies:
134
194
 
135
195
  - `components/ui/*` (core UI primitives)
136
196
  - `components/sections/*` (reusable sections)
137
- - Page templates under `app/templates/*`
197
+ - Templates (router-native):
198
+ - App Router projects: `app/templates/<template>/**`
199
+ - Pages Router projects:
200
+ - route entry file: `pages/templates/<template>/index.tsx`
201
+ - supporting template files: `components/templates/<template>/**`
138
202
  - Theme helpers and `app/globals.css` (if not already present)
139
203
 
140
204
  After this step you should be able to start your dev server and visit:
@@ -142,7 +206,6 @@ After this step you should be able to start your dev server and visit:
142
206
  - `/` (if wired as the home page), or
143
207
  - `/templates/productlaunch`, `/templates/saasdashboard`, `/templates/digitalagency`
144
208
 
145
-
146
209
  ---
147
210
 
148
211
  ## Advanced Blocks installs
@@ -150,21 +213,20 @@ After this step you should be able to start your dev server and visit:
150
213
  For a full UI kit including core primitives, sections, and templates, use:
151
214
 
152
215
  ```bash
153
- npx nextworks@latest add blocks --sections --templates
216
+ npx nextworks@latest add blocks --templates
154
217
  ```
155
218
 
156
219
  Non-interactive / CI-friendly:
157
220
 
158
221
  ```bash
159
- npx nextworks@latest add blocks --sections --templates --yes
222
+ npx nextworks@latest add blocks --templates --yes
160
223
  ```
161
224
 
162
225
  If you want finer control:
163
226
 
164
227
  - `npx nextworks@latest add blocks --ui-only` – install core UI primitives only (no sections/templates).
165
228
  - `npx nextworks@latest add blocks --sections` – install core + sections only.
166
- - `npx nextworks@latest add blocks --templates` – install core + templates only.
167
- - `npx nextworks@latest add blocks --sections --templates` – install core + sections + templates.
229
+ - `npx nextworks@latest add blocks --templates` – install core + sections + templates.
168
230
 
169
231
  ---
170
232
 
@@ -177,16 +239,27 @@ You can add a short “Nextworks setup” section to your app README:
177
239
 
178
240
  1. Install and run the CLI from your Next.js app root:
179
241
 
180
- npx nextworks@latest add blocks --sections --templates
242
+ npx nextworks@latest add blocks --templates
243
+
181
244
  # CI / non-interactive:
182
- npx nextworks@latest add blocks --sections --templates --yes
245
+
246
+ npx nextworks@latest add blocks --templates --yes
183
247
 
184
248
  2. Start dev server:
185
249
 
186
250
  npm run dev
187
251
 
188
252
  3. Try these routes:
189
- - `/` or `/templates/productlaunch` (Blocks template)
253
+ - `/templates/productlaunch`
254
+ - `/templates/saasdashboard`
255
+ - `/templates/digitalagency`
256
+ - `/templates/gallery`
257
+
258
+ Template files live at:
259
+ - App Router: `app/templates/<template>/**`
260
+ - Pages Router:
261
+ - route entry file: `pages/templates/<template>/index.tsx`
262
+ - supporting template files: `components/templates/<template>/**`
190
263
  ```
191
264
 
192
265
  ---
@@ -27,7 +27,10 @@
27
27
  "components/ui/theme-toggle.tsx",
28
28
  "components/ui/toaster.tsx",
29
29
  "components/enhanced-theme-provider.tsx",
30
+ "components/providers/BlocksAppProviders.tsx",
30
31
  "components/app-providers.tsx",
32
+ "components/app-providers.app.tsx",
33
+ "components/app-providers.pages.tsx",
31
34
  "components/theme-provider.tsx",
32
35
  "lib/themes.ts",
33
36
  "lib/utils.ts",
@@ -65,35 +68,6 @@
65
68
  "templates": {
66
69
  "description": "Full page templates (Product Launch, SaaS Dashboard, Digital Agency, Gallery)",
67
70
  "files": [
68
- "components/ui/alert-dialog.tsx",
69
- "components/ui/brand-node.tsx",
70
- "components/ui/button.tsx",
71
- "components/ui/card.tsx",
72
- "components/ui/checkbox.tsx",
73
- "components/ui/cta-button.tsx",
74
- "components/ui/dropdown-menu.tsx",
75
- "components/ui/feature-card.tsx",
76
- "components/ui/input.tsx",
77
- "components/ui/label.tsx",
78
- "components/ui/pricing-card.tsx",
79
- "components/ui/select.tsx",
80
- "components/ui/skeleton.tsx",
81
- "components/ui/switch.tsx",
82
- "components/ui/table.tsx",
83
- "components/ui/testimonial-card.tsx",
84
- "components/ui/textarea.tsx",
85
- "components/ui/theme-selector.tsx",
86
- "components/ui/theme-toggle.tsx",
87
- "components/ui/toaster.tsx",
88
- "components/enhanced-theme-provider.tsx",
89
- "components/app-providers.tsx",
90
- "components/theme-provider.tsx",
91
- "lib/themes.ts",
92
- "lib/utils.ts",
93
- "app/globals.css",
94
- "app/tw-animate.css",
95
- "next.config.ts",
96
-
97
71
  "app/templates/productlaunch/page.tsx",
98
72
  "app/templates/productlaunch/PresetThemeVars.tsx",
99
73
  "app/templates/productlaunch/README.md",
@@ -162,8 +136,21 @@
162
136
  "public/placeholders/saas_dashboard/projectBoard.png",
163
137
  ".nextworks/docs/THEME_GUIDE.md"
164
138
  ]
139
+ },
140
+ "gallery": {
141
+ "description": "Gallery of marketing sections (Hero, CTA, Pricing, etc.)",
142
+ "files": [
143
+ "app/templates/gallery/page.tsx",
144
+ "app/templates/gallery/PresetThemeVars.tsx",
145
+ "public/placeholders/gallery/hero-pexels-broken-9945014.avif",
146
+ "public/placeholders/gallery/pexels-googledeepmind-25626431.jpg",
147
+ "public/placeholders/gallery/pexels-googledeepmind-25626432.jpg",
148
+ "public/placeholders/gallery/pexels-googledeepmind-25626434.jpg",
149
+ "public/placeholders/gallery/pexels-googledeepmind-25626436.jpg"
150
+ ]
165
151
  }
166
152
  },
153
+
167
154
  "files": [
168
155
  "public/placeholders/gallery/hero-pexels-broken-9945014.avif",
169
156
  "public/placeholders/gallery/pexels-googledeepmind-25626431.jpg",
@@ -5,6 +5,9 @@ export interface AddBlocksOptions {
5
5
  uiOnly?: boolean;
6
6
  /** Skip interactive prompts and accept defaults. */
7
7
  yes?: boolean;
8
+ /** Force package manager (overrides lockfile detection). */
9
+ pm?: import("../utils/package-manager").PackageManager;
10
+ dryRun?: boolean;
8
11
  }
9
12
  export declare function addBlocks(options?: AddBlocksOptions): Promise<void>;
10
13
  //# sourceMappingURL=blocks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/commands/blocks.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoR7E"}
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/commands/blocks.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,4DAA4D;IAC5D,EAAE,CAAC,EAAE,OAAO,0BAA0B,EAAE,cAAc,CAAC;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAokB7E"}