episoda 0.2.3 → 0.2.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.
Files changed (72) hide show
  1. package/dist/commands/auth.js +1 -1
  2. package/dist/commands/auth.js.map +1 -1
  3. package/dist/commands/dev.js +1 -1
  4. package/dist/commands/dev.js.map +1 -1
  5. package/dist/commands/status.d.ts +5 -1
  6. package/dist/commands/status.d.ts.map +1 -1
  7. package/dist/commands/status.js +29 -2
  8. package/dist/commands/status.js.map +1 -1
  9. package/dist/daemon/daemon-manager.js +1 -1
  10. package/dist/daemon/daemon-manager.js.map +1 -1
  11. package/dist/daemon/daemon-process.js +42 -4
  12. package/dist/daemon/daemon-process.js.map +1 -1
  13. package/dist/daemon/identity-server.d.ts.map +1 -1
  14. package/dist/daemon/identity-server.js +4 -0
  15. package/dist/daemon/identity-server.js.map +1 -1
  16. package/dist/daemon/machine-id.js +1 -1
  17. package/dist/daemon/machine-id.js.map +1 -1
  18. package/dist/daemon/project-tracker.js +1 -1
  19. package/dist/daemon/project-tracker.js.map +1 -1
  20. package/dist/dev-wrapper.js +1 -1
  21. package/dist/dev-wrapper.js.map +1 -1
  22. package/dist/index.js +5 -3
  23. package/dist/index.js.map +1 -1
  24. package/dist/ipc/ipc-client.d.ts +21 -0
  25. package/dist/ipc/ipc-client.d.ts.map +1 -1
  26. package/dist/ipc/ipc-client.js +13 -1
  27. package/dist/ipc/ipc-client.js.map +1 -1
  28. package/dist/ipc/ipc-server.js +1 -1
  29. package/dist/ipc/ipc-server.js.map +1 -1
  30. package/dist/output.d.ts +1 -1
  31. package/dist/output.d.ts.map +1 -1
  32. package/package.json +2 -1
  33. package/dist/core/auth.d.ts +0 -26
  34. package/dist/core/auth.d.ts.map +0 -1
  35. package/dist/core/auth.js +0 -113
  36. package/dist/core/auth.js.map +0 -1
  37. package/dist/core/command-protocol.d.ts +0 -262
  38. package/dist/core/command-protocol.d.ts.map +0 -1
  39. package/dist/core/command-protocol.js +0 -13
  40. package/dist/core/command-protocol.js.map +0 -1
  41. package/dist/core/connection-manager.d.ts +0 -58
  42. package/dist/core/connection-manager.d.ts.map +0 -1
  43. package/dist/core/connection-manager.js +0 -215
  44. package/dist/core/connection-manager.js.map +0 -1
  45. package/dist/core/errors.d.ts +0 -18
  46. package/dist/core/errors.d.ts.map +0 -1
  47. package/dist/core/errors.js +0 -55
  48. package/dist/core/errors.js.map +0 -1
  49. package/dist/core/git-executor.d.ts +0 -157
  50. package/dist/core/git-executor.d.ts.map +0 -1
  51. package/dist/core/git-executor.js +0 -1605
  52. package/dist/core/git-executor.js.map +0 -1
  53. package/dist/core/git-parser.d.ts +0 -40
  54. package/dist/core/git-parser.d.ts.map +0 -1
  55. package/dist/core/git-parser.js +0 -194
  56. package/dist/core/git-parser.js.map +0 -1
  57. package/dist/core/git-validator.d.ts +0 -42
  58. package/dist/core/git-validator.d.ts.map +0 -1
  59. package/dist/core/git-validator.js +0 -102
  60. package/dist/core/git-validator.js.map +0 -1
  61. package/dist/core/index.d.ts +0 -17
  62. package/dist/core/index.d.ts.map +0 -1
  63. package/dist/core/index.js +0 -41
  64. package/dist/core/index.js.map +0 -1
  65. package/dist/core/version.d.ts +0 -9
  66. package/dist/core/version.d.ts.map +0 -1
  67. package/dist/core/version.js +0 -19
  68. package/dist/core/version.js.map +0 -1
  69. package/dist/core/websocket-client.d.ts +0 -122
  70. package/dist/core/websocket-client.d.ts.map +0 -1
  71. package/dist/core/websocket-client.js +0 -438
  72. package/dist/core/websocket-client.js.map +0 -1
