@mediaproc/cli 0.7.0 โ†’ 0.8.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 (77) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +2 -4
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/add.d.ts.map +1 -1
  5. package/dist/commands/add.js +2 -0
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/batch.d.ts.map +1 -1
  8. package/dist/commands/batch.js +9 -0
  9. package/dist/commands/batch.js.map +1 -1
  10. package/dist/commands/benchmark.d.ts.map +1 -1
  11. package/dist/commands/benchmark.js +2 -0
  12. package/dist/commands/benchmark.js.map +1 -1
  13. package/dist/commands/compare.d.ts.map +1 -1
  14. package/dist/commands/compare.js +2 -0
  15. package/dist/commands/compare.js.map +1 -1
  16. package/dist/commands/delete.d.ts.map +1 -1
  17. package/dist/commands/delete.js +2 -0
  18. package/dist/commands/delete.js.map +1 -1
  19. package/dist/commands/detect.d.ts.map +1 -1
  20. package/dist/commands/detect.js +2 -0
  21. package/dist/commands/detect.js.map +1 -1
  22. package/dist/commands/doctor.js +1 -1
  23. package/dist/commands/doctor.js.map +1 -1
  24. package/dist/commands/help.d.ts.map +1 -1
  25. package/dist/commands/help.js +2 -0
  26. package/dist/commands/help.js.map +1 -1
  27. package/dist/commands/history.d.ts +0 -12
  28. package/dist/commands/history.d.ts.map +1 -1
  29. package/dist/commands/history.js +27 -158
  30. package/dist/commands/history.js.map +1 -1
  31. package/dist/commands/list.d.ts.map +1 -1
  32. package/dist/commands/list.js +2 -0
  33. package/dist/commands/list.js.map +1 -1
  34. package/dist/commands/plugins.d.ts.map +1 -1
  35. package/dist/commands/plugins.js +2 -0
  36. package/dist/commands/plugins.js.map +1 -1
  37. package/dist/commands/remove.d.ts.map +1 -1
  38. package/dist/commands/remove.js +2 -0
  39. package/dist/commands/remove.js.map +1 -1
  40. package/dist/commands/search.js +1 -1
  41. package/dist/commands/search.js.map +1 -1
  42. package/dist/commands/stats.d.ts.map +1 -1
  43. package/dist/commands/stats.js +2 -0
  44. package/dist/commands/stats.js.map +1 -1
  45. package/dist/commands/template.d.ts.map +1 -1
  46. package/dist/commands/template.js +6 -0
  47. package/dist/commands/template.js.map +1 -1
  48. package/dist/commands/update.d.ts.map +1 -1
  49. package/dist/commands/update.js +2 -0
  50. package/dist/commands/update.js.map +1 -1
  51. package/dist/commands/watch.d.ts.map +1 -1
  52. package/dist/commands/watch.js +2 -0
  53. package/dist/commands/watch.js.map +1 -1
  54. package/dist/commands/workspace.d.ts.map +1 -1
  55. package/dist/commands/workspace.js +7 -0
  56. package/dist/commands/workspace.js.map +1 -1
  57. package/dist/history-manager.d.ts +27 -0
  58. package/dist/history-manager.d.ts.map +1 -0
  59. package/dist/history-manager.js +84 -0
  60. package/dist/history-manager.js.map +1 -0
  61. package/dist/plugin-api.d.ts +6 -7
  62. package/dist/plugin-api.d.ts.map +1 -1
  63. package/dist/plugin-manager.d.ts +6 -0
  64. package/dist/plugin-manager.d.ts.map +1 -1
  65. package/dist/plugin-manager.js +27 -0
  66. package/dist/plugin-manager.js.map +1 -1
  67. package/package.json +5 -6
  68. package/LICENSE +0 -72
  69. package/README.md +0 -333
  70. package/dist/__tests__/plugin-manager.test.d.ts +0 -2
  71. package/dist/__tests__/plugin-manager.test.d.ts.map +0 -1
  72. package/dist/__tests__/plugin-manager.test.js +0 -7
  73. package/dist/__tests__/plugin-manager.test.js.map +0 -1
  74. package/dist/utils/branding.d.ts +0 -11
  75. package/dist/utils/branding.d.ts.map +0 -1
  76. package/dist/utils/branding.js +0 -59
  77. package/dist/utils/branding.js.map +0 -1
