leviathan-crypto 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
- [![Version](https://img.shields.io/github/package-json/version/xero/leviathan-crypto?labelColor=33383e&logo=npm&&logoColor=979da4&color=6e2aa5)](https://github.com/xero/leviathan-crypto/releases/latest) [![GitHub repo size](https://img.shields.io/github/repo-size/xero/leviathan-crypto?labelColor=262a2e&logo=googlecontaineroptimizedos&logoColor=979da4&color=6e2aa5)](https://github.com/xero/leviathan-crypto/) [![test suite](https://github.com/xero/leviathan-crypto/actions/workflows/test-suite.yml/badge.svg)](https://github.com/xero/leviathan-crypto/actions/workflows/test-suite.yml) [![wiki](https://github.com/xero/leviathan-crypto/actions/workflows/wiki.yml/badge.svg)](https://github.com/xero/leviathan-crypto/wiki)
1
+ [![GitHub Release](https://img.shields.io/github/v/release/xero/leviathan-crypto?sort=semver&display_name=tag&style=flat&logo=github&logoColor=989da4&label=latest%20release&labelColor=161925&color=1c7293)](https://github.com/xero/leviathan-crypto/releases/latest) [![npm package minimized gzipped size](https://img.shields.io/bundlejs/size/leviathan-crypto?format=both&style=flat&logo=googlecontaineroptimizedos&logoColor=989da4&label=package%20size&labelColor=161925&color=1c7293)](https://www.npmjs.com/package/leviathan-crypto) [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/xero/leviathan-crypto/test-suite.yml?branch=main&style=flat&logo=github&logoColor=989da4&label=test%20suite&labelColor=161925&color=1a936f)](https://github.com/xero/leviathan-crypto/actions/workflows/test-suite.yml) [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/xero/leviathan-crypto/wiki.yml?branch=main&style=flat&logo=gitbook&logoColor=989da4&label=wiki%20publish&labelColor=161925&color=1a936f)](https://github.com/xero/leviathan-crypto/wiki)
2
2
 
3
- ![side-effect free](https://github.com/xero/leviathan-crypto/raw/main/docs/badge-side-effect-free.svg) ![tree-shakeable](https://github.com/xero/leviathan-crypto/raw/main/docs/badge-tree-shakable.svg) ![zero dependencies](https://github.com/xero/leviathan-crypto/raw/main/docs/badge-zero-dependancies.svg) [![MIT Licensed](https://github.com/xero/leviathan-crypto/raw/main/docs/badge-mit-license.svg)](https://github.com/xero/text0wnz/blob/main/LICENSE)
3
+ ![simd webassembly](https://img.shields.io/badge/SIMD%20-%20WASM?style=flat&logo=wasmer&logoColor=1a936f&label=WASM&labelColor=33383e&color=161925) ![side-effect free](https://github.com/xero/leviathan-crypto/raw/main/docs/badge-side-effect-free.svg) ![tree-shakeable](https://github.com/xero/leviathan-crypto/raw/main/docs/badge-tree-shakable.svg) ![zero dependencies](https://github.com/xero/leviathan-crypto/raw/main/docs/badge-zero-dependancies.svg) [![MIT Licensed](https://github.com/xero/leviathan-crypto/raw/main/docs/badge-mit-license.svg)](https://github.com/xero/leviathan-crypto/blob/main/LICENSE)
4
4
 
5
5
  <img src="https://github.com/xero/leviathan-crypto/raw/main/docs/logo.svg" alt="Leviathan logo" width="400" >
6
6
 
@@ -77,9 +77,9 @@ npm install leviathan-crypto
77
77
 
78
78
  > [!NOTE]
79
79
  > The Serpent and ChaCha20 modules require a runtime with WebAssembly SIMD
80
- > support. This has been a feature of all major browsers and runtimes since
81
- > 2021. All other primitives (SHA-2, SHA-3, Poly1305) run on any WASM-capable
82
- > runtime.
80
+ > support. [This has been a feature of all major browsers and runtimes since
81
+ > 2021](https://caniuse.com/wasm-simd). All other primitives (SHA-2, SHA-3,
82
+ > Poly1305) run on any WASM-capable runtime.
83
83
 
84
84
  ---
85
85
 
@@ -26,7 +26,7 @@
26
26
  import { getInstance, initModule } from '../init.js';
27
27
  import { aeadEncrypt, aeadDecrypt, xcEncrypt, xcDecrypt } from './ops.js';
28
28
  import { hasSIMD } from '../utils.js';
29
- const _embedded = () => import('../embedded/chacha.js').then(m => m.WASM_BASE64);
29
+ const _embedded = () => import('../embedded/chacha20.js').then(m => m.WASM_BASE64);
30
30
  export async function chacha20Init(mode = 'embedded', opts) {
31
31
  return initModule('chacha20', _embedded, mode, opts);
32
32
  }
@@ -20,7 +20,7 @@ let _wasmModule;
20
20
  async function getWasmModule() {
21
21
  if (_wasmModule)
22
22
  return _wasmModule;
23
- const { WASM_BASE64 } = await import('../embedded/chacha.js');
23
+ const { WASM_BASE64 } = await import('../embedded/chacha20.js');
24
24
  const bytes = base64ToBytes(WASM_BASE64);
25
25
  _wasmModule = await WebAssembly.compile(bytes.buffer);
26
26
  return _wasmModule;
@@ -65,8 +65,8 @@ leviathan-crypto/
65
65
  │ │ │ ├── cbc.ts ← CBC mode
66
66
  │ │ │ ├── ctr.ts ← CTR mode
67
67
  │ │ │ └── buffers.ts ← static buffer layout + offset getters
68
- │ │ ├── chacha/
69
- │ │ │ ├── index.ts ← asc entry point → chacha.wasm
68
+ │ │ ├── chacha20/
69
+ │ │ │ ├── index.ts ← asc entry point → chacha20.wasm
70
70
  │ │ │ ├── chacha20.ts
71
71
  │ │ │ ├── poly1305.ts
72
72
  │ │ │ ├── wipe.ts
@@ -90,7 +90,7 @@ leviathan-crypto/
90
90
  │ ├── fortuna.ts ← Fortuna CSPRNG (requires serpent + sha2)
91
91
  │ ├── embedded/ ← generated base64 files (gitignored, build artifact)
92
92
  │ │ ├── serpent.ts
93
- │ │ ├── chacha.ts
93
+ │ │ ├── chacha20.ts
94
94
  │ │ ├── sha2.ts
95
95
  │ │ └── sha3.ts
96
96
  │ ├── serpent/
@@ -162,7 +162,7 @@ independent, separate linear memories, separate buffer layouts, no shared state.
162
162
  | Module | Binary | Primitives |
163
163
  |--------|--------|------------|
164
164
  | `serpent` | `serpent.wasm` | Serpent-256 block cipher: ECB, CTR mode, CBC mode |
165
- | `chacha20` | `chacha.wasm` | ChaCha20, Poly1305, ChaCha20-Poly1305 AEAD, XChaCha20-Poly1305 AEAD |
165
+ | `chacha20` | `chacha20.wasm` | ChaCha20, Poly1305, ChaCha20-Poly1305 AEAD, XChaCha20-Poly1305 AEAD |
166
166
  | `sha2` | `sha2.wasm` | SHA-256, SHA-384, SHA-512, HMAC-SHA256, HMAC-SHA384, HMAC-SHA512 |
167
167
  | `sha3` | `sha3.wasm` | SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256 |
168
168
 
@@ -188,11 +188,11 @@ parallel AEAD), and `SerpentStreamSealer` / `SerpentStreamOpener` (incremental
188
188
  streaming AEAD). All Tier 2 classes use HKDF-SHA256 for per-chunk key derivation
189
189
  and require both `serpent` and `sha2` to be initialized.
190
190
 
191
- **`chacha.wasm`**
191
+ **`chacha20.wasm`**
192
192
  ChaCha20 stream cipher (RFC 8439). Poly1305 MAC (RFC 8439 §2.5). ChaCha20-Poly1305
193
193
  AEAD (RFC 8439 §2.8). XChaCha20-Poly1305 AEAD (draft-irtf-cfrg-xchacha).
194
194
  HChaCha20 subkey derivation.
195
- Source: `src/asm/chacha/`
195
+ Source: `src/asm/chacha20/`
196
196
 
197
197
  The chacha20 TypeScript module also includes `pool.ts` (`XChaCha20Poly1305Pool`)
198
198
  and `pool.worker.ts`. The worker file compiles to `dist/chacha20/pool.worker.js`
@@ -255,7 +255,7 @@ await init(['serpent', 'sha3'])
255
255
  **`'streaming'` (performance path)**
256
256
  Uses `WebAssembly.instantiateStreaming()` for maximum load performance. The
257
257
  browser compiles the WASM binary while still downloading it. `wasmUrl` is a
258
- base URL, the loader appends the filename (`serpent.wasm`, `chacha.wasm`, etc.).
258
+ base URL, the loader appends the filename (`serpent.wasm`, `chacha20.wasm`, etc.).
259
259
  Requires the `.wasm` files to be served with `Content-Type: application/wasm`.
260
260
 
261
261
  ```typescript
@@ -395,7 +395,7 @@ index.ts
395
395
  re-exports: buffers + serpent + serpent_unrolled + cbc + ctr
396
396
  ```
397
397
 
398
- **ChaCha (`src/asm/chacha/`)**
398
+ **ChaCha (`src/asm/chacha20/`)**
399
399
 
400
400
  ```
401
401
  buffers.ts
@@ -464,7 +464,7 @@ index.ts
464
464
  | | | | | isInitialized()
465
465
  v v v v v
466
466
  embedded/ embedded/ embedded/ embedded/
467
- serpent.ts chacha.ts sha2.ts sha3.ts
467
+ serpent.ts chacha20.ts sha2.ts sha3.ts
468
468
  (each module owns its own embedded thunk, no cross-module imports)
469
469
  ```
470
470
 
@@ -490,7 +490,7 @@ The loader calls the thunk, decodes base64, and instantiates the WASM binary.
490
490
  | `serpent/stream.ts` | `serpent/index.ts`, `sha2/index.ts`, `utils.ts` | `SerpentCtr`, `HMAC_SHA256`, `HKDF_SHA256`, `constantTimeEqual`, `concat` |
491
491
  | `serpent/stream-pool.ts` | `serpent/stream.ts` | `sealChunk`, `openChunk`, `chunkInfo` |
492
492
  | `serpent/stream-sealer.ts` | `serpent/index.ts`, `sha2/index.ts`, `utils.ts` | `SerpentCbc`, `HMAC_SHA256`, `HKDF_SHA256`, `concat`, `constantTimeEqual`, `wipe` |
493
- | `chacha20/index.ts` | `init.ts`, `utils.ts`, `chacha20/types.ts`, `embedded/chacha.ts` | `getInstance`, `initModule`, `Mode`, `InitOpts`, `constantTimeEqual`, `ChaChaExports`, `WASM_BASE64` |
493
+ | `chacha20/index.ts` | `init.ts`, `utils.ts`, `chacha20/types.ts`, `embedded/chacha20.ts` | `getInstance`, `initModule`, `Mode`, `InitOpts`, `constantTimeEqual`, `ChaChaExports`, `WASM_BASE64` |
494
494
  | `sha2/index.ts` | `init.ts`, `embedded/sha2.ts` | `getInstance`, `initModule`, `Mode`, `InitOpts`, `WASM_BASE64` |
495
495
  | `sha3/index.ts` | `init.ts`, `embedded/sha3.ts` | `getInstance`, `initModule`, `Mode`, `InitOpts`, `WASM_BASE64` |
496
496
  | `fortuna.ts` | `init.ts`, `serpent/index.ts`, `sha2/index.ts`, `utils.ts` | `isInitialized`, `Serpent`, `SHA256`, `wipe`/`concat`/`utf8ToBytes` |
@@ -520,7 +520,7 @@ TypeScript, they call Tier 1 classes rather than WASM functions directly.
520
520
  | `SerpentStreamSealer` | `SerpentCbc` + `HMAC_SHA256` + `HKDF_SHA256` |
521
521
  | `SerpentStreamOpener` | `SerpentCbc` + `HMAC_SHA256` + `HKDF_SHA256` |
522
522
 
523
- **chacha20/index.ts → asm/chacha/**
523
+ **chacha20/index.ts → asm/chacha20/**
524
524
 
525
525
  | TS Class | WASM functions called |
526
526
  |----------|---------------------|
@@ -654,7 +654,7 @@ Source: `src/asm/serpent/buffers.ts`
654
654
 
655
655
  ### ChaCha20 module — 3 pages (192 KB)
656
656
 
657
- Source: `src/asm/chacha/buffers.ts`
657
+ Source: `src/asm/chacha20/buffers.ts`
658
658
 
659
659
  | Offset | Size | Name |
660
660
  |--------|------|------|
@@ -782,16 +782,16 @@ They are the immutable truth, and must never be modified to make tests pass.
782
782
 
783
783
  > ## Cross-References
784
784
  >
785
- > - [README.md](./README.md) — project overview and quick-start guide
786
- > - [test-suite.md](./test-suite.md) — testing methodology, vector corpus, and gate discipline
787
- > - [init.md](./init.md) — `init()` API, three loading modes, and idempotent behavior
788
- > - [loader.md](./loader.md) — internal WASM binary loading strategies (embedded, streaming, manual)
789
- > - [wasm.md](./wasm.md) — WebAssembly primer: modules, instances, memory, and the init gate
790
- > - [types.md](./types.md) — public TypeScript interfaces (`Hash`, `KeyedHash`, `Blockcipher`, `Streamcipher`, `AEAD`)
791
- > - [utils.md](./utils.md) — encoding helpers, `constantTimeEqual`, `wipe`, `randomBytes`
792
- > - [serpent.md](./serpent.md) — Serpent-256 TypeScript API (SerpentSeal, SerpentStream, raw modes)
793
- > - [chacha20.md](./chacha20.md) — ChaCha20/Poly1305 TypeScript API and XChaCha20-Poly1305 AEAD
794
- > - [sha2.md](./sha2.md) — SHA-2 hashes, HMAC, and HKDF TypeScript API
795
- > - [sha3.md](./sha3.md) — SHA-3 hashes and SHAKE XOFs TypeScript API
796
- > - [fortuna.md](./fortuna.md) — Fortuna CSPRNG with forward secrecy and entropy pooling
797
- > - [argon2id.md](./argon2id.md) — Argon2id password hashing and key derivation
785
+ > - [index](./README.md) — Project Documentation index
786
+ > - [test-suite](./test-suite.md) — testing methodology, vector corpus, and gate discipline
787
+ > - [init](./init.md) — `init()` API, three loading modes, and idempotent behavior
788
+ > - [loader](./loader.md) — internal WASM binary loading strategies (embedded, streaming, manual)
789
+ > - [wasm](./wasm.md) — WebAssembly primer: modules, instances, memory, and the init gate
790
+ > - [types](./types.md) — public TypeScript interfaces (`Hash`, `KeyedHash`, `Blockcipher`, `Streamcipher`, `AEAD`)
791
+ > - [utils](./utils.md) — encoding helpers, `constantTimeEqual`, `wipe`, `randomBytes`
792
+ > - [serpent](./serpent.md) — Serpent-256 TypeScript API (SerpentSeal, SerpentStream, raw modes)
793
+ > - [chacha20](./chacha20.md) — ChaCha20/Poly1305 TypeScript API and XChaCha20-Poly1305 AEAD
794
+ > - [sha2](./sha2.md) — SHA-2 hashes, HMAC, and HKDF TypeScript API
795
+ > - [sha3](./sha3.md) — SHA-3 hashes and SHAKE XOFs TypeScript API
796
+ > - [fortuna](./fortuna.md) — Fortuna CSPRNG with forward secrecy and entropy pooling
797
+ > - [argon2id](./argon2id.md) — Argon2id password hashing and key derivation
@@ -282,9 +282,9 @@ xc2.dispose();
282
282
 
283
283
  > ## Cross-References
284
284
  >
285
- > - [README.md](./README.md) — project overview and quick-start guide
286
- > - [sha2.md](./sha2.md) — HKDF-SHA256 for key expansion from Argon2id root keys
287
- > - [serpent.md](./serpent.md) — SerpentSeal: Serpent-256 authenticated encryption (pairs with Argon2id-derived keys)
288
- > - [chacha20.md](./chacha20.md) — XChaCha20Poly1305: ChaCha20 authenticated encryption (pairs with Argon2id-derived keys)
289
- > - [utils.md](./utils.md) — `randomBytes` for generating salts, `constantTimeEqual` for hash verification
290
- > - [architecture.md](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
285
+ > - [index](./README.md) — Project Documentation index
286
+ > - [sha2](./sha2.md) — HKDF-SHA256 for key expansion from Argon2id root keys
287
+ > - [serpent](./serpent.md) — SerpentSeal: Serpent-256 authenticated encryption (pairs with Argon2id-derived keys)
288
+ > - [chacha20](./chacha20.md) — XChaCha20Poly1305: ChaCha20 authenticated encryption (pairs with Argon2id-derived keys)
289
+ > - [utils](./utils.md) — `randomBytes` for generating salts, `constantTimeEqual` for hash verification
290
+ > - [architecture](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
@@ -1,5 +1,8 @@
1
1
  # ChaCha20, Poly1305, and AEAD TypeScript API
2
2
 
3
+ > [!NOTE]
4
+ > See [ChaCha20-Poly1305 implementation audit](./chacha_audit.md) for algorithm correctness verifications.
5
+
3
6
  ## Overview
4
7
 
5
8
  **ChaCha20** is a modern stream cipher designed by Daniel J. Bernstein. It is fast
@@ -370,7 +373,7 @@ Wipes all key material and intermediate state from WASM memory.
370
373
 
371
374
  For high-throughput workloads where multiple XChaCha20-Poly1305 operations should
372
375
  run concurrently, `XChaCha20Poly1305Pool` dispatches work across a configurable
373
- number of Web Workers, each holding an isolated `chacha.wasm` instance in its own
376
+ number of Web Workers, each holding an isolated `chacha20.wasm` instance in its own
374
377
  linear memory. This removes the single-threaded bottleneck of a shared WASM
375
378
  instance and allows encryption and decryption operations to proceed in parallel.
376
379
  The pool requires `init(['chacha20'])` to be called before construction and is
@@ -594,9 +597,10 @@ cipher.dispose()
594
597
 
595
598
  > ## Cross-References
596
599
  >
597
- > - [README.md](./README.md) — project overview and quick-start guide
598
- > - [asm_chacha.md](./asm_chacha.md) — WASM (AssemblyScript) implementation details for the chacha20 module
599
- > - [chacha20_pool.md](./chacha20_pool.md) — `XChaCha20Poly1305Pool` worker-pool wrapper for parallel encryption
600
- > - [serpent.md](./serpent.md) — alternative: Serpent block cipher modes (CBC, CTR — unauthenticated, needs HMAC pairing)
601
- > - [sha2.md](./sha2.md) — SHA-2 hashes and HMAC — needed for Encrypt-then-MAC if using Serpent or raw ChaCha20
602
- > - [types.md](./types.md) — `AEAD` and `Streamcipher` interfaces implemented by ChaCha20 classes
600
+ > - [index](./README.md) — Project Documentation index
601
+ > - [asm_chacha](./asm_chacha.md) — WASM (AssemblyScript) implementation details for the chacha20 module
602
+ > - [chacha20_pool](./chacha20_pool.md) — `XChaCha20Poly1305Pool` worker-pool wrapper for parallel encryption
603
+ > - [serpent](./serpent.md) — alternative: Serpent block cipher modes (CBC, CTR — unauthenticated, needs HMAC pairing)
604
+ > - [sha2](./sha2.md) — SHA-2 hashes and HMAC — needed for Encrypt-then-MAC if using Serpent or raw ChaCha20
605
+ > - [types](./types.md) — `AEAD` and `Streamcipher` interfaces implemented by ChaCha20 classes
606
+ > - [chacha_audit.md](./chacha_audit.md) — XChaCha20-Poly1305 implementation audit
@@ -3,6 +3,8 @@
3
3
  > [!NOTE]
4
4
  > A worker pool that dispatches independent XChaCha20-Poly1305 AEAD operations
5
5
  > across multiple Web Workers, each with its own isolated WebAssembly instance.
6
+ >
7
+ > See [ChaCha20-Poly1305 implementation audit](./chacha_audit.md) for algorithm correctness verifications.
6
8
 
7
9
  ## Overview
8
10
 
@@ -298,9 +300,10 @@ const result = concat(chunk1, chunk2)
298
300
 
299
301
  > ## Cross-References
300
302
  >
301
- > - [README.md](./README.md) — project overview and quick-start guide
302
- > - [chacha20.md](./chacha20.md) — single-instance XChaCha20-Poly1305 API
303
- > - [asm_chacha.md](./asm_chacha.md) — WASM implementation details (quarter-round, Poly1305 accumulator, HChaCha20)
304
- > - [wasm.md](./wasm.md) — WebAssembly primer: how one compiled module spawns many worker instances
305
- > - [fortuna.md](./fortuna.md) — another class using the `static async create()` factory pattern
306
- > - [architecture.md](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
303
+ > - [index](./README.md) — Project Documentation index
304
+ > - [chacha20](./chacha20.md) — single-instance XChaCha20-Poly1305 API
305
+ > - [asm_chacha](./asm_chacha.md) — WASM implementation details (quarter-round, Poly1305 accumulator, HChaCha20)
306
+ > - [wasm](./wasm.md) — WebAssembly primer: how one compiled module spawns many worker instances
307
+ > - [fortuna](./fortuna.md) — another class using the `static async create()` factory pattern
308
+ > - [architecture](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
309
+ > - [chacha_audit.md](./chacha_audit.md) — XChaCha20-Poly1305 implementation audit
@@ -313,10 +313,10 @@ to read the spec:
313
313
 
314
314
  > ## Cross-References
315
315
  >
316
- > - [README.md](./README.md) — project overview and quick-start guide
317
- > - [architecture.md](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
318
- > - [serpent.md](./serpent.md): Serpent-256 TypeScript API (Fortuna uses Serpent ECB internally)
319
- > - [sha2.md](./sha2.md): SHA-256 TypeScript API (Fortuna uses SHA-256 for entropy accumulation)
320
- > - [asm_serpent.md](./asm_serpent.md): Serpent-256 WASM implementation details
321
- > - [asm_sha2.md](./asm_sha2.md): SHA-256 WASM implementation details
322
- > - [utils.md](./utils.md): `randomBytes()` for simpler random generation needs
316
+ > - [index](./README.md) — Project Documentation index
317
+ > - [architecture](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
318
+ > - [serpent](./serpent.md): Serpent-256 TypeScript API (Fortuna uses Serpent ECB internally)
319
+ > - [sha2](./sha2.md): SHA-256 TypeScript API (Fortuna uses SHA-256 for entropy accumulation)
320
+ > - [asm_serpent](./asm_serpent.md): Serpent-256 WASM implementation details
321
+ > - [asm_sha2](./asm_sha2.md): SHA-256 WASM implementation details
322
+ > - [utils](./utils.md): `randomBytes()` for simpler random generation needs
package/dist/docs/init.md CHANGED
@@ -302,7 +302,7 @@ if (!isInitialized('sha2')) {
302
302
 
303
303
  > ## Cross-References
304
304
  >
305
- > - [README.md](./README.md) — project overview and quick-start guide
306
- > - [loader.md](./loader.md) — WASM binary loading strategies (internal details)
307
- > - [architecture.md](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
308
- > - [wasm.md](./wasm.md) — WebAssembly primer: modules, instances, memory, and the init gate
305
+ > - [index](./README.md) — Project Documentation index
306
+ > - [loader](./loader.md) — WASM binary loading strategies (internal details)
307
+ > - [architecture](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
308
+ > - [wasm](./wasm.md) — WebAssembly primer: modules, instances, memory, and the init gate
@@ -174,7 +174,7 @@ modules.
174
174
  | Module | Thunk defined in | Embedded file path |
175
175
  |-------------|-------------------------------|----------------------------|
176
176
  | `serpent` | `serpent/index.ts` | `./embedded/serpent.js` |
177
- | `chacha20` | `chacha20/index.ts` | `./embedded/chacha.js` |
177
+ | `chacha20` | `chacha20/index.ts` | `./embedded/chacha20.js` |
178
178
  | `sha2` | `sha2/index.ts` | `./embedded/sha2.js` |
179
179
  | `sha3` | `sha3/index.ts` | `./embedded/sha3.js` |
180
180
 
@@ -200,7 +200,7 @@ unexpected allocations and makes the memory layout predictable and auditable.
200
200
 
201
201
  > ## Cross-References
202
202
  >
203
- > - [README.md](./README.md) — project overview and quick-start guide
204
- > - [architecture.md](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
205
- > - [init.md](./init.md) — the public `init()` API that uses this loader
206
- > - [wasm.md](./wasm.md) — WebAssembly primer: modules, instances, and memory model
203
+ > - [index](./README.md) — Project Documentation index
204
+ > - [architecture](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
205
+ > - [init](./init.md) — the public `init()` API that uses this loader
206
+ > - [wasm](./wasm.md) — WebAssembly primer: modules, instances, and memory model
@@ -3,6 +3,8 @@
3
3
  > [!NOTE]
4
4
  > Authenticated encryption via `SerpentSeal`, plus low-level block, CTR, and CBC
5
5
  > classes for advanced use.
6
+ >
7
+ > See [Serpent implementation audit](./serpent_audit.md) for algorithm correctness verifications.
6
8
 
7
9
  ## Overview
8
10
 
@@ -936,13 +938,13 @@ cipher.dispose();
936
938
 
937
939
  > ## Cross-References
938
940
  >
939
- > - [README.md](./README.md) — project overview and quick-start guide
940
- > - [architecture.md](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
941
- > - [asm_serpent.md](./asm_serpent.md) — WASM implementation details and buffer layout
942
- > - [serpent_reference.md](./serpent_reference.md) — algorithm specification, S-boxes, linear transform, and known attacks
943
- > - [serpent_audit.md](./serpent_audit.md) — security audit findings (correctness, side-channel analysis)
944
- > - [chacha20.md](./chacha20.md) — XChaCha20Poly1305 authenticated encryption (alternative AEAD)
945
- > - [sha2.md](./sha2.md) — HMAC-SHA256 and HKDF used internally by SerpentSeal and SerpentStream
946
- > - [types.md](./types.md) — `Blockcipher`, `Streamcipher`, and `AEAD` interfaces implemented by Serpent classes
947
- > - [utils.md](./utils.md) — `constantTimeEqual`, `wipe`, `randomBytes` used by Serpent wrappers
941
+ > - [index](./README.md) — Project Documentation index
942
+ > - [architecture](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
943
+ > - [asm_serpent](./asm_serpent.md) — WASM implementation details and buffer layout
944
+ > - [serpent_reference](./serpent_reference.md) — algorithm specification, S-boxes, linear transform, and known attacks
945
+ > - [serpent_audit](./serpent_audit.md) — security audit findings (correctness, side-channel analysis)
946
+ > - [chacha20](./chacha20.md) — XChaCha20Poly1305 authenticated encryption (alternative AEAD)
947
+ > - [sha2](./sha2.md) — HMAC-SHA256 and HKDF used internally by SerpentSeal and SerpentStream
948
+ > - [types](./types.md) — `Blockcipher`, `Streamcipher`, and `AEAD` interfaces implemented by Serpent classes
949
+ > - [utils](./utils.md) — `constantTimeEqual`, `wipe`, `randomBytes` used by Serpent wrappers
948
950
 
package/dist/docs/sha2.md CHANGED
@@ -3,6 +3,8 @@
3
3
  > [!NOTE]
4
4
  > Cryptographic hashing and message authentication using SHA-256, SHA-384,
5
5
  > SHA-512, HMAC-SHA256, HMAC-SHA384, and HMAC-SHA512.
6
+ >
7
+ > See [SHA-2 implementation audit](./sha2_audit.md), [HMAC audit](./hmac_audit.md), and [HKDF audit](./hkdf_audit.md) for algorithm correctness verifications.
6
8
 
7
9
  ## Overview
8
10
 
@@ -610,11 +612,14 @@ SHA-2 is well-defined for zero-length messages and will return the correct diges
610
612
 
611
613
  > ## Cross-References
612
614
  >
613
- > - [README.md](./README.md) — project overview and quick-start guide
614
- > - [architecture.md](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
615
- > - [asm_sha2.md](./asm_sha2.md) — WASM implementation details (AssemblyScript buffer layout, compression functions)
616
- > - [sha3.md](./sha3.md) — alternative: SHA-3 family (immune to length extension attacks)
617
- > - [serpent.md](./serpent.md) — SerpentSeal and SerpentStream use HMAC-SHA256 and HKDF internally
618
- > - [argon2id.md](./argon2id.md) — Argon2id password hashing; HKDF expands Argon2id root keys
619
- > - [fortuna.md](./fortuna.md) — Fortuna CSPRNG uses SHA-256 for entropy accumulation
620
- > - [utils.md](./utils.md) — `constantTimeEqual`, `bytesToHex`, `utf8ToBytes`, `randomBytes`
615
+ > - [index](./README.md) — Project Documentation index
616
+ > - [architecture](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
617
+ > - [asm_sha2](./asm_sha2.md) — WASM implementation details (AssemblyScript buffer layout, compression functions)
618
+ > - [sha3](./sha3.md) — alternative: SHA-3 family (immune to length extension attacks)
619
+ > - [serpent](./serpent.md) — SerpentSeal and SerpentStream use HMAC-SHA256 and HKDF internally
620
+ > - [argon2id](./argon2id.md) — Argon2id password hashing; HKDF expands Argon2id root keys
621
+ > - [fortuna](./fortuna.md) — Fortuna CSPRNG uses SHA-256 for entropy accumulation
622
+ > - [utils](./utils.md) — `constantTimeEqual`, `bytesToHex`, `utf8ToBytes`, `randomBytes`
623
+ > - [sha2_audit.md](./sha2_audit.md) — SHA-2 implementation audit
624
+ > - [hmac_audit.md](./hmac_audit.md) — HMAC implementation audit
625
+ > - [hkdf_audit.md](./hkdf_audit.md) — HKDF implementation audit
package/dist/docs/sha3.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  > [!NOTE]
4
4
  > SHA-3 hash functions and SHAKE XOFs (TypeScript API)
5
+ >
6
+ > See [SHA-3 implementation audit](./sha3_audit.md) for algorithm correctness verifications.
5
7
 
6
8
  ## Overview
7
9
 
@@ -502,8 +504,9 @@ absorbs zero bytes and then squeezes.
502
504
 
503
505
  > ## Cross-References
504
506
  >
505
- > - [README.md](./README.md) — project overview and quick-start guide
506
- > - [asm_sha3.md](./asm_sha3.md): WASM implementation details (buffer layout, Keccak internals, variant parameters)
507
- > - [sha2.md](./sha2.md): Alternative: SHA-2 family (SHA-256, SHA-384, SHA-512) and HMAC
508
- > - [utils.md](./utils.md): Encoding utilities: `bytesToHex`, `hexToBytes`, `utf8ToBytes`
509
- > - [architecture.md](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
507
+ > - [index](./README.md) — Project Documentation index
508
+ > - [asm_sha3](./asm_sha3.md): WASM implementation details (buffer layout, Keccak internals, variant parameters)
509
+ > - [sha2](./sha2.md): Alternative: SHA-2 family (SHA-256, SHA-384, SHA-512) and HMAC
510
+ > - [utils](./utils.md): Encoding utilities: `bytesToHex`, `hexToBytes`, `utf8ToBytes`
511
+ > - [architecture](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
512
+ > - [sha3_audit.md](./sha3_audit.md) — SHA-3 / Keccak implementation audit
@@ -188,11 +188,11 @@ function cleanup(ctx: EncryptionContext): void {
188
188
 
189
189
  > ## Cross-References
190
190
  >
191
- > - [README.md](./README.md) — project overview and quick-start guide
192
- > - [architecture.md](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
193
- > - [utils.md](./utils.md) — encoding utilities and `constantTimeEqual` for verifying MACs from `KeyedHash`
194
- > - [serpent.md](./serpent.md) — Serpent classes implement `Blockcipher`, `Streamcipher`, and `AEAD`
195
- > - [chacha20.md](./chacha20.md) — ChaCha20/Poly1305 classes implement `Streamcipher` and `AEAD`
196
- > - [sha2.md](./sha2.md) — SHA-2 classes implement `Hash`; HMAC classes implement `KeyedHash`
197
- > - [sha3.md](./sha3.md) — SHA-3 classes implement `Hash`; SHAKE classes extend with XOF API
198
- > - [test-suite.md](./test-suite.md) — test suite structure and vector corpus
191
+ > - [index](./README.md) — Project Documentation index
192
+ > - [architecture](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
193
+ > - [utils](./utils.md) — encoding utilities and `constantTimeEqual` for verifying MACs from `KeyedHash`
194
+ > - [serpent](./serpent.md) — Serpent classes implement `Blockcipher`, `Streamcipher`, and `AEAD`
195
+ > - [chacha20](./chacha20.md) — ChaCha20/Poly1305 classes implement `Streamcipher` and `AEAD`
196
+ > - [sha2](./sha2.md) — SHA-2 classes implement `Hash`; HMAC classes implement `KeyedHash`
197
+ > - [sha3](./sha3.md) — SHA-3 classes implement `Hash`; SHAKE classes extend with XOF API
198
+ > - [test-suite](./test-suite.md) — test suite structure and vector corpus
@@ -284,11 +284,11 @@ console.log(combined.length) // 32
284
284
 
285
285
  > ## Cross-References
286
286
  >
287
- > - [README.md](./README.md) — project overview and quick-start guide
288
- > - [architecture.md](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
289
- > - [serpent.md](./serpent.md) — Serpent modes consume keys from `randomBytes`; wrappers use `wipe` and `constantTimeEqual`
290
- > - [chacha20.md](./chacha20.md) — ChaCha20/Poly1305 classes use `randomBytes` for nonce generation
291
- > - [sha2.md](./sha2.md) — SHA-2 and HMAC classes; output often converted with `bytesToHex`
292
- > - [sha3.md](./sha3.md) — SHA-3 and SHAKE classes; output often converted with `bytesToHex`
293
- > - [types.md](./types.md) — public interfaces whose implementations rely on these utilities
294
- > - [test-suite.md](./test-suite.md) — test suite structure and vector corpus
287
+ > - [index](./README.md) — Project Documentation index
288
+ > - [architecture](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
289
+ > - [serpent](./serpent.md) — Serpent modes consume keys from `randomBytes`; wrappers use `wipe` and `constantTimeEqual`
290
+ > - [chacha20](./chacha20.md) — ChaCha20/Poly1305 classes use `randomBytes` for nonce generation
291
+ > - [sha2](./sha2.md) — SHA-2 and HMAC classes; output often converted with `bytesToHex`
292
+ > - [sha3](./sha3.md) — SHA-3 and SHAKE classes; output often converted with `bytesToHex`
293
+ > - [types](./types.md) — public interfaces whose implementations rely on these utilities
294
+ > - [test-suite](./test-suite.md) — test suite structure and vector corpus
package/dist/docs/wasm.md CHANGED
@@ -131,7 +131,7 @@ memory layout without requiring C, C++, or Rust.
131
131
 
132
132
  In this project, a **thunk** is a base64-encoded WASM binary embedded directly
133
133
  within a TypeScript file. The files in `src/ts/embedded/`
134
- (such as chacha.ts and serpent.ts) each export a single constant:
134
+ (such as chacha20.ts and serpent.ts) each export a single constant:
135
135
 
136
136
  ```typescript
137
137
  export const WASM_BASE64 = 'AGFzbQEAAAAB...'
@@ -185,9 +185,10 @@ See [init.md](./init.md) for the full API.
185
185
 
186
186
  > ## Cross-References
187
187
  >
188
- > - [README.md](./README.md) — project overview and quick-start guide
189
- > - [architecture.md](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
190
- > - [init.md](./init.md) `init()` API and the three loading modes
191
- > - [loader.md](./loader.md) how WASM binaries are loaded and instantiated
192
- > - [chacha20_pool.md](./chacha20_pool.md) — example of one compiled module
193
- > spawning many instances across workers
188
+ > - [index](./README.md) — Project Documentation index
189
+ > - [architecture](./architecture.md) — architecture overview, module relationships, buffer layouts, and build pipeline
190
+ > - [serpent_simd_bench](./serpent_simd_bench.md) Serpent-256 SIMD benchmark results: CTR and CBC-decrypt inter-block 4-wide, scalar vs SIMD across V8, SpiderMonkey, and JSC
191
+ > - [chacha_simd_bench](./chacha_simd_bench.md) ChaCha20 SIMD benchmark results: 4-wide inter-block parallelism, scalar vs SIMD across V8, SpiderMonkey, and JSC. Includes documented negative result for intra-block approach
192
+ > - [init](./init.md) — `init()` API and the three loading modes
193
+ > - [loader](./loader.md) how WASM binaries are loaded and instantiated
194
+ > - [chacha20_pool](./chacha20_pool.md) — example of one compiled module spawning many instances across workers
@@ -1 +1 @@
1
- export declare const WASM_BASE64 = "AGFzbQEAAAABEQRgAAF/YAAAYAF/AX9gAX8AAyYlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAQECAgEBAwICAQMBAQUEAQEDAwegBSQLZ2V0TW9kdWxlSWQAAAxnZXRLZXlPZmZzZXQAARRnZXRDaGFjaGFOb25jZU9mZnNldAACEmdldENoYWNoYUN0ck9mZnNldAADFGdldENoYWNoYUJsb2NrT2Zmc2V0AAQUZ2V0Q2hhY2hhU3RhdGVPZmZzZXQABRBnZXRDaHVua1B0T2Zmc2V0AAYQZ2V0Q2h1bmtDdE9mZnNldAAHDGdldENodW5rU2l6ZQAIEGdldFBvbHlLZXlPZmZzZXQACRBnZXRQb2x5TXNnT2Zmc2V0AAoQZ2V0UG9seUJ1Zk9mZnNldAALE2dldFBvbHlCdWZMZW5PZmZzZXQADBBnZXRQb2x5VGFnT2Zmc2V0AA0OZ2V0UG9seUhPZmZzZXQADg5nZXRQb2x5Uk9mZnNldAAPD2dldFBvbHlSc09mZnNldAAQDmdldFBvbHlTT2Zmc2V0ABEVZ2V0WENoYUNoYU5vbmNlT2Zmc2V0ABIWZ2V0WENoYUNoYVN1YmtleU9mZnNldAATF2dldENoYWNoYVNpbWRXb3JrT2Zmc2V0ABQOZ2V0TWVtb3J5UGFnZXMAFQ1jaGFjaGFMb2FkS2V5ABYQY2hhY2hhU2V0Q291bnRlcgAXEmNoYWNoYVJlc2V0Q291bnRlcgAYEmNoYWNoYUVuY3J5cHRDaHVuawAaEmNoYWNoYURlY3J5cHRDaHVuawAbEGNoYWNoYUdlblBvbHlLZXkAHAloY2hhY2hhMjAAHRdjaGFjaGFFbmNyeXB0Q2h1bmtfc2ltZAAfF2NoYWNoYURlY3J5cHRDaHVua19zaW1kACAIcG9seUluaXQAIQpwb2x5VXBkYXRlACIJcG9seUZpbmFsACMLd2lwZUJ1ZmZlcnMAJAZtZW1vcnkCAArmRiUEAEEBCwQAQQALBABBIAsEAEEsCwQAQTALBQBB8AALBQBBsAELBgBBsIEECwYAQYCABAsGAEGwgQgLBgBB0IEICwYAQZCCCAsGAEGggggLBgBBpIIICwYAQbSCCAsGAEHcgggLBgBBhIMICwYAQaSDCAsGAEG0gwgLBgBBzIMICwYAQfCDCAsEAD8AC4sBAQJ/QfAA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B0IaiHwhCUG0ggggASADfiAEIAt+fCAGIAx+fCAIIA1+fCACQfyCCCkDAH58IAlCGoh8IgFCGohCBX4gCkL///8fg3wiAkL///8fgzcDAEG8ggggBUL///8fgyACQhqIfDcDAEHEggggB0L///8fgzcDAEHMggggCUL///8fgzcDAEHUggggAUL///8fgzcDAEGggghBADYCACAQQdCBCGohDiAAIBBrIQALA0AgAEEQTgRAQdyCCCkDACIBQbSCCCkDACAONQIAQv///x+DfCICfkHUgggpAwAgDjUCDEIIiEKAgIAIhHwiA0GEgwgpAwB+fEHMgggpAwAgDjUCCUIGiEL///8fg3wiBEGMgwgpAwAiBX58QcSCCCkDACAONQIGQgSIQv///x+DfCIGQZSDCCkDACIHfnxBvIIIKQMAIA41AgNCAohC////H4N8IghBnIMIKQMAIgl+fCEKIAEgCH5B5IIIKQMAIgsgAn58IAMgBX58IAQgB358IAYgCX58IApCGoh8IQUgASAGfiAIIAt+fEHsgggpAwAiDCACfnwgAyAHfnwgBCAJfnwgBUIaiHwhByABIAR+IAYgC358IAggDH58QfSCCCkDACINIAJ+fCADIAl+fCAHQhqIfCEJQbSCCCABIAN+IAQgC358IAYgDH58IAggDX58IAJB/IIIKQMAfnwgCUIaiHwiAUIaiEIFfiAKQv///x+DfCICQv///x+DNwMAQbyCCCAFQv///x+DIAJCGoh8NwMAQcSCCCAHQv///x+DNwMAQcyCCCAJQv///x+DNwMAQdSCCCABQv///x+DNwMAIA5BEGohDiAAQRBrIQAMAQsLIABBAEoEQEGQggggDiAA/AoAAEGgggggADYCAAsLwwYCDX4Cf0GggggoAgAiDUEASgRAIA1BkIIIaiIOQQBBECANa/wLACAOQQE6AABB3IIIKQMAIgJBtIIIKQMAQZCCCDUCAEL///8fg3wiA35B1IIIKQMAQZyCCDUCAEIIiHwiBEGEgwgpAwB+fEHMgggpAwBBmYIINQIAQgaIQv///x+DfCIFQYyDCCkDACIAfnxBxIIIKQMAQZaCCDUCAEIEiEL///8fg3wiBkGUgwgpAwAiB358QbyCCCkDAEGTggg1AgBCAohC////H4N8IghBnIMIKQMAIgl+fCEKIAIgCH5B5IIIKQMAIgsgA358IAAgBH58IAUgB358IAYgCX58IApCGoh8IQAgAiAGfiAIIAt+fEHsgggpAwAiASADfnwgBCAHfnwgBSAJfnwgAEIaiHwhByACIAV+IAYgC358IAEgCH58QfSCCCkDACIMIAN+fCAEIAl+fCAHQhqIfCEJQbSCCCACIAR+IAUgC358IAEgBn58IAggDH58IANB/IIIKQMAfnwgCUIaiHwiAUIaiEIFfiAKQv///x+DfCICQv///x+DNwMAQbyCCCAAQv///x+DIAJCGoh8NwMAQcSCCCAHQv///x+DNwMAQcyCCCAJQv///x+DNwMAQdSCCCABQv///x+DNwMAC0G0gggpAwBB1IIIKQMAIgBCGohCBX58IgFC////H4MhAkG8gggpAwAgAUIaiHwiAUL///8fgyEDQcSCCCkDACABQhqIfCIBQv///x+DIgRCAEHMgggpAwAgAUIaiHwiAUL///8fgyIFIAJCBXwiBkIaiCADfCIHQhqIIAR8IgRCGoh8IghCGoggAEL///8fgyABQhqIfCIAfCIBQhqIfSIJQn+FIgqDIARC////H4MgCYOEIQQgAiAKgyAGQv///x+DIAmDhCADIAqDIAdC////H4MgCYOEQhqGhCAEQv8fg0I0hoQiAkGkgwg1AgBBqIMINQIAQiCGhHwiAyACVK0gBSAKgyAIQv///x+DIAmDhEIOhiAEQgyIhCAAIAqDIAEgCYNC////H4OEQiiGhEGsgwg1AgBBsIMINQIAQiCGhHx8IQBBpIIIIAM3AwBBrIIIIAA3AwALzQEAQQBBAEEg/AsAQSBBAEEM/AsAQSxBADYAAEEwQQBBwAD8CwBB8ABBAEHAAPwLAEGwAUEAQYCABPwLAEGwgQRBAEGAgAT8CwBBsIEIQQBBIPwLAEHQgQhBAEHAAPwLAEGQgghBAEEQ/AsAQaCCCEEANgAAQaSCCEEAQRD8CwBBtIIIQQBBKPwLAEHcgghBAEEo/AsAQYSDCEEAQSD8CwBBpIMIQQBBEPwLAEG0gwhBAEEY/AsAQcyDCEEAQSD8CwBB8IMIQQBBgAL8CwALACMQc291cmNlTWFwcGluZ1VSTBEuL2NoYWNoYS53YXNtLm1hcA==";
1
+ export declare const WASM_BASE64 = "AGFzbQEAAAABEQRgAAF/YAAAYAF/AX9gAX8AAyYlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAQECAgEBAwICAQMBAQUEAQEDAwegBSQLZ2V0TW9kdWxlSWQAAAxnZXRLZXlPZmZzZXQAARRnZXRDaGFjaGFOb25jZU9mZnNldAACEmdldENoYWNoYUN0ck9mZnNldAADFGdldENoYWNoYUJsb2NrT2Zmc2V0AAQUZ2V0Q2hhY2hhU3RhdGVPZmZzZXQABRBnZXRDaHVua1B0T2Zmc2V0AAYQZ2V0Q2h1bmtDdE9mZnNldAAHDGdldENodW5rU2l6ZQAIEGdldFBvbHlLZXlPZmZzZXQACRBnZXRQb2x5TXNnT2Zmc2V0AAoQZ2V0UG9seUJ1Zk9mZnNldAALE2dldFBvbHlCdWZMZW5PZmZzZXQADBBnZXRQb2x5VGFnT2Zmc2V0AA0OZ2V0UG9seUhPZmZzZXQADg5nZXRQb2x5Uk9mZnNldAAPD2dldFBvbHlSc09mZnNldAAQDmdldFBvbHlTT2Zmc2V0ABEVZ2V0WENoYUNoYU5vbmNlT2Zmc2V0ABIWZ2V0WENoYUNoYVN1YmtleU9mZnNldAATF2dldENoYWNoYVNpbWRXb3JrT2Zmc2V0ABQOZ2V0TWVtb3J5UGFnZXMAFQ1jaGFjaGFMb2FkS2V5ABYQY2hhY2hhU2V0Q291bnRlcgAXEmNoYWNoYVJlc2V0Q291bnRlcgAYEmNoYWNoYUVuY3J5cHRDaHVuawAaEmNoYWNoYURlY3J5cHRDaHVuawAbEGNoYWNoYUdlblBvbHlLZXkAHAloY2hhY2hhMjAAHRdjaGFjaGFFbmNyeXB0Q2h1bmtfc2ltZAAfF2NoYWNoYURlY3J5cHRDaHVua19zaW1kACAIcG9seUluaXQAIQpwb2x5VXBkYXRlACIJcG9seUZpbmFsACMLd2lwZUJ1ZmZlcnMAJAZtZW1vcnkCAArmRiUEAEEBCwQAQQALBABBIAsEAEEsCwQAQTALBQBB8AALBQBBsAELBgBBsIEECwYAQYCABAsGAEGwgQgLBgBB0IEICwYAQZCCCAsGAEGggggLBgBBpIIICwYAQbSCCAsGAEHcgggLBgBBhIMICwYAQaSDCAsGAEG0gwgLBgBBzIMICwYAQfCDCAsEAD8AC4sBAQJ/QfAA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B0IaiHwhCUG0ggggASADfiAEIAt+fCAGIAx+fCAIIA1+fCACQfyCCCkDAH58IAlCGoh8IgFCGohCBX4gCkL///8fg3wiAkL///8fgzcDAEG8ggggBUL///8fgyACQhqIfDcDAEHEggggB0L///8fgzcDAEHMggggCUL///8fgzcDAEHUggggAUL///8fgzcDAEGggghBADYCACAQQdCBCGohDiAAIBBrIQALA0AgAEEQTgRAQdyCCCkDACIBQbSCCCkDACAONQIAQv///x+DfCICfkHUgggpAwAgDjUCDEIIiEKAgIAIhHwiA0GEgwgpAwB+fEHMgggpAwAgDjUCCUIGiEL///8fg3wiBEGMgwgpAwAiBX58QcSCCCkDACAONQIGQgSIQv///x+DfCIGQZSDCCkDACIHfnxBvIIIKQMAIA41AgNCAohC////H4N8IghBnIMIKQMAIgl+fCEKIAEgCH5B5IIIKQMAIgsgAn58IAMgBX58IAQgB358IAYgCX58IApCGoh8IQUgASAGfiAIIAt+fEHsgggpAwAiDCACfnwgAyAHfnwgBCAJfnwgBUIaiHwhByABIAR+IAYgC358IAggDH58QfSCCCkDACINIAJ+fCADIAl+fCAHQhqIfCEJQbSCCCABIAN+IAQgC358IAYgDH58IAggDX58IAJB/IIIKQMAfnwgCUIaiHwiAUIaiEIFfiAKQv///x+DfCICQv///x+DNwMAQbyCCCAFQv///x+DIAJCGoh8NwMAQcSCCCAHQv///x+DNwMAQcyCCCAJQv///x+DNwMAQdSCCCABQv///x+DNwMAIA5BEGohDiAAQRBrIQAMAQsLIABBAEoEQEGQggggDiAA/AoAAEGgggggADYCAAsLwwYCDX4Cf0GggggoAgAiDUEASgRAIA1BkIIIaiIOQQBBECANa/wLACAOQQE6AABB3IIIKQMAIgJBtIIIKQMAQZCCCDUCAEL///8fg3wiA35B1IIIKQMAQZyCCDUCAEIIiHwiBEGEgwgpAwB+fEHMgggpAwBBmYIINQIAQgaIQv///x+DfCIFQYyDCCkDACIAfnxBxIIIKQMAQZaCCDUCAEIEiEL///8fg3wiBkGUgwgpAwAiB358QbyCCCkDAEGTggg1AgBCAohC////H4N8IghBnIMIKQMAIgl+fCEKIAIgCH5B5IIIKQMAIgsgA358IAAgBH58IAUgB358IAYgCX58IApCGoh8IQAgAiAGfiAIIAt+fEHsgggpAwAiASADfnwgBCAHfnwgBSAJfnwgAEIaiHwhByACIAV+IAYgC358IAEgCH58QfSCCCkDACIMIAN+fCAEIAl+fCAHQhqIfCEJQbSCCCACIAR+IAUgC358IAEgBn58IAggDH58IANB/IIIKQMAfnwgCUIaiHwiAUIaiEIFfiAKQv///x+DfCICQv///x+DNwMAQbyCCCAAQv///x+DIAJCGoh8NwMAQcSCCCAHQv///x+DNwMAQcyCCCAJQv///x+DNwMAQdSCCCABQv///x+DNwMAC0G0gggpAwBB1IIIKQMAIgBCGohCBX58IgFC////H4MhAkG8gggpAwAgAUIaiHwiAUL///8fgyEDQcSCCCkDACABQhqIfCIBQv///x+DIgRCAEHMgggpAwAgAUIaiHwiAUL///8fgyIFIAJCBXwiBkIaiCADfCIHQhqIIAR8IgRCGoh8IghCGoggAEL///8fgyABQhqIfCIAfCIBQhqIfSIJQn+FIgqDIARC////H4MgCYOEIQQgAiAKgyAGQv///x+DIAmDhCADIAqDIAdC////H4MgCYOEQhqGhCAEQv8fg0I0hoQiAkGkgwg1AgBBqIMINQIAQiCGhHwiAyACVK0gBSAKgyAIQv///x+DIAmDhEIOhiAEQgyIhCAAIAqDIAEgCYNC////H4OEQiiGhEGsgwg1AgBBsIMINQIAQiCGhHx8IQBBpIIIIAM3AwBBrIIIIAA3AwALzQEAQQBBAEEg/AsAQSBBAEEM/AsAQSxBADYAAEEwQQBBwAD8CwBB8ABBAEHAAPwLAEGwAUEAQYCABPwLAEGwgQRBAEGAgAT8CwBBsIEIQQBBIPwLAEHQgQhBAEHAAPwLAEGQgghBAEEQ/AsAQaCCCEEANgAAQaSCCEEAQRD8CwBBtIIIQQBBKPwLAEHcgghBAEEo/AsAQYSDCEEAQSD8CwBBpIMIQQBBEPwLAEG0gwhBAEEY/AsAQcyDCEEAQSD8CwBB8IMIQQBBgAL8CwALACUQc291cmNlTWFwcGluZ1VSTBMuL2NoYWNoYTIwLndhc20ubWFw";
@@ -1,2 +1,2 @@
1
1
  // Generated by scripts/embed-wasm.ts — do not edit
2
- export const WASM_BASE64 = 'AGFzbQEAAAABEQRgAAF/YAAAYAF/AX9gAX8AAyYlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAQECAgEBAwICAQMBAQUEAQEDAwegBSQLZ2V0TW9kdWxlSWQAAAxnZXRLZXlPZmZzZXQAARRnZXRDaGFjaGFOb25jZU9mZnNldAACEmdldENoYWNoYUN0ck9mZnNldAADFGdldENoYWNoYUJsb2NrT2Zmc2V0AAQUZ2V0Q2hhY2hhU3RhdGVPZmZzZXQABRBnZXRDaHVua1B0T2Zmc2V0AAYQZ2V0Q2h1bmtDdE9mZnNldAAHDGdldENodW5rU2l6ZQAIEGdldFBvbHlLZXlPZmZzZXQACRBnZXRQb2x5TXNnT2Zmc2V0AAoQZ2V0UG9seUJ1Zk9mZnNldAALE2dldFBvbHlCdWZMZW5PZmZzZXQADBBnZXRQb2x5VGFnT2Zmc2V0AA0OZ2V0UG9seUhPZmZzZXQADg5nZXRQb2x5Uk9mZnNldAAPD2dldFBvbHlSc09mZnNldAAQDmdldFBvbHlTT2Zmc2V0ABEVZ2V0WENoYUNoYU5vbmNlT2Zmc2V0ABIWZ2V0WENoYUNoYVN1YmtleU9mZnNldAATF2dldENoYWNoYVNpbWRXb3JrT2Zmc2V0ABQOZ2V0TWVtb3J5UGFnZXMAFQ1jaGFjaGFMb2FkS2V5ABYQY2hhY2hhU2V0Q291bnRlcgAXEmNoYWNoYVJlc2V0Q291bnRlcgAYEmNoYWNoYUVuY3J5cHRDaHVuawAaEmNoYWNoYURlY3J5cHRDaHVuawAbEGNoYWNoYUdlblBvbHlLZXkAHAloY2hhY2hhMjAAHRdjaGFjaGFFbmNyeXB0Q2h1bmtfc2ltZAAfF2NoYWNoYURlY3J5cHRDaHVua19zaW1kACAIcG9seUluaXQAIQpwb2x5VXBkYXRlACIJcG9seUZpbmFsACMLd2lwZUJ1ZmZlcnMAJAZtZW1vcnkCAArmRiUEAEEBCwQAQQALBABBIAsEAEEsCwQAQTALBQBB8AALBQBBsAELBgBBsIEECwYAQYCABAsGAEGwgQgLBgBB0IEICwYAQZCCCAsGAEGggggLBgBBpIIICwYAQbSCCAsGAEHcgggLBgBBhIMICwYAQaSDCAsGAEG0gwgLBgBBzIMICwYAQfCDCAsEAD8AC4sBAQJ/QfAAQeXwwYsGNgIAQfQAQe7IgZkDNgIAQfgAQbLaiMsHNgIAQfwAQfTKgdkGNgIAA0AgAEEISARAIABBAnQiASABKAIANgKAASAAQQFqIQAMAQsLQaABQSwoAgA2AgBBACEAA0AgAEEDSARAIABBAnQiASABKAIgNgKkASAAQQFqIQAMAQsLCxEAQSwgADYCAEGgASAANgIACwYAQQEQFwvxCAEFf0EwQfAAQcAA/AoAAANAIABBCkgEQEHAACgCACIBQTAoAgBqIgJB4AAoAgBzIgNBEHQgA0EQdnIiA0HQACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEEwIAI2AgBBwAAgASAEcyIBQQd0IAFBGXZyNgIAQdAAIAQ2AgBB4AAgAzYCAEHEACgCACIBQTQoAgBqIgJB5AAoAgBzIgNBEHQgA0EQdnIiA0HUACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE0IAI2AgBBxAAgASAEcyIBQQd0IAFBGXZyNgIAQdQAIAQ2AgBB5AAgAzYCAEHIACgCACIBQTgoAgBqIgJB6AAoAgBzIgNBEHQgA0EQdnIiA0HYACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE4IAI2AgBByAAgASAEcyIBQQd0IAFBGXZyNgIAQdgAIAQ2AgBB6AAgAzYCAEHMACgCACIBQTwoAgBqIgJB7AAoAgBzIgNBEHQgA0EQdnIiA0HcACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE8IAI2AgBBzAAgASAEcyIBQQd0IAFBGXZyNgIAQdwAIAQ2AgBB7AAgAzYCAEHEACgCACIBQTAoAgBqIgJB7AAoAgBzIgNBEHQgA0EQdnIiA0HYACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEEwIAI2AgBBxAAgASAEcyIBQQd0IAFBGXZyNgIAQdgAIAQ2AgBB7AAgAzYCAEHIACgCACIBQTQoAgBqIgJB4AAoAgBzIgNBEHQgA0EQdnIiA0HcACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE0IAI2AgBByAAgASAEcyIBQQd0IAFBGXZyNgIAQdwAIAQ2AgBB4AAgAzYCAEHMACgCACIBQTgoAgBqIgJB5AAoAgBzIgNBEHQgA0EQdnIiA0HQACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE4IAI2AgBBzAAgASAEcyIBQQd0IAFBGXZyNgIAQdAAIAQ2AgBB5AAgAzYCAEHAACgCACIBQTwoAgBqIgJB6AAoAgBzIgNBEHQgA0EQdnIiA0HUACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE8IAI2AgBBwAAgASAEcyIBQQd0IAFBGXZyNgIAQdQAIAQ2AgBB6AAgAzYCACAAQQFqIQAMAQsLQQAhAANAIABBEEgEQCAAQQJ0IgEgASgCMCABKAJwajYCMCAAQQFqIQAMAQsLC5EBAQN/IABBAEwgAEGAgARKcgRAQX8PCwNAIAAgAkoEQBAZQcAAIAAgAmsiASABQcAAThshA0EAIQEDQCABIANIBEAgAkGwgQRqIAFqIAEtADAgAkGwAWogAWotAABzOgAAIAFBAWohAQwBCwtBoAFBoAEoAgBBAWoiATYCAEEsIAE2AgAgAiADaiECDAELCyAACwYAIAAQGgsYAEGgAUEANgIAEBlBsIEIQTBBIPwKAAALogoBBX9B8ABB5fDBiwY2AgBB9ABB7siBmQM2AgBB+ABBstqIywc2AgBB/ABB9MqB2QY2AgADQCAAQQhIBEAgAEECdCICIAIoAgA2AoABIABBAWohAAwBCwtBACEAA0AgAEEESARAIABBAnQiAiACQbSDCGooAgA2AqABIABBAWohAAwBCwsDQCABQQpIBEBBgAEoAgAiAEHwACgCAGoiAkGgASgCAHMiA0EQdCADQRB2ciIDQZABKAIAaiIEIAAgBHMiAEEMdCAAQRR2ciIAIAJqIgIgA3MiA0EIdCADQRh2ciIDaiEEQfAAIAI2AgBBgAEgACAEcyIAQQd0IABBGXZyNgIAQZABIAQ2AgBBoAEgAzYCAEGEASgCACIAQfQAKAIAaiICQaQBKAIAcyIDQRB0IANBEHZyIgNBlAEoAgBqIgQgACAEcyIAQQx0IABBFHZyIgAgAmoiAiADcyIDQQh0IANBGHZyIgNqIQRB9AAgAjYCAEGEASAAIARzIgBBB3QgAEEZdnI2AgBBlAEgBDYCAEGkASADNgIAQYgBKAIAIgBB+AAoAgBqIgJBqAEoAgBzIgNBEHQgA0EQdnIiA0GYASgCAGoiBCAAIARzIgBBDHQgAEEUdnIiACACaiICIANzIgNBCHQgA0EYdnIiA2ohBEH4ACACNgIAQYgBIAAgBHMiAEEHdCAAQRl2cjYCAEGYASAENgIAQagBIAM2AgBBjAEoAgAiAEH8ACgCAGoiAkGsASgCAHMiA0EQdCADQRB2ciIDQZwBKAIAaiIEIAAgBHMiAEEMdCAAQRR2ciIAIAJqIgIgA3MiA0EIdCADQRh2ciIDaiEEQfwAIAI2AgBBjAEgACAEcyIAQQd0IABBGXZyNgIAQZwBIAQ2AgBBrAEgAzYCAEGEASgCACIAQfAAKAIAaiICQawBKAIAcyIDQRB0IANBEHZyIgNBmAEoAgBqIgQgACAEcyIAQQx0IABBFHZyIgAgAmoiAiADcyIDQQh0IANBGHZyIgNqIQRB8AAgAjYCAEGEASAAIARzIgBBB3QgAEEZdnI2AgBBmAEgBDYCAEGsASADNgIAQYgBKAIAIgBB9AAoAgBqIgJBoAEoAgBzIgNBEHQgA0EQdnIiA0GcASgCAGoiBCAAIARzIgBBDHQgAEEUdnIiACACaiICIANzIgNBCHQgA0EYdnIiA2ohBEH0ACACNgIAQYgBIAAgBHMiAEEHdCAAQRl2cjYCAEGcASAENgIAQaABIAM2AgBBjAEoAgAiAEH4ACgCAGoiAkGkASgCAHMiA0EQdCADQRB2ciIDQZABKAIAaiIEIAAgBHMiAEEMdCAAQRR2ciIAIAJqIgIgA3MiA0EIdCADQRh2ciIDaiEEQfgAIAI2AgBBjAEgACAEcyIAQQd0IABBGXZyNgIAQZABIAQ2AgBBpAEgAzYCAEGAASgCACIAQfwAKAIAaiICQagBKAIAcyIDQRB0IANBEHZyIgNBlAEoAgBqIgQgACAEcyIAQQx0IABBFHZyIgAgAmoiAiADcyIDQQh0IANBGHZyIgNqIQRB/AAgAjYCAEGAASAAIARzIgBBB3QgAEEZdnI2AgBBlAEgBDYCAEGoASADNgIAIAFBAWohAQwBCwtBACEAA0AgAEEESARAIABBAnQiAUHMgwhqIAEoAnA2AgAgAEEBaiEADAELC0EAIQADQCAAQQRIBEAgAEECdCIBQdyDCGogASgCoAE2AgAgAEEBaiEADAELCwv+EAISewF/QfAAKAIA/REhEEH0ACgCAP0RIQpB+AAoAgD9ESELQfwAKAIA/REhDEGAASgCAP0RIQFBhAEoAgD9ESEEQYgBKAIA/REhAkGMASgCAP0RIQNBkAEoAgD9ESENQZQBKAIA/REhDkGYASgCAP0RIQlBnAEoAgD9ESEPIAD9ESAAQQFq/RwBIABBAmr9HAIgAEEDav0cAyEIQaQBKAIA/REhBUGoASgCAP0RIQZBrAEoAgD9ESEHA0AgE0EKSARAIAEgDSAIIBAgAf2uASIB/VEiCEEQ/asBIAhBEP2tAf1QIgj9rgEiDf1RIhBBDP2rASAQQRT9rQH9UCIQIA0gCCABIBD9rgEiCP1RIgFBCP2rASABQRj9rQH9UCIN/a4BIhH9USIBQQf9qwEgAUEZ/a0B/VAhASACIAkgBiALIAL9rgEiAv1RIgZBEP2rASAGQRD9rQH9UCIG/a4BIgn9USILQQz9qwEgC0EU/a0B/VAiCyAJIAYgAiAL/a4BIgv9USICQQj9qwEgAkEY/a0B/VAiBv2uASIC/VEiCUEH/asBIAlBGf2tAf1QIRIgAyAPIAcgDCAD/a4BIgP9USIHQRD9qwEgB0EQ/a0B/VAiB/2uASIJ/VEiDEEM/asBIAxBFP2tAf1QIgwgCSAHIAMgDP2uASIM/VEiA0EI/asBIANBGP2tAf1QIgf9rgEiD/1RIgNBB/2rASADQRn9rQH9UCEDIAIgByAIIAQgDiAFIAogBP2uASIC/VEiBEEQ/asBIARBEP2tAf1QIgT9rgEiBf1RIgdBDP2rASAHQRT9rQH9UCIHIAUgBCACIAf9rgEiAv1RIgRBCP2rASAEQRj9rQH9UCIF/a4BIg79USIEQQf9qwEgBEEZ/a0B/VAiBP2uASIH/VEiCEEQ/asBIAhBEP2tAf1QIgj9rgEiCSAIIAcgBCAJ/VEiBEEM/asBIARBFP2tAf1QIgT9rgEiEP1RIgdBCP2rASAHQRj9rQH9UCIH/a4BIQkgBCAJ/VEiBEEH/asBIARBGf2tAf1QIQQgEiAPIA0gAiAS/a4BIgL9USIIQRD9qwEgCEEQ/a0B/VAiCP2uASIK/VEiDUEM/asBIA1BFP2tAf1QIg0gCiAIIAIgDf2uASIK/VEiAkEI/asBIAJBGP2tAf1QIgj9rgEiD/1RIgJBB/2rASACQRn9rQH9UCECIAMgESAFIAsgA/2uASID/VEiBUEQ/asBIAVBEP2tAf1QIgX9rgEiC/1RIg1BDP2rASANQRT9rQH9UCINIAsgBSADIA39rgEiC/1RIgNBCP2rASADQRj9rQH9UCIF/a4BIg39USIDQQf9qwEgA0EZ/a0B/VAhAyABIA4gBiAMIAH9rgEiAf1RIgZBEP2rASAGQRD9rQH9UCIG/a4BIgz9USIOQQz9qwEgDkEU/a0B/VAiDiAMIAYgASAO/a4BIgz9USIBQQj9qwEgAUEY/a0B/VAiBv2uASIO/VEiAUEH/asBIAFBGf2tAf1QIQEgE0EBaiETDAELCyAKQfQAKAIA/RH9rgEhCiALQfgAKAIA/RH9rgEhCyAMQfwAKAIA/RH9rgEhDCABQYABKAIA/RH9rgEhASAEQYQBKAIA/RH9rgEhBCACQYgBKAIA/RH9rgEhAiADQYwBKAIA/RH9rgEhAyANQZABKAIA/RH9rgEhDSAOQZQBKAIA/RH9rgEhDiAJQZgBKAIA/RH9rgEhCSAPQZwBKAIA/RH9rgEhDyAFQaQBKAIA/RH9rgEhBSAGQagBKAIA/RH9rgEhBiAHQawBKAIA/RH9rgEhB0HwgwggEEHwACgCAP0R/a4BIhD9GwA2AgBB9IMIIAr9GwA2AgBB+IMIIAv9GwA2AgBB/IMIIAz9GwA2AgBBgIQIIAH9GwA2AgBBhIQIIAT9GwA2AgBBiIQIIAL9GwA2AgBBjIQIIAP9GwA2AgBBkIQIIA39GwA2AgBBlIQIIA79GwA2AgBBmIQIIAn9GwA2AgBBnIQIIA/9GwA2AgBBoIQIIAggAP0RIABBAWr9HAEgAEECav0cAiAAQQNq/RwD/a4BIgj9GwA2AgBBpIQIIAX9GwA2AgBBqIQIIAb9GwA2AgBBrIQIIAf9GwA2AgBBsIQIIBD9GwE2AgBBtIQIIAr9GwE2AgBBuIQIIAv9GwE2AgBBvIQIIAz9GwE2AgBBwIQIIAH9GwE2AgBBxIQIIAT9GwE2AgBByIQIIAL9GwE2AgBBzIQIIAP9GwE2AgBB0IQIIA39GwE2AgBB1IQIIA79GwE2AgBB2IQIIAn9GwE2AgBB3IQIIA/9GwE2AgBB4IQIIAj9GwE2AgBB5IQIIAX9GwE2AgBB6IQIIAb9GwE2AgBB7IQIIAf9GwE2AgBB8IQIIBD9GwI2AgBB9IQIIAr9GwI2AgBB+IQIIAv9GwI2AgBB/IQIIAz9GwI2AgBBgIUIIAH9GwI2AgBBhIUIIAT9GwI2AgBBiIUIIAL9GwI2AgBBjIUIIAP9GwI2AgBBkIUIIA39GwI2AgBBlIUIIA79GwI2AgBBmIUIIAn9GwI2AgBBnIUIIA/9GwI2AgBBoIUIIAj9GwI2AgBBpIUIIAX9GwI2AgBBqIUIIAb9GwI2AgBBrIUIIAf9GwI2AgBBsIUIIBD9GwM2AgBBtIUIIAr9GwM2AgBBuIUIIAv9GwM2AgBBvIUIIAz9GwM2AgBBwIUIIAH9GwM2AgBBxIUIIAT9GwM2AgBByIUIIAL9GwM2AgBBzIUIIAP9GwM2AgBB0IUIIA39GwM2AgBB1IUIIA79GwM2AgBB2IUIIAn9GwM2AgBB3IUIIA/9GwM2AgBB4IUIIAj9GwM2AgBB5IUIIAX9GwM2AgBB6IUIIAb9GwM2AgBB7IUIIAf9GwM2AgAL+goBB38gAEEATCAAQYCABEpyBEBBfw8LQaABKAIAIQMDQCACQYACaiAATARAIAMQHkEAIQEDQCABQRBIBEAgAUEEdCIEIAJBsIEEamogBEHwgwhq/QAEACAEIAJBsAFqav0ABAD9Uf0LBAAgAUEBaiEBDAELC0GgASADQQRqIgM2AgBBLCADNgIAIAJBgAJqIQIMAQsLA0AgACACSgRAQTBB8ABBwAD8CgAAQQAhAQNAIAFBCkgEQEHAACgCACIEQTAoAgBqIgVB4AAoAgBzIgZBEHQgBkEQdnIiBkHQACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0EwIAU2AgBBwAAgBCAHcyIEQQd0IARBGXZyNgIAQdAAIAc2AgBB4AAgBjYCAEHEACgCACIEQTQoAgBqIgVB5AAoAgBzIgZBEHQgBkEQdnIiBkHUACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E0IAU2AgBBxAAgBCAHcyIEQQd0IARBGXZyNgIAQdQAIAc2AgBB5AAgBjYCAEHIACgCACIEQTgoAgBqIgVB6AAoAgBzIgZBEHQgBkEQdnIiBkHYACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E4IAU2AgBByAAgBCAHcyIEQQd0IARBGXZyNgIAQdgAIAc2AgBB6AAgBjYCAEHMACgCACIEQTwoAgBqIgVB7AAoAgBzIgZBEHQgBkEQdnIiBkHcACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E8IAU2AgBBzAAgBCAHcyIEQQd0IARBGXZyNgIAQdwAIAc2AgBB7AAgBjYCAEHEACgCACIEQTAoAgBqIgVB7AAoAgBzIgZBEHQgBkEQdnIiBkHYACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0EwIAU2AgBBxAAgBCAHcyIEQQd0IARBGXZyNgIAQdgAIAc2AgBB7AAgBjYCAEHIACgCACIEQTQoAgBqIgVB4AAoAgBzIgZBEHQgBkEQdnIiBkHcACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E0IAU2AgBByAAgBCAHcyIEQQd0IARBGXZyNgIAQdwAIAc2AgBB4AAgBjYCAEHMACgCACIEQTgoAgBqIgVB5AAoAgBzIgZBEHQgBkEQdnIiBkHQACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E4IAU2AgBBzAAgBCAHcyIEQQd0IARBGXZyNgIAQdAAIAc2AgBB5AAgBjYCAEHAACgCACIEQTwoAgBqIgVB6AAoAgBzIgZBEHQgBkEQdnIiBkHUACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E8IAU2AgBBwAAgBCAHcyIEQQd0IARBGXZyNgIAQdQAIAc2AgBB6AAgBjYCACABQQFqIQEMAQsLQQAhAQNAIAFBEEgEQCABQQJ0IgQgBCgCMCAEKAJwajYCMCABQQFqIQEMAQsLQcAAIAAgAmsiASABQcAAThshBEEAIQEDQCABIARIBEAgAkGwgQRqIAFqIAEtADAgAkGwAWogAWotAABzOgAAIAFBAWohAQwBCwtBoAEgA0EBaiIDNgIAQSwgAzYCACACIARqIQIMAQsLIAALBgAgABAfC6EDAQR+QbOBCEGzgQgtAABBD3E6AABBt4EIQbeBCC0AAEEPcToAAEG7gQhBu4EILQAAQQ9xOgAAQb+BCEG/gQgtAABBD3E6AABBtIEIQbSBCC0AAEH8AXE6AABBuIEIQbiBCC0AAEH8AXE6AABBvIEIQbyBCC0AAEH8AXE6AABBs4EINQIAQgKIQv///x+DIQBBtoEINQIAQgSIQv///x+DIQFBuYEINQIAQgaIQv///x+DIQJBvIEINQIAQgiIIQNB3IIIQbCBCDUCAEL///8fgzcDAEHkggggADcDAEHsggggATcDAEH0ggggAjcDAEH8ggggAzcDAEGEgwggAEIFfjcDAEGMgwggAUIFfjcDAEGUgwggAkIFfjcDAEGcgwggA0IFfjcDAEGkgwhBwIEIKAIANgIAQaiDCEHEgQgoAgA2AgBBrIMIQciBCCgCADYCAEGwgwhBzIEIKAIANgIAQbSCCEIANwMAQbyCCEIANwMAQcSCCEIANwMAQcyCCEIANwMAQdSCCEIANwMAQZCCCEEAQRD8CwBBoIIIQQA2AgALrQgCDX4DfyAAQQBMBEAPC0HQgQghDkGggggoAgAiD0EASgRAQRAgD2siECAASgRAIA9BkIIIakHQgQggAPwKAABBoIIIIAAgD2o2AgAPCyAPQZCCCGpB0IEIIBD8CgAAQdyCCCkDACIBQbSCCCkDAEGQggg1AgBC////H4N8IgJ+QdSCCCkDAEGcggg1AgBCCIhCgICACIR8IgNBhIMIKQMAfnxBzIIIKQMAQZmCCDUCAEIGiEL///8fg3wiBEGMgwgpAwAiBX58QcSCCCkDAEGWggg1AgBCBIhC////H4N8IgZBlIMIKQMAIgd+fEG8gggpAwBBk4IINQIAQgKIQv///x+DfCIIQZyDCCkDACIJfnwhCiABIAh+QeSCCCkDACILIAJ+fCADIAV+fCAEIAd+fCAGIAl+fCAKQhqIfCEFIAEgBn4gCCALfnxB7IIIKQMAIgwgAn58IAMgB358IAQgCX58IAVCGoh8IQcgASAEfiAGIAt+fCAIIAx+fEH0gggpAwAiDSACfnwgAyAJfnwgB0IaiHwhCUG0ggggASADfiAEIAt+fCAGIAx+fCAIIA1+fCACQfyCCCkDAH58IAlCGoh8IgFCGohCBX4gCkL///8fg3wiAkL///8fgzcDAEG8ggggBUL///8fgyACQhqIfDcDAEHEggggB0L///8fgzcDAEHMggggCUL///8fgzcDAEHUggggAUL///8fgzcDAEGggghBADYCACAQQdCBCGohDiAAIBBrIQALA0AgAEEQTgRAQdyCCCkDACIBQbSCCCkDACAONQIAQv///x+DfCICfkHUgggpAwAgDjUCDEIIiEKAgIAIhHwiA0GEgwgpAwB+fEHMgggpAwAgDjUCCUIGiEL///8fg3wiBEGMgwgpAwAiBX58QcSCCCkDACAONQIGQgSIQv///x+DfCIGQZSDCCkDACIHfnxBvIIIKQMAIA41AgNCAohC////H4N8IghBnIMIKQMAIgl+fCEKIAEgCH5B5IIIKQMAIgsgAn58IAMgBX58IAQgB358IAYgCX58IApCGoh8IQUgASAGfiAIIAt+fEHsgggpAwAiDCACfnwgAyAHfnwgBCAJfnwgBUIaiHwhByABIAR+IAYgC358IAggDH58QfSCCCkDACINIAJ+fCADIAl+fCAHQhqIfCEJQbSCCCABIAN+IAQgC358IAYgDH58IAggDX58IAJB/IIIKQMAfnwgCUIaiHwiAUIaiEIFfiAKQv///x+DfCICQv///x+DNwMAQbyCCCAFQv///x+DIAJCGoh8NwMAQcSCCCAHQv///x+DNwMAQcyCCCAJQv///x+DNwMAQdSCCCABQv///x+DNwMAIA5BEGohDiAAQRBrIQAMAQsLIABBAEoEQEGQggggDiAA/AoAAEGgggggADYCAAsLwwYCDX4Cf0GggggoAgAiDUEASgRAIA1BkIIIaiIOQQBBECANa/wLACAOQQE6AABB3IIIKQMAIgJBtIIIKQMAQZCCCDUCAEL///8fg3wiA35B1IIIKQMAQZyCCDUCAEIIiHwiBEGEgwgpAwB+fEHMgggpAwBBmYIINQIAQgaIQv///x+DfCIFQYyDCCkDACIAfnxBxIIIKQMAQZaCCDUCAEIEiEL///8fg3wiBkGUgwgpAwAiB358QbyCCCkDAEGTggg1AgBCAohC////H4N8IghBnIMIKQMAIgl+fCEKIAIgCH5B5IIIKQMAIgsgA358IAAgBH58IAUgB358IAYgCX58IApCGoh8IQAgAiAGfiAIIAt+fEHsgggpAwAiASADfnwgBCAHfnwgBSAJfnwgAEIaiHwhByACIAV+IAYgC358IAEgCH58QfSCCCkDACIMIAN+fCAEIAl+fCAHQhqIfCEJQbSCCCACIAR+IAUgC358IAEgBn58IAggDH58IANB/IIIKQMAfnwgCUIaiHwiAUIaiEIFfiAKQv///x+DfCICQv///x+DNwMAQbyCCCAAQv///x+DIAJCGoh8NwMAQcSCCCAHQv///x+DNwMAQcyCCCAJQv///x+DNwMAQdSCCCABQv///x+DNwMAC0G0gggpAwBB1IIIKQMAIgBCGohCBX58IgFC////H4MhAkG8gggpAwAgAUIaiHwiAUL///8fgyEDQcSCCCkDACABQhqIfCIBQv///x+DIgRCAEHMgggpAwAgAUIaiHwiAUL///8fgyIFIAJCBXwiBkIaiCADfCIHQhqIIAR8IgRCGoh8IghCGoggAEL///8fgyABQhqIfCIAfCIBQhqIfSIJQn+FIgqDIARC////H4MgCYOEIQQgAiAKgyAGQv///x+DIAmDhCADIAqDIAdC////H4MgCYOEQhqGhCAEQv8fg0I0hoQiAkGkgwg1AgBBqIMINQIAQiCGhHwiAyACVK0gBSAKgyAIQv///x+DIAmDhEIOhiAEQgyIhCAAIAqDIAEgCYNC////H4OEQiiGhEGsgwg1AgBBsIMINQIAQiCGhHx8IQBBpIIIIAM3AwBBrIIIIAA3AwALzQEAQQBBAEEg/AsAQSBBAEEM/AsAQSxBADYAAEEwQQBBwAD8CwBB8ABBAEHAAPwLAEGwAUEAQYCABPwLAEGwgQRBAEGAgAT8CwBBsIEIQQBBIPwLAEHQgQhBAEHAAPwLAEGQgghBAEEQ/AsAQaCCCEEANgAAQaSCCEEAQRD8CwBBtIIIQQBBKPwLAEHcgghBAEEo/AsAQYSDCEEAQSD8CwBBpIMIQQBBEPwLAEG0gwhBAEEY/AsAQcyDCEEAQSD8CwBB8IMIQQBBgAL8CwALACMQc291cmNlTWFwcGluZ1VSTBEuL2NoYWNoYS53YXNtLm1hcA==';
2
+ export const WASM_BASE64 = 'AGFzbQEAAAABEQRgAAF/YAAAYAF/AX9gAX8AAyYlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAQECAgEBAwICAQMBAQUEAQEDAwegBSQLZ2V0TW9kdWxlSWQAAAxnZXRLZXlPZmZzZXQAARRnZXRDaGFjaGFOb25jZU9mZnNldAACEmdldENoYWNoYUN0ck9mZnNldAADFGdldENoYWNoYUJsb2NrT2Zmc2V0AAQUZ2V0Q2hhY2hhU3RhdGVPZmZzZXQABRBnZXRDaHVua1B0T2Zmc2V0AAYQZ2V0Q2h1bmtDdE9mZnNldAAHDGdldENodW5rU2l6ZQAIEGdldFBvbHlLZXlPZmZzZXQACRBnZXRQb2x5TXNnT2Zmc2V0AAoQZ2V0UG9seUJ1Zk9mZnNldAALE2dldFBvbHlCdWZMZW5PZmZzZXQADBBnZXRQb2x5VGFnT2Zmc2V0AA0OZ2V0UG9seUhPZmZzZXQADg5nZXRQb2x5Uk9mZnNldAAPD2dldFBvbHlSc09mZnNldAAQDmdldFBvbHlTT2Zmc2V0ABEVZ2V0WENoYUNoYU5vbmNlT2Zmc2V0ABIWZ2V0WENoYUNoYVN1YmtleU9mZnNldAATF2dldENoYWNoYVNpbWRXb3JrT2Zmc2V0ABQOZ2V0TWVtb3J5UGFnZXMAFQ1jaGFjaGFMb2FkS2V5ABYQY2hhY2hhU2V0Q291bnRlcgAXEmNoYWNoYVJlc2V0Q291bnRlcgAYEmNoYWNoYUVuY3J5cHRDaHVuawAaEmNoYWNoYURlY3J5cHRDaHVuawAbEGNoYWNoYUdlblBvbHlLZXkAHAloY2hhY2hhMjAAHRdjaGFjaGFFbmNyeXB0Q2h1bmtfc2ltZAAfF2NoYWNoYURlY3J5cHRDaHVua19zaW1kACAIcG9seUluaXQAIQpwb2x5VXBkYXRlACIJcG9seUZpbmFsACMLd2lwZUJ1ZmZlcnMAJAZtZW1vcnkCAArmRiUEAEEBCwQAQQALBABBIAsEAEEsCwQAQTALBQBB8AALBQBBsAELBgBBsIEECwYAQYCABAsGAEGwgQgLBgBB0IEICwYAQZCCCAsGAEGggggLBgBBpIIICwYAQbSCCAsGAEHcgggLBgBBhIMICwYAQaSDCAsGAEG0gwgLBgBBzIMICwYAQfCDCAsEAD8AC4sBAQJ/QfAAQeXwwYsGNgIAQfQAQe7IgZkDNgIAQfgAQbLaiMsHNgIAQfwAQfTKgdkGNgIAA0AgAEEISARAIABBAnQiASABKAIANgKAASAAQQFqIQAMAQsLQaABQSwoAgA2AgBBACEAA0AgAEEDSARAIABBAnQiASABKAIgNgKkASAAQQFqIQAMAQsLCxEAQSwgADYCAEGgASAANgIACwYAQQEQFwvxCAEFf0EwQfAAQcAA/AoAAANAIABBCkgEQEHAACgCACIBQTAoAgBqIgJB4AAoAgBzIgNBEHQgA0EQdnIiA0HQACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEEwIAI2AgBBwAAgASAEcyIBQQd0IAFBGXZyNgIAQdAAIAQ2AgBB4AAgAzYCAEHEACgCACIBQTQoAgBqIgJB5AAoAgBzIgNBEHQgA0EQdnIiA0HUACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE0IAI2AgBBxAAgASAEcyIBQQd0IAFBGXZyNgIAQdQAIAQ2AgBB5AAgAzYCAEHIACgCACIBQTgoAgBqIgJB6AAoAgBzIgNBEHQgA0EQdnIiA0HYACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE4IAI2AgBByAAgASAEcyIBQQd0IAFBGXZyNgIAQdgAIAQ2AgBB6AAgAzYCAEHMACgCACIBQTwoAgBqIgJB7AAoAgBzIgNBEHQgA0EQdnIiA0HcACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE8IAI2AgBBzAAgASAEcyIBQQd0IAFBGXZyNgIAQdwAIAQ2AgBB7AAgAzYCAEHEACgCACIBQTAoAgBqIgJB7AAoAgBzIgNBEHQgA0EQdnIiA0HYACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEEwIAI2AgBBxAAgASAEcyIBQQd0IAFBGXZyNgIAQdgAIAQ2AgBB7AAgAzYCAEHIACgCACIBQTQoAgBqIgJB4AAoAgBzIgNBEHQgA0EQdnIiA0HcACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE0IAI2AgBByAAgASAEcyIBQQd0IAFBGXZyNgIAQdwAIAQ2AgBB4AAgAzYCAEHMACgCACIBQTgoAgBqIgJB5AAoAgBzIgNBEHQgA0EQdnIiA0HQACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE4IAI2AgBBzAAgASAEcyIBQQd0IAFBGXZyNgIAQdAAIAQ2AgBB5AAgAzYCAEHAACgCACIBQTwoAgBqIgJB6AAoAgBzIgNBEHQgA0EQdnIiA0HUACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE8IAI2AgBBwAAgASAEcyIBQQd0IAFBGXZyNgIAQdQAIAQ2AgBB6AAgAzYCACAAQQFqIQAMAQsLQQAhAANAIABBEEgEQCAAQQJ0IgEgASgCMCABKAJwajYCMCAAQQFqIQAMAQsLC5EBAQN/IABBAEwgAEGAgARKcgRAQX8PCwNAIAAgAkoEQBAZQcAAIAAgAmsiASABQcAAThshA0EAIQEDQCABIANIBEAgAkGwgQRqIAFqIAEtADAgAkGwAWogAWotAABzOgAAIAFBAWohAQwBCwtBoAFBoAEoAgBBAWoiATYCAEEsIAE2AgAgAiADaiECDAELCyAACwYAIAAQGgsYAEGgAUEANgIAEBlBsIEIQTBBIPwKAAALogoBBX9B8ABB5fDBiwY2AgBB9ABB7siBmQM2AgBB+ABBstqIywc2AgBB/ABB9MqB2QY2AgADQCAAQQhIBEAgAEECdCICIAIoAgA2AoABIABBAWohAAwBCwtBACEAA0AgAEEESARAIABBAnQiAiACQbSDCGooAgA2AqABIABBAWohAAwBCwsDQCABQQpIBEBBgAEoAgAiAEHwACgCAGoiAkGgASgCAHMiA0EQdCADQRB2ciIDQZABKAIAaiIEIAAgBHMiAEEMdCAAQRR2ciIAIAJqIgIgA3MiA0EIdCADQRh2ciIDaiEEQfAAIAI2AgBBgAEgACAEcyIAQQd0IABBGXZyNgIAQZABIAQ2AgBBoAEgAzYCAEGEASgCACIAQfQAKAIAaiICQaQBKAIAcyIDQRB0IANBEHZyIgNBlAEoAgBqIgQgACAEcyIAQQx0IABBFHZyIgAgAmoiAiADcyIDQQh0IANBGHZyIgNqIQRB9AAgAjYCAEGEASAAIARzIgBBB3QgAEEZdnI2AgBBlAEgBDYCAEGkASADNgIAQYgBKAIAIgBB+AAoAgBqIgJBqAEoAgBzIgNBEHQgA0EQdnIiA0GYASgCAGoiBCAAIARzIgBBDHQgAEEUdnIiACACaiICIANzIgNBCHQgA0EYdnIiA2ohBEH4ACACNgIAQYgBIAAgBHMiAEEHdCAAQRl2cjYCAEGYASAENgIAQagBIAM2AgBBjAEoAgAiAEH8ACgCAGoiAkGsASgCAHMiA0EQdCADQRB2ciIDQZwBKAIAaiIEIAAgBHMiAEEMdCAAQRR2ciIAIAJqIgIgA3MiA0EIdCADQRh2ciIDaiEEQfwAIAI2AgBBjAEgACAEcyIAQQd0IABBGXZyNgIAQZwBIAQ2AgBBrAEgAzYCAEGEASgCACIAQfAAKAIAaiICQawBKAIAcyIDQRB0IANBEHZyIgNBmAEoAgBqIgQgACAEcyIAQQx0IABBFHZyIgAgAmoiAiADcyIDQQh0IANBGHZyIgNqIQRB8AAgAjYCAEGEASAAIARzIgBBB3QgAEEZdnI2AgBBmAEgBDYCAEGsASADNgIAQYgBKAIAIgBB9AAoAgBqIgJBoAEoAgBzIgNBEHQgA0EQdnIiA0GcASgCAGoiBCAAIARzIgBBDHQgAEEUdnIiACACaiICIANzIgNBCHQgA0EYdnIiA2ohBEH0ACACNgIAQYgBIAAgBHMiAEEHdCAAQRl2cjYCAEGcASAENgIAQaABIAM2AgBBjAEoAgAiAEH4ACgCAGoiAkGkASgCAHMiA0EQdCADQRB2ciIDQZABKAIAaiIEIAAgBHMiAEEMdCAAQRR2ciIAIAJqIgIgA3MiA0EIdCADQRh2ciIDaiEEQfgAIAI2AgBBjAEgACAEcyIAQQd0IABBGXZyNgIAQZABIAQ2AgBBpAEgAzYCAEGAASgCACIAQfwAKAIAaiICQagBKAIAcyIDQRB0IANBEHZyIgNBlAEoAgBqIgQgACAEcyIAQQx0IABBFHZyIgAgAmoiAiADcyIDQQh0IANBGHZyIgNqIQRB/AAgAjYCAEGAASAAIARzIgBBB3QgAEEZdnI2AgBBlAEgBDYCAEGoASADNgIAIAFBAWohAQwBCwtBACEAA0AgAEEESARAIABBAnQiAUHMgwhqIAEoAnA2AgAgAEEBaiEADAELC0EAIQADQCAAQQRIBEAgAEECdCIBQdyDCGogASgCoAE2AgAgAEEBaiEADAELCwv+EAISewF/QfAAKAIA/REhEEH0ACgCAP0RIQpB+AAoAgD9ESELQfwAKAIA/REhDEGAASgCAP0RIQFBhAEoAgD9ESEEQYgBKAIA/REhAkGMASgCAP0RIQNBkAEoAgD9ESENQZQBKAIA/REhDkGYASgCAP0RIQlBnAEoAgD9ESEPIAD9ESAAQQFq/RwBIABBAmr9HAIgAEEDav0cAyEIQaQBKAIA/REhBUGoASgCAP0RIQZBrAEoAgD9ESEHA0AgE0EKSARAIAEgDSAIIBAgAf2uASIB/VEiCEEQ/asBIAhBEP2tAf1QIgj9rgEiDf1RIhBBDP2rASAQQRT9rQH9UCIQIA0gCCABIBD9rgEiCP1RIgFBCP2rASABQRj9rQH9UCIN/a4BIhH9USIBQQf9qwEgAUEZ/a0B/VAhASACIAkgBiALIAL9rgEiAv1RIgZBEP2rASAGQRD9rQH9UCIG/a4BIgn9USILQQz9qwEgC0EU/a0B/VAiCyAJIAYgAiAL/a4BIgv9USICQQj9qwEgAkEY/a0B/VAiBv2uASIC/VEiCUEH/asBIAlBGf2tAf1QIRIgAyAPIAcgDCAD/a4BIgP9USIHQRD9qwEgB0EQ/a0B/VAiB/2uASIJ/VEiDEEM/asBIAxBFP2tAf1QIgwgCSAHIAMgDP2uASIM/VEiA0EI/asBIANBGP2tAf1QIgf9rgEiD/1RIgNBB/2rASADQRn9rQH9UCEDIAIgByAIIAQgDiAFIAogBP2uASIC/VEiBEEQ/asBIARBEP2tAf1QIgT9rgEiBf1RIgdBDP2rASAHQRT9rQH9UCIHIAUgBCACIAf9rgEiAv1RIgRBCP2rASAEQRj9rQH9UCIF/a4BIg79USIEQQf9qwEgBEEZ/a0B/VAiBP2uASIH/VEiCEEQ/asBIAhBEP2tAf1QIgj9rgEiCSAIIAcgBCAJ/VEiBEEM/asBIARBFP2tAf1QIgT9rgEiEP1RIgdBCP2rASAHQRj9rQH9UCIH/a4BIQkgBCAJ/VEiBEEH/asBIARBGf2tAf1QIQQgEiAPIA0gAiAS/a4BIgL9USIIQRD9qwEgCEEQ/a0B/VAiCP2uASIK/VEiDUEM/asBIA1BFP2tAf1QIg0gCiAIIAIgDf2uASIK/VEiAkEI/asBIAJBGP2tAf1QIgj9rgEiD/1RIgJBB/2rASACQRn9rQH9UCECIAMgESAFIAsgA/2uASID/VEiBUEQ/asBIAVBEP2tAf1QIgX9rgEiC/1RIg1BDP2rASANQRT9rQH9UCINIAsgBSADIA39rgEiC/1RIgNBCP2rASADQRj9rQH9UCIF/a4BIg39USIDQQf9qwEgA0EZ/a0B/VAhAyABIA4gBiAMIAH9rgEiAf1RIgZBEP2rASAGQRD9rQH9UCIG/a4BIgz9USIOQQz9qwEgDkEU/a0B/VAiDiAMIAYgASAO/a4BIgz9USIBQQj9qwEgAUEY/a0B/VAiBv2uASIO/VEiAUEH/asBIAFBGf2tAf1QIQEgE0EBaiETDAELCyAKQfQAKAIA/RH9rgEhCiALQfgAKAIA/RH9rgEhCyAMQfwAKAIA/RH9rgEhDCABQYABKAIA/RH9rgEhASAEQYQBKAIA/RH9rgEhBCACQYgBKAIA/RH9rgEhAiADQYwBKAIA/RH9rgEhAyANQZABKAIA/RH9rgEhDSAOQZQBKAIA/RH9rgEhDiAJQZgBKAIA/RH9rgEhCSAPQZwBKAIA/RH9rgEhDyAFQaQBKAIA/RH9rgEhBSAGQagBKAIA/RH9rgEhBiAHQawBKAIA/RH9rgEhB0HwgwggEEHwACgCAP0R/a4BIhD9GwA2AgBB9IMIIAr9GwA2AgBB+IMIIAv9GwA2AgBB/IMIIAz9GwA2AgBBgIQIIAH9GwA2AgBBhIQIIAT9GwA2AgBBiIQIIAL9GwA2AgBBjIQIIAP9GwA2AgBBkIQIIA39GwA2AgBBlIQIIA79GwA2AgBBmIQIIAn9GwA2AgBBnIQIIA/9GwA2AgBBoIQIIAggAP0RIABBAWr9HAEgAEECav0cAiAAQQNq/RwD/a4BIgj9GwA2AgBBpIQIIAX9GwA2AgBBqIQIIAb9GwA2AgBBrIQIIAf9GwA2AgBBsIQIIBD9GwE2AgBBtIQIIAr9GwE2AgBBuIQIIAv9GwE2AgBBvIQIIAz9GwE2AgBBwIQIIAH9GwE2AgBBxIQIIAT9GwE2AgBByIQIIAL9GwE2AgBBzIQIIAP9GwE2AgBB0IQIIA39GwE2AgBB1IQIIA79GwE2AgBB2IQIIAn9GwE2AgBB3IQIIA/9GwE2AgBB4IQIIAj9GwE2AgBB5IQIIAX9GwE2AgBB6IQIIAb9GwE2AgBB7IQIIAf9GwE2AgBB8IQIIBD9GwI2AgBB9IQIIAr9GwI2AgBB+IQIIAv9GwI2AgBB/IQIIAz9GwI2AgBBgIUIIAH9GwI2AgBBhIUIIAT9GwI2AgBBiIUIIAL9GwI2AgBBjIUIIAP9GwI2AgBBkIUIIA39GwI2AgBBlIUIIA79GwI2AgBBmIUIIAn9GwI2AgBBnIUIIA/9GwI2AgBBoIUIIAj9GwI2AgBBpIUIIAX9GwI2AgBBqIUIIAb9GwI2AgBBrIUIIAf9GwI2AgBBsIUIIBD9GwM2AgBBtIUIIAr9GwM2AgBBuIUIIAv9GwM2AgBBvIUIIAz9GwM2AgBBwIUIIAH9GwM2AgBBxIUIIAT9GwM2AgBByIUIIAL9GwM2AgBBzIUIIAP9GwM2AgBB0IUIIA39GwM2AgBB1IUIIA79GwM2AgBB2IUIIAn9GwM2AgBB3IUIIA/9GwM2AgBB4IUIIAj9GwM2AgBB5IUIIAX9GwM2AgBB6IUIIAb9GwM2AgBB7IUIIAf9GwM2AgAL+goBB38gAEEATCAAQYCABEpyBEBBfw8LQaABKAIAIQMDQCACQYACaiAATARAIAMQHkEAIQEDQCABQRBIBEAgAUEEdCIEIAJBsIEEamogBEHwgwhq/QAEACAEIAJBsAFqav0ABAD9Uf0LBAAgAUEBaiEBDAELC0GgASADQQRqIgM2AgBBLCADNgIAIAJBgAJqIQIMAQsLA0AgACACSgRAQTBB8ABBwAD8CgAAQQAhAQNAIAFBCkgEQEHAACgCACIEQTAoAgBqIgVB4AAoAgBzIgZBEHQgBkEQdnIiBkHQACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0EwIAU2AgBBwAAgBCAHcyIEQQd0IARBGXZyNgIAQdAAIAc2AgBB4AAgBjYCAEHEACgCACIEQTQoAgBqIgVB5AAoAgBzIgZBEHQgBkEQdnIiBkHUACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E0IAU2AgBBxAAgBCAHcyIEQQd0IARBGXZyNgIAQdQAIAc2AgBB5AAgBjYCAEHIACgCACIEQTgoAgBqIgVB6AAoAgBzIgZBEHQgBkEQdnIiBkHYACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E4IAU2AgBByAAgBCAHcyIEQQd0IARBGXZyNgIAQdgAIAc2AgBB6AAgBjYCAEHMACgCACIEQTwoAgBqIgVB7AAoAgBzIgZBEHQgBkEQdnIiBkHcACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E8IAU2AgBBzAAgBCAHcyIEQQd0IARBGXZyNgIAQdwAIAc2AgBB7AAgBjYCAEHEACgCACIEQTAoAgBqIgVB7AAoAgBzIgZBEHQgBkEQdnIiBkHYACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0EwIAU2AgBBxAAgBCAHcyIEQQd0IARBGXZyNgIAQdgAIAc2AgBB7AAgBjYCAEHIACgCACIEQTQoAgBqIgVB4AAoAgBzIgZBEHQgBkEQdnIiBkHcACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E0IAU2AgBByAAgBCAHcyIEQQd0IARBGXZyNgIAQdwAIAc2AgBB4AAgBjYCAEHMACgCACIEQTgoAgBqIgVB5AAoAgBzIgZBEHQgBkEQdnIiBkHQACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E4IAU2AgBBzAAgBCAHcyIEQQd0IARBGXZyNgIAQdAAIAc2AgBB5AAgBjYCAEHAACgCACIEQTwoAgBqIgVB6AAoAgBzIgZBEHQgBkEQdnIiBkHUACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E8IAU2AgBBwAAgBCAHcyIEQQd0IARBGXZyNgIAQdQAIAc2AgBB6AAgBjYCACABQQFqIQEMAQsLQQAhAQNAIAFBEEgEQCABQQJ0IgQgBCgCMCAEKAJwajYCMCABQQFqIQEMAQsLQcAAIAAgAmsiASABQcAAThshBEEAIQEDQCABIARIBEAgAkGwgQRqIAFqIAEtADAgAkGwAWogAWotAABzOgAAIAFBAWohAQwBCwtBoAEgA0EBaiIDNgIAQSwgAzYCACACIARqIQIMAQsLIAALBgAgABAfC6EDAQR+QbOBCEGzgQgtAABBD3E6AABBt4EIQbeBCC0AAEEPcToAAEG7gQhBu4EILQAAQQ9xOgAAQb+BCEG/gQgtAABBD3E6AABBtIEIQbSBCC0AAEH8AXE6AABBuIEIQbiBCC0AAEH8AXE6AABBvIEIQbyBCC0AAEH8AXE6AABBs4EINQIAQgKIQv///x+DIQBBtoEINQIAQgSIQv///x+DIQFBuYEINQIAQgaIQv///x+DIQJBvIEINQIAQgiIIQNB3IIIQbCBCDUCAEL///8fgzcDAEHkggggADcDAEHsggggATcDAEH0ggggAjcDAEH8ggggAzcDAEGEgwggAEIFfjcDAEGMgwggAUIFfjcDAEGUgwggAkIFfjcDAEGcgwggA0IFfjcDAEGkgwhBwIEIKAIANgIAQaiDCEHEgQgoAgA2AgBBrIMIQciBCCgCADYCAEGwgwhBzIEIKAIANgIAQbSCCEIANwMAQbyCCEIANwMAQcSCCEIANwMAQcyCCEIANwMAQdSCCEIANwMAQZCCCEEAQRD8CwBBoIIIQQA2AgALrQgCDX4DfyAAQQBMBEAPC0HQgQghDkGggggoAgAiD0EASgRAQRAgD2siECAASgRAIA9BkIIIakHQgQggAPwKAABBoIIIIAAgD2o2AgAPCyAPQZCCCGpB0IEIIBD8CgAAQdyCCCkDACIBQbSCCCkDAEGQggg1AgBC////H4N8IgJ+QdSCCCkDAEGcggg1AgBCCIhCgICACIR8IgNBhIMIKQMAfnxBzIIIKQMAQZmCCDUCAEIGiEL///8fg3wiBEGMgwgpAwAiBX58QcSCCCkDAEGWggg1AgBCBIhC////H4N8IgZBlIMIKQMAIgd+fEG8gggpAwBBk4IINQIAQgKIQv///x+DfCIIQZyDCCkDACIJfnwhCiABIAh+QeSCCCkDACILIAJ+fCADIAV+fCAEIAd+fCAGIAl+fCAKQhqIfCEFIAEgBn4gCCALfnxB7IIIKQMAIgwgAn58IAMgB358IAQgCX58IAVCGoh8IQcgASAEfiAGIAt+fCAIIAx+fEH0gggpAwAiDSACfnwgAyAJfnwgB0IaiHwhCUG0ggggASADfiAEIAt+fCAGIAx+fCAIIA1+fCACQfyCCCkDAH58IAlCGoh8IgFCGohCBX4gCkL///8fg3wiAkL///8fgzcDAEG8ggggBUL///8fgyACQhqIfDcDAEHEggggB0L///8fgzcDAEHMggggCUL///8fgzcDAEHUggggAUL///8fgzcDAEGggghBADYCACAQQdCBCGohDiAAIBBrIQALA0AgAEEQTgRAQdyCCCkDACIBQbSCCCkDACAONQIAQv///x+DfCICfkHUgggpAwAgDjUCDEIIiEKAgIAIhHwiA0GEgwgpAwB+fEHMgggpAwAgDjUCCUIGiEL///8fg3wiBEGMgwgpAwAiBX58QcSCCCkDACAONQIGQgSIQv///x+DfCIGQZSDCCkDACIHfnxBvIIIKQMAIA41AgNCAohC////H4N8IghBnIMIKQMAIgl+fCEKIAEgCH5B5IIIKQMAIgsgAn58IAMgBX58IAQgB358IAYgCX58IApCGoh8IQUgASAGfiAIIAt+fEHsgggpAwAiDCACfnwgAyAHfnwgBCAJfnwgBUIaiHwhByABIAR+IAYgC358IAggDH58QfSCCCkDACINIAJ+fCADIAl+fCAHQhqIfCEJQbSCCCABIAN+IAQgC358IAYgDH58IAggDX58IAJB/IIIKQMAfnwgCUIaiHwiAUIaiEIFfiAKQv///x+DfCICQv///x+DNwMAQbyCCCAFQv///x+DIAJCGoh8NwMAQcSCCCAHQv///x+DNwMAQcyCCCAJQv///x+DNwMAQdSCCCABQv///x+DNwMAIA5BEGohDiAAQRBrIQAMAQsLIABBAEoEQEGQggggDiAA/AoAAEGgggggADYCAAsLwwYCDX4Cf0GggggoAgAiDUEASgRAIA1BkIIIaiIOQQBBECANa/wLACAOQQE6AABB3IIIKQMAIgJBtIIIKQMAQZCCCDUCAEL///8fg3wiA35B1IIIKQMAQZyCCDUCAEIIiHwiBEGEgwgpAwB+fEHMgggpAwBBmYIINQIAQgaIQv///x+DfCIFQYyDCCkDACIAfnxBxIIIKQMAQZaCCDUCAEIEiEL///8fg3wiBkGUgwgpAwAiB358QbyCCCkDAEGTggg1AgBCAohC////H4N8IghBnIMIKQMAIgl+fCEKIAIgCH5B5IIIKQMAIgsgA358IAAgBH58IAUgB358IAYgCX58IApCGoh8IQAgAiAGfiAIIAt+fEHsgggpAwAiASADfnwgBCAHfnwgBSAJfnwgAEIaiHwhByACIAV+IAYgC358IAEgCH58QfSCCCkDACIMIAN+fCAEIAl+fCAHQhqIfCEJQbSCCCACIAR+IAUgC358IAEgBn58IAggDH58IANB/IIIKQMAfnwgCUIaiHwiAUIaiEIFfiAKQv///x+DfCICQv///x+DNwMAQbyCCCAAQv///x+DIAJCGoh8NwMAQcSCCCAHQv///x+DNwMAQcyCCCAJQv///x+DNwMAQdSCCCABQv///x+DNwMAC0G0gggpAwBB1IIIKQMAIgBCGohCBX58IgFC////H4MhAkG8gggpAwAgAUIaiHwiAUL///8fgyEDQcSCCCkDACABQhqIfCIBQv///x+DIgRCAEHMgggpAwAgAUIaiHwiAUL///8fgyIFIAJCBXwiBkIaiCADfCIHQhqIIAR8IgRCGoh8IghCGoggAEL///8fgyABQhqIfCIAfCIBQhqIfSIJQn+FIgqDIARC////H4MgCYOEIQQgAiAKgyAGQv///x+DIAmDhCADIAqDIAdC////H4MgCYOEQhqGhCAEQv8fg0I0hoQiAkGkgwg1AgBBqIMINQIAQiCGhHwiAyACVK0gBSAKgyAIQv///x+DIAmDhEIOhiAEQgyIhCAAIAqDIAEgCYNC////H4OEQiiGhEGsgwg1AgBBsIMINQIAQiCGhHx8IQBBpIIIIAM3AwBBrIIIIAA3AwALzQEAQQBBAEEg/AsAQSBBAEEM/AsAQSxBADYAAEEwQQBBwAD8CwBB8ABBAEHAAPwLAEGwAUEAQYCABPwLAEGwgQRBAEGAgAT8CwBBsIEIQQBBIPwLAEHQgQhBAEHAAPwLAEGQgghBAEEQ/AsAQaCCCEEANgAAQaSCCEEAQRD8CwBBtIIIQQBBKPwLAEHcgghBAEEo/AsAQYSDCEEAQSD8CwBBpIMIQQBBEPwLAEG0gwhBAEEY/AsAQcyDCEEAQSD8CwBB8IMIQQBBgAL8CwALACUQc291cmNlTWFwcGluZ1VSTBMuL2NoYWNoYTIwLndhc20ubWFw';
package/dist/init.js CHANGED
@@ -3,7 +3,7 @@ const instances = new Map();
3
3
  // Map from public module name to WASM filename
4
4
  const WASM_FILES = {
5
5
  serpent: 'serpent.wasm',
6
- chacha20: 'chacha.wasm',
6
+ chacha20: 'chacha20.wasm',
7
7
  sha2: 'sha2.wasm',
8
8
  sha3: 'sha3.wasm',
9
9
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leviathan-crypto",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "author": "xero (https://x-e.ro)",
5
5
  "license": "MIT",
6
6
  "description": "Zero-dependency WebAssembly cryptography library for TypeScript: Serpent-256, XChaCha20-Poly1305, SHA-2/3, HMAC, HKDF, and Fortuna CSPRNG, with a strictly typed API built on vector-verified primitives.",