@motebit/verify 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # @motebit/verify
2
2
 
3
- Standalone verifier for `motebit.md` agent identity files.
3
+ Verify any Motebit artifact identity files, execution receipts, verifiable credentials, and verifiable presentations.
4
4
 
5
- Implements the verification algorithm from the [motebit/identity@1.0](https://github.com/motebit/motebit/blob/main/spec/identity-v1.md) specification. Zero monorepo dependencies — only [`@noble/ed25519`](https://github.com/paulmillr/noble-ed25519) for cryptography.
5
+ One function. Any artifact. Zero monorepo dependencies. MIT licensed.
6
6
 
7
7
  ## Install
8
8
 
@@ -14,18 +14,45 @@ npm install @motebit/verify
14
14
 
15
15
  ```typescript
16
16
  import { verify } from "@motebit/verify";
17
- import { readFileSync } from "node:fs";
18
17
 
19
- const content = readFileSync("motebit.md", "utf-8");
20
- const result = await verify(content);
18
+ // Identity file
19
+ const r1 = await verify(fs.readFileSync("motebit.md", "utf-8"));
20
+ if (r1.type === "identity" && r1.valid) {
21
+ console.log(r1.did); // did:key:z...
22
+ console.log(r1.identity); // full identity file contents
23
+ console.log(r1.succession); // key rotation chain (if present)
24
+ }
25
+
26
+ // Execution receipt (object or JSON string)
27
+ const r2 = await verify(receipt);
28
+ if (r2.type === "receipt" && r2.valid) {
29
+ console.log(r2.signer); // did:key of the signing agent
30
+ console.log(r2.delegations); // nested delegation verification results
31
+ }
21
32
 
22
- if (result.valid) {
23
- console.log("Verified:", result.identity.motebit_id);
24
- console.log("DID:", result.did); // W3C did:key derived from Ed25519 public key
25
- console.log("Trust:", result.identity.governance.trust_mode);
26
- } else {
27
- console.error("Verification failed:", result.error);
33
+ // Verifiable credential
34
+ const r3 = await verify(credential);
35
+ if (r3.type === "credential" && r3.valid) {
36
+ console.log(r3.issuer); // did:key of the issuer
37
+ console.log(r3.subject); // did:key of the subject
38
+ console.log(r3.expired); // false
28
39
  }
40
+
41
+ // Verifiable presentation
42
+ const r4 = await verify(presentation);
43
+ if (r4.type === "presentation" && r4.valid) {
44
+ console.log(r4.holder); // did:key of the holder
45
+ console.log(r4.credentials); // each credential verified independently
46
+ }
47
+ ```
48
+
49
+ ### Strict mode
50
+
51
+ Pass `expectedType` to fail fast if the artifact doesn't match:
52
+
53
+ ```typescript
54
+ const result = await verify(artifact, { expectedType: "receipt" });
55
+ // result.valid is false if artifact is not a receipt
29
56
  ```
30
57
 
31
58
  ### Parse without verifying
@@ -33,29 +60,40 @@ if (result.valid) {
33
60
  ```typescript
34
61
  import { parse } from "@motebit/verify";
35
62
 
36
- const { frontmatter, signature, rawFrontmatter } = parse(content);
63
+ const { frontmatter, signature, rawFrontmatter } = parse(identityFileContent);
37
64
  console.log(frontmatter.motebit_id);
38
65
  ```
39
66
 
40
67
  ## API
41
68
 
42
- ### `verify(content: string): Promise<VerifyResult>`
69
+ ### `verify(artifact, options?): Promise<VerifyResult>`
70
+
71
+ Verify any Motebit artifact. Detects the type automatically from the input.
72
+
73
+ - **Strings** containing `---` are parsed as identity files
74
+ - **Strings** containing JSON are parsed and detected by shape
75
+ - **Objects** are detected by shape: receipts have `task_id` + `signature`, credentials have `credentialSubject` + `proof`, presentations have `holder` + `verifiableCredential` + `proof`
43
76
 
44
- Verify a `motebit.md` file's Ed25519 signature.
77
+ Returns a discriminated union — narrow on `result.type` to access type-specific fields.
45
78
 
46
- Returns `{ valid: true, identity, did }` on success, or `{ valid: false, identity: null, error }` on failure. The `did` field is the W3C `did:key` URI derived from the Ed25519 public key.
79
+ ### `verifyIdentityFile(content): Promise<LegacyVerifyResult>`
47
80
 
48
- ### `parse(content: string): { frontmatter, signature, rawFrontmatter }`
81
+ Verify a `motebit.md` identity file. Returns the legacy result shape with `.identity`, `.did`, `.error` fields directly (no type narrowing needed).
49
82
 
50
- Parse a `motebit.md` file into its components. Does not verify the signature.
83
+ ### `parse(content): { frontmatter, signature, rawFrontmatter }`
51
84
 
52
- Throws if the file is malformed (missing frontmatter delimiters or signature).
85
+ Parse a `motebit.md` file into its components. Does not verify the signature. Throws if malformed.
53
86
 
54
- ## What is a motebit.md?
87
+ ## What can it verify?
55
88
 
56
- A `motebit.md` is a human-readable, cryptographically signed agent identity file. It contains YAML frontmatter with identity, governance, privacy, and memory configuration, followed by an Ed25519 signature in an HTML comment.
89
+ | Artifact | Input | What it checks |
90
+ | ----------------------- | --------------------------------------------- | -------------------------------------------------------------------------------------- |
91
+ | Identity file | String (YAML frontmatter + Ed25519 signature) | Signature over frontmatter, succession chain linkage + temporal ordering |
92
+ | Execution receipt | Object or JSON | Ed25519 signature over canonical JSON, embedded public key, recursive delegation chain |
93
+ | Verifiable credential | Object or JSON | eddsa-jcs-2022 Data Integrity proof, expiry, issuer DID extraction |
94
+ | Verifiable presentation | Object or JSON | Envelope proof + each contained credential independently |
57
95
 
58
- See the [motebit/identity@1.0 specification](https://github.com/motebit/motebit/blob/main/spec/identity-v1.md) for details.
96
+ All verification is **offline** — no network calls, no relay lookup, no runtime dependency. Receipts embed the signer's public key. Credentials embed the issuer's DID. Everything needed for verification is in the artifact itself.
59
97
 
60
98
  ## License
61
99
 
package/dist/index.d.ts CHANGED
@@ -1,13 +1,25 @@
1
1
  /**
2
- * @motebit/verify — Standalone verifier for motebit.md agent identity files.
2
+ * @motebit/verify — Standalone verifier for all Motebit artifacts.
3
+ *
4
+ * Verifies identity files, execution receipts, verifiable credentials,
5
+ * and verifiable presentations. One function, any artifact, zero config.
3
6
  *
4
- * Implements the verification algorithm from the motebit/identity@1.0 spec.
5
7
  * Zero monorepo dependencies — only @noble/ed25519 for cryptography.
6
8
  *
7
9
  * Usage:
8
10
  * import { verify } from "@motebit/verify";
11
+ *
12
+ * // Identity file
9
13
  * const result = await verify(fs.readFileSync("motebit.md", "utf-8"));
10
- * if (result.valid) console.log(result.identity.motebit_id);
14
+ *
15
+ * // Execution receipt (JSON)
16
+ * const result = await verify(receiptJson);
17
+ *
18
+ * // Verifiable credential or presentation (JSON)
19
+ * const result = await verify(credentialJson);
20
+ *
21
+ * // With expected type (fail-fast on misclassification)
22
+ * const result = await verify(artifact, { expectedType: "receipt" });
11
23
  */
12
24
  export interface MotebitIdentityFile {
13
25
  spec: string;
@@ -47,13 +59,121 @@ export interface MotebitIdentityFile {
47
59
  public_key: string;
48
60
  registered_at: string;
49
61
  }>;
62
+ succession?: Array<SuccessionRecord>;
63
+ }
64
+ export interface SuccessionRecord {
65
+ old_public_key: string;
66
+ new_public_key: string;
67
+ timestamp: number;
68
+ reason?: string;
69
+ old_key_signature: string;
70
+ new_key_signature: string;
71
+ }
72
+ export interface ExecutionReceipt {
73
+ task_id: string;
74
+ motebit_id: string;
75
+ /** Signer's Ed25519 public key (hex). Enables verification without relay lookup. */
76
+ public_key?: string;
77
+ device_id: string;
78
+ submitted_at: number;
79
+ completed_at: number;
80
+ status: string;
81
+ result: string;
82
+ tools_used: string[];
83
+ memories_formed: number;
84
+ prompt_hash: string;
85
+ result_hash: string;
86
+ delegation_receipts?: ExecutionReceipt[];
87
+ delegated_scope?: string;
88
+ signature: string;
89
+ }
90
+ export interface DataIntegrityProof {
91
+ type: "DataIntegrityProof";
92
+ cryptosuite: "eddsa-jcs-2022";
93
+ created: string;
94
+ verificationMethod: string;
95
+ proofPurpose: "assertionMethod" | "authentication";
96
+ proofValue: string;
97
+ }
98
+ export interface VerifiableCredential {
99
+ "@context": string[];
100
+ type: string[];
101
+ issuer: string;
102
+ credentialSubject: Record<string, unknown> & {
103
+ id: string;
104
+ };
105
+ validFrom: string;
106
+ validUntil?: string;
107
+ credentialStatus?: {
108
+ id: string;
109
+ type: string;
110
+ };
111
+ proof: DataIntegrityProof;
112
+ }
113
+ export interface VerifiablePresentation {
114
+ "@context": string[];
115
+ type: string[];
116
+ holder: string;
117
+ verifiableCredential: VerifiableCredential[];
118
+ proof: DataIntegrityProof;
119
+ }
120
+ export interface VerificationError {
121
+ message: string;
122
+ path?: string;
123
+ }
124
+ interface BaseResult {
125
+ valid: boolean;
126
+ errors?: VerificationError[];
50
127
  }
51
- export interface VerifyResult {
128
+ export interface IdentityVerifyResult extends BaseResult {
129
+ type: "identity";
130
+ identity: MotebitIdentityFile | null;
131
+ did?: string;
132
+ /** First error message. Convenience accessor for backward compatibility. */
133
+ error?: string;
134
+ succession?: {
135
+ valid: boolean;
136
+ genesis_public_key?: string;
137
+ rotations: number;
138
+ error?: string;
139
+ };
140
+ }
141
+ export interface ReceiptVerifyResult extends BaseResult {
142
+ type: "receipt";
143
+ receipt: ExecutionReceipt | null;
144
+ signer?: string;
145
+ delegations?: ReceiptVerifyResult[];
146
+ }
147
+ export interface CredentialVerifyResult extends BaseResult {
148
+ type: "credential";
149
+ credential: VerifiableCredential | null;
150
+ issuer?: string;
151
+ subject?: string;
152
+ expired?: boolean;
153
+ }
154
+ export interface PresentationVerifyResult extends BaseResult {
155
+ type: "presentation";
156
+ presentation: VerifiablePresentation | null;
157
+ holder?: string;
158
+ credentials?: CredentialVerifyResult[];
159
+ }
160
+ export type VerifyResult = IdentityVerifyResult | ReceiptVerifyResult | CredentialVerifyResult | PresentationVerifyResult;
161
+ export type ArtifactType = VerifyResult["type"];
162
+ export interface VerifyOptions {
163
+ expectedType?: ArtifactType;
164
+ }
165
+ /** @deprecated Use VerifyResult instead. Kept for backward compatibility. */
166
+ export interface LegacyVerifyResult {
52
167
  valid: boolean;
53
168
  identity: MotebitIdentityFile | null;
54
- /** W3C did:key URI derived from the Ed25519 public key. Present when valid. */
55
169
  did?: string;
56
170
  error?: string;
171
+ succession?: {
172
+ valid: boolean;
173
+ genesis_public_key?: string;
174
+ rotations: number;
175
+ error?: string;
176
+ };
57
177
  }
58
178
  /**
59
179
  * Parse a motebit.md file into its components.
@@ -65,12 +185,38 @@ export declare function parse(content: string): {
65
185
  rawFrontmatter: string;
66
186
  };
67
187
  /**
68
- * Verify a motebit.md file's Ed25519 signature.
188
+ * Verify any Motebit artifact: identity file, execution receipt,
189
+ * verifiable credential, or verifiable presentation.
190
+ *
191
+ * Accepts strings (identity files, JSON) or parsed objects (receipts,
192
+ * credentials, presentations). Detects the artifact type automatically.
193
+ *
194
+ * Use `options.expectedType` to fail fast if the artifact doesn't match
195
+ * the expected type.
196
+ *
197
+ * @example
198
+ * ```ts
199
+ * import { verify } from "@motebit/verify";
69
200
  *
70
- * Returns `{ valid: true, identity }` if the signature is valid,
71
- * or `{ valid: false, identity: null, error }` if verification fails.
201
+ * // Identity file (string)
202
+ * const r1 = await verify(identityFileContent);
203
+ * if (r1.type === "identity" && r1.valid) console.log(r1.did);
204
+ *
205
+ * // Execution receipt (object or JSON string)
206
+ * const r2 = await verify(receipt, { expectedType: "receipt" });
207
+ * if (r2.type === "receipt" && r2.valid) console.log(r2.signer);
208
+ *
209
+ * // Verifiable credential
210
+ * const r3 = await verify(credential);
211
+ * if (r3.type === "credential" && r3.valid) console.log(r3.issuer);
212
+ * ```
213
+ */
214
+ export declare function verify(artifact: unknown, options?: VerifyOptions): Promise<VerifyResult>;
215
+ /**
216
+ * Verify a motebit.md identity file. Backward-compatible with pre-0.4.0.
72
217
  *
73
- * Implements the motebit/identity@1.0 verification algorithm (spec §4.3).
218
+ * @deprecated Use `verify(content)` instead it handles all artifact types.
74
219
  */
75
- export declare function verify(content: string): Promise<VerifyResult>;
220
+ export declare function verifyIdentityFile(content: string): Promise<LegacyVerifyResult>;
221
+ export {};
76
222
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IAGjB,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,eAAe,CAAC;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,QAAQ,EAAE;QACR,SAAS,EAAE,SAAS,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;QAC3C,aAAa,EAAE,MAAM,CAAC;QACtB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IAEF,OAAO,EAAE;QACP,mBAAmB,EAAE,MAAM,CAAC;QAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvC,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IAEF,MAAM,EAAE;QACN,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF,OAAO,EAAE,KAAK,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACrC,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmMD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG;IACtC,WAAW,EAAE,mBAAmB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB,CAqBA;AAED;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAoDnE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,13 +1,25 @@
1
1
  /**
2
- * @motebit/verify — Standalone verifier for motebit.md agent identity files.
2
+ * @motebit/verify — Standalone verifier for all Motebit artifacts.
3
+ *
4
+ * Verifies identity files, execution receipts, verifiable credentials,
5
+ * and verifiable presentations. One function, any artifact, zero config.
3
6
  *
4
- * Implements the verification algorithm from the motebit/identity@1.0 spec.
5
7
  * Zero monorepo dependencies — only @noble/ed25519 for cryptography.
6
8
  *
7
9
  * Usage:
8
10
  * import { verify } from "@motebit/verify";
11
+ *
12
+ * // Identity file
9
13
  * const result = await verify(fs.readFileSync("motebit.md", "utf-8"));
10
- * if (result.valid) console.log(result.identity.motebit_id);
14
+ *
15
+ * // Execution receipt (JSON)
16
+ * const result = await verify(receiptJson);
17
+ *
18
+ * // Verifiable credential or presentation (JSON)
19
+ * const result = await verify(credentialJson);
20
+ *
21
+ * // With expected type (fail-fast on misclassification)
22
+ * const result = await verify(artifact, { expectedType: "receipt" });
11
23
  */
12
24
  import * as ed from "@noble/ed25519";
13
25
  import { sha512 } from "@noble/hashes/sha512";
@@ -15,9 +27,9 @@ import { sha512 } from "@noble/hashes/sha512";
15
27
  if (!ed.hashes.sha512) {
16
28
  ed.hashes.sha512 = (msg) => sha512(msg);
17
29
  }
18
- // ---------------------------------------------------------------------------
30
+ // ===========================================================================
19
31
  // Minimal YAML parser — handles only the motebit identity schema
20
- // ---------------------------------------------------------------------------
32
+ // ===========================================================================
21
33
  function parseYamlValue(raw) {
22
34
  const trimmed = raw.trim();
23
35
  if (trimmed === "null")
@@ -133,9 +145,9 @@ function parseYaml(text) {
133
145
  }
134
146
  return root;
135
147
  }
136
- // ---------------------------------------------------------------------------
148
+ // ===========================================================================
137
149
  // Encoding helpers
138
- // ---------------------------------------------------------------------------
150
+ // ===========================================================================
139
151
  function hexToBytes(hex) {
140
152
  const bytes = new Uint8Array(hex.length / 2);
141
153
  for (let i = 0; i < hex.length; i += 2) {
@@ -152,9 +164,30 @@ function fromBase64Url(str) {
152
164
  }
153
165
  return bytes;
154
166
  }
155
- // ---------------------------------------------------------------------------
156
- // did:key derivation (inlinedverify has zero monorepo deps)
157
- // ---------------------------------------------------------------------------
167
+ // ===========================================================================
168
+ // Canonical JSON (JCS/RFC 8785) must match @motebit/crypto exactly
169
+ // ===========================================================================
170
+ function canonicalJson(obj) {
171
+ if (obj === null || obj === undefined)
172
+ return JSON.stringify(obj);
173
+ if (typeof obj !== "object")
174
+ return JSON.stringify(obj);
175
+ if (Array.isArray(obj)) {
176
+ return "[" + obj.map((item) => canonicalJson(item)).join(",") + "]";
177
+ }
178
+ const sorted = Object.keys(obj).sort();
179
+ const entries = [];
180
+ for (const key of sorted) {
181
+ const val = obj[key];
182
+ if (val === undefined)
183
+ continue;
184
+ entries.push(JSON.stringify(key) + ":" + canonicalJson(val));
185
+ }
186
+ return "{" + entries.join(",") + "}";
187
+ }
188
+ // ===========================================================================
189
+ // Base58btc encoding/decoding (for did:key and VC proof values)
190
+ // ===========================================================================
158
191
  const BASE58_ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
159
192
  function base58btcEncode(bytes) {
160
193
  let zeros = 0;
@@ -172,6 +205,31 @@ function base58btcEncode(bytes) {
172
205
  }
173
206
  return BASE58_ALPHABET[0].repeat(zeros) + result;
174
207
  }
208
+ function base58btcDecode(str) {
209
+ let zeros = 0;
210
+ while (zeros < str.length && str[zeros] === BASE58_ALPHABET[0])
211
+ zeros++;
212
+ let value = 0n;
213
+ for (let i = 0; i < str.length; i++) {
214
+ const idx = BASE58_ALPHABET.indexOf(str[i]);
215
+ if (idx === -1)
216
+ throw new Error(`Invalid base58 character: ${str[i]}`);
217
+ value = value * 58n + BigInt(idx);
218
+ }
219
+ const hex = [];
220
+ while (value > 0n) {
221
+ const byte = Number(value & 0xffn);
222
+ hex.unshift(byte.toString(16).padStart(2, "0"));
223
+ value >>= 8n;
224
+ }
225
+ const dataBytes = hex.length > 0 ? new Uint8Array(hex.map((h) => parseInt(h, 16))) : new Uint8Array(0);
226
+ const result = new Uint8Array(zeros + dataBytes.length);
227
+ result.set(dataBytes, zeros);
228
+ return result;
229
+ }
230
+ // ===========================================================================
231
+ // did:key derivation and parsing
232
+ // ===========================================================================
175
233
  function publicKeyToDidKey(pubKey) {
176
234
  const prefixed = new Uint8Array(34);
177
235
  prefixed[0] = 0xed;
@@ -179,14 +237,71 @@ function publicKeyToDidKey(pubKey) {
179
237
  prefixed.set(pubKey, 2);
180
238
  return `did:key:z${base58btcEncode(prefixed)}`;
181
239
  }
182
- // ---------------------------------------------------------------------------
240
+ function didKeyToPublicKey(did) {
241
+ if (!did.startsWith("did:key:z")) {
242
+ throw new Error("Invalid did:key URI: must start with did:key:z");
243
+ }
244
+ const encoded = did.slice("did:key:z".length);
245
+ const decoded = base58btcDecode(encoded);
246
+ if (decoded.length !== 34) {
247
+ throw new Error(`Invalid did:key: expected 34 bytes (2 prefix + 32 key), got ${decoded.length}`);
248
+ }
249
+ if (decoded[0] !== 0xed || decoded[1] !== 0x01) {
250
+ throw new Error("Invalid did:key: multicodec prefix is not ed25519-pub (0xed01)");
251
+ }
252
+ return decoded.slice(2);
253
+ }
254
+ // ===========================================================================
255
+ // SHA-256 (Web Crypto — available in Node 18+ and all browsers)
256
+ // ===========================================================================
257
+ async function sha256(data) {
258
+ const buf = await crypto.subtle.digest("SHA-256", data);
259
+ return new Uint8Array(buf);
260
+ }
261
+ // ===========================================================================
183
262
  // Constants
184
- // ---------------------------------------------------------------------------
263
+ // ===========================================================================
185
264
  const SIG_PREFIX = "<!-- motebit:sig:Ed25519:";
186
265
  const SIG_SUFFIX = " -->";
187
- // ---------------------------------------------------------------------------
188
- // Public API
189
- // ---------------------------------------------------------------------------
266
+ // ===========================================================================
267
+ // Artifact detection
268
+ // ===========================================================================
269
+ function detectArtifactType(artifact) {
270
+ // String → identity file (YAML frontmatter) or JSON
271
+ if (typeof artifact === "string") {
272
+ // Any string containing frontmatter delimiters is an identity file attempt
273
+ if (artifact.includes("---")) {
274
+ return "identity";
275
+ }
276
+ // Try parsing as JSON
277
+ try {
278
+ const parsed = JSON.parse(artifact);
279
+ return detectArtifactType(parsed);
280
+ }
281
+ catch {
282
+ return null;
283
+ }
284
+ }
285
+ if (typeof artifact !== "object" || artifact === null)
286
+ return null;
287
+ const obj = artifact;
288
+ // Verifiable Presentation: has "holder" + "verifiableCredential" + "proof"
289
+ if ("holder" in obj && "verifiableCredential" in obj && "proof" in obj) {
290
+ return "presentation";
291
+ }
292
+ // Verifiable Credential: has "credentialSubject" + "issuer" + "proof"
293
+ if ("credentialSubject" in obj && "issuer" in obj && "proof" in obj) {
294
+ return "credential";
295
+ }
296
+ // Execution Receipt: has "task_id" + "motebit_id" + "signature" + "prompt_hash"
297
+ if ("task_id" in obj && "motebit_id" in obj && "signature" in obj && "prompt_hash" in obj) {
298
+ return "receipt";
299
+ }
300
+ return null;
301
+ }
302
+ // ===========================================================================
303
+ // Identity file parsing and verification
304
+ // ===========================================================================
190
305
  /**
191
306
  * Parse a motebit.md file into its components.
192
307
  * Does not verify the signature — use `verify()` for that.
@@ -211,50 +326,42 @@ export function parse(content) {
211
326
  const signature = content.slice(sigValueStart, sigEnd);
212
327
  return { frontmatter, signature, rawFrontmatter };
213
328
  }
214
- /**
215
- * Verify a motebit.md file's Ed25519 signature.
216
- *
217
- * Returns `{ valid: true, identity }` if the signature is valid,
218
- * or `{ valid: false, identity: null, error }` if verification fails.
219
- *
220
- * Implements the motebit/identity@1.0 verification algorithm (spec §4.3).
221
- */
222
- export async function verify(content) {
329
+ function identityError(msg) {
330
+ return { type: "identity", valid: false, identity: null, error: msg, errors: [{ message: msg }] };
331
+ }
332
+ async function verifyIdentity(content) {
223
333
  let parsed;
224
334
  try {
225
335
  parsed = parse(content);
226
336
  }
227
337
  catch (err) {
228
338
  const msg = err instanceof Error ? err.message : String(err);
229
- return { valid: false, identity: null, error: msg };
339
+ return identityError(msg);
230
340
  }
231
- // Step 6: Extract and validate public key
232
341
  const pubKeyHex = parsed.frontmatter.identity?.public_key;
233
342
  if (!pubKeyHex) {
234
- return { valid: false, identity: null, error: "No public key in frontmatter" };
343
+ return identityError("No public key in frontmatter");
235
344
  }
236
345
  let pubKey;
237
346
  try {
238
347
  pubKey = hexToBytes(pubKeyHex);
239
348
  }
240
349
  catch {
241
- return { valid: false, identity: null, error: "Invalid public key hex" };
350
+ return identityError("Invalid public key hex");
242
351
  }
243
352
  if (pubKey.length !== 32) {
244
- return { valid: false, identity: null, error: "Public key must be 32 bytes" };
353
+ return identityError("Public key must be 32 bytes");
245
354
  }
246
- // Step 5: Extract and validate signature
247
355
  let sigBytes;
248
356
  try {
249
357
  sigBytes = fromBase64Url(parsed.signature);
250
358
  }
251
359
  catch {
252
- return { valid: false, identity: null, error: "Invalid signature encoding" };
360
+ return identityError("Invalid signature encoding");
253
361
  }
254
362
  if (sigBytes.length !== 64) {
255
- return { valid: false, identity: null, error: "Signature must be 64 bytes" };
363
+ return identityError("Signature must be 64 bytes");
256
364
  }
257
- // Steps 7-8: Verify Ed25519 signature over frontmatter bytes
258
365
  const frontmatterBytes = new TextEncoder().encode(parsed.rawFrontmatter);
259
366
  let valid;
260
367
  try {
@@ -263,11 +370,374 @@ export async function verify(content) {
263
370
  catch {
264
371
  valid = false;
265
372
  }
373
+ if (!valid) {
374
+ return identityError("Signature verification failed");
375
+ }
376
+ const chain = parsed.frontmatter.succession;
377
+ let successionResult;
378
+ if (chain && chain.length > 0) {
379
+ successionResult = await verifySuccessionChain(chain, pubKeyHex);
380
+ }
381
+ return {
382
+ type: "identity",
383
+ valid: true,
384
+ identity: parsed.frontmatter,
385
+ did: publicKeyToDidKey(pubKey),
386
+ ...(successionResult ? { succession: successionResult } : {}),
387
+ };
388
+ }
389
+ // ===========================================================================
390
+ // Succession chain verification
391
+ // ===========================================================================
392
+ async function verifySuccessionChain(chain, currentPublicKeyHex) {
393
+ try {
394
+ for (let i = 0; i < chain.length; i++) {
395
+ const record = chain[i];
396
+ const payloadObj = {
397
+ old_public_key: record.old_public_key,
398
+ new_public_key: record.new_public_key,
399
+ timestamp: record.timestamp,
400
+ };
401
+ if (record.reason !== undefined) {
402
+ payloadObj.reason = record.reason;
403
+ }
404
+ const payload = canonicalJson(payloadObj);
405
+ const message = new TextEncoder().encode(payload);
406
+ const oldPubKey = hexToBytes(record.old_public_key);
407
+ const oldSig = hexToBytes(record.old_key_signature);
408
+ const oldValid = await ed.verifyAsync(oldSig, message, oldPubKey);
409
+ if (!oldValid) {
410
+ return {
411
+ valid: false,
412
+ rotations: chain.length,
413
+ error: `Succession record ${i}: old_key_signature verification failed`,
414
+ };
415
+ }
416
+ const newPubKey = hexToBytes(record.new_public_key);
417
+ const newSig = hexToBytes(record.new_key_signature);
418
+ const newValid = await ed.verifyAsync(newSig, message, newPubKey);
419
+ if (!newValid) {
420
+ return {
421
+ valid: false,
422
+ rotations: chain.length,
423
+ error: `Succession record ${i}: new_key_signature verification failed`,
424
+ };
425
+ }
426
+ if (i < chain.length - 1) {
427
+ const next = chain[i + 1];
428
+ if (record.new_public_key !== next.old_public_key) {
429
+ return {
430
+ valid: false,
431
+ rotations: chain.length,
432
+ error: `Succession chain broken at record ${i}: new_public_key does not match next record's old_public_key`,
433
+ };
434
+ }
435
+ }
436
+ if (i < chain.length - 1) {
437
+ const next = chain[i + 1];
438
+ if (record.timestamp >= next.timestamp) {
439
+ return {
440
+ valid: false,
441
+ rotations: chain.length,
442
+ error: `Succession chain temporal ordering violated at record ${i}`,
443
+ };
444
+ }
445
+ }
446
+ }
447
+ const lastRecord = chain[chain.length - 1];
448
+ if (lastRecord.new_public_key !== currentPublicKeyHex) {
449
+ return {
450
+ valid: false,
451
+ rotations: chain.length,
452
+ error: "Succession chain terminal: last new_public_key does not match identity public_key",
453
+ };
454
+ }
455
+ return {
456
+ valid: true,
457
+ genesis_public_key: chain[0].old_public_key,
458
+ rotations: chain.length,
459
+ };
460
+ }
461
+ catch (err) {
462
+ const msg = err instanceof Error ? err.message : String(err);
463
+ return {
464
+ valid: false,
465
+ rotations: 0,
466
+ error: `Succession verification error: ${msg}`,
467
+ };
468
+ }
469
+ }
470
+ // ===========================================================================
471
+ // Receipt verification
472
+ // ===========================================================================
473
+ async function verifyReceiptSignature(receipt, publicKey) {
474
+ const { signature, ...body } = receipt;
475
+ const canonical = canonicalJson(body);
476
+ const message = new TextEncoder().encode(canonical);
477
+ try {
478
+ const sig = fromBase64Url(signature);
479
+ return await ed.verifyAsync(sig, message, publicKey);
480
+ }
481
+ catch {
482
+ return false;
483
+ }
484
+ }
485
+ async function verifyReceipt(receipt) {
486
+ // Resolve public key: embedded in receipt, or fail
487
+ let publicKey = null;
488
+ let signerDid;
489
+ if (receipt.public_key) {
490
+ try {
491
+ publicKey = hexToBytes(receipt.public_key);
492
+ if (publicKey.length === 32) {
493
+ signerDid = publicKeyToDidKey(publicKey);
494
+ }
495
+ else {
496
+ publicKey = null;
497
+ }
498
+ }
499
+ catch {
500
+ publicKey = null;
501
+ }
502
+ }
503
+ if (!publicKey) {
504
+ // Recursively verify delegations even if root can't be verified
505
+ const delegations = await verifyReceiptDelegations(receipt);
506
+ return {
507
+ type: "receipt",
508
+ valid: false,
509
+ receipt,
510
+ errors: [{ message: "No embedded public_key — cannot verify without known keys" }],
511
+ ...(delegations.length > 0 ? { delegations } : {}),
512
+ };
513
+ }
514
+ const signatureValid = await verifyReceiptSignature(receipt, publicKey);
515
+ const errors = [];
516
+ if (!signatureValid) {
517
+ errors.push({ message: "Receipt signature verification failed" });
518
+ }
519
+ // Recursively verify delegation receipts
520
+ const delegations = await verifyReceiptDelegations(receipt);
521
+ const delegationErrors = delegations.filter((d) => !d.valid);
522
+ for (const d of delegationErrors) {
523
+ errors.push({
524
+ message: `Delegation ${d.receipt?.task_id ?? "unknown"}: verification failed`,
525
+ path: `delegation_receipts`,
526
+ });
527
+ }
528
+ return {
529
+ type: "receipt",
530
+ valid: signatureValid && delegationErrors.length === 0,
531
+ receipt,
532
+ signer: signerDid,
533
+ ...(delegations.length > 0 ? { delegations } : {}),
534
+ ...(errors.length > 0 ? { errors } : {}),
535
+ };
536
+ }
537
+ async function verifyReceiptDelegations(receipt) {
538
+ if (!receipt.delegation_receipts || receipt.delegation_receipts.length === 0) {
539
+ return [];
540
+ }
541
+ return Promise.all(receipt.delegation_receipts.map((dr) => verifyReceipt(dr)));
542
+ }
543
+ // ===========================================================================
544
+ // Verifiable Credential verification (eddsa-jcs-2022)
545
+ // ===========================================================================
546
+ async function verifyDataIntegrity(document, proof) {
547
+ if (proof.type !== "DataIntegrityProof" || proof.cryptosuite !== "eddsa-jcs-2022") {
548
+ return false;
549
+ }
550
+ // Extract public key from verificationMethod (did:key URI)
551
+ const did = proof.verificationMethod.split("#")[0];
552
+ let publicKey;
553
+ try {
554
+ publicKey = didKeyToPublicKey(did);
555
+ }
556
+ catch {
557
+ return false;
558
+ }
559
+ // Reconstruct proof options (without proofValue)
560
+ const { proofValue, ...proofOptions } = proof;
561
+ const encoder = new TextEncoder();
562
+ // Hash proof options and document separately
563
+ const proofHash = await sha256(encoder.encode(canonicalJson(proofOptions)));
564
+ const { proof: _proof, ...docWithoutProof } = document;
565
+ const docHash = await sha256(encoder.encode(canonicalJson(docWithoutProof)));
566
+ // Concatenate hashes and verify
567
+ const combined = new Uint8Array(proofHash.length + docHash.length);
568
+ combined.set(proofHash);
569
+ combined.set(docHash, proofHash.length);
570
+ // Decode signature (strip "z" prefix — base58btc multibase)
571
+ if (!proofValue.startsWith("z"))
572
+ return false;
573
+ let signature;
574
+ try {
575
+ signature = base58btcDecode(proofValue.slice(1));
576
+ }
577
+ catch {
578
+ return false;
579
+ }
580
+ return ed.verifyAsync(signature, combined, publicKey);
581
+ }
582
+ async function verifyCredential(vc) {
583
+ const errors = [];
584
+ // Check expiry
585
+ let expired = false;
586
+ if (vc.validUntil) {
587
+ const expiresAt = new Date(vc.validUntil).getTime();
588
+ if (Date.now() > expiresAt) {
589
+ expired = true;
590
+ errors.push({ message: "Credential has expired", path: "validUntil" });
591
+ }
592
+ }
593
+ // Verify proof
594
+ const proofValid = await verifyDataIntegrity(vc, vc.proof);
595
+ if (!proofValid) {
596
+ errors.push({ message: "Credential proof verification failed", path: "proof" });
597
+ }
598
+ // Extract issuer DID
599
+ const issuerDid = typeof vc.issuer === "string" ? vc.issuer : undefined;
600
+ const subjectId = vc.credentialSubject?.id;
601
+ return {
602
+ type: "credential",
603
+ valid: proofValid && !expired,
604
+ credential: vc,
605
+ issuer: issuerDid,
606
+ subject: subjectId,
607
+ expired,
608
+ ...(errors.length > 0 ? { errors } : {}),
609
+ };
610
+ }
611
+ // ===========================================================================
612
+ // Verifiable Presentation verification
613
+ // ===========================================================================
614
+ async function verifyPresentation(vp) {
615
+ const errors = [];
616
+ // Verify VP envelope proof
617
+ const envelopeValid = await verifyDataIntegrity(vp, vp.proof);
618
+ if (!envelopeValid) {
619
+ errors.push({ message: "Presentation proof verification failed", path: "proof" });
620
+ }
621
+ // Verify each contained credential
622
+ const credentialResults = [];
623
+ for (let i = 0; i < vp.verifiableCredential.length; i++) {
624
+ const vc = vp.verifiableCredential[i];
625
+ const vcResult = await verifyCredential(vc);
626
+ credentialResults.push(vcResult);
627
+ if (!vcResult.valid) {
628
+ errors.push({
629
+ message: `Credential ${i} verification failed`,
630
+ path: `verifiableCredential[${i}]`,
631
+ });
632
+ }
633
+ }
634
+ const allValid = envelopeValid && credentialResults.every((c) => c.valid);
635
+ return {
636
+ type: "presentation",
637
+ valid: allValid,
638
+ presentation: vp,
639
+ holder: vp.holder,
640
+ credentials: credentialResults,
641
+ ...(errors.length > 0 ? { errors } : {}),
642
+ };
643
+ }
644
+ // ===========================================================================
645
+ // Public API
646
+ // ===========================================================================
647
+ /**
648
+ * Verify any Motebit artifact: identity file, execution receipt,
649
+ * verifiable credential, or verifiable presentation.
650
+ *
651
+ * Accepts strings (identity files, JSON) or parsed objects (receipts,
652
+ * credentials, presentations). Detects the artifact type automatically.
653
+ *
654
+ * Use `options.expectedType` to fail fast if the artifact doesn't match
655
+ * the expected type.
656
+ *
657
+ * @example
658
+ * ```ts
659
+ * import { verify } from "@motebit/verify";
660
+ *
661
+ * // Identity file (string)
662
+ * const r1 = await verify(identityFileContent);
663
+ * if (r1.type === "identity" && r1.valid) console.log(r1.did);
664
+ *
665
+ * // Execution receipt (object or JSON string)
666
+ * const r2 = await verify(receipt, { expectedType: "receipt" });
667
+ * if (r2.type === "receipt" && r2.valid) console.log(r2.signer);
668
+ *
669
+ * // Verifiable credential
670
+ * const r3 = await verify(credential);
671
+ * if (r3.type === "credential" && r3.valid) console.log(r3.issuer);
672
+ * ```
673
+ */
674
+ export async function verify(artifact, options) {
675
+ const detected = detectArtifactType(artifact);
676
+ if (detected === null) {
677
+ // Return a generic failure — use identity as the default type for backward compat
678
+ const fallbackType = options?.expectedType ?? "identity";
679
+ return {
680
+ type: fallbackType,
681
+ valid: false,
682
+ ...(fallbackType === "identity" ? { identity: null } : {}),
683
+ ...(fallbackType === "receipt" ? { receipt: null } : {}),
684
+ ...(fallbackType === "credential" ? { credential: null } : {}),
685
+ ...(fallbackType === "presentation" ? { presentation: null } : {}),
686
+ errors: [{ message: "Unrecognized artifact format" }],
687
+ };
688
+ }
689
+ if (options?.expectedType && options.expectedType !== detected) {
690
+ return {
691
+ type: detected,
692
+ valid: false,
693
+ ...(detected === "identity" ? { identity: null } : {}),
694
+ ...(detected === "receipt" ? { receipt: null } : {}),
695
+ ...(detected === "credential" ? { credential: null } : {}),
696
+ ...(detected === "presentation" ? { presentation: null } : {}),
697
+ errors: [{ message: `Expected type "${options.expectedType}" but detected "${detected}"` }],
698
+ };
699
+ }
700
+ // Parse JSON strings into objects for non-identity types
701
+ let resolved = artifact;
702
+ if (typeof artifact === "string" && detected !== "identity") {
703
+ try {
704
+ resolved = JSON.parse(artifact);
705
+ }
706
+ catch {
707
+ return {
708
+ type: detected,
709
+ valid: false,
710
+ ...(detected === "receipt" ? { receipt: null } : {}),
711
+ ...(detected === "credential" ? { credential: null } : {}),
712
+ ...(detected === "presentation" ? { presentation: null } : {}),
713
+ errors: [{ message: "Failed to parse JSON" }],
714
+ };
715
+ }
716
+ }
717
+ switch (detected) {
718
+ case "identity":
719
+ return verifyIdentity(resolved);
720
+ case "receipt":
721
+ return verifyReceipt(resolved);
722
+ case "credential":
723
+ return verifyCredential(resolved);
724
+ case "presentation":
725
+ return verifyPresentation(resolved);
726
+ }
727
+ }
728
+ /**
729
+ * Verify a motebit.md identity file. Backward-compatible with pre-0.4.0.
730
+ *
731
+ * @deprecated Use `verify(content)` instead — it handles all artifact types.
732
+ */
733
+ export async function verifyIdentityFile(content) {
734
+ const result = await verifyIdentity(content);
266
735
  return {
267
- valid,
268
- identity: valid ? parsed.frontmatter : null,
269
- did: valid ? publicKeyToDidKey(pubKey) : undefined,
270
- error: valid ? undefined : "Signature verification failed",
736
+ valid: result.valid,
737
+ identity: result.identity,
738
+ did: result.did,
739
+ error: result.errors?.[0]?.message,
740
+ succession: result.succession,
271
741
  };
272
742
  }
273
743
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,sDAAsD;AACtD,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACtB,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAe,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAuMD,8EAA8E;AAC9E,iEAAiE;AACjE,8EAA8E;AAE9E,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAChC,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAEhC,IACE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClD,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAClD,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,OAAO,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAE/D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,MAAM,KAAK,GAA4D;QACrE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE;KAC1B,CAAC;IACF,IAAI,YAAY,GAAqB,IAAI,CAAC;IAC1C,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAEhE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpB,MAAM,GAAG,GAA4B,EAAE,CAAC;gBACxC,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC3C,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;gBAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;oBAC3B,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;wBAAE,SAAS;oBACrC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;oBACjE,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;oBAEzC,IAAI,UAAU,GAAG,UAAU,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC7D,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBAC/C,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;4BACxB,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;4BAC9C,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;4BAC/C,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;4BAC7B,CAAC,GAAG,CAAC,CAAC;wBACR,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM;oBACR,CAAC;gBACH,CAAC;gBAED,IAAI,YAAY;oBAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,IAAI,YAAY;oBAAE,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;YACnE,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,CAAC;QAE/D,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAEjC,IAAI,YAAY,IAAI,UAAU,IAAI,kBAAkB,EAAE,CAAC;gBACrD,YAAY,GAAG,IAAI,CAAC;gBACpB,kBAAkB,GAAG,CAAC,CAAC,CAAC;YAC1B,CAAC;YAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;gBACzE,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,CAAC;YAED,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,GAAG,CAAC;YAE5C,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAE,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,OAAO,EAAE,CAAC;YAE1E,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAE,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3E,MAAM,GAAG,GAAc,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBAClB,YAAY,GAAG,GAAG,CAAC;gBACnB,kBAAkB,GAAG,UAAU,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAA4B,EAAE,CAAC;gBAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAClD,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,IAAI,YAAY,IAAI,UAAU,IAAI,kBAAkB,EAAE,CAAC;gBACrD,YAAY,GAAG,IAAI,CAAC;gBACpB,kBAAkB,GAAG,CAAC,CAAC,CAAC;YAC1B,CAAC;YAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;gBACzE,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,CAAC;YAED,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,GAAG,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,IAAsC,CAAC;AAChD,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAE9E,SAAS,aAAa,CAAC,GAAY;IACjC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAClE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACtE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAA8B,CAAC,CAAC,IAAI,EAAE,CAAC;IAClE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,GAAG,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACvC,CAAC;AAED,8EAA8E;AAC9E,gEAAgE;AAChE,8EAA8E;AAE9E,MAAM,eAAe,GAAG,4DAA4D,CAAC;AAErF,SAAS,eAAe,CAAC,KAAiB;IACxC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,KAAK,EAAE,CAAC;IAC3D,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,OAAO,KAAK,GAAG,EAAE,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QACtC,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;QACpB,MAAM,GAAG,eAAe,CAAC,SAAS,CAAE,GAAG,MAAM,CAAC;IAChD,CAAC;IACD,OAAO,eAAe,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;AACpD,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC;QAAE,KAAK,EAAE,CAAC;IACxE,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;QAC7C,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvE,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,OAAO,KAAK,GAAG,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;QACnC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAChD,KAAK,KAAK,EAAE,CAAC;IACf,CAAC;IACD,MAAM,SAAS,GACb,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,MAAkB;IAC3C,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACpC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACxB,OAAO,YAAY,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,+DAA+D,OAAO,CAAC,MAAM,EAAE,CAChF,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,gEAAgE;AAChE,8EAA8E;AAE9E,KAAK,UAAU,MAAM,CAAC,IAAgB;IACpC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAoB,CAAC,CAAC;IACxE,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,UAAU,GAAG,2BAA2B,CAAC;AAC/C,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,kBAAkB,CAAC,QAAiB;IAC3C,oDAAoD;IACpD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,2EAA2E;QAC3E,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,sBAAsB;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAY,CAAC;YAC/C,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEnE,MAAM,GAAG,GAAG,QAAmC,CAAC;IAEhD,2EAA2E;IAC3E,IAAI,QAAQ,IAAI,GAAG,IAAI,sBAAsB,IAAI,GAAG,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;QACvE,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,sEAAsE;IACtE,IAAI,mBAAmB,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;QACpE,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,gFAAgF;IAChF,IAAI,SAAS,IAAI,GAAG,IAAI,YAAY,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,IAAI,aAAa,IAAI,GAAG,EAAE,CAAC;QAC1F,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,OAAe;IAKnC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,SAAS,KAAK,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAEzE,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACvD,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAE1E,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAE1D,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAEvD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AACpG,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAAe;IAC3C,IAAI,MAAgC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,aAAa,CAAC,8BAA8B,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,MAAkB,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACzB,OAAO,aAAa,CAAC,6BAA6B,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,QAAoB,CAAC;IACzB,IAAI,CAAC;QACH,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,aAAa,CAAC,4BAA4B,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC,4BAA4B,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAEzE,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,aAAa,CAAC,+BAA+B,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;IAC5C,IAAI,gBAAoD,CAAC;IAEzD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACnE,CAAC;IAED,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,MAAM,CAAC,WAAW;QAC5B,GAAG,EAAE,iBAAiB,CAAC,MAAM,CAAC;QAC9B,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,KAAK,UAAU,qBAAqB,CAClC,KAAyB,EACzB,mBAA2B;IAE3B,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YAEzB,MAAM,UAAU,GAA4B;gBAC1C,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACpC,CAAC;YACD,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAElD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,KAAK,CAAC,MAAM;oBACvB,KAAK,EAAE,qBAAqB,CAAC,yCAAyC;iBACvE,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,KAAK,CAAC,MAAM;oBACvB,KAAK,EAAE,qBAAqB,CAAC,yCAAyC;iBACvE,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;gBAC3B,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;oBAClD,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,SAAS,EAAE,KAAK,CAAC,MAAM;wBACvB,KAAK,EAAE,qCAAqC,CAAC,8DAA8D;qBAC5G,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;gBAC3B,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACvC,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,SAAS,EAAE,KAAK,CAAC,MAAM;wBACvB,KAAK,EAAE,yDAAyD,CAAC,EAAE;qBACpE,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QAC5C,IAAI,UAAU,CAAC,cAAc,KAAK,mBAAmB,EAAE,CAAC;YACtD,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,KAAK,CAAC,MAAM;gBACvB,KAAK,EAAE,mFAAmF;aAC3F,CAAC;QACJ,CAAC;QAED,OAAO;YACL,KAAK,EAAE,IAAI;YACX,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,cAAc;YAC5C,SAAS,EAAE,KAAK,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,kCAAkC,GAAG,EAAE;SAC/C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,KAAK,UAAU,sBAAsB,CACnC,OAAyB,EACzB,SAAqB;IAErB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,MAAM,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAyB;IACpD,mDAAmD;IACnD,IAAI,SAAS,GAAsB,IAAI,CAAC;IACxC,IAAI,SAA6B,CAAC;IAElC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;gBAC5B,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,gEAAgE;QAChE,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,KAAK;YACZ,OAAO;YACP,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,2DAA2D,EAAE,CAAC;YAClF,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACxE,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,yCAAyC;IACzC,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,cAAc,CAAC,CAAC,OAAO,EAAE,OAAO,IAAI,SAAS,uBAAuB;YAC7E,IAAI,EAAE,qBAAqB;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,cAAc,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QACtD,OAAO;QACP,MAAM,EAAE,SAAS;QACjB,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,OAAyB;IAC/D,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7E,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,8EAA8E;AAC9E,sDAAsD;AACtD,8EAA8E;AAE9E,KAAK,UAAU,mBAAmB,CAChC,QAAiC,EACjC,KAAyB;IAEzB,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,KAAK,CAAC,WAAW,KAAK,gBAAgB,EAAE,CAAC;QAClF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,2DAA2D;IAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IACpD,IAAI,SAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iDAAiD;IACjD,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,CAAC;IAE9C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAElC,6CAA6C;IAC7C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,GAAG,QAAQ,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAE7E,gCAAgC;IAChC,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAExC,4DAA4D;IAC5D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,SAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,EAAwB;IACtD,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,eAAe;IACf,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;YAC3B,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,eAAe;IACf,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,EAAwC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IACjG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,qBAAqB;IACrB,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,SAAS,GAAG,EAAE,CAAC,iBAAiB,EAAE,EAAE,CAAC;IAE3C,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,UAAU,IAAI,CAAC,OAAO;QAC7B,UAAU,EAAE,EAAE;QACd,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,SAAS;QAClB,OAAO;QACP,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,KAAK,UAAU,kBAAkB,CAAC,EAA0B;IAC1D,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,2BAA2B;IAC3B,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAC7C,EAAwC,EACxC,EAAE,CAAC,KAAK,CACT,CAAC;IACF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,wCAAwC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,mCAAmC;IACnC,MAAM,iBAAiB,GAA6B,EAAE,CAAC;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,MAAM,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC5C,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,cAAc,CAAC,sBAAsB;gBAC9C,IAAI,EAAE,wBAAwB,CAAC,GAAG;aACnC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAE1E,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,QAAQ;QACf,YAAY,EAAE,EAAE;QAChB,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,WAAW,EAAE,iBAAiB;QAC9B,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAiB,EAAE,OAAuB;IACrE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE9C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,kFAAkF;QAClF,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,UAAU,CAAC;QACzD,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,KAAK;YACZ,GAAG,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,YAAY,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;SACtC,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,EAAE,YAAY,IAAI,OAAO,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC/D,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK;YACZ,GAAG,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,OAAO,CAAC,YAAY,mBAAmB,QAAQ,GAAG,EAAE,CAAC;SAC5E,CAAC;IACpB,CAAC;IAED,yDAAyD;IACzD,IAAI,QAAQ,GAAG,QAAQ,CAAC;IACxB,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAY,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,KAAK;gBACZ,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,GAAG,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;aAC9B,CAAC;QACpB,CAAC;IACH,CAAC;IAED,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,cAAc,CAAC,QAAkB,CAAC,CAAC;QAC5C,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,QAA4B,CAAC,CAAC;QACrD,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC,QAAgC,CAAC,CAAC;QAC5D,KAAK,cAAc;YACjB,OAAO,kBAAkB,CAAC,QAAkC,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe;IACtD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO;QAClC,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@motebit/verify",
3
- "version": "0.3.0",
4
- "description": "Verify motebit.md agent identity files Ed25519 signature verification for the motebit/identity@1.0 spec",
3
+ "version": "0.4.0",
4
+ "description": "Verify any Motebit artifact — identity files, execution receipts, verifiable credentials, and presentations. One function, zero deps, MIT.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -53,6 +53,7 @@
53
53
  "build": "tsc -b",
54
54
  "test": "vitest run",
55
55
  "typecheck": "tsc --noEmit",
56
+ "lint": "eslint --parser-options=project:tsconfig.eslint.json src/",
56
57
  "clean": "rm -rf dist .turbo *.tsbuildinfo"
57
58
  }
58
59
  }