@@ -1,215 +0,0 @@
1
- "use strict";
2
- /**
3
- * Connection Manager for CLI WebSocket tracking (Phase 2)
4
- *
5
- * Simpler than the full Git command WebSocket client.
6
- * Focuses only on maintaining connection status via heartbeats.
7
- */
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
- Object.defineProperty(o, "default", { enumerable: true, value: v });
21
- }) : function(o, v) {
22
- o["default"] = v;
23
- });
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
- var __importDefault = (this && this.__importDefault) || function (mod) {
42
- return (mod && mod.__esModule) ? mod : { "default": mod };
43
- };
44
- Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.ConnectionManager = void 0;
46
- const ws_1 = __importDefault(require("ws"));
47
- const os = __importStar(require("os"));
48
- class ConnectionManager {
49
- constructor(config) {
50
- this.ws = null;
51
- this.pingInterval = null;
52
- this.reconnectTimeout = null;
53
- this.connectionId = null;
54
- this.isIntentionalClose = false;
55
- this.reconnectAttempts = 0;
56
- this.maxReconnectAttempts = 10;
57
- this.config = config;
58
- }
59
- /**
60
- * Connect to the WebSocket server
61
- */
62
- connect() {
63
- return new Promise((resolve, reject) => {
64
- try {
65
- // Convert HTTP to WebSocket URL
66
- const wsUrl = this.config.apiUrl
67
- .replace('http://', 'ws://')
68
- .replace('https://', 'wss://');
69
- const url = `${wsUrl}/api/cli/ws`;
70
- console.log(`[Connection] Connecting to ${url}`);
71
- this.ws = new ws_1.default(url);
72
- this.isIntentionalClose = false;
73
- this.ws.on('open', () => {
74
- console.log('[Connection] WebSocket connected');
75
- this.reconnectAttempts = 0;
76
- // Send connect message
77
- this.send({
78
- type: 'connect',
79
- projectId: this.config.projectId,
80
- userId: this.config.userId,
81
- workspaceId: this.config.workspaceId,
82
- cliVersion: this.config.cliVersion,
83
- workingDirectory: this.config.workingDirectory,
84
- osPlatform: os.platform(),
85
- osArch: os.arch(),
86
- });
87
- });
88
- this.ws.on('message', (data) => {
89
- try {
90
- const message = JSON.parse(data.toString());
91
- switch (message.type) {
92
- case 'connected':
93
- this.connectionId = message.connectionId;
94
- console.log(`[Connection] Connected with ID: ${this.connectionId}`);
95
- this.startHeartbeat();
96
- if (this.connectionId) {
97
- resolve(this.connectionId);
98
- }
99
- else {
100
- reject(new Error('Connection ID not received from server'));
101
- }
102
- break;
103
- case 'pong':
104
- // Heartbeat acknowledged
105
- break;
106
- case 'error':
107
- console.error(`[Connection] Server error: ${message.message}`);
108
- reject(new Error(message.message));
109
- break;
110
- }
111
- }
112
- catch (error) {
113
- console.error('[Connection] Failed to parse message:', error);
114
- }
115
- });
116
- this.ws.on('close', (code, reason) => {
117
- console.log(`[Connection] WebSocket closed: ${code} ${reason.toString()}`);
118
- this.stopHeartbeat();
119
- if (!this.isIntentionalClose && this.reconnectAttempts < this.maxReconnectAttempts) {
120
- this.scheduleReconnect();
121
- }
122
- });
123
- this.ws.on('error', (error) => {
124
- console.error('[Connection] WebSocket error:', error);
125
- reject(error);
126
- });
127
- }
128
- catch (error) {
129
- reject(error);
130
- }
131
- });
132
- }
133
- /**
134
- * Disconnect from the server
135
- */
136
- disconnect() {
137
- console.log('[Connection] Disconnecting...');
138
- this.isIntentionalClose = true;
139
- this.stopHeartbeat();
140
- this.clearReconnectTimeout();
141
- if (this.ws) {
142
- if (this.ws.readyState === ws_1.default.OPEN) {
143
- this.send({ type: 'disconnect' });
144
- }
145
- this.ws.close();
146
- this.ws = null;
147
- }
148
- }
149
- /**
150
- * Send a message to the server
151
- */
152
- send(message) {
153
- if (this.ws?.readyState === ws_1.default.OPEN) {
154
- this.ws.send(JSON.stringify(message));
155
- }
156
- }
157
- /**
158
- * Start sending heartbeat pings
159
- */
160
- startHeartbeat() {
161
- this.stopHeartbeat();
162
- // Send ping every 15 seconds
163
- this.pingInterval = setInterval(() => {
164
- this.send({
165
- type: 'ping',
166
- timestamp: new Date().toISOString(),
167
- });
168
- }, 15000);
169
- // Send initial ping
170
- this.send({
171
- type: 'ping',
172
- timestamp: new Date().toISOString(),
173
- });
174
- }
175
- /**
176
- * Stop heartbeat
177
- */
178
- stopHeartbeat() {
179
- if (this.pingInterval) {
180
- clearInterval(this.pingInterval);
181
- this.pingInterval = null;
182
- }
183
- }
184
- /**
185
- * Schedule reconnection with exponential backoff
186
- */
187
- scheduleReconnect() {
188
- this.clearReconnectTimeout();
189
- const delay = Math.min(1000 * Math.pow(2, this.reconnectAttempts), 30000);
190
- console.log(`[Connection] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts + 1}/${this.maxReconnectAttempts})`);
191
- this.reconnectTimeout = setTimeout(() => {
192
- this.reconnectAttempts++;
193
- this.connect().catch((error) => {
194
- console.error('[Connection] Reconnection failed:', error);
195
- });
196
- }, delay);
197
- }
198
- /**
199
- * Clear reconnect timeout
200
- */
201
- clearReconnectTimeout() {
202
- if (this.reconnectTimeout) {
203
- clearTimeout(this.reconnectTimeout);
204
- this.reconnectTimeout = null;
205
- }
206
- }
207
- /**
208
- * Check if connected
209
- */
210
- isConnected() {
211
- return this.ws?.readyState === ws_1.default.OPEN && this.connectionId !== null;
212
- }
213
- }
214
- exports.ConnectionManager = ConnectionManager;
215
- //# sourceMappingURL=connection-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/core/connection-manager.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Error handling utilities
3
- */
4
- import { ErrorCode } from './command-protocol';
5
- /**
6
- * Custom error class for Episoda operations
7
- */
8
- export declare class EpisodaError extends Error {
9
- code: ErrorCode;
10
- details?: Record<string, any> | undefined;
11
- constructor(code: ErrorCode, message: string, details?: Record<string, any> | undefined);
12
- }
13
- /**
14
- * Create a user-friendly error message from error code
15
- * (For CLI use - MCP will format differently)
16
- */
17
- export declare function formatErrorMessage(code: ErrorCode, details?: Record<string, any>): string;
18
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IAE5B,IAAI,EAAE,SAAS;IAEf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;gBAF7B,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YAAA;CAKvC;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAgCzF"}
@@ -1,55 +0,0 @@
1
- "use strict";
2
- /**
3
- * Error handling utilities
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.EpisodaError = void 0;
7
- exports.formatErrorMessage = formatErrorMessage;
8
- /**
9
- * Custom error class for Episoda operations
10
- */
11
- class EpisodaError extends Error {
12
- constructor(code, message, details) {
13
- super(message);
14
- this.code = code;
15
- this.details = details;
16
- this.name = 'EpisodaError';
17
- }
18
- }
19
- exports.EpisodaError = EpisodaError;
20
- // Note: parseGitError is exported from git-parser.ts
21
- /**
22
- * Create a user-friendly error message from error code
23
- * (For CLI use - MCP will format differently)
24
- */
25
- function formatErrorMessage(code, details) {
26
- const messages = {
27
- 'GIT_NOT_INSTALLED': 'Git is not installed or not in PATH',
28
- 'NOT_GIT_REPO': 'Not a git repository',
29
- 'MERGE_CONFLICT': 'Merge conflict detected',
30
- 'REBASE_CONFLICT': 'Rebase conflict detected - resolve conflicts or abort rebase',
31
- 'UNCOMMITTED_CHANGES': 'Uncommitted changes would be overwritten',
32
- 'NETWORK_ERROR': 'Network error occurred',
33
- 'AUTH_FAILURE': 'Authentication failed',
34
- 'BRANCH_NOT_FOUND': 'Branch not found',
35
- 'BRANCH_ALREADY_EXISTS': 'Branch already exists',
36
- 'PUSH_REJECTED': 'Push rejected by remote',
37
- 'COMMAND_TIMEOUT': 'Command timed out',
38
- 'UNKNOWN_ERROR': 'Unknown error occurred'
39
- };
40
- let message = messages[code] || `Error: ${code}`;
41
- // Add details if provided
42
- if (details) {
43
- if (details.uncommittedFiles && details.uncommittedFiles.length > 0) {
44
- message += `\nUncommitted files: ${details.uncommittedFiles.join(', ')}`;
45
- }
46
- if (details.conflictingFiles && details.conflictingFiles.length > 0) {
47
- message += `\nConflicting files: ${details.conflictingFiles.join(', ')}`;
48
- }
49
- if (details.branchName) {
50
- message += `\nBranch: ${details.branchName}`;
51
- }
52
- }
53
- return message;
54
- }
55
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAwBH,gDAgCC;AApDD;;GAEG;AACH,MAAa,YAAa,SAAQ,KAAK;IACrC,YACS,IAAe,EACtB,OAAe,EACR,OAA6B;QAEpC,KAAK,CAAC,OAAO,CAAC,CAAA;QAJP,SAAI,GAAJ,IAAI,CAAW;QAEf,YAAO,GAAP,OAAO,CAAsB;QAGpC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF;AATD,oCASC;AAED,qDAAqD;AAErD;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,IAAe,EAAE,OAA6B;IAC/E,MAAM,QAAQ,GAA8B;QAC1C,mBAAmB,EAAE,qCAAqC;QAC1D,cAAc,EAAE,sBAAsB;QACtC,gBAAgB,EAAE,yBAAyB;QAC3C,iBAAiB,EAAE,8DAA8D;QACjF,qBAAqB,EAAE,0CAA0C;QACjE,eAAe,EAAE,wBAAwB;QACzC,cAAc,EAAE,uBAAuB;QACvC,kBAAkB,EAAE,kBAAkB;QACtC,uBAAuB,EAAE,uBAAuB;QAChD,eAAe,EAAE,yBAAyB;QAC1C,iBAAiB,EAAE,mBAAmB;QACtC,eAAe,EAAE,wBAAwB;KAC1C,CAAA;IAED,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,IAAI,EAAE,CAAA;IAEhD,0BAA0B;IAC1B,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,OAAO,IAAI,wBAAwB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QAC1E,CAAC;QACD,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,OAAO,IAAI,wBAAwB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QAC1E,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,IAAI,aAAa,OAAO,CAAC,UAAU,EAAE,CAAA;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1,157 +0,0 @@
1
- /**
2
- * Git Command Executor
3
- *
4
- * Executes git commands with error handling and returns structured results.
5
- * Interface-agnostic: Returns structured data, not formatted strings.
6
- */
7
- import { GitCommand, ExecutionResult, ExecutionOptions } from './command-protocol';
8
- /**
9
- * Executes git commands with error handling
10
- *
11
- * DESIGN PRINCIPLES:
12
- * - Interface-agnostic: Returns structured data, not formatted strings
13
- * - No console.log: Let the interface handle output
14
- * - Error codes: Return error codes, not messages
15
- * - Reusable: Can be used by CLI, MCP, or any other interface
16
- */
17
- export declare class GitExecutor {
18
- /**
19
- * Execute a git command
20
- * @param command - The git command to execute
21
- * @param options - Execution options (timeout, cwd, etc.)
22
- * @returns Structured result with success/error details
23
- */
24
- execute(command: GitCommand, options?: ExecutionOptions): Promise<ExecutionResult>;
25
- /**
26
- * Execute checkout command
27
- */
28
- private executeCheckout;
29
- /**
30
- * Execute create_branch command
31
- */
32
- private executeCreateBranch;
33
- /**
34
- * Execute commit command
35
- */
36
- private executeCommit;
37
- /**
38
- * Execute push command
39
- * EP769: Added force parameter for pushing rebased branches
40
- */
41
- private executePush;
42
- /**
43
- * Execute status command
44
- */
45
- private executeStatus;
46
- /**
47
- * Execute pull command
48
- */
49
- private executePull;
50
- /**
51
- * Execute delete_branch command
52
- */
53
- private executeDeleteBranch;
54
- /**
55
- * EP597: Execute branch_exists command
56
- * Checks if a branch exists locally and/or remotely
57
- */
58
- private executeBranchExists;
59
- /**
60
- * EP597: Execute branch_has_commits command
61
- * Checks if a branch has commits ahead of the base branch (default: main)
62
- */
63
- private executeBranchHasCommits;
64
- /**
65
- * EP598: Execute main branch check - returns current branch, uncommitted files, and unpushed commits
66
- */
67
- private executeMainBranchCheck;
68
- /**
69
- * EP599: Execute get_commits command
70
- * Returns commits for a branch with pushed/unpushed status
71
- */
72
- private executeGetCommits;
73
- /**
74
- * Execute git stash operations
75
- */
76
- private executeStash;
77
- /**
78
- * Execute git reset
79
- */
80
- private executeReset;
81
- /**
82
- * Execute git merge
83
- */
84
- private executeMerge;
85
- /**
86
- * Execute git cherry-pick
87
- */
88
- private executeCherryPick;
89
- /**
90
- * Execute git clean
91
- */
92
- private executeClean;
93
- /**
94
- * Execute git add
95
- */
96
- private executeAdd;
97
- /**
98
- * Execute git fetch
99
- */
100
- private executeFetch;
101
- /**
102
- * Execute move_to_module - composite operation
103
- * Moves commits/changes to a module branch with conflict handling
104
- */
105
- private executeMoveToModule;
106
- /**
107
- * Execute discard_main_changes - composite operation
108
- * Discards all uncommitted files and local commits on main branch
109
- */
110
- private executeDiscardMainChanges;
111
- /**
112
- * EP523: Get sync status of a branch relative to main
113
- * Returns how many commits behind/ahead the branch is
114
- */
115
- private executeSyncStatus;
116
- /**
117
- * EP523: Sync local main branch with remote
118
- * Used before creating new branches to ensure we branch from latest main
119
- */
120
- private executeSyncMain;
121
- /**
122
- * EP523: Rebase a branch onto main
123
- * Used when resuming work on a branch that's behind main
124
- */
125
- private executeRebaseBranch;
126
- /**
127
- * EP523: Abort an in-progress rebase
128
- * Returns to the state before rebase was started
129
- */
130
- private executeRebaseAbort;
131
- /**
132
- * EP523: Continue a paused rebase after conflicts are resolved
133
- */
134
- private executeRebaseContinue;
135
- /**
136
- * EP523: Check if a rebase is currently in progress
137
- */
138
- private executeRebaseStatus;
139
- /**
140
- * Run a git command and return structured result
141
- */
142
- private runGitCommand;
143
- /**
144
- * Validate that git is installed
145
- */
146
- private validateGitInstalled;
147
- /**
148
- * Check if directory is a git repository
149
- */
150
- private isGitRepository;
151
- /**
152
- * Detect the git working directory (repository root)
153
- * @returns Path to the git repository root
154
- */
155
- private detectWorkingDirectory;
156
- }
157
- //# sourceMappingURL=git-executor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-executor.d.ts","sourceRoot":"","sources":["../../src/core/git-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAa,MAAM,oBAAoB,CAAA;AAkB7F;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB;;;;;OAKG;IACG,OAAO,CACX,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC;IAmG3B;;OAEG;YACW,eAAe;IAoC7B;;OAEG;YACW,mBAAmB;IAmCjC;;OAEG;YACW,aAAa;IA4C3B;;;OAGG;YACW,WAAW;IAqCzB;;OAEG;YACW,aAAa;IAqB3B;;OAEG;YACW,WAAW;IAsDzB;;OAEG;YACW,mBAAmB;IAsBjC;;;OAGG;YACW,mBAAmB;IA6DjC;;;OAGG;YACW,uBAAuB;IAuErC;;OAEG;YACW,sBAAsB;IAsEpC;;;OAGG;YACW,iBAAiB;IAwG/B;;OAEG;YACW,YAAY;IAuC1B;;OAEG;YACW,YAAY;IAqB1B;;OAEG;YACW,YAAY;IAkD1B;;OAEG;YACW,iBAAiB;IA4B/B;;OAEG;YACW,YAAY;IAyB1B;;OAEG;YACW,UAAU;IAmCxB;;OAEG;YACW,YAAY;IA+B1B;;;OAGG;YACW,mBAAmB;IAmKjC;;;OAGG;YACW,yBAAyB;IAqEvC;;;OAGG;YACW,iBAAiB;IAiF/B;;;OAGG;YACW,eAAe;IAoF7B;;;OAGG;YACW,mBAAmB;IAuGjC;;;OAGG;YACW,kBAAkB;IAkChC;;OAEG;YACW,qBAAqB;IAmEnC;;OAEG;YACW,mBAAmB;IA0EjC;;OAEG;YACW,aAAa;IAwF3B;;OAEG;YACW,oBAAoB;IASlC;;OAEG;YACW,eAAe;IAS7B;;;OAGG;YACW,sBAAsB;CAWrC"}