@ecmaos/coreutils 0.2.0 → 0.3.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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +25 -0
- package/LICENSE +1 -1
- package/dist/commands/cal.js +2 -2
- package/dist/commands/cal.js.map +1 -1
- package/dist/commands/cat.js +2 -2
- package/dist/commands/cd.js +2 -2
- package/dist/commands/chmod.d.ts.map +1 -1
- package/dist/commands/chmod.js +16 -11
- package/dist/commands/chmod.js.map +1 -1
- package/dist/commands/cp.js +2 -2
- package/dist/commands/cp.js.map +1 -1
- package/dist/commands/date.js +2 -2
- package/dist/commands/date.js.map +1 -1
- package/dist/commands/echo.js +2 -2
- package/dist/commands/echo.js.map +1 -1
- package/dist/commands/false.js +2 -2
- package/dist/commands/fetch.d.ts +4 -0
- package/dist/commands/fetch.d.ts.map +1 -0
- package/dist/commands/fetch.js +210 -0
- package/dist/commands/fetch.js.map +1 -0
- package/dist/commands/format.d.ts +4 -0
- package/dist/commands/format.d.ts.map +1 -0
- package/dist/commands/format.js +178 -0
- package/dist/commands/format.js.map +1 -0
- package/dist/commands/hash.d.ts +4 -0
- package/dist/commands/hash.d.ts.map +1 -0
- package/dist/commands/hash.js +200 -0
- package/dist/commands/hash.js.map +1 -0
- package/dist/commands/head.js +2 -2
- package/dist/commands/id.js +2 -2
- package/dist/commands/id.js.map +1 -1
- package/dist/commands/less.d.ts.map +1 -1
- package/dist/commands/less.js +53 -2
- package/dist/commands/less.js.map +1 -1
- package/dist/commands/ls.d.ts.map +1 -1
- package/dist/commands/ls.js +120 -97
- package/dist/commands/ls.js.map +1 -1
- package/dist/commands/man.d.ts +4 -0
- package/dist/commands/man.d.ts.map +1 -0
- package/dist/commands/man.js +554 -0
- package/dist/commands/man.js.map +1 -0
- package/dist/commands/mkdir.js +2 -2
- package/dist/commands/mkdir.js.map +1 -1
- package/dist/commands/mktemp.d.ts +4 -0
- package/dist/commands/mktemp.d.ts.map +1 -0
- package/dist/commands/mktemp.js +229 -0
- package/dist/commands/mktemp.js.map +1 -0
- package/dist/commands/nc.js +2 -2
- package/dist/commands/nc.js.map +1 -1
- package/dist/commands/passkey.js +3 -3
- package/dist/commands/pwd.js +2 -2
- package/dist/commands/pwd.js.map +1 -1
- package/dist/commands/rm.d.ts.map +1 -1
- package/dist/commands/rm.js +57 -12
- package/dist/commands/rm.js.map +1 -1
- package/dist/commands/rmdir.js +2 -2
- package/dist/commands/rmdir.js.map +1 -1
- package/dist/commands/sockets.js +1 -1
- package/dist/commands/stat.d.ts.map +1 -1
- package/dist/commands/stat.js +37 -15
- package/dist/commands/stat.js.map +1 -1
- package/dist/commands/tail.js +2 -2
- package/dist/commands/tar.d.ts +4 -0
- package/dist/commands/tar.d.ts.map +1 -0
- package/dist/commands/tar.js +693 -0
- package/dist/commands/tar.js.map +1 -0
- package/dist/commands/touch.js +2 -2
- package/dist/commands/touch.js.map +1 -1
- package/dist/commands/true.js +2 -2
- package/dist/commands/unzip.d.ts +4 -0
- package/dist/commands/unzip.d.ts.map +1 -0
- package/dist/commands/unzip.js +443 -0
- package/dist/commands/unzip.js.map +1 -0
- package/dist/commands/user.d.ts +4 -0
- package/dist/commands/user.d.ts.map +1 -0
- package/dist/commands/user.js +427 -0
- package/dist/commands/user.js.map +1 -0
- package/dist/commands/whoami.js +2 -2
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/zip.d.ts +4 -0
- package/dist/commands/zip.d.ts.map +1 -0
- package/dist/commands/zip.js +264 -0
- package/dist/commands/zip.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -1
- package/dist/index.js.map +1 -1
- package/package.json +6 -4
- package/src/commands/cal.ts +2 -2
- package/src/commands/cat.ts +2 -2
- package/src/commands/cd.ts +2 -2
- package/src/commands/chmod.ts +19 -11
- package/src/commands/cp.ts +2 -2
- package/src/commands/date.ts +2 -2
- package/src/commands/echo.ts +2 -2
- package/src/commands/false.ts +2 -2
- package/src/commands/fetch.ts +205 -0
- package/src/commands/format.ts +204 -0
- package/src/commands/hash.ts +215 -0
- package/src/commands/head.ts +2 -2
- package/src/commands/id.ts +2 -2
- package/src/commands/less.ts +50 -2
- package/src/commands/ls.ts +131 -91
- package/src/commands/man.ts +643 -0
- package/src/commands/mkdir.ts +2 -2
- package/src/commands/mktemp.ts +235 -0
- package/src/commands/nc.ts +2 -2
- package/src/commands/passkey.ts +3 -3
- package/src/commands/pwd.ts +2 -2
- package/src/commands/rm.ts +54 -12
- package/src/commands/rmdir.ts +2 -2
- package/src/commands/sockets.ts +1 -1
- package/src/commands/stat.ts +44 -16
- package/src/commands/tail.ts +2 -2
- package/src/commands/tar.ts +737 -0
- package/src/commands/touch.ts +2 -2
- package/src/commands/true.ts +2 -2
- package/src/commands/unzip.ts +517 -0
- package/src/commands/user.ts +436 -0
- package/src/commands/whoami.ts +2 -2
- package/src/commands/zip.ts +319 -0
- package/src/index.ts +28 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { TerminalCommand } from '../shared/terminal-command.js';
|
|
3
|
+
import { writelnStdout, writelnStderr } from '../shared/helpers.js';
|
|
4
|
+
function printUsage(process, terminal) {
|
|
5
|
+
const usage = `Usage: format [OPTION]...
|
|
6
|
+
Delete all IndexedDB and localStorage data.
|
|
7
|
+
|
|
8
|
+
-i, --indexeddb Delete only IndexedDB databases
|
|
9
|
+
-l, --localstorage Delete only localStorage
|
|
10
|
+
-k, --keep <name> Preserve specific IndexedDB database(s) (can be used multiple times)
|
|
11
|
+
--help Display this help and exit
|
|
12
|
+
|
|
13
|
+
By default, deletes all IndexedDB databases and localStorage.
|
|
14
|
+
Requires root privileges and interactive confirmation.`;
|
|
15
|
+
writelnStderr(process, terminal, usage);
|
|
16
|
+
}
|
|
17
|
+
async function emptyIndexedDBDatabases(keepDatabases, _kernel, process, terminal) {
|
|
18
|
+
try {
|
|
19
|
+
if (!globalThis.indexedDB) {
|
|
20
|
+
await writelnStderr(process, terminal, chalk.yellow('format: IndexedDB is not available'));
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
await writelnStdout(process, terminal, chalk.yellow('format: Emptying filesystem...'));
|
|
24
|
+
let databases = [];
|
|
25
|
+
if (typeof indexedDB.databases === 'function') {
|
|
26
|
+
const dbList = await indexedDB.databases();
|
|
27
|
+
databases = dbList
|
|
28
|
+
.filter((db) => typeof db.name === 'string')
|
|
29
|
+
.map(db => ({ name: db.name, version: db.version }));
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
await writelnStdout(process, terminal, chalk.yellow('format: indexedDB.databases() not supported, assuming filesystem will be emptied on reboot'));
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
const databasesToEmpty = databases.filter(db => !keepDatabases.includes(db.name));
|
|
36
|
+
if (databasesToEmpty.length === 0) {
|
|
37
|
+
await writelnStdout(process, terminal, chalk.green('format: All databases are preserved, nothing to empty'));
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
if (keepDatabases.length > 0) {
|
|
41
|
+
const preserved = databases.filter(db => keepDatabases.includes(db.name));
|
|
42
|
+
if (preserved.length > 0) {
|
|
43
|
+
await writelnStdout(process, terminal, chalk.cyan(`format: Preserving databases: ${preserved.map(db => db.name).join(', ')}`));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
await writelnStdout(process, terminal, chalk.green(`format: Will empty ${databasesToEmpty.length} IndexedDB database(s) on reboot`));
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
51
|
+
await writelnStderr(process, terminal, chalk.red(`format: Error preparing IndexedDB databases: ${errorMessage}`));
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async function deleteLocalStorage(process, terminal, storage) {
|
|
56
|
+
try {
|
|
57
|
+
const keysCount = storage.length;
|
|
58
|
+
if (keysCount === 0) {
|
|
59
|
+
await writelnStdout(process, terminal, chalk.green('format: localStorage is already empty'));
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
storage.clear();
|
|
63
|
+
await writelnStdout(process, terminal, chalk.green(`format: Successfully cleared localStorage (${keysCount} item(s))`));
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
68
|
+
await writelnStderr(process, terminal, chalk.red(`format: Error clearing localStorage: ${errorMessage}`));
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export function createCommand(kernel, shell, terminal) {
|
|
73
|
+
return new TerminalCommand({
|
|
74
|
+
command: 'format',
|
|
75
|
+
description: 'Delete all IndexedDB and localStorage data',
|
|
76
|
+
kernel,
|
|
77
|
+
shell,
|
|
78
|
+
terminal,
|
|
79
|
+
run: async (pid, argv) => {
|
|
80
|
+
const process = kernel.processes.get(pid);
|
|
81
|
+
if (argv.length > 0 && (argv[0] === '--help' || argv[0] === '-h')) {
|
|
82
|
+
printUsage(process, terminal);
|
|
83
|
+
return 0;
|
|
84
|
+
}
|
|
85
|
+
if (shell.credentials.suid !== 0) {
|
|
86
|
+
await writelnStderr(process, terminal, chalk.red('format: permission denied (requires root)'));
|
|
87
|
+
return 1;
|
|
88
|
+
}
|
|
89
|
+
let onlyIndexedDB = false;
|
|
90
|
+
let onlyLocalStorage = false;
|
|
91
|
+
const keepDatabases = [];
|
|
92
|
+
for (let i = 0; i < argv.length; i++) {
|
|
93
|
+
const arg = argv[i];
|
|
94
|
+
if (!arg || typeof arg !== 'string')
|
|
95
|
+
continue;
|
|
96
|
+
if (arg === '-i' || arg === '--indexeddb') {
|
|
97
|
+
onlyIndexedDB = true;
|
|
98
|
+
}
|
|
99
|
+
else if (arg === '-l' || arg === '--localstorage') {
|
|
100
|
+
onlyLocalStorage = true;
|
|
101
|
+
}
|
|
102
|
+
else if (arg === '-k' || arg === '--keep') {
|
|
103
|
+
if (i + 1 < argv.length) {
|
|
104
|
+
const dbName = argv[++i];
|
|
105
|
+
if (dbName && !dbName.startsWith('-')) {
|
|
106
|
+
keepDatabases.push(dbName);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
await writelnStderr(process, terminal, chalk.red('format: --keep requires a database name'));
|
|
110
|
+
return 1;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
await writelnStderr(process, terminal, chalk.red('format: --keep requires a database name'));
|
|
115
|
+
return 1;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else if (arg.startsWith('-')) {
|
|
119
|
+
await writelnStderr(process, terminal, chalk.red(`format: invalid option -- '${arg.replace(/^-+/, '')}'`));
|
|
120
|
+
await writelnStdout(process, terminal, "Try 'format --help' for more information.");
|
|
121
|
+
return 1;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (onlyIndexedDB && onlyLocalStorage) {
|
|
125
|
+
await writelnStderr(process, terminal, chalk.red('format: cannot specify both --indexeddb and --localstorage'));
|
|
126
|
+
return 1;
|
|
127
|
+
}
|
|
128
|
+
const deleteIndexedDB = !onlyLocalStorage;
|
|
129
|
+
const deleteLocal = !onlyIndexedDB;
|
|
130
|
+
let actionDescription = 'This will delete ';
|
|
131
|
+
if (deleteIndexedDB && deleteLocal) {
|
|
132
|
+
actionDescription += 'ALL IndexedDB databases and localStorage data';
|
|
133
|
+
}
|
|
134
|
+
else if (deleteIndexedDB) {
|
|
135
|
+
actionDescription += 'ALL IndexedDB databases';
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
actionDescription += 'ALL localStorage data';
|
|
139
|
+
}
|
|
140
|
+
if (keepDatabases.length > 0) {
|
|
141
|
+
actionDescription += ` (preserving: ${keepDatabases.join(', ')})`;
|
|
142
|
+
}
|
|
143
|
+
actionDescription += '. This action cannot be undone!';
|
|
144
|
+
await writelnStderr(process, terminal, chalk.red.bold(`⚠️ WARNING: ${actionDescription}`));
|
|
145
|
+
await writelnStdout(process, terminal, chalk.yellow('Type "yes" to continue, or anything else to cancel: '));
|
|
146
|
+
const confirmation = await terminal.readline();
|
|
147
|
+
if (confirmation.trim().toLowerCase() !== 'yes') {
|
|
148
|
+
await writelnStdout(process, terminal, chalk.yellow('format: Operation cancelled'));
|
|
149
|
+
return 0;
|
|
150
|
+
}
|
|
151
|
+
if (kernel.storage.db) {
|
|
152
|
+
kernel.storage.db.close();
|
|
153
|
+
}
|
|
154
|
+
let success = true;
|
|
155
|
+
if (deleteIndexedDB) {
|
|
156
|
+
const indexedDBSuccess = await emptyIndexedDBDatabases(keepDatabases, kernel, process, terminal);
|
|
157
|
+
success = success && indexedDBSuccess;
|
|
158
|
+
}
|
|
159
|
+
if (deleteLocal) {
|
|
160
|
+
const localStorageSuccess = await deleteLocalStorage(process, terminal, kernel.storage.local);
|
|
161
|
+
success = success && localStorageSuccess;
|
|
162
|
+
}
|
|
163
|
+
if (success) {
|
|
164
|
+
await writelnStdout(process, terminal, chalk.green.bold('format: Format operation completed successfully'));
|
|
165
|
+
await writelnStdout(process, terminal, chalk.yellow('format: Rebooting system to complete format...'));
|
|
166
|
+
setTimeout(() => {
|
|
167
|
+
kernel.reboot();
|
|
168
|
+
}, 500);
|
|
169
|
+
return 0;
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
await writelnStderr(process, terminal, chalk.red.bold('format: Format operation completed with errors'));
|
|
173
|
+
return 1;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/commands/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/commands/hash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAyE/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA0I/F"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { TerminalEvents } from '@ecmaos/types';
|
|
3
|
+
import { TerminalCommand } from '../shared/terminal-command.js';
|
|
4
|
+
import { writelnStderr } from '../shared/helpers.js';
|
|
5
|
+
const SUPPORTED_ALGORITHMS = {
|
|
6
|
+
'sha1': 'SHA-1',
|
|
7
|
+
'sha-1': 'SHA-1',
|
|
8
|
+
'sha256': 'SHA-256',
|
|
9
|
+
'sha-256': 'SHA-256',
|
|
10
|
+
'sha384': 'SHA-384',
|
|
11
|
+
'sha-384': 'SHA-384',
|
|
12
|
+
'sha512': 'SHA-512',
|
|
13
|
+
'sha-512': 'SHA-512'
|
|
14
|
+
};
|
|
15
|
+
function printUsage(process, terminal) {
|
|
16
|
+
const usage = `Usage: hash [OPTION]... [FILE]...
|
|
17
|
+
Compute and display hash values for files or standard input.
|
|
18
|
+
|
|
19
|
+
-a, --algorithm=ALGORITHM hash algorithm to use (sha1, sha256, sha384, sha512)
|
|
20
|
+
default: sha256
|
|
21
|
+
--help display this help and exit
|
|
22
|
+
|
|
23
|
+
Supported algorithms:
|
|
24
|
+
sha1, sha-1 SHA-1 (160 bits)
|
|
25
|
+
sha256, sha-256 SHA-256 (256 bits) [default]
|
|
26
|
+
sha384, sha-384 SHA-384 (384 bits)
|
|
27
|
+
sha512, sha-512 SHA-512 (512 bits)
|
|
28
|
+
|
|
29
|
+
Examples:
|
|
30
|
+
hash file.txt compute SHA-256 hash of file.txt
|
|
31
|
+
hash -a sha512 file.txt compute SHA-512 hash of file.txt
|
|
32
|
+
echo "hello" | hash compute SHA-256 hash of stdin`;
|
|
33
|
+
writelnStderr(process, terminal, usage);
|
|
34
|
+
}
|
|
35
|
+
async function hashData(data, algorithm) {
|
|
36
|
+
// Create a new Uint8Array with a proper ArrayBuffer to ensure compatibility
|
|
37
|
+
const dataCopy = new Uint8Array(data);
|
|
38
|
+
const hashBuffer = await crypto.subtle.digest(algorithm, dataCopy);
|
|
39
|
+
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
40
|
+
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
|
|
41
|
+
}
|
|
42
|
+
async function readStreamToUint8Array(reader) {
|
|
43
|
+
const chunks = [];
|
|
44
|
+
try {
|
|
45
|
+
while (true) {
|
|
46
|
+
const { done, value } = await reader.read();
|
|
47
|
+
if (done)
|
|
48
|
+
break;
|
|
49
|
+
if (value) {
|
|
50
|
+
chunks.push(value);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
reader.releaseLock();
|
|
56
|
+
}
|
|
57
|
+
// Calculate total length
|
|
58
|
+
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
59
|
+
// Concatenate all chunks into a single Uint8Array
|
|
60
|
+
const result = new Uint8Array(totalLength);
|
|
61
|
+
let offset = 0;
|
|
62
|
+
for (const chunk of chunks) {
|
|
63
|
+
result.set(chunk, offset);
|
|
64
|
+
offset += chunk.length;
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
export function createCommand(kernel, shell, terminal) {
|
|
69
|
+
return new TerminalCommand({
|
|
70
|
+
command: 'hash',
|
|
71
|
+
description: 'Compute and display hash values for files or standard input',
|
|
72
|
+
kernel,
|
|
73
|
+
shell,
|
|
74
|
+
terminal,
|
|
75
|
+
run: async (pid, argv) => {
|
|
76
|
+
const process = kernel.processes.get(pid);
|
|
77
|
+
if (!process)
|
|
78
|
+
return 1;
|
|
79
|
+
if (argv.length > 0 && (argv[0] === '--help' || argv[0] === '-h')) {
|
|
80
|
+
printUsage(process, terminal);
|
|
81
|
+
return 0;
|
|
82
|
+
}
|
|
83
|
+
let algorithm = 'SHA-256';
|
|
84
|
+
const files = [];
|
|
85
|
+
// Parse arguments
|
|
86
|
+
for (let i = 0; i < argv.length; i++) {
|
|
87
|
+
const arg = argv[i];
|
|
88
|
+
if (arg === undefined)
|
|
89
|
+
continue;
|
|
90
|
+
if (arg === '--help' || arg === '-h') {
|
|
91
|
+
printUsage(process, terminal);
|
|
92
|
+
return 0;
|
|
93
|
+
}
|
|
94
|
+
else if (arg === '-a' || arg === '--algorithm') {
|
|
95
|
+
const algoArg = argv[i + 1];
|
|
96
|
+
if (!algoArg) {
|
|
97
|
+
await writelnStderr(process, terminal, `hash: option requires an argument -- '${arg === '-a' ? 'a' : 'algorithm'}'`);
|
|
98
|
+
return 1;
|
|
99
|
+
}
|
|
100
|
+
const algoLower = algoArg.toLowerCase();
|
|
101
|
+
const selectedAlgorithm = SUPPORTED_ALGORITHMS[algoLower];
|
|
102
|
+
if (!selectedAlgorithm) {
|
|
103
|
+
await writelnStderr(process, terminal, `hash: unsupported algorithm '${algoArg}'\nSupported algorithms: ${Object.keys(SUPPORTED_ALGORITHMS).join(', ')}`);
|
|
104
|
+
return 1;
|
|
105
|
+
}
|
|
106
|
+
algorithm = selectedAlgorithm;
|
|
107
|
+
i++; // Skip the next argument as it's the algorithm value
|
|
108
|
+
}
|
|
109
|
+
else if (arg.startsWith('--algorithm=')) {
|
|
110
|
+
const algoArg = arg.split('=')[1];
|
|
111
|
+
if (!algoArg) {
|
|
112
|
+
await writelnStderr(process, terminal, `hash: option requires an argument -- 'algorithm'`);
|
|
113
|
+
return 1;
|
|
114
|
+
}
|
|
115
|
+
const algoLower = algoArg.toLowerCase();
|
|
116
|
+
const selectedAlgorithm = SUPPORTED_ALGORITHMS[algoLower];
|
|
117
|
+
if (!selectedAlgorithm) {
|
|
118
|
+
await writelnStderr(process, terminal, `hash: unsupported algorithm '${algoArg}'\nSupported algorithms: ${Object.keys(SUPPORTED_ALGORITHMS).join(', ')}`);
|
|
119
|
+
return 1;
|
|
120
|
+
}
|
|
121
|
+
algorithm = selectedAlgorithm;
|
|
122
|
+
}
|
|
123
|
+
else if (!arg.startsWith('-')) {
|
|
124
|
+
files.push(arg);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
await writelnStderr(process, terminal, `hash: invalid option -- '${arg.replace(/^-+/, '')}'`);
|
|
128
|
+
await writelnStderr(process, terminal, `Try 'hash --help' for more information.`);
|
|
129
|
+
return 1;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const writer = process.stdout.getWriter();
|
|
133
|
+
try {
|
|
134
|
+
// If no files specified, read from stdin
|
|
135
|
+
if (files.length === 0) {
|
|
136
|
+
if (!process.stdin) {
|
|
137
|
+
await writelnStderr(process, terminal, 'hash: no input specified');
|
|
138
|
+
return 1;
|
|
139
|
+
}
|
|
140
|
+
const reader = process.stdin.getReader();
|
|
141
|
+
const data = await readStreamToUint8Array(reader);
|
|
142
|
+
const hash = await hashData(data, algorithm);
|
|
143
|
+
await writer.write(new TextEncoder().encode(hash + '\n'));
|
|
144
|
+
return 0;
|
|
145
|
+
}
|
|
146
|
+
// Process each file
|
|
147
|
+
let hasError = false;
|
|
148
|
+
for (const file of files) {
|
|
149
|
+
const fullPath = path.resolve(shell.cwd, file);
|
|
150
|
+
let interrupted = false;
|
|
151
|
+
const interruptHandler = () => { interrupted = true; };
|
|
152
|
+
kernel.terminal.events.on(TerminalEvents.INTERRUPT, interruptHandler);
|
|
153
|
+
try {
|
|
154
|
+
if (fullPath.startsWith('/dev')) {
|
|
155
|
+
await writelnStderr(process, terminal, `hash: ${file}: cannot hash device files`);
|
|
156
|
+
hasError = true;
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
const handle = await shell.context.fs.promises.open(fullPath, 'r');
|
|
160
|
+
const stat = await shell.context.fs.promises.stat(fullPath);
|
|
161
|
+
const chunks = [];
|
|
162
|
+
let bytesRead = 0;
|
|
163
|
+
const chunkSize = 64 * 1024; // 64KB chunks for better performance
|
|
164
|
+
while (bytesRead < stat.size) {
|
|
165
|
+
if (interrupted)
|
|
166
|
+
break;
|
|
167
|
+
const data = new Uint8Array(chunkSize);
|
|
168
|
+
const readSize = Math.min(chunkSize, stat.size - bytesRead);
|
|
169
|
+
await handle.read(data, 0, readSize, bytesRead);
|
|
170
|
+
chunks.push(data.subarray(0, readSize));
|
|
171
|
+
bytesRead += readSize;
|
|
172
|
+
}
|
|
173
|
+
// Concatenate all chunks
|
|
174
|
+
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
175
|
+
const fileData = new Uint8Array(totalLength);
|
|
176
|
+
let offset = 0;
|
|
177
|
+
for (const chunk of chunks) {
|
|
178
|
+
fileData.set(chunk, offset);
|
|
179
|
+
offset += chunk.length;
|
|
180
|
+
}
|
|
181
|
+
const hash = await hashData(fileData, algorithm);
|
|
182
|
+
await writer.write(new TextEncoder().encode(`${hash} ${file}\n`));
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
await writelnStderr(process, terminal, `hash: ${file}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
186
|
+
hasError = true;
|
|
187
|
+
}
|
|
188
|
+
finally {
|
|
189
|
+
kernel.terminal.events.off(TerminalEvents.INTERRUPT, interruptHandler);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return hasError ? 1 : 0;
|
|
193
|
+
}
|
|
194
|
+
finally {
|
|
195
|
+
writer.releaseLock();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/commands/hash.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/head.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { TerminalEvents } from '@ecmaos/types';
|
|
3
3
|
import { TerminalCommand } from '../shared/terminal-command.js';
|
|
4
|
-
import {
|
|
4
|
+
import { writelnStderr } from '../shared/helpers.js';
|
|
5
5
|
function printUsage(process, terminal) {
|
|
6
6
|
const usage = `Usage: head [OPTION]... [FILE]...
|
|
7
7
|
Print the first 10 lines of each FILE to standard output.
|
|
8
8
|
|
|
9
9
|
-n, -nNUMBER print the first NUMBER lines instead of 10
|
|
10
10
|
--help display this help and exit`;
|
|
11
|
-
|
|
11
|
+
writelnStderr(process, terminal, usage);
|
|
12
12
|
}
|
|
13
13
|
export function createCommand(kernel, shell, terminal) {
|
|
14
14
|
return new TerminalCommand({
|
package/dist/commands/id.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TerminalCommand } from '../shared/terminal-command.js';
|
|
2
|
-
import { writelnStdout } from '../shared/helpers.js';
|
|
2
|
+
import { writelnStdout, writelnStderr } from '../shared/helpers.js';
|
|
3
3
|
function printUsage(process, terminal) {
|
|
4
4
|
const usage = `Usage: id [OPTION]...
|
|
5
5
|
Print user and group IDs.
|
|
@@ -9,7 +9,7 @@ Print user and group IDs.
|
|
|
9
9
|
-G, --groups print all group IDs
|
|
10
10
|
-n, --name print names instead of numeric IDs
|
|
11
11
|
--help display this help and exit`;
|
|
12
|
-
|
|
12
|
+
writelnStderr(process, terminal, usage);
|
|
13
13
|
}
|
|
14
14
|
export function createCommand(kernel, shell, terminal) {
|
|
15
15
|
return new TerminalCommand({
|
package/dist/commands/id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/commands/id.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/commands/id.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEnE,SAAS,UAAU,CAAC,OAA4B,EAAE,QAAkB;IAClE,MAAM,KAAK,GAAG;;;;;;;4CAO4B,CAAA;IAC1C,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,KAAY,EAAE,QAAkB;IAC5E,OAAO,IAAI,eAAe,CAAC;QACzB,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,0BAA0B;QACvC,MAAM;QACN,KAAK;QACL,QAAQ;QACR,GAAG,EAAE,KAAK,EAAE,GAAW,EAAE,IAAc,EAAE,EAAE;YACzC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAwB,CAAA;YAEhE,IAAI,QAAQ,GAAG,KAAK,CAAA;YACpB,IAAI,SAAS,GAAG,KAAK,CAAA;YACrB,IAAI,UAAU,GAAG,KAAK,CAAA;YACtB,IAAI,QAAQ,GAAG,KAAK,CAAA;YAEpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACrC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;oBAC7B,OAAO,CAAC,CAAA;gBACV,CAAC;qBAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC5C,QAAQ,GAAG,IAAI,CAAA;gBACjB,CAAC;qBAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBAC7C,SAAS,GAAG,IAAI,CAAA;gBAClB,CAAC;qBAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;oBAC9C,UAAU,GAAG,IAAI,CAAA;gBACnB,CAAC;qBAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC5C,QAAQ,GAAG,IAAI,CAAA;gBACjB,CAAC;qBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;oBACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;wBAAE,QAAQ,GAAG,IAAI,CAAA;oBACxC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;wBAAE,SAAS,GAAG,IAAI,CAAA;oBACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;wBAAE,UAAU,GAAG,IAAI,CAAA;oBAC1C,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;wBAAE,QAAQ,GAAG,IAAI,CAAA;oBACxC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;oBACzE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5B,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,0BAA0B,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;wBACpF,OAAO,CAAC,CAAA;oBACV,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACpD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACrD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,CAAA;YAE7C,IAAI,MAAM,GAAG,EAAE,CAAA;YAEf,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC9G,CAAC;iBAAM,IAAI,SAAS,EAAE,CAAC;gBACrB,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC/G,CAAC;iBAAM,IAAI,UAAU,EAAE,CAAC;gBACtB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBACxB,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;wBAC/B,OAAO,CAAC,EAAE,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAA;oBACtC,CAAC;oBACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;gBACvB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;gBAC9G,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;gBAC/G,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBACjC,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;wBAC/B,OAAO,CAAC,EAAE,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAA;oBACtC,CAAC;oBACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;gBACvB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAEZ,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,SAAS,EAAE,CAAA;YACtD,CAAC;YAED,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;YAC9C,OAAO,CAAC,CAAA;QACV,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"less.d.ts","sourceRoot":"","sources":["../../src/commands/less.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAY/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"less.d.ts","sourceRoot":"","sources":["../../src/commands/less.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAY/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA2O/F"}
|
package/dist/commands/less.js
CHANGED
|
@@ -27,6 +27,7 @@ export function createCommand(kernel, shell, terminal) {
|
|
|
27
27
|
}
|
|
28
28
|
let lines = [];
|
|
29
29
|
let currentLine = 0;
|
|
30
|
+
let horizontalOffset = 0;
|
|
30
31
|
let keyListener = null;
|
|
31
32
|
let linesRendered = 0;
|
|
32
33
|
try {
|
|
@@ -79,6 +80,42 @@ export function createCommand(kernel, shell, terminal) {
|
|
|
79
80
|
const rows = terminal.rows;
|
|
80
81
|
const displayRows = rows - 1;
|
|
81
82
|
const render = () => {
|
|
83
|
+
const cols = terminal.cols;
|
|
84
|
+
const stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, '');
|
|
85
|
+
const getVisibleSlice = (line, offset) => {
|
|
86
|
+
const visibleLen = stripAnsi(line).length;
|
|
87
|
+
if (offset < 0)
|
|
88
|
+
offset = 0;
|
|
89
|
+
if (offset > visibleLen)
|
|
90
|
+
offset = visibleLen;
|
|
91
|
+
let visible = 0;
|
|
92
|
+
let result = '';
|
|
93
|
+
let inEscape = false;
|
|
94
|
+
let charsSkipped = 0;
|
|
95
|
+
for (const char of line) {
|
|
96
|
+
if (char === '\x1b')
|
|
97
|
+
inEscape = true;
|
|
98
|
+
if (inEscape) {
|
|
99
|
+
if (charsSkipped >= offset) {
|
|
100
|
+
result += char;
|
|
101
|
+
}
|
|
102
|
+
if (/[a-zA-Z]/.test(char))
|
|
103
|
+
inEscape = false;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
if (charsSkipped < offset) {
|
|
107
|
+
charsSkipped++;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
if (visible >= cols)
|
|
111
|
+
break;
|
|
112
|
+
result += char;
|
|
113
|
+
visible++;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return result;
|
|
118
|
+
};
|
|
82
119
|
const maxLine = Math.max(0, lines.length - displayRows);
|
|
83
120
|
if (currentLine > maxLine) {
|
|
84
121
|
currentLine = maxLine;
|
|
@@ -86,6 +123,12 @@ export function createCommand(kernel, shell, terminal) {
|
|
|
86
123
|
if (currentLine < 0) {
|
|
87
124
|
currentLine = 0;
|
|
88
125
|
}
|
|
126
|
+
const maxLineLength = Math.max(...lines.map(l => stripAnsi(l).length), 0);
|
|
127
|
+
const maxHorizontalOffset = Math.max(0, maxLineLength - cols);
|
|
128
|
+
if (horizontalOffset > maxHorizontalOffset)
|
|
129
|
+
horizontalOffset = maxHorizontalOffset;
|
|
130
|
+
if (horizontalOffset < 0)
|
|
131
|
+
horizontalOffset = 0;
|
|
89
132
|
if (linesRendered > 0) {
|
|
90
133
|
terminal.write(ansi.cursor.up(linesRendered));
|
|
91
134
|
}
|
|
@@ -93,7 +136,7 @@ export function createCommand(kernel, shell, terminal) {
|
|
|
93
136
|
linesRendered = 0;
|
|
94
137
|
for (let i = currentLine; i < endLine; i++) {
|
|
95
138
|
terminal.write(ansi.erase.inLine(2));
|
|
96
|
-
const line = lines[i] || '';
|
|
139
|
+
const line = getVisibleSlice(lines[i] || '', horizontalOffset);
|
|
97
140
|
terminal.write(line);
|
|
98
141
|
linesRendered++;
|
|
99
142
|
if (i < endLine - 1) {
|
|
@@ -109,7 +152,7 @@ export function createCommand(kernel, shell, terminal) {
|
|
|
109
152
|
const statusLine = `-- ${currentLine + 1}-${endLine} / ${lines.length} (${percentage}%)`;
|
|
110
153
|
terminal.write('\n');
|
|
111
154
|
terminal.write(ansi.erase.inLine(2));
|
|
112
|
-
terminal.write(statusLine);
|
|
155
|
+
terminal.write(getVisibleSlice(statusLine, 0));
|
|
113
156
|
linesRendered++;
|
|
114
157
|
};
|
|
115
158
|
render();
|
|
@@ -140,6 +183,14 @@ export function createCommand(kernel, shell, terminal) {
|
|
|
140
183
|
currentLine++;
|
|
141
184
|
render();
|
|
142
185
|
break;
|
|
186
|
+
case 'ArrowLeft':
|
|
187
|
+
horizontalOffset = Math.max(0, horizontalOffset - Math.floor(terminal.cols / 2));
|
|
188
|
+
render();
|
|
189
|
+
break;
|
|
190
|
+
case 'ArrowRight':
|
|
191
|
+
horizontalOffset += Math.floor(terminal.cols / 2);
|
|
192
|
+
render();
|
|
193
|
+
break;
|
|
143
194
|
case 'PageDown':
|
|
144
195
|
case ' ':
|
|
145
196
|
currentLine = Math.min(currentLine + displayRows, Math.max(0, lines.length - displayRows));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"less.js","sourceRoot":"","sources":["../../src/commands/less.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"less.js","sourceRoot":"","sources":["../../src/commands/less.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../src/commands/ls.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../src/commands/ls.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAW/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAyQ/F"}
|