@bcts/seedtool-cli 1.0.0-alpha.14
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/LICENSE +48 -0
- package/README.md +11 -0
- package/dist/index.cjs +1370 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +654 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +654 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +1304 -0
- package/dist/index.mjs.map +1 -0
- package/dist/main.mjs +1375 -0
- package/dist/main.mjs.map +1 -0
- package/package.json +95 -0
- package/src/cli.ts +345 -0
- package/src/formats/base10.ts +39 -0
- package/src/formats/base6.ts +39 -0
- package/src/formats/bip39.ts +43 -0
- package/src/formats/bits.ts +39 -0
- package/src/formats/bytewords-minimal.ts +35 -0
- package/src/formats/bytewords-standard.ts +35 -0
- package/src/formats/bytewords-uri.ts +35 -0
- package/src/formats/cards.ts +100 -0
- package/src/formats/dice.ts +39 -0
- package/src/formats/envelope.ts +34 -0
- package/src/formats/format.ts +145 -0
- package/src/formats/hex.ts +34 -0
- package/src/formats/index.ts +31 -0
- package/src/formats/ints.ts +37 -0
- package/src/formats/multipart.ts +64 -0
- package/src/formats/random.ts +28 -0
- package/src/formats/seed-format.ts +37 -0
- package/src/formats/sskr.ts +290 -0
- package/src/index.ts +44 -0
- package/src/main.ts +227 -0
- package/src/random.ts +130 -0
- package/src/seed.ts +300 -0
- package/src/styles.ts +50 -0
- package/src/util.ts +140 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,654 @@
|
|
|
1
|
+
import { SSKRGroupSpec, SSKRSpec, Seed as Seed$1 } from "@bcts/components";
|
|
2
|
+
import { Envelope } from "@bcts/envelope";
|
|
3
|
+
import { SecureRandomNumberGenerator } from "@bcts/rand";
|
|
4
|
+
|
|
5
|
+
//#region src/seed.d.ts
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Seed with optional metadata.
|
|
9
|
+
* Matches Rust Seed struct in seed.rs.
|
|
10
|
+
*/
|
|
11
|
+
declare class Seed {
|
|
12
|
+
private _data;
|
|
13
|
+
private _name;
|
|
14
|
+
private _note;
|
|
15
|
+
private _creationDate?;
|
|
16
|
+
/**
|
|
17
|
+
* Create a new Seed with the given data.
|
|
18
|
+
* Matches Rust Seed::new function.
|
|
19
|
+
*/
|
|
20
|
+
constructor(data: Uint8Array);
|
|
21
|
+
/**
|
|
22
|
+
* Create a new Seed with data and optional metadata.
|
|
23
|
+
* Matches Rust Seed::new_opt function.
|
|
24
|
+
*/
|
|
25
|
+
static newOpt(data: Uint8Array, name: string, note: string, creationDate?: Date): Seed;
|
|
26
|
+
/**
|
|
27
|
+
* Create a new Seed from raw data.
|
|
28
|
+
* Convenience factory method.
|
|
29
|
+
*/
|
|
30
|
+
static new(data: Uint8Array): Seed;
|
|
31
|
+
/**
|
|
32
|
+
* Get the seed data.
|
|
33
|
+
* Matches Rust seed.data() method.
|
|
34
|
+
*/
|
|
35
|
+
data(): Uint8Array;
|
|
36
|
+
/**
|
|
37
|
+
* Get the seed name.
|
|
38
|
+
* Matches Rust seed.name() method.
|
|
39
|
+
* Returns empty string if not set.
|
|
40
|
+
*/
|
|
41
|
+
name(): string;
|
|
42
|
+
/**
|
|
43
|
+
* Set the seed name.
|
|
44
|
+
* Matches Rust seed.set_name() method.
|
|
45
|
+
*/
|
|
46
|
+
setName(name: string): void;
|
|
47
|
+
/**
|
|
48
|
+
* Get the seed note.
|
|
49
|
+
* Matches Rust seed.note() method.
|
|
50
|
+
* Returns empty string if not set.
|
|
51
|
+
*/
|
|
52
|
+
note(): string;
|
|
53
|
+
/**
|
|
54
|
+
* Set the seed note.
|
|
55
|
+
* Matches Rust seed.set_note() method.
|
|
56
|
+
*/
|
|
57
|
+
setNote(note: string): void;
|
|
58
|
+
/**
|
|
59
|
+
* Get the creation date.
|
|
60
|
+
* Matches Rust seed.creation_date() method.
|
|
61
|
+
*/
|
|
62
|
+
creationDate(): Date | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Set the creation date.
|
|
65
|
+
* Matches Rust seed.set_creation_date() method.
|
|
66
|
+
*/
|
|
67
|
+
setCreationDate(date: Date | undefined): void;
|
|
68
|
+
/**
|
|
69
|
+
* Clone the seed.
|
|
70
|
+
*/
|
|
71
|
+
clone(): Seed;
|
|
72
|
+
/**
|
|
73
|
+
* Convert to Envelope.
|
|
74
|
+
* Matches Rust impl From<Seed> for Envelope.
|
|
75
|
+
*
|
|
76
|
+
* Creates an envelope with:
|
|
77
|
+
* - Subject: byte string of seed data
|
|
78
|
+
* - Type assertion: 'Seed'
|
|
79
|
+
* - Optional date assertion
|
|
80
|
+
* - Optional name assertion (if not empty)
|
|
81
|
+
* - Optional note assertion (if not empty)
|
|
82
|
+
*/
|
|
83
|
+
toEnvelope(): Envelope;
|
|
84
|
+
/**
|
|
85
|
+
* Create a Seed from an Envelope.
|
|
86
|
+
* Matches Rust impl TryFrom<Envelope> for Seed.
|
|
87
|
+
*/
|
|
88
|
+
static fromEnvelope(envelope: Envelope): Seed;
|
|
89
|
+
/**
|
|
90
|
+
* Convert to @bcts/components Seed.
|
|
91
|
+
* Matches Rust impl TryFrom<&Seed> for ComponentsSeed.
|
|
92
|
+
*/
|
|
93
|
+
toComponentsSeed(): Seed$1;
|
|
94
|
+
/**
|
|
95
|
+
* Create from @bcts/components Seed.
|
|
96
|
+
* Matches Rust impl From<ComponentsSeed> for Seed.
|
|
97
|
+
*/
|
|
98
|
+
static fromComponentsSeed(seed: Seed$1): Seed;
|
|
99
|
+
/**
|
|
100
|
+
* Get string representation.
|
|
101
|
+
*/
|
|
102
|
+
toString(): string;
|
|
103
|
+
/**
|
|
104
|
+
* Check equality with another Seed.
|
|
105
|
+
*/
|
|
106
|
+
equals(other: Seed): boolean;
|
|
107
|
+
}
|
|
108
|
+
//#endregion
|
|
109
|
+
//#region src/random.d.ts
|
|
110
|
+
/**
|
|
111
|
+
* Random number generation utilities
|
|
112
|
+
* Ported from seedtool-cli-rust/src/random.rs
|
|
113
|
+
*/
|
|
114
|
+
/**
|
|
115
|
+
* Deterministic random number generator.
|
|
116
|
+
* Matches Rust DeterministicRandomNumberGenerator struct.
|
|
117
|
+
*
|
|
118
|
+
* Uses HKDF-HMAC-SHA256 to generate deterministic random data
|
|
119
|
+
* from a seed, with an incrementing salt for each call.
|
|
120
|
+
*/
|
|
121
|
+
declare class DeterministicRandomNumberGenerator {
|
|
122
|
+
private seed;
|
|
123
|
+
private salt;
|
|
124
|
+
/**
|
|
125
|
+
* Create a new deterministic RNG from a 32-byte seed.
|
|
126
|
+
*/
|
|
127
|
+
constructor(seed: Uint8Array);
|
|
128
|
+
/**
|
|
129
|
+
* Create a new deterministic RNG from a seed string.
|
|
130
|
+
* The string is hashed with SHA256 to produce the seed.
|
|
131
|
+
* Matches Rust new_with_seed function.
|
|
132
|
+
*/
|
|
133
|
+
static newWithSeed(seedString: string): DeterministicRandomNumberGenerator;
|
|
134
|
+
/**
|
|
135
|
+
* Generate deterministic random data.
|
|
136
|
+
* Matches Rust deterministic_random_data method.
|
|
137
|
+
*
|
|
138
|
+
* Each call increments the salt and uses HKDF to derive
|
|
139
|
+
* the requested number of bytes.
|
|
140
|
+
*/
|
|
141
|
+
deterministicRandomData(size: number): Uint8Array;
|
|
142
|
+
/**
|
|
143
|
+
* Clone the RNG state.
|
|
144
|
+
*/
|
|
145
|
+
clone(): DeterministicRandomNumberGenerator;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* HKDF-HMAC-SHA256 key derivation.
|
|
149
|
+
* Matches Rust hkdf_hmac_sha256 function from bc-crypto.
|
|
150
|
+
*/
|
|
151
|
+
declare function hkdfHmacSha256(ikm: Uint8Array, salt: Uint8Array, length: number): Uint8Array;
|
|
152
|
+
/**
|
|
153
|
+
* Generate deterministic random data from entropy using SHA256.
|
|
154
|
+
* If n <= 32, returns the first n bytes of SHA256(entropy).
|
|
155
|
+
* Matches Rust sha256_deterministic_random function.
|
|
156
|
+
*
|
|
157
|
+
* @param entropy - The entropy bytes to hash
|
|
158
|
+
* @param n - Number of bytes to return (must be <= 32)
|
|
159
|
+
* @throws Error if n > 32
|
|
160
|
+
*/
|
|
161
|
+
declare function sha256DeterministicRandom(entropy: Uint8Array, n: number): Uint8Array;
|
|
162
|
+
/**
|
|
163
|
+
* Generate deterministic random data from entropy using HKDF.
|
|
164
|
+
* This can generate any length output.
|
|
165
|
+
* Matches Rust deterministic_random function.
|
|
166
|
+
*
|
|
167
|
+
* @param entropy - The entropy bytes
|
|
168
|
+
* @param n - Number of bytes to return
|
|
169
|
+
*/
|
|
170
|
+
declare function deterministicRandom(entropy: Uint8Array, n: number): Uint8Array;
|
|
171
|
+
//#endregion
|
|
172
|
+
//#region src/cli.d.ts
|
|
173
|
+
/**
|
|
174
|
+
* Input format keys.
|
|
175
|
+
* Matches Rust InputFormatKey enum in format.rs
|
|
176
|
+
*/
|
|
177
|
+
declare enum InputFormatKey {
|
|
178
|
+
Random = "random",
|
|
179
|
+
Hex = "hex",
|
|
180
|
+
Btw = "btw",
|
|
181
|
+
Btwu = "btwu",
|
|
182
|
+
Btwm = "btwm",
|
|
183
|
+
Bits = "bits",
|
|
184
|
+
Cards = "cards",
|
|
185
|
+
Dice = "dice",
|
|
186
|
+
Base6 = "base6",
|
|
187
|
+
Base10 = "base10",
|
|
188
|
+
Ints = "ints",
|
|
189
|
+
Bip39 = "bip39",
|
|
190
|
+
Sskr = "sskr",
|
|
191
|
+
Envelope = "envelope",
|
|
192
|
+
Multipart = "multipart",
|
|
193
|
+
Seed = "seed",
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Output format keys.
|
|
197
|
+
* Matches Rust OutputFormatKey enum in format.rs
|
|
198
|
+
*/
|
|
199
|
+
declare enum OutputFormatKey {
|
|
200
|
+
Hex = "hex",
|
|
201
|
+
Btw = "btw",
|
|
202
|
+
Btwu = "btwu",
|
|
203
|
+
Btwm = "btwm",
|
|
204
|
+
Bits = "bits",
|
|
205
|
+
Cards = "cards",
|
|
206
|
+
Dice = "dice",
|
|
207
|
+
Base6 = "base6",
|
|
208
|
+
Base10 = "base10",
|
|
209
|
+
Ints = "ints",
|
|
210
|
+
Bip39 = "bip39",
|
|
211
|
+
Sskr = "sskr",
|
|
212
|
+
Envelope = "envelope",
|
|
213
|
+
Multipart = "multipart",
|
|
214
|
+
Seed = "seed",
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* SSKR output format keys.
|
|
218
|
+
* Matches Rust SSKRFormatKey enum in sskr.rs
|
|
219
|
+
*/
|
|
220
|
+
declare enum SSKRFormatKey {
|
|
221
|
+
Envelope = "envelope",
|
|
222
|
+
Btw = "btw",
|
|
223
|
+
Btwm = "btwm",
|
|
224
|
+
Btwu = "btwu",
|
|
225
|
+
Ur = "ur",
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* RNG source - either secure or deterministic.
|
|
229
|
+
* Matches Rust RngSource enum.
|
|
230
|
+
*/
|
|
231
|
+
type RngSource = {
|
|
232
|
+
type: "secure";
|
|
233
|
+
rng: SecureRandomNumberGenerator;
|
|
234
|
+
} | {
|
|
235
|
+
type: "deterministic";
|
|
236
|
+
rng: DeterministicRandomNumberGenerator;
|
|
237
|
+
};
|
|
238
|
+
/**
|
|
239
|
+
* Parse and validate low int (0-254).
|
|
240
|
+
* Matches Rust parse_low_int function.
|
|
241
|
+
*/
|
|
242
|
+
declare function parseLowInt(s: string): number;
|
|
243
|
+
/**
|
|
244
|
+
* Parse and validate high int (1-255).
|
|
245
|
+
* Matches Rust parse_high_int function.
|
|
246
|
+
*/
|
|
247
|
+
declare function parseHighInt(s: string): number;
|
|
248
|
+
/**
|
|
249
|
+
* Parse and validate group threshold (1-16).
|
|
250
|
+
* Matches Rust parse_group_threshold function.
|
|
251
|
+
*/
|
|
252
|
+
declare function parseGroupThreshold(s: string): number;
|
|
253
|
+
/**
|
|
254
|
+
* Parse date string.
|
|
255
|
+
* Accepts "now" or ISO-8601 format.
|
|
256
|
+
* Matches Rust parse_date function.
|
|
257
|
+
*/
|
|
258
|
+
declare function parseDate(s: string): Date;
|
|
259
|
+
/**
|
|
260
|
+
* Parse SSKR group specification "M-of-N".
|
|
261
|
+
* Returns SSKRGroupSpec instance.
|
|
262
|
+
*/
|
|
263
|
+
declare function parseGroupSpec(s: string): SSKRGroupSpec;
|
|
264
|
+
/**
|
|
265
|
+
* CLI state and configuration.
|
|
266
|
+
* Matches Rust Cli struct.
|
|
267
|
+
*/
|
|
268
|
+
declare class Cli {
|
|
269
|
+
/** The input to be transformed. If required and not present, will be read from stdin. */
|
|
270
|
+
input?: string;
|
|
271
|
+
/** The number of output units (hex bytes, base-10 digits, etc.) */
|
|
272
|
+
count: number;
|
|
273
|
+
/** The input format. Default: Random */
|
|
274
|
+
in: InputFormatKey;
|
|
275
|
+
/** The output format. Default: Hex */
|
|
276
|
+
out: OutputFormatKey;
|
|
277
|
+
/** The lowest int returned (0-254). Default: 0 */
|
|
278
|
+
low: number;
|
|
279
|
+
/** The highest int returned (1-255), low < high. Default: 9 */
|
|
280
|
+
high: number;
|
|
281
|
+
/** The name of the seed. */
|
|
282
|
+
name?: string;
|
|
283
|
+
/** The note associated with the seed. */
|
|
284
|
+
note?: string;
|
|
285
|
+
/** The seed's creation date, in ISO-8601 format. May also be `now`. */
|
|
286
|
+
date?: Date;
|
|
287
|
+
/** For `multipart` output, max fragment length. Default: 500 */
|
|
288
|
+
maxFragmentLen: number;
|
|
289
|
+
/** For `multipart` output, additional parts for fountain encoding. Default: 0 */
|
|
290
|
+
additionalParts: number;
|
|
291
|
+
/** Group specifications for SSKR. */
|
|
292
|
+
groups: SSKRGroupSpec[];
|
|
293
|
+
/** The number of groups that must meet their threshold. Default: 1 */
|
|
294
|
+
groupThreshold: number;
|
|
295
|
+
/** SSKR output format. Default: Envelope */
|
|
296
|
+
sskrFormat: SSKRFormatKey;
|
|
297
|
+
/** Deterministic RNG seed string. */
|
|
298
|
+
deterministic?: string;
|
|
299
|
+
/** The seed being processed (internal state). */
|
|
300
|
+
seed?: Seed;
|
|
301
|
+
/** The RNG source (internal state). */
|
|
302
|
+
rng?: RngSource;
|
|
303
|
+
/**
|
|
304
|
+
* Get input from argument or read from stdin.
|
|
305
|
+
* Matches Rust expect_input method.
|
|
306
|
+
*/
|
|
307
|
+
expectInput(): string;
|
|
308
|
+
/**
|
|
309
|
+
* Get input from argument or read from stdin asynchronously.
|
|
310
|
+
* This is the async version for actual CLI use.
|
|
311
|
+
*/
|
|
312
|
+
expectInputAsync(): Promise<string>;
|
|
313
|
+
/**
|
|
314
|
+
* Get the seed, throwing if not initialized.
|
|
315
|
+
* Matches Rust expect_seed method.
|
|
316
|
+
*/
|
|
317
|
+
expectSeed(): Seed;
|
|
318
|
+
/**
|
|
319
|
+
* Generate random data using the configured RNG.
|
|
320
|
+
* Matches Rust random_data method.
|
|
321
|
+
*/
|
|
322
|
+
randomData(size: number): Uint8Array;
|
|
323
|
+
/**
|
|
324
|
+
* Get the seed with CLI overrides applied (name, note, date).
|
|
325
|
+
* Matches Rust seed_with_overrides method.
|
|
326
|
+
*/
|
|
327
|
+
seedWithOverrides(): Seed;
|
|
328
|
+
/**
|
|
329
|
+
* Convert the seed (with overrides) to an Envelope.
|
|
330
|
+
* Matches Rust to_envelope method.
|
|
331
|
+
*/
|
|
332
|
+
toEnvelope(): Envelope;
|
|
333
|
+
/**
|
|
334
|
+
* Build SSKR spec from CLI options.
|
|
335
|
+
* Matches Rust sskr_spec method.
|
|
336
|
+
*/
|
|
337
|
+
sskrSpec(): SSKRSpec;
|
|
338
|
+
/**
|
|
339
|
+
* Clone the CLI state.
|
|
340
|
+
*/
|
|
341
|
+
clone(): Cli;
|
|
342
|
+
}
|
|
343
|
+
//#endregion
|
|
344
|
+
//#region src/util.d.ts
|
|
345
|
+
/**
|
|
346
|
+
* Utility functions for data conversion
|
|
347
|
+
* Ported from seedtool-cli-rust/src/util.rs
|
|
348
|
+
*/
|
|
349
|
+
/**
|
|
350
|
+
* Convert bytes to hex string.
|
|
351
|
+
* Matches Rust data_to_hex function.
|
|
352
|
+
*/
|
|
353
|
+
declare function dataToHex(bytes: Uint8Array): string;
|
|
354
|
+
/**
|
|
355
|
+
* Convert hex string to bytes.
|
|
356
|
+
* Matches Rust hex_to_data function.
|
|
357
|
+
*/
|
|
358
|
+
declare function hexToData(hex: string): Uint8Array;
|
|
359
|
+
/**
|
|
360
|
+
* Convert byte values to a different base range [0, base-1].
|
|
361
|
+
* Each byte (0-255) is scaled proportionally to the target base.
|
|
362
|
+
* Matches Rust data_to_base function.
|
|
363
|
+
*
|
|
364
|
+
* @param buf - Input bytes
|
|
365
|
+
* @param base - Target base (e.g., 6 for base-6)
|
|
366
|
+
* @returns Array of values in range [0, base-1]
|
|
367
|
+
*/
|
|
368
|
+
declare function dataToBase(buf: Uint8Array, base: number): Uint8Array;
|
|
369
|
+
/**
|
|
370
|
+
* Convert bytes to an alphabet string using a base and alphabet function.
|
|
371
|
+
* Matches Rust data_to_alphabet function.
|
|
372
|
+
*
|
|
373
|
+
* @param buf - Input bytes
|
|
374
|
+
* @param base - Target base
|
|
375
|
+
* @param toAlphabet - Function to convert index to character
|
|
376
|
+
* @returns String of alphabet characters
|
|
377
|
+
*/
|
|
378
|
+
declare function dataToAlphabet(buf: Uint8Array, base: number, toAlphabet: (n: number) => string): string;
|
|
379
|
+
/**
|
|
380
|
+
* Parse whitespace-separated integers.
|
|
381
|
+
* Matches Rust parse_ints function.
|
|
382
|
+
*
|
|
383
|
+
* @param input - Space-separated integer string
|
|
384
|
+
* @returns Array of bytes
|
|
385
|
+
* @throws Error if any integer is out of range [0, 255]
|
|
386
|
+
*/
|
|
387
|
+
declare function parseInts(input: string): Uint8Array;
|
|
388
|
+
/**
|
|
389
|
+
* Convert bytes to a string of integers in a given range.
|
|
390
|
+
* Matches Rust data_to_ints function.
|
|
391
|
+
*
|
|
392
|
+
* @param buf - Input bytes
|
|
393
|
+
* @param low - Lowest output value (0-254)
|
|
394
|
+
* @param high - Highest output value (1-255), low < high
|
|
395
|
+
* @param separator - String to separate values
|
|
396
|
+
* @returns String of integers
|
|
397
|
+
* @throws Error if range is invalid
|
|
398
|
+
*/
|
|
399
|
+
declare function dataToInts(buf: Uint8Array, low: number, high: number, separator: string): string;
|
|
400
|
+
/**
|
|
401
|
+
* Parse a string of digits in a given range to bytes.
|
|
402
|
+
* Matches Rust digits_to_data function.
|
|
403
|
+
*
|
|
404
|
+
* @param inStr - String of digits
|
|
405
|
+
* @param low - Lowest valid digit
|
|
406
|
+
* @param high - Highest valid digit
|
|
407
|
+
* @returns Array of digit values
|
|
408
|
+
* @throws Error if any digit is out of range
|
|
409
|
+
*/
|
|
410
|
+
declare function digitsToData(inStr: string, low: number, high: number): Uint8Array;
|
|
411
|
+
//#endregion
|
|
412
|
+
//#region src/formats/format.d.ts
|
|
413
|
+
/**
|
|
414
|
+
* Base format interface.
|
|
415
|
+
* Matches Rust Format trait.
|
|
416
|
+
*/
|
|
417
|
+
interface Format {
|
|
418
|
+
/** Get the format name */
|
|
419
|
+
name(): string;
|
|
420
|
+
/** Whether this format supports round-trip conversion */
|
|
421
|
+
roundTrippable(): boolean;
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Input format interface.
|
|
425
|
+
* Matches Rust InputFormat trait.
|
|
426
|
+
*/
|
|
427
|
+
interface InputFormat extends Format {
|
|
428
|
+
/** Process input and update CLI state with seed */
|
|
429
|
+
processInput(state: Cli): Cli;
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Output format interface.
|
|
433
|
+
* Matches Rust OutputFormat trait.
|
|
434
|
+
*/
|
|
435
|
+
interface OutputFormat extends Format {
|
|
436
|
+
/** Process seed from CLI state and return output string */
|
|
437
|
+
processOutput(state: Cli): string;
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Select input format by key.
|
|
441
|
+
* Matches Rust select_input_format function.
|
|
442
|
+
*/
|
|
443
|
+
declare function selectInputFormat(key: InputFormatKey): InputFormat;
|
|
444
|
+
/**
|
|
445
|
+
* Select output format by key.
|
|
446
|
+
* Matches Rust select_output_format function.
|
|
447
|
+
*/
|
|
448
|
+
declare function selectOutputFormat(key: OutputFormatKey): OutputFormat;
|
|
449
|
+
//#endregion
|
|
450
|
+
//#region src/formats/base6.d.ts
|
|
451
|
+
/**
|
|
452
|
+
* Base-6 format handler.
|
|
453
|
+
* NOT round-trippable: input is entropy source.
|
|
454
|
+
* Digits 0-5 (compatible with https://iancoleman.io/bip39/).
|
|
455
|
+
*/
|
|
456
|
+
declare class Base6Format implements InputFormat, OutputFormat {
|
|
457
|
+
name(): string;
|
|
458
|
+
roundTrippable(): boolean;
|
|
459
|
+
processInput(state: Cli): Cli;
|
|
460
|
+
processOutput(state: Cli): string;
|
|
461
|
+
}
|
|
462
|
+
//#endregion
|
|
463
|
+
//#region src/formats/base10.d.ts
|
|
464
|
+
/**
|
|
465
|
+
* Base-10 format handler.
|
|
466
|
+
* NOT round-trippable: input is entropy source.
|
|
467
|
+
* Digits 0-9 (compatible with https://iancoleman.io/bip39/).
|
|
468
|
+
*/
|
|
469
|
+
declare class Base10Format implements InputFormat, OutputFormat {
|
|
470
|
+
name(): string;
|
|
471
|
+
roundTrippable(): boolean;
|
|
472
|
+
processInput(state: Cli): Cli;
|
|
473
|
+
processOutput(state: Cli): string;
|
|
474
|
+
}
|
|
475
|
+
//#endregion
|
|
476
|
+
//#region src/formats/bip39.d.ts
|
|
477
|
+
/**
|
|
478
|
+
* BIP39 mnemonic format handler.
|
|
479
|
+
* Round-trippable: mnemonic → seed → mnemonic.
|
|
480
|
+
*/
|
|
481
|
+
declare class Bip39Format implements InputFormat, OutputFormat {
|
|
482
|
+
name(): string;
|
|
483
|
+
roundTrippable(): boolean;
|
|
484
|
+
processInput(state: Cli): Cli;
|
|
485
|
+
processOutput(state: Cli): string;
|
|
486
|
+
}
|
|
487
|
+
//#endregion
|
|
488
|
+
//#region src/formats/bits.d.ts
|
|
489
|
+
/**
|
|
490
|
+
* Binary format handler.
|
|
491
|
+
* NOT round-trippable: input is entropy source.
|
|
492
|
+
* Bits 0-1 (compatible with https://iancoleman.io/bip39/).
|
|
493
|
+
*/
|
|
494
|
+
declare class BitsFormat implements InputFormat, OutputFormat {
|
|
495
|
+
name(): string;
|
|
496
|
+
roundTrippable(): boolean;
|
|
497
|
+
processInput(state: Cli): Cli;
|
|
498
|
+
processOutput(state: Cli): string;
|
|
499
|
+
}
|
|
500
|
+
//#endregion
|
|
501
|
+
//#region src/formats/bytewords-minimal.d.ts
|
|
502
|
+
/**
|
|
503
|
+
* Bytewords Minimal format handler.
|
|
504
|
+
* Round-trippable: bytewords → seed → bytewords.
|
|
505
|
+
* Uses 2-letter abbreviations without separators.
|
|
506
|
+
*/
|
|
507
|
+
declare class BytewordsMinimalFormat implements InputFormat, OutputFormat {
|
|
508
|
+
name(): string;
|
|
509
|
+
roundTrippable(): boolean;
|
|
510
|
+
processInput(state: Cli): Cli;
|
|
511
|
+
processOutput(state: Cli): string;
|
|
512
|
+
}
|
|
513
|
+
//#endregion
|
|
514
|
+
//#region src/formats/bytewords-uri.d.ts
|
|
515
|
+
/**
|
|
516
|
+
* Bytewords URI format handler.
|
|
517
|
+
* Round-trippable: bytewords → seed → bytewords.
|
|
518
|
+
* Uses full words separated by hyphens (URI-safe).
|
|
519
|
+
*/
|
|
520
|
+
declare class BytewordsUriFormat implements InputFormat, OutputFormat {
|
|
521
|
+
name(): string;
|
|
522
|
+
roundTrippable(): boolean;
|
|
523
|
+
processInput(state: Cli): Cli;
|
|
524
|
+
processOutput(state: Cli): string;
|
|
525
|
+
}
|
|
526
|
+
//#endregion
|
|
527
|
+
//#region src/formats/bytewords-standard.d.ts
|
|
528
|
+
/**
|
|
529
|
+
* Bytewords Standard format handler.
|
|
530
|
+
* Round-trippable: bytewords → seed → bytewords.
|
|
531
|
+
* Uses full words separated by spaces.
|
|
532
|
+
*/
|
|
533
|
+
declare class BytewordsStandardFormat implements InputFormat, OutputFormat {
|
|
534
|
+
name(): string;
|
|
535
|
+
roundTrippable(): boolean;
|
|
536
|
+
processInput(state: Cli): Cli;
|
|
537
|
+
processOutput(state: Cli): string;
|
|
538
|
+
}
|
|
539
|
+
//#endregion
|
|
540
|
+
//#region src/formats/cards.d.ts
|
|
541
|
+
/**
|
|
542
|
+
* Playing cards format handler.
|
|
543
|
+
* NOT round-trippable: input is entropy source.
|
|
544
|
+
* Card notation: rank (A,2-9,T,J,Q,K) + suit (C,D,H,S).
|
|
545
|
+
*/
|
|
546
|
+
declare class CardsFormat implements InputFormat, OutputFormat {
|
|
547
|
+
name(): string;
|
|
548
|
+
roundTrippable(): boolean;
|
|
549
|
+
processInput(state: Cli): Cli;
|
|
550
|
+
processOutput(state: Cli): string;
|
|
551
|
+
}
|
|
552
|
+
//#endregion
|
|
553
|
+
//#region src/formats/dice.d.ts
|
|
554
|
+
/**
|
|
555
|
+
* Dice roll format handler.
|
|
556
|
+
* NOT round-trippable: input is entropy source.
|
|
557
|
+
* Digits 1-6 (compatible with https://iancoleman.io/bip39/).
|
|
558
|
+
*/
|
|
559
|
+
declare class DiceFormat implements InputFormat, OutputFormat {
|
|
560
|
+
name(): string;
|
|
561
|
+
roundTrippable(): boolean;
|
|
562
|
+
processInput(state: Cli): Cli;
|
|
563
|
+
processOutput(state: Cli): string;
|
|
564
|
+
}
|
|
565
|
+
//#endregion
|
|
566
|
+
//#region src/formats/hex.d.ts
|
|
567
|
+
/**
|
|
568
|
+
* Hexadecimal format handler.
|
|
569
|
+
* Round-trippable: hex → seed → hex.
|
|
570
|
+
*/
|
|
571
|
+
declare class HexFormat implements InputFormat, OutputFormat {
|
|
572
|
+
name(): string;
|
|
573
|
+
roundTrippable(): boolean;
|
|
574
|
+
processInput(state: Cli): Cli;
|
|
575
|
+
processOutput(state: Cli): string;
|
|
576
|
+
}
|
|
577
|
+
//#endregion
|
|
578
|
+
//#region src/formats/ints.d.ts
|
|
579
|
+
/**
|
|
580
|
+
* Integer list format handler.
|
|
581
|
+
* NOT round-trippable: input is entropy source.
|
|
582
|
+
* Configurable range via --low and --high CLI options.
|
|
583
|
+
*/
|
|
584
|
+
declare class IntsFormat implements InputFormat, OutputFormat {
|
|
585
|
+
name(): string;
|
|
586
|
+
roundTrippable(): boolean;
|
|
587
|
+
processInput(state: Cli): Cli;
|
|
588
|
+
processOutput(state: Cli): string;
|
|
589
|
+
}
|
|
590
|
+
//#endregion
|
|
591
|
+
//#region src/formats/random.d.ts
|
|
592
|
+
/**
|
|
593
|
+
* Random seed generation format.
|
|
594
|
+
* Input-only: generates a new random seed.
|
|
595
|
+
*/
|
|
596
|
+
declare class RandomFormat implements InputFormat {
|
|
597
|
+
name(): string;
|
|
598
|
+
roundTrippable(): boolean;
|
|
599
|
+
processInput(state: Cli): Cli;
|
|
600
|
+
}
|
|
601
|
+
//#endregion
|
|
602
|
+
//#region src/formats/sskr.d.ts
|
|
603
|
+
/**
|
|
604
|
+
* SSKR format handler.
|
|
605
|
+
* Round-trippable: sskr shares → seed → sskr shares.
|
|
606
|
+
* Supports multiple sub-formats: envelope, btw, btwm, btwu, ur.
|
|
607
|
+
*/
|
|
608
|
+
declare class SSKRFormat implements InputFormat, OutputFormat {
|
|
609
|
+
name(): string;
|
|
610
|
+
roundTrippable(): boolean;
|
|
611
|
+
processInput(state: Cli): Cli;
|
|
612
|
+
processOutput(state: Cli): string;
|
|
613
|
+
}
|
|
614
|
+
//#endregion
|
|
615
|
+
//#region src/formats/envelope.d.ts
|
|
616
|
+
/**
|
|
617
|
+
* Gordian Envelope format handler.
|
|
618
|
+
* Round-trippable: envelope UR → seed → envelope UR.
|
|
619
|
+
*/
|
|
620
|
+
declare class EnvelopeFormat implements InputFormat, OutputFormat {
|
|
621
|
+
name(): string;
|
|
622
|
+
roundTrippable(): boolean;
|
|
623
|
+
processInput(state: Cli): Cli;
|
|
624
|
+
processOutput(state: Cli): string;
|
|
625
|
+
}
|
|
626
|
+
//#endregion
|
|
627
|
+
//#region src/formats/seed-format.d.ts
|
|
628
|
+
/**
|
|
629
|
+
* Seed UR format handler.
|
|
630
|
+
* Round-trippable: seed UR → seed → seed UR.
|
|
631
|
+
* Uses the ur:seed format from bc-components.
|
|
632
|
+
*/
|
|
633
|
+
declare class SeedFormat implements InputFormat, OutputFormat {
|
|
634
|
+
name(): string;
|
|
635
|
+
roundTrippable(): boolean;
|
|
636
|
+
processInput(state: Cli): Cli;
|
|
637
|
+
processOutput(state: Cli): string;
|
|
638
|
+
}
|
|
639
|
+
//#endregion
|
|
640
|
+
//#region src/formats/multipart.d.ts
|
|
641
|
+
/**
|
|
642
|
+
* Multipart UR format handler.
|
|
643
|
+
* Round-trippable: multipart URs → seed → multipart URs.
|
|
644
|
+
* Uses fountain encoding for reliable transmission.
|
|
645
|
+
*/
|
|
646
|
+
declare class MultipartFormat implements InputFormat, OutputFormat {
|
|
647
|
+
name(): string;
|
|
648
|
+
roundTrippable(): boolean;
|
|
649
|
+
processInput(state: Cli): Cli;
|
|
650
|
+
processOutput(state: Cli): string;
|
|
651
|
+
}
|
|
652
|
+
//#endregion
|
|
653
|
+
export { Base10Format, Base6Format, Bip39Format, BitsFormat, BytewordsMinimalFormat, BytewordsStandardFormat, BytewordsUriFormat, CardsFormat, Cli, DeterministicRandomNumberGenerator, DiceFormat, EnvelopeFormat, type Format, HexFormat, type InputFormat, InputFormatKey, IntsFormat, MultipartFormat, type OutputFormat, OutputFormatKey, RandomFormat, type RngSource, SSKRFormat, SSKRFormatKey, Seed, SeedFormat, dataToAlphabet, dataToBase, dataToHex, dataToInts, deterministicRandom, digitsToData, hexToData, hkdfHmacSha256, parseDate, parseGroupSpec, parseGroupThreshold, parseHighInt, parseInts, parseLowInt, selectInputFormat, selectOutputFormat, sha256DeterministicRandom };
|
|
654
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/seed.ts","../src/random.ts","../src/cli.ts","../src/util.ts","../src/formats/format.ts","../src/formats/base6.ts","../src/formats/base10.ts","../src/formats/bip39.ts","../src/formats/bits.ts","../src/formats/bytewords-minimal.ts","../src/formats/bytewords-uri.ts","../src/formats/bytewords-standard.ts","../src/formats/cards.ts","../src/formats/dice.ts","../src/formats/hex.ts","../src/formats/ints.ts","../src/formats/random.ts","../src/formats/sskr.ts","../src/formats/envelope.ts","../src/formats/seed-format.ts","../src/formats/multipart.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AA6HW,cA1GE,IAAA,CA0GF;EAmBK,QAAA,KAAA;EA8BgB,QAAA,KAAA;EAAW,QAAA,KAAA;EAiFrB,QAAA,aAAA;EAaY;;;;oBA/Od;;;ACXpB;;EAoB0C,OAAA,MAAA,CAAA,IAAA,EDEpB,UCFoB,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EDEmC,ICFnC,CAAA,EDE0C,ICF1C;EAaD;;;AA6BzC;EAAoC,OAAA,GAAA,CAAA,IAAA,ED5BjB,UC4BiB,CAAA,ED5BJ,IC4BI;EAAkB;;;AAetD;EA+BgB,IAAA,CAAA,CAAA,ED9DN,UC8DM;;;;AC1GhB;AAuBA;EAsBY,IAAA,CAAA,CAAA,EAAA,MAAA;EAgBA;AAYZ;AAYA;AAYA;EAagB,OAAA,CAAA,IAAS,EAAA,MAAA,CAAA,EAAa,IAAA;EAetB;AAkBhB;;;;EAmCU,IAAA,CAAA,CAAA,EAAA,MAAA;EAMI;;;;EA4DE,OAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAWY;;;;EAgDjB,YAAA,CAAA,CAAA,EFzNO,IEyNP,GAAA,SAAA;EAAG;;;;EC1TE,eAAS,CAAA,IAAA,EHyGD,IGzGS,GAAA,SAAU,CAAA,EAAA,IAAA;EAU3B;AAwBhB;AAkBA;EAmBgB,KAAA,CAAA,CAAA,EH6CL,IG7Cc;EA4BT;AAqBhB;;;;AClHA;AAWA;;;;;EASiB,UAAA,CAAA,CAAA,EJ6GD,QI7Gc;EA+Bd;AA2ChB;;;gCJiEgC,WAAW;EK9J9B;;;;EAAuB,gBAAA,CAAA,CAAA,EL+Od,MK/Oc;EAAa;;;;kCL4Pf,SAAiB;EM5PtC;;;EAmBU,QAAA,CAAA,CAAA,EAAA,MAAA;EAnBc;;;gBNiRrB;;;;;;;;;AA9QhB;;;;;;AAiCgC,cClCnB,kCAAA,CDkCmB;EAYtB,QAAA,IAAA;EA0CQ,QAAA,IAAA;EAQM;;;EA4DQ,WAAA,CAAA,IAAA,ECrJZ,UDqJY;EAAW;;;;;EAmHvB,OAAA,WAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EC3PsB,kCD2PtB;;;;AC/QpB;;;;EAmDW,uBAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAlB8B,UAkB9B;EAAkC;AAW7C;;EAAsD,KAAA,CAAA,CAAA,EAX3C,kCAW2C;;;AAetD;AA+BA;;iBA9CgB,cAAA,MAAoB,kBAAkB,6BAA6B;;AC5DnF;AAuBA;AAsBA;AAgBA;AAYA;AAYA;AAYA;AAaA;AAegB,iBDlDA,yBAAA,CCkDwC,OAAA,EDlDL,UCkDK,EAAA,CAAA,EAAA,MAAA,CAAA,EDlDmB,UCkDnB;;;;;;;;;iBDnBxC,mBAAA,UAA6B,wBAAwB;;;;;;;ADpBnD,aEtFN,cAAA;EF8FY,MAAA,GAAA,QAAA;EAWb,GAAA,GAAA,KAAA;EAmBK,GAAA,GAAA,KAAA;EA8BgB,IAAA,GAAA,MAAA;EAAW,IAAA,GAAA,MAAA;EAiFrB,IAAA,GAAA,MAAA;EAaY,KAAA,GAAA,OAAA;EAAiB,IAAA,GAAA,MAAA;EAqBnC,KAAA,GAAA,OAAA;EAAI,MAAA,GAAA,QAAA;;;;EC/QP,QAAA,GAAA,UAAA;EAOO,SAAA,GAAA,WAAA;EAasB,IAAA,GAAA,MAAA;;;;AA0C1C;;AAAsD,aCrC1C,eAAA;EDqCuE,GAAA,GAAA,KAAA;EAAU,GAAA,GAAA,KAAA;EAe7E,IAAA,GAAA,MAAA;EA+BA,IAAA,GAAA,MAAA;;;;EC1GJ,KAAA,GAAA,OAAA;EAuBA,MAAA,GAAA,QAAA;EAsBA,IAAA,GAAA,MAAA;EAgBA,KAAA,GAAA,OAAS;EAYL,IAAA,GAAA,MAAA;EAYA,QAAA,GAAA,UAAY;EAYZ,SAAA,GAAA,WAAmB;EAanB,IAAA,GAAA,MAAS;AAezB;AAkBA;;;;AAmCU,aArIE,aAAA;EA2IE,QAAA,GAAA,UAAA;EAML,GAAA,GAAA,KAAA;EAGD,IAAA,GAAA,MAAA;EAmBoB,IAAA,GAAA,MAAA;EAgCZ,EAAA,GAAA,IAAA;;;;;;AA2DF,KAlPF,SAAA,GAkPE;;OAjPa;;ECzEX,IAAA,EAAA,eAAS;EAUT,GAAA,EDgEkB,kCChEgB;AAwBlD,CAAA;AAkBA;AAmBA;AA4BA;AAqBA;iBDpCgB,WAAA;;;AE9EhB;AAWA;AAEsB,iBF6EN,YAAA,CE7EM,CAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;;;AAOtB;AA+BgB,iBFmDA,mBAAA,CEnDuB,CAAA,EAAA,MAAiB,CAAA,EAAA,MAAA;AA2CxD;;;;AC7FA;AASsB,iBHyGN,SAAA,CGzGM,CAAA,EAAA,MAAA,CAAA,EHyGgB,IGzGhB;;;;;AATuC,iBHiI7C,cAAA,CGjI6C,CAAA,EAAA,MAAA,CAAA,EHiIlB,aGjIkB;;;;ACA7D;AASsB,cJ0IT,GAAA,CI1IS;EAAM;EAUL,KAAA,CAAA,EAAA,MAAA;EAnBc;EAAa,KAAA,EAAA,MAAA;EAAY;MJ2JxD;;OAGC;EK/JM;EASS,GAAA,EAAA,MAAA;EAAM;EAcL,IAAA,EAAA,MAAA;EAvBa;EAAa,IAAA,CAAA,EAAA,MAAA;EAAY;;;SL8KpD;EM7KI;EASS,cAAA,EAAA,MAAA;EAAM;EAUL,eAAA,EAAA,MAAA;EAnBY;EAAa,MAAA,ENsLtC,aMtLsC,EAAA;EAAY;;;cN4L9C;EO7LD;EASS,aAAA,CAAA,EAAA,MAAA;EAAM;EAOL,IAAA,CAAA,EPmLd,IOnLc;EAhBwB;EAAa,GAAA,CAAA,EPsMpD,SOtMoD;EAAY;;;;ECA3D,WAAA,CAAA,CAAA,EAAA,MAAmB;EASV;;;;EATkC,gBAAA,CAAA,CAAA,ERyN5B,OQzN4B,CAAA,MAAA,CAAA;EAAY;;;;ECAvD,UAAA,CAAA,CAAA,ETyPG,ISzPH;EASS;;;;EATuC,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EToQjC,USpQiC;EAAY;;;;ECgE5D,iBAAY,CAAA,CAAA,EVmNF,IUnNE;EASH;;;;EAT2B,UAAA,CAAA,CAAA,EVqOjC,QUrOiC;EAAY;;;;EC/DhD,QAAA,CAAA,CAAA,EX4SC,QW5SU;EASF;;;EATa,KAAA,CAAA,CAAA,EXmTxB,GWnTwB;;;;;;;;;AbGnC;;;AAqB6E,iBG/B7D,SAAA,CH+B6D,KAAA,EG/B5C,UH+B4C,CAAA,EAAA,MAAA;;;;;AAkE3D,iBGvFF,SAAA,CHuFE,GAAA,EAAA,MAAA,CAAA,EGvFsB,UHuFtB;;;;;;;;;;AAuLE,iBGtPJ,UAAA,CHsPI,GAAA,EGtPY,UHsPZ,EAAA,IAAA,EAAA,MAAA,CAAA,EGtPuC,UHsPvC;;;;AC/QpB;;;;;;AA8DgB,iBEnBA,cAAA,CFmBc,GAAA,EElBvB,UFkBuB,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,GAAA,MAAA,CAAA,EAAA,MAAA;;;;;AAe9B;AA+BA;;;iBE9CgB,SAAA,iBAA0B;AD5D1C;AAuBA;AAsBA;AAgBA;AAYA;AAYA;AAYA;AAaA;AAeA;AAkBA;;AAWO,iBClES,UAAA,CDkET,GAAA,EClEyB,UDkEzB,EAAA,GAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;;;;;;;;;;AA8IO,iBC3LE,YAAA,CD2LF,KAAA,EAAA,MAAA,EAAA,GAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,CAAA,EC3L0D,UD2L1D;;;AFzSd;;;;AAqBoF,UIzBnE,MAAA,CJyBmE;EAYjE;EAAa,IAAA,EAAA,EAAA,MAAA;EAYtB;EA0CQ,cAAA,EAAA,EAAA,OAAA;;;;;;AAqJI,UIrOL,WAAA,SAAoB,MJqOf,CAAA;EAaY;EAAiB,YAAA,CAAA,KAAA,EIhP7B,GJgP6B,CAAA,EIhPvB,GJgPuB;;;;;;AC1PtC,UGiBI,YAAA,SAAqB,MHjBS,CAAA;EAO3B;EAasB,aAAA,CAAA,KAAA,EGDnB,GHCmB,CAAA,EAAA,MAAA;;;;AA0C1C;;AAAsD,iBGdtC,iBAAA,CHcsC,GAAA,EGdf,cHce,CAAA,EGdE,WHcF;;;AAetD;AA+BA;iBGjBgB,kBAAA,MAAwB,kBAAkB;;;;;;;;AJzD1B,cKpCnB,WAAA,YAAuB,WLoCJ,EKpCiB,YLoCjB,CAAA;EAYtB,IAAA,CAAA,CAAA,EAAA,MAAA;EA0CQ,cAAA,CAAA,CAAA,EAAA,OAAA;EAQM,YAAA,CAAA,KAAA,EKzFF,GLyFE,CAAA,EKzFI,GLyFJ;EAWb,aAAA,CAAA,KAAA,EK1FY,GL0FZ,CAAA,EAAA,MAAA;;;;;;;;;AAzEqB,cMpCnB,YAAA,YAAwB,WNoCL,EMpCkB,YNoClB,CAAA;EAYtB,IAAA,CAAA,CAAA,EAAA,MAAA;EA0CQ,cAAA,CAAA,CAAA,EAAA,OAAA;EAQM,YAAA,CAAA,KAAA,EMzFF,GNyFE,CAAA,EMzFI,GNyFJ;EAWb,aAAA,CAAA,KAAA,EM1FY,GN0FZ,CAAA,EAAA,MAAA;;;;;;;;AAzEQ,cOrCN,WAAA,YAAuB,WPqCjB,EOrC8B,YPqC9B,CAAA;EAAa,IAAA,CAAA,CAAA,EAAA,MAAA;EAYtB,cAAA,CAAA,CAAA,EAAA,OAAA;EA0CQ,YAAA,CAAA,KAAA,EOlFI,GPkFJ,CAAA,EOlFU,GPkFV;EAQM,aAAA,CAAA,KAAA,EO5ED,GP4EC,CAAA,EAAA,MAAA;;;;;;;;;AA9DQ,cQpCnB,UAAA,YAAsB,WRoCH,EQpCgB,YRoChB,CAAA;EAYtB,IAAA,CAAA,CAAA,EAAA,MAAA;EA0CQ,cAAA,CAAA,CAAA,EAAA,OAAA;EAQM,YAAA,CAAA,KAAA,EQzFF,GRyFE,CAAA,EQzFI,GRyFJ;EAWb,aAAA,CAAA,KAAA,EQ1FY,GR0FZ,CAAA,EAAA,MAAA;;;;;;;;;AAzEqB,cSrCnB,sBAAA,YAAkC,WTqCf,ESrC4B,YTqC5B,CAAA;EAYtB,IAAA,CAAA,CAAA,EAAA,MAAA;EA0CQ,cAAA,CAAA,CAAA,EAAA,OAAA;EAQM,YAAA,CAAA,KAAA,ES1FF,GT0FE,CAAA,ES1FI,GT0FJ;EAWb,aAAA,CAAA,KAAA,ES9FY,GT8FZ,CAAA,EAAA,MAAA;;;;;;;;;AAzEqB,cUrCnB,kBAAA,YAA8B,WVqCX,EUrCwB,YVqCxB,CAAA;EAYtB,IAAA,CAAA,CAAA,EAAA,MAAA;EA0CQ,cAAA,CAAA,CAAA,EAAA,OAAA;EAQM,YAAA,CAAA,KAAA,EU1FF,GV0FE,CAAA,EU1FI,GV0FJ;EAWb,aAAA,CAAA,KAAA,EU9FY,GV8FZ,CAAA,EAAA,MAAA;;;;;;;;;AAzEqB,cWrCnB,uBAAA,YAAmC,WXqChB,EWrC6B,YXqC7B,CAAA;EAYtB,IAAA,CAAA,CAAA,EAAA,MAAA;EA0CQ,cAAA,CAAA,CAAA,EAAA,OAAA;EAQM,YAAA,CAAA,KAAA,EW1FF,GX0FE,CAAA,EW1FI,GX0FJ;EAWb,aAAA,CAAA,KAAA,EW9FY,GX8FZ,CAAA,EAAA,MAAA;;;;;;;;;AAzEqB,cY2BnB,WAAA,YAAuB,WZ3BJ,EY2BiB,YZ3BjB,CAAA;EAYtB,IAAA,CAAA,CAAA,EAAA,MAAA;EA0CQ,cAAA,CAAA,CAAA,EAAA,OAAA;EAQM,YAAA,CAAA,KAAA,EY1BF,GZ0BE,CAAA,EY1BI,GZ0BJ;EAWb,aAAA,CAAA,KAAA,EY7BY,GZ6BZ,CAAA,EAAA,MAAA;;;;;;;;;AAzEqB,capCnB,UAAA,YAAsB,WboCH,EapCgB,YboChB,CAAA;EAYtB,IAAA,CAAA,CAAA,EAAA,MAAA;EA0CQ,cAAA,CAAA,CAAA,EAAA,OAAA;EAQM,YAAA,CAAA,KAAA,EazFF,GbyFE,CAAA,EazFI,GbyFJ;EAWb,aAAA,CAAA,KAAA,Ea1FY,Gb0FZ,CAAA,EAAA,MAAA;;;;;;;;AAzEQ,cctCN,SAAA,YAAqB,WdsCf,EctC4B,YdsC5B,CAAA;EAAa,IAAA,CAAA,CAAA,EAAA,MAAA;EAYtB,cAAA,CAAA,CAAA,EAAA,OAAA;EA0CQ,YAAA,CAAA,KAAA,EcnFI,GdmFJ,CAAA,EcnFU,GdmFV;EAQM,aAAA,CAAA,KAAA,EcpFD,GdoFC,CAAA,EAAA,MAAA;;;;;;;;;AA9DQ,cepCnB,UAAA,YAAsB,WfoCH,EepCgB,YfoChB,CAAA;EAYtB,IAAA,CAAA,CAAA,EAAA,MAAA;EA0CQ,cAAA,CAAA,CAAA,EAAA,OAAA;EAQM,YAAA,CAAA,KAAA,EezFF,GfyFE,CAAA,EezFI,GfyFJ;EAWb,aAAA,CAAA,KAAA,Ee5FY,Gf4FZ,CAAA,EAAA,MAAA;;;;;;;;AAzEQ,cgBvCN,YAAA,YAAwB,WhBuClB,CAAA;EAAa,IAAA,CAAA,CAAA,EAAA,MAAA;EAYtB,cAAA,CAAA,CAAA,EAAA,OAAA;EA0CQ,YAAA,CAAA,KAAA,EgBpFI,GhBoFJ,CAAA,EgBpFU,GhBoFV;;;;;;;;;AAtDc,ciBhCnB,UAAA,YAAsB,WjBgCH,EiBhCgB,YjBgChB,CAAA;EAYtB,IAAA,CAAA,CAAA,EAAA,MAAA;EA0CQ,cAAA,CAAA,CAAA,EAAA,OAAA;EAQM,YAAA,CAAA,KAAA,EiBrFF,GjBqFE,CAAA,EiBrFI,GjBqFJ;EAWb,aAAA,CAAA,KAAA,EiB1FY,GjB0FZ,CAAA,EAAA,MAAA;;;;;;;;AAzEQ,ckBtCN,cAAA,YAA0B,WlBsCpB,EkBtCiC,YlBsCjC,CAAA;EAAa,IAAA,CAAA,CAAA,EAAA,MAAA;EAYtB,cAAA,CAAA,CAAA,EAAA,OAAA;EA0CQ,YAAA,CAAA,KAAA,EkBnFI,GlBmFJ,CAAA,EkBnFU,GlBmFV;EAQM,aAAA,CAAA,KAAA,EkBpFD,GlBoFC,CAAA,EAAA,MAAA;;;;;;;;;AA9DQ,cmBrCnB,UAAA,YAAsB,WnBqCH,EmBrCgB,YnBqChB,CAAA;EAYtB,IAAA,CAAA,CAAA,EAAA,MAAA;EA0CQ,cAAA,CAAA,CAAA,EAAA,OAAA;EAQM,YAAA,CAAA,KAAA,EmB1FF,GnB0FE,CAAA,EmB1FI,GnB0FJ;EAWb,aAAA,CAAA,KAAA,EmB9FY,GnB8FZ,CAAA,EAAA,MAAA;;;;;;;;;AAzEqB,coBpCnB,eAAA,YAA2B,WpBoCR,EoBpCqB,YpBoCrB,CAAA;EAYtB,IAAA,CAAA,CAAA,EAAA,MAAA;EA0CQ,cAAA,CAAA,CAAA,EAAA,OAAA;EAQM,YAAA,CAAA,KAAA,EoBzFF,GpByFE,CAAA,EoBzFI,GpByFJ;EAWb,aAAA,CAAA,KAAA,EoB1EY,GpB0EZ,CAAA,EAAA,MAAA"}
|