@respira/wordpress-mcp-server 2.0.3 → 2.0.5

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.
package/README.md CHANGED
@@ -1,68 +1,123 @@
1
- # Respira WordPress MCP Server
1
+ <p align="center">
2
+ <a href="https://respira.press">
3
+ <img src="https://respira.press/hero/respira-press-cover.jpg" alt="Respira for WordPress" width="100%">
4
+ </a>
5
+ </p>
2
6
 
3
- MCP (Model Context Protocol) server for connecting AI coding assistants to WordPress sites.
7
+ <h1 align="center">Respira WordPress MCP Server</h1>
4
8
 
5
- **Important:** This MCP server requires a Respira API key. Get your API key by:
6
- 1. Installing the [Respira WordPress plugin](https://respira.press) on your WordPress site
7
- 2. Going to **Respira API Keys** in WordPress admin
8
- 3. Generating a new API key
9
+ <p align="center">
10
+ <strong>The only WordPress MCP with page builder support.</strong><br>
11
+ Edit Divi, Elementor, Bricks + 7 more builders with AI. Duplicate-before-edit safety. SEO analysis. 60+ tools.
12
+ </p>
9
13
 
10
- ## Installation
14
+ <p align="center">
15
+ <a href="https://www.npmjs.com/package/@respira/wordpress-mcp-server"><img src="https://img.shields.io/npm/v/@respira/wordpress-mcp-server.svg?style=flat-square&color=blue" alt="npm version"></a>
16
+ <a href="https://www.npmjs.com/package/@respira/wordpress-mcp-server"><img src="https://img.shields.io/npm/dm/@respira/wordpress-mcp-server.svg?style=flat-square" alt="npm downloads"></a>
17
+ <a href="https://github.com/webmyc/respira-wordpress"><img src="https://img.shields.io/github/stars/webmyc/respira-wordpress?style=flat-square" alt="GitHub stars"></a>
18
+ <a href="https://respira.press"><img src="https://img.shields.io/badge/website-respira.press-purple?style=flat-square" alt="Website"></a>
19
+ </p>
11
20
 
12
- Install the MCP server from npm:
21
+ <p align="center">
22
+ <a href="https://respira.press">Website</a> •
23
+ <a href="https://respira.press/docs">Documentation</a> •
24
+ <a href="https://respira.press/support">Support</a> •
25
+ <a href="https://github.com/webmyc/respira-wordpress">GitHub</a>
26
+ </p>
13
27
 
14
- ```bash
15
- npm install -g @respira/wordpress-mcp-server
16
- ```
28
+ ---
17
29
 
18
- Or use it directly with npx (no installation needed):
30
+ ## Why Respira?
19
31
 
20
- ```bash
21
- npx -y @respira/wordpress-mcp-server
22
- ```
32
+ Most WordPress MCP servers only work with Gutenberg. **Respira is the only MCP that supports real page builders** — the tools that power 50%+ of WordPress sites.
33
+
34
+ ### Feature Comparison
35
+
36
+ | Feature | Respira | mcp-wordpress | wordpress-mcp |
37
+ |---------|---------|---------------|---------------|
38
+ | **Divi Builder** (200+ modules) | ✅ | ❌ | ❌ |
39
+ | **Elementor** (widgets, templates) | ✅ | ❌ | ❌ |
40
+ | **Bricks Builder** | ✅ | ❌ | ❌ |
41
+ | **Oxygen Builder** | ✅ | ❌ | ❌ |
42
+ | **WPBakery / Visual Composer** | ✅ | ❌ | ❌ |
43
+ | **Beaver Builder** | ✅ | ❌ | ❌ |
44
+ | **Thrive Architect** | ✅ | ❌ | ❌ |
45
+ | **Brizy** | ✅ | ❌ | ❌ |
46
+ | Gutenberg (Block Editor) | ✅ | ✅ | ✅ |
47
+ | Duplicate-before-edit safety | ✅ | ❌ | ❌ |
48
+ | SEO analysis tools | ✅ | ❌ | ❌ |
49
+ | Performance / Core Web Vitals | ✅ | ❌ | ❌ |
50
+ | AI Engine Optimization (AEO) | ✅ | ❌ | ❌ |
51
+ | Menu management (full CRUD) | ✅ | ❌ | Limited |
52
+ | Media upload & management | ✅ | ✅ | ✅ |
53
+ | WPML multilingual support | ✅ | ❌ | ❌ |
54
+ | Multi-site switching | ✅ | ❌ | ❌ |
55
+ | Plugin management | ✅ | ❌ | ❌ |
56
+ | **Total tools** | **60+** | ~15 | ~20 |
57
+
58
+ ### What Makes Respira Different
59
+
60
+ 1. **Page Builder Intelligence** — AI understands Divi sections, Elementor widgets, Bricks elements. Not just raw HTML.
61
+
62
+ 2. **Duplicate-Before-Edit Safety** — Respira creates a duplicate before editing any live page. Review changes in WordPress admin before they go live. Your production site is never touched until you approve.
63
+
64
+ 3. **SEO & Performance Analysis** — Built-in tools for comprehensive SEO audits, Core Web Vitals, and AI Engine Optimization (AEO) for ChatGPT/Perplexity visibility.
65
+
66
+ 4. **Module-Level Precision** — Update a specific Divi module or Elementor widget by its admin label or path, without touching the rest of the page.
67
+
68
+ ---
69
+
70
+ ## Quick Start (2 Minutes)
23
71
 
24
- **Note:** When using npx, you don't need to install the package globally. It will automatically download and run the latest version.
72
+ ### Step 1: Install the WordPress Plugin
25
73
 
26
- ## Configuration
74
+ 1. Download from [respira.press](https://respira.press)
75
+ 2. Upload to WordPress: **Plugins → Add New → Upload Plugin**
76
+ 3. Activate and go to **Respira → API Keys**
77
+ 4. Generate your API key (starts with `respira_`)
27
78
 
28
- ### Option 1: Configuration File (Recommended)
79
+ ### Step 2: Configure Your AI Assistant
29
80
 
30
- Create a configuration file at `~/.respira/config.json`:
81
+ <details>
82
+ <summary><b>Cursor</b></summary>
83
+
84
+ Create or edit `.cursor/mcp.json` in your project:
31
85
 
32
86
  ```json
33
87
  {
34
- "sites": [
35
- {
36
- "id": "my-site",
37
- "name": "My WordPress Site",
38
- "url": "https://mysite.com",
39
- "apiKey": "respira_your-api-key-here",
40
- "default": true
88
+ "mcpServers": {
89
+ "respira-wordpress": {
90
+ "command": "npx",
91
+ "args": ["-y", "@respira/wordpress-mcp-server"]
41
92
  }
42
- ],
43
- "preferences": {
44
- "autoDuplicate": true,
45
- "securityChecks": true
46
93
  }
47
94
  }
48
95
  ```
49
96
 
50
- ### Option 2: Environment Variables
97
+ </details>
51
98
 
52
- Create a `.env` file:
99
+ <details>
100
+ <summary><b>Claude Code</b></summary>
53
101
 
54
- ```bash
55
- WP_SITE_URL=https://your-wordpress-site.com
56
- WP_API_KEY=respira_your-api-key-here
57
- ```
102
+ Add to your Claude Code config (`~/.claude.json` or project settings):
58
103
 
59
- ## Usage
104
+ ```json
105
+ {
106
+ "mcpServers": {
107
+ "respira-wordpress": {
108
+ "command": "npx",
109
+ "args": ["-y", "@respira/wordpress-mcp-server"]
110
+ }
111
+ }
112
+ }
113
+ ```
60
114
 
61
- ### With Cursor
115
+ </details>
62
116
 
63
- **Option 1: Using npm (Recommended)**
117
+ <details>
118
+ <summary><b>Windsurf</b></summary>
64
119
 
65
- Add to your Cursor settings (`.cursor/mcp.json`):
120
+ Add to your Windsurf MCP configuration:
66
121
 
67
122
  ```json
68
123
  {
@@ -75,144 +130,286 @@ Add to your Cursor settings (`.cursor/mcp.json`):
75
130
  }
76
131
  ```
77
132
 
78
- **Option 2: Using global installation**
133
+ </details>
134
+
135
+ <details>
136
+ <summary><b>Claude Desktop</b></summary>
79
137
 
80
- If you installed globally with `npm install -g`, use:
138
+ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
81
139
 
82
140
  ```json
83
141
  {
84
142
  "mcpServers": {
85
143
  "respira-wordpress": {
86
- "command": "respira-wordpress-mcp"
144
+ "command": "npx",
145
+ "args": ["-y", "@respira/wordpress-mcp-server"]
87
146
  }
88
147
  }
89
148
  }
90
149
  ```
91
150
 
151
+ </details>
152
+
153
+ ### Step 3: Create Config File
154
+
155
+ Create `~/.respira/config.json`:
156
+
157
+ ```json
158
+ {
159
+ "sites": [
160
+ {
161
+ "id": "my-site",
162
+ "name": "My WordPress Site",
163
+ "url": "https://yoursite.com",
164
+ "apiKey": "respira_your-api-key-here",
165
+ "default": true
166
+ }
167
+ ]
168
+ }
169
+ ```
92
170
 
93
- ### With Claude Desktop
171
+ **That's it!** Restart your AI assistant and start editing.
94
172
 
95
- Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
173
+ ---
96
174
 
97
- **Using npm (Recommended):**
175
+ ## Page Builder Support
176
+
177
+ ### Divi Builder
178
+ - 200+ module types supported
179
+ - Section, row, and module-level editing
180
+ - Update by admin label: `"Find the module labeled 'Hero CTA' and change the button text"`
181
+ - Preserves all Divi styling and settings
182
+
183
+ ### Elementor
184
+ - Widget-level precision editing
185
+ - Template and section support
186
+ - CSS cache regeneration after updates
187
+ - Compatible with Elementor Pro
188
+
189
+ ### Other Builders
190
+ - **Bricks** — Elements and containers
191
+ - **Oxygen** — Components and templates
192
+ - **WPBakery** — Shortcode-based editing
193
+ - **Beaver Builder** — Modules and rows
194
+ - **Thrive Architect** — Elements and templates
195
+ - **Brizy** — Blocks and elements
196
+ - **Visual Composer** — Elements and grids
197
+
198
+ ---
199
+
200
+ ## Safe Editing Workflow
201
+
202
+ Respira never edits your live pages directly:
203
+
204
+ 1. AI requests a page update
205
+ 2. Respira **creates a duplicate** of the page
206
+ 3. AI edits the duplicate
207
+ 4. You **review changes** in WordPress admin
208
+ 5. One-click to approve and replace the original
209
+
210
+ Go to **Respira → Approve Edits** to review pending changes.
211
+
212
+ ---
213
+
214
+ ## Available Tools (60+)
215
+
216
+ ### Content Management
217
+ | Tool | Description |
218
+ |------|-------------|
219
+ | `wordpress_list_pages` | List all pages |
220
+ | `wordpress_read_page` | Get page content with builder data |
221
+ | `wordpress_update_page` | Update page (auto-creates duplicate) |
222
+ | `wordpress_create_page_duplicate` | Manually create safe duplicate |
223
+ | `wordpress_list_posts` | List all posts |
224
+ | `wordpress_read_post` | Get post content |
225
+ | `wordpress_update_post` | Update post content |
226
+
227
+ ### Page Builders
228
+ | Tool | Description |
229
+ |------|-------------|
230
+ | `wordpress_get_builder_info` | Get available modules/widgets for detected builder |
231
+ | `wordpress_extract_builder_content` | Extract structured content (sections, rows, modules) |
232
+ | `wordpress_inject_builder_content` | Inject structured builder content |
233
+ | `wordpress_update_module` | Update specific module by admin_label or path |
234
+
235
+ ### Media Management
236
+ | Tool | Description |
237
+ |------|-------------|
238
+ | `wordpress_list_media` | List all media files |
239
+ | `wordpress_upload_media` | Upload images, videos, documents |
240
+ | `wordpress_update_media` | Update alt text, title, caption |
241
+ | `wordpress_delete_media` | Delete media files |
242
+
243
+ ### Menu Management
244
+ | Tool | Description |
245
+ |------|-------------|
246
+ | `wordpress_list_menus` | List all navigation menus |
247
+ | `wordpress_get_menu` | Get menu with all items |
248
+ | `wordpress_create_menu` | Create new menu |
249
+ | `wordpress_update_menu` | Update menu structure |
250
+ | `wordpress_list_menu_locations` | List theme menu locations |
251
+ | `wordpress_assign_menu_location` | Assign menu to location |
252
+ | `wordpress_create_menu_item` | Add menu item |
253
+ | `wordpress_update_menu_item` | Update menu item |
254
+
255
+ ### SEO & Performance
256
+ | Tool | Description |
257
+ |------|-------------|
258
+ | `wordpress_analyze_seo` | Comprehensive SEO analysis with recommendations |
259
+ | `wordpress_check_seo_issues` | Quick SEO issue checker |
260
+ | `wordpress_analyze_performance` | Performance metrics and bottlenecks |
261
+ | `wordpress_get_core_web_vitals` | LCP, FID, CLS scores |
262
+ | `wordpress_analyze_aeo` | AI search engine optimization (ChatGPT, Perplexity) |
263
+ | `wordpress_check_structured_data` | Schema markup validation |
264
+ | `wordpress_analyze_images` | Image optimization opportunities |
265
+ | `wordpress_analyze_readability` | Content readability scores |
266
+
267
+ ### Users & Comments
268
+ | Tool | Description |
269
+ |------|-------------|
270
+ | `wordpress_list_users` | List all users |
271
+ | `wordpress_create_user` | Create new user |
272
+ | `wordpress_update_user` | Update user details |
273
+ | `wordpress_list_comments` | List comments |
274
+ | `wordpress_create_comment` | Create comment |
275
+ | `wordpress_update_comment` | Update/moderate comment |
276
+
277
+ ### Taxonomies & Terms
278
+ | Tool | Description |
279
+ |------|-------------|
280
+ | `wordpress_list_taxonomies` | List all taxonomies |
281
+ | `wordpress_list_terms` | List terms in taxonomy |
282
+ | `wordpress_create_term` | Create category/tag/term |
283
+ | `wordpress_update_term` | Update term |
284
+
285
+ ### Custom Post Types
286
+ | Tool | Description |
287
+ |------|-------------|
288
+ | `wordpress_list_post_types` | List registered CPTs |
289
+ | `wordpress_list_custom_posts` | List CPT entries |
290
+ | `wordpress_create_custom_post` | Create CPT entry |
291
+ | `wordpress_update_custom_post` | Update CPT entry |
292
+
293
+ ### Plugin Management (Experimental)
294
+ | Tool | Description |
295
+ |------|-------------|
296
+ | `wordpress_list_plugins` | List installed plugins |
297
+ | `wordpress_install_plugin` | Install from WordPress.org |
298
+ | `wordpress_activate_plugin` | Activate plugin |
299
+ | `wordpress_deactivate_plugin` | Deactivate plugin |
300
+ | `wordpress_update_plugin` | Update to latest version |
301
+
302
+ ### Site Context
303
+ | Tool | Description |
304
+ |------|-------------|
305
+ | `wordpress_get_site_context` | Get site info, theme, plugins, builders |
306
+ | `wordpress_get_theme_docs` | Get theme documentation |
307
+ | `wordpress_switch_site` | Switch to different site (multi-site) |
308
+
309
+ ---
310
+
311
+ ## Multi-Site Support
312
+
313
+ Manage multiple WordPress sites from one config:
314
+
315
+ ```json
316
+ {
317
+ "sites": [
318
+ {
319
+ "id": "production",
320
+ "name": "Production Site",
321
+ "url": "https://mysite.com",
322
+ "apiKey": "respira_prod_key",
323
+ "default": true
324
+ },
325
+ {
326
+ "id": "staging",
327
+ "name": "Staging Site",
328
+ "url": "https://staging.mysite.com",
329
+ "apiKey": "respira_staging_key"
330
+ }
331
+ ]
332
+ }
333
+ ```
334
+
335
+ Switch sites with: `wordpress_switch_site`
336
+
337
+ ---
338
+
339
+ ## WPML Multilingual Support
340
+
341
+ Full support for WPML multilingual sites:
342
+ - Menu translations
343
+ - Page/post language detection
344
+ - Translation links
345
+ - Language-aware content queries
346
+
347
+ ---
348
+
349
+ ## Windows Troubleshooting
350
+
351
+ If you see `'npx' is not recognized`:
352
+
353
+ ### Option 1: Use Full Path (Recommended)
98
354
 
99
355
  ```json
100
356
  {
101
357
  "mcpServers": {
102
358
  "respira-wordpress": {
103
- "command": "npx",
359
+ "command": "C:\\Program Files\\nodejs\\npx.cmd",
104
360
  "args": ["-y", "@respira/wordpress-mcp-server"]
105
361
  }
106
362
  }
107
363
  }
108
364
  ```
109
365
 
366
+ ### Option 2: Install Globally
110
367
 
111
- ## Available Tools
368
+ ```bash
369
+ npm install -g @respira/wordpress-mcp-server
370
+ ```
112
371
 
113
- ### Content Management
114
- - `wordpress_get_site_context` - Get comprehensive site information
115
- - `wordpress_get_theme_docs` - Get theme documentation
116
- - `wordpress_get_builder_info` - Get page builder information
117
- - `wordpress_list_pages` - List all pages
118
- - `wordpress_read_page` - Get page content
119
- - `wordpress_create_page_duplicate` - Duplicate a page for safe editing
120
- - `wordpress_update_page` - Update page content
121
- - `wordpress_delete_page` - Delete a page
122
- - `wordpress_list_posts` - List all posts
123
- - `wordpress_read_post` - Get post content
124
- - `wordpress_create_post_duplicate` - Duplicate a post
125
- - `wordpress_list_media` - List media files
126
- - `wordpress_upload_media` - Upload media files (images, documents, videos) - supports base64, URLs, or file paths
127
- - `wordpress_get_media` - Get single media item details
128
- - `wordpress_update_media` - Update media metadata (title, alt text, caption)
129
- - `wordpress_delete_media` - Delete a media file
130
- - `wordpress_extract_builder_content` - Extract page builder content
131
- - `wordpress_inject_builder_content` - Inject page builder content
132
- - `wordpress_validate_security` - Validate content for security issues
133
- - `wordpress_switch_site` - Switch between multiple WordPress sites
134
-
135
- ### User Management
136
- - `wordpress_list_users` - List all users with optional filtering
137
- - `wordpress_get_user` - Get user details by ID
138
- - `wordpress_create_user` - Create a new user
139
- - `wordpress_update_user` - Update user information
140
- - `wordpress_delete_user` - Delete a user
141
-
142
- ### Comments
143
- - `wordpress_list_comments` - List all comments with optional filtering
144
- - `wordpress_get_comment` - Get comment details by ID
145
- - `wordpress_create_comment` - Create a new comment
146
- - `wordpress_update_comment` - Update a comment
147
- - `wordpress_delete_comment` - Delete a comment
148
-
149
- ### Taxonomies
150
- - `wordpress_list_taxonomies` - List all registered taxonomies
151
- - `wordpress_get_taxonomy` - Get taxonomy details
152
- - `wordpress_list_terms` - List terms in a taxonomy
153
- - `wordpress_get_term` - Get term details
154
- - `wordpress_create_term` - Create a new term
155
- - `wordpress_update_term` - Update a term
156
- - `wordpress_delete_term` - Delete a term
372
+ Then use:
157
373
 
158
- ### Custom Post Types
159
- - `wordpress_list_post_types` - List all registered post types
160
- - `wordpress_get_post_type` - Get post type details
161
- - `wordpress_list_custom_posts` - List posts of a custom post type
162
- - `wordpress_get_custom_post` - Get custom post details
163
- - `wordpress_create_custom_post` - Create a new custom post
164
- - `wordpress_update_custom_post` - Update a custom post
165
- - `wordpress_delete_custom_post` - Delete a custom post
166
-
167
- ### WordPress Options
168
- - `wordpress_list_options` - List WordPress options (with optional search filter)
169
- - `wordpress_get_option` - Get option value by name
170
- - `wordpress_update_option` - Update an option value
171
- - `wordpress_delete_option` - Delete an option
172
-
173
- ### Page Speed Analysis
174
- - `wordpress_analyze_performance` - Analyze page performance metrics (load time, optimization opportunities)
175
- - `wordpress_get_core_web_vitals` - Get Core Web Vitals scores (LCP, FID, CLS)
176
- - `wordpress_analyze_images` - Analyze image optimization opportunities
177
-
178
- ### SEO Analysis
179
- - `wordpress_analyze_seo` - Comprehensive SEO analysis (meta tags, headings, alt text, linking)
180
- - `wordpress_check_seo_issues` - Check for common SEO issues and get recommendations
181
- - `wordpress_analyze_readability` - Analyze content readability (Flesch Reading Ease, sentence structure)
182
-
183
- ### AI Engine Optimization (AEO)
184
- - `wordpress_analyze_aeo` - Analyze content for AI search engines (Perplexity, ChatGPT)
185
- - `wordpress_check_structured_data` - Check schema markup and structured data (JSON-LD, microdata)
186
-
187
- ### Plugin Management (EXPERIMENTAL)
188
- - `wordpress_list_plugins` - List all installed plugins with status and version
189
- - `wordpress_install_plugin` - Install a plugin from WordPress.org or ZIP URL
190
- - `wordpress_activate_plugin` - Activate a plugin
191
- - `wordpress_deactivate_plugin` - Deactivate a plugin
192
- - `wordpress_update_plugin` - Update a plugin to the latest version
193
- - `wordpress_delete_plugin` - Permanently delete a plugin
194
-
195
- **Note**: Plugin management tools are EXPERIMENTAL and require the feature to be enabled in Respira settings (disabled by default for security). Use with caution and always have backups.
196
-
197
- ## Development
374
+ ```json
375
+ {
376
+ "mcpServers": {
377
+ "respira-wordpress": {
378
+ "command": "respira-wordpress-mcp"
379
+ }
380
+ }
381
+ }
382
+ ```
383
+
384
+ ---
385
+
386
+ ## Environment Variables
387
+
388
+ Instead of config file, use `.env`:
198
389
 
199
390
  ```bash
200
- # Watch mode
201
- npm run watch
391
+ WP_SITE_URL=https://your-site.com
392
+ WP_API_KEY=respira_your-api-key
393
+ ```
202
394
 
203
- # Build
204
- npm run build
395
+ ---
205
396
 
206
- # Run
207
- npm run start
397
+ ## Need Help?
208
398
 
209
- # Lint
210
- npm run lint
399
+ - [Documentation](https://respira.press/docs)
400
+ - [Support](https://respira.press/support)
401
+ - [Report Issues](https://github.com/webmyc/respira-wordpress/issues)
402
+ - [Contact](mailto:support@respira.press)
211
403
 
212
- # Format
213
- npm run format
214
- ```
404
+ ---
215
405
 
216
406
  ## License
217
407
 
218
- MIT
408
+ MIT © [Respira](https://respira.press)
409
+
410
+ ---
411
+
412
+ <p align="center">
413
+ <strong>Built for the WordPress community</strong><br>
414
+ <a href="https://respira.press">respira.press</a>
415
+ </p>
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,KAAK,CAA2C;gBAE5C,WAAW,EAAE,mBAAmB,EAAE;IA2B9C,OAAO,CAAC,aAAa;IA8ErB,OAAO,CAAC,QAAQ;YAwyCF,cAAc;IA2QtB,GAAG;CAKV"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,KAAK,CAA2C;gBAE5C,WAAW,EAAE,mBAAmB,EAAE;IA2B9C,OAAO,CAAC,aAAa;IAsGrB,OAAO,CAAC,QAAQ;YAyiDF,cAAc;IAkTtB,GAAG;CAKV"}