package/README.md DELETED
@@ -1,333 +0,0 @@
1
- # MediaProc
2
-
3
- > Universal media processing CLI with plugin architecture. One tool for images, videos, audio, and more.
4
-
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
- [![Version](https://img.shields.io/badge/version-0.6.0--beta-blue.svg)](https://www.npmjs.com/package/@mediaproc/cli)
7
- [![Node.js](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/)
8
-
9
- ```bash
10
- # Install
11
- npm install -g @mediaproc/cli
12
-
13
- # Process images
14
- mediaproc image resize photo.jpg --width 1920 --height 1080
15
- mediaproc image convert *.jpg --format webp --quality 85
16
-
17
- # Process videos
18
- mediaproc video compress movie.mp4 --quality high
19
- mediaproc video trim video.mp4 --start 00:01:30 --end 00:03:45
20
-
21
- # Process audio
22
- mediaproc audio convert song.wav --format mp3 --quality high
23
- mediaproc audio normalize podcast.mp3 --target -16
24
- ```
25
-
26
- ## Why MediaProc?
27
-
28
- **The Problem:** Modern development workflows require multiple tools for media processing:
29
- - FFmpeg for videos
30
- - ImageMagick for images
31
- - SoX for audio
32
- - Each with different syntax, steep learning curves, and complex workflows
33
-
34
- **The Solution:** MediaProc provides a unified CLI with consistent commands across all media types.
35
-
36
- | Feature | Traditional | MediaProc |
37
- |---------|------------|-----------|
38
- | **Tools Needed** | 5+ separate tools | One tool |
39
- | **Installation** | Complex setup | `npm install -g @mediaproc/cli` |
40
- | **Syntax** | Different for each | Consistent everywhere |
41
- | **Extensibility** | Limited | Plugin architecture |
42
-
43
- ## Quick Start
44
-
45
- ```bash
46
- # Install CLI
47
- npm install -g @mediaproc/cli
48
-
49
- # Install plugins (or use built-in ones)
50
- mediaproc add image
51
- mediaproc add video
52
- mediaproc add audio
53
-
54
- # List available plugins
55
- mediaproc list
56
-
57
- # Get help
58
- mediaproc --help
59
- mediaproc image --help
60
- ```
61
-
62
- ## Available Plugins
63
-
64
- ### Built-in Plugins
65
-
66
- Included with CLI installation:
67
-
68
- #### Image Plugin (51 commands)
69
- ```bash
70
- mediaproc image resize photo.jpg --width 1920
71
- mediaproc image convert *.png --format webp
72
- mediaproc image compress image.jpg --quality 85
73
- mediaproc image blur photo.jpg --sigma 10
74
- mediaproc image watermark photo.jpg --text "Copyright 2026"
75
- ```
76
-
77
- **Commands:** resize, crop, rotate, flip, convert, compress, optimize, blur, sharpen, grayscale, tint, watermark, thumbnail, and 36 more...
78
-
79
- **Formats:** JPG, PNG, WebP, AVIF, TIFF, GIF, SVG
80
-
81
- [Full Image Plugin Documentation โ†’](plugins/image/README.md)
82
-
83
- #### Video Plugin (6 commands)
84
- ```bash
85
- mediaproc video compress movie.mp4 --quality medium
86
- mediaproc video transcode video.mp4 --format webm --codec vp9
87
- mediaproc video trim video.mp4 --start 10 --end 60
88
- mediaproc video resize 4k-video.mp4 --preset 1080p
89
- mediaproc video merge video1.mp4 video2.mp4 video3.mp4
90
- mediaproc video extract movie.mp4 --type audio --output audio.mp3
91
- ```
92
-
93
- **Commands:** compress, transcode, trim, resize, merge, extract
94
-
95
- **Formats:** MP4, WebM, AVI, MKV, MOV
96
-
97
- [Full Video Plugin Documentation โ†’](plugins/video/README.md)
98
-
99
- #### Audio Plugin (5 commands)
100
- ```bash
101
- mediaproc audio convert song.wav --format mp3 --quality high
102
- mediaproc audio normalize podcast.mp3 --target -16
103
- mediaproc audio trim audio.wav --start 10 --duration 30
104
- mediaproc audio merge track1.mp3 track2.mp3 track3.mp3
105
- mediaproc audio extract video.mp4 --format mp3
106
- ```
107
-
108
- **Commands:** convert, normalize, trim, merge, extract
109
-
110
- **Formats:** MP3, AAC, WAV, FLAC, OGG, Opus
111
-
112
- [Full Audio Plugin Documentation โ†’](plugins/audio/README.md)
113
-
114
- ### Coming Soon
115
-
116
- - **Document** - PDF processing (Q2 2026)
117
- - **Animation** - GIF/Lottie optimization (Q2 2026)
118
- - **3D** - 3D model processing (Q3 2026)
119
- - **Stream** - HLS/DASH streaming (Q3 2026)
120
- - **AI** - AI-powered features (Q3 2026)
121
-
122
- ## Plugin Management
123
-
124
- ```bash
125
- # List installed plugins
126
- mediaproc list
127
-
128
- # Install plugins
129
- mediaproc add <plugin-name>
130
-
131
- # Remove plugins
132
- mediaproc remove <plugin-name>
133
-
134
- # Update plugins
135
- mediaproc update # Update all
136
- mediaproc update <plugin> # Update specific
137
-
138
- # Browse available plugins
139
- mediaproc plugins
140
- ```
141
-
142
- ## Examples
143
-
144
- ### Image Processing
145
-
146
- ```bash
147
- # Resize for web
148
- mediaproc image resize photo.jpg --width 1920 --height 1080 --fit cover
149
-
150
- # Batch convert to WebP
151
- mediaproc image convert *.jpg --format webp --quality 85
152
-
153
- # Create thumbnails
154
- mediaproc image thumbnail photo.jpg --size 256 --output thumb.jpg
155
-
156
- # Add watermark
157
- mediaproc image watermark photo.jpg --text "ยฉ 2026" --position southeast
158
-
159
- # Optimize for web
160
- mediaproc image optimize image.jpg --quality 80
161
- ```
162
-
163
- ### Video Processing
164
-
165
- ```bash
166
- # Compress video
167
- mediaproc video compress movie.mp4 --quality medium --output compressed.mp4
168
-
169
- # Convert to WebM
170
- mediaproc video transcode video.mp4 --format webm --codec vp9
171
-
172
- # Cut segment
173
- mediaproc video trim long-video.mp4 --start 00:10:00 --end 00:15:00
174
-
175
- # Scale down
176
- mediaproc video resize 4k-video.mp4 --preset 1080p
177
-
178
- # Extract audio
179
- mediaproc video extract movie.mp4 --type audio --output soundtrack.mp3
180
- ```
181
-
182
- ### Audio Processing
183
-
184
- ```bash
185
- # Convert to MP3
186
- mediaproc audio convert song.wav --format mp3 --quality 320k
187
-
188
- # Normalize volume
189
- mediaproc audio normalize podcast.mp3 --target -16 --output normalized.mp3
190
-
191
- # Merge tracks
192
- mediaproc audio merge intro.mp3 main.mp3 outro.mp3 --output complete.mp3
193
-
194
- # Extract from video
195
- mediaproc audio extract video.mp4 --format flac
196
- ```
197
-
198
- ## CLI Commands
199
-
200
- ### Plugin Management
201
- - `mediaproc add <plugin>` - Install plugin
202
- - `mediaproc remove <plugin>` - Uninstall plugin
203
- - `mediaproc list` - List installed plugins
204
- - `mediaproc plugins` - Browse available plugins
205
- - `mediaproc update [plugin]` - Update plugin(s)
206
-
207
- ### Help & Info
208
- - `mediaproc --help` - Show help
209
- - `mediaproc <plugin> --help` - Plugin-specific help
210
- - `mediaproc --version` - Show version
211
-
212
- ## Requirements
213
-
214
- - **Node.js** >= 18.0.0
215
- - **FFmpeg** (for video/audio plugins)
216
- ```bash
217
- # macOS
218
- brew install ffmpeg
219
-
220
- # Ubuntu/Debian
221
- sudo apt install ffmpeg
222
-
223
- # Windows
224
- choco install ffmpeg
225
- ```
226
-
227
- ## Development
228
-
229
- ### Project Structure
230
-
231
- ```
232
- mediaproc/
233
- โ”œโ”€โ”€ src/ # Core CLI source
234
- โ”œโ”€โ”€ plugins/ # Official plugins
235
- โ”‚ โ”œโ”€โ”€ image/ # Image processing
236
- โ”‚ โ”œโ”€โ”€ video/ # Video processing
237
- โ”‚ โ””โ”€โ”€ audio/ # Audio processing
238
- โ”œโ”€โ”€ docs/ # Documentation
239
- โ””โ”€โ”€ web/ # Documentation website
240
- ```
241
-
242
- ### Build & Test
243
-
244
- ```bash
245
- # Install dependencies
246
- pnpm install
247
-
248
- # Build CLI
249
- pnpm build
250
-
251
- # Build all plugins
252
- pnpm build:all
253
-
254
- # Test
255
- pnpm test
256
-
257
- # Run locally
258
- node dist/cli.js
259
- ```
260
-
261
- ### Creating Plugins
262
-
263
- See [Plugin Integration Guide](docs/plugin-integration-guide.md) for complete documentation on creating your own plugins.
264
-
265
- ## Documentation
266
-
267
- - [Installation Guide](docs/configuration.md#installation)
268
- - [Plugin Integration Guide](docs/plugin-integration-guide.md)
269
- - [Plugin System Architecture](docs/plugin-system.md)
270
- - [Architecture Overview](docs/architecture-decisions.md)
271
- - [Contributing Guide](CONTRIBUTING.md)
272
- - [Code of Conduct](CODE_OF_CONDUCT.md)
273
-
274
- **๐Ÿ“š Full Documentation:** [https://mediaproc.dev](https://mediaproc.dev)
275
-
276
- ## Roadmap
277
-
278
- **Current (v0.6.0-beta):**
279
- - โœ… Core CLI with plugin system
280
- - โœ… Image Plugin (51 commands)
281
- - โœ… Video Plugin (6 commands)
282
- - โœ… Audio Plugin (5 commands)
283
-
284
- **Q1 2026:**
285
- - ๐Ÿšง Document Plugin
286
- - ๐Ÿšง Comprehensive testing
287
- - ๐Ÿšง CI/CD pipeline
288
-
289
- **Q2 2026:**
290
- - ๐Ÿ“‹ Animation Plugin
291
- - ๐Ÿ“‹ Metadata Plugin
292
- - ๐Ÿ“‹ v1.0 Release
293
-
294
- **Q3-Q4 2026:**
295
- - ๐Ÿ“‹ 3D Plugin
296
- - ๐Ÿ“‹ Stream Plugin
297
- - ๐Ÿ“‹ AI Plugin
298
- - ๐Ÿ“‹ Plugin Marketplace
299
-
300
- See [Upcoming Features](docs/upcoming-features.md) for details.
301
-
302
- ## Contributing
303
-
304
- We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
305
-
306
- **Ways to contribute:**
307
- - ๐Ÿ› Report bugs
308
- - ๐Ÿ’ก Suggest features
309
- - ๐Ÿ“ Improve documentation
310
- - ๐Ÿ”ง Submit pull requests
311
- - ๐ŸŽจ Create plugins
312
-
313
- ## Community
314
-
315
- - **Issues:** [GitHub Issues](https://github.com/0xshariq/mediaproc-cli/issues)
316
- - **Discussions:** [GitHub Discussions](https://github.com/0xshariq/mediaproc-cli/discussions)
317
- - **Twitter:** [@0xshariq](https://twitter.com/0xshariq)
318
-
319
- ## License
320
-
321
- MIT ยฉ [0xshariq](https://github.com/0xshariq)
322
-
323
- See [LICENSE](LICENSE) for details.
324
-
325
- ---
326
-
327
- <div align="center">
328
-
329
- **Built with โค๏ธ by [@0xshariq](https://github.com/0xshariq)**
330
-
331
- Give us a โญ๏ธ if you find this project useful!
332
-
333
- </div>
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=plugin-manager.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/plugin-manager.test.ts"],"names":[],"mappings":""}
@@ -1,7 +0,0 @@
1
- import { describe, test, expect } from '@jest/globals';
2
- describe('Plugin Manager', () => {
3
- test('placeholder test', () => {
4
- expect(true).toBe(true);
5
- });
6
- });
7
- //# sourceMappingURL=plugin-manager.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/plugin-manager.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Show CLI branding footer with documentation and GitHub links
3
- */
4
- export declare function showBranding(): void;
5
- /**
6
- * Show plugin branding footer with version
7
- * @param pluginName - Name of the plugin (e.g., 'image', 'video', 'audio')
8
- * @param pluginPath - Path to plugin's package.json
9
- */
10
- export declare function showPluginBranding(pluginName: string, pluginPath: string): void;
11
- //# sourceMappingURL=branding.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"branding.d.ts","sourceRoot":"","sources":["../../src/utils/branding.ts"],"names":[],"mappings":"AAmCA;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAOnC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAO/E"}
@@ -1,59 +0,0 @@
1
- import { readFileSync } from 'fs';
2
- import { join, dirname } from 'path';
3
- import { fileURLToPath } from 'url';
4
- /**
5
- * Get version from package.json
6
- */
7
- function getVersion(packagePath) {
8
- try {
9
- const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));
10
- return packageJson.version || '0.0.0';
11
- }
12
- catch {
13
- return '0.0.0';
14
- }
15
- }
16
- /**
17
- * Get CLI version from root package.json
18
- */
19
- function getCliVersion() {
20
- try {
21
- // For ES modules, use import.meta.url
22
- if (typeof import.meta.url !== 'undefined') {
23
- const currentDir = dirname(fileURLToPath(import.meta.url));
24
- const packagePath = join(currentDir, '../../package.json');
25
- return getVersion(packagePath);
26
- }
27
- // Fallback: try from process.cwd()
28
- const packagePath = join(process.cwd(), 'package.json');
29
- return getVersion(packagePath);
30
- }
31
- catch {
32
- return '0.6.0'; // Fallback version
33
- }
34
- }
35
- /**
36
- * Show CLI branding footer with documentation and GitHub links
37
- */
38
- export function showBranding() {
39
- const version = getCliVersion();
40
- console.log('\n' + 'โ”€'.repeat(60));
41
- console.log(` ๐Ÿ’™ Powered by MediaProc CLI v${version}`);
42
- console.log(' ๐Ÿ“š Documentation: \x1b[36mhttps://docs-mediaproc.vercel.app/\x1b[0m');
43
- console.log(' โญ Star us: \x1b[36mhttps://github.com/0xshariq/mediaproc-cli\x1b[0m');
44
- console.log('โ”€'.repeat(60) + '\n');
45
- }
46
- /**
47
- * Show plugin branding footer with version
48
- * @param pluginName - Name of the plugin (e.g., 'image', 'video', 'audio')
49
- * @param pluginPath - Path to plugin's package.json
50
- */
51
- export function showPluginBranding(pluginName, pluginPath) {
52
- const version = getVersion(pluginPath);
53
- console.log('\n' + 'โ”€'.repeat(60));
54
- console.log(` ๐Ÿ’™ ${pluginName.charAt(0).toUpperCase() + pluginName.slice(1)} Plugin v${version} ยท Powered by MediaProc`);
55
- console.log(' ๐Ÿ“š Documentation: \x1b[36mhttps://docs-mediaproc.vercel.app/\x1b[0m');
56
- console.log(' โญ Star us: \x1b[36mhttps://github.com/0xshariq/mediaproc-cli\x1b[0m');
57
- console.log('โ”€'.repeat(60) + '\n');
58
- }
59
- //# sourceMappingURL=branding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"branding.js","sourceRoot":"","sources":["../../src/utils/branding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC;;GAEG;AACH,SAAS,UAAU,CAAC,WAAmB;IACrC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,OAAO,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,sCAAsC;QACtC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;YAC3D,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QACD,mCAAmC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACxD,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,CAAC,mBAAmB;IACrC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,UAAkB;IACvE,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,QAAQ,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,OAAO,yBAAyB,CAAC,CAAC;IAC1H,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACrC,CAAC"}