@xfuel/verify 0.1.0 → 0.2.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 +44 -8
- package/dist/base-payer.d.ts +65 -0
- package/dist/base-payer.d.ts.map +1 -0
- package/dist/base-payer.js +222 -0
- package/dist/base-payer.js.map +1 -0
- package/dist/cli.js +93 -11
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +185 -48
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +744 -85
- package/dist/index.js.map +1 -1
- package/dist/jws.d.ts +46 -0
- package/dist/jws.d.ts.map +1 -0
- package/dist/jws.js +129 -0
- package/dist/jws.js.map +1 -0
- package/dist/payer.d.ts +65 -0
- package/dist/payer.d.ts.map +1 -0
- package/dist/payer.js +148 -0
- package/dist/payer.js.map +1 -0
- package/dist/solana-payer.d.ts +99 -0
- package/dist/solana-payer.d.ts.map +1 -0
- package/dist/solana-payer.js +258 -0
- package/dist/solana-payer.js.map +1 -0
- package/package.json +4 -2
package/dist/index.d.ts
CHANGED
|
@@ -11,11 +11,13 @@
|
|
|
11
11
|
* See docs/specs/RECEIPT_V2_SEMANTICS.md for the verification algorithm.
|
|
12
12
|
*/
|
|
13
13
|
import { computePaymentCommitment, computeInferenceBinding, type PaymentCommitmentInput, type InferenceBindingInput } from './binding.js';
|
|
14
|
-
|
|
14
|
+
import { verifyBasePayer, parseBasePaymentRef, isEvmAddress, sumUsdcTransfersFromPayer, fetchBaseTransactionReceipt, USDC_ADDRESSES, ERC20_TRANSFER_TOPIC, BASE_RPC_URL, type BasePayerVerification, type BaseReceiptFetcher } from './base-payer.js';
|
|
15
|
+
import { verifySolanaPayer, parseSolanaPaymentRef, isSolanaBase58Pubkey, extractUsdcTransfersFromTx, inferUsdcOutflowFromBalances, fetchSolanaTransaction, SOLANA_RPC_URL, SOLANA_USDC_MINT_MAINNET, SOLANA_USDC_MINT_DEVNET, type SolanaPayerVerification, type SolanaRpcFetcher, type SolanaRpcGetTransactionResult } from './solana-payer.js';
|
|
16
|
+
import { verifyPayerBinding, receiptPayerClaimsFromEnvelope, decodeJwsPayload, type PayerBindingVerification, type ReceiptPayerClaims, type PayerRail } from './payer.js';
|
|
17
|
+
import { resolvePinnedIssuerJwk, verifyIssuerJws } from './jws.js';
|
|
18
|
+
export { computePaymentCommitment, computeInferenceBinding, type PaymentCommitmentInput, type InferenceBindingInput, verifyBasePayer, parseBasePaymentRef, isEvmAddress, sumUsdcTransfersFromPayer, fetchBaseTransactionReceipt, USDC_ADDRESSES, ERC20_TRANSFER_TOPIC, BASE_RPC_URL, type BasePayerVerification, type BaseReceiptFetcher, verifySolanaPayer, parseSolanaPaymentRef, isSolanaBase58Pubkey, extractUsdcTransfersFromTx, inferUsdcOutflowFromBalances, fetchSolanaTransaction, SOLANA_RPC_URL, SOLANA_USDC_MINT_MAINNET, SOLANA_USDC_MINT_DEVNET, type SolanaPayerVerification, type SolanaRpcFetcher, type SolanaRpcGetTransactionResult, verifyPayerBinding, receiptPayerClaimsFromEnvelope, decodeJwsPayload, type PayerBindingVerification, type ReceiptPayerClaims, type PayerRail, };
|
|
15
19
|
/** ZKVerifierSP1 contract on Base mainnet. */
|
|
16
20
|
export declare const ZK_VERIFIER_ADDRESS = "0x9373499645292715a2275A78eD65B14215C41c06";
|
|
17
|
-
/** Default Base mainnet RPC. */
|
|
18
|
-
export declare const BASE_RPC_URL = "https://mainnet.base.org";
|
|
19
21
|
/** Base Sepolia testnet RPC. */
|
|
20
22
|
export declare const BASE_SEPOLIA_RPC_URL = "https://sepolia.base.org";
|
|
21
23
|
/** Chit402 receipt (v2/v3 compatible). */
|
|
@@ -35,14 +37,32 @@ export interface XFuelReceipt {
|
|
|
35
37
|
payment?: {
|
|
36
38
|
rail?: string;
|
|
37
39
|
ref?: string | null;
|
|
38
|
-
gross_amount?: string;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
gross_amount?: string | null;
|
|
41
|
+
settled_amount?: string | null;
|
|
42
|
+
net_amount?: string | null;
|
|
43
|
+
fee_amount?: string | null;
|
|
44
|
+
fee_bps?: number | null;
|
|
45
|
+
protocol_fee_bps?: number | null;
|
|
46
|
+
platform_fee?: string | null;
|
|
47
|
+
platform_fee_bps?: number | null;
|
|
48
|
+
asset?: string | null;
|
|
49
|
+
payee?: string | null;
|
|
50
|
+
accounting?: {
|
|
51
|
+
kind?: string;
|
|
52
|
+
scope?: string;
|
|
53
|
+
note?: string;
|
|
54
|
+
internal_breakdown?: {
|
|
55
|
+
route_margin_bps?: number | null;
|
|
56
|
+
route_margin_amount?: string | null;
|
|
57
|
+
receipt_floor_amount?: string | null;
|
|
58
|
+
provider_cogs_amount?: string | null;
|
|
59
|
+
tier2_proof_amount?: string | null;
|
|
60
|
+
};
|
|
61
|
+
} | null;
|
|
45
62
|
};
|
|
63
|
+
payment_meta?: {
|
|
64
|
+
network?: string;
|
|
65
|
+
} | null;
|
|
46
66
|
provider_cogs?: {
|
|
47
67
|
actual?: string;
|
|
48
68
|
};
|
|
@@ -68,12 +88,30 @@ export interface XFuelReceipt {
|
|
|
68
88
|
signature?: {
|
|
69
89
|
alg?: string;
|
|
70
90
|
value?: string;
|
|
91
|
+
payload_version?: number;
|
|
92
|
+
};
|
|
93
|
+
hmac_attestation?: {
|
|
94
|
+
payload_version?: number;
|
|
71
95
|
};
|
|
72
96
|
issuer_signature?: {
|
|
73
97
|
alg?: string;
|
|
74
98
|
value?: string;
|
|
75
99
|
kid?: string;
|
|
100
|
+
jws?: string;
|
|
101
|
+
issuer_jwk?: Es256Jwk;
|
|
102
|
+
payload_version?: number;
|
|
103
|
+
};
|
|
104
|
+
verification?: {
|
|
105
|
+
source_of_truth?: string;
|
|
106
|
+
jwks_uri?: string;
|
|
107
|
+
issuer_jwk_pin?: string;
|
|
108
|
+
offline_key_source?: string;
|
|
76
109
|
};
|
|
110
|
+
caller_binding?: {
|
|
111
|
+
payer_wallet?: string | null;
|
|
112
|
+
agent_pubkey?: string | null;
|
|
113
|
+
api_key_hash?: string | null;
|
|
114
|
+
} | null;
|
|
77
115
|
}
|
|
78
116
|
/** JWK public key for ES256 verification. */
|
|
79
117
|
export interface Es256Jwk {
|
|
@@ -93,12 +131,24 @@ export interface Jwks {
|
|
|
93
131
|
export interface IssuerSignatureVerification {
|
|
94
132
|
/** Whether an issuer signature was present to check. */
|
|
95
133
|
checked: boolean;
|
|
96
|
-
/** True
|
|
134
|
+
/** True only when the signature verifies under a trusted key. */
|
|
97
135
|
valid: boolean;
|
|
98
136
|
/** Key ID from the signature. */
|
|
99
137
|
kid?: string;
|
|
100
|
-
/** Reason for failure when valid=false. */
|
|
138
|
+
/** Reason for failure when valid=false. `key untrusted` means the verifying key is not in the trust set. */
|
|
101
139
|
reason?: string;
|
|
140
|
+
/** True when the key used (or the only candidate key) is in the trust set. */
|
|
141
|
+
key_trusted?: boolean;
|
|
142
|
+
/** How the verifying key was trusted, when valid. */
|
|
143
|
+
trust?: 'jwks' | 'pinned_kid';
|
|
144
|
+
/** Verified JWS claims. Present only when valid is true. */
|
|
145
|
+
payload?: Record<string, unknown>;
|
|
146
|
+
}
|
|
147
|
+
/** Outer unsigned field disagrees with the JWS payload. */
|
|
148
|
+
export interface ClaimMismatch {
|
|
149
|
+
field: string;
|
|
150
|
+
outer: string | null;
|
|
151
|
+
signed: string | null;
|
|
102
152
|
}
|
|
103
153
|
export interface BindingVerification {
|
|
104
154
|
verified: boolean;
|
|
@@ -114,41 +164,93 @@ export interface NullifierVerification {
|
|
|
114
164
|
anchored: boolean | null;
|
|
115
165
|
reason?: string;
|
|
116
166
|
}
|
|
167
|
+
export interface PayerVerification {
|
|
168
|
+
checked: boolean;
|
|
169
|
+
valid: boolean;
|
|
170
|
+
rail?: PayerRail;
|
|
171
|
+
reason?: string;
|
|
172
|
+
payer_wallet?: string | null;
|
|
173
|
+
payee?: string | null;
|
|
174
|
+
asset?: string | null;
|
|
175
|
+
amount?: string | null;
|
|
176
|
+
}
|
|
117
177
|
export interface ReceiptVerification {
|
|
118
178
|
receipt_id: string;
|
|
119
179
|
binding: BindingVerification;
|
|
120
180
|
issuer_signature: IssuerSignatureVerification;
|
|
181
|
+
payer: PayerVerification;
|
|
121
182
|
nullifier: NullifierVerification;
|
|
122
183
|
output_hash: string | null;
|
|
123
184
|
hub: string | null;
|
|
124
185
|
model: string | null;
|
|
186
|
+
/** Gross amount from verified signed claims, in atomic USDC. Null when the signature is not trusted. */
|
|
125
187
|
amount_usdc: string | null;
|
|
188
|
+
/** Settlement ref from verified signed claims. Null when the signature is not trusted. */
|
|
126
189
|
tx: string | null;
|
|
190
|
+
/** Unsigned outer fields that disagree with the JWS payload. */
|
|
191
|
+
claim_mismatches: ClaimMismatch[];
|
|
127
192
|
overall: 'verified' | 'partial' | 'failed';
|
|
128
193
|
errors: string[];
|
|
129
194
|
}
|
|
130
195
|
/**
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
* 8. payment.platform_fee
|
|
143
|
-
* 9. payment.platform_fee_bps
|
|
144
|
-
* 10. provider_cogs.actual
|
|
145
|
-
* 11. route.model
|
|
146
|
-
* 12. route.model_commitment.commitment
|
|
147
|
-
* 13. route.provider
|
|
148
|
-
* 14. output.hash
|
|
149
|
-
* 15. binding.expected_commitment
|
|
196
|
+
* HMAC payload version.
|
|
197
|
+
* Versions <= 7 keep the historical net/fee field list.
|
|
198
|
+
* Version 8 signs settled_amount plus the internal accounting breakdown.
|
|
199
|
+
* Lockstep with `canonicalPayloadVersion` in services/gateway/src/receipt.js
|
|
200
|
+
* for the v8 list (the v7 list here is the historical 15-field public formula).
|
|
201
|
+
*/
|
|
202
|
+
export declare function canonicalPayloadVersion(receipt: XFuelReceipt): number;
|
|
203
|
+
/**
|
|
204
|
+
* Canonical, order-stable payload an HMAC issuer signature covers.
|
|
205
|
+
* v8 matches `canonicalSignedPayload` in services/gateway/src/receipt.js.
|
|
206
|
+
* v7 and earlier stay on the historical 15-field list so old signatures verify.
|
|
150
207
|
*/
|
|
151
208
|
export declare function canonicalIssuerPayload(receipt: XFuelReceipt): string;
|
|
209
|
+
export interface TransferLog {
|
|
210
|
+
address?: string;
|
|
211
|
+
topics?: string[];
|
|
212
|
+
data?: string;
|
|
213
|
+
}
|
|
214
|
+
export interface SettledAmountReconciliation {
|
|
215
|
+
checked: boolean;
|
|
216
|
+
/** True when the signed settled/net amount equals the USDC Transfer to payee. */
|
|
217
|
+
matches: boolean;
|
|
218
|
+
payload_version: number;
|
|
219
|
+
signed_field: 'settled_amount' | 'gross_amount' | 'net_amount' | null;
|
|
220
|
+
signed_amount: string | null;
|
|
221
|
+
transfer_amount: string | null;
|
|
222
|
+
payee: string | null;
|
|
223
|
+
reason?: string;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Sum USDC Transfer values to `payee` in a transaction's logs.
|
|
227
|
+
* Non-Transfer logs are ignored. When `usdcAddress` is set, other contracts are ignored.
|
|
228
|
+
*/
|
|
229
|
+
export declare function sumUsdcTransfersToPayee(logs: TransferLog[] | null | undefined, payee: string, usdcAddress?: string): bigint | null;
|
|
230
|
+
export interface ReconcileSettledTransferOptions {
|
|
231
|
+
usdcAddress?: string;
|
|
232
|
+
/** JWKS treated as a trust root. Keys are matched by `kid`. */
|
|
233
|
+
jwks?: Jwks;
|
|
234
|
+
/**
|
|
235
|
+
* RFC 7638 thumbprints allowed as an offline pin.
|
|
236
|
+
* Omit to use the default production pin. Pass `[]` to disable the pin.
|
|
237
|
+
*/
|
|
238
|
+
trustedKids?: readonly string[];
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Optional on-chain reconciliation. Given a tx receipt's logs, the signed
|
|
242
|
+
* amount the payee was supposed to receive must equal the USDC Transfer to payee.
|
|
243
|
+
*
|
|
244
|
+
* The amount and payee come from JWS claims only after a key-trust check
|
|
245
|
+
* (JWKS by kid, or an embedded key whose thumbprint is a pinned kid). An
|
|
246
|
+
* untrusted signature does not contribute those facts.
|
|
247
|
+
*
|
|
248
|
+
* v8 compares `settled_amount` (falling back to `gross_amount`): that is the
|
|
249
|
+
* on-chain transfer. v7 and earlier compare `net_amount`, which those receipts
|
|
250
|
+
* defined as "amount after fees". A single direct transfer of gross will not
|
|
251
|
+
* match a net that subtracts a fee that never moved on chain.
|
|
252
|
+
*/
|
|
253
|
+
export declare function reconcileSettledTransfer(receipt: XFuelReceipt, logs: TransferLog[] | null | undefined, options?: ReconcileSettledTransferOptions): SettledAmountReconciliation;
|
|
152
254
|
/**
|
|
153
255
|
* Verify a receipt's ES256 issuer signature against a JWK (public key).
|
|
154
256
|
* This is the public-key verification path — no shared secret required.
|
|
@@ -163,19 +265,17 @@ export declare function canonicalIssuerPayload(receipt: XFuelReceipt): string;
|
|
|
163
265
|
*/
|
|
164
266
|
export declare function verifyIssuerSignature(receipt: XFuelReceipt, jwk: Es256Jwk): IssuerSignatureVerification;
|
|
165
267
|
/**
|
|
166
|
-
* Verify
|
|
167
|
-
* Finds the matching key by kid and verifies.
|
|
268
|
+
* Verify an issuer signature against trusted keys only.
|
|
168
269
|
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
|
|
172
|
-
export declare function verifyIssuerSignatureWithJwks(receipt: XFuelReceipt, jwks: Jwks): IssuerSignatureVerification;
|
|
173
|
-
/**
|
|
174
|
-
* Verify a receipt's payment binding locally (no network required).
|
|
270
|
+
* Trust, in order:
|
|
271
|
+
* 1. A JWKS entry matched by `kid` (supplied file or fetched issuer JWKS).
|
|
272
|
+
* 2. An embedded `issuer_jwk` whose RFC 7638 thumbprint equals a pinned trusted kid.
|
|
175
273
|
*
|
|
176
|
-
*
|
|
177
|
-
* it to the stored `binding.expected_commitment`.
|
|
274
|
+
* An embedded key that merely verifies the bytes is `key untrusted`.
|
|
178
275
|
*/
|
|
276
|
+
export declare function verifyIssuerSignatureWithJwks(receipt: XFuelReceipt, jwks?: Jwks, options?: {
|
|
277
|
+
trustedKids?: readonly string[];
|
|
278
|
+
}): IssuerSignatureVerification;
|
|
179
279
|
export declare function verifyBinding(receipt: XFuelReceipt): BindingVerification;
|
|
180
280
|
/**
|
|
181
281
|
* Verify a receipt's nullifier is anchored on-chain.
|
|
@@ -195,34 +295,71 @@ export declare const canonicalSignedPayload: typeof canonicalIssuerPayload;
|
|
|
195
295
|
* Hash the canonical payload (for ERC-8004 response_hash).
|
|
196
296
|
*/
|
|
197
297
|
export declare function hashCanonicalPayload(receipt: XFuelReceipt): string;
|
|
298
|
+
/** Flag unsigned outer copies that disagree with the JWS payload. */
|
|
299
|
+
export declare function diffOuterClaims(receipt: XFuelReceipt, claims: Record<string, unknown> | null): ClaimMismatch[];
|
|
300
|
+
/** Fetch a JWKS document. Caller decides whether the URL is a trust root. */
|
|
301
|
+
export declare function fetchIssuerJwks(uri: string, fetchImpl?: typeof fetch): Promise<Jwks>;
|
|
198
302
|
/**
|
|
199
|
-
* Full receipt verification —
|
|
303
|
+
* Full receipt verification — trusted issuer signature, signed-claim facts,
|
|
304
|
+
* optional on-chain payer and nullifier checks.
|
|
200
305
|
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
* @param options.rpcUrl RPC URL for on-chain checks
|
|
306
|
+
* Facts (amount, payer, payee, asset, tx, model) are taken only from a JWS
|
|
307
|
+
* that verified under a trusted key. The embedded `issuer_jwk` is not trusted
|
|
308
|
+
* unless its RFC 7638 thumbprint is a pinned kid, or the same key is in a JWKS.
|
|
205
309
|
*/
|
|
206
|
-
|
|
310
|
+
/** Extract JWS claims for payer binding. Prefers the JWS payload over the outer copy. */
|
|
311
|
+
export declare function receiptPayerClaims(receipt: XFuelReceipt): ReceiptPayerClaims;
|
|
312
|
+
export interface VerifyReceiptOptions {
|
|
313
|
+
/** Caller-supplied JWKS. Every key in it is a trust root, matched by kid. */
|
|
207
314
|
jwks?: Jwks;
|
|
315
|
+
/**
|
|
316
|
+
* Pinned trusted kids (RFC 7638 thumbprints). Defaults to the production
|
|
317
|
+
* api.chit402.com issuer kid. Pass `[]` to disable the offline pin.
|
|
318
|
+
*/
|
|
319
|
+
trustedKids?: readonly string[];
|
|
320
|
+
/** Fetch JWKS from the receipt `jwks_uri` when its host is allowlisted. */
|
|
321
|
+
fetchJwks?: boolean;
|
|
322
|
+
/** Explicit JWKS URL. Any https URL is fetched; this is user-supplied trust. */
|
|
323
|
+
jwksUri?: string;
|
|
324
|
+
/** Hosts allowed for `fetchJwks`. Defaults to api.chit402.com. */
|
|
325
|
+
trustedJwksHosts?: readonly string[];
|
|
326
|
+
fetchImpl?: typeof fetch;
|
|
208
327
|
checkNullifier?: boolean;
|
|
328
|
+
checkPayer?: boolean;
|
|
209
329
|
rpcUrl?: string;
|
|
330
|
+
solanaRpcUrl?: string;
|
|
210
331
|
verifierAddress?: string;
|
|
211
|
-
|
|
332
|
+
fetchSolanaTransaction?: SolanaRpcFetcher;
|
|
333
|
+
fetchBaseReceipt?: BaseReceiptFetcher;
|
|
334
|
+
}
|
|
335
|
+
export declare function verifyReceipt(receipt: XFuelReceipt, options?: VerifyReceiptOptions): Promise<ReceiptVerification>;
|
|
336
|
+
export { resolvePinnedIssuerJwk, verifyIssuerJws, DEFAULT_TRUSTED_ISSUER_KIDS, DEFAULT_TRUSTED_JWKS_HOSTS, KEY_UNTRUSTED, jwkThumbprint, isPinnedTrustedJwk, jwksHostAllowed, } from './jws.js';
|
|
212
337
|
declare const _default: {
|
|
213
338
|
verifyBinding: typeof verifyBinding;
|
|
214
339
|
verifyIssuerSignature: typeof verifyIssuerSignature;
|
|
215
340
|
verifyIssuerSignatureWithJwks: typeof verifyIssuerSignatureWithJwks;
|
|
341
|
+
verifyIssuerJws: typeof verifyIssuerJws;
|
|
342
|
+
resolvePinnedIssuerJwk: typeof resolvePinnedIssuerJwk;
|
|
216
343
|
verifyNullifier: typeof verifyNullifier;
|
|
344
|
+
verifyPayerBinding: typeof verifyPayerBinding;
|
|
345
|
+
verifySolanaPayer: typeof verifySolanaPayer;
|
|
346
|
+
verifyBasePayer: typeof verifyBasePayer;
|
|
217
347
|
verifyReceipt: typeof verifyReceipt;
|
|
348
|
+
receiptPayerClaims: typeof receiptPayerClaims;
|
|
349
|
+
receiptPayerClaimsFromEnvelope: typeof receiptPayerClaimsFromEnvelope;
|
|
350
|
+
decodeJwsPayload: typeof decodeJwsPayload;
|
|
218
351
|
computePaymentCommitment: typeof computePaymentCommitment;
|
|
219
352
|
computeInferenceBinding: typeof computeInferenceBinding;
|
|
220
353
|
canonicalIssuerPayload: typeof canonicalIssuerPayload;
|
|
354
|
+
canonicalPayloadVersion: typeof canonicalPayloadVersion;
|
|
221
355
|
canonicalSignedPayload: typeof canonicalIssuerPayload;
|
|
356
|
+
reconcileSettledTransfer: typeof reconcileSettledTransfer;
|
|
357
|
+
sumUsdcTransfersToPayee: typeof sumUsdcTransfersToPayee;
|
|
222
358
|
hashCanonicalPayload: typeof hashCanonicalPayload;
|
|
223
359
|
ZK_VERIFIER_ADDRESS: string;
|
|
224
360
|
BASE_RPC_URL: string;
|
|
225
361
|
BASE_SEPOLIA_RPC_URL: string;
|
|
362
|
+
SOLANA_RPC_URL: string;
|
|
226
363
|
};
|
|
227
364
|
export default _default;
|
|
228
365
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|