@unknownncat/curve25519-node 2.1.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/NOTICE.md +6 -6
  2. package/README.en.md +34 -407
  3. package/README.md +35 -408
  4. package/dist/axlsign.d.ts +1 -1
  5. package/dist/axlsign.d.ts.map +1 -1
  6. package/dist/axlsign.js +8 -50
  7. package/dist/axlsign.js.map +1 -1
  8. package/dist/cjs/axlsign.js +8 -50
  9. package/dist/cjs/axlsign.js.map +1 -1
  10. package/dist/cjs/index.js +2 -11
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/cjs/internal/assert.js +1 -1
  13. package/dist/cjs/internal/assert.js.map +1 -1
  14. package/dist/cjs/internal/axlsign-wasm/axlsign_wasm.js +129 -65
  15. package/dist/cjs/internal/axlsign-wasm/axlsign_wasm_bg.wasm +0 -0
  16. package/dist/cjs/internal/axlsign-wasm/axlsign_wasm_bg.wasm.d.ts +8 -10
  17. package/dist/index.d.ts +1 -59
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +1 -10
  20. package/dist/index.js.map +1 -1
  21. package/dist/internal/assert.js +1 -1
  22. package/dist/internal/assert.js.map +1 -1
  23. package/dist/internal/axlsign-wasm/axlsign_wasm.js +129 -65
  24. package/dist/internal/axlsign-wasm/axlsign_wasm_bg.wasm +0 -0
  25. package/dist/internal/axlsign-wasm/axlsign_wasm_bg.wasm.d.ts +8 -10
  26. package/package.json +8 -24
  27. package/dist/cjs/internal/curve25519-wasm/LICENSE +0 -21
  28. package/dist/cjs/internal/curve25519-wasm/curve25519_wasm.d.ts +0 -12
  29. package/dist/cjs/internal/curve25519-wasm/curve25519_wasm.js +0 -165
  30. package/dist/cjs/internal/curve25519-wasm/curve25519_wasm_bg.wasm +0 -0
  31. package/dist/cjs/internal/curve25519-wasm/curve25519_wasm_bg.wasm.d.ts +0 -13
  32. package/dist/cjs/internal/curve25519-wasm/package.json +0 -17
  33. package/dist/cjs/wasm.js +0 -249
  34. package/dist/cjs/wasm.js.map +0 -1
  35. package/dist/internal/curve25519-wasm/LICENSE +0 -21
  36. package/dist/internal/curve25519-wasm/curve25519_wasm.d.ts +0 -12
  37. package/dist/internal/curve25519-wasm/curve25519_wasm.js +0 -165
  38. package/dist/internal/curve25519-wasm/curve25519_wasm_bg.wasm +0 -0
  39. package/dist/internal/curve25519-wasm/curve25519_wasm_bg.wasm.d.ts +0 -13
  40. package/dist/internal/curve25519-wasm/package.json +0 -17
  41. package/dist/wasm.d.ts +0 -92
  42. package/dist/wasm.d.ts.map +0 -1
  43. package/dist/wasm.js +0 -225
  44. package/dist/wasm.js.map +0 -1
