From fe68da61f6a2d85076378dec8fb9ab56482cc958 Mon Sep 17 00:00:00 2001 From: Paul Miller Date: Fri, 10 Mar 2023 19:18:05 +0000 Subject: [PATCH] Move stark curve to micro-starknet --- README.md | 17 +- benchmark/package.json | 1 - benchmark/stark.js | 56 - package.json | 6 +- src/stark.ts | 341 ----- test/_poseidon.helpers.js | 103 ++ test/basic.test.js | 3 - test/index.test.js | 1 - test/poseidon.test.js | 2 +- test/stark/basic.test.js | 201 --- test/stark/benchmark/index.js | 57 - test/stark/benchmark/package.json | 19 - test/stark/fixtures/issue2.json | 1306 ----------------- test/stark/fixtures/keys_precomputed.json | 32 - .../rfc6979_signature_test_vector.json | 57 - test/stark/index.test.js | 11 - test/stark/poseidon.test.js | 205 --- test/stark/poseidon/LICENSE | 201 --- test/stark/poseidon/README.md | 35 - test/stark/poseidon/poseidon3.txt | 462 ------ test/stark/poseidon/poseidon4.txt | 559 ------- test/stark/poseidon/poseidon5.txt | 651 -------- test/stark/poseidon/poseidon9.txt | 1031 ------------- test/stark/property.test.js | 53 - test/stark/stark.test.js | 288 ---- 25 files changed, 110 insertions(+), 5588 deletions(-) delete mode 100644 benchmark/stark.js delete mode 100644 src/stark.ts create mode 100644 test/_poseidon.helpers.js delete mode 100644 test/stark/basic.test.js delete mode 100644 test/stark/benchmark/index.js delete mode 100644 test/stark/benchmark/package.json delete mode 100644 test/stark/fixtures/issue2.json delete mode 100644 test/stark/fixtures/keys_precomputed.json delete mode 100644 test/stark/fixtures/rfc6979_signature_test_vector.json delete mode 100644 test/stark/index.test.js delete mode 100644 test/stark/poseidon.test.js delete mode 100644 test/stark/poseidon/LICENSE delete mode 100644 test/stark/poseidon/README.md delete mode 100644 test/stark/poseidon/poseidon3.txt delete mode 100644 test/stark/poseidon/poseidon4.txt delete mode 100644 test/stark/poseidon/poseidon5.txt delete mode 100644 test/stark/poseidon/poseidon9.txt delete mode 100644 test/stark/property.test.js delete mode 100644 test/stark/stark.test.js diff --git a/README.md b/README.md index 7e00d9d..748825d 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,6 @@ import { p256 } from '@noble/curves/p256'; import { p384 } from '@noble/curves/p384'; import { p521 } from '@noble/curves/p521'; import { pallas, vesta } from '@noble/curves/pasta'; -import * as stark from '@noble/curves/stark'; import { bls12_381 } from '@noble/curves/bls12-381'; import { bn254 } from '@noble/curves/bn'; import { jubjub } from '@noble/curves/jubjub'; @@ -530,7 +529,7 @@ Implements [Poseidon](https://www.poseidon-hash.info) ZK-friendly hash. There are many poseidon variants with different constants. We don't provide them: you should construct them manually. -The only variant provided resides in `stark` module: inspect it for proper usage. +Check out [micro-starknet](https://github.com/paulmillr/micro-starknet) package for a proper example. ```ts import { poseidon } from '@noble/curves/abstract/poseidon'; @@ -541,7 +540,7 @@ type PoseidonOpts = { roundsFull: number; roundsPartial: number; sboxPower?: number; - reversePartialPowIdx?: boolean; // Hack for stark + reversePartialPowIdx?: boolean; mds: bigint[][]; roundConstants: bigint[][]; }; @@ -672,12 +671,6 @@ getPublicKey x 3,363 ops/sec @ 297μs/op sign x 1,615 ops/sec @ 619μs/op verify x 319 ops/sec @ 3ms/op -stark -init x 35 ops/sec @ 28ms/op -pedersen x 884 ops/sec @ 1ms/op -poseidon x 8,598 ops/sec @ 116μs/op -verify x 528 ops/sec @ 1ms/op - ecdh ├─x25519 x 1,337 ops/sec @ 747μs/op ├─secp256k1 x 461 ops/sec @ 2ms/op @@ -715,8 +708,6 @@ hashToCurve Article about some of library's features: [Learning fast elliptic-curve cryptography](https://paulmillr.com/posts/noble-secp256k1-fast-ecc/) -Demo: Elliptic curve calculator [paulmillr.com/ecc](https://paulmillr.com/ecc). - Projects using the library: - secp256k1 @@ -727,7 +718,9 @@ Projects using the library: - Check out `bls12-381.ts` for articles about the curve - Threshold sigs demo [genthresh.com](https://genthresh.com) - BBS signatures [github.com/Wind4Greg/BBS-Draft-Checks](https://github.com/Wind4Greg/BBS-Draft-Checks) following [draft-irtf-cfrg-bbs-signatures-latest](https://identity.foundation/bbs-signature/draft-irtf-cfrg-bbs-signatures.html) - +- Others + - All curves demo: Elliptic curve calculator [paulmillr.com/ecc](https://paulmillr.com/ecc) + - [micro-starknet](https://github.com/paulmillr/micro-starknet) for stark-friendly elliptic curve. ## Upgrading If you're coming from single-feature noble packages, the following changes need to be kept in mind: diff --git a/benchmark/package.json b/benchmark/package.json index 3d9a6f8..ec2ca40 100644 --- a/benchmark/package.json +++ b/benchmark/package.json @@ -16,7 +16,6 @@ }, "dependencies": { "@noble/hashes": "^1.1.5", - "@starkware-industries/starkware-crypto-utils": "^0.0.2", "elliptic": "^6.5.4" } } diff --git a/benchmark/stark.js b/benchmark/stark.js deleted file mode 100644 index be72a62..0000000 --- a/benchmark/stark.js +++ /dev/null @@ -1,56 +0,0 @@ -import { run, mark, compare, utils } from 'micro-bmark'; -import * as starkwareCrypto from '@starkware-industries/starkware-crypto-utils'; -import * as stark from '../stark.js'; - -run(async () => { - const RAM = false; - if (RAM) utils.logMem(); - console.log(`\x1b[36mstark\x1b[0m`); - await mark('init', 1, () => stark.utils.precompute(8)); - const d = (() => { - const priv = '2dccce1da22003777062ee0870e9881b460a8b7eca276870f57c601f182136c'; - const msg = 'c465dd6b1bbffdb05442eb17f5ca38ad1aa78a6f56bf4415bdee219114a47'; - const pub = stark.getPublicKey(priv); - const sig = stark.sign(msg, priv); - - const privateKey = '2dccce1da22003777062ee0870e9881b460a8b7eca276870f57c601f182136c'; - const msgHash = 'c465dd6b1bbffdb05442eb17f5ca38ad1aa78a6f56bf4415bdee219114a47'; - const keyPair = starkwareCrypto.default.ec.keyFromPrivate(privateKey, 'hex'); - const publicKeyStark = starkwareCrypto.default.ec.keyFromPublic( - keyPair.getPublic(true, 'hex'), - 'hex' - ); - return { priv, sig, msg, pub, publicKeyStark, msgHash, keyPair }; - })(); - await compare('pedersen', 500, { - old: () => { - return starkwareCrypto.default.pedersen([ - '3d937c035c878245caf64531a5756109c53068da139362728feb561405371cb', - '208a0a10250e382e1e4bbe2880906c2791bf6275695e02fbbc6aeff9cd8b31a', - ]); - }, - noble: () => { - return stark.pedersen( - '3d937c035c878245caf64531a5756109c53068da139362728feb561405371cb', - '208a0a10250e382e1e4bbe2880906c2791bf6275695e02fbbc6aeff9cd8b31a' - ); - }, - }); - await mark('poseidon', 10000, () => stark.poseidonHash( - 0x3d937c035c878245caf64531a5756109c53068da139362728feb561405371cbn, - 0x208a0a10250e382e1e4bbe2880906c2791bf6275695e02fbbc6aeff9cd8b31an - )); - await compare('verify', 500, { - old: () => { - return starkwareCrypto.default.verify( - d.publicKeyStark, - d.msgHash, - starkwareCrypto.default.sign(d.keyPair, d.msgHash) - ); - }, - noble: () => { - return stark.verify(stark.sign(d.msg, d.priv), d.msg, d.pub); - }, - }); - if (RAM) utils.logMem(); -}); diff --git a/package.json b/package.json index 33c8e99..0f33408 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "*.d.ts.map" ], "scripts": { - "bench": "cd benchmark; node secp256k1.js; node curves.js; node ecdh.js; node stark.js; node bls.js", + "bench": "cd benchmark; node secp256k1.js; node curves.js; node ecdh.js; node bls.js", "build": "tsc", "build:clean": "rm *.{js,d.ts,js.map} esm/*.{js,js.map} 2> /dev/null", "build:release": "rollup -c rollup.config.js", @@ -129,10 +129,6 @@ "./secp256k1": { "types": "./secp256k1.d.ts", "default": "./secp256k1.js" - }, - "./stark": { - "types": "./stark.d.ts", - "default": "./stark.js" } }, "keywords": [ diff --git a/src/stark.ts b/src/stark.ts deleted file mode 100644 index eefb59f..0000000 --- a/src/stark.ts +++ /dev/null @@ -1,341 +0,0 @@ -/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */ -import { keccak_256 } from '@noble/hashes/sha3'; -import { sha256 } from '@noble/hashes/sha256'; -import { utf8ToBytes } from '@noble/hashes/utils'; -import { Fp, mod, Field, validateField } from './abstract/modular.js'; -import { poseidon } from './abstract/poseidon.js'; -import { weierstrass, ProjPointType, SignatureType } from './abstract/weierstrass.js'; -import * as u from './abstract/utils.js'; -import type { Hex } from './abstract/utils.js'; -import { getHash } from './_shortw_utils.js'; - -// Stark-friendly elliptic curve -// https://docs.starkware.co/starkex/stark-curve.html - -type ProjectivePoint = ProjPointType; -const CURVE_ORDER = BigInt( - '3618502788666131213697322783095070105526743751716087489154079457884512865583' -); -const nBitLength = 252; -function bits2int(bytes: Uint8Array): bigint { - while (bytes[0] === 0) bytes = bytes.subarray(1); // strip leading 0s - // Copy-pasted from weierstrass.ts - const delta = bytes.length * 8 - nBitLength; - const num = u.bytesToNumberBE(bytes); - return delta > 0 ? num >> BigInt(delta) : num; -} -function hex0xToBytes(hex: string): Uint8Array { - if (typeof hex === 'string') { - hex = strip0x(hex); // allow 0x prefix - if (hex.length & 1) hex = '0' + hex; // allow unpadded hex - } - return u.hexToBytes(hex); -} -const curve = weierstrass({ - a: BigInt(1), // Params: a, b - b: BigInt('3141592653589793238462643383279502884197169399375105820974944592307816406665'), - // Field over which we'll do calculations; 2n**251n + 17n * 2n**192n + 1n - // There is no efficient sqrt for field (P%4==1) - Fp: Fp(BigInt('0x800000000000011000000000000000000000000000000000000000000000001')), - n: CURVE_ORDER, // Curve order, total count of valid points in the field. - nBitLength, // len(bin(N).replace('0b','')) - // Base point (x, y) aka generator point - Gx: BigInt('874739451078007766457464989774322083649278607533249481151382481072868806602'), - Gy: BigInt('152666792071518830868575557812948353041420400780739481342941381225525861407'), - h: BigInt(1), // cofactor - lowS: false, // Allow high-s signatures - ...getHash(sha256), - // Custom truncation routines for stark curve - bits2int, - bits2int_modN: (bytes: Uint8Array): bigint => { - // 2102820b232636d200cb21f1d330f20d096cae09d1bf3edb1cc333ddee11318 => - // 2102820b232636d200cb21f1d330f20d096cae09d1bf3edb1cc333ddee113180 - const hex = u.bytesToNumberBE(bytes).toString(16); // toHex unpadded - if (hex.length === 63) bytes = hex0xToBytes(hex + '0'); // append trailing 0 - return mod(bits2int(bytes), CURVE_ORDER); - }, -}); -export const _starkCurve = curve; - -function ensureBytes(hex: Hex): Uint8Array { - return u.ensureBytes('', typeof hex === 'string' ? hex0xToBytes(hex) : hex); -} - -function normPrivKey(privKey: Hex): string { - return u.bytesToHex(ensureBytes(privKey)).padStart(64, '0'); -} -export function getPublicKey(privKey: Hex, isCompressed = false): Uint8Array { - return curve.getPublicKey(normPrivKey(privKey), isCompressed); -} -export function getSharedSecret(privKeyA: Hex, pubKeyB: Hex): Uint8Array { - return curve.getSharedSecret(normPrivKey(privKeyA), pubKeyB); -} -export function sign(msgHash: Hex, privKey: Hex, opts?: any): SignatureType { - return curve.sign(ensureBytes(msgHash), normPrivKey(privKey), opts); -} -export function verify(signature: SignatureType | Hex, msgHash: Hex, pubKey: Hex) { - const sig = signature instanceof Signature ? signature : ensureBytes(signature); - return curve.verify(sig, ensureBytes(msgHash), ensureBytes(pubKey)); -} - -const { CURVE, ProjectivePoint, Signature, utils } = curve; -export { CURVE, ProjectivePoint, Signature, utils }; - -function extractX(bytes: Uint8Array): string { - const hex = u.bytesToHex(bytes.subarray(1)); - const stripped = hex.replace(/^0+/gm, ''); // strip leading 0s - return `0x${stripped}`; -} -function strip0x(hex: string) { - return hex.replace(/^0x/i, ''); -} -function numberTo0x16(num: bigint) { - // can't use utils.numberToHexUnpadded: adds leading 0 for even byte length - return `0x${num.toString(16)}`; -} - -// seed generation -export function grindKey(seed: Hex) { - const _seed = ensureBytes(seed); - const sha256mask = 2n ** 256n; - const limit = sha256mask - mod(sha256mask, CURVE_ORDER); - for (let i = 0; ; i++) { - const key = sha256Num(u.concatBytes(_seed, u.numberToVarBytesBE(BigInt(i)))); - if (key < limit) return mod(key, CURVE_ORDER).toString(16); // key should be in [0, limit) - if (i === 100000) throw new Error('grindKey is broken: tried 100k vals'); // prevent dos - } -} - -export function getStarkKey(privateKey: Hex): string { - return extractX(getPublicKey(privateKey, true)); -} - -export function ethSigToPrivate(signature: string): string { - signature = strip0x(signature); - if (signature.length !== 130) throw new Error('Wrong ethereum signature'); - return grindKey(signature.substring(0, 64)); -} - -const MASK_31 = 2n ** 31n - 1n; -const int31 = (n: bigint) => Number(n & MASK_31); -export function getAccountPath( - layer: string, - application: string, - ethereumAddress: string, - index: number -): string { - const layerNum = int31(sha256Num(layer)); - const applicationNum = int31(sha256Num(application)); - const eth = u.hexToNumber(strip0x(ethereumAddress)); - return `m/2645'/${layerNum}'/${applicationNum}'/${int31(eth)}'/${int31(eth >> 31n)}'/${index}`; -} - -// https://docs.starkware.co/starkex/pedersen-hash-function.html -const PEDERSEN_POINTS = [ - new ProjectivePoint( - 2089986280348253421170679821480865132823066470938446095505822317253594081284n, - 1713931329540660377023406109199410414810705867260802078187082345529207694986n, - 1n - ), - new ProjectivePoint( - 996781205833008774514500082376783249102396023663454813447423147977397232763n, - 1668503676786377725805489344771023921079126552019160156920634619255970485781n, - 1n - ), - new ProjectivePoint( - 2251563274489750535117886426533222435294046428347329203627021249169616184184n, - 1798716007562728905295480679789526322175868328062420237419143593021674992973n, - 1n - ), - new ProjectivePoint( - 2138414695194151160943305727036575959195309218611738193261179310511854807447n, - 113410276730064486255102093846540133784865286929052426931474106396135072156n, - 1n - ), - new ProjectivePoint( - 2379962749567351885752724891227938183011949129833673362440656643086021394946n, - 776496453633298175483985398648758586525933812536653089401905292063708816422n, - 1n - ), -]; - -function pedersenPrecompute(p1: ProjectivePoint, p2: ProjectivePoint): ProjectivePoint[] { - const out: ProjectivePoint[] = []; - let p = p1; - for (let i = 0; i < 248; i++) { - out.push(p); - p = p.double(); - } - // NOTE: we cannot use wNAF here, because last 4 bits will require full 248 bits multiplication - // We can add support for this to wNAF, but it will complicate wNAF. - p = p2; - for (let i = 0; i < 4; i++) { - out.push(p); - p = p.double(); - } - return out; -} -const PEDERSEN_POINTS1 = pedersenPrecompute(PEDERSEN_POINTS[1], PEDERSEN_POINTS[2]); -const PEDERSEN_POINTS2 = pedersenPrecompute(PEDERSEN_POINTS[3], PEDERSEN_POINTS[4]); - -type PedersenArg = Hex | bigint | number; -function pedersenArg(arg: PedersenArg): bigint { - let value: bigint; - if (typeof arg === 'bigint') { - value = arg; - } else if (typeof arg === 'number') { - if (!Number.isSafeInteger(arg)) throw new Error(`Invalid pedersenArg: ${arg}`); - value = BigInt(arg); - } else { - value = u.bytesToNumberBE(ensureBytes(arg)); - } - if (!(0n <= value && value < curve.CURVE.Fp.ORDER)) - throw new Error(`PedersenArg should be 0 <= value < CURVE.P: ${value}`); // [0..Fp) - return value; -} - -function pedersenSingle(point: ProjectivePoint, value: PedersenArg, constants: ProjectivePoint[]) { - let x = pedersenArg(value); - for (let j = 0; j < 252; j++) { - const pt = constants[j]; - if (pt.equals(point)) throw new Error('Same point'); - if ((x & 1n) !== 0n) point = point.add(pt); - x >>= 1n; - } - return point; -} - -// shift_point + x_low * P_0 + x_high * P1 + y_low * P2 + y_high * P3 -export function pedersen(x: PedersenArg, y: PedersenArg): string { - let point: ProjectivePoint = PEDERSEN_POINTS[0]; - point = pedersenSingle(point, x, PEDERSEN_POINTS1); - point = pedersenSingle(point, y, PEDERSEN_POINTS2); - return extractX(point.toRawBytes(true)); -} - -export function hashChain(data: PedersenArg[], fn = pedersen) { - if (!Array.isArray(data) || data.length < 1) - throw new Error('data should be array of at least 1 element'); - if (data.length === 1) return numberTo0x16(pedersenArg(data[0])); - return Array.from(data) - .reverse() - .reduce((acc, i) => fn(i, acc)); -} -// Same as hashChain, but computes hash even for single element and order is not revesed -export const computeHashOnElements = (data: PedersenArg[], fn = pedersen) => - [0, ...data, data.length].reduce((x, y) => fn(x, y)); - -const MASK_250 = u.bitMask(250); -export const keccak = (data: Uint8Array): bigint => u.bytesToNumberBE(keccak_256(data)) & MASK_250; -const sha256Num = (data: Uint8Array | string): bigint => u.bytesToNumberBE(sha256(data)); - -// Poseidon hash -export const Fp253 = Fp( - BigInt('14474011154664525231415395255581126252639794253786371766033694892385558855681') -); // 2^253 + 2^199 + 1 -export const Fp251 = Fp( - BigInt('3618502788666131213697322783095070105623107215331596699973092056135872020481') -); // 2^251 + 17 * 2^192 + 1 - -function poseidonRoundConstant(Fp: Field, name: string, idx: number) { - const val = Fp.fromBytes(sha256(utf8ToBytes(`${name}${idx}`))); - return Fp.create(val); -} - -// NOTE: doesn't check eiginvalues and possible can create unsafe matrix. But any filtration here will break compatibility with starknet -// Please use only if you really know what you doing. -// https://eprint.iacr.org/2019/458.pdf Section 2.3 (Avoiding Insecure Matrices) -export function _poseidonMDS(Fp: Field, name: string, m: number, attempt = 0) { - const x_values: bigint[] = []; - const y_values: bigint[] = []; - for (let i = 0; i < m; i++) { - x_values.push(poseidonRoundConstant(Fp, `${name}x`, attempt * m + i)); - y_values.push(poseidonRoundConstant(Fp, `${name}y`, attempt * m + i)); - } - if (new Set([...x_values, ...y_values]).size !== 2 * m) - throw new Error('X and Y values are not distinct'); - return x_values.map((x) => y_values.map((y) => Fp.inv(Fp.sub(x, y)))); -} - -const MDS_SMALL = [ - [3, 1, 1], - [1, -1, 1], - [1, 1, -2], -].map((i) => i.map(BigInt)); - -export type PoseidonOpts = { - Fp: Field; - rate: number; - capacity: number; - roundsFull: number; - roundsPartial: number; -}; - -export type PoseidonFn = ReturnType & { - m: number; - rate: number; - capacity: number; -}; - -export function poseidonBasic(opts: PoseidonOpts, mds: bigint[][]): PoseidonFn { - validateField(opts.Fp); - if (!Number.isSafeInteger(opts.rate) || !Number.isSafeInteger(opts.capacity)) - throw new Error(`Wrong poseidon opts: ${opts}`); - const m = opts.rate + opts.capacity; - const rounds = opts.roundsFull + opts.roundsPartial; - const roundConstants = []; - for (let i = 0; i < rounds; i++) { - const row = []; - for (let j = 0; j < m; j++) row.push(poseidonRoundConstant(opts.Fp, 'Hades', m * i + j)); - roundConstants.push(row); - } - const res: Partial = poseidon({ - ...opts, - t: m, - sboxPower: 3, - reversePartialPowIdx: true, // Why?! - mds, - roundConstants, - }); - res.m = m; - res.rate = opts.rate; - res.capacity = opts.capacity; - return res as PoseidonFn; -} - -export function poseidonCreate(opts: PoseidonOpts, mdsAttempt = 0) { - const m = opts.rate + opts.capacity; - if (!Number.isSafeInteger(mdsAttempt)) throw new Error(`Wrong mdsAttempt=${mdsAttempt}`); - return poseidonBasic(opts, _poseidonMDS(opts.Fp, 'HadesMDS', m, mdsAttempt)); -} - -export const poseidonSmall = poseidonBasic( - { Fp: Fp251, rate: 2, capacity: 1, roundsFull: 8, roundsPartial: 83 }, - MDS_SMALL -); - -export function poseidonHash(x: bigint, y: bigint, fn = poseidonSmall): bigint { - return fn([x, y, 2n])[0]; -} - -export function poseidonHashFunc(x: Uint8Array, y: Uint8Array, fn = poseidonSmall): Uint8Array { - return u.numberToVarBytesBE(poseidonHash(u.bytesToNumberBE(x), u.bytesToNumberBE(y), fn)); -} - -export function poseidonHashSingle(x: bigint, fn = poseidonSmall): bigint { - return fn([x, 0n, 1n])[0]; -} - -export function poseidonHashMany(values: bigint[], fn = poseidonSmall): bigint { - const { m, rate } = fn; - if (!Array.isArray(values)) throw new Error('bigint array expected in values'); - const padded = Array.from(values); // copy - padded.push(1n); - while (padded.length % rate !== 0) padded.push(0n); - let state: bigint[] = new Array(m).fill(0n); - for (let i = 0; i < padded.length; i += rate) { - for (let j = 0; j < rate; j++) state[j] += padded[i + j]; - state = fn(state); - } - return state[0]; -} diff --git a/test/_poseidon.helpers.js b/test/_poseidon.helpers.js new file mode 100644 index 0000000..06d693f --- /dev/null +++ b/test/_poseidon.helpers.js @@ -0,0 +1,103 @@ +/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */ +import { sha256 } from '@noble/hashes/sha256'; +import { utf8ToBytes } from '@noble/hashes/utils'; +import { Fp, validateField } from '../abstract/modular.js'; +import { poseidon } from '../abstract/poseidon.js'; +import * as u from '../abstract/utils.js'; + +// Poseidon hash https://docs.starkware.co/starkex/stark-curve.html +export const Fp253 = Fp( + BigInt('14474011154664525231415395255581126252639794253786371766033694892385558855681') +); // 2^253 + 2^199 + 1 +export const Fp251 = Fp( + BigInt('3618502788666131213697322783095070105623107215331596699973092056135872020481') +); // 2^251 + 17 * 2^192 + 1 + +function poseidonRoundConstant(Fp, name, idx) { + const val = Fp.fromBytes(sha256(utf8ToBytes(`${name}${idx}`))); + return Fp.create(val); +} + +// NOTE: doesn't check eiginvalues and possible can create unsafe matrix. But any filtration here will break compatibility with starknet +// Please use only if you really know what you doing. +// https://eprint.iacr.org/2019/458.pdf Section 2.3 (Avoiding Insecure Matrices) +export function _poseidonMDS(Fp, name, m, attempt = 0) { + const x_values = []; + const y_values = []; + for (let i = 0; i < m; i++) { + x_values.push(poseidonRoundConstant(Fp, `${name}x`, attempt * m + i)); + y_values.push(poseidonRoundConstant(Fp, `${name}y`, attempt * m + i)); + } + if (new Set([...x_values, ...y_values]).size !== 2 * m) + throw new Error('X and Y values are not distinct'); + return x_values.map((x) => y_values.map((y) => Fp.inv(Fp.sub(x, y)))); +} + +const MDS_SMALL = [ + [3, 1, 1], + [1, -1, 1], + [1, 1, -2], +].map((i) => i.map(BigInt)); + +export function poseidonBasic(opts, mds) { + validateField(opts.Fp); + if (!Number.isSafeInteger(opts.rate) || !Number.isSafeInteger(opts.capacity)) + throw new Error(`Wrong poseidon opts: ${opts}`); + const m = opts.rate + opts.capacity; + const rounds = opts.roundsFull + opts.roundsPartial; + const roundConstants = []; + for (let i = 0; i < rounds; i++) { + const row = []; + for (let j = 0; j < m; j++) row.push(poseidonRoundConstant(opts.Fp, 'Hades', m * i + j)); + roundConstants.push(row); + } + const res = poseidon({ + ...opts, + t: m, + sboxPower: 3, + reversePartialPowIdx: true, // Why?! + mds, + roundConstants, + }); + res.m = m; + res.rate = opts.rate; + res.capacity = opts.capacity; + return res; +} + +export function poseidonCreate(opts, mdsAttempt = 0) { + const m = opts.rate + opts.capacity; + if (!Number.isSafeInteger(mdsAttempt)) throw new Error(`Wrong mdsAttempt=${mdsAttempt}`); + return poseidonBasic(opts, _poseidonMDS(opts.Fp, 'HadesMDS', m, mdsAttempt)); +} + +export const poseidonSmall = poseidonBasic( + { Fp: Fp251, rate: 2, capacity: 1, roundsFull: 8, roundsPartial: 83 }, + MDS_SMALL +); + +export function poseidonHash(x, y, fn = poseidonSmall) { + return fn([x, y, 2n])[0]; +} + +export function poseidonHashFunc(x, y, fn = poseidonSmall) { + return u.numberToVarBytesBE(poseidonHash(u.bytesToNumberBE(x), u.bytesToNumberBE(y), fn)); +} + +export function poseidonHashSingle(x, fn = poseidonSmall) { + return fn([x, 0n, 1n])[0]; +} + +export function poseidonHashMany(values, fn = poseidonSmall) { + const { m, rate } = fn; + if (!Array.isArray(values)) throw new Error('bigint array expected in values'); + const padded = Array.from(values); // copy + padded.push(1n); + while (padded.length % rate !== 0) padded.push(0n); + let state = new Array(m).fill(0n); + for (let i = 0; i < padded.length; i += rate) { + for (let j = 0; j < rate; j++) state[j] += padded[i + j]; + state = fn(state); + } + return state[0]; +} diff --git a/test/basic.test.js b/test/basic.test.js index 487d7ee..daf9a12 100644 --- a/test/basic.test.js +++ b/test/basic.test.js @@ -11,7 +11,6 @@ import { secp521r1 } from '../p521.js'; import { secp256k1 } from '../secp256k1.js'; import { ed25519, ed25519ctx, ed25519ph, x25519 } from '../ed25519.js'; import { ed448, ed448ph } from '../ed448.js'; -import { _starkCurve as starkCurve } from '../stark.js'; import { pallas, vesta } from '../pasta.js'; import { bn254 } from '../bn.js'; import { jubjub } from '../jubjub.js'; @@ -24,7 +23,6 @@ const FIELDS = { secp256r1: { Fp: [secp256r1.CURVE.Fp] }, secp521r1: { Fp: [secp521r1.CURVE.Fp] }, secp256k1: { Fp: [secp256k1.CURVE.Fp] }, - stark: { Fp: [starkCurve.CURVE.Fp] }, jubjub: { Fp: [jubjub.CURVE.Fp] }, ed25519: { Fp: [ed25519.CURVE.Fp] }, ed448: { Fp: [ed448.CURVE.Fp] }, @@ -314,7 +312,6 @@ const CURVES = { secp256k1, ed25519, ed25519ctx, ed25519ph, ed448, ed448ph, - starkCurve, pallas, vesta, bn254, jubjub, diff --git a/test/index.test.js b/test/index.test.js index 8c79200..378931f 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -7,7 +7,6 @@ import './ed448.test.js'; import './ed25519.test.js'; import './secp256k1.test.js'; import './secp256k1-schnorr.test.js'; -import './stark/index.test.js'; import './jubjub.test.js'; import './bls12-381.test.js'; import './hash-to-curve.test.js'; diff --git a/test/poseidon.test.js b/test/poseidon.test.js index 0d0fe0f..76308b4 100644 --- a/test/poseidon.test.js +++ b/test/poseidon.test.js @@ -1,7 +1,7 @@ import { deepStrictEqual, throws } from 'assert'; import { should, describe } from 'micro-should'; import * as poseidon from '../abstract/poseidon.js'; -import * as stark from '../stark.js'; +import * as stark from './_poseidon.helpers.js'; import * as mod from '../abstract/modular.js'; import { default as pvectors } from './vectors/poseidon.json' assert { type: 'json' }; const { st1, st2, st3, st4 } = pvectors; diff --git a/test/stark/basic.test.js b/test/stark/basic.test.js deleted file mode 100644 index 9b3fab4..0000000 --- a/test/stark/basic.test.js +++ /dev/null @@ -1,201 +0,0 @@ -import { deepStrictEqual, throws } from 'assert'; -import { describe, should } from 'micro-should'; -import * as starknet from '../../stark.js'; -import { default as issue2 } from './fixtures/issue2.json' assert { type: 'json' }; -import * as bip32 from '@scure/bip32'; -import * as bip39 from '@scure/bip39'; - -describe('starknet basic', () => { - should('Basic elliptic sanity check', () => { - const g1 = starknet.ProjectivePoint.BASE; - deepStrictEqual( - g1.toAffine().x.toString(16), - '1ef15c18599971b7beced415a40f0c7deacfd9b0d1819e03d723d8bc943cfca' - ); - deepStrictEqual( - g1.toAffine().y.toString(16), - '5668060aa49730b7be4801df46ec62de53ecd11abe43a32873000c36e8dc1f' - ); - const g2 = g1.double(); - deepStrictEqual( - g2.toAffine().x.toString(16), - '759ca09377679ecd535a81e83039658bf40959283187c654c5416f439403cf5' - ); - deepStrictEqual( - g2.toAffine().y.toString(16), - '6f524a3400e7708d5c01a28598ad272e7455aa88778b19f93b562d7a9646c41' - ); - const g3 = g2.add(g1); - deepStrictEqual( - g3.toAffine().x.toString(16), - '411494b501a98abd8262b0da1351e17899a0c4ef23dd2f96fec5ba847310b20' - ); - deepStrictEqual( - g3.toAffine().y.toString(16), - '7e1b3ebac08924d2c26f409549191fcf94f3bf6f301ed3553e22dfb802f0686' - ); - const g32 = g1.multiply(3n); - deepStrictEqual( - g32.toAffine().x.toString(16), - '411494b501a98abd8262b0da1351e17899a0c4ef23dd2f96fec5ba847310b20' - ); - deepStrictEqual( - g32.toAffine().y.toString(16), - '7e1b3ebac08924d2c26f409549191fcf94f3bf6f301ed3553e22dfb802f0686' - ); - const minus1 = g1.multiply(starknet.CURVE.n - 1n); - deepStrictEqual( - minus1.toAffine().x.toString(16), - '1ef15c18599971b7beced415a40f0c7deacfd9b0d1819e03d723d8bc943cfca' - ); - deepStrictEqual( - minus1.toAffine().y.toString(16), - '7a997f9f55b68e04841b7fe20b9139d21ac132ee541bc5cd78cfff3c91723e2' - ); - }); - - should('Pedersen', () => { - deepStrictEqual( - starknet.pedersen(2, 3), - '0x5774fa77b3d843ae9167abd61cf80365a9b2b02218fc2f628494b5bdc9b33b8' - ); - deepStrictEqual( - starknet.pedersen(1, 2), - '0x5bb9440e27889a364bcb678b1f679ecd1347acdedcbf36e83494f857cc58026' - ); - deepStrictEqual( - starknet.pedersen(3, 4), - '0x262697b88544f733e5c6907c3e1763131e9f14c51ee7951258abbfb29415fbf' - ); - }); - - should('Hash chain', () => { - deepStrictEqual( - starknet.hashChain([1, 2, 3]), - '0x5d9d62d4040b977c3f8d2389d494e4e89a96a8b45c44b1368f1cc6ec5418915' - ); - }); - - should('Pedersen hash edgecases', () => { - // >>> pedersen_hash(0,0) - const zero = '0x49ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca6804'; - deepStrictEqual(starknet.pedersen(0, 0), zero); - deepStrictEqual(starknet.pedersen(0n, 0n), zero); - deepStrictEqual(starknet.pedersen('0', '0'), zero); - deepStrictEqual(starknet.pedersen('0x0', '0x0'), zero); - // >>> pedersen_hash(3618502788666131213697322783095070105623107215331596699973092056135872020475,3618502788666131213697322783095070105623107215331596699973092056135872020475) - // 3226051580231087455100099637526672350308978851161639703631919449959447036451 - const big = 3618502788666131213697322783095070105623107215331596699973092056135872020475n; - const bigExp = '0x721e167a36655994e88efa865e2ed8a0488d36db4d988fec043cda755728223'; - deepStrictEqual(starknet.pedersen(big, big), bigExp); - // >= FIELD - const big2 = 36185027886661312136973227830950701056231072153315966999730920561358720204751n; - throws(() => starknet.pedersen(big2, big2), 'big2'); - - // FIELD -1 - const big3 = 3618502788666131213697322783095070105623107215331596699973092056135872020480n; - const big3exp = '0x7258fccaf3371fad51b117471d9d888a1786c5694c3e6099160477b593a576e'; - deepStrictEqual(starknet.pedersen(big3, big3), big3exp, 'big3'); - // FIELD - const big4 = 3618502788666131213697322783095070105623107215331596699973092056135872020481n; - throws(() => starknet.pedersen(big4, big4), 'big4'); - throws(() => starknet.pedersen(-1, -1), 'neg'); - throws(() => starknet.pedersen(false, false), 'false'); - throws(() => starknet.pedersen(true, true), 'true'); - throws(() => starknet.pedersen(10.1, 10.1), 'float'); - }); - - should('hashChain edgecases', () => { - deepStrictEqual(starknet.hashChain([32312321312321312312312321n]), '0x1aba6672c014b4838cc201'); - deepStrictEqual( - starknet.hashChain([1n, 2n]), - '0x5bb9440e27889a364bcb678b1f679ecd1347acdedcbf36e83494f857cc58026' - ); - deepStrictEqual( - starknet.hashChain([1, 2]), - '0x5bb9440e27889a364bcb678b1f679ecd1347acdedcbf36e83494f857cc58026' - ); - throws(() => starknet.hashChain([])); - throws(() => starknet.hashChain('123')); - deepStrictEqual( - starknet.hashChain([1, 2]), - '0x5bb9440e27889a364bcb678b1f679ecd1347acdedcbf36e83494f857cc58026' - ); - }); - - should('Pedersen hash, issue #2', () => { - // Verified with starnet.js - deepStrictEqual( - starknet.computeHashOnElements(issue2), - '0x22064462ea33a6ce5272a295e0f551c5da3834f80d8444e7a4df68190b1bc42' - ); - deepStrictEqual( - starknet.computeHashOnElements([]), - '0x49ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca6804' - ); - deepStrictEqual( - starknet.computeHashOnElements([1]), - '0x78d74f61aeaa8286418fd34b3a12a610445eba11d00ecc82ecac2542d55f7a4' - ); - }); - - - should('Seed derivation (example)', () => { - const layer = 'starkex'; - const application = 'starkdeployement'; - const mnemonic = - 'range mountain blast problem vibrant void vivid doctor cluster enough melody ' + - 'salt layer language laptop boat major space monkey unit glimpse pause change vibrant'; - const ethAddress = '0xa4864d977b944315389d1765ffa7e66F74ee8cd7'; - const hdKey = bip32.HDKey.fromMasterSeed(bip39.mnemonicToSeedSync(mnemonic)).derive( - starknet.getAccountPath(layer, application, ethAddress, 0) - ); - deepStrictEqual( - starknet.grindKey(hdKey.privateKey), - '6cf0a8bf113352eb863157a45c5e5567abb34f8d32cddafd2c22aa803f4892c' - ); - }); - - should('Compressed keys', () => { - const G = starknet.ProjectivePoint.BASE; - const half = starknet.CURVE.n / 2n; - const last = starknet.CURVE.n; - const vectors = [ - 1n, - 2n, - 3n, - 4n, - 5n, - half - 5n, - half - 4n, - half - 3n, - half - 2n, - half - 1n, - half, - half + 1n, - half + 2n, - half + 3n, - half + 4n, - half + 5n, - last - 5n, - last - 4n, - last - 3n, - last - 2n, - last - 1n, - ].map((i) => G.multiply(i)); - const fixPoint = (pt) => pt.toAffine(); - for (const v of vectors) { - const uncompressed = v.toHex(); - const compressed = v.toHex(true); - const exp = fixPoint(v); - deepStrictEqual(fixPoint(starknet.ProjectivePoint.fromHex(uncompressed)), exp); - deepStrictEqual(fixPoint(starknet.ProjectivePoint.fromHex(compressed)), exp); - deepStrictEqual(starknet.ProjectivePoint.fromHex(compressed).toHex(), uncompressed); - } - }); -}); -// ESM is broken. -import url from 'url'; -if (import.meta.url === url.pathToFileURL(process.argv[1]).href) { - should.run(); -} diff --git a/test/stark/benchmark/index.js b/test/stark/benchmark/index.js deleted file mode 100644 index 3fce628..0000000 --- a/test/stark/benchmark/index.js +++ /dev/null @@ -1,57 +0,0 @@ -import * as microStark from '../../../stark.js'; -import * as starkwareCrypto from '@starkware-industries/starkware-crypto-utils'; -import * as bench from 'micro-bmark'; -const { run, mark } = bench; // or bench.mark - -const privateKey = '2dccce1da22003777062ee0870e9881b460a8b7eca276870f57c601f182136c'; -const msgHash = 'c465dd6b1bbffdb05442eb17f5ca38ad1aa78a6f56bf4415bdee219114a47'; -const keyPair = starkwareCrypto.default.ec.keyFromPrivate(privateKey, 'hex'); -const publicKeyStark = starkwareCrypto.default.ec.keyFromPublic( - keyPair.getPublic(true, 'hex'), - 'hex' -); -const publicKeyMicro = microStark.getPublicKey(privateKey); - -const FNS = { - pedersenHash: { - samples: 250, - starkware: () => - starkwareCrypto.default.pedersen([ - '3d937c035c878245caf64531a5756109c53068da139362728feb561405371cb', - '208a0a10250e382e1e4bbe2880906c2791bf6275695e02fbbc6aeff9cd8b31a', - ]), - 'micro-starknet': () => - microStark.pedersen( - '3d937c035c878245caf64531a5756109c53068da139362728feb561405371cb', - '208a0a10250e382e1e4bbe2880906c2791bf6275695e02fbbc6aeff9cd8b31a' - ), - }, - signVerify: { - samples: 500, - starkware: () => - starkwareCrypto.default.verify( - publicKeyStark, - msgHash, - starkwareCrypto.default.sign(keyPair, msgHash) - ), - 'micro-starknet': () => - microStark.verify(microStark.sign(msgHash, privateKey), msgHash, publicKeyMicro), - }, -}; - -const main = () => - run(async () => { - for (let [k, libs] of Object.entries(FNS)) { - console.log(`==== ${k} ====`); - for (const [lib, fn] of Object.entries(libs)) { - if (lib === 'samples') continue; - let title = `${k} (${lib})`; - await mark(title, libs.samples, () => fn()); - } - console.log(); - } - // Log current RAM - bench.logMem(); - }); - -main(); diff --git a/test/stark/benchmark/package.json b/test/stark/benchmark/package.json deleted file mode 100644 index 4c8eaf9..0000000 --- a/test/stark/benchmark/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "benchmark", - "private": true, - "version": "0.1.0", - "description": "benchmarks", - "main": "index.js", - "type": "module", - "scripts": { - "bench": "node index.js" - }, - "keywords": [], - "author": "", - "license": "MIT", - "devDependencies": { - "@starkware-industries/starkware-crypto-utils": "^0.0.2", - "micro-bmark": "0.2.0", - "micro-should": "0.2.0" - } -} \ No newline at end of file diff --git a/test/stark/fixtures/issue2.json b/test/stark/fixtures/issue2.json deleted file mode 100644 index b935296..0000000 --- a/test/stark/fixtures/issue2.json +++ /dev/null @@ -1,1306 +0,0 @@ -[ - "0x400380007ffb7ffc", - "0x400380017ffb7ffd", - "0x482680017ffb8000", - "0x3", - "0x480280027ffb8000", - "0x208b7fff7fff7ffe", - "0x20780017fff7ffd", - "0x4", - "0x400780017fff7ffd", - "0x1", - "0x208b7fff7fff7ffe", - "0x480680017fff8000", - "0x3ffffffffffffffffffffffffffffff", - "0x480280017ffc8000", - "0x48307fff80007ffe", - "0x400280027ffc7fff", - "0x480280017ffc8000", - "0x484480017fff8000", - "0x100000000000000000000000000000000", - "0x480280007ffc8000", - "0x40317fff7ffe7ffd", - "0x482680017ffc8000", - "0x3", - "0x208b7fff7fff7ffe", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x484480017fff8000", - "0x2aaaaaaaaaaaab05555555555555556", - "0x48307fff7ffd8000", - "0x480280027ffb8000", - "0x480280037ffb8000", - "0x484480017fff8000", - "0x4000000000000088000000000000001", - "0x48307fff7ffd8000", - "0xa0680017fff8000", - "0xe", - "0x480680017fff8000", - "0x800000000000011000000000000000000000000000000000000000000000000", - "0x48287ffc80007fff", - "0x40307ffc7ff87fff", - "0x48297ffd80007ffc", - "0x482680017ffd8000", - "0x1", - "0x48507fff7ffe8000", - "0x40507ff97ff57fff", - "0x482680017ffb8000", - "0x4", - "0x208b7fff7fff7ffe", - "0xa0680017fff8000", - "0xc", - "0x480680017fff8000", - "0x800000000000011000000000000000000000000000000000000000000000000", - "0x48287ffd80007fff", - "0x48327fff7ffc8000", - "0x40307ffa7ff67fff", - "0x48527ffe7ffc8000", - "0x40507ff97ff57fff", - "0x482680017ffb8000", - "0x4", - "0x208b7fff7fff7ffe", - "0x40317ffd7ff97ffd", - "0x48297ffc80007ffd", - "0x48527fff7ffc8000", - "0x40507ffb7ff77fff", - "0x40780017fff7fff", - "0x2", - "0x482680017ffb8000", - "0x4", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x20680017fff7fff", - "0x10", - "0x480a7ffc7fff8000", - "0x482680017ffd8000", - "0x11000000000000000000000000000000000000000000000101", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc0", - "0x480680017fff8000", - "0x800000000000011000000000000000000000000000000000000000000000000", - "0x48127ffe7fff8000", - "0x48287ffd80007ffe", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffba", - "0x482680017ffd8000", - "0x11000000000000000000000000000000000000000000000101", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x20680017fff7fff", - "0xc", - "0x40780017fff7fff", - "0xa", - "0x480680017fff8000", - "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff", - "0x480a7ffc7fff8000", - "0x48287ffd80007ffe", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffab", - "0x10780017fff7fff", - "0x8", - "0x40780017fff7fff", - "0xb", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa3", - "0x480a7ffd7fff8000", - "0x208b7fff7fff7ffe", - "0x480680017fff8000", - "0x47657443616c6c657241646472657373", - "0x400280007ffd7fff", - "0x482680017ffd8000", - "0x2", - "0x480280017ffd8000", - "0x208b7fff7fff7ffe", - "0x480680017fff8000", - "0x53746f7261676552656164", - "0x400280007ffc7fff", - "0x400380017ffc7ffd", - "0x482680017ffc8000", - "0x3", - "0x480280027ffc8000", - "0x208b7fff7fff7ffe", - "0x480680017fff8000", - "0x53746f726167655772697465", - "0x400280007ffb7fff", - "0x400380017ffb7ffc", - "0x400380027ffb7ffd", - "0x482680017ffb8000", - "0x3", - "0x208b7fff7fff7ffe", - "0xa0680017fff8000", - "0xa", - "0x400380007ffc7ffd", - "0x40780017fff7fff", - "0x14", - "0x482680017ffc8000", - "0x1", - "0x480680017fff8000", - "0x1", - "0x208b7fff7fff7ffe", - "0xa0680017fff8000", - "0xe", - "0x484680017ffd8000", - "0x800000000000011000000000000000000000000000000000000000000000000", - "0x482480017fff8000", - "0x800000000000011000000000000000000000000000000000000000000000000", - "0x400280007ffc7fff", - "0x40780017fff7fff", - "0x11", - "0x482680017ffc8000", - "0x1", - "0x480680017fff8000", - "0x0", - "0x208b7fff7fff7ffe", - "0x480a7ffc7fff8000", - "0x480680017fff8000", - "0x100000000000000000000000000000000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff79", - "0x480680017fff8000", - "0x0", - "0x208b7fff7fff7ffe", - "0x480a7ffb7fff8000", - "0x48297ffc80007ffd", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffde", - "0x208b7fff7fff7ffe", - "0x400380007ffb7ffc", - "0x400380017ffb7ffd", - "0x482680017ffb8000", - "0x2", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x4", - "0x404b800280028002", - "0x404b800380038003", - "0x482a7ffc7ffa8000", - "0x4846800180028000", - "0x100000000000000000000000000000000", - "0x40327fff80007ffe", - "0x482a7ffd7ffb8000", - "0x482880027fff8000", - "0x4846800180038000", - "0x100000000000000000000000000000000", - "0x40327fff80017ffe", - "0x480a7ff97fff8000", - "0x480a80007fff8000", - "0x480a80017fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffec", - "0x480a80007fff8000", - "0x480a80017fff8000", - "0x480a80037fff8000", - "0x208b7fff7fff7ffe", - "0x48297ffd80007ffb", - "0x20680017fff7fff", - "0x9", - "0x480a7ff97fff8000", - "0x482680017ffa8000", - "0x1", - "0x480a7ffc7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffda", - "0x208b7fff7fff7ffe", - "0x480a7ff97fff8000", - "0x482680017ffb8000", - "0x1", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd3", - "0x208b7fff7fff7ffe", - "0x480a7ff97fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x480a7ffa7fff8000", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffeb", - "0x480680017fff8000", - "0x1", - "0x48127ffd7fff8000", - "0x48307ffd80007ffe", - "0x208b7fff7fff7ffe", - "0x480680017fff8000", - "0xffffffffffffffffffffffffffffffff", - "0x480680017fff8000", - "0xffffffffffffffffffffffffffffffff", - "0x480a7ffb7fff8000", - "0x48287ffc80007ffd", - "0x48287ffd80007ffd", - "0x208b7fff7fff7ffe", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff6", - "0x480680017fff8000", - "0x1", - "0x480680017fff8000", - "0x0", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbd", - "0x48127ffc7fff8000", - "0x48127ffc7fff8000", - "0x48127ffc7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ff97fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffef", - "0x48127ffd7fff8000", - "0x480a7ffa7fff8000", - "0x480a7ffb7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffad", - "0x48127ffc7fff8000", - "0x48127ffc7fff8000", - "0x48127ffc7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x480680017fff8000", - "0x3a858959e825b7a94eb8d55c738f59c7bf4685267af5064bed5fd9c6bbc26de", - "0x208b7fff7fff7ffe", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa", - "0x480a7ffb7fff8000", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff61", - "0x48127ffe7fff8000", - "0x48127ff57fff8000", - "0x48127ff57fff8000", - "0x48127ffc7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", - "0x480a7ffa7fff8000", - "0x48127ffe7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff5b", - "0x48127ff67fff8000", - "0x48127ff67fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x480680017fff8000", - "0x232ee97ac3c9a49ad6aa5cea79c5f9de58bee0c617a17a4a39b222e53e87a22", - "0x208b7fff7fff7ffe", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa", - "0x480a7ffb7fff8000", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff43", - "0x48127ffe7fff8000", - "0x48127ff57fff8000", - "0x48127ff57fff8000", - "0x48127ffc7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", - "0x480a7ffa7fff8000", - "0x48127ffe7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff3d", - "0x48127ff67fff8000", - "0x48127ff67fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x480680017fff8000", - "0x29e456771c170dfe110ead5fc64abe927dab18abead94e8bfa5d2d01c40b879", - "0x208b7fff7fff7ffe", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa", - "0x480a7ffb7fff8000", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff25", - "0x48127ffe7fff8000", - "0x48127ff57fff8000", - "0x48127ff57fff8000", - "0x48127ffc7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", - "0x480a7ffa7fff8000", - "0x48127ffe7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff1f", - "0x48127ff67fff8000", - "0x48127ff67fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x480680017fff8000", - "0x1557182e4359a1f0c6301278e8f5b35a776ab58d39892581e357578fb287836", - "0x208b7fff7fff7ffe", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa", - "0x480a7ffb7fff8000", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff07", - "0x48127ffe7fff8000", - "0x482480017ff78000", - "0x1", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff02", - "0x48127ffe7fff8000", - "0x48127fee7fff8000", - "0x48127fee7fff8000", - "0x48127ff57fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffa7fff8000", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe7", - "0x480a7ff97fff8000", - "0x48127ffe7fff8000", - "0x480a7ffc7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffefb", - "0x482480017ff88000", - "0x1", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffef6", - "0x48127ff07fff8000", - "0x48127ff07fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffb7fff8000", - "0x480680017fff8000", - "0x25b1ef8ee6544359221f3cf316f768360e83448109193bdcef77f52a79d95c4", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe71", - "0x480a7ffc7fff8000", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeb2", - "0x48127fe17fff8000", - "0x48127ffd7fff8000", - "0x48127ffd7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff0", - "0x480a7ffa7fff8000", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffed4", - "0x48127ffe7fff8000", - "0x482480017ff78000", - "0x1", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffecf", - "0x48127ffe7fff8000", - "0x48127fee7fff8000", - "0x48127fee7fff8000", - "0x48127ff57fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ff97fff8000", - "0x480a7ffa7fff8000", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffdc", - "0x480a7ff87fff8000", - "0x48127ffe7fff8000", - "0x480a7ffc7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffec7", - "0x482480017ff88000", - "0x1", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffec2", - "0x48127ff07fff8000", - "0x48127ff07fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffa7fff8000", - "0x480680017fff8000", - "0xbf4c436d6f8521e5c6189511c75075de702ad597ce22c1786275e8e5167ec7", - "0x480a7ffc7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe3d", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe3a", - "0x480a7ffb7fff8000", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe7b", - "0x48127fe17fff8000", - "0x48127ffd7fff8000", - "0x48127ffd7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffa7fff8000", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffec", - "0x480a7ff97fff8000", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe9c", - "0x48127ffe7fff8000", - "0x482480017ff78000", - "0x1", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe97", - "0x48127ffe7fff8000", - "0x48127fee7fff8000", - "0x48127fee7fff8000", - "0x48127ff57fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ff87fff8000", - "0x480a7ff97fff8000", - "0x480a7ffa7fff8000", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd7", - "0x480a7ff77fff8000", - "0x48127ffe7fff8000", - "0x480a7ffc7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe8e", - "0x482480017ff88000", - "0x1", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe89", - "0x48127ff07fff8000", - "0x48127ff07fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ff87fff8000", - "0x480a7ff97fff8000", - "0x480a7ffa7fff8000", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff1f", - "0x480a7ffc7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff3a", - "0x480680017fff8000", - "0x12", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff54", - "0x480a7ffd7fff8000", - "0x480680017fff8000", - "0x3e8", - "0x480680017fff8000", - "0x0", - "0x1104800180018000", - "0x252", - "0x208b7fff7fff7ffe", - "0x482680017ffd8000", - "0x3", - "0x402a7ffd7ffc7fff", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x480280007ffd8000", - "0x480280017ffd8000", - "0x480280027ffd8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe3", - "0x40780017fff7fff", - "0x1", - "0x48127ffc7fff8000", - "0x48127ffc7fff8000", - "0x48127ffc7fff8000", - "0x480680017fff8000", - "0x0", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeea", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x4003800080007ffc", - "0x4826800180008000", - "0x1", - "0x480a7ffd7fff8000", - "0x4828800080007ffe", - "0x480a80007fff8000", - "0x208b7fff7fff7ffe", - "0x402b7ffd7ffc7ffd", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff1", - "0x48127ff47fff8000", - "0x48127ff47fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeea", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x4003800080007ffc", - "0x4826800180008000", - "0x1", - "0x480a7ffd7fff8000", - "0x4828800080007ffe", - "0x480a80007fff8000", - "0x208b7fff7fff7ffe", - "0x402b7ffd7ffc7ffd", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff1", - "0x48127ff47fff8000", - "0x48127ff47fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff08", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x4003800080007ffb", - "0x4003800180007ffc", - "0x4826800180008000", - "0x2", - "0x480a7ffd7fff8000", - "0x4828800080007ffe", - "0x480a80007fff8000", - "0x208b7fff7fff7ffe", - "0x402b7ffd7ffc7ffd", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", - "0x48127ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff0", - "0x48127ff37fff8000", - "0x48127ff37fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffecb", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x4003800080007ffc", - "0x4826800180008000", - "0x1", - "0x480a7ffd7fff8000", - "0x4828800080007ffe", - "0x480a80007fff8000", - "0x208b7fff7fff7ffe", - "0x402b7ffd7ffc7ffd", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff1", - "0x48127ff47fff8000", - "0x48127ff47fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ffa7fff8000", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffefc", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x4003800080007ffb", - "0x4003800180007ffc", - "0x4826800180008000", - "0x2", - "0x480a7ffd7fff8000", - "0x4828800080007ffe", - "0x480a80007fff8000", - "0x208b7fff7fff7ffe", - "0x482680017ffd8000", - "0x1", - "0x402a7ffd7ffc7fff", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x480280007ffd8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe9", - "0x48127ffd7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", - "0x48127ff37fff8000", - "0x48127ff37fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ff97fff8000", - "0x480a7ffa7fff8000", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff0f", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x4003800080007ffb", - "0x4003800180007ffc", - "0x4826800180008000", - "0x2", - "0x480a7ffd7fff8000", - "0x4828800080007ffe", - "0x480a80007fff8000", - "0x208b7fff7fff7ffe", - "0x482680017ffd8000", - "0x2", - "0x402a7ffd7ffc7fff", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x480280007ffd8000", - "0x480280017ffd8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe7", - "0x48127ffd7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffec", - "0x48127ff37fff8000", - "0x48127ff37fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ff87fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd8a", - "0x48127ffe7fff8000", - "0x480a7ff97fff8000", - "0x480a7ffa7fff8000", - "0x48127ffc7fff8000", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x1a3", - "0x480680017fff8000", - "0x1", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x4003800080007ffc", - "0x4826800180008000", - "0x1", - "0x480a7ffd7fff8000", - "0x4828800080007ffe", - "0x480a80007fff8000", - "0x208b7fff7fff7ffe", - "0x482680017ffd8000", - "0x3", - "0x402a7ffd7ffc7fff", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x480280007ffd8000", - "0x480280017ffd8000", - "0x480280027ffd8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe0", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffec", - "0x48127ff47fff8000", - "0x48127ff47fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x3", - "0x480a7ff77fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd5c", - "0x40137fff7fff8000", - "0x48127ffe7fff8000", - "0x480a7ff87fff8000", - "0x480a7ff97fff8000", - "0x480a7ffa7fff8000", - "0x480a80007fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeb8", - "0x40137ffe7fff8001", - "0x40137fff7fff8002", - "0x48127ffd7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x480a80017fff8000", - "0x480a80027fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdb4", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffce2", - "0x48127fc77fff8000", - "0x48127fc77fff8000", - "0x48127ffa7fff8000", - "0x480a7ffa7fff8000", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x162", - "0x480a80017fff8000", - "0x480a80027fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdc6", - "0x48127fb37fff8000", - "0x48127fb37fff8000", - "0x48127ffb7fff8000", - "0x480a7ffa7fff8000", - "0x480a80007fff8000", - "0x48127ff97fff8000", - "0x48127ff97fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeaa", - "0x480680017fff8000", - "0x1", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x4003800080007ffc", - "0x4826800180008000", - "0x1", - "0x480a7ffd7fff8000", - "0x4828800080007ffe", - "0x480a80007fff8000", - "0x208b7fff7fff7ffe", - "0x482680017ffd8000", - "0x4", - "0x402a7ffd7ffc7fff", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x480280007ffd8000", - "0x480280017ffd8000", - "0x480280027ffd8000", - "0x480280037ffd8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbb", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffeb", - "0x48127ff47fff8000", - "0x48127ff47fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ff87fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd0d", - "0x48127ffe7fff8000", - "0x480a7ff97fff8000", - "0x480a7ffa7fff8000", - "0x48127ffc7fff8000", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x163", - "0x480680017fff8000", - "0x1", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x4003800080007ffc", - "0x4826800180008000", - "0x1", - "0x480a7ffd7fff8000", - "0x4828800080007ffe", - "0x480a80007fff8000", - "0x208b7fff7fff7ffe", - "0x482680017ffd8000", - "0x3", - "0x402a7ffd7ffc7fff", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x480280007ffd8000", - "0x480280017ffd8000", - "0x480280027ffd8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe0", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffec", - "0x48127ff47fff8000", - "0x48127ff47fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x5", - "0x480a7ffa7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd1a", - "0x480a7ff87fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcda", - "0x40137fff7fff8000", - "0x48127ffe7fff8000", - "0x480a7ff97fff8000", - "0x48127ff77fff8000", - "0x480a80007fff8000", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe36", - "0x40137ffe7fff8001", - "0x40137fff7fff8002", - "0x48127ffd7fff8000", - "0x480a80017fff8000", - "0x480a80027fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd0b", - "0x40137ffd7fff8003", - "0x40137ffe7fff8004", - "0x400680017fff7fff", - "0x0", - "0x48127fe27fff8000", - "0x48127fe27fff8000", - "0x48127ffa7fff8000", - "0x480a80007fff8000", - "0x480a7ffb7fff8000", - "0x480a80037fff8000", - "0x480a80047fff8000", - "0x1104800180018000", - "0x11b", - "0x480680017fff8000", - "0x1", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x4003800080007ffc", - "0x4826800180008000", - "0x1", - "0x480a7ffd7fff8000", - "0x4828800080007ffe", - "0x480a80007fff8000", - "0x208b7fff7fff7ffe", - "0x482680017ffd8000", - "0x3", - "0x402a7ffd7ffc7fff", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x480280007ffd8000", - "0x480280017ffd8000", - "0x480280027ffd8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc4", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffec", - "0x48127ff47fff8000", - "0x48127ff47fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x5", - "0x480a7ffa7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcd2", - "0x480a7ff87fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc92", - "0x40137fff7fff8000", - "0x48127ffe7fff8000", - "0x480a7ff97fff8000", - "0x48127ff77fff8000", - "0x480a80007fff8000", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdee", - "0x40137ffe7fff8001", - "0x40137fff7fff8002", - "0x48127ffd7fff8000", - "0x480a80017fff8000", - "0x480a80027fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd0d", - "0x40137ffe7fff8003", - "0x40137fff7fff8004", - "0x48127ffd7fff8000", - "0x480a80037fff8000", - "0x480a80047fff8000", - "0x480a80017fff8000", - "0x480a80027fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcd0", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc0f", - "0x48127f867fff8000", - "0x48127f867fff8000", - "0x48127ffa7fff8000", - "0x480a80007fff8000", - "0x480a7ffb7fff8000", - "0x480a80037fff8000", - "0x480a80047fff8000", - "0x1104800180018000", - "0xcc", - "0x480680017fff8000", - "0x1", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x4003800080007ffc", - "0x4826800180008000", - "0x1", - "0x480a7ffd7fff8000", - "0x4828800080007ffe", - "0x480a80007fff8000", - "0x208b7fff7fff7ffe", - "0x482680017ffd8000", - "0x3", - "0x402a7ffd7ffc7fff", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x480280007ffd8000", - "0x480280017ffd8000", - "0x480280027ffd8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbd", - "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffec", - "0x48127ff47fff8000", - "0x48127ff47fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ff87fff8000", - "0x480a7ff97fff8000", - "0x480a7ffa7fff8000", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x34", - "0x208b7fff7fff7ffe", - "0x482680017ffd8000", - "0x3", - "0x402a7ffd7ffc7fff", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x480280007ffd8000", - "0x480280017ffd8000", - "0x480280027ffd8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffef", - "0x40780017fff7fff", - "0x1", - "0x48127ffc7fff8000", - "0x48127ffc7fff8000", - "0x48127ffc7fff8000", - "0x480680017fff8000", - "0x0", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x480a7ff87fff8000", - "0x480a7ff97fff8000", - "0x480a7ffa7fff8000", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x9c", - "0x208b7fff7fff7ffe", - "0x482680017ffd8000", - "0x3", - "0x402a7ffd7ffc7fff", - "0x480280007ffb8000", - "0x480280017ffb8000", - "0x480280027ffb8000", - "0x480280007ffd8000", - "0x480280017ffd8000", - "0x480280027ffd8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffef", - "0x40780017fff7fff", - "0x1", - "0x48127ffc7fff8000", - "0x48127ffc7fff8000", - "0x48127ffc7fff8000", - "0x480680017fff8000", - "0x0", - "0x48127ffb7fff8000", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x4", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffba7", - "0x480a7ffa7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc46", - "0x480a7ff87fff8000", - "0x480a7ff97fff8000", - "0x48127ffd7fff8000", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd30", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc41", - "0x48127fe57fff8000", - "0x48127fe57fff8000", - "0x48127ffa7fff8000", - "0x480a7ffb7fff8000", - "0x48127ff97fff8000", - "0x48127ff97fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd38", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcf0", - "0x40137ffe7fff8000", - "0x40137fff7fff8001", - "0x48127ffd7fff8000", - "0x480a80007fff8000", - "0x480a80017fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc2e", - "0x40137ffd7fff8002", - "0x40137ffe7fff8003", - "0x400680017fff7fff", - "0x0", - "0x48127fe27fff8000", - "0x48127fe27fff8000", - "0x48127ffa7fff8000", - "0x480a80027fff8000", - "0x480a80037fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcef", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x2", - "0x480a7ffa7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb74", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb71", - "0x480a7ff97fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc10", - "0x480a7ff77fff8000", - "0x480a7ff87fff8000", - "0x48127ffd7fff8000", - "0x480a7ffa7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcfa", - "0x40137ffe7fff8000", - "0x40137fff7fff8001", - "0x48127ffd7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x480a80007fff8000", - "0x480a80017fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc2d", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb5b", - "0x48127ffc7fff8000", - "0x480a80007fff8000", - "0x480a80017fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc47", - "0x48127f7c7fff8000", - "0x48127f7c7fff8000", - "0x48127ffb7fff8000", - "0x480a7ffa7fff8000", - "0x48127ffa7fff8000", - "0x48127ffa7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcf4", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcdd", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbee", - "0x48127fe57fff8000", - "0x48127fe57fff8000", - "0x48127ffa7fff8000", - "0x480a7ffb7fff8000", - "0x48127ff97fff8000", - "0x48127ff97fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffce5", - "0x208b7fff7fff7ffe", - "0x480a7ffa7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb39", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb36", - "0x480a7ff97fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbd5", - "0x480a7ff77fff8000", - "0x480a7ff87fff8000", - "0x48127ffd7fff8000", - "0x480a7ffa7fff8000", - "0x480a7ffb7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd08", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x0", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb22", - "0x480a7ffa7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbc1", - "0x480a7ff87fff8000", - "0x480a7ff97fff8000", - "0x48127ffd7fff8000", - "0x480a7ffb7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcab", - "0x48127ffd7fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbe0", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb0e", - "0x48127ffc7fff8000", - "0x48127fc97fff8000", - "0x48127fc97fff8000", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbfa", - "0x48127f7c7fff8000", - "0x48127f7c7fff8000", - "0x48127ffb7fff8000", - "0x480a7ffb7fff8000", - "0x48127ffa7fff8000", - "0x48127ffa7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffca7", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc5f", - "0x480a7ffc7fff8000", - "0x480a7ffd7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbec", - "0x48127fb37fff8000", - "0x48127fb37fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x48127ffb7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc67", - "0x208b7fff7fff7ffe" -] \ No newline at end of file diff --git a/test/stark/fixtures/keys_precomputed.json b/test/stark/fixtures/keys_precomputed.json deleted file mode 100644 index 8246ad5..0000000 --- a/test/stark/fixtures/keys_precomputed.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "0x1": "0x1ef15c18599971b7beced415a40f0c7deacfd9b0d1819e03d723d8bc943cfca", - "0x2": "0x759ca09377679ecd535a81e83039658bf40959283187c654c5416f439403cf5", - "0x3": "0x411494b501a98abd8262b0da1351e17899a0c4ef23dd2f96fec5ba847310b20", - "0x4": "0xa7da05a4d664859ccd6e567b935cdfbfe3018c7771cb980892ef38878ae9bc", - "0x5": "0x788435d61046d3eec54d77d25bd194525f4fa26ebe6575536bc6f656656b74c", - "0x6": "0x1efc3d7c9649900fcbd03f578a8248d095bc4b6a13b3c25f9886ef971ff96fa", - "0x7": "0x743829e0a179f8afe223fc8112dfc8d024ab6b235fd42283c4f5970259ce7b7", - "0x8": "0x6eeee2b0c71d681692559735e08a2c3ba04e7347c0c18d4d49b83bb89771591", - "0x9": "0x216b4f076ff47e03a05032d1c6ee17933d8de8b2b4c43eb5ad5a7e1b25d3849", - "0x800000000000000000000000000000000000000000000000000000000000000": "0x5c79074e7f7b834c12c81a9bb0d46691a5e7517767a849d9d98cb84e2176ed2", - "0x800000000000000000000000000000000000000000000000000000000000001": "0x1c4f24e3bd16db0e2457bc005a9d61965105a535554c6b338871e34cb8e2d3a", - "0x800000000000000000000000000000000000000000000000000000000000002": "0xdfbb89b39288a9ddacf3942b4481b04d4fa2f8ed3c424757981cc6357f27ac", - "0x800000000000000000000000000000000000000000000000000000000000003": "0x41bef28265fd750b102f4f2d1e0231de7f4a33900a214f191a63d4fec4e72f4", - "0x800000000000000000000000000000000000000000000000000000000000004": "0x24de66eb164797d4b414e81ded0cfa1a592ef0a9363ebbcb440d4d03cb18af1", - "0x800000000000000000000000000000000000000000000000000000000000005": "0x5efb18c3bc9b69003746acc85fb6ee0cfbdc6adfb982f089cc63e1e5495daad", - "0x800000000000000000000000000000000000000000000000000000000000006": "0x10dc71f00918a8ebfe4085c834d41dd22b251b9f81eef8b9a4fab77e7e1afe9", - "0x800000000000000000000000000000000000000000000000000000000000007": "0x4267ebfd379b1c8caae73febc5920b0c95bd6f9f3536f47c5ddad1259c332ff", - "0x800000000000000000000000000000000000000000000000000000000000008": "0x6da515118c8e01fd5b2e96b814ee95bad7d60be4d2ba6b47e0d283f579d9671", - "0x800000000000000000000000000000000000000000000000000000000000009": "0x7a5b4797f4e56ed1473876bc2693fbe3f2fef7e050717cbae924ff23d426052", - "0x2e9c99d8382fa004dcbbee720aef8a97002de0e991f6a8344e6dc636a71b59e": "0x1ff6803ae740e7e596504ac5c6afbea472e53679361e214f12be0155b13e25d", - "0x8620458785138df8722214e073a91b8f55076ea78197cf41007692dd27fd90": "0x5967da40b90d7ca1e36dc4024381d7d4b403c6ac1a0ab358b0743984934a805", - "0x1b920e7dfb49ba5ada673882af5342e7448d3e9335e0ac37feb6280cd7289ce": "0x78c7ab46333968fbde3201cf512c1eeb5529360259072c459a158dee4449b57", - "0x704170dbfd5dc63caef69d2ce6dfc2b2dbb2af6e75851242bbe79fb6e62a118": "0x534bd8d6ebe4bb2f6992e2d7c19ef3146247e10c2849f357e44eddd283b2af6", - "0x4b58bf4228f39550eca59b5c96a0cb606036cc9495eef9a546f24f01b1b7829": "0x1097a8c5a46d94596f1c8e70ca66941f2bb11e3c8d4fd58fdc4589f09965be8", - "0x2e93226c90fb7a2381a24e940a94b98433e3553dcbf745d3f54d62963c75604": "0x369f0e8c8e984f244290267393a004dba435a4df091767ad5063fece7b1884c", - "0x4615f94598cd756ad1a551d7e57fd725916adfd0054eb773ceb482eef87d0b2": "0x1ee5b8d612102a2408cde59ce52a6498d2e38fe8789bb26d400dea310684ec9", - "0x6ade54b7debd7ca1d4e8e932f9545f8fa4024d73be1efcc86df86367fc333f8": "0x37de3bf52412b2fb9b0030d232ca9dd921cd8f71fd67975cdc62546826e121", - "0x618e7467dd24c2a3449c4df640439c12cdd0f8ea779afcee6e252b2cf494354": "0x71c2b578c432f2d305d3808bb645ecc46dd670cb43d4f4a076f75ccbff74fbc", - "0x7eae185e1f41ec76d214d763f0592f194933622a9dd5f3d52d0209f71619c1a": "0x2b0160052e70176e5b0ff2a6eff90896ae07b732fc27219e36e077735abd57e", - "0x178047D3869489C055D7EA54C014FFB834A069C9595186ABE04EA4D1223A03F": "0x1895a6a77ae14e7987b9cb51329a5adfb17bd8e7c638f92d6892d76e51cebcf" -} \ No newline at end of file diff --git a/test/stark/fixtures/rfc6979_signature_test_vector.json b/test/stark/fixtures/rfc6979_signature_test_vector.json deleted file mode 100644 index 316026a..0000000 --- a/test/stark/fixtures/rfc6979_signature_test_vector.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "private_key": "0x3c1e9550e66958296d11b60f8e8e7a7ad990d07fa65d5f7652c4a6c87d4e3cc", - "messages": [ - { - "hash": "0x1", - "r": "3162358736122783857144396205516927012128897537504463716197279730251407200037", - "s": "1447067116407676619871126378936374427636662490882969509559888874644844560850" - }, - { - "hash": "0x11", - "r": "2282960348362869237018441985726545922711140064809058182483721438101695251648", - "s": "2905868291002627709651322791912000820756370440695830310841564989426104902684" - }, - - { - "hash": "0x223", - "r": "2851492577225522862152785068304516872062840835882746625971400995051610132955", - "s": "2227464623243182122770469099770977514100002325017609907274766387592987135410" - }, - - { - "hash": "0x9999", - "r": "3551214266795401081823453828727326248401688527835302880992409448142527576296", - "s": "2580950807716503852408066180369610390914312729170066679103651110985466032285" - }, - - { - "hash": "0x387e76d1667c4454bfb835144120583af836f8e32a516765497d23eabe16b3f", - "r": "3518448914047769356425227827389998721396724764083236823647519654917215164512", - "s": "3042321032945513635364267149196358883053166552342928199041742035443537684462" - }, - - { - "hash": "0x3a7e76d1697c4455bfb835144120283af236f8e32a516765497d23eabe16b2", - "r": "2261926635950780594216378185339927576862772034098248230433352748057295357217", - "s": "2708700003762962638306717009307430364534544393269844487939098184375356178572" - }, - - { - "hash": "0xfa5f0cd1ebff93c9e6474379a213ba111f9e42f2f1cb361b0327e0737203", - "r": "3016953906936760149710218073693613509330129567629289734816320774638425763370", - "s": "306146275372136078470081798635201810092238376869367156373203048583896337506" - }, - - { - "hash": "0x4c1e9550e66958296d11b60f8e8e7f7ae99dd0cfa6bd5fa652c1a6c87d4e2cc", - "r": "3562728603055564208884290243634917206833465920158600288670177317979301056463", - "s": "1958799632261808501999574190111106370256896588537275453140683641951899459876" - }, - - { - "hash": "0x6362b40c218fb4c8a8bd42ca482145e8513b78e00faa0de76a98ba14fc37ae8", - "r": "3485557127492692423490706790022678621438670833185864153640824729109010175518", - "s": "897592218067946175671768586886915961592526001156186496738437723857225288280" - } - ] -} diff --git a/test/stark/index.test.js b/test/stark/index.test.js deleted file mode 100644 index 4fe703d..0000000 --- a/test/stark/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -import { describe, should } from 'micro-should'; -import './basic.test.js'; -import './stark.test.js'; -import './property.test.js'; -import './poseidon.test.js'; - -// ESM is broken. -import url from 'url'; -if (import.meta.url === url.pathToFileURL(process.argv[1]).href) { - should.run(); -} diff --git a/test/stark/poseidon.test.js b/test/stark/poseidon.test.js deleted file mode 100644 index 62bd928..0000000 --- a/test/stark/poseidon.test.js +++ /dev/null @@ -1,205 +0,0 @@ -import { deepStrictEqual, throws } from 'assert'; -import { describe, should } from 'micro-should'; -import * as starknet from '../../stark.js'; -import { bytesToHex as hex } from '@noble/hashes/utils'; -import * as fs from 'fs'; - -function parseTest(path) { - let data = fs.readFileSync(path, 'ascii'); - // Remove whitespaces - data = data.replace(/[ |\t]/g, ''); - const pattern = - 'Rate=(\\d+)\n' + - 'Capacity=(\\d+)\n' + - 'FullRounds=(\\d+)\n' + - 'PartialRounds=(\\d+)\n' + - 'MDS=\\[(.+)\\]\n' + - 'RoundKeys=\\(?\n?\\[\n?(.+)\n?\\]\n?\\)?'; - const r = data.match(new RegExp(pattern, 'ms')); - - function parseArray(s) { - // Remove new lines - s = s.replace(/\n/gms, ''); - return s.match(/(\[.+?\])/g).map((i) => - i - .replace(/^\[(.+)\]$/, '$1') - .split(',') - .filter((i) => !!i) - ); - } - const res = { - rate: +r[1], - capacity: +r[2], - roundsFull: +r[3], - roundsPartial: +r[4], - MDS: parseArray(r[5]).map((i) => i.map((j) => BigInt(j))), - roundConstants: parseArray(r[6]).map((i) => i.map((j) => BigInt(j))), - }; - return res; -} - -function mapPoseidon(parsed) { - return starknet.poseidonBasic( - { - Fp: starknet.Fp251, - rate: parsed.rate, - capacity: parsed.capacity, - roundsFull: parsed.roundsFull, - roundsPartial: parsed.roundsPartial, - }, - parsed.MDS - ); -} - -const parsed = { - poseidon3: parseTest('./test/stark/poseidon/poseidon3.txt'), - poseidon4: parseTest('./test/stark/poseidon/poseidon4.txt'), - poseidon5: parseTest('./test/stark/poseidon/poseidon5.txt'), - poseidon9: parseTest('./test/stark/poseidon/poseidon9.txt'), -}; - -function poseidonTest(name, parsed) { - should(`${name}`, () => { - const fn = mapPoseidon(parsed); - deepStrictEqual(fn.roundConstants, parsed.roundConstants); - }); -} - -describe('poseidon txt vectors', () => { - poseidonTest('poseidon3', parsed.poseidon3); - poseidonTest('poseidon4', parsed.poseidon4); - poseidonTest('poseidon5', parsed.poseidon5); - poseidonTest('poseidon9', parsed.poseidon9); -}); - -should('Poseidon examples', () => { - const p3 = mapPoseidon(parsed.poseidon3); - deepStrictEqual(p3([0n, 0n, 0n]), [ - 3446325744004048536138401612021367625846492093718951375866996507163446763827n, - 1590252087433376791875644726012779423683501236913937337746052470473806035332n, - 867921192302518434283879514999422690776342565400001269945778456016268852423n, - ]); - const p4 = mapPoseidon(parsed.poseidon4); - deepStrictEqual(p4([0n, 0n, 0n, 0n]), [ - 535071095200566880914603862188010633478042591441142518549720701573192347548n, - 3567335813488551850156302853280844225974867890860330236555401145692518003968n, - 229995103310401763929738317978722680640995513996113588430855556460153357543n, - 3513983790849716360905369754287999509206472929684378838050290392634812839312n, - ]); - const p5 = mapPoseidon(parsed.poseidon5); - deepStrictEqual(p5([0n, 0n, 0n, 0n, 0n]), [ - 2337689130971531876049206831496963607805116499042700598724344149414565980684n, - 3230969295497815870174763682436655274044379544854667759151474216427142025631n, - 3297330512217530111610698859408044542971696143761201570393504997742535648562n, - 2585480844700786541432072704002477919020588246983274666988914431019064343941n, - 3595308260654382824623573767385493361624474708214823462901432822513585995028n, - ]); - const p9 = mapPoseidon(parsed.poseidon9); - deepStrictEqual(p9([0n, 0n, 0n, 0n, 0n, 0n, 0n, 0n, 0n]), [ - 1534116856660032929112709488204491699743182428465681149262739677337223235050n, - 1710856073207389764546990138116985223517553616229641666885337928044617114700n, - 3165864635055638516987240200217592641540231237468651257819894959934472989427n, - 1003007637710164252047715558598366312649052908276423203724288341354608811559n, - 68117303579957054409211824649914588822081700129416361923518488718489651489n, - 1123395637839379807713801282868237406546107732595903195840754789810160564711n, - 478590974834311070537087181212389392308746075734019180430422247431982932503n, - 835322726024358888065061514739954009068852229059154336727219387089732433787n, - 3129703030204995742174502162918848446737407262178341733578946634564864233056n, - ]); -}); - -should('Poseidon 2', () => { - // Cross-test with cairo-lang 0.11 - deepStrictEqual( - starknet.poseidonHash(1n, 1n), - 315729444126170353286530004158376771769107830460625027134495740547491428733n - ); - deepStrictEqual( - starknet.poseidonHash(123n, 123n), - 3149184350054566761517315875549307360045573205732410509163060794402900549639n - ); - deepStrictEqual( - starknet.poseidonHash(1231231231231231231231231312312n, 1231231231231231231231231312312n), - 2544250291965936388474000136445328679708604225006461780180655815882994563864n - ); - // poseidonHashSingle - deepStrictEqual( - starknet.poseidonHashSingle(1n), - 3085182978037364507644541379307921604860861694664657935759708330416374536741n - ); - deepStrictEqual( - starknet.poseidonHashSingle(123n), - 2751345659320901472675327541550911744303539407817894466726181731796247467344n - ); - deepStrictEqual( - starknet.poseidonHashSingle(1231231231231231231231231312312n), - 3083085683696942145160394401206391098729120397175152900096470498748103599322n - ); - // poseidonHashMany - throws(() => starknet.poseidonHash(new Uint8Array([1, 2, 3]))); - deepStrictEqual( - starknet.poseidonHashMany([1n]), - 154809849725474173771833689306955346864791482278938452209165301614543497938n - ); - deepStrictEqual( - starknet.poseidonHashMany([1n, 2n]), - 1557996165160500454210437319447297236715335099509187222888255133199463084263n - ); - deepStrictEqual( - starknet.poseidonHashMany([1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n]), - 976552833909388839716191681593200982850734838655927116322079791360264131378n - ); - deepStrictEqual( - starknet.poseidonHashMany([1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n, 1n, 2n, 3n, 4n, 5n, 6n, 7n]), - 1426681430756292883765769449684978541173830451959857824597431064948702170774n - ); - deepStrictEqual( - starknet.poseidonHashMany([1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n, 1n, 2n, 3n, 4n, 5n, 6n]), - 3578895185591466904832617962452140411216018208734547126302182794057260630783n - ); - deepStrictEqual( - starknet.poseidonHashMany([1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n, 1n, 2n, 3n, 4n, 5n]), - 2047942584693618630610564708884241243670450597197937863619828684896211911953n - ); - deepStrictEqual( - starknet.poseidonHashMany([1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n, 1n, 2n, 3n, 4n]), - 717812721730784692894550948559585317289413466140233907962980309405694367376n - ); - deepStrictEqual( - starknet.poseidonHashMany([1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n, 1n, 2n, 3n]), - 2926122208425648133778911655767364584769133265503722614793281770361723147648n - ); - deepStrictEqual( - starknet.poseidonHashMany([ - 154809849725474173771833689306955346864791482278938452209165301614543497938n, - 1557996165160500454210437319447297236715335099509187222888255133199463084263n, - 976552833909388839716191681593200982850734838655927116322079791360264131378n, - 1426681430756292883765769449684978541173830451959857824597431064948702170774n, - 3578895185591466904832617962452140411216018208734547126302182794057260630783n, - ]), - 1019392520709073131437410341528874594624843119359955302374885123884546721410n - ); - // poseidon_hash_func - deepStrictEqual( - hex(starknet.poseidonHashFunc(new Uint8Array([1, 2]), new Uint8Array([3, 4]))), - '01f87cbb9c58139605384d0f0df49b446600af020aa9dac92301d45c96d78c0a' - ); - deepStrictEqual( - hex(starknet.poseidonHashFunc(new Uint8Array(32).fill(255), new Uint8Array(32).fill(255))), - '05fd546b5ee3bcbbcbb733ed90bfc33033169d6765ac37bba71794a11cbb51a6' - ); - deepStrictEqual( - hex(starknet.poseidonHashFunc(new Uint8Array(64).fill(255), new Uint8Array(64).fill(255))), - '07dba6b4d94b3e32697afe0825d6dac2dccafd439f7806a9575693c93735596b' - ); - deepStrictEqual( - hex(starknet.poseidonHashFunc(new Uint8Array(256).fill(255), new Uint8Array(256).fill(255))), - '02f048581901865201dad701a5653d946b961748ec770fc11139aa7c06a9432a' - ); -}); - -// ESM is broken. -import url from 'url'; -if (import.meta.url === url.pathToFileURL(process.argv[1]).href) { - should.run(); -} diff --git a/test/stark/poseidon/LICENSE b/test/stark/poseidon/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/test/stark/poseidon/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/test/stark/poseidon/README.md b/test/stark/poseidon/README.md deleted file mode 100644 index c65ce05..0000000 --- a/test/stark/poseidon/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# StarkWare's Poseidon Hash - -[Poseidon](https://www.poseidon-hash.info/) is a family of hash functions designed for being very efficient as algebraic circuits. -As such, they may be very useful in ZK proving systems such as STARKs and others. - -This repository provides the official parameters of StarkWare's Poseidon hash implementations. - -All the instances are over the prime field: -p = 2^251 + 17 * 2^192 + 1 = 3618502788666131213697322783095070105623107215331596699973092056135872020481 - -A few examples hash results with the different parameters: - -``` -Poseidon3([0,0,0]) = [3446325744004048536138401612021367625846492093718951375866996507163446763827, - 1590252087433376791875644726012779423683501236913937337746052470473806035332, - 867921192302518434283879514999422690776342565400001269945778456016268852423] -Poseidon4([0,0,0,0]) = [535071095200566880914603862188010633478042591441142518549720701573192347548, - 3567335813488551850156302853280844225974867890860330236555401145692518003968, - 229995103310401763929738317978722680640995513996113588430855556460153357543, - 3513983790849716360905369754287999509206472929684378838050290392634812839312] -Poseidon5([0,0,0,0,0]) = [2337689130971531876049206831496963607805116499042700598724344149414565980684, - 3230969295497815870174763682436655274044379544854667759151474216427142025631, - 3297330512217530111610698859408044542971696143761201570393504997742535648562, - 2585480844700786541432072704002477919020588246983274666988914431019064343941, - 3595308260654382824623573767385493361624474708214823462901432822513585995028] -Poseidon9([0,0,0,0,0,0,0,0,0]) = [1534116856660032929112709488204491699743182428465681149262739677337223235050, - 1710856073207389764546990138116985223517553616229641666885337928044617114700, - 3165864635055638516987240200217592641540231237468651257819894959934472989427, - 1003007637710164252047715558598366312649052908276423203724288341354608811559, - 68117303579957054409211824649914588822081700129416361923518488718489651489, - 1123395637839379807713801282868237406546107732595903195840754789810160564711, - 478590974834311070537087181212389392308746075734019180430422247431982932503, - 835322726024358888065061514739954009068852229059154336727219387089732433787, - 3129703030204995742174502162918848446737407262178341733578946634564864233056] -``` \ No newline at end of file diff --git a/test/stark/poseidon/poseidon3.txt b/test/stark/poseidon/poseidon3.txt deleted file mode 100644 index 734a87b..0000000 --- a/test/stark/poseidon/poseidon3.txt +++ /dev/null @@ -1,462 +0,0 @@ -Rate = 2 -Capacity = 1 -FullRounds = 8 -PartialRounds = 83 -MDS = [[3, 1, 1], [1, -1, 1], [1, 1, -2]] -RoundKeys = [ - [ - 2950795762459345168613727575620414179244544320470208355568817838579231751791, - 1587446564224215276866294500450702039420286416111469274423465069420553242820, - 1645965921169490687904413452218868659025437693527479459426157555728339600137, - ], - [ - 2782373324549879794752287702905278018819686065818504085638398966973694145741, - 3409172630025222641379726933524480516420204828329395644967085131392375707302, - 2379053116496905638239090788901387719228422033660130943198035907032739387135, - ], - [ - 2570819397480941104144008784293466051718826502582588529995520356691856497111, - 3546220846133880637977653625763703334841539452343273304410918449202580719746, - 2720682389492889709700489490056111332164748138023159726590726667539759963454, - ], - [ - 1899653471897224903834726250400246354200311275092866725547887381599836519005, - 2369443697923857319844855392163763375394720104106200469525915896159690979559, - 2354174693689535854311272135513626412848402744119855553970180659094265527996, - ], - [ - 2404084503073127963385083467393598147276436640877011103379112521338973185443, - 950320777137731763811524327595514151340412860090489448295239456547370725376, - 2121140748740143694053732746913428481442990369183417228688865837805149503386, - ], - [ - 2372065044800422557577242066480215868569521938346032514014152523102053709709, - 2618497439310693947058545060953893433487994458443568169824149550389484489896, - 3518297267402065742048564133910509847197496119850246255805075095266319996916, - ], - [ - 340529752683340505065238931581518232901634742162506851191464448040657139775, - 1954876811294863748406056845662382214841467408616109501720437541211031966538, - 813813157354633930267029888722341725864333883175521358739311868164460385261, - ], - [ - 71901595776070443337150458310956362034911936706490730914901986556638720031, - 2789761472166115462625363403490399263810962093264318361008954888847594113421, - 2628791615374802560074754031104384456692791616314774034906110098358135152410, - ], - [ - 3617032588734559635167557152518265808024917503198278888820567553943986939719, - 2624012360209966117322788103333497793082705816015202046036057821340914061980, - 149101987103211771991327927827692640556911620408176100290586418839323044234, - ], - [ - 1039927963829140138166373450440320262590862908847727961488297105916489431045, - 2213946951050724449162431068646025833746639391992751674082854766704900195669, - 2792724903541814965769131737117981991997031078369482697195201969174353468597, - ], - [ - 3212031629728871219804596347439383805499808476303618848198208101593976279441, - 3343514080098703935339621028041191631325798327656683100151836206557453199613, - 614054702436541219556958850933730254992710988573177298270089989048553060199, - ], - [ - 148148081026449726283933484730968827750202042869875329032965774667206931170, - 1158283532103191908366672518396366136968613180867652172211392033571980848414, - 1032400527342371389481069504520755916075559110755235773196747439146396688513, - ], - [ - 806900704622005851310078578853499250941978435851598088619290797134710613736, - 462498083559902778091095573017508352472262817904991134671058825705968404510, - 1003580119810278869589347418043095667699674425582646347949349245557449452503, - ], - [ - 619074932220101074089137133998298830285661916867732916607601635248249357793, - 2635090520059500019661864086615522409798872905401305311748231832709078452746, - 978252636251682252755279071140187792306115352460774007308726210405257135181, - ], - [ - 1766912167973123409669091967764158892111310474906691336473559256218048677083, - 1663265127259512472182980890707014969235283233442916350121860684522654120381, - 3532407621206959585000336211742670185380751515636605428496206887841428074250, - ], - [ - 2507023127157093845256722098502856938353143387711652912931112668310034975446, - 3321152907858462102434883844787153373036767230808678981306827073335525034593, - 3039253036806065280643845548147711477270022154459620569428286684179698125661, - ], - [ - 103480338868480851881924519768416587261556021758163719199282794248762465380, - 2394049781357087698434751577708655768465803975478348134669006211289636928495, - 2660531560345476340796109810821127229446538730404600368347902087220064379579, - ], - [ - 3603166934034556203649050570865466556260359798872408576857928196141785055563, - 1553799760191949768532188139643704561532896296986025007089826672890485412324, - 2744284717053657689091306578463476341218866418732695211367062598446038965164, - ], - [ - 320745764922149897598257794663594419839885234101078803811049904310835548856, - 979382242100682161589753881721708883681034024104145498709287731138044566302, - 1860426855810549882740147175136418997351054138609396651615467358416651354991, - ], - [ - 336173081054369235994909356892506146234495707857220254489443629387613956145, - 1632470326779699229772327605759783482411227247311431865655466227711078175883, - 921958250077481394074960433988881176409497663777043304881055317463712938502, - ], - [ - 3034358982193370602048539901033542101022185309652879937418114324899281842797, - 25626282149517463867572353922222474817434101087272320606729439087234878607, - 3002662261401575565838149305485737102400501329139562227180277188790091853682, - ], - [ - 2939684373453383817196521641512509179310654199629514917426341354023324109367, - 1076484609897998179434851570277297233169621096172424141759873688902355505136, - 2575095284833160494841112025725243274091830284746697961080467506739203605049, - ], - [ - 3565075264617591783581665711620369529657840830498005563542124551465195621851, - 2197016502533303822395077038351174326125210255869204501838837289716363437993, - 331415322883530754594261416546036195982886300052707474899691116664327869405, - ], - [ - 1935011233711290003793244296594669823169522055520303479680359990463281661839, - 3495901467168087413996941216661589517270845976538454329511167073314577412322, - 954195417117133246453562983448451025087661597543338750600301835944144520375, - ], - [ - 1271840477709992894995746871435810599280944810893784031132923384456797925777, - 2565310762274337662754531859505158700827688964841878141121196528015826671847, - 3365022288251637014588279139038152521653896670895105540140002607272936852513, - ], - [ - 1660592021628965529963974299647026602622092163312666588591285654477111176051, - 970104372286014048279296575474974982288801187216974504035759997141059513421, - 2617024574317953753849168721871770134225690844968986289121504184985993971227, - ], - [ - 999899815343607746071464113462778273556695659506865124478430189024755832262, - 2228536129413411161615629030408828764980855956560026807518714080003644769896, - 2701953891198001564547196795777701119629537795442025393867364730330476403227, - ], - [ - 837078355588159388741598313782044128527494922918203556465116291436461597853, - 2121749601840466143704862369657561429793951309962582099604848281796392359214, - 771812260179247428733132708063116523892339056677915387749121983038690154755, - ], - [ - 3317336423132806446086732225036532603224267214833263122557471741829060578219, - 481570067997721834712647566896657604857788523050900222145547508314620762046, - 242195042559343964206291740270858862066153636168162642380846129622127460192, - ], - [ - 2855462178889999218204481481614105202770810647859867354506557827319138379686, - 3525521107148375040131784770413887305850308357895464453970651672160034885202, - 1320839531502392535964065058804908871811967681250362364246430459003920305799, - ], - [ - 2514191518588387125173345107242226637171897291221681115249521904869763202419, - 2798335750958827619666318316247381695117827718387653874070218127140615157902, - 2808467767967035643407948058486565877867906577474361783201337540214875566395, - ], - [ - 3551834385992706206273955480294669176699286104229279436819137165202231595747, - 1219439673853113792340300173186247996249367102884530407862469123523013083971, - 761519904537984520554247997444508040636526566551719396202550009393012691157, - ], - [ - 3355402549169351700500518865338783382387571349497391475317206324155237401353, - 199541098009731541347317515995192175813554789571447733944970283654592727138, - 192100490643078165121235261796864975568292640203635147901612231594408079071, - ], - [ - 1187019357602953326192019968809486933768550466167033084944727938441427050581, - 189525349641911362389041124808934468936759383310282010671081989585219065700, - 2831653363992091308880573627558515686245403755586311978724025292003353336665, - ], - [ - 2052859812632218952608271535089179639890275494426396974475479657192657094698, - 1670756178709659908159049531058853320846231785448204274277900022176591811072, - 3538757242013734574731807289786598937548399719866320954894004830207085723125, - ], - [ - 710549042741321081781917034337800036872214466705318638023070812391485261299, - 2345013122330545298606028187653996682275206910242635100920038943391319595180, - 3528369671971445493932880023233332035122954362711876290904323783426765912206, - ], - [ - 1167120829038120978297497195837406760848728897181138760506162680655977700764, - 3073243357129146594530765548901087443775563058893907738967898816092270628884, - 378514724418106317738164464176041649567501099164061863402473942795977719726, - ], - [ - 333391138410406330127594722511180398159664250722328578952158227406762627796, - 1727570175639917398410201375510924114487348765559913502662122372848626931905, - 968312190621809249603425066974405725769739606059422769908547372904403793174, - ], - [ - 360659316299446405855194688051178331671817370423873014757323462844775818348, - 1386580151907705298970465943238806620109618995410132218037375811184684929291, - 3604888328937389309031638299660239238400230206645344173700074923133890528967, - ], - [ - 2496185632263372962152518155651824899299616724241852816983268163379540137546, - 486538168871046887467737983064272608432052269868418721234810979756540672990, - 1558415498960552213241704009433360128041672577274390114589014204605400783336, - ], - [ - 3512058327686147326577190314835092911156317204978509183234511559551181053926, - 2235429387083113882635494090887463486491842634403047716936833563914243946191, - 1290896777143878193192832813769470418518651727840187056683408155503813799882, - ], - [ - 1143310336918357319571079551779316654556781203013096026972411429993634080835, - 3235435208525081966062419599803346573407862428113723170955762956243193422118, - 1293239921425673430660897025143433077974838969258268884994339615096356996604, - ], - [ - 236252269127612784685426260840574970698541177557674806964960352572864382971, - 1733907592497266237374827232200506798207318263912423249709509725341212026275, - 302004309771755665128395814807589350526779835595021835389022325987048089868, - ], - [ - 3018926838139221755384801385583867283206879023218491758435446265703006270945, - 39701437664873825906031098349904330565195980985885489447836580931425171297, - 908381723021746969965674308809436059628307487140174335882627549095646509778, - ], - [ - 219062858908229855064136253265968615354041842047384625689776811853821594358, - 1283129863776453589317845316917890202859466483456216900835390291449830275503, - 418512623547417594896140369190919231877873410935689672661226540908900544012, - ], - [ - 1792181590047131972851015200157890246436013346535432437041535789841136268632, - 370546432987510607338044736824316856592558876687225326692366316978098770516, - 3323437805230586112013581113386626899534419826098235300155664022709435756946, - ], - [ - 910076621742039763058481476739499965761942516177975130656340375573185415877, - 1762188042455633427137702520675816545396284185254002959309669405982213803405, - 2186362253913140345102191078329764107619534641234549431429008219905315900520, - ], - [ - 2230647725927681765419218738218528849146504088716182944327179019215826045083, - 1069243907556644434301190076451112491469636357133398376850435321160857761825, - 2695241469149243992683268025359863087303400907336026926662328156934068747593, - ], - [ - 1361519681544413849831669554199151294308350560528931040264950307931824877035, - 1339116632207878730171031743761550901312154740800549632983325427035029084904, - 790593524918851401449292693473498591068920069246127392274811084156907468875, - ], - [ - 2723400368331924254840192318398326090089058735091724263333980290765736363637, - 3457180265095920471443772463283225391927927225993685928066766687141729456030, - 1483675376954327086153452545475557749815683871577400883707749788555424847954, - ], - [ - 2926303836265506736227240325795090239680154099205721426928300056982414025239, - 543969119775473768170832347411484329362572550684421616624136244239799475526, - 237401230683847084256617415614300816373730178313253487575312839074042461932, - ], - [ - 844568412840391587862072008674263874021460074878949862892685736454654414423, - 151922054871708336050647150237534498235916969120198637893731715254687336644, - 1299332034710622815055321547569101119597030148120309411086203580212105652312, - ], - [ - 487046922649899823989594814663418784068895385009696501386459462815688122993, - 1104883249092599185744249485896585912845784382683240114120846423960548576851, - 1458388705536282069567179348797334876446380557083422364875248475157495514484, - ], - [ - 850248109622750774031817200193861444623975329881731864752464222442574976566, - 2885843173858536690032695698009109793537724845140477446409245651176355435722, - 3027068551635372249579348422266406787688980506275086097330568993357835463816, - ], - [ - 3231892723647447539926175383213338123506134054432701323145045438168976970994, - 1719080830641935421242626784132692936776388194122314954558418655725251172826, - 1172253756541066126131022537343350498482225068791630219494878195815226839450, - ], - [ - 1619232269633026603732619978083169293258272967781186544174521481891163985093, - 3495680684841853175973173610562400042003100419811771341346135531754869014567, - 1576161515913099892951745452471618612307857113799539794680346855318958552758, - ], - [ - 2618326122974253423403350731396350223238201817594761152626832144510903048529, - 2696245132758436974032479782852265185094623165224532063951287925001108567649, - 930116505665110070247395429730201844026054810856263733273443066419816003444, - ], - [ - 2786389174502246248523918824488629229455088716707062764363111940462137404076, - 1555260846425735320214671887347115247546042526197895180675436886484523605116, - 2306241912153325247392671742757902161446877415586158295423293240351799505917, - ], - [ - 411529621724849932999694270803131456243889635467661223241617477462914950626, - 1542495485262286701469125140275904136434075186064076910329015697714211835205, - 1853045663799041100600825096887578544265580718909350942241802897995488264551, - ], - [ - 2963055259497271220202739837493041799968576111953080503132045092194513937286, - 2303806870349915764285872605046527036748108533406243381676768310692344456050, - 2622104986201990620910286730213140904984256464479840856728424375142929278875, - ], - [ - 2369987021925266811581727383184031736927816625797282287927222602539037105864, - 285070227712021899602056480426671736057274017903028992288878116056674401781, - 3034087076179360957800568733595959058628497428787907887933697691951454610691, - ], - [ - 469095854351700119980323115747590868855368701825706298740201488006320881056, - 360001976264385426746283365024817520563236378289230404095383746911725100012, - 3438709327109021347267562000879503009590697221730578667498351600602230296178, - ], - [ - 63573904800572228121671659287593650438456772568903228287754075619928214969, - 3470881855042989871434874691030920672110111605547839662680968354703074556970, - 724559311507950497340993415408274803001166693839947519425501269424891465492, - ], - [ - 880409284677518997550768549487344416321062350742831373397603704465823658986, - 6876255662475867703077362872097208259197756317287339941435193538565586230, - 2701916445133770775447884812906226786217969545216086200932273680400909154638, - ], - [ - 425152119158711585559310064242720816611629181537672850898056934507216982586, - 1475552998258917706756737045704649573088377604240716286977690565239187213744, - 2413772448122400684309006716414417978370152271397082147158000439863002593561, - ], - [ - 392160855822256520519339260245328807036619920858503984710539815951012864164, - 1075036996503791536261050742318169965707018400307026402939804424927087093987, - 2176439430328703902070742432016450246365760303014562857296722712989275658921, - ], - [ - 1413865976587623331051814207977382826721471106513581745229680113383908569693, - 4879283427490523253696177116563427032332223531862961281430108575019551814, - 3392583297537374046875199552977614390492290683707960975137418536812266544902, - ], - [ - 3600854486849487646325182927019642276644093512133907046667282144129939150983, - 2779924664161372134024229593301361846129279572186444474616319283535189797834, - 2722699960903170449291146429799738181514821447014433304730310678334403972040, - ], - [ - 819109815049226540285781191874507704729062681836086010078910930707209464699, - 3046121243742768013822760785918001632929744274211027071381357122228091333823, - 1339019590803056172509793134119156250729668216522001157582155155947567682278, - ], - [ - 1933279639657506214789316403763326578443023901555983256955812717638093967201, - 2138221547112520744699126051903811860205771600821672121643894708182292213541, - 2694713515543641924097704224170357995809887124438248292930846280951601597065, - ], - [ - 2471734202930133750093618989223585244499567111661178960753938272334153710615, - 504903761112092757611047718215309856203214372330635774577409639907729993533, - 1943979703748281357156510253941035712048221353507135074336243405478613241290, - ], - [ - 684525210957572142559049112233609445802004614280157992196913315652663518936, - 1705585400798782397786453706717059483604368413512485532079242223503960814508, - 192429517716023021556170942988476050278432319516032402725586427701913624665, - ], - [ - 1586493702243128040549584165333371192888583026298039652930372758731750166765, - 686072673323546915014972146032384917012218151266600268450347114036285993377, - 3464340397998075738891129996710075228740496767934137465519455338004332839215, - ], - [ - 2805249176617071054530589390406083958753103601524808155663551392362371834663, - 667746464250968521164727418691487653339733392025160477655836902744186489526, - 1131527712905109997177270289411406385352032457456054589588342450404257139778, - ], - [ - 1908969485750011212309284349900149072003218505891252313183123635318886241171, - 1025257076985551890132050019084873267454083056307650830147063480409707787695, - 2153175291918371429502545470578981828372846236838301412119329786849737957977, - ], - [ - 3410257749736714576487217882785226905621212230027780855361670645857085424384, - 3442969106887588154491488961893254739289120695377621434680934888062399029952, - 3029953900235731770255937704976720759948880815387104275525268727341390470237, - ], - [ - 85453456084781138713939104192561924536933417707871501802199311333127894466, - 2730629666577257820220329078741301754580009106438115341296453318350676425129, - 178242450661072967256438102630920745430303027840919213764087927763335940415, - ], - [ - 2844589222514708695700541363167856718216388819406388706818431442998498677557, - 3547876269219141094308889387292091231377253967587961309624916269569559952944, - 2525005406762984211707203144785482908331876505006839217175334833739957826850, - ], - [ - 3096397013555211396701910432830904669391580557191845136003938801598654871345, - 574424067119200181933992948252007230348512600107123873197603373898923821490, - 1714030696055067278349157346067719307863507310709155690164546226450579547098, - ], - [ - 2339895272202694698739231405357972261413383527237194045718815176814132612501, - 3562501318971895161271663840954705079797767042115717360959659475564651685069, - 69069358687197963617161747606993436483967992689488259107924379545671193749, - ], - [ - 2614502738369008850475068874731531583863538486212691941619835266611116051561, - 655247349763023251625727726218660142895322325659927266813592114640858573566, - 2305235672527595714255517865498269719545193172975330668070873705108690670678, - ], - [ - 926416070297755413261159098243058134401665060349723804040714357642180531931, - 866523735635840246543516964237513287099659681479228450791071595433217821460, - 2284334068466681424919271582037156124891004191915573957556691163266198707693, - ], - [ - 1812588309302477291425732810913354633465435706480768615104211305579383928792, - 2836899808619013605432050476764608707770404125005720004551836441247917488507, - 2989087789022865112405242078196235025698647423649950459911546051695688370523, - ], - [ - 68056284404189102136488263779598243992465747932368669388126367131855404486, - 505425339250887519581119854377342241317528319745596963584548343662758204398, - 2118963546856545068961709089296976921067035227488975882615462246481055679215, - ], - [ - 2253872596319969096156004495313034590996995209785432485705134570745135149681, - 1625090409149943603241183848936692198923183279116014478406452426158572703264, - 179139838844452470348634657368199622305888473747024389514258107503778442495, - ], - [ - 1567067018147735642071130442904093290030432522257811793540290101391210410341, - 2737301854006865242314806979738760349397411136469975337509958305470398783585, - 3002738216460904473515791428798860225499078134627026021350799206894618186256, - ], - [ - 374029488099466837453096950537275565120689146401077127482884887409712315162, - 973403256517481077805460710540468856199855789930951602150773500862180885363, - 2691967457038172130555117632010860984519926022632800605713473799739632878867, - ], - [ - 3515906794910381201365530594248181418811879320679684239326734893975752012109, - 148057579455448384062325089530558091463206199724854022070244924642222283388, - 1541588700238272710315890873051237741033408846596322948443180470429851502842, - ], - [ - 147013865879011936545137344076637170977925826031496203944786839068852795297, - 2630278389304735265620281704608245039972003761509102213752997636382302839857, - 1359048670759642844930007747955701205155822111403150159614453244477853867621, - ], - [ - 2438984569205812336319229336885480537793786558293523767186829418969842616677, - 2137792255841525507649318539501906353254503076308308692873313199435029594138, - 2262318076430740712267739371170174514379142884859595360065535117601097652755, - ], - [ - 2792703718581084537295613508201818489836796608902614779596544185252826291584, - 2294173715793292812015960640392421991604150133581218254866878921346561546149, - 2770011224727997178743274791849308200493823127651418989170761007078565678171, - ], -] diff --git a/test/stark/poseidon/poseidon4.txt b/test/stark/poseidon/poseidon4.txt deleted file mode 100644 index 990460c..0000000 --- a/test/stark/poseidon/poseidon4.txt +++ /dev/null @@ -1,559 +0,0 @@ -Rate = 3 -Capacity = 1 -FullRounds = 8 -PartialRounds = 84 -MDS = [[2, 1, 1, 1], [1, 1, 1, 1], [1, 1, 0, 1], [1, 1, 1, -1]] -RoundKeys = [ - [ - 2950795762459345168613727575620414179244544320470208355568817838579231751791, - 1587446564224215276866294500450702039420286416111469274423465069420553242820, - 1645965921169490687904413452218868659025437693527479459426157555728339600137, - 2782373324549879794752287702905278018819686065818504085638398966973694145741, - ], - [ - 3409172630025222641379726933524480516420204828329395644967085131392375707302, - 2379053116496905638239090788901387719228422033660130943198035907032739387135, - 2570819397480941104144008784293466051718826502582588529995520356691856497111, - 3546220846133880637977653625763703334841539452343273304410918449202580719746, - ], - [ - 2720682389492889709700489490056111332164748138023159726590726667539759963454, - 1899653471897224903834726250400246354200311275092866725547887381599836519005, - 2369443697923857319844855392163763375394720104106200469525915896159690979559, - 2354174693689535854311272135513626412848402744119855553970180659094265527996, - ], - [ - 2404084503073127963385083467393598147276436640877011103379112521338973185443, - 950320777137731763811524327595514151340412860090489448295239456547370725376, - 2121140748740143694053732746913428481442990369183417228688865837805149503386, - 2372065044800422557577242066480215868569521938346032514014152523102053709709, - ], - [ - 2618497439310693947058545060953893433487994458443568169824149550389484489896, - 3518297267402065742048564133910509847197496119850246255805075095266319996916, - 340529752683340505065238931581518232901634742162506851191464448040657139775, - 1954876811294863748406056845662382214841467408616109501720437541211031966538, - ], - [ - 813813157354633930267029888722341725864333883175521358739311868164460385261, - 71901595776070443337150458310956362034911936706490730914901986556638720031, - 2789761472166115462625363403490399263810962093264318361008954888847594113421, - 2628791615374802560074754031104384456692791616314774034906110098358135152410, - ], - [ - 3617032588734559635167557152518265808024917503198278888820567553943986939719, - 2624012360209966117322788103333497793082705816015202046036057821340914061980, - 149101987103211771991327927827692640556911620408176100290586418839323044234, - 1039927963829140138166373450440320262590862908847727961488297105916489431045, - ], - [ - 2213946951050724449162431068646025833746639391992751674082854766704900195669, - 2792724903541814965769131737117981991997031078369482697195201969174353468597, - 3212031629728871219804596347439383805499808476303618848198208101593976279441, - 3343514080098703935339621028041191631325798327656683100151836206557453199613, - ], - [ - 614054702436541219556958850933730254992710988573177298270089989048553060199, - 148148081026449726283933484730968827750202042869875329032965774667206931170, - 1158283532103191908366672518396366136968613180867652172211392033571980848414, - 1032400527342371389481069504520755916075559110755235773196747439146396688513, - ], - [ - 806900704622005851310078578853499250941978435851598088619290797134710613736, - 462498083559902778091095573017508352472262817904991134671058825705968404510, - 1003580119810278869589347418043095667699674425582646347949349245557449452503, - 619074932220101074089137133998298830285661916867732916607601635248249357793, - ], - [ - 2635090520059500019661864086615522409798872905401305311748231832709078452746, - 978252636251682252755279071140187792306115352460774007308726210405257135181, - 1766912167973123409669091967764158892111310474906691336473559256218048677083, - 1663265127259512472182980890707014969235283233442916350121860684522654120381, - ], - [ - 3532407621206959585000336211742670185380751515636605428496206887841428074250, - 2507023127157093845256722098502856938353143387711652912931112668310034975446, - 3321152907858462102434883844787153373036767230808678981306827073335525034593, - 3039253036806065280643845548147711477270022154459620569428286684179698125661, - ], - [ - 103480338868480851881924519768416587261556021758163719199282794248762465380, - 2394049781357087698434751577708655768465803975478348134669006211289636928495, - 2660531560345476340796109810821127229446538730404600368347902087220064379579, - 3603166934034556203649050570865466556260359798872408576857928196141785055563, - ], - [ - 1553799760191949768532188139643704561532896296986025007089826672890485412324, - 2744284717053657689091306578463476341218866418732695211367062598446038965164, - 320745764922149897598257794663594419839885234101078803811049904310835548856, - 979382242100682161589753881721708883681034024104145498709287731138044566302, - ], - [ - 1860426855810549882740147175136418997351054138609396651615467358416651354991, - 336173081054369235994909356892506146234495707857220254489443629387613956145, - 1632470326779699229772327605759783482411227247311431865655466227711078175883, - 921958250077481394074960433988881176409497663777043304881055317463712938502, - ], - [ - 3034358982193370602048539901033542101022185309652879937418114324899281842797, - 25626282149517463867572353922222474817434101087272320606729439087234878607, - 3002662261401575565838149305485737102400501329139562227180277188790091853682, - 2939684373453383817196521641512509179310654199629514917426341354023324109367, - ], - [ - 1076484609897998179434851570277297233169621096172424141759873688902355505136, - 2575095284833160494841112025725243274091830284746697961080467506739203605049, - 3565075264617591783581665711620369529657840830498005563542124551465195621851, - 2197016502533303822395077038351174326125210255869204501838837289716363437993, - ], - [ - 331415322883530754594261416546036195982886300052707474899691116664327869405, - 1935011233711290003793244296594669823169522055520303479680359990463281661839, - 3495901467168087413996941216661589517270845976538454329511167073314577412322, - 954195417117133246453562983448451025087661597543338750600301835944144520375, - ], - [ - 1271840477709992894995746871435810599280944810893784031132923384456797925777, - 2565310762274337662754531859505158700827688964841878141121196528015826671847, - 3365022288251637014588279139038152521653896670895105540140002607272936852513, - 1660592021628965529963974299647026602622092163312666588591285654477111176051, - ], - [ - 970104372286014048279296575474974982288801187216974504035759997141059513421, - 2617024574317953753849168721871770134225690844968986289121504184985993971227, - 999899815343607746071464113462778273556695659506865124478430189024755832262, - 2228536129413411161615629030408828764980855956560026807518714080003644769896, - ], - [ - 2701953891198001564547196795777701119629537795442025393867364730330476403227, - 837078355588159388741598313782044128527494922918203556465116291436461597853, - 2121749601840466143704862369657561429793951309962582099604848281796392359214, - 771812260179247428733132708063116523892339056677915387749121983038690154755, - ], - [ - 3317336423132806446086732225036532603224267214833263122557471741829060578219, - 481570067997721834712647566896657604857788523050900222145547508314620762046, - 242195042559343964206291740270858862066153636168162642380846129622127460192, - 2855462178889999218204481481614105202770810647859867354506557827319138379686, - ], - [ - 3525521107148375040131784770413887305850308357895464453970651672160034885202, - 1320839531502392535964065058804908871811967681250362364246430459003920305799, - 2514191518588387125173345107242226637171897291221681115249521904869763202419, - 2798335750958827619666318316247381695117827718387653874070218127140615157902, - ], - [ - 2808467767967035643407948058486565877867906577474361783201337540214875566395, - 3551834385992706206273955480294669176699286104229279436819137165202231595747, - 1219439673853113792340300173186247996249367102884530407862469123523013083971, - 761519904537984520554247997444508040636526566551719396202550009393012691157, - ], - [ - 3355402549169351700500518865338783382387571349497391475317206324155237401353, - 199541098009731541347317515995192175813554789571447733944970283654592727138, - 192100490643078165121235261796864975568292640203635147901612231594408079071, - 1187019357602953326192019968809486933768550466167033084944727938441427050581, - ], - [ - 189525349641911362389041124808934468936759383310282010671081989585219065700, - 2831653363992091308880573627558515686245403755586311978724025292003353336665, - 2052859812632218952608271535089179639890275494426396974475479657192657094698, - 1670756178709659908159049531058853320846231785448204274277900022176591811072, - ], - [ - 3538757242013734574731807289786598937548399719866320954894004830207085723125, - 710549042741321081781917034337800036872214466705318638023070812391485261299, - 2345013122330545298606028187653996682275206910242635100920038943391319595180, - 3528369671971445493932880023233332035122954362711876290904323783426765912206, - ], - [ - 1167120829038120978297497195837406760848728897181138760506162680655977700764, - 3073243357129146594530765548901087443775563058893907738967898816092270628884, - 378514724418106317738164464176041649567501099164061863402473942795977719726, - 333391138410406330127594722511180398159664250722328578952158227406762627796, - ], - [ - 1727570175639917398410201375510924114487348765559913502662122372848626931905, - 968312190621809249603425066974405725769739606059422769908547372904403793174, - 360659316299446405855194688051178331671817370423873014757323462844775818348, - 1386580151907705298970465943238806620109618995410132218037375811184684929291, - ], - [ - 3604888328937389309031638299660239238400230206645344173700074923133890528967, - 2496185632263372962152518155651824899299616724241852816983268163379540137546, - 486538168871046887467737983064272608432052269868418721234810979756540672990, - 1558415498960552213241704009433360128041672577274390114589014204605400783336, - ], - [ - 3512058327686147326577190314835092911156317204978509183234511559551181053926, - 2235429387083113882635494090887463486491842634403047716936833563914243946191, - 1290896777143878193192832813769470418518651727840187056683408155503813799882, - 1143310336918357319571079551779316654556781203013096026972411429993634080835, - ], - [ - 3235435208525081966062419599803346573407862428113723170955762956243193422118, - 1293239921425673430660897025143433077974838969258268884994339615096356996604, - 236252269127612784685426260840574970698541177557674806964960352572864382971, - 1733907592497266237374827232200506798207318263912423249709509725341212026275, - ], - [ - 302004309771755665128395814807589350526779835595021835389022325987048089868, - 3018926838139221755384801385583867283206879023218491758435446265703006270945, - 39701437664873825906031098349904330565195980985885489447836580931425171297, - 908381723021746969965674308809436059628307487140174335882627549095646509778, - ], - [ - 219062858908229855064136253265968615354041842047384625689776811853821594358, - 1283129863776453589317845316917890202859466483456216900835390291449830275503, - 418512623547417594896140369190919231877873410935689672661226540908900544012, - 1792181590047131972851015200157890246436013346535432437041535789841136268632, - ], - [ - 370546432987510607338044736824316856592558876687225326692366316978098770516, - 3323437805230586112013581113386626899534419826098235300155664022709435756946, - 910076621742039763058481476739499965761942516177975130656340375573185415877, - 1762188042455633427137702520675816545396284185254002959309669405982213803405, - ], - [ - 2186362253913140345102191078329764107619534641234549431429008219905315900520, - 2230647725927681765419218738218528849146504088716182944327179019215826045083, - 1069243907556644434301190076451112491469636357133398376850435321160857761825, - 2695241469149243992683268025359863087303400907336026926662328156934068747593, - ], - [ - 1361519681544413849831669554199151294308350560528931040264950307931824877035, - 1339116632207878730171031743761550901312154740800549632983325427035029084904, - 790593524918851401449292693473498591068920069246127392274811084156907468875, - 2723400368331924254840192318398326090089058735091724263333980290765736363637, - ], - [ - 3457180265095920471443772463283225391927927225993685928066766687141729456030, - 1483675376954327086153452545475557749815683871577400883707749788555424847954, - 2926303836265506736227240325795090239680154099205721426928300056982414025239, - 543969119775473768170832347411484329362572550684421616624136244239799475526, - ], - [ - 237401230683847084256617415614300816373730178313253487575312839074042461932, - 844568412840391587862072008674263874021460074878949862892685736454654414423, - 151922054871708336050647150237534498235916969120198637893731715254687336644, - 1299332034710622815055321547569101119597030148120309411086203580212105652312, - ], - [ - 487046922649899823989594814663418784068895385009696501386459462815688122993, - 1104883249092599185744249485896585912845784382683240114120846423960548576851, - 1458388705536282069567179348797334876446380557083422364875248475157495514484, - 850248109622750774031817200193861444623975329881731864752464222442574976566, - ], - [ - 2885843173858536690032695698009109793537724845140477446409245651176355435722, - 3027068551635372249579348422266406787688980506275086097330568993357835463816, - 3231892723647447539926175383213338123506134054432701323145045438168976970994, - 1719080830641935421242626784132692936776388194122314954558418655725251172826, - ], - [ - 1172253756541066126131022537343350498482225068791630219494878195815226839450, - 1619232269633026603732619978083169293258272967781186544174521481891163985093, - 3495680684841853175973173610562400042003100419811771341346135531754869014567, - 1576161515913099892951745452471618612307857113799539794680346855318958552758, - ], - [ - 2618326122974253423403350731396350223238201817594761152626832144510903048529, - 2696245132758436974032479782852265185094623165224532063951287925001108567649, - 930116505665110070247395429730201844026054810856263733273443066419816003444, - 2786389174502246248523918824488629229455088716707062764363111940462137404076, - ], - [ - 1555260846425735320214671887347115247546042526197895180675436886484523605116, - 2306241912153325247392671742757902161446877415586158295423293240351799505917, - 411529621724849932999694270803131456243889635467661223241617477462914950626, - 1542495485262286701469125140275904136434075186064076910329015697714211835205, - ], - [ - 1853045663799041100600825096887578544265580718909350942241802897995488264551, - 2963055259497271220202739837493041799968576111953080503132045092194513937286, - 2303806870349915764285872605046527036748108533406243381676768310692344456050, - 2622104986201990620910286730213140904984256464479840856728424375142929278875, - ], - [ - 2369987021925266811581727383184031736927816625797282287927222602539037105864, - 285070227712021899602056480426671736057274017903028992288878116056674401781, - 3034087076179360957800568733595959058628497428787907887933697691951454610691, - 469095854351700119980323115747590868855368701825706298740201488006320881056, - ], - [ - 360001976264385426746283365024817520563236378289230404095383746911725100012, - 3438709327109021347267562000879503009590697221730578667498351600602230296178, - 63573904800572228121671659287593650438456772568903228287754075619928214969, - 3470881855042989871434874691030920672110111605547839662680968354703074556970, - ], - [ - 724559311507950497340993415408274803001166693839947519425501269424891465492, - 880409284677518997550768549487344416321062350742831373397603704465823658986, - 6876255662475867703077362872097208259197756317287339941435193538565586230, - 2701916445133770775447884812906226786217969545216086200932273680400909154638, - ], - [ - 425152119158711585559310064242720816611629181537672850898056934507216982586, - 1475552998258917706756737045704649573088377604240716286977690565239187213744, - 2413772448122400684309006716414417978370152271397082147158000439863002593561, - 392160855822256520519339260245328807036619920858503984710539815951012864164, - ], - [ - 1075036996503791536261050742318169965707018400307026402939804424927087093987, - 2176439430328703902070742432016450246365760303014562857296722712989275658921, - 1413865976587623331051814207977382826721471106513581745229680113383908569693, - 4879283427490523253696177116563427032332223531862961281430108575019551814, - ], - [ - 3392583297537374046875199552977614390492290683707960975137418536812266544902, - 3600854486849487646325182927019642276644093512133907046667282144129939150983, - 2779924664161372134024229593301361846129279572186444474616319283535189797834, - 2722699960903170449291146429799738181514821447014433304730310678334403972040, - ], - [ - 819109815049226540285781191874507704729062681836086010078910930707209464699, - 3046121243742768013822760785918001632929744274211027071381357122228091333823, - 1339019590803056172509793134119156250729668216522001157582155155947567682278, - 1933279639657506214789316403763326578443023901555983256955812717638093967201, - ], - [ - 2138221547112520744699126051903811860205771600821672121643894708182292213541, - 2694713515543641924097704224170357995809887124438248292930846280951601597065, - 2471734202930133750093618989223585244499567111661178960753938272334153710615, - 504903761112092757611047718215309856203214372330635774577409639907729993533, - ], - [ - 1943979703748281357156510253941035712048221353507135074336243405478613241290, - 684525210957572142559049112233609445802004614280157992196913315652663518936, - 1705585400798782397786453706717059483604368413512485532079242223503960814508, - 192429517716023021556170942988476050278432319516032402725586427701913624665, - ], - [ - 1586493702243128040549584165333371192888583026298039652930372758731750166765, - 686072673323546915014972146032384917012218151266600268450347114036285993377, - 3464340397998075738891129996710075228740496767934137465519455338004332839215, - 2805249176617071054530589390406083958753103601524808155663551392362371834663, - ], - [ - 667746464250968521164727418691487653339733392025160477655836902744186489526, - 1131527712905109997177270289411406385352032457456054589588342450404257139778, - 1908969485750011212309284349900149072003218505891252313183123635318886241171, - 1025257076985551890132050019084873267454083056307650830147063480409707787695, - ], - [ - 2153175291918371429502545470578981828372846236838301412119329786849737957977, - 3410257749736714576487217882785226905621212230027780855361670645857085424384, - 3442969106887588154491488961893254739289120695377621434680934888062399029952, - 3029953900235731770255937704976720759948880815387104275525268727341390470237, - ], - [ - 85453456084781138713939104192561924536933417707871501802199311333127894466, - 2730629666577257820220329078741301754580009106438115341296453318350676425129, - 178242450661072967256438102630920745430303027840919213764087927763335940415, - 2844589222514708695700541363167856718216388819406388706818431442998498677557, - ], - [ - 3547876269219141094308889387292091231377253967587961309624916269569559952944, - 2525005406762984211707203144785482908331876505006839217175334833739957826850, - 3096397013555211396701910432830904669391580557191845136003938801598654871345, - 574424067119200181933992948252007230348512600107123873197603373898923821490, - ], - [ - 1714030696055067278349157346067719307863507310709155690164546226450579547098, - 2339895272202694698739231405357972261413383527237194045718815176814132612501, - 3562501318971895161271663840954705079797767042115717360959659475564651685069, - 69069358687197963617161747606993436483967992689488259107924379545671193749, - ], - [ - 2614502738369008850475068874731531583863538486212691941619835266611116051561, - 655247349763023251625727726218660142895322325659927266813592114640858573566, - 2305235672527595714255517865498269719545193172975330668070873705108690670678, - 926416070297755413261159098243058134401665060349723804040714357642180531931, - ], - [ - 866523735635840246543516964237513287099659681479228450791071595433217821460, - 2284334068466681424919271582037156124891004191915573957556691163266198707693, - 1812588309302477291425732810913354633465435706480768615104211305579383928792, - 2836899808619013605432050476764608707770404125005720004551836441247917488507, - ], - [ - 2989087789022865112405242078196235025698647423649950459911546051695688370523, - 68056284404189102136488263779598243992465747932368669388126367131855404486, - 505425339250887519581119854377342241317528319745596963584548343662758204398, - 2118963546856545068961709089296976921067035227488975882615462246481055679215, - ], - [ - 2253872596319969096156004495313034590996995209785432485705134570745135149681, - 1625090409149943603241183848936692198923183279116014478406452426158572703264, - 179139838844452470348634657368199622305888473747024389514258107503778442495, - 1567067018147735642071130442904093290030432522257811793540290101391210410341, - ], - [ - 2737301854006865242314806979738760349397411136469975337509958305470398783585, - 3002738216460904473515791428798860225499078134627026021350799206894618186256, - 374029488099466837453096950537275565120689146401077127482884887409712315162, - 973403256517481077805460710540468856199855789930951602150773500862180885363, - ], - [ - 2691967457038172130555117632010860984519926022632800605713473799739632878867, - 3515906794910381201365530594248181418811879320679684239326734893975752012109, - 148057579455448384062325089530558091463206199724854022070244924642222283388, - 1541588700238272710315890873051237741033408846596322948443180470429851502842, - ], - [ - 147013865879011936545137344076637170977925826031496203944786839068852795297, - 2630278389304735265620281704608245039972003761509102213752997636382302839857, - 1359048670759642844930007747955701205155822111403150159614453244477853867621, - 2438984569205812336319229336885480537793786558293523767186829418969842616677, - ], - [ - 2137792255841525507649318539501906353254503076308308692873313199435029594138, - 2262318076430740712267739371170174514379142884859595360065535117601097652755, - 2792703718581084537295613508201818489836796608902614779596544185252826291584, - 2294173715793292812015960640392421991604150133581218254866878921346561546149, - ], - [ - 2770011224727997178743274791849308200493823127651418989170761007078565678171, - 3321642244537785916275181932172303118112488081726311374164578600576901819844, - 3522708517589950573320671158134804505970724681591943826922697952040487655044, - 3417974441436557992524691506735790206623600049454586729879955931972546347402, - ], - [ - 175039333145381316571259690443853067809784261609912638686739799135919647022, - 1930713062131033273316869231148248962041053029742760224583505092759642967464, - 2971452932574554603554350185069538580257636405419430340233233400633251319042, - 2774781903758215341037075610938953949868289195845367046186588750871862784919, - ], - [ - 666516874137869653699423537799457099346460194092311952417454613224504932738, - 1900462225013533249140457703727169176351786259991305560412832202759625668041, - 2665631186082687279121709429531834469477679375137509769347092380798929714377, - 837840745988147279235494664091280091563355097569199320366973125128366540061, - ], - [ - 3391544118305848781823721719916289805455110924839794510205940718821197620955, - 2888553035909938253628892138500390690221493345071933642853222968481016605919, - 3386241569867597612447901482685846444743718781330869478721963580925825915450, - 1205126220630896984850042596877918177217334376800874965105642874206963597698, - ], - [ - 3590072615491710252422997155203204584659171612188004116415640739580250394190, - 692469013329617220154003334549812915100479873898898958632988703738125356983, - 1623178235190707102808841905143937367808788834203621005714003335195182126335, - 1972826180775011489122426045504602288576507493792470102803637471568052321297, - ], - [ - 3415141329098504418158191749675997877417539760075593313736376750580696083073, - 587811537889727046473915684463981273175495137461951211739526104349163747811, - 2523982964351069134084525951849317400231659428055762640605248929856135518199, - 2686176526711834950207666047281383173339057216783586039351834948812568447629, - ], - [ - 983144446441739425577690449774542566745526459152966545642451764143532586964, - 171558252019175695567663688494555626159399786667979998273792882504784080805, - 332337623010057542760158225837623039780806442976079546879646069338600179518, - 1264669683963885571544813806669118319675288608634733888843804451222546848295, - ], - [ - 2426165115815723668018318268486497504249785449504758403912155206515511627681, - 11387399609384288947733630450855186629703576293221897150193655994854764608, - 2541728569046079092074077754414781968906176513081761690404588216304985421091, - 47685947554980329431290582269851186106577733250761848107645535357326439312, - ], - [ - 472176388418187405374813530639596064799362505024895746833751173199773896628, - 2764298116617383397920343358525617195195060562266243809245480210157942112738, - 486863835068754002670800862273365477867695879270721744227071001883208334054, - 2973492686137102577527656941792991264994301121122130295965761350095846874635, - ], - [ - 178385615141132702906181473263873416748818415607305319148067639744074654009, - 533624640096756667052211553746016402543259206286603356120804827761339634127, - 819406716720171922688026098737835227857400444543748198788964759773510472096, - 531851793767260921861217458033110066464894334064526987603936107947006031387, - ], - [ - 3269709072483585277009748181134917746036523619604017812342933951952104134829, - 838191718603413598040249006803464503100808192944407407147899973659013630611, - 1574561296941310904780257598780779812250055948216417844567262310524022037406, - 551394354289003977607664358739006072556227894953233419144430578080352094737, - ], - [ - 445076790942318675726839050057337819004979443030540904213920669247413907302, - 1963946696292687224902912968478695543164747600779913024040878700455222386521, - 484284614181963381509745298932402076252103342403432879800905151752488144767, - 2240507606126946994415203252302826782042951346966859379502140796364876543253, - ], - [ - 3237135638753992982179886898758938279897590886053928839613434762582576319619, - 2334333034701915027889533058426879447140084891006486138782876488162658230991, - 14411091399844539897439754491034751977136685514851444574462584316609631592, - 1264480371592407258420308876448697804787923638319277097663041109464608464284, - ], - [ - 671929312763821646360589403212798993954209530574443543917757335777610372144, - 2513909805455654095962542944994577107405216428214873444765576238504714067396, - 870121102846043786263357605823753628974859886859187558617096145653709171231, - 399132620893316356411986266679786708905730068946836982293484206366500277754, - ], - [ - 2855046250836680633532995284655778407402587437073106249445470889390454667586, - 2063679741125384345396981490971605710211281905716315529671473143278849561151, - 1433753212258929925682201698758056443128516570551146995210728194816988328337, - 3334984763425011856632257855270507440816274246647423607159847074739331865077, - ], - [ - 337911293622078184850923533628334646725451591671907148383867096651211846605, - 559587005295238702015018022040357402231957131094636365177008701077975941644, - 885963059604819264377490633589388189646118257469490919900554134369512794660, - 1957748763518471091057032383332840331641373304981058387824598000170709016333, - ], - [ - 3175295982155056798972302481564899381103533409383494814704562889625572018450, - 498987160612401618114584726510347771865331516606886613019084323862447372555, - 947374835104260364630171441676101001841507588423166778786886198914150312958, - 906933977754491302438795274167251538820934378773708095543613756654712689280, - ], - [ - 2170116291766863179909957030577284618726490893598499117272497866180009722894, - 1801335399574515889082584621772588704763181408217893911806726119813067220453, - 1942500232535842474530840356353427989892065499159260166135596750084681859966, - 62936080219825306823124060587235998278756755377419521154040408253893795176, - ], - [ - 3091993939935137795359769774909373279950941171574748645375255810204590357753, - 1283528386884634267663661033944552098742115012555712906773586466375284501324, - 1581820717639229420476069802992937438655873471854930764425841549067913106065, - 2301986095388751633126546121528329200085681648876910655269533407603441046514, - ], - [ - 2850003828037698751961753862613545302539465803982364898225617297398939302949, - 48024691078494936445046366770271288984930221238071705874025261821606393528, - 1482336297033144958942154923925185950152551534403871620222916667536030875354, - 3081177564717719643771186007689458633949181485535169123213511264603782950049, - ], - [ - 3315701127039521853279746297714590495201061397709680410650043502532250578075, - 3514407611000441301995070394422463400067690470546731164089622325748803106020, - 368970178199930154322724953487299516224498421233447528815195701420122548537, - 584353160413525267849669053228533951552602295860601556035386665117717227391, - ], - [ - 752038702160385294706011538400822066722189014251268673051846350397729870418, - 3594041683498798688197194521326299097635429790757880308152971477196489335154, - 1367902435756906062215608264424138718742854099315395230911274560900857414183, - 1828549068951502746189364466794037234789986878381694857475972053743463890779, - ], - [ - 488172495141237210878388657234137733008417573114482400652274985829148564248, - 962906242461930394022372340919543491337923491322497419797555620396501785566, - 2275418085010046236619290386129138234541669589549771944697082317642065048898, - 1966395064658902622886154686288219600816893261614483533899715888994623208964, - ], - [ - 3496095878293416917311185659829821476802828534554531050412634978086916288609, - 3368478822390537245916137403277928093536087427951052230723275731232142463388, - 3397410259276620127103231993277518800970669191016277541098821699302368873803, - 2662600899665871010006649609856695263727220473364611552472965243032255906029, - ], -] diff --git a/test/stark/poseidon/poseidon5.txt b/test/stark/poseidon/poseidon5.txt deleted file mode 100644 index 062b3dd..0000000 --- a/test/stark/poseidon/poseidon5.txt +++ /dev/null @@ -1,651 +0,0 @@ -Rate = 4 -Capacity = 1 -FullRounds = 8 -PartialRounds = 84 -MDS = [[3, 1, 1, 1, 1], [1, 2, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, -1, 1], [1, 1, 1, 1, -2]] -RoundKeys = [ - [ - 2950795762459345168613727575620414179244544320470208355568817838579231751791, - 1587446564224215276866294500450702039420286416111469274423465069420553242820, - 1645965921169490687904413452218868659025437693527479459426157555728339600137, - 2782373324549879794752287702905278018819686065818504085638398966973694145741, - 3409172630025222641379726933524480516420204828329395644967085131392375707302, - ], - [ - 2379053116496905638239090788901387719228422033660130943198035907032739387135, - 2570819397480941104144008784293466051718826502582588529995520356691856497111, - 3546220846133880637977653625763703334841539452343273304410918449202580719746, - 2720682389492889709700489490056111332164748138023159726590726667539759963454, - 1899653471897224903834726250400246354200311275092866725547887381599836519005, - ], - [ - 2369443697923857319844855392163763375394720104106200469525915896159690979559, - 2354174693689535854311272135513626412848402744119855553970180659094265527996, - 2404084503073127963385083467393598147276436640877011103379112521338973185443, - 950320777137731763811524327595514151340412860090489448295239456547370725376, - 2121140748740143694053732746913428481442990369183417228688865837805149503386, - ], - [ - 2372065044800422557577242066480215868569521938346032514014152523102053709709, - 2618497439310693947058545060953893433487994458443568169824149550389484489896, - 3518297267402065742048564133910509847197496119850246255805075095266319996916, - 340529752683340505065238931581518232901634742162506851191464448040657139775, - 1954876811294863748406056845662382214841467408616109501720437541211031966538, - ], - [ - 813813157354633930267029888722341725864333883175521358739311868164460385261, - 71901595776070443337150458310956362034911936706490730914901986556638720031, - 2789761472166115462625363403490399263810962093264318361008954888847594113421, - 2628791615374802560074754031104384456692791616314774034906110098358135152410, - 3617032588734559635167557152518265808024917503198278888820567553943986939719, - ], - [ - 2624012360209966117322788103333497793082705816015202046036057821340914061980, - 149101987103211771991327927827692640556911620408176100290586418839323044234, - 1039927963829140138166373450440320262590862908847727961488297105916489431045, - 2213946951050724449162431068646025833746639391992751674082854766704900195669, - 2792724903541814965769131737117981991997031078369482697195201969174353468597, - ], - [ - 3212031629728871219804596347439383805499808476303618848198208101593976279441, - 3343514080098703935339621028041191631325798327656683100151836206557453199613, - 614054702436541219556958850933730254992710988573177298270089989048553060199, - 148148081026449726283933484730968827750202042869875329032965774667206931170, - 1158283532103191908366672518396366136968613180867652172211392033571980848414, - ], - [ - 1032400527342371389481069504520755916075559110755235773196747439146396688513, - 806900704622005851310078578853499250941978435851598088619290797134710613736, - 462498083559902778091095573017508352472262817904991134671058825705968404510, - 1003580119810278869589347418043095667699674425582646347949349245557449452503, - 619074932220101074089137133998298830285661916867732916607601635248249357793, - ], - [ - 2635090520059500019661864086615522409798872905401305311748231832709078452746, - 978252636251682252755279071140187792306115352460774007308726210405257135181, - 1766912167973123409669091967764158892111310474906691336473559256218048677083, - 1663265127259512472182980890707014969235283233442916350121860684522654120381, - 3532407621206959585000336211742670185380751515636605428496206887841428074250, - ], - [ - 2507023127157093845256722098502856938353143387711652912931112668310034975446, - 3321152907858462102434883844787153373036767230808678981306827073335525034593, - 3039253036806065280643845548147711477270022154459620569428286684179698125661, - 103480338868480851881924519768416587261556021758163719199282794248762465380, - 2394049781357087698434751577708655768465803975478348134669006211289636928495, - ], - [ - 2660531560345476340796109810821127229446538730404600368347902087220064379579, - 3603166934034556203649050570865466556260359798872408576857928196141785055563, - 1553799760191949768532188139643704561532896296986025007089826672890485412324, - 2744284717053657689091306578463476341218866418732695211367062598446038965164, - 320745764922149897598257794663594419839885234101078803811049904310835548856, - ], - [ - 979382242100682161589753881721708883681034024104145498709287731138044566302, - 1860426855810549882740147175136418997351054138609396651615467358416651354991, - 336173081054369235994909356892506146234495707857220254489443629387613956145, - 1632470326779699229772327605759783482411227247311431865655466227711078175883, - 921958250077481394074960433988881176409497663777043304881055317463712938502, - ], - [ - 3034358982193370602048539901033542101022185309652879937418114324899281842797, - 25626282149517463867572353922222474817434101087272320606729439087234878607, - 3002662261401575565838149305485737102400501329139562227180277188790091853682, - 2939684373453383817196521641512509179310654199629514917426341354023324109367, - 1076484609897998179434851570277297233169621096172424141759873688902355505136, - ], - [ - 2575095284833160494841112025725243274091830284746697961080467506739203605049, - 3565075264617591783581665711620369529657840830498005563542124551465195621851, - 2197016502533303822395077038351174326125210255869204501838837289716363437993, - 331415322883530754594261416546036195982886300052707474899691116664327869405, - 1935011233711290003793244296594669823169522055520303479680359990463281661839, - ], - [ - 3495901467168087413996941216661589517270845976538454329511167073314577412322, - 954195417117133246453562983448451025087661597543338750600301835944144520375, - 1271840477709992894995746871435810599280944810893784031132923384456797925777, - 2565310762274337662754531859505158700827688964841878141121196528015826671847, - 3365022288251637014588279139038152521653896670895105540140002607272936852513, - ], - [ - 1660592021628965529963974299647026602622092163312666588591285654477111176051, - 970104372286014048279296575474974982288801187216974504035759997141059513421, - 2617024574317953753849168721871770134225690844968986289121504184985993971227, - 999899815343607746071464113462778273556695659506865124478430189024755832262, - 2228536129413411161615629030408828764980855956560026807518714080003644769896, - ], - [ - 2701953891198001564547196795777701119629537795442025393867364730330476403227, - 837078355588159388741598313782044128527494922918203556465116291436461597853, - 2121749601840466143704862369657561429793951309962582099604848281796392359214, - 771812260179247428733132708063116523892339056677915387749121983038690154755, - 3317336423132806446086732225036532603224267214833263122557471741829060578219, - ], - [ - 481570067997721834712647566896657604857788523050900222145547508314620762046, - 242195042559343964206291740270858862066153636168162642380846129622127460192, - 2855462178889999218204481481614105202770810647859867354506557827319138379686, - 3525521107148375040131784770413887305850308357895464453970651672160034885202, - 1320839531502392535964065058804908871811967681250362364246430459003920305799, - ], - [ - 2514191518588387125173345107242226637171897291221681115249521904869763202419, - 2798335750958827619666318316247381695117827718387653874070218127140615157902, - 2808467767967035643407948058486565877867906577474361783201337540214875566395, - 3551834385992706206273955480294669176699286104229279436819137165202231595747, - 1219439673853113792340300173186247996249367102884530407862469123523013083971, - ], - [ - 761519904537984520554247997444508040636526566551719396202550009393012691157, - 3355402549169351700500518865338783382387571349497391475317206324155237401353, - 199541098009731541347317515995192175813554789571447733944970283654592727138, - 192100490643078165121235261796864975568292640203635147901612231594408079071, - 1187019357602953326192019968809486933768550466167033084944727938441427050581, - ], - [ - 189525349641911362389041124808934468936759383310282010671081989585219065700, - 2831653363992091308880573627558515686245403755586311978724025292003353336665, - 2052859812632218952608271535089179639890275494426396974475479657192657094698, - 1670756178709659908159049531058853320846231785448204274277900022176591811072, - 3538757242013734574731807289786598937548399719866320954894004830207085723125, - ], - [ - 710549042741321081781917034337800036872214466705318638023070812391485261299, - 2345013122330545298606028187653996682275206910242635100920038943391319595180, - 3528369671971445493932880023233332035122954362711876290904323783426765912206, - 1167120829038120978297497195837406760848728897181138760506162680655977700764, - 3073243357129146594530765548901087443775563058893907738967898816092270628884, - ], - [ - 378514724418106317738164464176041649567501099164061863402473942795977719726, - 333391138410406330127594722511180398159664250722328578952158227406762627796, - 1727570175639917398410201375510924114487348765559913502662122372848626931905, - 968312190621809249603425066974405725769739606059422769908547372904403793174, - 360659316299446405855194688051178331671817370423873014757323462844775818348, - ], - [ - 1386580151907705298970465943238806620109618995410132218037375811184684929291, - 3604888328937389309031638299660239238400230206645344173700074923133890528967, - 2496185632263372962152518155651824899299616724241852816983268163379540137546, - 486538168871046887467737983064272608432052269868418721234810979756540672990, - 1558415498960552213241704009433360128041672577274390114589014204605400783336, - ], - [ - 3512058327686147326577190314835092911156317204978509183234511559551181053926, - 2235429387083113882635494090887463486491842634403047716936833563914243946191, - 1290896777143878193192832813769470418518651727840187056683408155503813799882, - 1143310336918357319571079551779316654556781203013096026972411429993634080835, - 3235435208525081966062419599803346573407862428113723170955762956243193422118, - ], - [ - 1293239921425673430660897025143433077974838969258268884994339615096356996604, - 236252269127612784685426260840574970698541177557674806964960352572864382971, - 1733907592497266237374827232200506798207318263912423249709509725341212026275, - 302004309771755665128395814807589350526779835595021835389022325987048089868, - 3018926838139221755384801385583867283206879023218491758435446265703006270945, - ], - [ - 39701437664873825906031098349904330565195980985885489447836580931425171297, - 908381723021746969965674308809436059628307487140174335882627549095646509778, - 219062858908229855064136253265968615354041842047384625689776811853821594358, - 1283129863776453589317845316917890202859466483456216900835390291449830275503, - 418512623547417594896140369190919231877873410935689672661226540908900544012, - ], - [ - 1792181590047131972851015200157890246436013346535432437041535789841136268632, - 370546432987510607338044736824316856592558876687225326692366316978098770516, - 3323437805230586112013581113386626899534419826098235300155664022709435756946, - 910076621742039763058481476739499965761942516177975130656340375573185415877, - 1762188042455633427137702520675816545396284185254002959309669405982213803405, - ], - [ - 2186362253913140345102191078329764107619534641234549431429008219905315900520, - 2230647725927681765419218738218528849146504088716182944327179019215826045083, - 1069243907556644434301190076451112491469636357133398376850435321160857761825, - 2695241469149243992683268025359863087303400907336026926662328156934068747593, - 1361519681544413849831669554199151294308350560528931040264950307931824877035, - ], - [ - 1339116632207878730171031743761550901312154740800549632983325427035029084904, - 790593524918851401449292693473498591068920069246127392274811084156907468875, - 2723400368331924254840192318398326090089058735091724263333980290765736363637, - 3457180265095920471443772463283225391927927225993685928066766687141729456030, - 1483675376954327086153452545475557749815683871577400883707749788555424847954, - ], - [ - 2926303836265506736227240325795090239680154099205721426928300056982414025239, - 543969119775473768170832347411484329362572550684421616624136244239799475526, - 237401230683847084256617415614300816373730178313253487575312839074042461932, - 844568412840391587862072008674263874021460074878949862892685736454654414423, - 151922054871708336050647150237534498235916969120198637893731715254687336644, - ], - [ - 1299332034710622815055321547569101119597030148120309411086203580212105652312, - 487046922649899823989594814663418784068895385009696501386459462815688122993, - 1104883249092599185744249485896585912845784382683240114120846423960548576851, - 1458388705536282069567179348797334876446380557083422364875248475157495514484, - 850248109622750774031817200193861444623975329881731864752464222442574976566, - ], - [ - 2885843173858536690032695698009109793537724845140477446409245651176355435722, - 3027068551635372249579348422266406787688980506275086097330568993357835463816, - 3231892723647447539926175383213338123506134054432701323145045438168976970994, - 1719080830641935421242626784132692936776388194122314954558418655725251172826, - 1172253756541066126131022537343350498482225068791630219494878195815226839450, - ], - [ - 1619232269633026603732619978083169293258272967781186544174521481891163985093, - 3495680684841853175973173610562400042003100419811771341346135531754869014567, - 1576161515913099892951745452471618612307857113799539794680346855318958552758, - 2618326122974253423403350731396350223238201817594761152626832144510903048529, - 2696245132758436974032479782852265185094623165224532063951287925001108567649, - ], - [ - 930116505665110070247395429730201844026054810856263733273443066419816003444, - 2786389174502246248523918824488629229455088716707062764363111940462137404076, - 1555260846425735320214671887347115247546042526197895180675436886484523605116, - 2306241912153325247392671742757902161446877415586158295423293240351799505917, - 411529621724849932999694270803131456243889635467661223241617477462914950626, - ], - [ - 1542495485262286701469125140275904136434075186064076910329015697714211835205, - 1853045663799041100600825096887578544265580718909350942241802897995488264551, - 2963055259497271220202739837493041799968576111953080503132045092194513937286, - 2303806870349915764285872605046527036748108533406243381676768310692344456050, - 2622104986201990620910286730213140904984256464479840856728424375142929278875, - ], - [ - 2369987021925266811581727383184031736927816625797282287927222602539037105864, - 285070227712021899602056480426671736057274017903028992288878116056674401781, - 3034087076179360957800568733595959058628497428787907887933697691951454610691, - 469095854351700119980323115747590868855368701825706298740201488006320881056, - 360001976264385426746283365024817520563236378289230404095383746911725100012, - ], - [ - 3438709327109021347267562000879503009590697221730578667498351600602230296178, - 63573904800572228121671659287593650438456772568903228287754075619928214969, - 3470881855042989871434874691030920672110111605547839662680968354703074556970, - 724559311507950497340993415408274803001166693839947519425501269424891465492, - 880409284677518997550768549487344416321062350742831373397603704465823658986, - ], - [ - 6876255662475867703077362872097208259197756317287339941435193538565586230, - 2701916445133770775447884812906226786217969545216086200932273680400909154638, - 425152119158711585559310064242720816611629181537672850898056934507216982586, - 1475552998258917706756737045704649573088377604240716286977690565239187213744, - 2413772448122400684309006716414417978370152271397082147158000439863002593561, - ], - [ - 392160855822256520519339260245328807036619920858503984710539815951012864164, - 1075036996503791536261050742318169965707018400307026402939804424927087093987, - 2176439430328703902070742432016450246365760303014562857296722712989275658921, - 1413865976587623331051814207977382826721471106513581745229680113383908569693, - 4879283427490523253696177116563427032332223531862961281430108575019551814, - ], - [ - 3392583297537374046875199552977614390492290683707960975137418536812266544902, - 3600854486849487646325182927019642276644093512133907046667282144129939150983, - 2779924664161372134024229593301361846129279572186444474616319283535189797834, - 2722699960903170449291146429799738181514821447014433304730310678334403972040, - 819109815049226540285781191874507704729062681836086010078910930707209464699, - ], - [ - 3046121243742768013822760785918001632929744274211027071381357122228091333823, - 1339019590803056172509793134119156250729668216522001157582155155947567682278, - 1933279639657506214789316403763326578443023901555983256955812717638093967201, - 2138221547112520744699126051903811860205771600821672121643894708182292213541, - 2694713515543641924097704224170357995809887124438248292930846280951601597065, - ], - [ - 2471734202930133750093618989223585244499567111661178960753938272334153710615, - 504903761112092757611047718215309856203214372330635774577409639907729993533, - 1943979703748281357156510253941035712048221353507135074336243405478613241290, - 684525210957572142559049112233609445802004614280157992196913315652663518936, - 1705585400798782397786453706717059483604368413512485532079242223503960814508, - ], - [ - 192429517716023021556170942988476050278432319516032402725586427701913624665, - 1586493702243128040549584165333371192888583026298039652930372758731750166765, - 686072673323546915014972146032384917012218151266600268450347114036285993377, - 3464340397998075738891129996710075228740496767934137465519455338004332839215, - 2805249176617071054530589390406083958753103601524808155663551392362371834663, - ], - [ - 667746464250968521164727418691487653339733392025160477655836902744186489526, - 1131527712905109997177270289411406385352032457456054589588342450404257139778, - 1908969485750011212309284349900149072003218505891252313183123635318886241171, - 1025257076985551890132050019084873267454083056307650830147063480409707787695, - 2153175291918371429502545470578981828372846236838301412119329786849737957977, - ], - [ - 3410257749736714576487217882785226905621212230027780855361670645857085424384, - 3442969106887588154491488961893254739289120695377621434680934888062399029952, - 3029953900235731770255937704976720759948880815387104275525268727341390470237, - 85453456084781138713939104192561924536933417707871501802199311333127894466, - 2730629666577257820220329078741301754580009106438115341296453318350676425129, - ], - [ - 178242450661072967256438102630920745430303027840919213764087927763335940415, - 2844589222514708695700541363167856718216388819406388706818431442998498677557, - 3547876269219141094308889387292091231377253967587961309624916269569559952944, - 2525005406762984211707203144785482908331876505006839217175334833739957826850, - 3096397013555211396701910432830904669391580557191845136003938801598654871345, - ], - [ - 574424067119200181933992948252007230348512600107123873197603373898923821490, - 1714030696055067278349157346067719307863507310709155690164546226450579547098, - 2339895272202694698739231405357972261413383527237194045718815176814132612501, - 3562501318971895161271663840954705079797767042115717360959659475564651685069, - 69069358687197963617161747606993436483967992689488259107924379545671193749, - ], - [ - 2614502738369008850475068874731531583863538486212691941619835266611116051561, - 655247349763023251625727726218660142895322325659927266813592114640858573566, - 2305235672527595714255517865498269719545193172975330668070873705108690670678, - 926416070297755413261159098243058134401665060349723804040714357642180531931, - 866523735635840246543516964237513287099659681479228450791071595433217821460, - ], - [ - 2284334068466681424919271582037156124891004191915573957556691163266198707693, - 1812588309302477291425732810913354633465435706480768615104211305579383928792, - 2836899808619013605432050476764608707770404125005720004551836441247917488507, - 2989087789022865112405242078196235025698647423649950459911546051695688370523, - 68056284404189102136488263779598243992465747932368669388126367131855404486, - ], - [ - 505425339250887519581119854377342241317528319745596963584548343662758204398, - 2118963546856545068961709089296976921067035227488975882615462246481055679215, - 2253872596319969096156004495313034590996995209785432485705134570745135149681, - 1625090409149943603241183848936692198923183279116014478406452426158572703264, - 179139838844452470348634657368199622305888473747024389514258107503778442495, - ], - [ - 1567067018147735642071130442904093290030432522257811793540290101391210410341, - 2737301854006865242314806979738760349397411136469975337509958305470398783585, - 3002738216460904473515791428798860225499078134627026021350799206894618186256, - 374029488099466837453096950537275565120689146401077127482884887409712315162, - 973403256517481077805460710540468856199855789930951602150773500862180885363, - ], - [ - 2691967457038172130555117632010860984519926022632800605713473799739632878867, - 3515906794910381201365530594248181418811879320679684239326734893975752012109, - 148057579455448384062325089530558091463206199724854022070244924642222283388, - 1541588700238272710315890873051237741033408846596322948443180470429851502842, - 147013865879011936545137344076637170977925826031496203944786839068852795297, - ], - [ - 2630278389304735265620281704608245039972003761509102213752997636382302839857, - 1359048670759642844930007747955701205155822111403150159614453244477853867621, - 2438984569205812336319229336885480537793786558293523767186829418969842616677, - 2137792255841525507649318539501906353254503076308308692873313199435029594138, - 2262318076430740712267739371170174514379142884859595360065535117601097652755, - ], - [ - 2792703718581084537295613508201818489836796608902614779596544185252826291584, - 2294173715793292812015960640392421991604150133581218254866878921346561546149, - 2770011224727997178743274791849308200493823127651418989170761007078565678171, - 3321642244537785916275181932172303118112488081726311374164578600576901819844, - 3522708517589950573320671158134804505970724681591943826922697952040487655044, - ], - [ - 3417974441436557992524691506735790206623600049454586729879955931972546347402, - 175039333145381316571259690443853067809784261609912638686739799135919647022, - 1930713062131033273316869231148248962041053029742760224583505092759642967464, - 2971452932574554603554350185069538580257636405419430340233233400633251319042, - 2774781903758215341037075610938953949868289195845367046186588750871862784919, - ], - [ - 666516874137869653699423537799457099346460194092311952417454613224504932738, - 1900462225013533249140457703727169176351786259991305560412832202759625668041, - 2665631186082687279121709429531834469477679375137509769347092380798929714377, - 837840745988147279235494664091280091563355097569199320366973125128366540061, - 3391544118305848781823721719916289805455110924839794510205940718821197620955, - ], - [ - 2888553035909938253628892138500390690221493345071933642853222968481016605919, - 3386241569867597612447901482685846444743718781330869478721963580925825915450, - 1205126220630896984850042596877918177217334376800874965105642874206963597698, - 3590072615491710252422997155203204584659171612188004116415640739580250394190, - 692469013329617220154003334549812915100479873898898958632988703738125356983, - ], - [ - 1623178235190707102808841905143937367808788834203621005714003335195182126335, - 1972826180775011489122426045504602288576507493792470102803637471568052321297, - 3415141329098504418158191749675997877417539760075593313736376750580696083073, - 587811537889727046473915684463981273175495137461951211739526104349163747811, - 2523982964351069134084525951849317400231659428055762640605248929856135518199, - ], - [ - 2686176526711834950207666047281383173339057216783586039351834948812568447629, - 983144446441739425577690449774542566745526459152966545642451764143532586964, - 171558252019175695567663688494555626159399786667979998273792882504784080805, - 332337623010057542760158225837623039780806442976079546879646069338600179518, - 1264669683963885571544813806669118319675288608634733888843804451222546848295, - ], - [ - 2426165115815723668018318268486497504249785449504758403912155206515511627681, - 11387399609384288947733630450855186629703576293221897150193655994854764608, - 2541728569046079092074077754414781968906176513081761690404588216304985421091, - 47685947554980329431290582269851186106577733250761848107645535357326439312, - 472176388418187405374813530639596064799362505024895746833751173199773896628, - ], - [ - 2764298116617383397920343358525617195195060562266243809245480210157942112738, - 486863835068754002670800862273365477867695879270721744227071001883208334054, - 2973492686137102577527656941792991264994301121122130295965761350095846874635, - 178385615141132702906181473263873416748818415607305319148067639744074654009, - 533624640096756667052211553746016402543259206286603356120804827761339634127, - ], - [ - 819406716720171922688026098737835227857400444543748198788964759773510472096, - 531851793767260921861217458033110066464894334064526987603936107947006031387, - 3269709072483585277009748181134917746036523619604017812342933951952104134829, - 838191718603413598040249006803464503100808192944407407147899973659013630611, - 1574561296941310904780257598780779812250055948216417844567262310524022037406, - ], - [ - 551394354289003977607664358739006072556227894953233419144430578080352094737, - 445076790942318675726839050057337819004979443030540904213920669247413907302, - 1963946696292687224902912968478695543164747600779913024040878700455222386521, - 484284614181963381509745298932402076252103342403432879800905151752488144767, - 2240507606126946994415203252302826782042951346966859379502140796364876543253, - ], - [ - 3237135638753992982179886898758938279897590886053928839613434762582576319619, - 2334333034701915027889533058426879447140084891006486138782876488162658230991, - 14411091399844539897439754491034751977136685514851444574462584316609631592, - 1264480371592407258420308876448697804787923638319277097663041109464608464284, - 671929312763821646360589403212798993954209530574443543917757335777610372144, - ], - [ - 2513909805455654095962542944994577107405216428214873444765576238504714067396, - 870121102846043786263357605823753628974859886859187558617096145653709171231, - 399132620893316356411986266679786708905730068946836982293484206366500277754, - 2855046250836680633532995284655778407402587437073106249445470889390454667586, - 2063679741125384345396981490971605710211281905716315529671473143278849561151, - ], - [ - 1433753212258929925682201698758056443128516570551146995210728194816988328337, - 3334984763425011856632257855270507440816274246647423607159847074739331865077, - 337911293622078184850923533628334646725451591671907148383867096651211846605, - 559587005295238702015018022040357402231957131094636365177008701077975941644, - 885963059604819264377490633589388189646118257469490919900554134369512794660, - ], - [ - 1957748763518471091057032383332840331641373304981058387824598000170709016333, - 3175295982155056798972302481564899381103533409383494814704562889625572018450, - 498987160612401618114584726510347771865331516606886613019084323862447372555, - 947374835104260364630171441676101001841507588423166778786886198914150312958, - 906933977754491302438795274167251538820934378773708095543613756654712689280, - ], - [ - 2170116291766863179909957030577284618726490893598499117272497866180009722894, - 1801335399574515889082584621772588704763181408217893911806726119813067220453, - 1942500232535842474530840356353427989892065499159260166135596750084681859966, - 62936080219825306823124060587235998278756755377419521154040408253893795176, - 3091993939935137795359769774909373279950941171574748645375255810204590357753, - ], - [ - 1283528386884634267663661033944552098742115012555712906773586466375284501324, - 1581820717639229420476069802992937438655873471854930764425841549067913106065, - 2301986095388751633126546121528329200085681648876910655269533407603441046514, - 2850003828037698751961753862613545302539465803982364898225617297398939302949, - 48024691078494936445046366770271288984930221238071705874025261821606393528, - ], - [ - 1482336297033144958942154923925185950152551534403871620222916667536030875354, - 3081177564717719643771186007689458633949181485535169123213511264603782950049, - 3315701127039521853279746297714590495201061397709680410650043502532250578075, - 3514407611000441301995070394422463400067690470546731164089622325748803106020, - 368970178199930154322724953487299516224498421233447528815195701420122548537, - ], - [ - 584353160413525267849669053228533951552602295860601556035386665117717227391, - 752038702160385294706011538400822066722189014251268673051846350397729870418, - 3594041683498798688197194521326299097635429790757880308152971477196489335154, - 1367902435756906062215608264424138718742854099315395230911274560900857414183, - 1828549068951502746189364466794037234789986878381694857475972053743463890779, - ], - [ - 488172495141237210878388657234137733008417573114482400652274985829148564248, - 962906242461930394022372340919543491337923491322497419797555620396501785566, - 2275418085010046236619290386129138234541669589549771944697082317642065048898, - 1966395064658902622886154686288219600816893261614483533899715888994623208964, - 3496095878293416917311185659829821476802828534554531050412634978086916288609, - ], - [ - 3368478822390537245916137403277928093536087427951052230723275731232142463388, - 3397410259276620127103231993277518800970669191016277541098821699302368873803, - 2662600899665871010006649609856695263727220473364611552472965243032255906029, - 2854831720595596992200155718152374313555878203864206470581502555480894633975, - 2417859092561967752135741161218626374900182454089059862468108240576782064037, - ], - [ - 1064506915903089299531724594973601253341866933071158266140674053459433520889, - 243845138053687262800349059300355289745206315347524675450796070948867090098, - 1952653154963756062322124110012629666160000286707762177032475477295929736283, - 2760979128531476595658428672038276216079708408852493051222686009638650156041, - 3341178930260137001230946104398194306290005446746057811731360203227371301716, - ], - [ - 1033242545866274439991875444609632860132556714736615395036273942261573810479, - 3567973410830779135148598005871071456943945697865168835204985462698751038238, - 23014034649293369426970379738102323014738017168969687350330825050016457105, - 1146720508452451012445869043641390200263192255569203352823376998708972325392, - 2553707028642376593497768606567528232999203496079990242456254686325586089356, - ], - [ - 269729857648436699208023125596593246149228245518586029792966091405383426269, - 276912682886955358118649215147238115764108757952690361549816619060658800027, - 2367180947887796341722261610916728725977893583923967218630363334645641817362, - 2398694802751362950028137620758033447242325333923222365760836442417755445092, - 984868389243025029364428136317275892280780834039611841422502834917752411391, - ], - [ - 861353329558771468244040268521983016756775808329676883407171471251365927595, - 2498672969617384807617108262141800974986393948110233099680635130601163654234, - 1336236634145657673540555267430353130305889434115514586892320600753700983325, - 980337801407886250576371882962628290239239581416378379141354256717803603922, - 2308558359523317875952657835109605515063994805873180719205156915762120497245, - ], - [ - 2116737905426837141304542819940293184404010538896700217242374222514653607487, - 2143995283326808680518644927890182524580312777400009071739277407358043120199, - 3038758768133404431511594054950351369492648883179154555267474054094234927849, - 981824005865625678985009911415023115269386212492064371040001594972137748141, - 2427990511715778580869565219059895697855813782250850855111162965998948386792, - ], - [ - 1987498156785173719076522405088076990979859292718600184358583152317049836167, - 1633834915134208237423144264187482951766302060112099587851513525797020813799, - 2895454976388515752029424688351979030650325184941524820409482023485820781526, - 941019661238578826272324221721825852217063629464317974190162904813488515671, - 2529926057929249454763690180607677568685011502604470585585763159431333258299, - ], - [ - 2604831509257756199338105380847564711923112853239827243306562341166492672823, - 2300475954087415591738767759767032267163723345312082546282694920273655145455, - 1954000528502201000509342111010021527425422549437946241062907964768089317082, - 1179936151696782249912570883839105595634344582873818018332922940963046083567, - 3077707030301573630126144767923697288658782137457660869231140049571827937228, - ], - [ - 1062324397142900251844488719868780667589966366756786302007970554437994421840, - 353718609497993885193404630053532608155520921625518104461520254335222009911, - 770557645309607171206012551080400276506165720184677119001983749356594531977, - 3043628430985247363392058521341757139056029350680498644930013342982472853636, - 1694968537785457252742656255724723357998402478572600479401200420305593921487, - ], - [ - 539865665379093791531434211889371819368504193082947002067781562776138072582, - 3473466148775696692731190426971123680342615414200262605154732883324298196699, - 482783534456196983135936103604928650836406142744767857356485953118411089098, - 2389101033971236780034779577432189630800997581132154923233144722790749715251, - 845264223568475649981141803833883014312596504303895519674002924871878791033, - ], - [ - 3027004059915270231142566724881373969831662022738947178800901294120992473905, - 2169574859350740480088697859610203373582027214052754592019828328614087431593, - 3515527080764222354309565181793838292349410992793070639041305826153436624160, - 1817926918350512904327755405973355211358017834277255662858654992240629698587, - 1999148133619270973098477176176178514394558202995832714883251820350860287223, - ], - [ - 1203131300029280096510929599113528018338088236684405405384757591977164161039, - 336815403657101171302040383579077521911288747438919304948637997306314852594, - 986661060847815533035934253464295060766339947679669645818832311132001095573, - 2291116974939980228917916563988261327966840303336559854772343651559589512651, - 3421243089992476528970346847858594146122972226790673723411896208702859892637, - ], - [ - 1015505198663386486420800821559060487156096175034250154764824837183581949724, - 1165880582987807286271819576391581724550686829511475839624601920297855380101, - 904232961143172831178860280790910264843503022179578981166030973682571903458, - 261322216292849827900157598748641385787016033372999683866859675894253115357, - 3060676319159217735181388708455879854358158161989877552543698103915296690395, - ], - [ - 1175560144527845912984609340783959238735643215413930887771084560168082442967, - 2813871258576082360085006002528268796351819524936446195552260262614692343332, - 1841341101531851399935829271555098629075809587212843292354556374386667658235, - 3076135575511709688509914361447080149794919016880133063891720256749999834767, - 753111801049754117414662684453226478940731922961768343984187479992842213733, - ], - [ - 1405657437118503342762241742745888533114216548278983907019917904938403345580, - 3111186124713876864436867307979940633543281080828379725576742174555539054855, - 3404463650394703220454952017098727360005393139199301323890695570346564876407, - 2024087816190101179456573591359233695334184711688920998987373624570170649371, - 2770035625774572095496575568588054654502991645588385802705097377675051032967, - ], - [ - 437058215235292632621847481185406671372191763951486300610124033096831557414, - 1345792773780982398809956395232061067669190682958320579442454533085407626029, - 925357273912625669941681596445839316566672314870287993638671283923476231904, - 3288133122086768300615066039539687885053110015077924175836976549020438910830, - 666190075990703867784232802074474372379358766701681865975596503982238839889, - ], - [ - 2664898601165892062970298960258838238925231697327906221693001926762280012052, - 2075648691532387787722427044464731934171216054855867223374228487601569118337, - 3173725544188532489243684991828985285646224157242834030308807120745121062293, - 1517474443612606408422643323550409253700128234157734252330869178582583531320, - 1593950878945144789965609248470060076911813704207225832606804796819386297511, - ], - [ - 141195541167651298813588829225208004611326987855926870823948793274702167509, - 2990187949585642302497822222637786229364740008175968941859105979392907839776, - 2893807105405820282316438050347503569385510241526138409321358916388308586443, - 1379719211597875648759619903854862028510320482486109668868067715175935658353, - 2702780364788282233075255946852944970202849869091427738791947810055591218061, - ], - [ - 1825815734419326277729273926504439575157952821379179501821641713286627304656, - 1481344458867016048625916723816339719872443766684158199301690902395849166360, - 2014084774259125722186109781197998076881266739680534358898592778318128968629, - 2612744185006548312909661512508122065214170543806989291921289897662387203493, - 2486291022451231582267428921150634472835925206862678364689227838329114330247, - ], -] diff --git a/test/stark/poseidon/poseidon9.txt b/test/stark/poseidon/poseidon9.txt deleted file mode 100644 index f197f1d..0000000 --- a/test/stark/poseidon/poseidon9.txt +++ /dev/null @@ -1,1031 +0,0 @@ -Rate = 8 -Capacity = 1 -FullRounds = 8 -PartialRounds = 84 -MDS = [ - [5, 1, 1, 1, 1, 1, 1, 1, 1], - [1, 4, 1, 1, 1, 1, 1, 1, 1], - [1, 1, 3, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 2, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 0, 1, 1, 1], - [1, 1, 1, 1, 1, 1, -1, 1, 1], - [1, 1, 1, 1, 1, 1, 1, -3, 1], - [1, 1, 1, 1, 1, 1, 1, 1, -4], -] -RoundKeys = ( - [ - [ - 2950795762459345168613727575620414179244544320470208355568817838579231751791, - 1587446564224215276866294500450702039420286416111469274423465069420553242820, - 1645965921169490687904413452218868659025437693527479459426157555728339600137, - 2782373324549879794752287702905278018819686065818504085638398966973694145741, - 3409172630025222641379726933524480516420204828329395644967085131392375707302, - 2379053116496905638239090788901387719228422033660130943198035907032739387135, - 2570819397480941104144008784293466051718826502582588529995520356691856497111, - 3546220846133880637977653625763703334841539452343273304410918449202580719746, - 2720682389492889709700489490056111332164748138023159726590726667539759963454, - ], - [ - 1899653471897224903834726250400246354200311275092866725547887381599836519005, - 2369443697923857319844855392163763375394720104106200469525915896159690979559, - 2354174693689535854311272135513626412848402744119855553970180659094265527996, - 2404084503073127963385083467393598147276436640877011103379112521338973185443, - 950320777137731763811524327595514151340412860090489448295239456547370725376, - 2121140748740143694053732746913428481442990369183417228688865837805149503386, - 2372065044800422557577242066480215868569521938346032514014152523102053709709, - 2618497439310693947058545060953893433487994458443568169824149550389484489896, - 3518297267402065742048564133910509847197496119850246255805075095266319996916, - ], - [ - 340529752683340505065238931581518232901634742162506851191464448040657139775, - 1954876811294863748406056845662382214841467408616109501720437541211031966538, - 813813157354633930267029888722341725864333883175521358739311868164460385261, - 71901595776070443337150458310956362034911936706490730914901986556638720031, - 2789761472166115462625363403490399263810962093264318361008954888847594113421, - 2628791615374802560074754031104384456692791616314774034906110098358135152410, - 3617032588734559635167557152518265808024917503198278888820567553943986939719, - 2624012360209966117322788103333497793082705816015202046036057821340914061980, - 149101987103211771991327927827692640556911620408176100290586418839323044234, - ], - [ - 1039927963829140138166373450440320262590862908847727961488297105916489431045, - 2213946951050724449162431068646025833746639391992751674082854766704900195669, - 2792724903541814965769131737117981991997031078369482697195201969174353468597, - 3212031629728871219804596347439383805499808476303618848198208101593976279441, - 3343514080098703935339621028041191631325798327656683100151836206557453199613, - 614054702436541219556958850933730254992710988573177298270089989048553060199, - 148148081026449726283933484730968827750202042869875329032965774667206931170, - 1158283532103191908366672518396366136968613180867652172211392033571980848414, - 1032400527342371389481069504520755916075559110755235773196747439146396688513, - ], - [ - 806900704622005851310078578853499250941978435851598088619290797134710613736, - 462498083559902778091095573017508352472262817904991134671058825705968404510, - 1003580119810278869589347418043095667699674425582646347949349245557449452503, - 619074932220101074089137133998298830285661916867732916607601635248249357793, - 2635090520059500019661864086615522409798872905401305311748231832709078452746, - 978252636251682252755279071140187792306115352460774007308726210405257135181, - 1766912167973123409669091967764158892111310474906691336473559256218048677083, - 1663265127259512472182980890707014969235283233442916350121860684522654120381, - 3532407621206959585000336211742670185380751515636605428496206887841428074250, - ], - [ - 2507023127157093845256722098502856938353143387711652912931112668310034975446, - 3321152907858462102434883844787153373036767230808678981306827073335525034593, - 3039253036806065280643845548147711477270022154459620569428286684179698125661, - 103480338868480851881924519768416587261556021758163719199282794248762465380, - 2394049781357087698434751577708655768465803975478348134669006211289636928495, - 2660531560345476340796109810821127229446538730404600368347902087220064379579, - 3603166934034556203649050570865466556260359798872408576857928196141785055563, - 1553799760191949768532188139643704561532896296986025007089826672890485412324, - 2744284717053657689091306578463476341218866418732695211367062598446038965164, - ], - [ - 320745764922149897598257794663594419839885234101078803811049904310835548856, - 979382242100682161589753881721708883681034024104145498709287731138044566302, - 1860426855810549882740147175136418997351054138609396651615467358416651354991, - 336173081054369235994909356892506146234495707857220254489443629387613956145, - 1632470326779699229772327605759783482411227247311431865655466227711078175883, - 921958250077481394074960433988881176409497663777043304881055317463712938502, - 3034358982193370602048539901033542101022185309652879937418114324899281842797, - 25626282149517463867572353922222474817434101087272320606729439087234878607, - 3002662261401575565838149305485737102400501329139562227180277188790091853682, - ], - [ - 2939684373453383817196521641512509179310654199629514917426341354023324109367, - 1076484609897998179434851570277297233169621096172424141759873688902355505136, - 2575095284833160494841112025725243274091830284746697961080467506739203605049, - 3565075264617591783581665711620369529657840830498005563542124551465195621851, - 2197016502533303822395077038351174326125210255869204501838837289716363437993, - 331415322883530754594261416546036195982886300052707474899691116664327869405, - 1935011233711290003793244296594669823169522055520303479680359990463281661839, - 3495901467168087413996941216661589517270845976538454329511167073314577412322, - 954195417117133246453562983448451025087661597543338750600301835944144520375, - ], - [ - 1271840477709992894995746871435810599280944810893784031132923384456797925777, - 2565310762274337662754531859505158700827688964841878141121196528015826671847, - 3365022288251637014588279139038152521653896670895105540140002607272936852513, - 1660592021628965529963974299647026602622092163312666588591285654477111176051, - 970104372286014048279296575474974982288801187216974504035759997141059513421, - 2617024574317953753849168721871770134225690844968986289121504184985993971227, - 999899815343607746071464113462778273556695659506865124478430189024755832262, - 2228536129413411161615629030408828764980855956560026807518714080003644769896, - 2701953891198001564547196795777701119629537795442025393867364730330476403227, - ], - [ - 837078355588159388741598313782044128527494922918203556465116291436461597853, - 2121749601840466143704862369657561429793951309962582099604848281796392359214, - 771812260179247428733132708063116523892339056677915387749121983038690154755, - 3317336423132806446086732225036532603224267214833263122557471741829060578219, - 481570067997721834712647566896657604857788523050900222145547508314620762046, - 242195042559343964206291740270858862066153636168162642380846129622127460192, - 2855462178889999218204481481614105202770810647859867354506557827319138379686, - 3525521107148375040131784770413887305850308357895464453970651672160034885202, - 1320839531502392535964065058804908871811967681250362364246430459003920305799, - ], - [ - 2514191518588387125173345107242226637171897291221681115249521904869763202419, - 2798335750958827619666318316247381695117827718387653874070218127140615157902, - 2808467767967035643407948058486565877867906577474361783201337540214875566395, - 3551834385992706206273955480294669176699286104229279436819137165202231595747, - 1219439673853113792340300173186247996249367102884530407862469123523013083971, - 761519904537984520554247997444508040636526566551719396202550009393012691157, - 3355402549169351700500518865338783382387571349497391475317206324155237401353, - 199541098009731541347317515995192175813554789571447733944970283654592727138, - 192100490643078165121235261796864975568292640203635147901612231594408079071, - ], - [ - 1187019357602953326192019968809486933768550466167033084944727938441427050581, - 189525349641911362389041124808934468936759383310282010671081989585219065700, - 2831653363992091308880573627558515686245403755586311978724025292003353336665, - 2052859812632218952608271535089179639890275494426396974475479657192657094698, - 1670756178709659908159049531058853320846231785448204274277900022176591811072, - 3538757242013734574731807289786598937548399719866320954894004830207085723125, - 710549042741321081781917034337800036872214466705318638023070812391485261299, - 2345013122330545298606028187653996682275206910242635100920038943391319595180, - 3528369671971445493932880023233332035122954362711876290904323783426765912206, - ], - [ - 1167120829038120978297497195837406760848728897181138760506162680655977700764, - 3073243357129146594530765548901087443775563058893907738967898816092270628884, - 378514724418106317738164464176041649567501099164061863402473942795977719726, - 333391138410406330127594722511180398159664250722328578952158227406762627796, - 1727570175639917398410201375510924114487348765559913502662122372848626931905, - 968312190621809249603425066974405725769739606059422769908547372904403793174, - 360659316299446405855194688051178331671817370423873014757323462844775818348, - 1386580151907705298970465943238806620109618995410132218037375811184684929291, - 3604888328937389309031638299660239238400230206645344173700074923133890528967, - ], - [ - 2496185632263372962152518155651824899299616724241852816983268163379540137546, - 486538168871046887467737983064272608432052269868418721234810979756540672990, - 1558415498960552213241704009433360128041672577274390114589014204605400783336, - 3512058327686147326577190314835092911156317204978509183234511559551181053926, - 2235429387083113882635494090887463486491842634403047716936833563914243946191, - 1290896777143878193192832813769470418518651727840187056683408155503813799882, - 1143310336918357319571079551779316654556781203013096026972411429993634080835, - 3235435208525081966062419599803346573407862428113723170955762956243193422118, - 1293239921425673430660897025143433077974838969258268884994339615096356996604, - ], - [ - 236252269127612784685426260840574970698541177557674806964960352572864382971, - 1733907592497266237374827232200506798207318263912423249709509725341212026275, - 302004309771755665128395814807589350526779835595021835389022325987048089868, - 3018926838139221755384801385583867283206879023218491758435446265703006270945, - 39701437664873825906031098349904330565195980985885489447836580931425171297, - 908381723021746969965674308809436059628307487140174335882627549095646509778, - 219062858908229855064136253265968615354041842047384625689776811853821594358, - 1283129863776453589317845316917890202859466483456216900835390291449830275503, - 418512623547417594896140369190919231877873410935689672661226540908900544012, - ], - [ - 1792181590047131972851015200157890246436013346535432437041535789841136268632, - 370546432987510607338044736824316856592558876687225326692366316978098770516, - 3323437805230586112013581113386626899534419826098235300155664022709435756946, - 910076621742039763058481476739499965761942516177975130656340375573185415877, - 1762188042455633427137702520675816545396284185254002959309669405982213803405, - 2186362253913140345102191078329764107619534641234549431429008219905315900520, - 2230647725927681765419218738218528849146504088716182944327179019215826045083, - 1069243907556644434301190076451112491469636357133398376850435321160857761825, - 2695241469149243992683268025359863087303400907336026926662328156934068747593, - ], - [ - 1361519681544413849831669554199151294308350560528931040264950307931824877035, - 1339116632207878730171031743761550901312154740800549632983325427035029084904, - 790593524918851401449292693473498591068920069246127392274811084156907468875, - 2723400368331924254840192318398326090089058735091724263333980290765736363637, - 3457180265095920471443772463283225391927927225993685928066766687141729456030, - 1483675376954327086153452545475557749815683871577400883707749788555424847954, - 2926303836265506736227240325795090239680154099205721426928300056982414025239, - 543969119775473768170832347411484329362572550684421616624136244239799475526, - 237401230683847084256617415614300816373730178313253487575312839074042461932, - ], - [ - 844568412840391587862072008674263874021460074878949862892685736454654414423, - 151922054871708336050647150237534498235916969120198637893731715254687336644, - 1299332034710622815055321547569101119597030148120309411086203580212105652312, - 487046922649899823989594814663418784068895385009696501386459462815688122993, - 1104883249092599185744249485896585912845784382683240114120846423960548576851, - 1458388705536282069567179348797334876446380557083422364875248475157495514484, - 850248109622750774031817200193861444623975329881731864752464222442574976566, - 2885843173858536690032695698009109793537724845140477446409245651176355435722, - 3027068551635372249579348422266406787688980506275086097330568993357835463816, - ], - [ - 3231892723647447539926175383213338123506134054432701323145045438168976970994, - 1719080830641935421242626784132692936776388194122314954558418655725251172826, - 1172253756541066126131022537343350498482225068791630219494878195815226839450, - 1619232269633026603732619978083169293258272967781186544174521481891163985093, - 3495680684841853175973173610562400042003100419811771341346135531754869014567, - 1576161515913099892951745452471618612307857113799539794680346855318958552758, - 2618326122974253423403350731396350223238201817594761152626832144510903048529, - 2696245132758436974032479782852265185094623165224532063951287925001108567649, - 930116505665110070247395429730201844026054810856263733273443066419816003444, - ], - [ - 2786389174502246248523918824488629229455088716707062764363111940462137404076, - 1555260846425735320214671887347115247546042526197895180675436886484523605116, - 2306241912153325247392671742757902161446877415586158295423293240351799505917, - 411529621724849932999694270803131456243889635467661223241617477462914950626, - 1542495485262286701469125140275904136434075186064076910329015697714211835205, - 1853045663799041100600825096887578544265580718909350942241802897995488264551, - 2963055259497271220202739837493041799968576111953080503132045092194513937286, - 2303806870349915764285872605046527036748108533406243381676768310692344456050, - 2622104986201990620910286730213140904984256464479840856728424375142929278875, - ], - [ - 2369987021925266811581727383184031736927816625797282287927222602539037105864, - 285070227712021899602056480426671736057274017903028992288878116056674401781, - 3034087076179360957800568733595959058628497428787907887933697691951454610691, - 469095854351700119980323115747590868855368701825706298740201488006320881056, - 360001976264385426746283365024817520563236378289230404095383746911725100012, - 3438709327109021347267562000879503009590697221730578667498351600602230296178, - 63573904800572228121671659287593650438456772568903228287754075619928214969, - 3470881855042989871434874691030920672110111605547839662680968354703074556970, - 724559311507950497340993415408274803001166693839947519425501269424891465492, - ], - [ - 880409284677518997550768549487344416321062350742831373397603704465823658986, - 6876255662475867703077362872097208259197756317287339941435193538565586230, - 2701916445133770775447884812906226786217969545216086200932273680400909154638, - 425152119158711585559310064242720816611629181537672850898056934507216982586, - 1475552998258917706756737045704649573088377604240716286977690565239187213744, - 2413772448122400684309006716414417978370152271397082147158000439863002593561, - 392160855822256520519339260245328807036619920858503984710539815951012864164, - 1075036996503791536261050742318169965707018400307026402939804424927087093987, - 2176439430328703902070742432016450246365760303014562857296722712989275658921, - ], - [ - 1413865976587623331051814207977382826721471106513581745229680113383908569693, - 4879283427490523253696177116563427032332223531862961281430108575019551814, - 3392583297537374046875199552977614390492290683707960975137418536812266544902, - 3600854486849487646325182927019642276644093512133907046667282144129939150983, - 2779924664161372134024229593301361846129279572186444474616319283535189797834, - 2722699960903170449291146429799738181514821447014433304730310678334403972040, - 819109815049226540285781191874507704729062681836086010078910930707209464699, - 3046121243742768013822760785918001632929744274211027071381357122228091333823, - 1339019590803056172509793134119156250729668216522001157582155155947567682278, - ], - [ - 1933279639657506214789316403763326578443023901555983256955812717638093967201, - 2138221547112520744699126051903811860205771600821672121643894708182292213541, - 2694713515543641924097704224170357995809887124438248292930846280951601597065, - 2471734202930133750093618989223585244499567111661178960753938272334153710615, - 504903761112092757611047718215309856203214372330635774577409639907729993533, - 1943979703748281357156510253941035712048221353507135074336243405478613241290, - 684525210957572142559049112233609445802004614280157992196913315652663518936, - 1705585400798782397786453706717059483604368413512485532079242223503960814508, - 192429517716023021556170942988476050278432319516032402725586427701913624665, - ], - [ - 1586493702243128040549584165333371192888583026298039652930372758731750166765, - 686072673323546915014972146032384917012218151266600268450347114036285993377, - 3464340397998075738891129996710075228740496767934137465519455338004332839215, - 2805249176617071054530589390406083958753103601524808155663551392362371834663, - 667746464250968521164727418691487653339733392025160477655836902744186489526, - 1131527712905109997177270289411406385352032457456054589588342450404257139778, - 1908969485750011212309284349900149072003218505891252313183123635318886241171, - 1025257076985551890132050019084873267454083056307650830147063480409707787695, - 2153175291918371429502545470578981828372846236838301412119329786849737957977, - ], - [ - 3410257749736714576487217882785226905621212230027780855361670645857085424384, - 3442969106887588154491488961893254739289120695377621434680934888062399029952, - 3029953900235731770255937704976720759948880815387104275525268727341390470237, - 85453456084781138713939104192561924536933417707871501802199311333127894466, - 2730629666577257820220329078741301754580009106438115341296453318350676425129, - 178242450661072967256438102630920745430303027840919213764087927763335940415, - 2844589222514708695700541363167856718216388819406388706818431442998498677557, - 3547876269219141094308889387292091231377253967587961309624916269569559952944, - 2525005406762984211707203144785482908331876505006839217175334833739957826850, - ], - [ - 3096397013555211396701910432830904669391580557191845136003938801598654871345, - 574424067119200181933992948252007230348512600107123873197603373898923821490, - 1714030696055067278349157346067719307863507310709155690164546226450579547098, - 2339895272202694698739231405357972261413383527237194045718815176814132612501, - 3562501318971895161271663840954705079797767042115717360959659475564651685069, - 69069358687197963617161747606993436483967992689488259107924379545671193749, - 2614502738369008850475068874731531583863538486212691941619835266611116051561, - 655247349763023251625727726218660142895322325659927266813592114640858573566, - 2305235672527595714255517865498269719545193172975330668070873705108690670678, - ], - [ - 926416070297755413261159098243058134401665060349723804040714357642180531931, - 866523735635840246543516964237513287099659681479228450791071595433217821460, - 2284334068466681424919271582037156124891004191915573957556691163266198707693, - 1812588309302477291425732810913354633465435706480768615104211305579383928792, - 2836899808619013605432050476764608707770404125005720004551836441247917488507, - 2989087789022865112405242078196235025698647423649950459911546051695688370523, - 68056284404189102136488263779598243992465747932368669388126367131855404486, - 505425339250887519581119854377342241317528319745596963584548343662758204398, - 2118963546856545068961709089296976921067035227488975882615462246481055679215, - ], - [ - 2253872596319969096156004495313034590996995209785432485705134570745135149681, - 1625090409149943603241183848936692198923183279116014478406452426158572703264, - 179139838844452470348634657368199622305888473747024389514258107503778442495, - 1567067018147735642071130442904093290030432522257811793540290101391210410341, - 2737301854006865242314806979738760349397411136469975337509958305470398783585, - 3002738216460904473515791428798860225499078134627026021350799206894618186256, - 374029488099466837453096950537275565120689146401077127482884887409712315162, - 973403256517481077805460710540468856199855789930951602150773500862180885363, - 2691967457038172130555117632010860984519926022632800605713473799739632878867, - ], - [ - 3515906794910381201365530594248181418811879320679684239326734893975752012109, - 148057579455448384062325089530558091463206199724854022070244924642222283388, - 1541588700238272710315890873051237741033408846596322948443180470429851502842, - 147013865879011936545137344076637170977925826031496203944786839068852795297, - 2630278389304735265620281704608245039972003761509102213752997636382302839857, - 1359048670759642844930007747955701205155822111403150159614453244477853867621, - 2438984569205812336319229336885480537793786558293523767186829418969842616677, - 2137792255841525507649318539501906353254503076308308692873313199435029594138, - 2262318076430740712267739371170174514379142884859595360065535117601097652755, - ], - [ - 2792703718581084537295613508201818489836796608902614779596544185252826291584, - 2294173715793292812015960640392421991604150133581218254866878921346561546149, - 2770011224727997178743274791849308200493823127651418989170761007078565678171, - 3321642244537785916275181932172303118112488081726311374164578600576901819844, - 3522708517589950573320671158134804505970724681591943826922697952040487655044, - 3417974441436557992524691506735790206623600049454586729879955931972546347402, - 175039333145381316571259690443853067809784261609912638686739799135919647022, - 1930713062131033273316869231148248962041053029742760224583505092759642967464, - 2971452932574554603554350185069538580257636405419430340233233400633251319042, - ], - [ - 2774781903758215341037075610938953949868289195845367046186588750871862784919, - 666516874137869653699423537799457099346460194092311952417454613224504932738, - 1900462225013533249140457703727169176351786259991305560412832202759625668041, - 2665631186082687279121709429531834469477679375137509769347092380798929714377, - 837840745988147279235494664091280091563355097569199320366973125128366540061, - 3391544118305848781823721719916289805455110924839794510205940718821197620955, - 2888553035909938253628892138500390690221493345071933642853222968481016605919, - 3386241569867597612447901482685846444743718781330869478721963580925825915450, - 1205126220630896984850042596877918177217334376800874965105642874206963597698, - ], - [ - 3590072615491710252422997155203204584659171612188004116415640739580250394190, - 692469013329617220154003334549812915100479873898898958632988703738125356983, - 1623178235190707102808841905143937367808788834203621005714003335195182126335, - 1972826180775011489122426045504602288576507493792470102803637471568052321297, - 3415141329098504418158191749675997877417539760075593313736376750580696083073, - 587811537889727046473915684463981273175495137461951211739526104349163747811, - 2523982964351069134084525951849317400231659428055762640605248929856135518199, - 2686176526711834950207666047281383173339057216783586039351834948812568447629, - 983144446441739425577690449774542566745526459152966545642451764143532586964, - ], - [ - 171558252019175695567663688494555626159399786667979998273792882504784080805, - 332337623010057542760158225837623039780806442976079546879646069338600179518, - 1264669683963885571544813806669118319675288608634733888843804451222546848295, - 2426165115815723668018318268486497504249785449504758403912155206515511627681, - 11387399609384288947733630450855186629703576293221897150193655994854764608, - 2541728569046079092074077754414781968906176513081761690404588216304985421091, - 47685947554980329431290582269851186106577733250761848107645535357326439312, - 472176388418187405374813530639596064799362505024895746833751173199773896628, - 2764298116617383397920343358525617195195060562266243809245480210157942112738, - ], - [ - 486863835068754002670800862273365477867695879270721744227071001883208334054, - 2973492686137102577527656941792991264994301121122130295965761350095846874635, - 178385615141132702906181473263873416748818415607305319148067639744074654009, - 533624640096756667052211553746016402543259206286603356120804827761339634127, - 819406716720171922688026098737835227857400444543748198788964759773510472096, - 531851793767260921861217458033110066464894334064526987603936107947006031387, - 3269709072483585277009748181134917746036523619604017812342933951952104134829, - 838191718603413598040249006803464503100808192944407407147899973659013630611, - 1574561296941310904780257598780779812250055948216417844567262310524022037406, - ], - [ - 551394354289003977607664358739006072556227894953233419144430578080352094737, - 445076790942318675726839050057337819004979443030540904213920669247413907302, - 1963946696292687224902912968478695543164747600779913024040878700455222386521, - 484284614181963381509745298932402076252103342403432879800905151752488144767, - 2240507606126946994415203252302826782042951346966859379502140796364876543253, - 3237135638753992982179886898758938279897590886053928839613434762582576319619, - 2334333034701915027889533058426879447140084891006486138782876488162658230991, - 14411091399844539897439754491034751977136685514851444574462584316609631592, - 1264480371592407258420308876448697804787923638319277097663041109464608464284, - ], - [ - 671929312763821646360589403212798993954209530574443543917757335777610372144, - 2513909805455654095962542944994577107405216428214873444765576238504714067396, - 870121102846043786263357605823753628974859886859187558617096145653709171231, - 399132620893316356411986266679786708905730068946836982293484206366500277754, - 2855046250836680633532995284655778407402587437073106249445470889390454667586, - 2063679741125384345396981490971605710211281905716315529671473143278849561151, - 1433753212258929925682201698758056443128516570551146995210728194816988328337, - 3334984763425011856632257855270507440816274246647423607159847074739331865077, - 337911293622078184850923533628334646725451591671907148383867096651211846605, - ], - [ - 559587005295238702015018022040357402231957131094636365177008701077975941644, - 885963059604819264377490633589388189646118257469490919900554134369512794660, - 1957748763518471091057032383332840331641373304981058387824598000170709016333, - 3175295982155056798972302481564899381103533409383494814704562889625572018450, - 498987160612401618114584726510347771865331516606886613019084323862447372555, - 947374835104260364630171441676101001841507588423166778786886198914150312958, - 906933977754491302438795274167251538820934378773708095543613756654712689280, - 2170116291766863179909957030577284618726490893598499117272497866180009722894, - 1801335399574515889082584621772588704763181408217893911806726119813067220453, - ], - [ - 1942500232535842474530840356353427989892065499159260166135596750084681859966, - 62936080219825306823124060587235998278756755377419521154040408253893795176, - 3091993939935137795359769774909373279950941171574748645375255810204590357753, - 1283528386884634267663661033944552098742115012555712906773586466375284501324, - 1581820717639229420476069802992937438655873471854930764425841549067913106065, - 2301986095388751633126546121528329200085681648876910655269533407603441046514, - 2850003828037698751961753862613545302539465803982364898225617297398939302949, - 48024691078494936445046366770271288984930221238071705874025261821606393528, - 1482336297033144958942154923925185950152551534403871620222916667536030875354, - ], - [ - 3081177564717719643771186007689458633949181485535169123213511264603782950049, - 3315701127039521853279746297714590495201061397709680410650043502532250578075, - 3514407611000441301995070394422463400067690470546731164089622325748803106020, - 368970178199930154322724953487299516224498421233447528815195701420122548537, - 584353160413525267849669053228533951552602295860601556035386665117717227391, - 752038702160385294706011538400822066722189014251268673051846350397729870418, - 3594041683498798688197194521326299097635429790757880308152971477196489335154, - 1367902435756906062215608264424138718742854099315395230911274560900857414183, - 1828549068951502746189364466794037234789986878381694857475972053743463890779, - ], - [ - 488172495141237210878388657234137733008417573114482400652274985829148564248, - 962906242461930394022372340919543491337923491322497419797555620396501785566, - 2275418085010046236619290386129138234541669589549771944697082317642065048898, - 1966395064658902622886154686288219600816893261614483533899715888994623208964, - 3496095878293416917311185659829821476802828534554531050412634978086916288609, - 3368478822390537245916137403277928093536087427951052230723275731232142463388, - 3397410259276620127103231993277518800970669191016277541098821699302368873803, - 2662600899665871010006649609856695263727220473364611552472965243032255906029, - 2854831720595596992200155718152374313555878203864206470581502555480894633975, - ], - [ - 2417859092561967752135741161218626374900182454089059862468108240576782064037, - 1064506915903089299531724594973601253341866933071158266140674053459433520889, - 243845138053687262800349059300355289745206315347524675450796070948867090098, - 1952653154963756062322124110012629666160000286707762177032475477295929736283, - 2760979128531476595658428672038276216079708408852493051222686009638650156041, - 3341178930260137001230946104398194306290005446746057811731360203227371301716, - 1033242545866274439991875444609632860132556714736615395036273942261573810479, - 3567973410830779135148598005871071456943945697865168835204985462698751038238, - 23014034649293369426970379738102323014738017168969687350330825050016457105, - ], - [ - 1146720508452451012445869043641390200263192255569203352823376998708972325392, - 2553707028642376593497768606567528232999203496079990242456254686325586089356, - 269729857648436699208023125596593246149228245518586029792966091405383426269, - 276912682886955358118649215147238115764108757952690361549816619060658800027, - 2367180947887796341722261610916728725977893583923967218630363334645641817362, - 2398694802751362950028137620758033447242325333923222365760836442417755445092, - 984868389243025029364428136317275892280780834039611841422502834917752411391, - 861353329558771468244040268521983016756775808329676883407171471251365927595, - 2498672969617384807617108262141800974986393948110233099680635130601163654234, - ], - [ - 1336236634145657673540555267430353130305889434115514586892320600753700983325, - 980337801407886250576371882962628290239239581416378379141354256717803603922, - 2308558359523317875952657835109605515063994805873180719205156915762120497245, - 2116737905426837141304542819940293184404010538896700217242374222514653607487, - 2143995283326808680518644927890182524580312777400009071739277407358043120199, - 3038758768133404431511594054950351369492648883179154555267474054094234927849, - 981824005865625678985009911415023115269386212492064371040001594972137748141, - 2427990511715778580869565219059895697855813782250850855111162965998948386792, - 1987498156785173719076522405088076990979859292718600184358583152317049836167, - ], - [ - 1633834915134208237423144264187482951766302060112099587851513525797020813799, - 2895454976388515752029424688351979030650325184941524820409482023485820781526, - 941019661238578826272324221721825852217063629464317974190162904813488515671, - 2529926057929249454763690180607677568685011502604470585585763159431333258299, - 2604831509257756199338105380847564711923112853239827243306562341166492672823, - 2300475954087415591738767759767032267163723345312082546282694920273655145455, - 1954000528502201000509342111010021527425422549437946241062907964768089317082, - 1179936151696782249912570883839105595634344582873818018332922940963046083567, - 3077707030301573630126144767923697288658782137457660869231140049571827937228, - ], - [ - 1062324397142900251844488719868780667589966366756786302007970554437994421840, - 353718609497993885193404630053532608155520921625518104461520254335222009911, - 770557645309607171206012551080400276506165720184677119001983749356594531977, - 3043628430985247363392058521341757139056029350680498644930013342982472853636, - 1694968537785457252742656255724723357998402478572600479401200420305593921487, - 539865665379093791531434211889371819368504193082947002067781562776138072582, - 3473466148775696692731190426971123680342615414200262605154732883324298196699, - 482783534456196983135936103604928650836406142744767857356485953118411089098, - 2389101033971236780034779577432189630800997581132154923233144722790749715251, - ], - [ - 845264223568475649981141803833883014312596504303895519674002924871878791033, - 3027004059915270231142566724881373969831662022738947178800901294120992473905, - 2169574859350740480088697859610203373582027214052754592019828328614087431593, - 3515527080764222354309565181793838292349410992793070639041305826153436624160, - 1817926918350512904327755405973355211358017834277255662858654992240629698587, - 1999148133619270973098477176176178514394558202995832714883251820350860287223, - 1203131300029280096510929599113528018338088236684405405384757591977164161039, - 336815403657101171302040383579077521911288747438919304948637997306314852594, - 986661060847815533035934253464295060766339947679669645818832311132001095573, - ], - [ - 2291116974939980228917916563988261327966840303336559854772343651559589512651, - 3421243089992476528970346847858594146122972226790673723411896208702859892637, - 1015505198663386486420800821559060487156096175034250154764824837183581949724, - 1165880582987807286271819576391581724550686829511475839624601920297855380101, - 904232961143172831178860280790910264843503022179578981166030973682571903458, - 261322216292849827900157598748641385787016033372999683866859675894253115357, - 3060676319159217735181388708455879854358158161989877552543698103915296690395, - 1175560144527845912984609340783959238735643215413930887771084560168082442967, - 2813871258576082360085006002528268796351819524936446195552260262614692343332, - ], - [ - 1841341101531851399935829271555098629075809587212843292354556374386667658235, - 3076135575511709688509914361447080149794919016880133063891720256749999834767, - 753111801049754117414662684453226478940731922961768343984187479992842213733, - 1405657437118503342762241742745888533114216548278983907019917904938403345580, - 3111186124713876864436867307979940633543281080828379725576742174555539054855, - 3404463650394703220454952017098727360005393139199301323890695570346564876407, - 2024087816190101179456573591359233695334184711688920998987373624570170649371, - 2770035625774572095496575568588054654502991645588385802705097377675051032967, - 437058215235292632621847481185406671372191763951486300610124033096831557414, - ], - [ - 1345792773780982398809956395232061067669190682958320579442454533085407626029, - 925357273912625669941681596445839316566672314870287993638671283923476231904, - 3288133122086768300615066039539687885053110015077924175836976549020438910830, - 666190075990703867784232802074474372379358766701681865975596503982238839889, - 2664898601165892062970298960258838238925231697327906221693001926762280012052, - 2075648691532387787722427044464731934171216054855867223374228487601569118337, - 3173725544188532489243684991828985285646224157242834030308807120745121062293, - 1517474443612606408422643323550409253700128234157734252330869178582583531320, - 1593950878945144789965609248470060076911813704207225832606804796819386297511, - ], - [ - 141195541167651298813588829225208004611326987855926870823948793274702167509, - 2990187949585642302497822222637786229364740008175968941859105979392907839776, - 2893807105405820282316438050347503569385510241526138409321358916388308586443, - 1379719211597875648759619903854862028510320482486109668868067715175935658353, - 2702780364788282233075255946852944970202849869091427738791947810055591218061, - 1825815734419326277729273926504439575157952821379179501821641713286627304656, - 1481344458867016048625916723816339719872443766684158199301690902395849166360, - 2014084774259125722186109781197998076881266739680534358898592778318128968629, - 2612744185006548312909661512508122065214170543806989291921289897662387203493, - ], - [ - 2486291022451231582267428921150634472835925206862678364689227838329114330247, - 812732996628201940153942564646101963400632767332933831280853155218614715080, - 126094682124221985399366764547520870230937998532279902936706662398013374632, - 2332759540678834650043926399670560164966577916323505669087388602300799707582, - 417191197992716013378878526313154771760403212629214986494703061292527233746, - 2089695210017423032908516519857821046462345030778030443813231752571445398074, - 880130585759037753170821264662529711124286445728744366574528249671219769601, - 1551035990733507525502194076713176690385235627749489730884099764718693503706, - 1132770671667828892358813462377576622449530992975751082967512658313635397452, - ], - [ - 3477222316243451282030967342870586692600879585927570762883148422885177880126, - 3080049058291678698646192553519619053497714415866410414497713306121117176090, - 1604321402782785895646105335040390686287908200515025966267355042491672981783, - 2640938714210250468234433425076241574348084323298050686514885419623248929027, - 2564203982856531683007231108444184587768076678433068616443890909754654594865, - 2687912506275217880298166892170509500356051948363672876435899024071099200810, - 219716020372543256705510422385089985052203154750380145485560690582749108271, - 343381723849000976990296963636087269772788073060444255835069282725333544849, - 2243474000809211591079032482624491823994182313028504837036812101739092732111, - ], - [ - 510707836913016174166098345624702361608064144458606006258116870045128076276, - 371395090737067725542496261329489402726694621471574145027700711252296092473, - 1063936043610565176608970195710082987360134144899399196834878551304512136122, - 544707720186375037932894106759995513684682995260807905779948137170231203256, - 1167581841056359475252426501351748170006442279406978740226100882821697834875, - 2550832549603049808978315522912244192974319892613157360685656734539894800744, - 3050015272873571595886269427380575861071080053492605497359904773596428774905, - 1011138952383662635782533249614710303961470589955599508778623276087024115070, - 630974866360574675289326518371838220431993802135457251698746676305736993797, - ], - [ - 203336260208331554126199732156890427228183089494661054698930408652944582869, - 3340804894119433054713915867442868712009757981630422971971299923461800531010, - 1840281959034802822119513086413059992309732805524856821387047633277185626649, - 2134263600932771904379797125986139141034552186204251021670285390319319224609, - 1275868496238635951012332018362897748265183406010767949984664721625592689653, - 298714102400683025652859857895440654863429901709343005052249120979010481936, - 2692659901233913137581770307185590409816893731730924291707794935777106832966, - 1840634421045406926833254909533036671121305540964021228789778425366681252995, - 2301592761308273654183075324044125709646473530671119594254101577087371615481, - ], - [ - 162723356986030017850051267522864501486478603105186334642960445150366835159, - 2729313679044114139039373945299938550926303502785599920261582606464605651657, - 3473586674725596522829788009544147142400278838876200185683456440105928043211, - 3138951724576997730121663279551894343616534419583092341951468898219423118787, - 2518000166374405494855134931903765294665875855550695091224928394843097721999, - 1338394176744138783874188781598471556143029818796535135036649234778643394639, - 1209841960776472733538070759590481368220441166797021843748599644926482551192, - 547004697865163135194331636776941053012397520037333871290549155075914424489, - 324118807277344035751385895835249523345046875466885854334962332443837176612, - ], - [ - 1524371018506881520083100261651593835154891789369269410049381152191875690939, - 2612389582313939197668814396193090302216660659216813115890918370127340511529, - 3505012887659783602149472050703708639076651779286533348447644142517552213881, - 1400071508461817921137460497127856799560450070978864352002725939967252706688, - 3270992342534985112288385686987052502194283383496380206690024960989162493923, - 2714867367702858160499089419828178114912802960429177662569393409273645078755, - 1813755227762834544802021422835497922586025826063870003206286391738798681111, - 612795972065596844152506740660641174406736839952197915229555506451133128130, - 92404824162871001762374781327909282618644308692517473968425500791518935532, - ], - [ - 1417481623983314082173247075936417600206988773674942350244937901220619611842, - 1436370808434979598032842810056550162095968799722845041329064542251550453786, - 2791141150236052110524344056689185069083340382119727545540275139412603089360, - 844354214878019955822026369142277289422931221816096016943788963230169488347, - 966099903169233717288359622432098994220421693645131311106275824127212467886, - 3377442662368132936445679305267583977275905253905155787275539847677282044250, - 2993456326224537444598366195723759444603769788792265111656341721542375533386, - 1212355518443369118612977724304634146835938372332839927952065713321849642541, - 1971134155048336439141258732599011979565847576850602548531879800493479147831, - ], - [ - 2948442673077096053644288919931275452410464348650015017531708506350479915604, - 2842500084084483780889596172799288044503195998225010948052696608993167985308, - 159223381676530488468791209323333278819534705147966277398763088689596796770, - 1421186706283245189365811773480897972940946260029092196036903184822788804231, - 1576285470010981292429990973639485653180449701200855282138032050861010979826, - 644590671463258847126424543613454651505385158151768911781893220267542566451, - 2088606836412636464057762283447107348222917265252172808200133192379971942897, - 524873106051539924609019910231823992913728344364154737926035425102983890829, - 1902681505875019185809103747479043540171029332608891955558485648212701710295, - ], - [ - 2963416888451418478934206047734203707107862076855090639174282886214224232590, - 2256582971290889516749138306472335755629812576115382520518177914027594030015, - 952631286373337347146679632202839367283048060646689702188339656311873403649, - 676315845378937954265378953256197854230739519367862813657736566229968723226, - 489890103843776265775697540842114573736731262399827559835772741174386638653, - 275533488137297947276426728685266658925238459497144024549786978615126697897, - 3150016598495782867686478036323002393045877380357220885467542798491995222254, - 352436965457163447430854610022316899237536952054748594528867151585026141786, - 3303745650390331235413694156771963791986347007401791376770303232959532224130, - ], - [ - 3149214618588432551359084716320073763219122664674260148633992401279648082354, - 2194350629476186786204506136350097947050675706035590195194968690821216220424, - 558554623896384781750289610086616338774638937494255437861496237046841126214, - 1543446181040850249298033079317080262236611263061632213418048205161606942147, - 2783413390060037392074504680410414696446404944828450566597893824525361890127, - 2055992183020561120315403073370680881768702383915559710733023236255354942657, - 1568126437333644302276753203048405726979844657094047665715779674342623405197, - 707829630087701305070694836599056258256708212664197066041097917026002238757, - 2252590435322323406991091749783982725297255831982560162740712198004279897382, - ], - [ - 3414277057275624795468645312087423885930770047317584725266868985293775275737, - 357330551708988499823018290671739176907440575701822465426819865189974521090, - 3428047733715021011877942034473291498039287445112813833854782803680278440069, - 1043945649053487250558788276777194197214478124443377987323772475971600044275, - 1469460322863003607492879995577086600157279186691895799194170097510240503657, - 3452262498977433534319003473019647409836444073689507898496981033471954432692, - 3534454944063490575696966502029196669843948083535861807335597891702775537827, - 504889234556666427889233485911235515725257826427678498358140222567732121951, - 3000171231450492275601684733270949816745478414622439992817489913400513187523, - ], - [ - 473344561036275427204696962792021746974763386915887274825159398998397905862, - 2824419001338463577395017363382176953618246862173422908321298916732698758844, - 276157303331122459506297710167780793574709801408053132694472091531940102749, - 1767126433744673966278949688006551627720382111902647199455335267288281901267, - 778371508129958354306029607285794841001216014731491483241343727697096386475, - 2060673543778466828658177786049207685932107709257715075623113635406654467437, - 2860676522337563081310698854721936478848971007435036567835120090773720175531, - 3262510727351750340714257327383552567238034386676492645712194002264757448395, - 410655350050585015766874351843827567003172548802452036490946608629058751392, - ], - [ - 2827263689224541190235861986546387369088898813374971256828640436727276698005, - 1514077354035963899080972727313056839216320711790777996707845654692177169187, - 3332693034467588550421472219898251786647881139569903770359697960255197152702, - 3007104381810802394459850070232929711131578783565218932138003600309376797560, - 2932665190269762050514701409323806367759614127088809581305948355211856774225, - 942718997016516390282229857310324888182449186393033984291316546136958214880, - 2400532728820810155472900377882395992265080162940855284148299631746964151358, - 3164457535483121098851726865918842879335471785231376367017871839011507508267, - 1648716579888909218649627372041449799693084010875307922394019079800491124582, - ], - [ - 1934242140720948438923230016033727738635573691594662657035348523706144094205, - 2277804048613250910599596855640203977755963614934292361665561843345094228215, - 384257561496636646053974451942543523264327608081620342679433477243420299887, - 3260489043524397625633128735671581987213312351572930450789041333382286287986, - 279070612286599450107875033190975910776325523870775266490876449750245961006, - 3039177956074048733638502357208417075028657457004224701487457659813896269304, - 100801392374135250696473401829025873649586861459235004636873589680068168268, - 3068313315437337860119595175381524901467292077170355679568672469120985400457, - 588106555382506420101915681098403724169724022909292234591243446113775667213, - ], - [ - 75961998937141302694836565258195150116524445334036399981735777128335626231, - 3608935017459267131172339836127755437145588647916492113428426907730795865883, - 3236051050769258590918696174706128197063353779612044163931711796204384140442, - 3309927932243836707712018365148108219947040055542050970773346172395444286249, - 1379227675723853968298581390344831397477249447398598089307837482927225003692, - 165323930210760061480244632239128995890332884701720423985079205737618806819, - 2475823599963409732228794431108330159053822701972775719440246821411564650255, - 1376060040501111569715383702072177789240761888589668356536964838748610100476, - 639562589140844568139692421566168917777089056646989753560446326200715692412, - ], - [ - 3047370481616622454565807419246844668173177741649030943476057844430253426974, - 157119619971929525114630944146035790688356535500319447899447824612040346959, - 334768068598928901187698267354645263248367437839430885400491100376105177886, - 2999613646055101445087772098885448626056438764387790604431631715210262174941, - 1785831512299493210816577583089927171421814238849132623068418504178963027261, - 3556427232337965902002928541133161872239549155497678192235799639847486128081, - 2706705509664080470135334444730395281633858323868911855455046340983814692442, - 1090032685324965784679005200475480950652104203125117840183419564468432429962, - 1643133985696466912534286392910255558561006040179601728596127987069390053398, - ], - [ - 329302266402754590484707677978873120801833097009157925591066388167548460499, - 3316146390500601487271157807207211278218758546448493160523681436395289596578, - 2681938433358942943244890941577285081894021667357031574395153239058209444370, - 2067238577865192134707566720384689533371052666609238015545263422229486503441, - 412271328458865646460658202874645860938234007453616435270989459945178575742, - 2792582012926756828075048145474984534641031685450421135557201667753387225745, - 1748970797169467371218114245079143620184931692562929567686648283505132220611, - 166779541379814762948723221977869577989885584102038142328172709132371681331, - 1718971763375134636721431116431428192605005483084769258631031214253921160980, - ], - [ - 1436299930616683933649301741282810391905249199327936803818840919613025561181, - 2875920053658101915307791237689797149489720357987960587785172376007584434320, - 3000419677058946947908410396971077371682245985518477892763489598681401633875, - 1413256889462498929924889839145044830455691930479604473324291964006718193824, - 1600037792097028101450492536163766343228131758192592850408010325038208202955, - 973329069775852414867971478549643476764552964842715137707967836988424245238, - 1532059311183943083612079860057298798791038692086469511686852327698505963951, - 3536283989096065939191562794433690513848336262934373276494028669651364247483, - 2857933688084893698076909605577507592108431187558278962904406878515580235662, - ], - [ - 272797172757537573756500804089931431567458327538136359626601095094674393789, - 1045128690302280255544899467208602865672882241540377152077343422905289886473, - 3200120615444753129485047842423681872983153371687851942437665480424097552125, - 1025504106593918423924677374205531716297332772439312979700130173307193552556, - 674744356851299206878268970096766963588578879328564441712019516838898725214, - 1609778216811431081637160306997709606840128097578777515247813601008686900086, - 2211108168491428594212055488285679191337293905665349430480096269957054835619, - 1649448666223104911635198423466058188469512490509406959796198664168543133217, - 906042547538983329548943206515268028717838344283002532670642274379411096098, - ], - [ - 1229127748324267899463769431290803696864996967654860904076344202160069493463, - 694606667190814467086988364564153489609585429943155940697798862416909775672, - 1592639805143717468246931300907904427290413949425546183468390441675978775915, - 1785889417608655647591163755998564561315877835275317710969378211469233762677, - 1294069132957389354328420391585032975441914042318792953068374097543807509412, - 3333159250628803611558441380150567856661970319200706984329458467559186869982, - 2540613736666787789838663064746964381154591884964937002054194336545461092103, - 548571630140346099455160001561583481829470352031172172187303295100627347516, - 1911163942566753468249199036645451742783432402725781069097124782802115980106, - ], - [ - 1566169741655466458474413484644134881358625195394589356140489347664430729712, - 3537610921555766838501849891871545683341751764656851439054690006669870438058, - 3437684618728223910218716316085312417744738173838414178575449857634206735809, - 813046346454172182455055202163272729806109580740226695044901450801095723347, - 3610194706672489217931552174319141024421992647209516204667924899348667966232, - 2833254168578771153639893877294157445446616980535004165034754727569676418284, - 2537294913318276985372537712808599671990782275925115219838135858224298511428, - 2816922400232890669178938382954868512735295101148126878852482432361899464987, - 1301373992639164019944638195915867572888563057894488037629343232815736054372, - ], - [ - 30269122686901999045330138769145373364975048768303424780970735525647821165, - 356159224955021099133353480091253648569344282023523558363785695606414127329, - 600052282626545768175547540446111435882695813436056853597197852957971840399, - 1393243493399833062127515217694874119383837723584497237702438024083005513462, - 1060805636629726176027688725545095691221039090692064592351486203173227943326, - 2398328949908225376099395729927210145814986308688252024886408510027141819624, - 1027281430870307091646645117465907486111170082857695053934837112758985550266, - 2076112470336619898923904084203384284604476596459703906533388026110854643018, - 2011367208019507875236050172752393113650516827864616858695277293233244879064, - ], - [ - 804914370429933356444378397674249095505369793966355853646960826760022114161, - 2158646815209463860645972884633545865640288974960112440598371987666489006884, - 498475102886462996118999389444894502654308137162019779967944609813637566383, - 809639446329314296425012620178736609148314475095887567348544422353931446975, - 1479303399819900931440438924175610717353979337636496822534532750338665492976, - 3352120878323955424343267265626086910157959907203377433787032992040430037562, - 1270511100947529781011301573057039194696255581414220718655391463906841072850, - 689572637145758895312302669022171294981059955204139497945712774253729662901, - 1122475403051339648113208296437614878373524580008296846892907280965803100853, - ], - [ - 641604857394585492096388516561146514646134317495133318214644239362918944492, - 2691745406199568825008867086882820691198132400226768616686473031978181982821, - 1224973224916812932131086832888498146195158041774775887347790037361473452887, - 811390898777213738295965818292524006980579206937824475304433419624727781766, - 347179045923147351917084398650647523202173801383372112704653398073975603306, - 1064303630400492693929054233571088398067218591522507955805149302992890156755, - 820775428855912251536626965649614471106898535301578322360574640298974311119, - 866208913555356501781019205528106643401044938943193294071944228004304549302, - 115514195249410651555209067838633330944755543155276857330146984494189992553, - ], - [ - 252132571003241182944439318634676914124325328500654373824736179436132089371, - 918322066933917466678813178614649697530783351299306085426569323961308925124, - 766241351978071228951162027086616534232672901288039218284796628577416567591, - 1448399122174431849352895941276893258430417332383946295306353017316599812215, - 2099501180164069593890241802207504080377984062090282167163890371487263686521, - 1887552197709345902087901490475127143068068193908591855053479609600129142802, - 3167283923390758228731408378921427738233030621434172014976298058876109690337, - 508686164551082010580548770287093053248626588000522267893396768354545495214, - 3415159336868755962995911546854123253932713316866684932328582276044712780080, - ], - [ - 2831764371933474979950779312697290760187312456589808951378180899857832717639, - 1117351349181189733963201040237413388935342858658594681119886010479394763185, - 1420344791206686908307768150171158359915730449074218990242033345804165106152, - 1643540202670912441608564328198635300607080830225622467080761959531637260283, - 293312804005180449748670778178943484555210705473649470857298453257087130492, - 1186610420650578375868363314506454226331822479524760138229035647427964051716, - 1604658647191427346279686363933966880959339124184041241721592313882511736515, - 484759536232313898380688503358640565178862575742191365809319629525339917683, - 3202333295994703685287153052574132921523738742185074162720736789148029449424, - ], - [ - 1482052875843241531506801762485775085498946225895688413744448806512449149440, - 3724080234815511809117978863691836504457082496928881122664133760178180146, - 1389819861647017358890044627050306908519765136528810636287568285183073838378, - 1650597890916495871025613583643303135348065935114713531218970063420664317715, - 3361948322900994977384185274742310354794641154846128654363051909595010663191, - 606490196811628907926303075392698205884777550525694322622323064115638852469, - 2845332504396589346252475371552863304647079482641751587397482230598384155358, - 2136828430137749250921158430711688663921763557428106393432189490194175179567, - 2603121009100851709852932766334245652675653582444315755067293083596931580826, - ], - [ - 331341793344080936914289344883827755990554515948269616129569306660131329876, - 3078553015281630483814449041146024345591301252745271183458843353665386810124, - 307120557953072399284510407921150554510564871245541060187779733591851206500, - 2468769428341458044041338885525841293986157073329084708921297873697537277061, - 3470102986790831831320168275548472759024412073013424117456470890923568538969, - 185827255675927000513450665380938300662293969530647403860544937994658162295, - 256271664887389285343316871108143200415579992975868778275807315123444726952, - 1827055151936672706000449563668403829196201809444560569513678578768485237432, - 2898288225310275494081066784169817323302183937007162941742624282571076879592, - ], - [ - 2933565141237935770655708722788647501044225819645114807459401410600171852640, - 3416738743454826738496238980980915871713488488457863319506383180688189671463, - 156745893443626187896900550568972819727951121030890394112507977664853175542, - 3283724874882640428716261630351374095091592321096542490875001878468100367248, - 2437699711294696051214668057488520183991546049686213568981682751196761460783, - 1998834570607981674297357653990763238896454745809690982734870906626522295154, - 1096540447778541492593738030843471118116491918916127095579472567515081351049, - 2356725096111069909664338128980658292799461131011049019345986278356452801509, - 90738053114808921116584031195849142116843713567626295867858407827355050172, - ], - [ - 1065221571786594381440761503832908269645361161878122237424095643997231918165, - 1195990087128285262618723047052073662178730708436833337766606931661022097316, - 1607656066508654163826809933503382885732073531823069358637346724301610536933, - 2762835966374533264573600731662570950931597693724669372026589278609779908826, - 568252961304618278068351441235345329515963995645432187413590888566600731843, - 2219805657753619149120152308036959543217034148877902141350385368124440712041, - 2471219352232612737870285149160422977220823386008501313407086981054125942755, - 1702471122844746764510101503246478299375527044876047633765906492860562956831, - 178158973845331048800858217907253266280421415417608633952918717073444360077, - ], - [ - 1153865633793723796061306601912013669438562849380300788791898894941171879867, - 41367034604651858530733678658849966577549188816983763821535989500367860237, - 3468975051489737167843258844554598541552116649054085165189896125507778910171, - 2718226429100290201519165335140959318567294079769437231856399422036987403743, - 3138264754325604917892008246627387480594766630821363896103414333654908043697, - 452694917214803822630598832696287753340679650820606009360737209240673463856, - 1603123741057766982141435126837412229530685362067398656593903838197297519053, - 1193792879975364000281064469466869157446260053337714451909340494648447350193, - 1476795076054263416671130521198457801904142955089395304031729663471081483546, - ], - [ - 1073394976549991982860753364875848742057830634187089640520544760304099031131, - 12007820177468184443440805587506371537708859344042925721341207902864618809, - 2766330776097073388321947747975321570195973271822057851486276882545982239753, - 3539344711396861622746089277246522492983047589590730311661029157147876642889, - 1287500281621363829200752319301391571585156066582693266650037160454386034877, - 2474809947251385063203264736234472955139417607514639842994842370459673548508, - 1090827000220799845492329208329070826899434713506318291045910946781450271361, - 1208187110975043071759413865930622508584020862848375297316149643463496236875, - 3522214401269180332717417631824364224045514177765449931933554174948245884611, - ], - [ - 1520517774829211001662571682209457816363819713230259186312785715386026455755, - 3275568251899007960490753034525695345933766783786462506645639429108202874328, - 2284202457616215888687289509591036742794255009337643292891811240272576571257, - 2535235268866803701211935534866064901669820704204096676755075835612783553811, - 2839362767432080323297677373074471944327172550510674458187351463893937186331, - 3214518375834512592348237126031721467989525832367883161733061449723999150118, - 2329153502403362970616671016159127522602040117124995198540583682232363600232, - 3420309094711218658809805672568522872905261668445363456494421365528062786202, - 2507088055041455218953393069901159963005432925013244799639700572631883052964, - ], - [ - 2337849307492087578069275925125951001032772332907054786449171586159384832918, - 2012877529169317654025016586577098886488733166479383497492969306904591860901, - 602600998694877711417647407990291934686569963025819634858931803310496018058, - 1249611543976194883260410167047725828859756934350285667009827661162016018291, - 3229907636814215019750421069714346697511848423032027955255403645470309231391, - 787676398981677674143810626114223934424207908341477909615732862612515545966, - 3612199473207000589199482562201460897465129412929949343688652779696356029557, - 1016987341341765579099676602014487273787741430354734798713650301682207364304, - 453098757122471941839930595635449763736620895751362257490774646281426254551, - ], - [ - 1815454752370767836141293008049135079113332486270031909177283437543495067754, - 3245282584545343616427404187943756711998110332856283245484853607901000314185, - 443658998885222442290100444193924612797825350037332845912258127128636142226, - 2108619171489959511807880889959477005490266295958693408076403061526818087511, - 1772985726030040403572787219827611302253866172284594261034874743437382906478, - 640937330264976783330810143989997808168068593798905934616975190899343822788, - 2510583208685524453846247712654458992765611568298269433587411758276442175782, - 2907552713090903183796057780443171522666351119543449331065433394645714665493, - 2986622054106443824712535411931198088564985346368672496084094702115400226223, - ], - [ - 2618489700742756590659194734210220484174095805234294064111190699593988824340, - 1200851025280500486687543486735444332101238719790882621083370551852942177405, - 3306552336993725925103654534726585806268627155326783889027144975342461127617, - 3063542570260634805676359492080386970739188902062508927103821964203448748899, - 693003505378768484084486563892808421476039758279021572360026314704091146922, - 113467301561825352691896838102538232200187791556817508708373190844915757366, - 1214962046792065614084887870531889414817599577403445208023676579375118127069, - 219931702697909218595054310136338280042135207117415972689708135890367124057, - 2299725564014674542353370738912933567417489814263486112453515707115807564270, - ], - [ - 260233584167947455747015104760292950169865361374862033890032346147682982796, - 1780703740221760375200878259448067950489014812793850013015302976245316733504, - 2383870415174999450723223179404916004092277121478278309206856807272068323684, - 2937368232441834976234008899358786418457138987041670332617183254283354637959, - 2406359435023651609603661114132143048786533960554882840039256768987182372852, - 231078778048132625678776643951718309707010835988578653090554806633307921704, - 3475656777772243062915421465950955719385799280836882507132736647388648674730, - 1783817692892336259314180968996727438415631857960427138819319518753916485748, - 2814669257730549796627382579560684008971866384238873984955778334212024900791, - ], - [ - 685104779919414425856369032641333716552797615502163759516808340297338511762, - 112000061235888205687323759599013614255254726193594344536758680799184184440, - 1477626103014375842350097316636436071769399650789122440526416121262928558251, - 2551281565031680325132974094806210499031206575513882264577066072598564161917, - 797886210833473888794489228430182508879229606374651803892833025542322720406, - 2999021120449110671151992783291563057172397738873336786308341776029203847275, - 2311005320858138335396404692971794918410784356925946357506788698318665827974, - 2631574241755945078711400023175991554794442449542407127074854924034466599792, - 89478174523017596977683654587638896709356120424128581716882648945742363180, - ], - [ - 628069625011893894806887911699948061285431249502284511487815354255836693104, - 978623052989028294483632751919797903497854881963346061391267437033166745237, - 3021230227659661694051613034230869483481817700949296440222134405801598221739, - 1156220034945735366820341156672851112857802387698985362915195492872975463012, - 2446404897023367563061392594018883328489149706775024742413333245691062894455, - 1244441075461083091497408546019267661034935144320653695946573784985579417781, - 539817108379313677761852492604530197489437745588702433813772949552343440727, - 3073648716268405480938581657784224314266703381723386131346496551049063861367, - 2709183972950951179036437040302528942114766487244535176623080235014108182997, - ], - [ - 787391019149521354373731971817315940033788745392581089786399279247910692226, - 1755559533401306548548040207182050322592808288955452051685841421921866320905, - 3213567648335950773542151377243862695348922745469514361721762984269360873571, - 2703912487522576350317016589444849742114403315933282695240096184576773846063, - 273813455408897951631497502332223109430025601208839182927658142888292721100, - 218163224303846270426737845311945689057427242572728992951873934167057934838, - 1764185184494493936071884936974760595087025165368964066687442881206262895565, - 2644149785756319632094735801614553177585742367501836729649700595851876818993, - 699326657338086091966713478713871722467849809868730193748776193820976180145, - ], - [ - 1118176189000254176761194276061708892166700652918775652400595344208362578057, - 2225054514565424910266955921511417653338574988258164518427057309914998035244, - 1818545623254888077335413379256467198727340831353087896078293590292347853522, - 3488506647515987999710532473612335745604073762819784803250746906631593725009, - 1075586378005576671344929828123726852667078929261341252356063364548347883072, - 1632174034024142215754978795278071217256737203073245281834060267799713628194, - 2472247059618781674374416681867329856736217646075691429217328692034780732241, - 3166691430454237912058115708595594506017768498279434006513941367108779424810, - 2276336540666271350049634783925295780447403042984180959998386955827218754396, - ], - ], -) diff --git a/test/stark/property.test.js b/test/stark/property.test.js deleted file mode 100644 index c02ecb2..0000000 --- a/test/stark/property.test.js +++ /dev/null @@ -1,53 +0,0 @@ -import { deepStrictEqual, throws } from 'assert'; -import { describe, should } from 'micro-should'; -import * as starknet from '../../stark.js'; -import * as fc from 'fast-check'; - -const FC_BIGINT = fc.bigInt(1n + 1n, starknet.CURVE.n - 1n); - -describe('starknet property', () => { - should('Point#toHex() roundtrip', () => { - fc.assert( - fc.property(FC_BIGINT, (x) => { - const point1 = starknet.ProjectivePoint.fromPrivateKey(x); - const hex = point1.toHex(true); - deepStrictEqual(starknet.ProjectivePoint.fromHex(hex).toHex(true), hex); - }) - ); - }); - - should('Signature.fromCompactHex() roundtrip', () => { - fc.assert( - fc.property(FC_BIGINT, FC_BIGINT, (r, s) => { - const sig = new starknet.Signature(r, s); - deepStrictEqual(starknet.Signature.fromCompact(sig.toCompactHex()), sig); - }) - ); - }); - - should('Signature.fromDERHex() roundtrip', () => { - fc.assert( - fc.property(FC_BIGINT, FC_BIGINT, (r, s) => { - const sig = new starknet.Signature(r, s); - deepStrictEqual(starknet.Signature.fromDER(sig.toDERHex()), sig); - }) - ); - }); - - should('verify()/should verify random signatures', () => - fc.assert( - fc.property(FC_BIGINT, fc.hexaString({ minLength: 64, maxLength: 64 }), (privNum, msg) => { - const privKey = privNum.toString(16).padStart(64, '0'); - const pub = starknet.getPublicKey(privKey); - const sig = starknet.sign(msg, privKey); - deepStrictEqual(starknet.verify(sig, msg, pub), true); - }) - ) - ); -}); - -// ESM is broken. -import url from 'url'; -if (import.meta.url === url.pathToFileURL(process.argv[1]).href) { - should.run(); -} diff --git a/test/stark/stark.test.js b/test/stark/stark.test.js deleted file mode 100644 index d56d669..0000000 --- a/test/stark/stark.test.js +++ /dev/null @@ -1,288 +0,0 @@ -import { deepStrictEqual, throws } from 'assert'; -import { describe, should } from 'micro-should'; -import { utf8ToBytes } from '@noble/hashes/utils'; -import * as bip32 from '@scure/bip32'; -import * as bip39 from '@scure/bip39'; -import * as starknet from '../../stark.js'; -import { default as sigVec } from './fixtures/rfc6979_signature_test_vector.json' assert { type: 'json' }; -import { default as precomputedKeys } from './fixtures/keys_precomputed.json' assert { type: 'json' }; - -describe('starknet', () => { - should('custom keccak', () => { - const value = starknet.keccak(utf8ToBytes('hello')); - deepStrictEqual(value, 0x8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8n); - deepStrictEqual(value < 2n ** 250n, true); - }); - - should('RFC6979', () => { - for (const msg of sigVec.messages) { - const { r, s } = starknet.sign(msg.hash, sigVec.private_key); - // const { r, s } = starknet.Signature.fromDER(sig); - deepStrictEqual(r.toString(10), msg.r); - deepStrictEqual(s.toString(10), msg.s); - } - }); - - should('Signatures', () => { - const vectors = [ - { - // Message hash of length 61. - msg: 'c465dd6b1bbffdb05442eb17f5ca38ad1aa78a6f56bf4415bdee219114a47', - r: '5f496f6f210b5810b2711c74c15c05244dad43d18ecbbdbe6ed55584bc3b0a2', - s: '4e8657b153787f741a67c0666bad6426c3741b478c8eaa3155196fc571416f3', - }, - { - // Message hash of length 61, with leading zeros. - msg: '00c465dd6b1bbffdb05442eb17f5ca38ad1aa78a6f56bf4415bdee219114a47', - r: '5f496f6f210b5810b2711c74c15c05244dad43d18ecbbdbe6ed55584bc3b0a2', - s: '4e8657b153787f741a67c0666bad6426c3741b478c8eaa3155196fc571416f3', - }, - { - // Message hash of length 62. - msg: 'c465dd6b1bbffdb05442eb17f5ca38ad1aa78a6f56bf4415bdee219114a47a', - r: '233b88c4578f0807b4a7480c8076eca5cfefa29980dd8e2af3c46a253490e9c', - s: '28b055e825bc507349edfb944740a35c6f22d377443c34742c04e0d82278cf1', - }, - { - // Message hash of length 63. - msg: '7465dd6b1bbffdb05442eb17f5ca38ad1aa78a6f56bf4415bdee219114a47a1', - r: 'b6bee8010f96a723f6de06b5fa06e820418712439c93850dd4e9bde43ddf', - s: '1a3d2bc954ed77e22986f507d68d18115fa543d1901f5b4620db98e2f6efd80', - }, - ]; - const privateKey = '2dccce1da22003777062ee0870e9881b460a8b7eca276870f57c601f182136c'; - const publicKey = starknet.getPublicKey(privateKey); - for (const v of vectors) { - const sig = starknet.sign(v.msg, privateKey); - const { r, s } = sig; - // const { r, s } = starknet.Signature.fromDER(sig); - deepStrictEqual(r.toString(16), v.r, 'r equality'); - deepStrictEqual(s.toString(16), v.s, 's equality'); - deepStrictEqual(starknet.verify(sig, v.msg, publicKey), true, 'verify'); - } - }); - - should('Invalid signatures', () => { - /* - - it('should not verify invalid signature inputs lengths', () => { - const ecOrder = starkwareCrypto.ec.n; - const {maxEcdsaVal} = starkwareCrypto; - const maxMsgHash = maxEcdsaVal.sub(oneBn); - const maxR = maxEcdsaVal.sub(oneBn); - const maxS = ecOrder.sub(oneBn).sub(oneBn); - const maxStarkKey = maxEcdsaVal.sub(oneBn); - - // Test invalid message length. - expect(() => - starkwareCrypto.verify(maxStarkKey, maxMsgHash.add(oneBn).toString(16), { - r: maxR, - s: maxS - }) - ).to.throw('Message not signable, invalid msgHash length.'); - // Test invalid r length. - expect(() => - starkwareCrypto.verify(maxStarkKey, maxMsgHash.toString(16), { - r: maxR.add(oneBn), - s: maxS - }) - ).to.throw('Message not signable, invalid r length.'); - // Test invalid w length. - expect(() => - starkwareCrypto.verify(maxStarkKey, maxMsgHash.toString(16), { - r: maxR, - s: maxS.add(oneBn) - }) - ).to.throw('Message not signable, invalid w length.'); - // Test invalid s length. - expect(() => - starkwareCrypto.verify(maxStarkKey, maxMsgHash.toString(16), { - r: maxR, - s: maxS.add(oneBn).add(oneBn) - }) - ).to.throw('Message not signable, invalid s length.'); - }); - - it('should not verify invalid signatures', () => { - const privKey = generateRandomStarkPrivateKey(); - const keyPair = starkwareCrypto.ec.keyFromPrivate(privKey, 'hex'); - const keyPairPub = starkwareCrypto.ec.keyFromPublic( - keyPair.getPublic(), - 'BN' - ); - const msgHash = new BN(randomHexString(61)); - const msgSignature = starkwareCrypto.sign(keyPair, msgHash); - - // Test invalid public key. - const invalidKeyPairPub = starkwareCrypto.ec.keyFromPublic( - {x: keyPairPub.pub.getX().add(oneBn), y: keyPairPub.pub.getY()}, - 'BN' - ); - expect( - starkwareCrypto.verify( - invalidKeyPairPub, - msgHash.toString(16), - msgSignature - ) - ).to.be.false; - // Test invalid message. - expect( - starkwareCrypto.verify( - keyPair, - msgHash.add(oneBn).toString(16), - msgSignature - ) - ).to.be.false; - expect( - starkwareCrypto.verify( - keyPairPub, - msgHash.add(oneBn).toString(16), - msgSignature - ) - ).to.be.false; - // Test invalid r. - msgSignature.r.iadd(oneBn); - expect(starkwareCrypto.verify(keyPair, msgHash.toString(16), msgSignature)) - .to.be.false; - expect( - starkwareCrypto.verify(keyPairPub, msgHash.toString(16), msgSignature) - ).to.be.false; - // Test invalid s. - msgSignature.r.isub(oneBn); - msgSignature.s.iadd(oneBn); - expect(starkwareCrypto.verify(keyPair, msgHash.toString(16), msgSignature)) - .to.be.false; - expect( - starkwareCrypto.verify(keyPairPub, msgHash.toString(16), msgSignature) - ).to.be.false; - }); - }); - */ - }); - - should('Pedersen', () => { - deepStrictEqual( - starknet.pedersen( - '0x3d937c035c878245caf64531a5756109c53068da139362728feb561405371cb', - '0x208a0a10250e382e1e4bbe2880906c2791bf6275695e02fbbc6aeff9cd8b31a' - ), - '0x30e480bed5fe53fa909cc0f8c4d99b8f9f2c016be4c41e13a4848797979c662' - ); - deepStrictEqual( - starknet.pedersen( - '0x58f580910a6ca59b28927c08fe6c43e2e303ca384badc365795fc645d479d45', - '0x78734f65a067be9bdb39de18434d71e79f7b6466a4b66bbd979ab9e7515fe0b' - ), - '0x68cc0b76cddd1dd4ed2301ada9b7c872b23875d5ff837b3a87993e0d9996b87' - ); - }); - - should('Hash chain', () => { - deepStrictEqual(starknet.hashChain([1, 2, 3]), starknet.pedersen(1, starknet.pedersen(2, 3))); - }); - - should('Key grinding', () => { - deepStrictEqual( - starknet.grindKey('86F3E7293141F20A8BAFF320E8EE4ACCB9D4A4BF2B4D295E8CEE784DB46E0519'), - '5c8c8683596c732541a59e03007b2d30dbbbb873556fe65b5fb63c16688f941' - ); - // Loops more than once (verified manually) - deepStrictEqual( - starknet.grindKey('94F3E7293141F20A8BAFF320E8EE4ACCB9D4A4BF2B4D295E8CEE784DB46E0595'), - '33880b9aba464c1c01c9f8f5b4fc1134698f9b0a8d18505cab6cdd34d93dc02' - ); - }); - - should('Private to stark key', () => { - deepStrictEqual( - starknet.getStarkKey('0x178047D3869489C055D7EA54C014FFB834A069C9595186ABE04EA4D1223A03F'), - '0x1895a6a77ae14e7987b9cb51329a5adfb17bd8e7c638f92d6892d76e51cebcf' - ); - for (const [privKey, expectedPubKey] of Object.entries(precomputedKeys)) { - deepStrictEqual(starknet.getStarkKey(privKey), expectedPubKey); - } - }); - - should('Private stark key from eth signature', () => { - const ethSignature = - '0x21fbf0696d5e0aa2ef41a2b4ffb623bcaf070461d61cf7251c74161f82fec3a43' + - '70854bc0a34b3ab487c1bc021cd318c734c51ae29374f2beb0e6f2dd49b4bf41c'; - deepStrictEqual( - starknet.ethSigToPrivate(ethSignature), - '766f11e90cd7c7b43085b56da35c781f8c067ac0d578eabdceebc4886435bda' - ); - }); - - should('Key derivation', () => { - const layer = 'starkex'; - const application = 'starkdeployement'; - const mnemonic = - 'range mountain blast problem vibrant void vivid doctor cluster enough melody ' + - 'salt layer language laptop boat major space monkey unit glimpse pause change vibrant'; - const ethAddress = '0xa4864d977b944315389d1765ffa7e66F74ee8cd7'; - const VECTORS = [ - { - index: 0, - path: "m/2645'/579218131'/891216374'/1961790679'/2135936222'/0", - privateKey: '6cf0a8bf113352eb863157a45c5e5567abb34f8d32cddafd2c22aa803f4892c', - }, - { - index: 7, - path: "m/2645'/579218131'/891216374'/1961790679'/2135936222'/7", - privateKey: '341751bdc42841da35ab74d13a1372c1f0250617e8a2ef96034d9f46e6847af', - }, - { - index: 598, - path: "m/2645'/579218131'/891216374'/1961790679'/2135936222'/598", - privateKey: '41a4d591a868353d28b7947eb132aa4d00c4a022743689ffd20a3628d6ca28c', - }, - ]; - const hd = bip32.HDKey.fromMasterSeed(bip39.mnemonicToSeedSync(mnemonic)); - for (const { index, path, privateKey } of VECTORS) { - const realPath = starknet.getAccountPath(layer, application, ethAddress, index); - deepStrictEqual(realPath, path); - deepStrictEqual(starknet.grindKey(hd.derive(realPath).privateKey), privateKey); - } - }); - - // Verified against starknet.js - should('Starknet.js cross-tests', () => { - const privateKey = '0x019800ea6a9a73f94aee6a3d2edf018fc770443e90c7ba121e8303ec6b349279'; - // NOTE: there is no compressed keys here, getPubKey returns stark-key (which is schnorr-like X coordinate) - // But it is not used in signing/verifying - deepStrictEqual( - starknet.getStarkKey(privateKey), - '0x33f45f07e1bd1a51b45fc24ec8c8c9908db9e42191be9e169bfcac0c0d99745' - ); - const msgHash = '0x6d1706bd3d1ba7c517be2a2a335996f63d4738e2f182144d078a1dd9997062e'; - const sig = starknet.sign(msgHash, privateKey); - const { r, s } = sig; - - deepStrictEqual( - r.toString(), - '1427981024487605678086498726488552139932400435436186597196374630267616399345' - ); - deepStrictEqual( - s.toString(), - '1853664302719670721837677288395394946745467311923401353018029119631574115563' - ); - const hashMsg2 = starknet.pedersen( - '0x33f45f07e1bd1a51b45fc24ec8c8c9908db9e42191be9e169bfcac0c0d99745', - '1' - ); - deepStrictEqual(hashMsg2, '0x2b0d4d43acce8ff68416f667f92ec7eab2b96f1d2224abd4d9d4d1e7fa4bb00'); - const pubKey = - '04033f45f07e1bd1a51b45fc24ec8c8c9908db9e42191be9e169bfcac0c0d997450319d0f53f6ca077c4fa5207819144a2a4165daef6ee47a7c1d06c0dcaa3e456'; - const sig2 = new starknet.Signature( - 558858382392827003930138586379728730695763862039474863361948210004201119180n, - 2440689354481625417078677634625227600823892606910345662891037256374285369343n - ); - deepStrictEqual(starknet.verify(sig2.toDERHex(), hashMsg2, pubKey), true); - }); -}); - -// ESM is broken. -import url from 'url'; -if (import.meta.url === url.pathToFileURL(process.argv[1]).href) { - should.run(); -}