package/dist/wasm.js DELETED
@@ -1,225 +0,0 @@
1
- import { existsSync } from "node:fs";
2
- import { dirname, isAbsolute, join } from "node:path";
3
- import { createRequire } from "node:module";
4
- import { asBytes32, asBytes64, assertBytes32, assertBytes64, assertUint8Array, } from "./internal/assert.js";
5
- const SELF_PACKAGE_NAME = "@unknownncat/curve25519-node";
6
- const requireBase = typeof __filename === "string"
7
- ? __filename
8
- : typeof process.argv[1] === "string" && isAbsolute(process.argv[1])
9
- ? process.argv[1]
10
- : join(process.cwd(), "package.json");
11
- const nodeRequire = createRequire(requireBase);
12
- let wasmModulePath;
13
- let wasmBindings;
14
- function resolveWasmModulePath() {
15
- const candidates = [];
16
- try {
17
- const packageJsonPath = nodeRequire.resolve(`${SELF_PACKAGE_NAME}/package.json`);
18
- candidates.push(join(dirname(packageJsonPath), "dist", "internal", "curve25519-wasm", "curve25519_wasm.js"));
19
- }
20
- catch {
21
- // Fall back to local development paths below.
22
- }
23
- if (typeof __dirname === "string") {
24
- candidates.push(join(__dirname, "internal", "curve25519-wasm", "curve25519_wasm.js"));
25
- }
26
- candidates.push(join(process.cwd(), "dist", "internal", "curve25519-wasm", "curve25519_wasm.js"));
27
- candidates.push(join(process.cwd(), "src", "internal", "curve25519-wasm", "curve25519_wasm.js"));
28
- for (const candidate of candidates) {
29
- if (existsSync(candidate)) {
30
- return candidate;
31
- }
32
- }
33
- throw new Error("Unable to locate modern curve25519 WASM module. Run `npm run build` before using wasm API in local dev.");
34
- }
35
- function getWasmBindings() {
36
- if (wasmBindings !== undefined) {
37
- return wasmBindings;
38
- }
39
- if (wasmModulePath === undefined) {
40
- wasmModulePath = resolveWasmModulePath();
41
- }
42
- // Lazy-load WASM bindings so node:crypto users avoid startup overhead.
43
- wasmBindings = nodeRequire(wasmModulePath);
44
- return wasmBindings;
45
- }
46
- function copyBytes32(bytes32, label) {
47
- const out = new Uint8Array(32);
48
- out.set(bytes32);
49
- return asBytes32(out, label);
50
- }
51
- function clampScalar(seed32) {
52
- const out = new Uint8Array(32);
53
- out.set(seed32);
54
- out[0] = (out[0] ?? 0) & 248;
55
- const last = out[31] ?? 0;
56
- out[31] = (last & 127) | 64;
57
- return asBytes32(out, "clamped scalar");
58
- }
59
- function isRecord(value) {
60
- return typeof value === "object" && value !== null;
61
- }
62
- function assertWasmKeyObject(value, expectedType, label) {
63
- if (!isRecord(value) || value.type !== expectedType || !(value.bytes instanceof Uint8Array)) {
64
- throw new TypeError(`${label} must be a ${expectedType} key object`);
65
- }
66
- assertBytes32(value.bytes, `${label}.bytes`);
67
- }
68
- export function isAllZero32(bytes32) {
69
- assertBytes32(bytes32, "bytes32");
70
- let acc = 0;
71
- for (let i = 0; i < 32; i += 1) {
72
- acc |= bytes32[i] ?? 0;
73
- }
74
- return acc === 0;
75
- }
76
- export function x25519CreatePrivateKeyObject(secretKey32) {
77
- assertBytes32(secretKey32, "secretKey32");
78
- return Object.freeze({
79
- type: "x25519-private",
80
- bytes: copyBytes32(secretKey32, "x25519 private key object bytes"),
81
- });
82
- }
83
- export function x25519CreatePublicKeyObject(publicKey32) {
84
- assertBytes32(publicKey32, "publicKey32");
85
- return Object.freeze({
86
- type: "x25519-public",
87
- bytes: copyBytes32(publicKey32, "x25519 public key object bytes"),
88
- });
89
- }
90
- export function x25519PublicKeyFromPrivateKeyObject(privateKey) {
91
- assertWasmKeyObject(privateKey, "x25519-private", "privateKey");
92
- return asBytes32(getWasmBindings().x25519PublicKey(privateKey.bytes), "x25519 public key");
93
- }
94
- export function x25519PublicKey(secretKey32) {
95
- return x25519PublicKeyFromPrivateKeyObject(x25519CreatePrivateKeyObject(secretKey32));
96
- }
97
- export function x25519SharedKeyFromKeyObjects(privateKey, publicKey) {
98
- assertWasmKeyObject(privateKey, "x25519-private", "privateKey");
99
- assertWasmKeyObject(publicKey, "x25519-public", "publicKey");
100
- return asBytes32(getWasmBindings().x25519SharedKey(privateKey.bytes, publicKey.bytes), "x25519 shared key");
101
- }
102
- export function x25519SharedKey(secretKey32, publicKey32) {
103
- const privateKey = x25519CreatePrivateKeyObject(secretKey32);
104
- const publicKey = x25519CreatePublicKeyObject(publicKey32);
105
- return x25519SharedKeyFromKeyObjects(privateKey, publicKey);
106
- }
107
- export function x25519SharedKeyStrictFromKeyObjects(privateKey, publicKey) {
108
- const shared = x25519SharedKeyFromKeyObjects(privateKey, publicKey);
109
- if (isAllZero32(shared)) {
110
- throw new Error("X25519 shared secret is all-zero; reject low-order/invalid peer public key in protocol flow.");
111
- }
112
- return shared;
113
- }
114
- export function x25519SharedKeyStrict(secretKey32, publicKey32) {
115
- const privateKey = x25519CreatePrivateKeyObject(secretKey32);
116
- const publicKey = x25519CreatePublicKeyObject(publicKey32);
117
- return x25519SharedKeyStrictFromKeyObjects(privateKey, publicKey);
118
- }
119
- export function x25519GenerateKeyPair(seed32) {
120
- assertBytes32(seed32, "seed32");
121
- const privateKey = clampScalar(seed32);
122
- const publicKey32 = x25519PublicKey(privateKey);
123
- return {
124
- public: publicKey32,
125
- private: privateKey,
126
- };
127
- }
128
- export function ed25519CreatePrivateKeyObject(secretSeed32) {
129
- assertBytes32(secretSeed32, "secretSeed32");
130
- return Object.freeze({
131
- type: "ed25519-private",
132
- bytes: copyBytes32(secretSeed32, "ed25519 private key object bytes"),
133
- });
134
- }
135
- export function ed25519CreatePublicKeyObject(publicKey32) {
136
- assertBytes32(publicKey32, "publicKey32");
137
- return Object.freeze({
138
- type: "ed25519-public",
139
- bytes: copyBytes32(publicKey32, "ed25519 public key object bytes"),
140
- });
141
- }
142
- export function ed25519PublicKeyFromPrivateKeyObject(privateKey) {
143
- assertWasmKeyObject(privateKey, "ed25519-private", "privateKey");
144
- return asBytes32(getWasmBindings().ed25519PublicKey(privateKey.bytes), "ed25519 public key");
145
- }
146
- export function ed25519PublicKey(secretSeed32) {
147
- return ed25519PublicKeyFromPrivateKeyObject(ed25519CreatePrivateKeyObject(secretSeed32));
148
- }
149
- export function ed25519GenerateKeyPair(seed32) {
150
- assertBytes32(seed32, "seed32");
151
- return {
152
- public: ed25519PublicKey(seed32),
153
- private: seed32,
154
- };
155
- }
156
- export function ed25519SignWithPrivateKey(privateKey, msg) {
157
- assertWasmKeyObject(privateKey, "ed25519-private", "privateKey");
158
- assertUint8Array(msg, "msg");
159
- return asBytes64(getWasmBindings().ed25519Sign(privateKey.bytes, msg), "ed25519 signature");
160
- }
161
- export function ed25519Sign(secretSeed32, msg) {
162
- return ed25519SignWithPrivateKey(ed25519CreatePrivateKeyObject(secretSeed32), msg);
163
- }
164
- export function ed25519VerifyWithPublicKey(publicKey, msg, signature64) {
165
- assertWasmKeyObject(publicKey, "ed25519-public", "publicKey");
166
- assertUint8Array(msg, "msg");
167
- assertBytes64(signature64, "signature64");
168
- return getWasmBindings().ed25519Verify(publicKey.bytes, msg, signature64);
169
- }
170
- export function ed25519Verify(publicKey32, msg, signature64) {
171
- return ed25519VerifyWithPublicKey(ed25519CreatePublicKeyObject(publicKey32), msg, signature64);
172
- }
173
- export function ed25519SignMessage(secretSeed32, msg) {
174
- assertBytes32(secretSeed32, "secretSeed32");
175
- assertUint8Array(msg, "msg");
176
- const signature64 = ed25519Sign(secretSeed32, msg);
177
- const signed = new Uint8Array(64 + msg.byteLength);
178
- signed.set(signature64, 0);
179
- signed.set(msg, 64);
180
- return signed;
181
- }
182
- export function ed25519OpenMessage(publicKey32, signedMsg) {
183
- assertBytes32(publicKey32, "publicKey32");
184
- assertUint8Array(signedMsg, "signedMsg");
185
- if (signedMsg.byteLength < 64) {
186
- return null;
187
- }
188
- const signature64 = asBytes64(signedMsg.subarray(0, 64), "signedMsg signature");
189
- const msg = signedMsg.subarray(64);
190
- if (!ed25519Verify(publicKey32, msg, signature64)) {
191
- return null;
192
- }
193
- return new Uint8Array(msg);
194
- }
195
- export const x25519 = {
196
- createPrivateKeyObject: x25519CreatePrivateKeyObject,
197
- createPublicKeyObject: x25519CreatePublicKeyObject,
198
- publicKeyFromPrivateKeyObject: x25519PublicKeyFromPrivateKeyObject,
199
- publicKey: x25519PublicKey,
200
- sharedKey: x25519SharedKey,
201
- sharedKeyFromKeyObjects: x25519SharedKeyFromKeyObjects,
202
- sharedKeyStrict: x25519SharedKeyStrict,
203
- sharedKeyStrictFromKeyObjects: x25519SharedKeyStrictFromKeyObjects,
204
- isAllZero32,
205
- generateKeyPair: x25519GenerateKeyPair,
206
- };
207
- export const ed25519 = {
208
- createPrivateKeyObject: ed25519CreatePrivateKeyObject,
209
- createPublicKeyObject: ed25519CreatePublicKeyObject,
210
- publicKeyFromPrivateKeyObject: ed25519PublicKeyFromPrivateKeyObject,
211
- publicKey: ed25519PublicKey,
212
- generateKeyPair: ed25519GenerateKeyPair,
213
- sign: ed25519Sign,
214
- signWithPrivateKey: ed25519SignWithPrivateKey,
215
- verify: ed25519Verify,
216
- verifyWithPublicKey: ed25519VerifyWithPublicKey,
217
- signMessage: ed25519SignMessage,
218
- openMessage: ed25519OpenMessage,
219
- };
220
- const api = {
221
- x25519,
222
- ed25519,
223
- };
224
- export default api;
225
- //# sourceMappingURL=wasm.js.map
package/dist/wasm.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"wasm.js","sourceRoot":"","sources":["../src/wasm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,SAAS,EACT,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,iBAAiB,GAAG,8BAA8B,CAAC;AAEzD,MAAM,WAAW,GACf,OAAO,UAAU,KAAK,QAAQ;IAC5B,CAAC,CAAC,UAAU;IACZ,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;AAE5C,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;AA8B/C,IAAI,cAAkC,CAAC;AACvC,IAAI,YAAsC,CAAC;AAE3C,SAAS,qBAAqB;IAC5B,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,iBAAiB,eAAe,CAAC,CAAC;QACjF,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAC5F,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IAED,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAClG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAEjG,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,yGAAyG,CAC1G,CAAC;AACJ,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,cAAc,GAAG,qBAAqB,EAAE,CAAC;IAC3C,CAAC;IAED,uEAAuE;IACvE,YAAY,GAAG,WAAW,CAAC,cAAc,CAAiB,CAAC;IAC3D,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,WAAW,CAAC,OAAgB,EAAE,KAAa;IAClD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjB,OAAO,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,WAAW,CAAC,MAAe;IAClC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;IAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC1B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IAC5B,OAAO,SAAS,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAc,EACd,YAAuF,EACvF,KAAa;IAEb,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;QAC5F,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,cAAc,YAAY,aAAa,CAAC,CAAC;IACvE,CAAC;IACD,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,WAAoB;IAC/D,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE,iCAAiC,CAAC;KACnE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,WAAoB;IAC9D,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE,gCAAgC,CAAC;KAClE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,UAAsC;IAEtC,mBAAmB,CAAC,UAAU,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;IAChE,OAAO,SAAS,CAAC,eAAe,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAAoB;IAClD,OAAO,mCAAmC,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,UAAsC,EACtC,SAAoC;IAEpC,mBAAmB,CAAC,UAAU,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;IAChE,mBAAmB,CAAC,SAAS,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;IAC7D,OAAO,SAAS,CACd,eAAe,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EACpE,mBAAmB,CACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAAoB,EAAE,WAAoB;IACxE,MAAM,UAAU,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAC3D,OAAO,6BAA6B,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,UAAsC,EACtC,SAAoC;IAEpC,MAAM,MAAM,GAAG,6BAA6B,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACpE,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAoB,EAAE,WAAoB;IAC9E,MAAM,UAAU,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAC3D,OAAO,mCAAmC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,UAAU;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,YAAqB;IACjE,aAAa,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,WAAW,CAAC,YAAY,EAAE,kCAAkC,CAAC;KACrE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,WAAoB;IAC/D,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE,iCAAiC,CAAC;KACnE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,UAAuC;IAEvC,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IACjE,OAAO,SAAS,CAAC,eAAe,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,YAAqB;IACpD,OAAO,oCAAoC,CAAC,6BAA6B,CAAC,YAAY,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAe;IACpD,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,OAAO;QACL,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC;QAChC,OAAO,EAAE,MAAM;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,UAAuC,EACvC,GAAe;IAEf,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IACjE,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,OAAO,SAAS,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,YAAqB,EAAE,GAAe;IAChE,OAAO,yBAAyB,CAAC,6BAA6B,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,SAAqC,EACrC,GAAe,EACf,WAAoB;IAEpB,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAC9D,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1C,OAAO,eAAe,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,WAAoB,EACpB,GAAe,EACf,WAAoB;IAEpB,OAAO,0BAA0B,CAAC,4BAA4B,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,YAAqB,EAAE,GAAe;IACvE,aAAa,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAC5C,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAE7B,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,WAAoB,EAAE,SAAqB;IAC5E,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1C,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAEzC,IAAI,SAAS,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,sBAAsB,EAAE,4BAA4B;IACpD,qBAAqB,EAAE,2BAA2B;IAClD,6BAA6B,EAAE,mCAAmC;IAClE,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,eAAe;IAC1B,uBAAuB,EAAE,6BAA6B;IACtD,eAAe,EAAE,qBAAqB;IACtC,6BAA6B,EAAE,mCAAmC;IAClE,WAAW;IACX,eAAe,EAAE,qBAAqB;CAC9B,CAAC;AAEX,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,sBAAsB,EAAE,6BAA6B;IACrD,qBAAqB,EAAE,4BAA4B;IACnD,6BAA6B,EAAE,oCAAoC;IACnE,SAAS,EAAE,gBAAgB;IAC3B,eAAe,EAAE,sBAAsB;IACvC,IAAI,EAAE,WAAW;IACjB,kBAAkB,EAAE,yBAAyB;IAC7C,MAAM,EAAE,aAAa;IACrB,mBAAmB,EAAE,0BAA0B;IAC/C,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,kBAAkB;CACvB,CAAC;AAEX,MAAM,GAAG,GAAG;IACV,MAAM;IACN,OAAO;CACC,CAAC;AAEX,eAAe,GAAG,CAAC"}