diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 65944a01641..512d4308fa9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -157,7 +157,7 @@ jobs: concurrency_key: build-x86 # prepare images locally, tagged by commit hash - name: "Build E2E Image" - timeout-minutes: 40 + timeout-minutes: 90 if: (needs.configure.outputs.non-docs == 'true' && needs.configure.outputs.non-barretenberg-cpp == 'true') || github.ref_name == 'master' run: | earthly-ci ./yarn-project+export-e2e-test-images diff --git a/l1-contracts/src/core/Rollup.sol b/l1-contracts/src/core/Rollup.sol index 47e27678fcf..c965c6749e7 100644 --- a/l1-contracts/src/core/Rollup.sol +++ b/l1-contracts/src/core/Rollup.sol @@ -10,6 +10,7 @@ import {IInbox} from "@aztec/core/interfaces/messagebridge/IInbox.sol"; import {IOutbox} from "@aztec/core/interfaces/messagebridge/IOutbox.sol"; import {Leonidas} from "@aztec/core/Leonidas.sol"; import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; +import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; import {MerkleLib} from "@aztec/core/libraries/crypto/MerkleLib.sol"; import {SignatureLib} from "@aztec/core/libraries/crypto/SignatureLib.sol"; import {DataStructures} from "@aztec/core/libraries/DataStructures.sol"; @@ -18,7 +19,6 @@ import {Errors} from "@aztec/core/libraries/Errors.sol"; import {HeaderLib} from "@aztec/core/libraries/HeaderLib.sol"; import {ProposeArgs, ProposeLib} from "@aztec/core/libraries/ProposeLib.sol"; import {Timestamp, Slot, Epoch, SlotLib, EpochLib} from "@aztec/core/libraries/TimeMath.sol"; -import {TxsDecoder} from "@aztec/core/libraries/TxsDecoder.sol"; import {Inbox} from "@aztec/core/messagebridge/Inbox.sol"; import {Outbox} from "@aztec/core/messagebridge/Outbox.sol"; import {ProofCommitmentEscrow} from "@aztec/core/ProofCommitmentEscrow.sol"; @@ -86,6 +86,9 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // // More direct approach would be storing keccak256(header) as well mapping(uint256 blockNumber => BlockLog log) public blocks; + // The below public inputs are filled when proposing a block, then used to verify an epoch proof. + // TODO(#8955): When implementing batched kzg proofs, store one instance per epoch rather than block + mapping(uint256 blockNumber => bytes32) public blobPublicInputsHashes; bytes32 public vkTreeRoot; bytes32 public protocolContractTreeRoot; @@ -94,6 +97,9 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // Testing only. This should be removed eventually. uint256 private assumeProvenThroughBlockNumber; + // @note Always true, exists to override to false for testing only + bool public checkBlob = true; + constructor( IFeeJuicePortal _fpcJuicePortal, IRewardDistributor _rewardDistributor, @@ -203,15 +209,18 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * * @param _args - The arguments to propose the block * @param _signatures - Signatures from the validators + * // TODO(#9101): The below _body should be removed once we can extract blobs. It's only here so the archiver can extract tx effects. * @param _body - The body of the L2 block + * @param _blobInput - The blob evaluation KZG proof, challenge, and opening required for the precompile. */ function proposeAndClaim( ProposeArgs calldata _args, SignatureLib.Signature[] memory _signatures, bytes calldata _body, + bytes calldata _blobInput, EpochProofQuoteLib.SignedEpochProofQuote calldata _quote ) external override(IRollup) { - propose(_args, _signatures, _body); + propose(_args, _signatures, _body, _blobInput); claimEpochProofRight(_quote); } @@ -229,17 +238,17 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * @dev We provide the `_archive` and `_blockHash` even if it could be read from storage itself because it allow for * better error messages. Without passing it, we would just have a proof verification failure. * - * @param _epochSize - The size of the epoch (to be promoted to a constant) - * @param _args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) - * @param _fees - Array of recipient-value pairs with fees to be distributed for the epoch + * @param _submitArgs - Struct for constructing PIs which has: + * epochSize - The size of the epoch (to be promoted to a constant) + * args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) + * fees - Array of recipient-value pairs with fees to be distributed for the epoch + * blobPublicInputs- The blob PIs for the proof * @param _aggregationObject - The aggregation object for the proof * @param _proof - The proof to verify */ function submitEpochRootProof( - uint256 _epochSize, - bytes32[7] calldata _args, - bytes32[] calldata _fees, - bytes calldata _aggregationObject, + DataStructures.SubmitProofArgs calldata _submitArgs, + bytes calldata _aggregationObject, // having separate inputs here caused stack too deep bytes calldata _proof ) external override(IRollup) { if (canPrune()) { @@ -247,15 +256,14 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { } uint256 previousBlockNumber = tips.provenBlockNumber; - uint256 endBlockNumber = previousBlockNumber + _epochSize; + uint256 endBlockNumber = previousBlockNumber + _submitArgs.epochSize; // @note The getEpochForBlock is expected to revert if the block is beyond pending. // If this changes you are gonna get so rekt you won't believe it. // I mean proving blocks that have been pruned rekt. Epoch epochToProve = getEpochForBlock(endBlockNumber); - bytes32[] memory publicInputs = - getEpochProofPublicInputs(_epochSize, _args, _fees, _aggregationObject); + bytes32[] memory publicInputs = getEpochProofPublicInputs(_submitArgs, _aggregationObject); require(epochProofVerifier.verify(_proof, publicInputs), Errors.Rollup__InvalidProof()); @@ -269,7 +277,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { uint256 totalProverReward = 0; if (isFeeCanonical || isRewardDistributorCanonical) { - for (uint256 i = 0; i < _epochSize; i++) { + for (uint256 i = 0; i < _submitArgs.epochSize; i++) { address coinbase = address(uint160(uint256(publicInputs[9 + i * 2]))); uint256 reward = 0; uint256 toProver = 0; @@ -315,7 +323,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { PROOF_COMMITMENT_ESCROW.unstakeBond(proofClaim.bondProvider, proofClaim.bondAmount); } - emit L2ProofVerified(endBlockNumber, _args[6]); + emit L2ProofVerified(endBlockNumber, _submitArgs.args[6]); } function status(uint256 _myHeaderBlockNumber) @@ -388,6 +396,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * @param _signatures - The signatures to validate * @param _digest - The digest to validate * @param _currentTime - The current time + * @param _blobsHash - The EVM blob hash for this block * @param _flags - The flags to validate */ function validateHeader( @@ -395,11 +404,11 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { SignatureLib.Signature[] memory _signatures, bytes32 _digest, Timestamp _currentTime, - bytes32 _txsEffectsHash, + bytes32 _blobsHash, DataStructures.ExecutionFlags memory _flags ) external view override(IRollup) { HeaderLib.Header memory header = HeaderLib.decode(_header); - _validateHeader(header, _signatures, _digest, _currentTime, _txsEffectsHash, _flags); + _validateHeader(header, _signatures, _digest, _currentTime, _blobsHash, _flags); } /** @@ -421,15 +430,6 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { return epochToProve; } - function computeTxsEffectsHash(bytes calldata _body) - external - pure - override(IRollup) - returns (bytes32) - { - return TxsDecoder.decode(_body); - } - function claimEpochProofRight(EpochProofQuoteLib.SignedEpochProofQuote calldata _quote) public override(IRollup) @@ -463,34 +463,39 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * * @param _args - The arguments to propose the block * @param _signatures - Signatures from the validators - * @param _body - The body of the L2 block + * // TODO(#9101): The below _body should be removed once we can extract blobs. It's only here so the archiver can extract tx effects. + * @param - The body of the L2 block + * @param _blobInput - The blob evaluation KZG proof, challenge, and opening required for the precompile. */ function propose( ProposeArgs calldata _args, SignatureLib.Signature[] memory _signatures, - bytes calldata _body + // TODO(#9101): Extract blobs from beacon chain => remove below body input + bytes calldata, + bytes calldata _blobInput ) public override(IRollup) { if (canPrune()) { _prune(); } - // The `body` is passed outside the "args" as it does not directly need to be in the digest - // as long as the `txsEffectsHash` is included and matches what is in the header. - // Which we are checking in the `_validateHeader` call below. - bytes32 txsEffectsHash = TxsDecoder.decode(_body); + // Since an invalid blob hash here would fail the consensus checks of + // the header, the `blobInput` is implicitly accepted by consensus as well. + (bytes32 blobsHash, bytes32 blobPublicInputsHash) = _validateBlobs(_blobInput); // Decode and validate header HeaderLib.Header memory header = HeaderLib.decode(_args.header); - bytes32 digest = _args.digest(); - setupEpoch(); - _validateHeader({ - _header: header, - _signatures: _signatures, - _digest: digest, - _currentTime: Timestamp.wrap(block.timestamp), - _txEffectsHash: txsEffectsHash, - _flags: DataStructures.ExecutionFlags({ignoreDA: false, ignoreSignatures: false}) - }); + { + bytes32 digest = _args.digest(); + setupEpoch(); + _validateHeader({ + _header: header, + _signatures: _signatures, + _digest: digest, + _currentTime: Timestamp.wrap(block.timestamp), + _blobsHash: blobsHash, + _flags: DataStructures.ExecutionFlags({ignoreDA: false, ignoreSignatures: false}) + }); + } uint256 blockNumber = ++tips.pendingBlockNumber; @@ -500,6 +505,8 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { slotNumber: Slot.wrap(header.globalVariables.slotNumber) }); + blobPublicInputsHashes[blockNumber] = blobPublicInputsHash; + // @note The block number here will always be >=1 as the genesis block is at 0 bytes32 inHash = INBOX.consume(blockNumber); require( @@ -552,20 +559,20 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * own public inputs used for generating the proof vs the ones assembled * by this contract when verifying it. * - * @param _epochSize - The size of the epoch (to be promoted to a constant) - * @param _args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) - * @param _fees - Array of recipient-value pairs with fees to be distributed for the epoch + * @param _submitArgs - Struct for constructing PIs which has: + * epochSize - The size of the epoch (to be promoted to a constant) + * args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) + * fees - Array of recipient-value pairs with fees to be distributed for the epoch + * blobPublicInputs- The blob PIs for the proof * @param _aggregationObject - The aggregation object for the proof */ function getEpochProofPublicInputs( - uint256 _epochSize, - bytes32[7] calldata _args, - bytes32[] calldata _fees, + DataStructures.SubmitProofArgs calldata _submitArgs, bytes calldata _aggregationObject ) public view override(IRollup) returns (bytes32[] memory) { uint256 previousBlockNumber = tips.provenBlockNumber; - uint256 endBlockNumber = previousBlockNumber + _epochSize; - + uint256 endBlockNumber = previousBlockNumber + _submitArgs.epochSize; + bytes32[7] memory args = _submitArgs.args; // Args are defined as an array because Solidity complains with "stack too deep" otherwise // 0 bytes32 _previousArchive, // 1 bytes32 _endArchive, @@ -581,26 +588,26 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // We do it this way to provide better error messages than passing along the storage values bytes32 expectedPreviousArchive = blocks[previousBlockNumber].archive; require( - expectedPreviousArchive == _args[0], - Errors.Rollup__InvalidPreviousArchive(expectedPreviousArchive, _args[0]) + expectedPreviousArchive == args[0], + Errors.Rollup__InvalidPreviousArchive(expectedPreviousArchive, args[0]) ); bytes32 expectedEndArchive = blocks[endBlockNumber].archive; require( - expectedEndArchive == _args[1], Errors.Rollup__InvalidArchive(expectedEndArchive, _args[1]) + expectedEndArchive == args[1], Errors.Rollup__InvalidArchive(expectedEndArchive, args[1]) ); bytes32 expectedPreviousBlockHash = blocks[previousBlockNumber].blockHash; // TODO: Remove 0 check once we inject the proper genesis block hash require( - expectedPreviousBlockHash == 0 || expectedPreviousBlockHash == _args[2], - Errors.Rollup__InvalidPreviousBlockHash(expectedPreviousBlockHash, _args[2]) + expectedPreviousBlockHash == 0 || expectedPreviousBlockHash == args[2], + Errors.Rollup__InvalidPreviousBlockHash(expectedPreviousBlockHash, args[2]) ); bytes32 expectedEndBlockHash = blocks[endBlockNumber].blockHash; require( - expectedEndBlockHash == _args[3], - Errors.Rollup__InvalidBlockHash(expectedEndBlockHash, _args[3]) + expectedEndBlockHash == args[3], + Errors.Rollup__InvalidBlockHash(expectedEndBlockHash, args[3]) ); } @@ -618,14 +625,15 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // end_timestamp: u64, // end_block_number: Field, // out_hash: Field, - // fees: [FeeRecipient; Constants.AZTEC_EPOCH_DURATION], + // fees: [FeeRecipient; Constants.AZTEC_MAX_EPOCH_DURATION], // vk_tree_root: Field, // protocol_contract_tree_root: Field, - // prover_id: Field + // prover_id: Field, + // blob_public_inputs: [BlockBlobPublicInputs; Constants.AZTEC_MAX_EPOCH_DURATION], // <--This will be reduced to 1 if/when we implement multi-opening for blob verification // } // previous_archive.root: the previous archive tree root - publicInputs[0] = _args[0]; + publicInputs[0] = args[0]; // previous_archive.next_available_leaf_index: the previous archive next available index // normally this should be equal to the block number (since leaves are 0-indexed and blocks 1-indexed) @@ -633,41 +641,85 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { publicInputs[1] = bytes32(previousBlockNumber + 1); // end_archive.root: the new archive tree root - publicInputs[2] = _args[1]; + publicInputs[2] = args[1]; // end_archive.next_available_leaf_index: the new archive next available index publicInputs[3] = bytes32(endBlockNumber + 1); // previous_block_hash: the block hash just preceding this epoch - publicInputs[4] = _args[2]; + publicInputs[4] = args[2]; // end_block_hash: the last block hash in the epoch - publicInputs[5] = _args[3]; + publicInputs[5] = args[3]; // end_timestamp: the timestamp of the last block in the epoch - publicInputs[6] = _args[4]; + publicInputs[6] = args[4]; // end_block_number: last block number in the epoch publicInputs[7] = bytes32(endBlockNumber); // out_hash: root of this epoch's l2 to l1 message tree - publicInputs[8] = _args[5]; + publicInputs[8] = args[5]; uint256 feesLength = Constants.AZTEC_MAX_EPOCH_DURATION * 2; // fees[9 to (9+feesLength-1)]: array of recipient-value pairs for (uint256 i = 0; i < feesLength; i++) { - publicInputs[9 + i] = _fees[i]; + publicInputs[9 + i] = _submitArgs.fees[i]; } - uint256 feesEnd = 9 + feesLength; + uint256 offset = 9 + feesLength; // vk_tree_root - publicInputs[feesEnd] = vkTreeRoot; + publicInputs[offset] = vkTreeRoot; + offset += 1; // protocol_contract_tree_root - publicInputs[feesEnd + 1] = protocolContractTreeRoot; + publicInputs[offset] = protocolContractTreeRoot; + offset += 1; // prover_id: id of current epoch's prover - publicInputs[feesEnd + 2] = _args[6]; + publicInputs[offset] = args[6]; + offset += 1; + + // blob_public_inputs + uint256 blobOffset = 0; + for (uint256 i = 0; i < _submitArgs.epochSize; i++) { + uint8 blobsInBlock = uint8(_submitArgs.blobPublicInputs[blobOffset++]); + // asserting here to avoid looping twice in one fn + { + // Blob public inputs are 112 bytes long - see _validateBlobs() for explanation + bytes32 calcBlobPublicInputsHash = sha256( + abi.encodePacked(_submitArgs.blobPublicInputs[blobOffset:blobOffset + 112 * blobsInBlock]) + ); + require( + calcBlobPublicInputsHash == blobPublicInputsHashes[previousBlockNumber + i + 1], + Errors.Rollup__InvalidBlobPublicInputsHash( + blobPublicInputsHashes[previousBlockNumber + i + 1], calcBlobPublicInputsHash + ) + ); + } + for (uint256 j = 0; j < Constants.BLOBS_PER_BLOCK; j++) { + if (j < blobsInBlock) { + // z + publicInputs[offset++] = + bytes32(_submitArgs.blobPublicInputs[blobOffset:blobOffset += 32]); + // y + (publicInputs[offset++], publicInputs[offset++], publicInputs[offset++]) = + _bytes32ToBigNum(bytes32(_submitArgs.blobPublicInputs[blobOffset:blobOffset += 32])); + // To fit into 2 fields, the commitment is split into 31 and 17 byte numbers + // TODO: The below left pads, possibly inefficiently + // c[0] + publicInputs[offset++] = bytes32( + uint256(uint248(bytes31(_submitArgs.blobPublicInputs[blobOffset:blobOffset += 31]))) + ); + // c[1] + publicInputs[offset++] = bytes32( + uint256(uint136(bytes17(_submitArgs.blobPublicInputs[blobOffset:blobOffset += 17]))) + ); + } else { + offset += Constants.BLOB_PUBLIC_INPUTS; + } + } + } // the block proof is recursive, which means it comes with an aggregation object // this snippet copies it into the public inputs needed for verification @@ -678,7 +730,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { assembly { part := calldataload(add(_aggregationObject.offset, mul(i, 32))) } - publicInputs[i + feesEnd + 3] = part; + publicInputs[i + Constants.ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH] = part; } return publicInputs; @@ -848,6 +900,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * @param _signatures - The signatures for the attestations * @param _digest - The digest that signatures signed * @param _currentTime - The time of execution + * @param _blobsHash - The EVM blob hash for this block * @dev - This value is provided to allow for simple simulation of future * @param _flags - Flags specific to the execution, whether certain checks should be skipped */ @@ -856,14 +909,12 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { SignatureLib.Signature[] memory _signatures, bytes32 _digest, Timestamp _currentTime, - bytes32 _txEffectsHash, + bytes32 _blobsHash, DataStructures.ExecutionFlags memory _flags ) internal view { uint256 pendingBlockNumber = canPruneAtTime(_currentTime) ? tips.provenBlockNumber : tips.pendingBlockNumber; - _validateHeaderForSubmissionBase( - _header, _currentTime, _txEffectsHash, pendingBlockNumber, _flags - ); + _validateHeaderForSubmissionBase(_header, _currentTime, _blobsHash, pendingBlockNumber, _flags); _validateHeaderForSubmissionSequencerSelection( Slot.wrap(_header.globalVariables.slotNumber), _signatures, _digest, _currentTime, _flags ); @@ -920,7 +971,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * - The last archive root in the header MUST match the current archive * - The slot MUST be larger than the slot of the previous block (ensures single block per slot) * - The timestamp MUST be equal to GENESIS_TIME + slot * SLOT_DURATION - * - The `txsEffectsHash` of the header must match the computed `_txsEffectsHash` + * - The `blobsHash` of the block must match the computed `_blobsHash` * - This can be relaxed to happen at the time of `submitProof` instead * * @param _header - The header to validate @@ -928,7 +979,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { function _validateHeaderForSubmissionBase( HeaderLib.Header memory _header, Timestamp _currentTime, - bytes32 _txsEffectsHash, + bytes32 _blobsHash, uint256 _pendingBlockNumber, DataStructures.ExecutionFlags memory _flags ) internal view { @@ -975,8 +1026,8 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // Check if the data is available require( - _flags.ignoreDA || _header.contentCommitment.txsEffectsHash == _txsEffectsHash, - Errors.Rollup__UnavailableTxs(_header.contentCommitment.txsEffectsHash) + _flags.ignoreDA || _header.contentCommitment.blobsHash == _blobsHash, + Errors.Rollup__UnavailableTxs(_header.contentCommitment.blobsHash) ); // If not canonical rollup, require that the fees are zero @@ -986,6 +1037,93 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { } } + /** + * @notice Validate a blob. + * Input bytes: + * input[:32] - versioned_hash + * input[32:64] - z + * input[64:96] - y + * input[96:144] - commitment C + * input[144:192] - proof (a commitment to the quotient polynomial q(X)) + * - This can be relaxed to happen at the time of `submitProof` instead + * @notice Apparently there is no guarantee that the blobs will be processed in the order sent + * so the use of blobhash(_blobNumber) may fail in production + * @param _blobInput - The above bytes to verify a blob + */ + function _validateBlob(bytes calldata _blobInput, uint256 _blobNumber) + internal + view + returns (bytes32 blobHash) + { + if (!checkBlob) { + return bytes32(_blobInput[0:32]); + } + assembly { + blobHash := blobhash(_blobNumber) + } + require(blobHash == bytes32(_blobInput[0:32]), Errors.Rollup__InvalidBlobHash(blobHash)); + + // Staticcall the point eval precompile https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile : + (bool success,) = address(0x0a).staticcall(_blobInput); + require(success, Errors.Rollup__InvalidBlobProof(blobHash)); + } + + /** + * @notice Validate an L2 block's blobs and return the hashed blobHashes and public inputs. + * Input bytes: + * input[:1] - num blobs in block + * input[1:] - 192 * num blobs of the above _blobInput + * @param _blobsInput - The above bytes to verify a blob + */ + function _validateBlobs(bytes calldata _blobsInput) + internal + view + returns (bytes32 blobsHash, bytes32 blobPublicInputsHash) + { + // We cannot input the incorrect number of blobs below, as the blobsHash + // and epoch proof verification will fail. + uint8 numBlobs = uint8(_blobsInput[0]); + bytes32[] memory blobHashes = new bytes32[](numBlobs); + bytes memory blobPublicInputs; + for (uint256 i = 0; i < numBlobs; i++) { + // Add 1 for the numBlobs prefix + uint256 blobInputStart = i * 192 + 1; + // Since an invalid blob hash here would fail the consensus checks of + // the header, the `blobInput` is implicitly accepted by consensus as well. + blobHashes[i] = _validateBlob(_blobsInput[blobInputStart:blobInputStart + 192], i); + // We want to extract the 112 bytes we use for public inputs: + // * input[32:64] - z + // * input[64:96] - y + // * input[96:144] - commitment C + // Out of 192 bytes per blob. + blobPublicInputs = + abi.encodePacked(blobPublicInputs, _blobsInput[blobInputStart + 32:blobInputStart + 144]); + } + // Return the hash of all z, y, and Cs, so we can use them in proof verification later + blobPublicInputsHash = sha256(blobPublicInputs); + // Hash the EVM blob hashes for the block header + blobsHash = Hash.sha256ToField(abi.encodePacked(blobHashes)); + } + + /** + * @notice Converts a BLS12 field element from bytes32 to a nr BigNum type + * The nr bignum type for BLS12 fields is encoded as 3 nr fields - see blob_public_inputs.ts: + * firstLimb = last 15 bytes; + * secondLimb = bytes 2 -> 17; + * thirdLimb = first 2 bytes; + * Used when verifying epoch proofs to gather public inputs. + * @param _input - The field in bytes32 + */ + function _bytes32ToBigNum(bytes32 _input) + internal + pure + returns (bytes32 firstLimb, bytes32 secondLimb, bytes32 thirdLimb) + { + firstLimb = bytes32(uint256(uint120(bytes15(_input << 136)))); + secondLimb = bytes32(uint256(uint120(bytes15(_input << 16)))); + thirdLimb = bytes32(uint256(uint16(bytes2(_input)))); + } + function _fakeBlockNumberAsProven(uint256 _blockNumber) private { if (_blockNumber > tips.provenBlockNumber && _blockNumber <= tips.pendingBlockNumber) { tips.provenBlockNumber = _blockNumber; diff --git a/l1-contracts/src/core/interfaces/IRollup.sol b/l1-contracts/src/core/interfaces/IRollup.sol index 3f128d7db5a..d6613f4f1d0 100644 --- a/l1-contracts/src/core/interfaces/IRollup.sol +++ b/l1-contracts/src/core/interfaces/IRollup.sol @@ -36,20 +36,20 @@ interface IRollup { function propose( ProposeArgs calldata _args, SignatureLib.Signature[] memory _signatures, - bytes calldata _body + bytes calldata _body, + bytes calldata _blobInput ) external; function proposeAndClaim( ProposeArgs calldata _args, SignatureLib.Signature[] memory _signatures, bytes calldata _body, + bytes calldata _blobInput, EpochProofQuoteLib.SignedEpochProofQuote calldata _quote ) external; function submitEpochRootProof( - uint256 _epochSize, - bytes32[7] calldata _args, - bytes32[] calldata _fees, + DataStructures.SubmitProofArgs calldata _submitArgs, bytes calldata _aggregationObject, bytes calldata _proof ) external; @@ -61,7 +61,7 @@ interface IRollup { SignatureLib.Signature[] memory _signatures, bytes32 _digest, Timestamp _currentTime, - bytes32 _txsEffecstHash, + bytes32 _blobsHash, DataStructures.ExecutionFlags memory _flags ) external view; @@ -105,10 +105,7 @@ interface IRollup { ) external view; function getEpochForBlock(uint256 _blockNumber) external view returns (Epoch); function getEpochProofPublicInputs( - uint256 _epochSize, - bytes32[7] calldata _args, - bytes32[] calldata _fees, + DataStructures.SubmitProofArgs calldata _submitArgs, bytes calldata _aggregationObject ) external view returns (bytes32[] memory); - function computeTxsEffectsHash(bytes calldata _body) external pure returns (bytes32); } diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 4aea0600b23..dc7b87f2a53 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -92,8 +92,9 @@ library Constants { uint256 internal constant FUNCTION_SELECTOR_NUM_BYTES = 4; uint256 internal constant INITIALIZATION_SLOT_SEPARATOR = 1000000000; uint256 internal constant INITIAL_L2_BLOCK_NUM = 1; + uint256 internal constant FIELDS_PER_BLOB = 4096; + uint256 internal constant BLOBS_PER_BLOCK = 3; uint256 internal constant PRIVATE_LOG_SIZE_IN_BYTES = 576; - uint256 internal constant BLOB_SIZE_IN_BYTES = 126976; uint256 internal constant AZTEC_MAX_EPOCH_DURATION = 32; uint256 internal constant GENESIS_ARCHIVE_ROOT = 19007378675971183768036762391356802220352606103602592933942074152320327194720; @@ -170,6 +171,9 @@ library Constants { uint256 internal constant FUNCTION_LEAF_PREIMAGE_LENGTH = 5; uint256 internal constant GLOBAL_VARIABLES_LENGTH = 9; uint256 internal constant APPEND_ONLY_TREE_SNAPSHOT_LENGTH = 2; + uint256 internal constant APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES = 36; + uint256 internal constant SPONGE_BLOB_LENGTH = 11; + uint256 internal constant BLOB_PUBLIC_INPUTS = 6; uint256 internal constant L1_TO_L2_MESSAGE_LENGTH = 6; uint256 internal constant L2_TO_L1_MESSAGE_LENGTH = 3; uint256 internal constant SCOPED_L2_TO_L1_MESSAGE_LENGTH = 4; @@ -202,6 +206,7 @@ library Constants { uint256 internal constant TX_REQUEST_LENGTH = 12; uint256 internal constant TOTAL_FEES_LENGTH = 1; uint256 internal constant HEADER_LENGTH = 24; + uint256 internal constant HEADER_LENGTH_BYTES = 616; uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 490; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 866; uint256 internal constant PRIVATE_CONTEXT_INPUTS_LENGTH = 37; @@ -221,9 +226,9 @@ library Constants { uint256 internal constant PRIVATE_TO_PUBLIC_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1140; uint256 internal constant KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 605; uint256 internal constant CONSTANT_ROLLUP_DATA_LENGTH = 13; - uint256 internal constant BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 30; - uint256 internal constant BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 90; - uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 76; + uint256 internal constant BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 51; + uint256 internal constant BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 666; + uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 652; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; uint256 internal constant NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; uint256 internal constant NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; @@ -272,6 +277,17 @@ library Constants { uint256 internal constant START_EMIT_NULLIFIER_WRITE_OFFSET = 208; uint256 internal constant START_EMIT_L2_TO_L1_MSG_WRITE_OFFSET = 224; uint256 internal constant START_EMIT_UNENCRYPTED_LOG_WRITE_OFFSET = 226; + uint256 internal constant TX_START_PREFIX = 8392562855083340404; + uint256 internal constant REVERT_CODE_PREFIX = 1; + uint256 internal constant TX_FEE_PREFIX = 2; + uint256 internal constant NOTES_PREFIX = 3; + uint256 internal constant NULLIFIERS_PREFIX = 4; + uint256 internal constant L2_L1_MSGS_PREFIX = 5; + uint256 internal constant PUBLIC_DATA_UPDATE_REQUESTS_PREFIX = 6; + uint256 internal constant NOTE_ENCRYPTED_LOGS_PREFIX = 7; + uint256 internal constant ENCRYPTED_LOGS_PREFIX = 8; + uint256 internal constant UNENCRYPTED_LOGS_PREFIX = 9; + uint256 internal constant CONTRACT_CLASS_LOGS_PREFIX = 10; uint256 internal constant PROOF_TYPE_PLONK = 0; uint256 internal constant PROOF_TYPE_HONK = 1; uint256 internal constant PROOF_TYPE_OINK = 2; diff --git a/l1-contracts/src/core/libraries/DataStructures.sol b/l1-contracts/src/core/libraries/DataStructures.sol index 61accf40655..61d9edff8ed 100644 --- a/l1-contracts/src/core/libraries/DataStructures.sol +++ b/l1-contracts/src/core/libraries/DataStructures.sol @@ -92,4 +92,18 @@ library DataStructures { address bondProvider; address proposerClaimant; } + + /** + * @notice Struct for submitting the Epoch Proof + * @param epochSize - The size of the epoch (to be promoted to a constant) + * @param args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) + * @param fees - Array of recipient-value pairs with fees to be distributed for the epoch + * @param blobPublicInputs- The blob PIs for the proof + */ + struct SubmitProofArgs { + uint256 epochSize; + bytes32[7] args; + bytes32[] fees; + bytes blobPublicInputs; + } } diff --git a/l1-contracts/src/core/libraries/Errors.sol b/l1-contracts/src/core/libraries/Errors.sol index a53b8c10f62..a32f7a0122a 100644 --- a/l1-contracts/src/core/libraries/Errors.sol +++ b/l1-contracts/src/core/libraries/Errors.sol @@ -60,6 +60,9 @@ library Errors { error Rollup__InvalidProposedArchive(bytes32 expected, bytes32 actual); // 0x32532e73 error Rollup__InvalidTimestamp(Timestamp expected, Timestamp actual); // 0x3132e895 error Rollup__InvalidVersion(uint256 expected, uint256 actual); // 0x9ef30794 + error Rollup__InvalidBlobHash(bytes32 blobHash); // 0xc4a168c6 + error Rollup__InvalidBlobProof(bytes32 blobHash); // 0x5ca17bef + error Rollup__InvalidBlobPublicInputsHash(bytes32 expected, bytes32 actual); // 0xfe6b4994 error Rollup__NoEpochToProve(); // 0xcbaa3951 error Rollup__NonSequentialProving(); // 0x1e5be132 error Rollup__NotClaimingCorrectEpoch(Epoch expected, Epoch actual); // 0xf0e0744d @@ -76,10 +79,6 @@ library Errors { error Rollup__NonZeroL2Fee(); // 0x7e728abc error Rollup__InvalidBasisPointFee(uint256 basisPointFee); // 0x4292d136 - //TxsDecoder - error TxsDecoder__InvalidLogsLength(uint256 expected, uint256 actual); // 0x829ca981 - error TxsDecoder__TxsTooLarge(uint256 expected, uint256 actual); // 0xc7d44a62 - // HeaderLib error HeaderLib__InvalidHeaderSize(uint256 expected, uint256 actual); // 0xf3ccb247 error HeaderLib__InvalidSlotNumber(Slot expected, Slot actual); // 0x09ba91ff diff --git a/l1-contracts/src/core/libraries/HeaderLib.sol b/l1-contracts/src/core/libraries/HeaderLib.sol index 4f29c431039..db3e90827c0 100644 --- a/l1-contracts/src/core/libraries/HeaderLib.sol +++ b/l1-contracts/src/core/libraries/HeaderLib.sol @@ -24,7 +24,7 @@ import {Errors} from "@aztec/core/libraries/Errors.sol"; * | 0x0020 | 0x04 | lastArchive.nextAvailableLeafIndex * | | | ContentCommitment { * | 0x0024 | 0x20 | numTxs - * | 0x0044 | 0x20 | txsEffectsHash + * | 0x0044 | 0x20 | blobsHash * | 0x0064 | 0x20 | inHash * | 0x0084 | 0x20 | outHash * | | | StateReference { @@ -91,7 +91,7 @@ library HeaderLib { struct ContentCommitment { uint256 numTxs; - bytes32 txsEffectsHash; + bytes32 blobsHash; bytes32 inHash; bytes32 outHash; } @@ -104,7 +104,7 @@ library HeaderLib { uint256 totalFees; } - uint256 private constant HEADER_LENGTH = 0x268; // Header byte length + uint256 private constant HEADER_LENGTH = Constants.HEADER_LENGTH_BYTES; // Header byte length /** * @notice Decodes the header @@ -126,7 +126,7 @@ library HeaderLib { // Reading ContentCommitment header.contentCommitment.numTxs = uint256(bytes32(_header[0x0024:0x0044])); - header.contentCommitment.txsEffectsHash = bytes32(_header[0x0044:0x0064]); + header.contentCommitment.blobsHash = bytes32(_header[0x0044:0x0064]); header.contentCommitment.inHash = bytes32(_header[0x0064:0x0084]); header.contentCommitment.outHash = bytes32(_header[0x0084:0x00a4]); @@ -160,78 +160,4 @@ library HeaderLib { return header; } - - function toFields(Header memory _header) internal pure returns (bytes32[] memory) { - bytes32[] memory fields = new bytes32[](24); - - // must match the order in the Header.getFields - fields[0] = _header.lastArchive.root; - fields[1] = bytes32(uint256(_header.lastArchive.nextAvailableLeafIndex)); - fields[2] = bytes32(_header.contentCommitment.numTxs); - fields[3] = _header.contentCommitment.txsEffectsHash; - fields[4] = _header.contentCommitment.inHash; - fields[5] = _header.contentCommitment.outHash; - fields[6] = _header.stateReference.l1ToL2MessageTree.root; - fields[7] = bytes32(uint256(_header.stateReference.l1ToL2MessageTree.nextAvailableLeafIndex)); - fields[8] = _header.stateReference.partialStateReference.noteHashTree.root; - fields[9] = bytes32( - uint256(_header.stateReference.partialStateReference.noteHashTree.nextAvailableLeafIndex) - ); - fields[10] = _header.stateReference.partialStateReference.nullifierTree.root; - fields[11] = bytes32( - uint256(_header.stateReference.partialStateReference.nullifierTree.nextAvailableLeafIndex) - ); - fields[12] = _header.stateReference.partialStateReference.publicDataTree.root; - fields[13] = bytes32( - uint256(_header.stateReference.partialStateReference.publicDataTree.nextAvailableLeafIndex) - ); - fields[14] = bytes32(_header.globalVariables.chainId); - fields[15] = bytes32(_header.globalVariables.version); - fields[16] = bytes32(_header.globalVariables.blockNumber); - fields[17] = bytes32(_header.globalVariables.slotNumber); - fields[18] = bytes32(_header.globalVariables.timestamp); - fields[19] = bytes32(uint256(uint160(_header.globalVariables.coinbase))); - fields[20] = bytes32(_header.globalVariables.feeRecipient); - fields[21] = bytes32(_header.globalVariables.gasFees.feePerDaGas); - fields[22] = bytes32(_header.globalVariables.gasFees.feePerL2Gas); - fields[23] = bytes32(_header.totalFees); - - // fail if the header structure has changed without updating this function - require( - fields.length == Constants.HEADER_LENGTH, - Errors.HeaderLib__InvalidHeaderSize(Constants.HEADER_LENGTH, fields.length) - ); - - return fields; - } - - // TODO(#7346): Currently using the below to verify block root proofs until batch rollups fully integrated. - // Once integrated, remove the below fn (not used anywhere else). - function toFields(GlobalVariables memory _globalVariables) - internal - pure - returns (bytes32[] memory) - { - bytes32[] memory fields = new bytes32[](Constants.GLOBAL_VARIABLES_LENGTH); - - fields[0] = bytes32(_globalVariables.chainId); - fields[1] = bytes32(_globalVariables.version); - fields[2] = bytes32(_globalVariables.blockNumber); - fields[3] = bytes32(_globalVariables.slotNumber); - fields[4] = bytes32(_globalVariables.timestamp); - fields[5] = bytes32(uint256(uint160(_globalVariables.coinbase))); - fields[6] = bytes32(_globalVariables.feeRecipient); - fields[7] = bytes32(_globalVariables.gasFees.feePerDaGas); - fields[8] = bytes32(_globalVariables.gasFees.feePerL2Gas); - - // fail if the header structure has changed without updating this function - // TODO(Miranda): Temporarily using this method and below error while block-root proofs are verified - // When we verify root proofs, this method can be removed => no need for separate named error - require( - fields.length == Constants.GLOBAL_VARIABLES_LENGTH, - Errors.HeaderLib__InvalidHeaderSize(Constants.HEADER_LENGTH, fields.length) - ); - - return fields; - } } diff --git a/l1-contracts/src/core/libraries/TxsDecoder.sol b/l1-contracts/src/core/libraries/TxsDecoder.sol deleted file mode 100644 index 9bf8ef5329e..00000000000 --- a/l1-contracts/src/core/libraries/TxsDecoder.sol +++ /dev/null @@ -1,706 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2024 Aztec Labs. -pragma solidity >=0.8.27; - -import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; -import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; -import {Errors} from "@aztec/core/libraries/Errors.sol"; - -/** - * @title Txs Decoder Library - * @author Aztec Labs - * @notice Decoding a L2 block body and computing the TxsHash. - * Concerned with readability and velocity of development not giving a damn about gas costs. - * @dev Assumes the input trees to be padded. - * - * ------------------- - * L2 Body Data Specification - * ------------------- - * | byte start | num bytes | name - * | --- | --- | --- - * | 0x0 | 0x4 | len(numTxs) (denoted t) - * | | | TxEffect 0 { - * | 0x4 | 0x1 | revertCode - * | 0x5 | 0x20 | transactionFee - * | 0x25 | 0x1 | len(noteHashes) (denoted b) - * | 0x25 + 0x1 | b * 0x20 | noteHashes - * | 0x25 + 0x1 + b * 0x20 | 0x1 | len(nullifiers) (denoted c) - * | 0x25 + 0x1 + b * 0x20 + 0x1 | c * 0x20 | nullifiers - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 | 0x1 | len(l2ToL1Msgs) (denoted d) - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 | d * 0x20 | l2ToL1Msgs - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 | 0x1 | len(publicDataUpdateRequests) (denoted e) - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 | e * 0x40 | publicDataUpdateRequests - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 | 0x04 | byteLen(noteEncryptedLogs) (denoted f) - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 | f | noteEncryptedLogs - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f | 0x04 | byteLen(encryptedLogs) (denoted g) - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f + 0x4 | g | encryptedLogs - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f + 0x4 + g | 0x04 | byteLen(unencryptedLogs) (denoted h) - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f + 0x4 + g + 0x04| h | unencryptedLogs - * | | | }, - * | | | TxEffect 1 { - * | | | ... - * | | | }, - * | | | ... - * | | | TxEffect (t - 1) { - * | | | ... - * | | | }, - */ -library TxsDecoder { - struct ArrayOffsets { - uint256 revertCode; - uint256 transactionFee; - uint256 noteHash; - uint256 nullifier; - uint256 l2ToL1Msgs; - uint256 publicData; - uint256 noteEncryptedLogsLength; - uint256 encryptedLogsLength; - uint256 unencryptedLogsLength; - uint256 contractClassLogsLength; - } - - struct Counts { - uint256 noteHash; - uint256 nullifier; - uint256 l2ToL1Msgs; - uint256 publicData; - } - - // Note: Used in `computeConsumables` to get around stack too deep errors. - struct ConsumablesVars { - bytes32[] baseLeaves; - bytes baseLeaf; - uint256 kernelNoteEncryptedLogsLength; - uint256 kernelEncryptedLogsLength; - uint256 kernelUnencryptedLogsLength; - uint256 kernelContractClassLogsLength; - bytes32 noteEncryptedLogsHash; - bytes32 encryptedLogsHash; - bytes32 unencryptedLogsHash; - bytes32 contractClassLogsHash; - bytes32 txOutHash; - } - - /** - * @notice Computes txs effects hash - * @param _body - The L2 block body calldata. - * @return The txs effects hash. - */ - function decode(bytes calldata _body) external pure returns (bytes32) { - ArrayOffsets memory offsets; - Counts memory counts; - ConsumablesVars memory vars; - uint256 offset = 0; - - uint32 numTxEffects = uint32(read4(_body, offset)); - uint256 numTxEffectsToPad = computeNumTxEffectsToPad(numTxEffects); - - offset += 0x4; - vars.baseLeaves = new bytes32[](numTxEffects + numTxEffectsToPad); - - // Data starts after header. Look at L2 Block Data specification at the top of this file. - { - for (uint256 i = 0; i < numTxEffects; i++) { - /* - * Compute the leaf to insert. - * Leaf_i = ( - * revertCode, - * transactionFee, - * noteHashesKernel, - * nullifiersKernel, - * txOutHash, |=> Computed below from l2tol1msgs - * publicDataUpdateRequestsKernel, - * noteEncryptedLogsLength, - * encryptedLogsLength, - * unencryptedLogsLength, - * noteEncryptedLogsHash, | - * encryptedLogsHash, | - * unencryptedLogsHash, ____|=> Computed below from logs' preimages. - * ); - * Note that we always read data, the l2Block (atm) must therefore include dummy or zero-notes for - * Zero values. - */ - - // REVERT CODE - offsets.revertCode = offset; - offset += 0x1; - - // TX FEE - offsets.transactionFee = offset; - offset += 0x20; - - // NOTE HASHES - uint256 count = read1(_body, offset); - offset += 0x1; - counts.noteHash = count; - offsets.noteHash = offset; - offset += count * 0x20; // each note hash is 0x20 bytes long - - // NULLIFIERS - count = read1(_body, offset); - offset += 0x1; - counts.nullifier = count; - offsets.nullifier = offset; - offset += count * 0x20; // each nullifier is 0x20 bytes long - - // L2 TO L1 MESSAGES - count = read1(_body, offset); - offset += 0x1; - counts.l2ToL1Msgs = count; - offsets.l2ToL1Msgs = offset; - offset += count * 0x20; // each l2 to l1 message is 0x20 bytes long - - // PUBLIC DATA UPDATE REQUESTS - count = read1(_body, offset); - offset += 0x1; - counts.publicData = count; - offsets.publicData = offset; - offset += count * 0x40; // each public data update request is 0x40 bytes long - - // NOTE ENCRYPTED LOGS LENGTH - offsets.noteEncryptedLogsLength = offset; - offset += 0x20; - - // ENCRYPTED LOGS LENGTH - offsets.encryptedLogsLength = offset; - offset += 0x20; - - // UNENCRYPTED LOGS LENGTH - offsets.unencryptedLogsLength = offset; - offset += 0x20; - - // CONTRACT CLASS LOGS LENGTH - offsets.contractClassLogsLength = offset; - offset += 0x20; - - /** - * Compute note, encrypted, unencrypted, and contract class logs hashes corresponding to the current leaf. - * Note: will advance offsets by the number of bytes processed. - */ - // NOTE ENCRYPTED LOGS HASH - (vars.noteEncryptedLogsHash, offset, vars.kernelNoteEncryptedLogsLength) = - computeKernelNoteEncryptedLogsHash(offset, _body); - // ENCRYPTED LOGS HASH - (vars.encryptedLogsHash, offset, vars.kernelEncryptedLogsLength) = - computeKernelEncryptedLogsHash(offset, _body); - // UNENCRYPTED LOGS HASH - (vars.unencryptedLogsHash, offset, vars.kernelUnencryptedLogsLength) = - computeKernelUnencryptedLogsHash(offset, _body, false); - // CONTRACT CLASS LOGS HASH - // Note: the logic for unenc. and contract class logs hashing is the same: - (vars.contractClassLogsHash, offset, vars.kernelContractClassLogsLength) = - computeKernelUnencryptedLogsHash(offset, _body, true); - // TX LEVEL OUT HASH - (vars.txOutHash) = computeTxOutHash(offsets.l2ToL1Msgs, _body); - - // We throw to ensure that the byte len we charge for DA gas in the kernels matches the actual chargable log byte len - // Without this check, the user may provide the kernels with a lower log len than reality - require( - uint256(bytes32(slice(_body, offsets.noteEncryptedLogsLength, 0x20))) - == vars.kernelNoteEncryptedLogsLength, - Errors.TxsDecoder__InvalidLogsLength( - uint256(bytes32(slice(_body, offsets.noteEncryptedLogsLength, 0x20))), - vars.kernelNoteEncryptedLogsLength - ) - ); - require( - uint256(bytes32(slice(_body, offsets.encryptedLogsLength, 0x20))) - == vars.kernelEncryptedLogsLength, - Errors.TxsDecoder__InvalidLogsLength( - uint256(bytes32(slice(_body, offsets.encryptedLogsLength, 0x20))), - vars.kernelEncryptedLogsLength - ) - ); - require( - uint256(bytes32(slice(_body, offsets.unencryptedLogsLength, 0x20))) - == vars.kernelUnencryptedLogsLength, - Errors.TxsDecoder__InvalidLogsLength( - uint256(bytes32(slice(_body, offsets.unencryptedLogsLength, 0x20))), - vars.kernelUnencryptedLogsLength - ) - ); - require( - uint256(bytes32(slice(_body, offsets.contractClassLogsLength, 0x20))) - == vars.kernelContractClassLogsLength, - Errors.TxsDecoder__InvalidLogsLength( - uint256(bytes32(slice(_body, offsets.contractClassLogsLength, 0x20))), - vars.kernelContractClassLogsLength - ) - ); - - // Insertions are split into multiple `bytes.concat` to work around stack too deep. - vars.baseLeaf = bytes.concat( - // pad the revert code to 32 bytes to match the hash preimage - bytes.concat( - sliceAndPadLeft(_body, offsets.revertCode, 0x1, 0x20), - slice(_body, offsets.transactionFee, 0x20) - ), - bytes.concat( - sliceAndPadRight( - _body, - offsets.noteHash, - counts.noteHash * 0x20, - Constants.NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP - ), - sliceAndPadRight( - _body, - offsets.nullifier, - counts.nullifier * 0x20, - Constants.NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP - ), - vars.txOutHash, - sliceAndPadRight( - _body, - offsets.publicData, - counts.publicData * 0x40, - Constants.PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP - ) - ), - bytes.concat( - slice(_body, offsets.noteEncryptedLogsLength, 0x20), - slice(_body, offsets.encryptedLogsLength, 0x20) - ), - bytes.concat( - slice(_body, offsets.unencryptedLogsLength, 0x20), - slice(_body, offsets.contractClassLogsLength, 0x20) - ), - bytes.concat( - vars.noteEncryptedLogsHash, - vars.encryptedLogsHash, - vars.unencryptedLogsHash, - vars.contractClassLogsHash - ) - ); - - vars.baseLeaves[i] = Hash.sha256ToField(vars.baseLeaf); - } - - // We pad base leaves with hashes of empty tx effect. - for (uint256 i = numTxEffects; i < vars.baseLeaves.length; i++) { - // Value taken from tx_effect.test.ts "hash of empty tx effect matches snapshot" test case - vars.baseLeaves[i] = hex"00c2dece9c9f14c67b8aafabdcb80793f1cffe95a801e15d648fd214a0522ee8"; - } - } - - return computeUnbalancedRoot(vars.baseLeaves); - } - - /** - * @notice Computes logs hash as is done in the kernel and app circuits. - * @param _offsetInBlock - The offset of kernel's logs in a block. - * @param _body - The L2 block calldata. - * @return The hash of the logs and offset in a block after processing the logs. - * @dev We have logs preimages on the input and we need to perform the same hashing process as is done in the app - * circuit (hashing the logs) and in the kernel circuit (accumulating the logs hashes). The tail kernel - * circuit flat hashes all the app log hashes. - * - * E.g. for resulting logs hash of a kernel with 3 iterations would be computed as: - * - * kernelPublicInputsLogsHash = sha256((sha256(I1_LOGS), sha256(I2_LOGS)), sha256(I3_LOGS)) - * - * where I1_LOGS, I2_LOGS and I3_LOGS are logs emitted in the first, second and third function call. - * - * Note that `sha256(I1_LOGS)`, `sha256(I2_LOGS)` and `sha256(I3_LOGS)` are computed in the app circuit and not - * in the kernel circuit. The kernel circuit only accumulates the hashes. - * - * @dev For the example above, the logs are encoded in the following way: - * - * || K_LOGS_LEN | I1_LOGS_LEN | I1_LOGS | I2_LOGS_LEN | I2_LOGS | I3_LOGS_LEN | I3_LOGS || - * 4 bytes 4 bytes i bytes 4 bytes j bytes 4 bytes k bytes - * - * K_LOGS_LEN is the total length of the logs in the kernel. - * I1_LOGS_LEN (i) is the length of the logs in the first iteration. - * I1_LOGS are all the logs emitted in the first iteration. - * I2_LOGS_LEN (j) ... - * @dev The circuit outputs a total logs len based on the byte length that the user pays DA gas for. - * In terms of the encoding above, this is the raw log length (i, j, or k) + 4 for each log. - * For the example above, kernelLogsLength = (i + 4) + (j + 4) + (k + 4). Since we already track - * the total remainingLogsLength, we just remove the bytes holding function logs length. - * - * @dev Link to a relevant discussion: - * https://discourse.aztec.network/t/proposal-forcing-the-sequencer-to-actually-submit-data-to-l1/426/9 - */ - function computeKernelNoteEncryptedLogsHash(uint256 _offsetInBlock, bytes calldata _body) - internal - pure - returns (bytes32, uint256, uint256) - { - uint256 offset = _offsetInBlock; - uint256 remainingLogsLength = read4(_body, offset); - uint256 kernelLogsLength = remainingLogsLength; - offset += 0x4; - - bytes memory flattenedLogHashes; // The hash input - - // Iterate until all the logs were processed - while (remainingLogsLength > 0) { - // The length of the logs emitted by Aztec.nr from the function call corresponding to this kernel iteration - uint256 privateCircuitPublicInputLogsLength = read4(_body, offset); - offset += 0x4; - - // Decrease remaining logs length by this privateCircuitPublicInputsLogs's length (len(I?_LOGS)) and 4 bytes for I?_LOGS_LEN - remainingLogsLength -= (privateCircuitPublicInputLogsLength + 0x4); - - kernelLogsLength -= 0x4; - - while (privateCircuitPublicInputLogsLength > 0) { - uint256 singleCallLogsLength = read4(_body, offset); - offset += 0x4; - - bytes32 singleLogHash = Hash.sha256ToField(slice(_body, offset, singleCallLogsLength)); - offset += singleCallLogsLength; - - flattenedLogHashes = bytes.concat(flattenedLogHashes, singleLogHash); - - privateCircuitPublicInputLogsLength -= (singleCallLogsLength + 0x4); - } - } - - // Not having a 0 value hash for empty logs causes issues with empty txs used for padding. - if (flattenedLogHashes.length == 0) { - return (0, offset, 0); - } - - // padded to MAX_LOGS * 32 bytes - flattenedLogHashes = bytes.concat( - flattenedLogHashes, - new bytes(Constants.MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32 - flattenedLogHashes.length) - ); - - bytes32 kernelPublicInputsLogsHash = Hash.sha256ToField(flattenedLogHashes); - - return (kernelPublicInputsLogsHash, offset, kernelLogsLength); - } - - /** - * @notice Computes encrypted logs hash as is done in the kernel circuits. - * @param _offsetInBlock - The offset of kernel's logs in a block. - * @param _body - The L2 block calldata. - * @return The hash of the logs and offset in a block after processing the logs. - * @dev See above for full details. Non-note encrypted logs hashes are siloed with - * their (hidden) contract address: - * singleLogsHash = sha256ToField(encryptedBuffer) - * siloedLogsHash = sha256ToField(maskedContractAddress, singleLogsHash) - * where maskedContractAddress = pedersen(contract_address, randomness) is provided as part - * of the block bytes, prepended to each encrypted log. - * We don't currently count the maskedContractAddress as part of the - * chargable DA length of the log. - */ - function computeKernelEncryptedLogsHash(uint256 _offsetInBlock, bytes calldata _body) - internal - pure - returns (bytes32, uint256, uint256) - { - uint256 offset = _offsetInBlock; - uint256 remainingLogsLength = read4(_body, offset); - uint256 kernelLogsLength = remainingLogsLength; - offset += 0x4; - - bytes memory flattenedLogHashes; // The hash input - - // Iterate until all the logs were processed - while (remainingLogsLength > 0) { - // The length of the logs emitted by Aztec.nr from the function call corresponding to this kernel iteration - uint256 privateCircuitPublicInputLogsLength = read4(_body, offset); - offset += 0x4; - - // Decrease remaining logs length by this privateCircuitPublicInputsLogs's length (len(I?_LOGS)) and 4 bytes for I?_LOGS_LEN - remainingLogsLength -= (privateCircuitPublicInputLogsLength + 0x4); - - kernelLogsLength -= 0x4; - - while (privateCircuitPublicInputLogsLength > 0) { - uint256 singleCallLogsLengthWithMaskedAddress = read4(_body, offset); - offset += 0x4; - // The first 32 bytes of the provided encrypted log are its masked address (see EncryptedL2Log.toBuffer()) - bytes32 maskedContractAddress = bytes32(slice(_body, offset, 0x20)); - offset += 0x20; - // We don't currently include the masked contract address as part of the DA length - kernelLogsLength -= 0x20; - uint256 singleCallLogsLength = singleCallLogsLengthWithMaskedAddress - 0x20; - - bytes32 singleLogHash = Hash.sha256ToField(slice(_body, offset, singleCallLogsLength)); - - bytes32 siloedLogHash = - Hash.sha256ToField(bytes.concat(maskedContractAddress, singleLogHash)); - offset += singleCallLogsLength; - - flattenedLogHashes = bytes.concat(flattenedLogHashes, siloedLogHash); - - privateCircuitPublicInputLogsLength -= (singleCallLogsLengthWithMaskedAddress + 0x4); - } - } - - // Not having a 0 value hash for empty logs causes issues with empty txs used for padding. - if (flattenedLogHashes.length == 0) { - return (0, offset, 0); - } - - // padded to MAX_LOGS * 32 bytes - flattenedLogHashes = bytes.concat( - flattenedLogHashes, - new bytes(Constants.MAX_ENCRYPTED_LOGS_PER_TX * 32 - flattenedLogHashes.length) - ); - - bytes32 kernelPublicInputsLogsHash = Hash.sha256ToField(flattenedLogHashes); - - return (kernelPublicInputsLogsHash, offset, kernelLogsLength); - } - - /** - * @notice Computes unencrypted or contract class logs hash as is done in the kernel circuits. - * @param _offsetInBlock - The offset of kernel's logs in a block. - * @param _body - The L2 block calldata. - * @return The hash of the logs and offset in a block after processing the logs. - * @dev See above for details. The only difference here is that unencrypted and contract class logs are - * siloed with their contract address. - */ - function computeKernelUnencryptedLogsHash( - uint256 _offsetInBlock, - bytes calldata _body, - bool _contractClassLogs - ) internal pure returns (bytes32, uint256, uint256) { - uint256 offset = _offsetInBlock; - uint256 remainingLogsLength = read4(_body, offset); - uint256 kernelLogsLength = remainingLogsLength; - offset += 0x4; - - bytes memory flattenedLogHashes; // The hash input - - // Iterate until all the logs were processed - while (remainingLogsLength > 0) { - // The length of the logs emitted by Aztec.nr from the function call corresponding to this kernel iteration - uint256 privateCircuitPublicInputLogsLength = read4(_body, offset); - offset += 0x4; - - // Decrease remaining logs length by this privateCircuitPublicInputsLogs's length (len(I?_LOGS)) and 4 bytes for I?_LOGS_LEN - remainingLogsLength -= (privateCircuitPublicInputLogsLength + 0x4); - - kernelLogsLength -= 0x4; - - while (privateCircuitPublicInputLogsLength > 0) { - uint256 singleCallLogsLength = read4(_body, offset); - offset += 0x4; - - bytes32 singleLogHash = Hash.sha256ToField(slice(_body, offset, singleCallLogsLength)); - // The first 32 bytes of an unencrypted log buffer are its address (see UnencryptedL2Log.toBuffer()) - bytes32 siloedLogHash = - Hash.sha256ToField(bytes.concat(slice(_body, offset, 0x20), singleLogHash)); - offset += singleCallLogsLength; - - flattenedLogHashes = bytes.concat(flattenedLogHashes, siloedLogHash); - - privateCircuitPublicInputLogsLength -= (singleCallLogsLength + 0x4); - } - } - - // Not having a 0 value hash for empty logs causes issues with empty txs used for padding. - if (flattenedLogHashes.length == 0) { - return (0, offset, 0); - } - - // padded to MAX_LOGS * 32 bytes - if (_contractClassLogs) { - flattenedLogHashes = bytes.concat( - flattenedLogHashes, - new bytes(Constants.MAX_CONTRACT_CLASS_LOGS_PER_TX * 32 - flattenedLogHashes.length) - ); - } else { - flattenedLogHashes = bytes.concat( - flattenedLogHashes, - new bytes(Constants.MAX_UNENCRYPTED_LOGS_PER_TX * 32 - flattenedLogHashes.length) - ); - } - - bytes32 kernelPublicInputsLogsHash = Hash.sha256ToField(flattenedLogHashes); - - return (kernelPublicInputsLogsHash, offset, kernelLogsLength); - } - - /** - * @notice Computes the root for a binary Merkle-tree given the leafs. - * @dev Uses sha256. - * @param _leafs - The 32 bytes leafs to build the tree of. - * @return The root of the Merkle tree. - */ - function computeRoot(bytes32[] memory _leafs) internal pure returns (bytes32) { - // @todo Must pad the tree - uint256 treeDepth = 0; - while (2 ** treeDepth < _leafs.length) { - treeDepth++; - } - uint256 treeSize = 2 ** treeDepth; - assembly { - mstore(_leafs, treeSize) - } - - for (uint256 i = 0; i < treeDepth; i++) { - for (uint256 j = 0; j < treeSize; j += 2) { - _leafs[j / 2] = Hash.sha256ToField(bytes.concat(_leafs[j], _leafs[j + 1])); - } - treeSize /= 2; - } - - return _leafs[0]; - } - - /** - * @notice Computes the root for a binary unbalanced Merkle-tree given the leaves. - * @dev Filled in greedily with subtrees. Useful for txsEffectsHash and outHash tree. - * @param _leaves - The 32 bytes leafs to build the tree of. - * @return The root of the Merkle tree. - */ - function computeUnbalancedRoot(bytes32[] memory _leaves) internal pure returns (bytes32) { - // e.g. an unbalanced tree of 7 txs will contain subtrees of 4, 2, and 1 tx(s) = 111 - // e.g. an unbalanced tree of 9 txs will contain subtrees of 8 and 1 tx(s) = 1001 - // We collect the roots of each subtree - bytes32 root; - uint256 currentSubtreeSize = 1; - uint256 numTxs = _leaves.length; - // We must calculate the smaller rightmost subtrees first, hence starting at 1 - while (numTxs != 0) { - // If size & txs == 0, the subtree doesn't exist for this number of txs - if (currentSubtreeSize & numTxs == 0) { - currentSubtreeSize <<= 1; - continue; - } - bytes32[] memory leavesInSubtree = new bytes32[](currentSubtreeSize); - uint256 start = numTxs - currentSubtreeSize; - for (uint256 i = start; i < numTxs; i++) { - leavesInSubtree[i - start] = _leaves[i]; - } - bytes32 subtreeRoot = computeRoot(leavesInSubtree); - root = - numTxs == _leaves.length ? subtreeRoot : Hash.sha256ToField(bytes.concat(subtreeRoot, root)); - numTxs -= currentSubtreeSize; - currentSubtreeSize <<= 1; - } - return root; - } - - /** - * @notice Computes the root for the binary variable height Merkle-tree made of one tx's L2 to L1 msgs. - * @dev Mimics compute_kernel_out_hash in base_rollup. - * TODO(#7218): Revert to fixed height tree for outbox - * @param _data - The blob of data containing l2 to l1 msgs. - * @return The root of the Merkle tree. - */ - function computeTxOutHash(uint256 _start, bytes calldata _data) internal pure returns (bytes32) { - uint256 offset = _start; - // The stored offsets.l2ToL1Msgs does not include the single byte storing the num of msgs, hence -1 - uint32 numMsgs = uint32(read1(_data, _start - 1)); - uint256 numMsgsToPad = computeNumMsgsToPad(uint32(numMsgs)); - bytes32[] memory leavesInMsgTree = new bytes32[](numMsgs + numMsgsToPad); - for (uint256 i = 0; i < numMsgs; i++) { - leavesInMsgTree[i] = bytes32(slice(_data, offset, 0x20)); - offset += 0x20; - } - bytes32 outHash = computeRoot(leavesInMsgTree); - return outHash; - } - - /** - * @notice Wrapper around the slicing to avoid some stack too deep - * @param _data - The data to slice - * @param _start - The start of the slice - * @param _length - The length of the slice - * @return The slice - */ - function slice(bytes calldata _data, uint256 _start, uint256 _length) - internal - pure - returns (bytes memory) - { - return _data[_start:_start + _length]; - } - - /** - * @notice Wrapper around the slicing and padding to avoid some stack too deep - * @param _data - The data to slice - * @param _start - The start of the slice - * @param _length - The length of the slice - * @param _targetLength - The length of the padded array - * @return The slice - */ - function sliceAndPadLeft( - bytes calldata _data, - uint256 _start, - uint256 _length, - uint256 _targetLength - ) internal pure returns (bytes memory) { - return bytes.concat(new bytes(_targetLength - _length), _data[_start:_start + _length]); - } - - /** - * @notice Wrapper around the slicing and padding to avoid some stack too deep - * @param _data - The data to slice - * @param _start - The start of the slice - * @param _length - The length of the slice - * @param _targetLength - The length of the padded array - * @return The slice - */ - function sliceAndPadRight( - bytes calldata _data, - uint256 _start, - uint256 _length, - uint256 _targetLength - ) internal pure returns (bytes memory) { - return bytes.concat(_data[_start:_start + _length], new bytes(_targetLength - _length)); - } - - /** - * @notice Reads 1 bytes from the data - * @param _data - The data to read from - * @param _offset - The offset to read from - * @return The 1 byte as a uint256 - */ - function read1(bytes calldata _data, uint256 _offset) internal pure returns (uint256) { - return uint256(uint8(bytes1(slice(_data, _offset, 1)))); - } - - /** - * @notice Reads 4 bytes from the data - * @param _data - The data to read from - * @param _offset - The offset to read from - * @return The 4 bytes read as a uint256 - */ - function read4(bytes calldata _data, uint256 _offset) internal pure returns (uint256) { - return uint256(uint32(bytes4(slice(_data, _offset, 4)))); - } - - /** - * @notice Pads L2 to L1 messages to the next power of 2 - simple algo as we only have a max of 8 msgs - * @param _numL2toL1Msgs - num of msgs (currently between 0 and MAX_L2_TO_L1_MSGS_PER_TX = 8) - * @return Num msgs to pad - */ - function computeNumMsgsToPad(uint32 _numL2toL1Msgs) internal pure returns (uint32) { - // We handle the edge case of 0 msgs by padding by 1 - this ensures computeRoot() gives a result of 0 - if (_numL2toL1Msgs == 0 || _numL2toL1Msgs == 1) { - return 1; - } - - uint32 v = _numL2toL1Msgs; - - // the following rounds _numL2toL1Msgs up to the next power of 2 (works only for 4 bytes value!) - v--; - v |= v >> 1; - v |= v >> 2; - v |= v >> 4; - // We dont expect to have MAX_L2_TO_L1_MSGS_PER_TX greater than 8 bits, so commented out the below to save gas - // v |= v >> 8; - // v |= v >> 16; - v++; - - return v - _numL2toL1Msgs; - } - - function computeNumTxEffectsToPad(uint32 _numTxEffects) internal pure returns (uint32) { - // 2 is the minimum number of tx effects so we have to handle the following 2 cases separately - if (_numTxEffects == 0) { - return 2; - } else if (_numTxEffects == 1) { - return 1; - } - return 0; - } -} diff --git a/l1-contracts/src/core/libraries/crypto/MerkleLib.sol b/l1-contracts/src/core/libraries/crypto/MerkleLib.sol index 394c805044d..b363338e17c 100644 --- a/l1-contracts/src/core/libraries/crypto/MerkleLib.sol +++ b/l1-contracts/src/core/libraries/crypto/MerkleLib.sol @@ -112,4 +112,65 @@ library MerkleLib { } return height; } + + /** + * @notice Computes the root for a binary Merkle-tree given the leafs. + * @dev Uses sha256. + * @param _leafs - The 32 bytes leafs to build the tree of. + * @return The root of the Merkle tree. + */ + function computeRoot(bytes32[] memory _leafs) internal pure returns (bytes32) { + // @todo Must pad the tree + uint256 treeDepth = 0; + while (2 ** treeDepth < _leafs.length) { + treeDepth++; + } + uint256 treeSize = 2 ** treeDepth; + assembly { + mstore(_leafs, treeSize) + } + + for (uint256 i = 0; i < treeDepth; i++) { + for (uint256 j = 0; j < treeSize; j += 2) { + _leafs[j / 2] = Hash.sha256ToField(bytes.concat(_leafs[j], _leafs[j + 1])); + } + treeSize /= 2; + } + + return _leafs[0]; + } + + /** + * @notice Computes the root for a binary unbalanced Merkle-tree given the leaves. + * @dev Filled in greedily with subtrees. Useful for outHash tree. + * @param _leaves - The 32 bytes leafs to build the tree of. + * @return The root of the Merkle tree. + */ + function computeUnbalancedRoot(bytes32[] memory _leaves) internal pure returns (bytes32) { + // e.g. an unbalanced tree of 7 txs will contain subtrees of 4, 2, and 1 tx(s) = 111 + // e.g. an unbalanced tree of 9 txs will contain subtrees of 8 and 1 tx(s) = 1001 + // We collect the roots of each subtree + bytes32 root; + uint256 currentSubtreeSize = 1; + uint256 numTxs = _leaves.length; + // We must calculate the smaller rightmost subtrees first, hence starting at 1 + while (numTxs != 0) { + // If size & txs == 0, the subtree doesn't exist for this number of txs + if (currentSubtreeSize & numTxs == 0) { + currentSubtreeSize <<= 1; + continue; + } + bytes32[] memory leavesInSubtree = new bytes32[](currentSubtreeSize); + uint256 start = numTxs - currentSubtreeSize; + for (uint256 i = start; i < numTxs; i++) { + leavesInSubtree[i - start] = _leaves[i]; + } + bytes32 subtreeRoot = computeRoot(leavesInSubtree); + root = + numTxs == _leaves.length ? subtreeRoot : Hash.sha256ToField(bytes.concat(subtreeRoot, root)); + numTxs -= currentSubtreeSize; + currentSubtreeSize <<= 1; + } + return root; + } } diff --git a/l1-contracts/test/Rollup.t.sol b/l1-contracts/test/Rollup.t.sol index 740f361b6b1..b12c2ed2bc3 100644 --- a/l1-contracts/test/Rollup.t.sol +++ b/l1-contracts/test/Rollup.t.sol @@ -24,7 +24,6 @@ import {MerkleTestUtil} from "./merkle/TestUtil.sol"; import {TestERC20} from "@aztec/mock/TestERC20.sol"; import {TestConstants} from "./harnesses/TestConstants.sol"; import {RewardDistributor} from "@aztec/governance/RewardDistributor.sol"; -import {TxsDecoderHelper} from "./decoders/helpers/TxsDecoderHelper.sol"; import {IERC20Errors} from "@oz/interfaces/draft-IERC6093.sol"; import {ProposeArgs, ProposeLib} from "@aztec/core/libraries/ProposeLib.sol"; @@ -49,7 +48,6 @@ contract RollupTest is DecoderBase, TimeFns { Rollup internal rollup; Leonidas internal leo; MerkleTestUtil internal merkleTestUtil; - TxsDecoderHelper internal txsHelper; TestERC20 internal testERC20; FeeJuicePortal internal feeJuicePortal; IProofCommitmentEscrow internal proofCommitmentEscrow; @@ -102,7 +100,6 @@ contract RollupTest is DecoderBase, TimeFns { registry.upgrade(address(rollup)); merkleTestUtil = new MerkleTestUtil(); - txsHelper = new TxsDecoderHelper(); privateKey = 0x123456789abcdef123456789abcdef123456789abcdef123456789abcdef1234; signer = vm.addr(privateKey); @@ -129,6 +126,35 @@ contract RollupTest is DecoderBase, TimeFns { vm.warp(Timestamp.unwrap(rollup.getTimestampForSlot(Slot.wrap(_slot)))); } + function getBlobPublicInputs(bytes calldata _blobsInput) + public + pure + returns (bytes memory blobPublicInputs) + { + uint8 numBlobs = uint8(_blobsInput[0]); + blobPublicInputs = abi.encodePacked(numBlobs, blobPublicInputs); + for (uint256 i = 0; i < numBlobs; i++) { + // Add 1 for the numBlobs prefix + uint256 blobInputStart = i * 192 + 1; + // We want to extract the bytes we use for public inputs: + // * input[32:64] - z + // * input[64:96] - y + // * input[96:144] - commitment C + // Out of 192 bytes per blob. + blobPublicInputs = + abi.encodePacked(blobPublicInputs, _blobsInput[blobInputStart + 32:blobInputStart + 144]); + } + } + + function getBlobPublicInputsHash(bytes calldata _blobPublicInputs) + public + pure + returns (bytes32 publicInputsHash) + { + uint8 numBlobs = uint8(_blobPublicInputs[0]); + publicInputsHash = sha256(abi.encodePacked(_blobPublicInputs[1:1 + numBlobs * 112])); + } + function testClaimInTheFuture(uint256 _futureSlot) public setUpFor("mixed_block_1") { uint256 futureSlot = bound(_futureSlot, 1, 1e20); _testBlock("mixed_block_1", false, 1); @@ -251,18 +277,19 @@ contract RollupTest is DecoderBase, TimeFns { function testProofReleasesBond() public setUpFor("mixed_block_1") { DecoderBase.Data memory data = load("mixed_block_1").block; bytes memory header = data.header; - bytes32 archive = data.archive; - bytes32 blockHash = data.blockHash; bytes32 proverId = bytes32(uint256(42)); - bytes memory body = data.body; - bytes32[] memory txHashes = new bytes32[](0); // We jump to the time of the block. (unless it is in the past) vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); - ProposeArgs memory args = - ProposeArgs({header: header, archive: archive, blockHash: blockHash, txHashes: txHashes}); - rollup.propose(args, signatures, body); + skipBlobCheck(address(rollup)); + ProposeArgs memory args = ProposeArgs({ + header: header, + archive: data.archive, + blockHash: data.blockHash, + txHashes: new bytes32[](0) + }); + rollup.propose(args, signatures, data.body, data.blobInputs); quote.epochToProve = Epoch.wrap(1); quote.validUntilSlot = toSlots(Epoch.wrap(2)); @@ -274,7 +301,16 @@ contract RollupTest is DecoderBase, TimeFns { proofCommitmentEscrow.deposits(quote.prover), quote.bondAmount * 9, "Invalid escrow balance" ); - _submitEpochProof(rollup, 1, preArchive, archive, preBlockHash, blockHash, proverId); + _submitEpochProof( + rollup, + 1, + preArchive, + data.archive, + preBlockHash, + data.blockHash, + proverId, + this.getBlobPublicInputs(data.blobInputs) + ); assertEq( proofCommitmentEscrow.deposits(quote.prover), quote.bondAmount * 10, "Invalid escrow balance" @@ -419,24 +455,43 @@ contract RollupTest is DecoderBase, TimeFns { function testRevertProveTwice() public setUpFor("mixed_block_1") { DecoderBase.Data memory data = load("mixed_block_1").block; bytes memory header = data.header; - bytes32 archive = data.archive; - bytes32 blockHash = data.blockHash; - bytes32 proverId = bytes32(uint256(42)); bytes memory body = data.body; - bytes32[] memory txHashes = new bytes32[](0); // We jump to the time of the block. (unless it is in the past) vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); - ProposeArgs memory args = - ProposeArgs({header: header, archive: archive, blockHash: blockHash, txHashes: txHashes}); - rollup.propose(args, signatures, body); + skipBlobCheck(address(rollup)); + ProposeArgs memory args = ProposeArgs({ + header: header, + archive: data.archive, + blockHash: data.blockHash, + txHashes: new bytes32[](0) + }); + rollup.propose(args, signatures, body, data.blobInputs); (bytes32 preArchive, bytes32 preBlockHash,) = rollup.blocks(0); - _submitEpochProof(rollup, 1, preArchive, archive, preBlockHash, blockHash, proverId); + _submitEpochProof( + rollup, + 1, + preArchive, + data.archive, + preBlockHash, + data.blockHash, + bytes32(uint256(42)), + this.getBlobPublicInputs(data.blobInputs) + ); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlockNumber.selector, 1, 2)); - _submitEpochProof(rollup, 1, preArchive, archive, preBlockHash, blockHash, proverId); + _submitEpochProof( + rollup, + 1, + preArchive, + data.archive, + preBlockHash, + data.blockHash, + bytes32(uint256(42)), + new bytes(112) + ); } function testTimestamp() public setUpFor("mixed_block_1") { @@ -452,6 +507,51 @@ contract RollupTest is DecoderBase, TimeFns { } } + function testInvalidBlobHash() public setUpFor("mixed_block_1") { + DecoderBase.Data memory data = load("mixed_block_1").block; + bytes memory header = data.header; + + // We set the blobHash to 1 + bytes32[] memory blobHashes = new bytes32[](1); + blobHashes[0] = bytes32(uint256(1)); + vm.blobhashes(blobHashes); + ProposeArgs memory args = ProposeArgs({ + header: header, + archive: data.archive, + blockHash: data.blockHash, + txHashes: new bytes32[](0) + }); + vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlobHash.selector, blobHashes[0])); + rollup.propose(args, signatures, data.body, data.blobInputs); + } + + function testInvalidBlobProof() public setUpFor("mixed_block_1") { + DecoderBase.Data memory data = load("mixed_block_1").block; + bytes memory header = data.header; + bytes memory blobInput = data.blobInputs; + + // We set the blobHash to the correct value + bytes32[] memory blobHashes = new bytes32[](1); + // The below is the blob hash == bytes [1:33] of _blobInput + bytes32 blobHash; + assembly { + blobHash := mload(add(blobInput, 0x21)) + } + blobHashes[0] = blobHash; + vm.blobhashes(blobHashes); + + // We mess with the blob input bytes + blobInput[100] = 0x01; + ProposeArgs memory args = ProposeArgs({ + header: header, + archive: data.archive, + blockHash: data.blockHash, + txHashes: new bytes32[](0) + }); + vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlobProof.selector, blobHashes[0])); + rollup.propose(args, signatures, data.body, blobInput); + } + function testRevertPrune() public setUpFor("mixed_block_1") { vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__NothingToPrune.selector)); rollup.prune(); @@ -561,6 +661,8 @@ contract RollupTest is DecoderBase, TimeFns { // We jump to the time of the block. (unless it is in the past) vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); + skipBlobCheck(address(rollup)); + vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__NonZeroDaFee.selector)); ProposeArgs memory args = ProposeArgs({ header: header, @@ -568,7 +670,7 @@ contract RollupTest is DecoderBase, TimeFns { blockHash: data.blockHash, txHashes: txHashes }); - rollup.propose(args, signatures, data.body); + rollup.propose(args, signatures, data.body, data.blobInputs); } function testNonZeroL2Fee() public setUpFor("mixed_block_1") { @@ -585,6 +687,8 @@ contract RollupTest is DecoderBase, TimeFns { // We jump to the time of the block. (unless it is in the past) vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); + skipBlobCheck(address(rollup)); + vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__NonZeroL2Fee.selector)); ProposeArgs memory args = ProposeArgs({ header: header, @@ -592,16 +696,14 @@ contract RollupTest is DecoderBase, TimeFns { blockHash: data.blockHash, txHashes: txHashes }); - rollup.propose(args, signatures, data.body); + rollup.propose(args, signatures, data.body, data.blobInputs); } function testBlockFee() public setUpFor("mixed_block_1") { uint256 feeAmount = 2e18; DecoderBase.Data memory data = load("mixed_block_1").block; - bytes32[] memory txHashes = new bytes32[](0); uint256 portalBalance = testERC20.balanceOf(address(feeJuicePortal)); - address coinbase = data.decodedHeader.globalVariables.coinbase; // Progress time as necessary vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); @@ -617,18 +719,24 @@ contract RollupTest is DecoderBase, TimeFns { // We jump to the time of the block. (unless it is in the past) vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); - uint256 coinbaseBalance = testERC20.balanceOf(coinbase); + uint256 coinbaseBalance = testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase); assertEq(coinbaseBalance, 0, "invalid initial coinbase balance"); + skipBlobCheck(address(rollup)); + // Assert that balance have NOT been increased by proposing the block ProposeArgs memory args = ProposeArgs({ header: header, archive: data.archive, blockHash: data.blockHash, - txHashes: txHashes + txHashes: new bytes32[](0) }); - rollup.propose(args, signatures, data.body); - assertEq(testERC20.balanceOf(coinbase), 0, "invalid coinbase balance"); + rollup.propose(args, signatures, data.body, data.blobInputs); + assertEq( + testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase), + 0, + "invalid coinbase balance" + ); } (bytes32 preArchive, bytes32 preBlockHash,) = rollup.blocks(0); @@ -641,6 +749,7 @@ contract RollupTest is DecoderBase, TimeFns { rollup.claimEpochProofRight(signedQuote); { + bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); vm.expectRevert( abi.encodeWithSelector( IERC20Errors.ERC20InsufficientBalance.selector, @@ -657,11 +766,16 @@ contract RollupTest is DecoderBase, TimeFns { preBlockHash, data.blockHash, bytes32(uint256(42)), - coinbase, + blobPublicInputs, + data.decodedHeader.globalVariables.coinbase, feeAmount ); } - assertEq(testERC20.balanceOf(coinbase), 0, "invalid coinbase balance"); + assertEq( + testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase), + 0, + "invalid coinbase balance" + ); assertEq(testERC20.balanceOf(address(quote.prover)), 0, "invalid prover balance"); { @@ -676,7 +790,8 @@ contract RollupTest is DecoderBase, TimeFns { preBlockHash, data.blockHash, bytes32(uint256(42)), - coinbase, + this.getBlobPublicInputs(data.blobInputs), + data.decodedHeader.globalVariables.coinbase, feeAmount ); @@ -684,7 +799,11 @@ contract RollupTest is DecoderBase, TimeFns { uint256 expectedProverReward = Math.mulDiv(expectedReward, quote.basisPointFee, 10_000); uint256 expectedSequencerReward = expectedReward - expectedProverReward; - assertEq(testERC20.balanceOf(coinbase), expectedSequencerReward, "invalid coinbase balance"); + assertEq( + testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase), + expectedSequencerReward, + "invalid coinbase balance" + ); assertEq(testERC20.balanceOf(quote.prover), expectedProverReward, "invalid prover balance"); } } @@ -714,7 +833,20 @@ contract RollupTest is DecoderBase, TimeFns { assertEq(rollup.getProvenBlockNumber(), 0, "Invalid initial proven block number"); (bytes32 preArchive, bytes32 preBlockHash,) = rollup.blocks(0); - _submitEpochProof(rollup, 2, preArchive, data.archive, preBlockHash, data.blockHash, bytes32(0)); + bytes memory blobPublicInputs = abi.encodePacked( + this.getBlobPublicInputs(load("mixed_block_1").block.blobInputs), + this.getBlobPublicInputs(data.blobInputs) + ); + _submitEpochProof( + rollup, + 2, + preArchive, + data.archive, + preBlockHash, + data.blockHash, + bytes32(0), + blobPublicInputs + ); assertEq(rollup.getPendingBlockNumber(), 2, "Invalid pending block number"); assertEq(rollup.getProvenBlockNumber(), 2, "Invalid proven block number"); @@ -728,23 +860,32 @@ contract RollupTest is DecoderBase, TimeFns { bytes32[] memory txHashes = new bytes32[](0); vm.warp(max(block.timestamp, data2.decodedHeader.globalVariables.timestamp)); + skipBlobCheck(address(rollup)); ProposeArgs memory args = ProposeArgs({ header: data2.header, archive: data2.archive, blockHash: data2.blockHash, txHashes: txHashes }); - rollup.propose(args, signatures, data2.body); + rollup.propose(args, signatures, data2.body, data2.blobInputs); // Skips proving of block 1 (bytes32 preArchive,,) = rollup.blocks(0); + bytes memory blobPublicInputs = this.getBlobPublicInputs(data1.blobInputs); vm.expectRevert( abi.encodeWithSelector( Errors.Rollup__InvalidPreviousArchive.selector, preArchive, data1.archive ) ); _submitEpochProof( - rollup, 1, data1.archive, data2.archive, data1.archive, data2.archive, bytes32(0) + rollup, + 1, + data1.archive, + data2.archive, + data1.archive, + data2.archive, + bytes32(0), + blobPublicInputs ); assertEq(rollup.getPendingBlockNumber(), 2, "Invalid pending block number"); @@ -777,11 +918,11 @@ contract RollupTest is DecoderBase, TimeFns { // TODO: Hardcoding offsets in the middle of tests is annoying to say the least. mstore(add(header, add(0x20, 0x0174)), 0x420) } - + skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlockNumber.selector, 1, 0x420)); ProposeArgs memory args = ProposeArgs({header: header, archive: archive, blockHash: data.blockHash, txHashes: txHashes}); - rollup.propose(args, signatures, body); + rollup.propose(args, signatures, body, data.blobInputs); } function testRevertInvalidChainId() public setUpFor("empty_block_1") { @@ -794,11 +935,11 @@ contract RollupTest is DecoderBase, TimeFns { assembly { mstore(add(header, add(0x20, 0x0134)), 0x420) } - + skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidChainId.selector, 31337, 0x420)); ProposeArgs memory args = ProposeArgs({header: header, archive: archive, blockHash: data.blockHash, txHashes: txHashes}); - rollup.propose(args, signatures, body); + rollup.propose(args, signatures, body, data.blobInputs); } function testRevertInvalidVersion() public setUpFor("empty_block_1") { @@ -811,11 +952,11 @@ contract RollupTest is DecoderBase, TimeFns { assembly { mstore(add(header, add(0x20, 0x0154)), 0x420) } - + skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidVersion.selector, 1, 0x420)); ProposeArgs memory args = ProposeArgs({header: header, archive: archive, blockHash: data.blockHash, txHashes: txHashes}); - rollup.propose(args, signatures, body); + rollup.propose(args, signatures, body, data.blobInputs); } function testRevertInvalidTimestamp() public setUpFor("empty_block_1") { @@ -833,11 +974,11 @@ contract RollupTest is DecoderBase, TimeFns { assembly { mstore(add(header, add(0x20, 0x01b4)), badTs) } - + skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidTimestamp.selector, realTs, badTs)); ProposeArgs memory args = ProposeArgs({header: header, archive: archive, blockHash: data.blockHash, txHashes: txHashes}); - rollup.propose(args, signatures, body); + rollup.propose(args, signatures, body, new bytes(144)); } function testBlocksWithAssumeProven() public setUpFor("mixed_block_1") { @@ -873,7 +1014,9 @@ contract RollupTest is DecoderBase, TimeFns { vm.expectRevert( abi.encodeWithSelector(Errors.Rollup__InvalidPreviousArchive.selector, preArchive, wrong) ); - _submitEpochProof(rollup, 1, wrong, data.archive, preBlockHash, data.blockHash, bytes32(0)); + _submitEpochProof( + rollup, 1, wrong, data.archive, preBlockHash, data.blockHash, bytes32(0), new bytes(112) + ); // TODO: Reenable when we setup proper initial block hash // vm.expectRevert( @@ -892,7 +1035,9 @@ contract RollupTest is DecoderBase, TimeFns { vm.expectRevert( abi.encodeWithSelector(Errors.Rollup__InvalidArchive.selector, data.archive, 0xdeadbeef) ); - _submitEpochProof(rollup, 1, preArchive, wrongArchive, preBlockHash, data.blockHash, bytes32(0)); + _submitEpochProof( + rollup, 1, preArchive, wrongArchive, preBlockHash, data.blockHash, bytes32(0), new bytes(112) + ); } function testSubmitProofInvalidBlockHash() public setUpFor("empty_block_1") { @@ -907,7 +1052,40 @@ contract RollupTest is DecoderBase, TimeFns { Errors.Rollup__InvalidBlockHash.selector, data.blockHash, wrongBlockHash ) ); - _submitEpochProof(rollup, 1, preArchive, data.archive, preBlockHash, wrongBlockHash, bytes32(0)); + _submitEpochProof( + rollup, 1, preArchive, data.archive, preBlockHash, wrongBlockHash, bytes32(0), new bytes(112) + ); + } + + function testSubmitProofInvalidBlobPublicInput() public setUpFor("empty_block_1") { + _testBlock("empty_block_1", false); + + DecoderBase.Data memory data = load("empty_block_1").block; + bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); + // mess with the data + blobPublicInputs[100] = 0x01; + + (bytes32 preArchive, bytes32 preBlockHash,) = rollup.blocks(0); + bytes32 actualBlobPublicInputsHash = + rollup.blobPublicInputsHashes(data.decodedHeader.globalVariables.blockNumber); + bytes32 wrongBlobPublicInputsHash = this.getBlobPublicInputsHash(blobPublicInputs); + vm.expectRevert( + abi.encodeWithSelector( + Errors.Rollup__InvalidBlobPublicInputsHash.selector, + actualBlobPublicInputsHash, + wrongBlobPublicInputsHash + ) + ); + _submitEpochProof( + rollup, + 1, + preArchive, + data.archive, + preBlockHash, + data.blockHash, + bytes32(0), + blobPublicInputs + ); } function _testBlock(string memory name, bool _submitProof) public { @@ -917,8 +1095,7 @@ contract RollupTest is DecoderBase, TimeFns { function _testBlock(string memory name, bool _submitProof, uint256 _slotNumber) public { DecoderBase.Full memory full = load(name); bytes memory header = full.block.header; - uint32 numTxs = full.block.numTxs; - bytes32[] memory txHashes = new bytes32[](0); + bytes memory blobInputs = full.block.blobInputs; Slot slotNumber = Slot.wrap(_slotNumber); @@ -939,20 +1116,37 @@ contract RollupTest is DecoderBase, TimeFns { _populateInbox(full.populate.sender, full.populate.recipient, full.populate.l1ToL2Content); + { + bytes32[] memory blobHashes = new bytes32[](1); + // The below is the blob hash == bytes [1:33] of _blobInput + bytes32 blobHash; + assembly { + blobHash := mload(add(blobInputs, 0x21)) + } + blobHashes[0] = blobHash; + vm.blobhashes(blobHashes); + } ProposeArgs memory args = ProposeArgs({ header: header, archive: full.block.archive, blockHash: full.block.blockHash, - txHashes: txHashes + txHashes: new bytes32[](0) }); - rollup.propose(args, signatures, full.block.body); + rollup.propose(args, signatures, full.block.body, blobInputs); if (_submitProof) { uint256 pre = rollup.getProvenBlockNumber(); (bytes32 preArchive, bytes32 preBlockHash,) = rollup.blocks(pre); _submitEpochProof( - rollup, 1, preArchive, args.archive, preBlockHash, full.block.blockHash, bytes32(0) + rollup, + 1, + preArchive, + args.archive, + preBlockHash, + full.block.blockHash, + bytes32(0), + this.getBlobPublicInputs(blobInputs) ); assertEq(pre + 1, rollup.getProvenBlockNumber(), "Block not proven"); } @@ -966,6 +1160,7 @@ contract RollupTest is DecoderBase, TimeFns { // The below is a little janky - we know that this test deals with full txs with equal numbers // of msgs or txs with no messages, so the division works // TODO edit full.messages to include information about msgs per tx? + uint32 numTxs = full.block.numTxs; uint256 subTreeHeight = full.messages.l2ToL1Messages.length == 0 ? 0 : merkleTestUtil.calculateTreeHeightFromSize(full.messages.l2ToL1Messages.length / numTxs); @@ -1013,7 +1208,8 @@ contract RollupTest is DecoderBase, TimeFns { bytes32 _endArchive, bytes32 _previousBlockHash, bytes32 _endBlockHash, - bytes32 _proverId + bytes32 _proverId, + bytes memory _blobPublicInputs ) internal { _submitEpochProofWithFee( _rollup, @@ -1023,6 +1219,7 @@ contract RollupTest is DecoderBase, TimeFns { _previousBlockHash, _endBlockHash, _proverId, + _blobPublicInputs, address(0), uint256(0) ); @@ -1036,6 +1233,7 @@ contract RollupTest is DecoderBase, TimeFns { bytes32 _previousBlockHash, bytes32 _endBlockHash, bytes32 _proverId, + bytes memory _blobPublicInputs, address _feeRecipient, uint256 _feeAmount ) internal { @@ -1054,10 +1252,17 @@ contract RollupTest is DecoderBase, TimeFns { fees[0] = bytes32(uint256(uint160(_feeRecipient))); fees[1] = bytes32(_feeAmount); + DataStructures.SubmitProofArgs memory submitArgs = DataStructures.SubmitProofArgs({ + epochSize: _epochSize, + args: args, + fees: fees, + blobPublicInputs: _blobPublicInputs + }); + bytes memory aggregationObject = ""; bytes memory proof = ""; - _rollup.submitEpochRootProof(_epochSize, args, fees, aggregationObject, proof); + _rollup.submitEpochRootProof(submitArgs, aggregationObject, proof); } function _quoteToSignedQuote(EpochProofQuoteLib.EpochProofQuote memory _quote) diff --git a/l1-contracts/test/base/Base.sol b/l1-contracts/test/base/Base.sol index b23e785cd90..a157869a57d 100644 --- a/l1-contracts/test/base/Base.sol +++ b/l1-contracts/test/base/Base.sol @@ -219,4 +219,12 @@ contract TestBase is Test { assertEq(a, b); } } + + // Blobs + + function skipBlobCheck(address rollup) internal { + // 20 is the slot of checkBlob. We force it to be false (=0): + // Slot number can be checked by running forge inspect src/core/Rollup.sol:Rollup storage + vm.store(rollup, bytes32(uint256(20)), 0); + } } diff --git a/l1-contracts/test/decoders/Base.sol b/l1-contracts/test/decoders/Base.sol index d91a3e7f884..ec24916a163 100644 --- a/l1-contracts/test/decoders/Base.sol +++ b/l1-contracts/test/decoders/Base.sol @@ -35,6 +35,7 @@ contract DecoderBase is TestBase { struct Data { bytes32 archive; + bytes blobInputs; bytes32 blockHash; bytes body; DecodedHeader decodedHeader; @@ -43,7 +44,6 @@ contract DecoderBase is TestBase { // decoder changes uint32 numTxs; bytes32 publicInputsHash; - bytes32 txsEffectsHash; } struct DecodedHeader { @@ -75,10 +75,10 @@ contract DecoderBase is TestBase { } struct ContentCommitment { + bytes32 blobsHash; bytes32 inHash; uint256 numTxs; bytes32 outHash; - bytes32 txsEffectsHash; } struct PartialStateReference { diff --git a/l1-contracts/test/decoders/Decoders.t.sol b/l1-contracts/test/decoders/Decoders.t.sol index 9087a5734ed..5580040084d 100644 --- a/l1-contracts/test/decoders/Decoders.t.sol +++ b/l1-contracts/test/decoders/Decoders.t.sol @@ -4,12 +4,8 @@ pragma solidity >=0.8.27; import {DecoderBase} from "./Base.sol"; -import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; - import {HeaderLibHelper} from "./helpers/HeaderLibHelper.sol"; -import {TxsDecoderHelper} from "./helpers/TxsDecoderHelper.sol"; import {HeaderLib} from "@aztec/core/libraries/HeaderLib.sol"; -import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; /** * Blocks are generated using the `integration_l1_publisher.test.ts` tests. @@ -19,11 +15,9 @@ import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; */ contract DecodersTest is DecoderBase { HeaderLibHelper internal headerHelper; - TxsDecoderHelper internal txsHelper; function setUp() public virtual { headerHelper = new HeaderLibHelper(); - txsHelper = new TxsDecoderHelper(); } function testDecodeBlocks() public { @@ -77,9 +71,7 @@ contract DecodersTest is DecoderBase { assertEq(header.contentCommitment.numTxs, contentCommitment.numTxs, "Invalid txTreeSize"); assertEq( - header.contentCommitment.txsEffectsHash, - contentCommitment.txsEffectsHash, - "Invalid txsEffectsHash" + header.contentCommitment.blobsHash, contentCommitment.blobsHash, "Invalid blobHash" ); assertEq(header.contentCommitment.inHash, contentCommitment.inHash, "Invalid inHash"); assertEq(header.contentCommitment.outHash, contentCommitment.outHash, "Invalid outHash"); @@ -153,241 +145,6 @@ contract DecodersTest is DecoderBase { header.lastArchive.root, referenceHeader.lastArchive.root, "Invalid lastArchive.root" ); } - - // Txs - { - bytes32 txsEffectsHash = txsHelper.decode(data.block.body); - assertEq(txsEffectsHash, data.block.txsEffectsHash, "Invalid txs effects hash"); - assertEq( - txsEffectsHash, - data.block.decodedHeader.contentCommitment.txsEffectsHash, - "Invalid txs effects hash" - ); - } - // The public inputs are computed based of these values, but not directly part of the decoding per say. } - - function testComputeKernelLogsIterationWithoutLogs() public { - bytes memory kernelLogsLength = hex"00000004"; // 4 bytes containing value 4 - bytes memory iterationLogsLength = hex"00000000"; // 4 empty bytes indicating that length of this iteration's logs is 0 - bytes memory encodedLogs = abi.encodePacked(kernelLogsLength, iterationLogsLength); - - (bytes32 logsHash, uint256 bytesAdvanced, uint256 logsLength) = - txsHelper.computeKernelLogsHash(encodedLogs); - - assertEq(bytesAdvanced, encodedLogs.length, "Advanced by an incorrect number of bytes"); - assertEq(logsLength, 0, "Incorrect logs length"); - assertEq(logsHash, bytes32(0), "Incorrect logs hash"); - } - - function testComputeKernelLogs1Iteration() public { - // || K_LOGS_LEN | I1_LOGS_LEN | I1_LOGS || - // K_LOGS_LEN = 4 + 8 = 12 (hex"0000000c") - // I1_LOGS_LEN = 8 (hex"00000008") - // I1_LOGS = 8 bytes (hex"0000000493e78a70") - bytes memory firstFunctionCallLogs = hex"93e78a70"; - // First, prefix logs with a masked address to mimic siloing - bytes32 maskedAddress = hex"11"; - // Prefix logs with length of kernel logs (12) and length of iteration 1 logs (8) - // Note: 00000004 is the length of 1 log within function logs - // Note: 00000024 is the length of 1 log plus its masked address - bytes memory encodedLogs = - abi.encodePacked(hex"0000002c00000028", hex"00000024", maskedAddress, firstFunctionCallLogs); - (bytes32 logsHash, uint256 bytesAdvanced, uint256 logsLength) = - txsHelper.computeKernelLogsHash(encodedLogs); - - bytes32 privateCircuitPublicInputsLogsHashFirstCall = Hash.sha256ToField(firstFunctionCallLogs); - bytes32 privateCircuitPublicInputsLogsHashFirstCallSiloed = - Hash.sha256ToField(bytes.concat(maskedAddress, privateCircuitPublicInputsLogsHashFirstCall)); - - bytes32 referenceLogsHash = Hash.sha256ToField( - abi.encodePacked( - privateCircuitPublicInputsLogsHashFirstCallSiloed, - new bytes(Constants.MAX_ENCRYPTED_LOGS_PER_TX * 32 - 32) - ) - ); - - assertEq(bytesAdvanced, encodedLogs.length, "Advanced by an incorrect number of bytes"); - // We take 40 as the user does not pay for the gas of the overall len or masked address - assertEq(logsLength, encodedLogs.length - 40, "Incorrect logs length"); - assertEq(logsHash, referenceLogsHash, "Incorrect logs hash"); - } - - function testComputeKernelLogs2Iterations() public { - // || K_LOGS_LEN | I1_LOGS_LEN | I1_LOGS | I2_LOGS_LEN | I2_LOGS || - // K_LOGS_LEN = 4 + 8 + 4 + 20 = 36 (hex"00000024") - // I1_LOGS_LEN = 8 (hex"00000008") - // I1_LOGS = 8 random bytes (hex"0000000493e78a70") - // I2_LOGS_LEN = 20 (hex"00000014") - // I2_LOGS = 20 bytes (hex"0000001006a86173c86c6d3f108eefc36e7fb014") - bytes memory firstFunctionCallLogs = hex"93e78a70"; - // First, prefix logs with a masked address to mimic siloing - bytes32 firstCallMaskedAddress = hex"11"; - bytes memory secondFunctionCallLogs = hex"06a86173c86c6d3f108eefc36e7fb014"; - bytes32 secondCallMaskedAddress = hex"12"; - bytes memory encodedLogs = abi.encodePacked( - hex"0000006400000028", - hex"00000024", - firstCallMaskedAddress, - firstFunctionCallLogs, - hex"00000034", - hex"00000030", - secondCallMaskedAddress, - secondFunctionCallLogs - ); - (bytes32 logsHash, uint256 bytesAdvanced, uint256 logsLength) = - txsHelper.computeKernelLogsHash(encodedLogs); - - bytes32 referenceLogsHashFromIteration1 = Hash.sha256ToField(firstFunctionCallLogs); - bytes32 referenceLogsHashFromIteration1Siloed = - Hash.sha256ToField(bytes.concat(firstCallMaskedAddress, referenceLogsHashFromIteration1)); - - bytes32 privateCircuitPublicInputsLogsHashSecondCall = - Hash.sha256ToField(secondFunctionCallLogs); - bytes32 privateCircuitPublicInputsLogsHashSecondCallSiloed = Hash.sha256ToField( - bytes.concat(secondCallMaskedAddress, privateCircuitPublicInputsLogsHashSecondCall) - ); - - bytes32 referenceLogsHashFromIteration2 = Hash.sha256ToField( - abi.encodePacked( - referenceLogsHashFromIteration1Siloed, - privateCircuitPublicInputsLogsHashSecondCallSiloed, - new bytes(Constants.MAX_ENCRYPTED_LOGS_PER_TX * 32 - 64) - ) - ); - - assertEq(bytesAdvanced, encodedLogs.length, "Advanced by an incorrect number of bytes"); - // We take 76 as the user does not pay for the gas of the parent len bytes or masked addresses - assertEq(logsLength, encodedLogs.length - 76, "Incorrect logs length"); - assertEq(logsHash, referenceLogsHashFromIteration2, "Incorrect logs hash"); - } - - function testComputeKernelLogsMiddleIterationWithoutLogs() public { - // || K_LOGS_LEN | I1_LOGS_LEN | I1_LOGS | I2_LOGS_LEN | I2_LOGS | I3_LOGS_LEN | I3_LOGS || - // K_LOGS_LEN = 4 + 8 + 4 + 0 + 4 + 20 = 40 (hex"00000028") - // I1_LOGS_LEN = 8 (hex"00000008") - // I1_LOGS = 8 random bytes (hex"0000000493e78a70") - // I2_LOGS_LEN = 0 (hex"00000000") - // I2_LOGS = 0 bytes (hex"") - // I3_LOGS_LEN = 20 (hex"00000014") - // I3_LOGS = 20 random bytes (hex"0000001006a86173c86c6d3f108eefc36e7fb014") - bytes memory firstFunctionCallLogs = hex"93e78a70"; - // First, prefix logs with a masked address to mimic siloing - bytes32 firstCallMaskedAddress = hex"11"; - bytes memory secondFunctionCallLogs = hex""; - bytes memory thirdFunctionCallLogs = hex"06a86173c86c6d3f108eefc36e7fb014"; - bytes32 thirdCallMaskedAddress = hex"12"; - bytes memory encodedLogs = abi.encodePacked( - hex"0000006800000028", - hex"00000024", - firstCallMaskedAddress, - firstFunctionCallLogs, - hex"00000000", - secondFunctionCallLogs, - hex"00000034", - hex"00000030", - thirdCallMaskedAddress, - thirdFunctionCallLogs - ); - (bytes32 logsHash, uint256 bytesAdvanced, uint256 logsLength) = - txsHelper.computeKernelLogsHash(encodedLogs); - - bytes32 referenceLogsHashFromIteration1 = Hash.sha256ToField(firstFunctionCallLogs); - bytes32 referenceLogsHashFromIteration1Siloed = - Hash.sha256ToField(bytes.concat(firstCallMaskedAddress, referenceLogsHashFromIteration1)); - - // Note: as of resolving #5017, we now hash logs inside the circuits - // Following the YP, we skip any zero length logs, hence no use of secondFunctionCallLogs here - - bytes32 privateCircuitPublicInputsLogsHashThirdCall = Hash.sha256ToField(thirdFunctionCallLogs); - bytes32 privateCircuitPublicInputsLogsHashThirdCallSiloed = Hash.sha256ToField( - bytes.concat(thirdCallMaskedAddress, privateCircuitPublicInputsLogsHashThirdCall) - ); - - bytes32 referenceLogsHashFromIteration3 = Hash.sha256ToField( - abi.encodePacked( - referenceLogsHashFromIteration1Siloed, - privateCircuitPublicInputsLogsHashThirdCallSiloed, - new bytes(Constants.MAX_ENCRYPTED_LOGS_PER_TX * 32 - 64) - ) - ); - - assertEq(bytesAdvanced, encodedLogs.length, "Advanced by an incorrect number of bytes"); - // We take 80 as the user does not pay for the gas of the parent len bytes or masked addresses - assertEq(logsLength, encodedLogs.length - 80, "Incorrect logs length"); - assertEq(logsHash, referenceLogsHashFromIteration3, "Incorrect logs hash"); - } - - function testComputeTxOutHash() public { - // A tx with no msgs should give an out hash of 0 - bytes memory encodedMsgs = abi.encodePacked(hex"00"); - bytes32 outHash = txsHelper.computeTxOutHash(encodedMsgs); - assertEq(outHash, 0, "Incorrect tx empty out hash"); - // Mimics test_3_elems test in .nr, with msg hashes of value 10, 11, and 12 - bytes32[3] memory msgs = [bytes32(hex"0a"), bytes32(hex"0b"), bytes32(hex"0c")]; - encodedMsgs = abi.encodePacked(hex"03", msgs); - outHash = txsHelper.computeTxOutHash(encodedMsgs); - bytes32 firstNode = Hash.sha256ToField(bytes.concat(msgs[0], msgs[1])); - bytes32 secondNode = Hash.sha256ToField(bytes.concat(msgs[2], bytes32(0))); - bytes32 expectedOutHash = Hash.sha256ToField(bytes.concat(firstNode, secondNode)); - assertEq(outHash, expectedOutHash, "Incorrect tx out hash"); - } - - function testTxsDecoderCorrectlyComputesNumTxEffectsToPad() public { - // Minimum num txs is 2 so when there are no real txs we need to pad to 2 - uint32 numTxEffects = 0; - uint32 paddedNumTxEffects = txsHelper.computeNumTxEffectsToPad(numTxEffects); - assertEq(paddedNumTxEffects, 2, "Incorrect number of tx effects to pad"); - - numTxEffects = 1; - paddedNumTxEffects = txsHelper.computeNumTxEffectsToPad(numTxEffects); - assertEq(paddedNumTxEffects, 2 ** 1 - numTxEffects, "Incorrect number of tx effects to pad"); - - numTxEffects = 3; - paddedNumTxEffects = txsHelper.computeNumTxEffectsToPad(numTxEffects); - assertEq(paddedNumTxEffects, 0, "Incorrect number of tx effects to pad"); - - numTxEffects = 17; - paddedNumTxEffects = txsHelper.computeNumTxEffectsToPad(numTxEffects); - assertEq(paddedNumTxEffects, 0, "Incorrect number of tx effects to pad"); - } - - function testTxsDecoderCorrectlyComputesNumMsgsToPad() public { - uint32 numMsgs = 0; - uint32 numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 1, "Incorrect number of msgs to pad"); - - numMsgs = 1; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 2 ** 1 - numMsgs, "Incorrect number of msgs to pad"); - - numMsgs = 2; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 0, "Incorrect number of msgs to pad"); - - numMsgs = 3; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 2 ** 2 - numMsgs, "Incorrect number of msgs to pad"); - - numMsgs = 4; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 0, "Incorrect number of msgs to pad"); - - numMsgs = 5; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 2 ** 3 - numMsgs, "Incorrect number of msgs to pad"); - - numMsgs = 6; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 2 ** 3 - numMsgs, "Incorrect number of msgs to pad"); - - numMsgs = 7; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 2 ** 3 - numMsgs, "Incorrect number of msgs to pad"); - - numMsgs = 7; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 2 ** 3 - numMsgs, "Incorrect number of msgs to pad"); - } } diff --git a/l1-contracts/test/decoders/helpers/TxsDecoderHelper.sol b/l1-contracts/test/decoders/helpers/TxsDecoderHelper.sol deleted file mode 100644 index 6e35c77504f..00000000000 --- a/l1-contracts/test/decoders/helpers/TxsDecoderHelper.sol +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2024 Aztec Labs. -pragma solidity >=0.8.27; - -import {TxsDecoder} from "@aztec/core/libraries/TxsDecoder.sol"; -import {MerkleLib} from "@aztec/core/libraries/crypto/MerkleLib.sol"; - -contract TxsDecoderHelper { - // A wrapper used such that we get "calldata" and not memory - function decode(bytes calldata _body) public pure returns (bytes32 txsHash) { - return TxsDecoder.decode(_body); - } - - function computeKernelLogsHash(bytes calldata _kernelLogs) - external - pure - returns (bytes32, uint256, uint256) - { - return TxsDecoder.computeKernelEncryptedLogsHash(0, _kernelLogs); - } - - function computeTxOutHash(bytes calldata _kernelMsgs) external pure returns (bytes32) { - return TxsDecoder.computeTxOutHash(1, _kernelMsgs); - } - - function computeNumTxEffectsToPad(uint32 _numTxEffects) external pure returns (uint32) { - return TxsDecoder.computeNumTxEffectsToPad(_numTxEffects); - } - - function computeNumMsgsToPad(uint32 _numL2toL1Msgs) external pure returns (uint32) { - return TxsDecoder.computeNumMsgsToPad(_numL2toL1Msgs); - } - - function computeUnbalancedRoot(bytes32[] memory _leaves) external pure returns (bytes32) { - return TxsDecoder.computeUnbalancedRoot(_leaves); - } - - function computeMinMaxPathLength(uint32 _numTxEffects) external pure returns (uint256, uint256) { - return MerkleLib.computeMinMaxPathLength(_numTxEffects); - } -} diff --git a/l1-contracts/test/fixtures/empty_block_1.json b/l1-contracts/test/fixtures/empty_block_1.json index 0070d3ebdd8..820bd6e58be 100644 --- a/l1-contracts/test/fixtures/empty_block_1.json +++ b/l1-contracts/test/fixtures/empty_block_1.json @@ -8,25 +8,24 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x1f80d0f24457c066a8b752a2c424ee0c8bd61143db120fa0841d0f4233f7e21d", - "blockHash": "0x267f79fe7e757b20e924fac9f78264a0d1c8c4b481fea21d0bbe74650d87a1f1", + "archive": "0x192b47a3a12bb20ef6b467f094b0c0f546d81736d60cef42402dea60c8c0d525", + "blockHash": "0x13f42a72624ae6b4bf3ae1fdb26f3e2d06d3417b60af4f365df13706fd4783a4", "body": "0x00000000", - "txsEffectsHash": "0x002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c9", "decodedHeader": { "contentCommitment": { + "blobsHash": "0x001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d9", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", "outHash": "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb", - "numTxs": 2, - "txsEffectsHash": "0x002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c9" + "numTxs": 2 }, "globalVariables": { "blockNumber": 1, "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000012", "chainId": 31337, - "timestamp": 1731434785, + "timestamp": 1732285514, "version": 1, - "coinbase": "0x4f6cd865d580ac0011a4776d8dc51db519c2318a", - "feeRecipient": "0x1ae8b5e1d9882013ea5271b1e71b307bc48c191549588587a227c8a118834864", + "coinbase": "0xf7cb80e18216bac01baa25aaa61decd9784c4d73", + "feeRecipient": "0x2861cd68fd33e3acc2f56271a629d5b2a61c027b2a4cbd2a98f44c8a56d25453", "gasFees": { "feePerDaGas": 0, "feePerL2Gas": 0 @@ -51,14 +50,15 @@ "root": "0x0c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073" }, "publicDataTree": { - "nextAvailableLeafIndex": 256, + "nextAvailableLeafIndex": 128, "root": "0x23c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9" } } } }, - "header": "0x2a05cb8aeefe9b9797f90650eae072f5ab7437807e62f9724ce1900467779860000000010000000000000000000000000000000000000000000000000000000000000002002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000101fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000000800c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000010023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000001000000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000673399214f6cd865d580ac0011a4776d8dc51db519c2318a1ae8b5e1d9882013ea5271b1e71b307bc48c191549588587a227c8a118834864000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x00f45c9ec73df38136aa1fed90362a5df796817e37a36d02df4700f80bc356b2", + "header": "0x2a05cb8aeefe9b9797f90650eae072f5ab7437807e62f9724ce1900467779860000000010000000000000000000000000000000000000000000000000000000000000002001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000101fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000000800c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000010023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000006740944af7cb80e18216bac01baa25aaa61decd9784c4d732861cd68fd33e3acc2f56271a629d5b2a61c027b2a4cbd2a98f44c8a56d25453000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x00e98d4e431913fb9e1054e86564a761cfd983765b07a557b7b3201b8ddaecba", + "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/empty_block_2.json b/l1-contracts/test/fixtures/empty_block_2.json index 447934f005b..d94db0c6edb 100644 --- a/l1-contracts/test/fixtures/empty_block_2.json +++ b/l1-contracts/test/fixtures/empty_block_2.json @@ -8,25 +8,24 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x1120ec22c3dd3dd6904b9520f086189726776a41c75c53f8f4cea4a53bc45844", - "blockHash": "0x2d48eea4aa6c13eea47df326e22cd76e74ecc24ee272d6b4207eb5f494f891d3", + "archive": "0x1584dbcbe9d5e96b07bd5a2d9477b1f76d1670528644f240c86cafda613ce22c", + "blockHash": "0x303a5cd1113d57baebccadd3496491821599e7f1458bdbb0675ce9d71e7404d1", "body": "0x00000000", - "txsEffectsHash": "0x002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c9", "decodedHeader": { "contentCommitment": { + "blobsHash": "0x001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d9", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", "outHash": "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb", - "numTxs": 2, - "txsEffectsHash": "0x002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c9" + "numTxs": 2 }, "globalVariables": { "blockNumber": 2, "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000013", "chainId": 31337, - "timestamp": 1731434809, + "timestamp": 1732285538, "version": 1, - "coinbase": "0x4f6cd865d580ac0011a4776d8dc51db519c2318a", - "feeRecipient": "0x1ae8b5e1d9882013ea5271b1e71b307bc48c191549588587a227c8a118834864", + "coinbase": "0xf7cb80e18216bac01baa25aaa61decd9784c4d73", + "feeRecipient": "0x2861cd68fd33e3acc2f56271a629d5b2a61c027b2a4cbd2a98f44c8a56d25453", "gasFees": { "feePerDaGas": 0, "feePerL2Gas": 0 @@ -34,7 +33,7 @@ }, "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x1f80d0f24457c066a8b752a2c424ee0c8bd61143db120fa0841d0f4233f7e21d" + "root": "0x192b47a3a12bb20ef6b467f094b0c0f546d81736d60cef42402dea60c8c0d525" }, "stateReference": { "l1ToL2MessageTree": { @@ -51,14 +50,15 @@ "root": "0x0c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073" }, "publicDataTree": { - "nextAvailableLeafIndex": 384, + "nextAvailableLeafIndex": 128, "root": "0x23c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9" } } } }, - "header": "0x1f80d0f24457c066a8b752a2c424ee0c8bd61143db120fa0841d0f4233f7e21d000000020000000000000000000000000000000000000000000000000000000000000002002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000201fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000001000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000018023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000001800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001300000000000000000000000000000000000000000000000000000000673399394f6cd865d580ac0011a4776d8dc51db519c2318a1ae8b5e1d9882013ea5271b1e71b307bc48c191549588587a227c8a118834864000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x0050ad1c615efe79df6f8ed137584b719b7043725a87ff1b1e2a29f22f0827c8", + "header": "0x192b47a3a12bb20ef6b467f094b0c0f546d81736d60cef42402dea60c8c0d525000000020000000000000000000000000000000000000000000000000000000000000002001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000201fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000001000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000018023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000130000000000000000000000000000000000000000000000000000000067409462f7cb80e18216bac01baa25aaa61decd9784c4d732861cd68fd33e3acc2f56271a629d5b2a61c027b2a4cbd2a98f44c8a56d25453000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x008280aabced37627bae259d76bd9a83189c8523f77f4f712cfd024fad4935b0", + "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_1.json b/l1-contracts/test/fixtures/mixed_block_1.json index e3a5c4cceb9..79428509390 100644 --- a/l1-contracts/test/fixtures/mixed_block_1.json +++ b/l1-contracts/test/fixtures/mixed_block_1.json @@ -58,25 +58,24 @@ ] }, "block": { - "archive": "0x13232b1c92fcfba5f94aee813d7e454764f93d6292215552b8c973ef42c8e396", - "blockHash": "0x024c7ee2217388b1e45747c7233b2f3993bfc88a8a944ee89a11d9c66c24907d", + "archive": "0x0e53899e5997e6e78a98a4092b9627f8618a34f7e6585286acff725d1ae5e32d", + "blockHash": "0x1bee21e407ecf91479782653071dd9688dad0b2c6351ea12a8b468ada828dcd1", "body": "0x00000004000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f3f0000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e080097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b300ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a598900619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba6713f0000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000008100100000000000000000000000000000000000000000000000000000000000810020000000000000000000000000000000000000000000000000000000000081003000000000000000000000000000000000000000000000000000000000008100400000000000000000000000000000000000000000000000000000000000810050000000000000000000000000000000000000000000000000000000000081006000000000000000000000000000000000000000000000000000000000008100700000000000000000000000000000000000000000000000000000000000810080000000000000000000000000000000000000000000000000000000000081009000000000000000000000000000000000000000000000000000000000008100a000000000000000000000000000000000000000000000000000000000008100b000000000000000000000000000000000000000000000000000000000008100c000000000000000000000000000000000000000000000000000000000008100d000000000000000000000000000000000000000000000000000000000008100e000000000000000000000000000000000000000000000000000000000008100f0000000000000000000000000000000000000000000000000000000000081010000000000000000000000000000000000000000000000000000000000008101100000000000000000000000000000000000000000000000000000000000810120000000000000000000000000000000000000000000000000000000000081013000000000000000000000000000000000000000000000000000000000008101400000000000000000000000000000000000000000000000000000000000810150000000000000000000000000000000000000000000000000000000000081016000000000000000000000000000000000000000000000000000000000008101700000000000000000000000000000000000000000000000000000000000810180000000000000000000000000000000000000000000000000000000000081019000000000000000000000000000000000000000000000000000000000008101a000000000000000000000000000000000000000000000000000000000008101b000000000000000000000000000000000000000000000000000000000008101c000000000000000000000000000000000000000000000000000000000008101d000000000000000000000000000000000000000000000000000000000008101e000000000000000000000000000000000000000000000000000000000008101f0000000000000000000000000000000000000000000000000000000000081020000000000000000000000000000000000000000000000000000000000008102100000000000000000000000000000000000000000000000000000000000810220000000000000000000000000000000000000000000000000000000000081023000000000000000000000000000000000000000000000000000000000008102400000000000000000000000000000000000000000000000000000000000810250000000000000000000000000000000000000000000000000000000000081026000000000000000000000000000000000000000000000000000000000008102700000000000000000000000000000000000000000000000000000000000810280000000000000000000000000000000000000000000000000000000000081029000000000000000000000000000000000000000000000000000000000008102a000000000000000000000000000000000000000000000000000000000008102b000000000000000000000000000000000000000000000000000000000008102c000000000000000000000000000000000000000000000000000000000008102d000000000000000000000000000000000000000000000000000000000008102e000000000000000000000000000000000000000000000000000000000008102f0000000000000000000000000000000000000000000000000000000000081030000000000000000000000000000000000000000000000000000000000008103100000000000000000000000000000000000000000000000000000000000810320000000000000000000000000000000000000000000000000000000000081033000000000000000000000000000000000000000000000000000000000008103400000000000000000000000000000000000000000000000000000000000810350000000000000000000000000000000000000000000000000000000000081036000000000000000000000000000000000000000000000000000000000008103700000000000000000000000000000000000000000000000000000000000810380000000000000000000000000000000000000000000000000000000000081039000000000000000000000000000000000000000000000000000000000008103a000000000000000000000000000000000000000000000000000000000008103b000000000000000000000000000000000000000000000000000000000008103c000000000000000000000000000000000000000000000000000000000008103d000000000000000000000000000000000000000000000000000000000008103e000000000000000000000000000000000000000000000000000000000008103f3f0000000000000000000000000000000000000000000000000000000000081100000000000000000000000000000000000000000000000000000000000008110100000000000000000000000000000000000000000000000000000000000811020000000000000000000000000000000000000000000000000000000000081103000000000000000000000000000000000000000000000000000000000008110400000000000000000000000000000000000000000000000000000000000811050000000000000000000000000000000000000000000000000000000000081106000000000000000000000000000000000000000000000000000000000008110700000000000000000000000000000000000000000000000000000000000811080000000000000000000000000000000000000000000000000000000000081109000000000000000000000000000000000000000000000000000000000008110a000000000000000000000000000000000000000000000000000000000008110b000000000000000000000000000000000000000000000000000000000008110c000000000000000000000000000000000000000000000000000000000008110d000000000000000000000000000000000000000000000000000000000008110e000000000000000000000000000000000000000000000000000000000008110f0000000000000000000000000000000000000000000000000000000000081110000000000000000000000000000000000000000000000000000000000008111100000000000000000000000000000000000000000000000000000000000811120000000000000000000000000000000000000000000000000000000000081113000000000000000000000000000000000000000000000000000000000008111400000000000000000000000000000000000000000000000000000000000811150000000000000000000000000000000000000000000000000000000000081116000000000000000000000000000000000000000000000000000000000008111700000000000000000000000000000000000000000000000000000000000811180000000000000000000000000000000000000000000000000000000000081119000000000000000000000000000000000000000000000000000000000008111a000000000000000000000000000000000000000000000000000000000008111b000000000000000000000000000000000000000000000000000000000008111c000000000000000000000000000000000000000000000000000000000008111d000000000000000000000000000000000000000000000000000000000008111e000000000000000000000000000000000000000000000000000000000008111f0000000000000000000000000000000000000000000000000000000000081120000000000000000000000000000000000000000000000000000000000008112100000000000000000000000000000000000000000000000000000000000811220000000000000000000000000000000000000000000000000000000000081123000000000000000000000000000000000000000000000000000000000008112400000000000000000000000000000000000000000000000000000000000811250000000000000000000000000000000000000000000000000000000000081126000000000000000000000000000000000000000000000000000000000008112700000000000000000000000000000000000000000000000000000000000811280000000000000000000000000000000000000000000000000000000000081129000000000000000000000000000000000000000000000000000000000008112a000000000000000000000000000000000000000000000000000000000008112b000000000000000000000000000000000000000000000000000000000008112c000000000000000000000000000000000000000000000000000000000008112d000000000000000000000000000000000000000000000000000000000008112e000000000000000000000000000000000000000000000000000000000008112f0000000000000000000000000000000000000000000000000000000000081130000000000000000000000000000000000000000000000000000000000008113100000000000000000000000000000000000000000000000000000000000811320000000000000000000000000000000000000000000000000000000000081133000000000000000000000000000000000000000000000000000000000008113400000000000000000000000000000000000000000000000000000000000811350000000000000000000000000000000000000000000000000000000000081136000000000000000000000000000000000000000000000000000000000008113700000000000000000000000000000000000000000000000000000000000811380000000000000000000000000000000000000000000000000000000000081139000000000000000000000000000000000000000000000000000000000008113a000000000000000000000000000000000000000000000000000000000008113b000000000000000000000000000000000000000000000000000000000008113c000000000000000000000000000000000000000000000000000000000008113d000000000000000000000000000000000000000000000000000000000008113e08003c0472260790b0bdfb8ae4dc4d437e7686b73643f2198970d84e1059a5f13500bfd46275a318e438726ff2765ae154b63ab8a0daebcbed668a5f58a0e63dc1007906b9418dc758c6b4f8454c69baa48b7889b6b511d707abe8e2cb8f7c397300aeb60c4d65a44f122e58bf9565dfe2024b3ae654d5cf2e47ecb035d53c927000bf82e8cda20345f37bbb1de3932172324b57f0b98be483392697b168e3bba8000fb4bbad884ef30edf68e45a6cf2733fcf50310c69d7c1432b29af2c0aa8040023e1622d27fee3b4a40ab975ae0eb2e31619ef3dc76eb858f7fddb6a056131004689cd7007daf98dd3218b839b8e6a29f957154347b391fdb376bd0b344be23f0000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082001000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082002000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082003000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082004000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082005000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820060000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008200700000000000000000000000000000000000000000000000000000000000820110000000000000000000000000000000000000000000000000000000000082008000000000000000000000000000000000000000000000000000000000008201200000000000000000000000000000000000000000000000000000000000820090000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082016000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082017000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082011000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082012000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820160000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008201700000000000000000000000000000000000000000000000000000000000820210000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008202200000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082026000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082027000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082021000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082022000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820260000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008202700000000000000000000000000000000000000000000000000000000000820310000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008203200000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082036000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082037000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082031000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082032000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008203f00000000000000000000000000000000000000000000000000000000000820360000000000000000000000000000000000000000000000000000000000082040000000000000000000000000000000000000000000000000000000000008203700000000000000000000000000000000000000000000000000000000000820410000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008204200000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082043000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082044000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082045000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082046000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082047000000000000000000000000000000000000000000000000000000000008203e00000000000000000000000000000000000000000000000000000000000820480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c100100000000000000000000000000000000000000000000000000000000000c100200000000000000000000000000000000000000000000000000000000000c100300000000000000000000000000000000000000000000000000000000000c100400000000000000000000000000000000000000000000000000000000000c100500000000000000000000000000000000000000000000000000000000000c100600000000000000000000000000000000000000000000000000000000000c100700000000000000000000000000000000000000000000000000000000000c100800000000000000000000000000000000000000000000000000000000000c100900000000000000000000000000000000000000000000000000000000000c100a00000000000000000000000000000000000000000000000000000000000c100b00000000000000000000000000000000000000000000000000000000000c100c00000000000000000000000000000000000000000000000000000000000c100d00000000000000000000000000000000000000000000000000000000000c100e00000000000000000000000000000000000000000000000000000000000c100f00000000000000000000000000000000000000000000000000000000000c101000000000000000000000000000000000000000000000000000000000000c101100000000000000000000000000000000000000000000000000000000000c101200000000000000000000000000000000000000000000000000000000000c101300000000000000000000000000000000000000000000000000000000000c101400000000000000000000000000000000000000000000000000000000000c101500000000000000000000000000000000000000000000000000000000000c101600000000000000000000000000000000000000000000000000000000000c101700000000000000000000000000000000000000000000000000000000000c101800000000000000000000000000000000000000000000000000000000000c101900000000000000000000000000000000000000000000000000000000000c101a00000000000000000000000000000000000000000000000000000000000c101b00000000000000000000000000000000000000000000000000000000000c101c00000000000000000000000000000000000000000000000000000000000c101d00000000000000000000000000000000000000000000000000000000000c101e00000000000000000000000000000000000000000000000000000000000c101f00000000000000000000000000000000000000000000000000000000000c102000000000000000000000000000000000000000000000000000000000000c102100000000000000000000000000000000000000000000000000000000000c102200000000000000000000000000000000000000000000000000000000000c102300000000000000000000000000000000000000000000000000000000000c102400000000000000000000000000000000000000000000000000000000000c102500000000000000000000000000000000000000000000000000000000000c102600000000000000000000000000000000000000000000000000000000000c102700000000000000000000000000000000000000000000000000000000000c102800000000000000000000000000000000000000000000000000000000000c102900000000000000000000000000000000000000000000000000000000000c102a00000000000000000000000000000000000000000000000000000000000c102b00000000000000000000000000000000000000000000000000000000000c102c00000000000000000000000000000000000000000000000000000000000c102d00000000000000000000000000000000000000000000000000000000000c102e00000000000000000000000000000000000000000000000000000000000c102f00000000000000000000000000000000000000000000000000000000000c103000000000000000000000000000000000000000000000000000000000000c103100000000000000000000000000000000000000000000000000000000000c103200000000000000000000000000000000000000000000000000000000000c103300000000000000000000000000000000000000000000000000000000000c103400000000000000000000000000000000000000000000000000000000000c103500000000000000000000000000000000000000000000000000000000000c103600000000000000000000000000000000000000000000000000000000000c103700000000000000000000000000000000000000000000000000000000000c103800000000000000000000000000000000000000000000000000000000000c103900000000000000000000000000000000000000000000000000000000000c103a00000000000000000000000000000000000000000000000000000000000c103b00000000000000000000000000000000000000000000000000000000000c103c00000000000000000000000000000000000000000000000000000000000c103d00000000000000000000000000000000000000000000000000000000000c103e00000000000000000000000000000000000000000000000000000000000c103f3f00000000000000000000000000000000000000000000000000000000000c110000000000000000000000000000000000000000000000000000000000000c110100000000000000000000000000000000000000000000000000000000000c110200000000000000000000000000000000000000000000000000000000000c110300000000000000000000000000000000000000000000000000000000000c110400000000000000000000000000000000000000000000000000000000000c110500000000000000000000000000000000000000000000000000000000000c110600000000000000000000000000000000000000000000000000000000000c110700000000000000000000000000000000000000000000000000000000000c110800000000000000000000000000000000000000000000000000000000000c110900000000000000000000000000000000000000000000000000000000000c110a00000000000000000000000000000000000000000000000000000000000c110b00000000000000000000000000000000000000000000000000000000000c110c00000000000000000000000000000000000000000000000000000000000c110d00000000000000000000000000000000000000000000000000000000000c110e00000000000000000000000000000000000000000000000000000000000c110f00000000000000000000000000000000000000000000000000000000000c111000000000000000000000000000000000000000000000000000000000000c111100000000000000000000000000000000000000000000000000000000000c111200000000000000000000000000000000000000000000000000000000000c111300000000000000000000000000000000000000000000000000000000000c111400000000000000000000000000000000000000000000000000000000000c111500000000000000000000000000000000000000000000000000000000000c111600000000000000000000000000000000000000000000000000000000000c111700000000000000000000000000000000000000000000000000000000000c111800000000000000000000000000000000000000000000000000000000000c111900000000000000000000000000000000000000000000000000000000000c111a00000000000000000000000000000000000000000000000000000000000c111b00000000000000000000000000000000000000000000000000000000000c111c00000000000000000000000000000000000000000000000000000000000c111d00000000000000000000000000000000000000000000000000000000000c111e00000000000000000000000000000000000000000000000000000000000c111f00000000000000000000000000000000000000000000000000000000000c112000000000000000000000000000000000000000000000000000000000000c112100000000000000000000000000000000000000000000000000000000000c112200000000000000000000000000000000000000000000000000000000000c112300000000000000000000000000000000000000000000000000000000000c112400000000000000000000000000000000000000000000000000000000000c112500000000000000000000000000000000000000000000000000000000000c112600000000000000000000000000000000000000000000000000000000000c112700000000000000000000000000000000000000000000000000000000000c112800000000000000000000000000000000000000000000000000000000000c112900000000000000000000000000000000000000000000000000000000000c112a00000000000000000000000000000000000000000000000000000000000c112b00000000000000000000000000000000000000000000000000000000000c112c00000000000000000000000000000000000000000000000000000000000c112d00000000000000000000000000000000000000000000000000000000000c112e00000000000000000000000000000000000000000000000000000000000c112f00000000000000000000000000000000000000000000000000000000000c113000000000000000000000000000000000000000000000000000000000000c113100000000000000000000000000000000000000000000000000000000000c113200000000000000000000000000000000000000000000000000000000000c113300000000000000000000000000000000000000000000000000000000000c113400000000000000000000000000000000000000000000000000000000000c113500000000000000000000000000000000000000000000000000000000000c113600000000000000000000000000000000000000000000000000000000000c113700000000000000000000000000000000000000000000000000000000000c113800000000000000000000000000000000000000000000000000000000000c113900000000000000000000000000000000000000000000000000000000000c113a00000000000000000000000000000000000000000000000000000000000c113b00000000000000000000000000000000000000000000000000000000000c113c00000000000000000000000000000000000000000000000000000000000c113d00000000000000000000000000000000000000000000000000000000000c113e0800f8029be42ec3f25204907ca981fb71e5b357093eb5db10fc01ca98a4e4154c0030e13d351a5bf1d5a040e82a163ca57017f39162693f85c571e441e36d702d00a550ae0f39f977d9473d6de1be3232fc68ed0c4a601d53542148695102cfc9005580bc65e4bff9c8fffa64db02c0fa6af14d9d26fd962f4c5904cbd3ddec2500758c4a0d43dfec788b2f580877c4f473adec8f168ea24424f2600e4eb4916f00342602bf90d10f8ca8e582a894dcc4c02bb89fe458532e0c632b53bae54b4d00ca43ab78ab834337e9964d84a0674c9adabdca140539c5a6bc96e0ba9a51f6004ffbfd91be292a7c6a0e255e50caa156ac2d628b40ad2128c4ab63a92d8a1c3f00000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c200100000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c200200000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c200300000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c200400000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c200500000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c200600000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c200700000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c200800000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c200900000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c204000000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c204100000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c204200000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c204300000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c204400000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c204500000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c204600000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c204700000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c2048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000010100100000000000000000000000000000000000000000000000000000000001010020000000000000000000000000000000000000000000000000000000000101003000000000000000000000000000000000000000000000000000000000010100400000000000000000000000000000000000000000000000000000000001010050000000000000000000000000000000000000000000000000000000000101006000000000000000000000000000000000000000000000000000000000010100700000000000000000000000000000000000000000000000000000000001010080000000000000000000000000000000000000000000000000000000000101009000000000000000000000000000000000000000000000000000000000010100a000000000000000000000000000000000000000000000000000000000010100b000000000000000000000000000000000000000000000000000000000010100c000000000000000000000000000000000000000000000000000000000010100d000000000000000000000000000000000000000000000000000000000010100e000000000000000000000000000000000000000000000000000000000010100f0000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000000000000000000000000000010101100000000000000000000000000000000000000000000000000000000001010120000000000000000000000000000000000000000000000000000000000101013000000000000000000000000000000000000000000000000000000000010101400000000000000000000000000000000000000000000000000000000001010150000000000000000000000000000000000000000000000000000000000101016000000000000000000000000000000000000000000000000000000000010101700000000000000000000000000000000000000000000000000000000001010180000000000000000000000000000000000000000000000000000000000101019000000000000000000000000000000000000000000000000000000000010101a000000000000000000000000000000000000000000000000000000000010101b000000000000000000000000000000000000000000000000000000000010101c000000000000000000000000000000000000000000000000000000000010101d000000000000000000000000000000000000000000000000000000000010101e000000000000000000000000000000000000000000000000000000000010101f0000000000000000000000000000000000000000000000000000000000101020000000000000000000000000000000000000000000000000000000000010102100000000000000000000000000000000000000000000000000000000001010220000000000000000000000000000000000000000000000000000000000101023000000000000000000000000000000000000000000000000000000000010102400000000000000000000000000000000000000000000000000000000001010250000000000000000000000000000000000000000000000000000000000101026000000000000000000000000000000000000000000000000000000000010102700000000000000000000000000000000000000000000000000000000001010280000000000000000000000000000000000000000000000000000000000101029000000000000000000000000000000000000000000000000000000000010102a000000000000000000000000000000000000000000000000000000000010102b000000000000000000000000000000000000000000000000000000000010102c000000000000000000000000000000000000000000000000000000000010102d000000000000000000000000000000000000000000000000000000000010102e000000000000000000000000000000000000000000000000000000000010102f0000000000000000000000000000000000000000000000000000000000101030000000000000000000000000000000000000000000000000000000000010103100000000000000000000000000000000000000000000000000000000001010320000000000000000000000000000000000000000000000000000000000101033000000000000000000000000000000000000000000000000000000000010103400000000000000000000000000000000000000000000000000000000001010350000000000000000000000000000000000000000000000000000000000101036000000000000000000000000000000000000000000000000000000000010103700000000000000000000000000000000000000000000000000000000001010380000000000000000000000000000000000000000000000000000000000101039000000000000000000000000000000000000000000000000000000000010103a000000000000000000000000000000000000000000000000000000000010103b000000000000000000000000000000000000000000000000000000000010103c000000000000000000000000000000000000000000000000000000000010103d000000000000000000000000000000000000000000000000000000000010103e000000000000000000000000000000000000000000000000000000000010103f3f0000000000000000000000000000000000000000000000000000000000101100000000000000000000000000000000000000000000000000000000000010110100000000000000000000000000000000000000000000000000000000001011020000000000000000000000000000000000000000000000000000000000101103000000000000000000000000000000000000000000000000000000000010110400000000000000000000000000000000000000000000000000000000001011050000000000000000000000000000000000000000000000000000000000101106000000000000000000000000000000000000000000000000000000000010110700000000000000000000000000000000000000000000000000000000001011080000000000000000000000000000000000000000000000000000000000101109000000000000000000000000000000000000000000000000000000000010110a000000000000000000000000000000000000000000000000000000000010110b000000000000000000000000000000000000000000000000000000000010110c000000000000000000000000000000000000000000000000000000000010110d000000000000000000000000000000000000000000000000000000000010110e000000000000000000000000000000000000000000000000000000000010110f0000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000010111100000000000000000000000000000000000000000000000000000000001011120000000000000000000000000000000000000000000000000000000000101113000000000000000000000000000000000000000000000000000000000010111400000000000000000000000000000000000000000000000000000000001011150000000000000000000000000000000000000000000000000000000000101116000000000000000000000000000000000000000000000000000000000010111700000000000000000000000000000000000000000000000000000000001011180000000000000000000000000000000000000000000000000000000000101119000000000000000000000000000000000000000000000000000000000010111a000000000000000000000000000000000000000000000000000000000010111b000000000000000000000000000000000000000000000000000000000010111c000000000000000000000000000000000000000000000000000000000010111d000000000000000000000000000000000000000000000000000000000010111e000000000000000000000000000000000000000000000000000000000010111f0000000000000000000000000000000000000000000000000000000000101120000000000000000000000000000000000000000000000000000000000010112100000000000000000000000000000000000000000000000000000000001011220000000000000000000000000000000000000000000000000000000000101123000000000000000000000000000000000000000000000000000000000010112400000000000000000000000000000000000000000000000000000000001011250000000000000000000000000000000000000000000000000000000000101126000000000000000000000000000000000000000000000000000000000010112700000000000000000000000000000000000000000000000000000000001011280000000000000000000000000000000000000000000000000000000000101129000000000000000000000000000000000000000000000000000000000010112a000000000000000000000000000000000000000000000000000000000010112b000000000000000000000000000000000000000000000000000000000010112c000000000000000000000000000000000000000000000000000000000010112d000000000000000000000000000000000000000000000000000000000010112e000000000000000000000000000000000000000000000000000000000010112f0000000000000000000000000000000000000000000000000000000000101130000000000000000000000000000000000000000000000000000000000010113100000000000000000000000000000000000000000000000000000000001011320000000000000000000000000000000000000000000000000000000000101133000000000000000000000000000000000000000000000000000000000010113400000000000000000000000000000000000000000000000000000000001011350000000000000000000000000000000000000000000000000000000000101136000000000000000000000000000000000000000000000000000000000010113700000000000000000000000000000000000000000000000000000000001011380000000000000000000000000000000000000000000000000000000000101139000000000000000000000000000000000000000000000000000000000010113a000000000000000000000000000000000000000000000000000000000010113b000000000000000000000000000000000000000000000000000000000010113c000000000000000000000000000000000000000000000000000000000010113d000000000000000000000000000000000000000000000000000000000010113e080099145b6c0d32753835121f8b271186d01236948a4622ce78a98347fcfc98390085277a27c6acbd5ffc4c19cd65fc30056999e9bec36998f753132db0ff8e2300f3cf77a7261759ebd5f4149f6ad56746f4499cfcd4adf27a1d373f77da64d5009bc6e0e994a23cde8c95b90c1acc1b4a480c6599d1df2c3f9f6e76f3d1aff200d7a1c4a2700dacaaf07f1f0ff33837bdbabcf0b9ace17efabe0761708c4bb900dbeb8e96d14f21e57d5786b6d6ae7e5ddb1bb35935c0fb246d4bdbca62e02c00fbf12b5e0df6223b801088798e4e04d2a92ffe9a11639b7f0ce314e3412a8000d796e0724de03b796ba77069fcd6cf921e566f3aed15eb3e77258add74e9ff3f0000000000000000000000000000000000000000000000000000000000102000000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102001000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102002000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102003000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102004000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102005000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020060000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010200700000000000000000000000000000000000000000000000000000000001020110000000000000000000000000000000000000000000000000000000000102008000000000000000000000000000000000000000000000000000000000010201200000000000000000000000000000000000000000000000000000000001020090000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102016000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102017000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102011000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102012000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020160000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010201700000000000000000000000000000000000000000000000000000000001020210000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010202200000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102026000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102027000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102021000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102022000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020260000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010202700000000000000000000000000000000000000000000000000000000001020310000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010203200000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102036000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102037000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102031000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102032000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010203f00000000000000000000000000000000000000000000000000000000001020360000000000000000000000000000000000000000000000000000000000102040000000000000000000000000000000000000000000000000000000000010203700000000000000000000000000000000000000000000000000000000001020410000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010204200000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102043000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102044000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102045000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102046000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102047000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "txsEffectsHash": "0x00db66b36b24ebccb7543a74620018056cad2f0b08eaf251ad00362551f0a2d0", "decodedHeader": { "contentCommitment": { + "blobsHash": "0x00476e8bde67f5103417638177f69bafaab0a230f87b856043fe8fc0c8643f5f", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", "outHash": "0x000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a6", - "numTxs": 4, - "txsEffectsHash": "0x00db66b36b24ebccb7543a74620018056cad2f0b08eaf251ad00362551f0a2d0" + "numTxs": 4 }, "globalVariables": { "blockNumber": 1, "slotNumber": "0x000000000000000000000000000000000000000000000000000000000000001a", "chainId": 31337, - "timestamp": 1731434005, + "timestamp": 1732284734, "version": 1, - "coinbase": "0xa8f1a4313bc15dcd3681ed2b6fdd042f1ee1f823", - "feeRecipient": "0x2abdc96d2ec8465dfd2bb7401f90dd3af0db16c3cece57bd5de2b63a3d25140b", + "coinbase": "0x1d18b0d58a782ce94f30cb2b122b9cbb4c523365", + "feeRecipient": "0x17058b928f637c62f9cb7a481168406410f91b54458bd6d2768fb3fb17080a16", "gasFees": { "feePerDaGas": 0, "feePerL2Gas": 0 @@ -101,14 +100,15 @@ "root": "0x1d52eeaaacb445d9193d29e0df8f0ad4bf69bc457fe955b8e05b48ae3fdc3b3f" }, "publicDataTree": { - "nextAvailableLeafIndex": 384, - "root": "0x160cf8d0dbcc7b6a69aede9d89adb66554ba8054d9944b6ab5475e155e8f73d4" + "nextAvailableLeafIndex": 380, + "root": "0x20a27b2839a892ce7ac7c3a76b625388d4efdd4d736f29f86d41bb32d4bc73cf" } } } }, - "header": "0x2a05cb8aeefe9b9797f90650eae072f5ab7437807e62f9724ce190046777986000000001000000000000000000000000000000000000000000000000000000000000000400db66b36b24ebccb7543a74620018056cad2f0b08eaf251ad00362551f0a2d000089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a62e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d60000001000553ea03210e12bf95ed15f0105108f39db784d318cfe9b52cba413618711ce000001001d52eeaaacb445d9193d29e0df8f0ad4bf69bc457fe955b8e05b48ae3fdc3b3f00000180160cf8d0dbcc7b6a69aede9d89adb66554ba8054d9944b6ab5475e155e8f73d4000001800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000067339615a8f1a4313bc15dcd3681ed2b6fdd042f1ee1f8232abdc96d2ec8465dfd2bb7401f90dd3af0db16c3cece57bd5de2b63a3d25140b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x0058fc697c9471ef94446a35f46a068633d057596164ddf20e6152f6fac19f81", + "header": "0x2a05cb8aeefe9b9797f90650eae072f5ab7437807e62f9724ce190046777986000000001000000000000000000000000000000000000000000000000000000000000000400476e8bde67f5103417638177f69bafaab0a230f87b856043fe8fc0c8643f5f00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a62e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d60000001000553ea03210e12bf95ed15f0105108f39db784d318cfe9b52cba413618711ce000001001d52eeaaacb445d9193d29e0df8f0ad4bf69bc457fe955b8e05b48ae3fdc3b3f0000018020a27b2839a892ce7ac7c3a76b625388d4efdd4d736f29f86d41bb32d4bc73cf0000017c0000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000006740913e1d18b0d58a782ce94f30cb2b122b9cbb4c52336517058b928f637c62f9cb7a481168406410f91b54458bd6d2768fb3fb17080a16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x008b912cc84dbd5a433a4f60ca5832d49bc32eaf86e7fc880072cc068b5c4d1a", + "blobInputs": "0x0101cb2643c794ffd2835b698dffc25f63cfff60717970cd3e7f7c0fb91f8303b80e8146e9a02fbb7bd2ff2df8550f8f2bf1c36eda19989d2153fd161a3bf214b35de7f666c8edd3cf3471753892f8f732973d009e684843388c18516476687d91b4f3cb75876a86c8edde736e313975c9cf1486d38d2c4ff8dad0667a878b196d41db63ab7d6d1893f0f432f6ea73c736b6393353efca34a3dcdc7db71ae0fd0a4443ef02bf48f1bf68b38a370de4886ec6a846a3ba62ff186072d2b25992bcd1", "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_2.json b/l1-contracts/test/fixtures/mixed_block_2.json index 1a84a75aa31..a88093047ff 100644 --- a/l1-contracts/test/fixtures/mixed_block_2.json +++ b/l1-contracts/test/fixtures/mixed_block_2.json @@ -23,38 +23,6 @@ }, "messages": { "l2ToL1Messages": [ - "0x0097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b3", - "0x00ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a5989", - "0x00619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5", - "0x007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f", - "0x000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a", - "0x00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4", - "0x004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e", - "0x003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba671", - "0x003c0472260790b0bdfb8ae4dc4d437e7686b73643f2198970d84e1059a5f135", - "0x00bfd46275a318e438726ff2765ae154b63ab8a0daebcbed668a5f58a0e63dc1", - "0x007906b9418dc758c6b4f8454c69baa48b7889b6b511d707abe8e2cb8f7c3973", - "0x00aeb60c4d65a44f122e58bf9565dfe2024b3ae654d5cf2e47ecb035d53c9270", - "0x00bf82e8cda20345f37bbb1de3932172324b57f0b98be483392697b168e3bba8", - "0x000fb4bbad884ef30edf68e45a6cf2733fcf50310c69d7c1432b29af2c0aa804", - "0x0023e1622d27fee3b4a40ab975ae0eb2e31619ef3dc76eb858f7fddb6a056131", - "0x004689cd7007daf98dd3218b839b8e6a29f957154347b391fdb376bd0b344be2", - "0x00f8029be42ec3f25204907ca981fb71e5b357093eb5db10fc01ca98a4e4154c", - "0x0030e13d351a5bf1d5a040e82a163ca57017f39162693f85c571e441e36d702d", - "0x00a550ae0f39f977d9473d6de1be3232fc68ed0c4a601d53542148695102cfc9", - "0x005580bc65e4bff9c8fffa64db02c0fa6af14d9d26fd962f4c5904cbd3ddec25", - "0x00758c4a0d43dfec788b2f580877c4f473adec8f168ea24424f2600e4eb4916f", - "0x00342602bf90d10f8ca8e582a894dcc4c02bb89fe458532e0c632b53bae54b4d", - "0x00ca43ab78ab834337e9964d84a0674c9adabdca140539c5a6bc96e0ba9a51f6", - "0x004ffbfd91be292a7c6a0e255e50caa156ac2d628b40ad2128c4ab63a92d8a1c", - "0x0099145b6c0d32753835121f8b271186d01236948a4622ce78a98347fcfc9839", - "0x0085277a27c6acbd5ffc4c19cd65fc30056999e9bec36998f753132db0ff8e23", - "0x00f3cf77a7261759ebd5f4149f6ad56746f4499cfcd4adf27a1d373f77da64d5", - "0x009bc6e0e994a23cde8c95b90c1acc1b4a480c6599d1df2c3f9f6e76f3d1aff2", - "0x00d7a1c4a2700dacaaf07f1f0ff33837bdbabcf0b9ace17efabe0761708c4bb9", - "0x00dbeb8e96d14f21e57d5786b6d6ae7e5ddb1bb35935c0fb246d4bdbca62e02c", - "0x00fbf12b5e0df6223b801088798e4e04d2a92ffe9a11639b7f0ce314e3412a80", - "0x00d796e0724de03b796ba77069fcd6cf921e566f3aed15eb3e77258add74e9ff", "0x005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a", "0x00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a", "0x0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e", @@ -90,25 +58,24 @@ ] }, "block": { - "archive": "0x18d695c543b39ed4aebf51260b01cd023d27c36e90e2756413803fe06d376c70", - "blockHash": "0x1794217194decb456524466a01a7356e8b08b751ef0bc596431405c749627782", - "body": "0x00000008000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f3f0000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e080097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b300ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a598900619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba6713f0000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000008100100000000000000000000000000000000000000000000000000000000000810020000000000000000000000000000000000000000000000000000000000081003000000000000000000000000000000000000000000000000000000000008100400000000000000000000000000000000000000000000000000000000000810050000000000000000000000000000000000000000000000000000000000081006000000000000000000000000000000000000000000000000000000000008100700000000000000000000000000000000000000000000000000000000000810080000000000000000000000000000000000000000000000000000000000081009000000000000000000000000000000000000000000000000000000000008100a000000000000000000000000000000000000000000000000000000000008100b000000000000000000000000000000000000000000000000000000000008100c000000000000000000000000000000000000000000000000000000000008100d000000000000000000000000000000000000000000000000000000000008100e000000000000000000000000000000000000000000000000000000000008100f0000000000000000000000000000000000000000000000000000000000081010000000000000000000000000000000000000000000000000000000000008101100000000000000000000000000000000000000000000000000000000000810120000000000000000000000000000000000000000000000000000000000081013000000000000000000000000000000000000000000000000000000000008101400000000000000000000000000000000000000000000000000000000000810150000000000000000000000000000000000000000000000000000000000081016000000000000000000000000000000000000000000000000000000000008101700000000000000000000000000000000000000000000000000000000000810180000000000000000000000000000000000000000000000000000000000081019000000000000000000000000000000000000000000000000000000000008101a000000000000000000000000000000000000000000000000000000000008101b000000000000000000000000000000000000000000000000000000000008101c000000000000000000000000000000000000000000000000000000000008101d000000000000000000000000000000000000000000000000000000000008101e000000000000000000000000000000000000000000000000000000000008101f0000000000000000000000000000000000000000000000000000000000081020000000000000000000000000000000000000000000000000000000000008102100000000000000000000000000000000000000000000000000000000000810220000000000000000000000000000000000000000000000000000000000081023000000000000000000000000000000000000000000000000000000000008102400000000000000000000000000000000000000000000000000000000000810250000000000000000000000000000000000000000000000000000000000081026000000000000000000000000000000000000000000000000000000000008102700000000000000000000000000000000000000000000000000000000000810280000000000000000000000000000000000000000000000000000000000081029000000000000000000000000000000000000000000000000000000000008102a000000000000000000000000000000000000000000000000000000000008102b000000000000000000000000000000000000000000000000000000000008102c000000000000000000000000000000000000000000000000000000000008102d000000000000000000000000000000000000000000000000000000000008102e000000000000000000000000000000000000000000000000000000000008102f0000000000000000000000000000000000000000000000000000000000081030000000000000000000000000000000000000000000000000000000000008103100000000000000000000000000000000000000000000000000000000000810320000000000000000000000000000000000000000000000000000000000081033000000000000000000000000000000000000000000000000000000000008103400000000000000000000000000000000000000000000000000000000000810350000000000000000000000000000000000000000000000000000000000081036000000000000000000000000000000000000000000000000000000000008103700000000000000000000000000000000000000000000000000000000000810380000000000000000000000000000000000000000000000000000000000081039000000000000000000000000000000000000000000000000000000000008103a000000000000000000000000000000000000000000000000000000000008103b000000000000000000000000000000000000000000000000000000000008103c000000000000000000000000000000000000000000000000000000000008103d000000000000000000000000000000000000000000000000000000000008103e000000000000000000000000000000000000000000000000000000000008103f3f0000000000000000000000000000000000000000000000000000000000081100000000000000000000000000000000000000000000000000000000000008110100000000000000000000000000000000000000000000000000000000000811020000000000000000000000000000000000000000000000000000000000081103000000000000000000000000000000000000000000000000000000000008110400000000000000000000000000000000000000000000000000000000000811050000000000000000000000000000000000000000000000000000000000081106000000000000000000000000000000000000000000000000000000000008110700000000000000000000000000000000000000000000000000000000000811080000000000000000000000000000000000000000000000000000000000081109000000000000000000000000000000000000000000000000000000000008110a000000000000000000000000000000000000000000000000000000000008110b000000000000000000000000000000000000000000000000000000000008110c000000000000000000000000000000000000000000000000000000000008110d000000000000000000000000000000000000000000000000000000000008110e000000000000000000000000000000000000000000000000000000000008110f0000000000000000000000000000000000000000000000000000000000081110000000000000000000000000000000000000000000000000000000000008111100000000000000000000000000000000000000000000000000000000000811120000000000000000000000000000000000000000000000000000000000081113000000000000000000000000000000000000000000000000000000000008111400000000000000000000000000000000000000000000000000000000000811150000000000000000000000000000000000000000000000000000000000081116000000000000000000000000000000000000000000000000000000000008111700000000000000000000000000000000000000000000000000000000000811180000000000000000000000000000000000000000000000000000000000081119000000000000000000000000000000000000000000000000000000000008111a000000000000000000000000000000000000000000000000000000000008111b000000000000000000000000000000000000000000000000000000000008111c000000000000000000000000000000000000000000000000000000000008111d000000000000000000000000000000000000000000000000000000000008111e000000000000000000000000000000000000000000000000000000000008111f0000000000000000000000000000000000000000000000000000000000081120000000000000000000000000000000000000000000000000000000000008112100000000000000000000000000000000000000000000000000000000000811220000000000000000000000000000000000000000000000000000000000081123000000000000000000000000000000000000000000000000000000000008112400000000000000000000000000000000000000000000000000000000000811250000000000000000000000000000000000000000000000000000000000081126000000000000000000000000000000000000000000000000000000000008112700000000000000000000000000000000000000000000000000000000000811280000000000000000000000000000000000000000000000000000000000081129000000000000000000000000000000000000000000000000000000000008112a000000000000000000000000000000000000000000000000000000000008112b000000000000000000000000000000000000000000000000000000000008112c000000000000000000000000000000000000000000000000000000000008112d000000000000000000000000000000000000000000000000000000000008112e000000000000000000000000000000000000000000000000000000000008112f0000000000000000000000000000000000000000000000000000000000081130000000000000000000000000000000000000000000000000000000000008113100000000000000000000000000000000000000000000000000000000000811320000000000000000000000000000000000000000000000000000000000081133000000000000000000000000000000000000000000000000000000000008113400000000000000000000000000000000000000000000000000000000000811350000000000000000000000000000000000000000000000000000000000081136000000000000000000000000000000000000000000000000000000000008113700000000000000000000000000000000000000000000000000000000000811380000000000000000000000000000000000000000000000000000000000081139000000000000000000000000000000000000000000000000000000000008113a000000000000000000000000000000000000000000000000000000000008113b000000000000000000000000000000000000000000000000000000000008113c000000000000000000000000000000000000000000000000000000000008113d000000000000000000000000000000000000000000000000000000000008113e08003c0472260790b0bdfb8ae4dc4d437e7686b73643f2198970d84e1059a5f13500bfd46275a318e438726ff2765ae154b63ab8a0daebcbed668a5f58a0e63dc1007906b9418dc758c6b4f8454c69baa48b7889b6b511d707abe8e2cb8f7c397300aeb60c4d65a44f122e58bf9565dfe2024b3ae654d5cf2e47ecb035d53c927000bf82e8cda20345f37bbb1de3932172324b57f0b98be483392697b168e3bba8000fb4bbad884ef30edf68e45a6cf2733fcf50310c69d7c1432b29af2c0aa8040023e1622d27fee3b4a40ab975ae0eb2e31619ef3dc76eb858f7fddb6a056131004689cd7007daf98dd3218b839b8e6a29f957154347b391fdb376bd0b344be23f0000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082001000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082002000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082003000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082004000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082005000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820060000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008200700000000000000000000000000000000000000000000000000000000000820110000000000000000000000000000000000000000000000000000000000082008000000000000000000000000000000000000000000000000000000000008201200000000000000000000000000000000000000000000000000000000000820090000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082016000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082017000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082011000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082012000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820160000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008201700000000000000000000000000000000000000000000000000000000000820210000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008202200000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082026000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082027000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082021000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082022000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820260000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008202700000000000000000000000000000000000000000000000000000000000820310000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008203200000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082036000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082037000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082031000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082032000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008203f00000000000000000000000000000000000000000000000000000000000820360000000000000000000000000000000000000000000000000000000000082040000000000000000000000000000000000000000000000000000000000008203700000000000000000000000000000000000000000000000000000000000820410000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008204200000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082043000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082044000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082045000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082046000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082047000000000000000000000000000000000000000000000000000000000008203e00000000000000000000000000000000000000000000000000000000000820480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c100100000000000000000000000000000000000000000000000000000000000c100200000000000000000000000000000000000000000000000000000000000c100300000000000000000000000000000000000000000000000000000000000c100400000000000000000000000000000000000000000000000000000000000c100500000000000000000000000000000000000000000000000000000000000c100600000000000000000000000000000000000000000000000000000000000c100700000000000000000000000000000000000000000000000000000000000c100800000000000000000000000000000000000000000000000000000000000c100900000000000000000000000000000000000000000000000000000000000c100a00000000000000000000000000000000000000000000000000000000000c100b00000000000000000000000000000000000000000000000000000000000c100c00000000000000000000000000000000000000000000000000000000000c100d00000000000000000000000000000000000000000000000000000000000c100e00000000000000000000000000000000000000000000000000000000000c100f00000000000000000000000000000000000000000000000000000000000c101000000000000000000000000000000000000000000000000000000000000c101100000000000000000000000000000000000000000000000000000000000c101200000000000000000000000000000000000000000000000000000000000c101300000000000000000000000000000000000000000000000000000000000c101400000000000000000000000000000000000000000000000000000000000c101500000000000000000000000000000000000000000000000000000000000c101600000000000000000000000000000000000000000000000000000000000c101700000000000000000000000000000000000000000000000000000000000c101800000000000000000000000000000000000000000000000000000000000c101900000000000000000000000000000000000000000000000000000000000c101a00000000000000000000000000000000000000000000000000000000000c101b00000000000000000000000000000000000000000000000000000000000c101c00000000000000000000000000000000000000000000000000000000000c101d00000000000000000000000000000000000000000000000000000000000c101e00000000000000000000000000000000000000000000000000000000000c101f00000000000000000000000000000000000000000000000000000000000c102000000000000000000000000000000000000000000000000000000000000c102100000000000000000000000000000000000000000000000000000000000c102200000000000000000000000000000000000000000000000000000000000c102300000000000000000000000000000000000000000000000000000000000c102400000000000000000000000000000000000000000000000000000000000c102500000000000000000000000000000000000000000000000000000000000c102600000000000000000000000000000000000000000000000000000000000c102700000000000000000000000000000000000000000000000000000000000c102800000000000000000000000000000000000000000000000000000000000c102900000000000000000000000000000000000000000000000000000000000c102a00000000000000000000000000000000000000000000000000000000000c102b00000000000000000000000000000000000000000000000000000000000c102c00000000000000000000000000000000000000000000000000000000000c102d00000000000000000000000000000000000000000000000000000000000c102e00000000000000000000000000000000000000000000000000000000000c102f00000000000000000000000000000000000000000000000000000000000c103000000000000000000000000000000000000000000000000000000000000c103100000000000000000000000000000000000000000000000000000000000c103200000000000000000000000000000000000000000000000000000000000c103300000000000000000000000000000000000000000000000000000000000c103400000000000000000000000000000000000000000000000000000000000c103500000000000000000000000000000000000000000000000000000000000c103600000000000000000000000000000000000000000000000000000000000c103700000000000000000000000000000000000000000000000000000000000c103800000000000000000000000000000000000000000000000000000000000c103900000000000000000000000000000000000000000000000000000000000c103a00000000000000000000000000000000000000000000000000000000000c103b00000000000000000000000000000000000000000000000000000000000c103c00000000000000000000000000000000000000000000000000000000000c103d00000000000000000000000000000000000000000000000000000000000c103e00000000000000000000000000000000000000000000000000000000000c103f3f00000000000000000000000000000000000000000000000000000000000c110000000000000000000000000000000000000000000000000000000000000c110100000000000000000000000000000000000000000000000000000000000c110200000000000000000000000000000000000000000000000000000000000c110300000000000000000000000000000000000000000000000000000000000c110400000000000000000000000000000000000000000000000000000000000c110500000000000000000000000000000000000000000000000000000000000c110600000000000000000000000000000000000000000000000000000000000c110700000000000000000000000000000000000000000000000000000000000c110800000000000000000000000000000000000000000000000000000000000c110900000000000000000000000000000000000000000000000000000000000c110a00000000000000000000000000000000000000000000000000000000000c110b00000000000000000000000000000000000000000000000000000000000c110c00000000000000000000000000000000000000000000000000000000000c110d00000000000000000000000000000000000000000000000000000000000c110e00000000000000000000000000000000000000000000000000000000000c110f00000000000000000000000000000000000000000000000000000000000c111000000000000000000000000000000000000000000000000000000000000c111100000000000000000000000000000000000000000000000000000000000c111200000000000000000000000000000000000000000000000000000000000c111300000000000000000000000000000000000000000000000000000000000c111400000000000000000000000000000000000000000000000000000000000c111500000000000000000000000000000000000000000000000000000000000c111600000000000000000000000000000000000000000000000000000000000c111700000000000000000000000000000000000000000000000000000000000c111800000000000000000000000000000000000000000000000000000000000c111900000000000000000000000000000000000000000000000000000000000c111a00000000000000000000000000000000000000000000000000000000000c111b00000000000000000000000000000000000000000000000000000000000c111c00000000000000000000000000000000000000000000000000000000000c111d00000000000000000000000000000000000000000000000000000000000c111e00000000000000000000000000000000000000000000000000000000000c111f00000000000000000000000000000000000000000000000000000000000c112000000000000000000000000000000000000000000000000000000000000c112100000000000000000000000000000000000000000000000000000000000c112200000000000000000000000000000000000000000000000000000000000c112300000000000000000000000000000000000000000000000000000000000c112400000000000000000000000000000000000000000000000000000000000c112500000000000000000000000000000000000000000000000000000000000c112600000000000000000000000000000000000000000000000000000000000c112700000000000000000000000000000000000000000000000000000000000c112800000000000000000000000000000000000000000000000000000000000c112900000000000000000000000000000000000000000000000000000000000c112a00000000000000000000000000000000000000000000000000000000000c112b00000000000000000000000000000000000000000000000000000000000c112c00000000000000000000000000000000000000000000000000000000000c112d00000000000000000000000000000000000000000000000000000000000c112e00000000000000000000000000000000000000000000000000000000000c112f00000000000000000000000000000000000000000000000000000000000c113000000000000000000000000000000000000000000000000000000000000c113100000000000000000000000000000000000000000000000000000000000c113200000000000000000000000000000000000000000000000000000000000c113300000000000000000000000000000000000000000000000000000000000c113400000000000000000000000000000000000000000000000000000000000c113500000000000000000000000000000000000000000000000000000000000c113600000000000000000000000000000000000000000000000000000000000c113700000000000000000000000000000000000000000000000000000000000c113800000000000000000000000000000000000000000000000000000000000c113900000000000000000000000000000000000000000000000000000000000c113a00000000000000000000000000000000000000000000000000000000000c113b00000000000000000000000000000000000000000000000000000000000c113c00000000000000000000000000000000000000000000000000000000000c113d00000000000000000000000000000000000000000000000000000000000c113e0800f8029be42ec3f25204907ca981fb71e5b357093eb5db10fc01ca98a4e4154c0030e13d351a5bf1d5a040e82a163ca57017f39162693f85c571e441e36d702d00a550ae0f39f977d9473d6de1be3232fc68ed0c4a601d53542148695102cfc9005580bc65e4bff9c8fffa64db02c0fa6af14d9d26fd962f4c5904cbd3ddec2500758c4a0d43dfec788b2f580877c4f473adec8f168ea24424f2600e4eb4916f00342602bf90d10f8ca8e582a894dcc4c02bb89fe458532e0c632b53bae54b4d00ca43ab78ab834337e9964d84a0674c9adabdca140539c5a6bc96e0ba9a51f6004ffbfd91be292a7c6a0e255e50caa156ac2d628b40ad2128c4ab63a92d8a1c3f00000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c200100000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c200200000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c200300000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c200400000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c200500000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c200600000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c200700000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c200800000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c200900000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c204000000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c204100000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c204200000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c204300000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c204400000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c204500000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c204600000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c204700000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c2048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000010100100000000000000000000000000000000000000000000000000000000001010020000000000000000000000000000000000000000000000000000000000101003000000000000000000000000000000000000000000000000000000000010100400000000000000000000000000000000000000000000000000000000001010050000000000000000000000000000000000000000000000000000000000101006000000000000000000000000000000000000000000000000000000000010100700000000000000000000000000000000000000000000000000000000001010080000000000000000000000000000000000000000000000000000000000101009000000000000000000000000000000000000000000000000000000000010100a000000000000000000000000000000000000000000000000000000000010100b000000000000000000000000000000000000000000000000000000000010100c000000000000000000000000000000000000000000000000000000000010100d000000000000000000000000000000000000000000000000000000000010100e000000000000000000000000000000000000000000000000000000000010100f0000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000000000000000000000000000010101100000000000000000000000000000000000000000000000000000000001010120000000000000000000000000000000000000000000000000000000000101013000000000000000000000000000000000000000000000000000000000010101400000000000000000000000000000000000000000000000000000000001010150000000000000000000000000000000000000000000000000000000000101016000000000000000000000000000000000000000000000000000000000010101700000000000000000000000000000000000000000000000000000000001010180000000000000000000000000000000000000000000000000000000000101019000000000000000000000000000000000000000000000000000000000010101a000000000000000000000000000000000000000000000000000000000010101b000000000000000000000000000000000000000000000000000000000010101c000000000000000000000000000000000000000000000000000000000010101d000000000000000000000000000000000000000000000000000000000010101e000000000000000000000000000000000000000000000000000000000010101f0000000000000000000000000000000000000000000000000000000000101020000000000000000000000000000000000000000000000000000000000010102100000000000000000000000000000000000000000000000000000000001010220000000000000000000000000000000000000000000000000000000000101023000000000000000000000000000000000000000000000000000000000010102400000000000000000000000000000000000000000000000000000000001010250000000000000000000000000000000000000000000000000000000000101026000000000000000000000000000000000000000000000000000000000010102700000000000000000000000000000000000000000000000000000000001010280000000000000000000000000000000000000000000000000000000000101029000000000000000000000000000000000000000000000000000000000010102a000000000000000000000000000000000000000000000000000000000010102b000000000000000000000000000000000000000000000000000000000010102c000000000000000000000000000000000000000000000000000000000010102d000000000000000000000000000000000000000000000000000000000010102e000000000000000000000000000000000000000000000000000000000010102f0000000000000000000000000000000000000000000000000000000000101030000000000000000000000000000000000000000000000000000000000010103100000000000000000000000000000000000000000000000000000000001010320000000000000000000000000000000000000000000000000000000000101033000000000000000000000000000000000000000000000000000000000010103400000000000000000000000000000000000000000000000000000000001010350000000000000000000000000000000000000000000000000000000000101036000000000000000000000000000000000000000000000000000000000010103700000000000000000000000000000000000000000000000000000000001010380000000000000000000000000000000000000000000000000000000000101039000000000000000000000000000000000000000000000000000000000010103a000000000000000000000000000000000000000000000000000000000010103b000000000000000000000000000000000000000000000000000000000010103c000000000000000000000000000000000000000000000000000000000010103d000000000000000000000000000000000000000000000000000000000010103e000000000000000000000000000000000000000000000000000000000010103f3f0000000000000000000000000000000000000000000000000000000000101100000000000000000000000000000000000000000000000000000000000010110100000000000000000000000000000000000000000000000000000000001011020000000000000000000000000000000000000000000000000000000000101103000000000000000000000000000000000000000000000000000000000010110400000000000000000000000000000000000000000000000000000000001011050000000000000000000000000000000000000000000000000000000000101106000000000000000000000000000000000000000000000000000000000010110700000000000000000000000000000000000000000000000000000000001011080000000000000000000000000000000000000000000000000000000000101109000000000000000000000000000000000000000000000000000000000010110a000000000000000000000000000000000000000000000000000000000010110b000000000000000000000000000000000000000000000000000000000010110c000000000000000000000000000000000000000000000000000000000010110d000000000000000000000000000000000000000000000000000000000010110e000000000000000000000000000000000000000000000000000000000010110f0000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000010111100000000000000000000000000000000000000000000000000000000001011120000000000000000000000000000000000000000000000000000000000101113000000000000000000000000000000000000000000000000000000000010111400000000000000000000000000000000000000000000000000000000001011150000000000000000000000000000000000000000000000000000000000101116000000000000000000000000000000000000000000000000000000000010111700000000000000000000000000000000000000000000000000000000001011180000000000000000000000000000000000000000000000000000000000101119000000000000000000000000000000000000000000000000000000000010111a000000000000000000000000000000000000000000000000000000000010111b000000000000000000000000000000000000000000000000000000000010111c000000000000000000000000000000000000000000000000000000000010111d000000000000000000000000000000000000000000000000000000000010111e000000000000000000000000000000000000000000000000000000000010111f0000000000000000000000000000000000000000000000000000000000101120000000000000000000000000000000000000000000000000000000000010112100000000000000000000000000000000000000000000000000000000001011220000000000000000000000000000000000000000000000000000000000101123000000000000000000000000000000000000000000000000000000000010112400000000000000000000000000000000000000000000000000000000001011250000000000000000000000000000000000000000000000000000000000101126000000000000000000000000000000000000000000000000000000000010112700000000000000000000000000000000000000000000000000000000001011280000000000000000000000000000000000000000000000000000000000101129000000000000000000000000000000000000000000000000000000000010112a000000000000000000000000000000000000000000000000000000000010112b000000000000000000000000000000000000000000000000000000000010112c000000000000000000000000000000000000000000000000000000000010112d000000000000000000000000000000000000000000000000000000000010112e000000000000000000000000000000000000000000000000000000000010112f0000000000000000000000000000000000000000000000000000000000101130000000000000000000000000000000000000000000000000000000000010113100000000000000000000000000000000000000000000000000000000001011320000000000000000000000000000000000000000000000000000000000101133000000000000000000000000000000000000000000000000000000000010113400000000000000000000000000000000000000000000000000000000001011350000000000000000000000000000000000000000000000000000000000101136000000000000000000000000000000000000000000000000000000000010113700000000000000000000000000000000000000000000000000000000001011380000000000000000000000000000000000000000000000000000000000101139000000000000000000000000000000000000000000000000000000000010113a000000000000000000000000000000000000000000000000000000000010113b000000000000000000000000000000000000000000000000000000000010113c000000000000000000000000000000000000000000000000000000000010113d000000000000000000000000000000000000000000000000000000000010113e080099145b6c0d32753835121f8b271186d01236948a4622ce78a98347fcfc98390085277a27c6acbd5ffc4c19cd65fc30056999e9bec36998f753132db0ff8e2300f3cf77a7261759ebd5f4149f6ad56746f4499cfcd4adf27a1d373f77da64d5009bc6e0e994a23cde8c95b90c1acc1b4a480c6599d1df2c3f9f6e76f3d1aff200d7a1c4a2700dacaaf07f1f0ff33837bdbabcf0b9ace17efabe0761708c4bb900dbeb8e96d14f21e57d5786b6d6ae7e5ddb1bb35935c0fb246d4bdbca62e02c00fbf12b5e0df6223b801088798e4e04d2a92ffe9a11639b7f0ce314e3412a8000d796e0724de03b796ba77069fcd6cf921e566f3aed15eb3e77258add74e9ff3f0000000000000000000000000000000000000000000000000000000000102000000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102001000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102002000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102003000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102004000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102005000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020060000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010200700000000000000000000000000000000000000000000000000000000001020110000000000000000000000000000000000000000000000000000000000102008000000000000000000000000000000000000000000000000000000000010201200000000000000000000000000000000000000000000000000000000001020090000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102016000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102017000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102011000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102012000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020160000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010201700000000000000000000000000000000000000000000000000000000001020210000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010202200000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102026000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102027000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102021000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102022000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020260000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010202700000000000000000000000000000000000000000000000000000000001020310000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010203200000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102036000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102037000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102031000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102032000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010203f00000000000000000000000000000000000000000000000000000000001020360000000000000000000000000000000000000000000000000000000000102040000000000000000000000000000000000000000000000000000000000010203700000000000000000000000000000000000000000000000000000000001020410000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010204200000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102043000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102044000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102045000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102046000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102047000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f3f0000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e08005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e69200302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b16522993f0000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000018100100000000000000000000000000000000000000000000000000000000001810020000000000000000000000000000000000000000000000000000000000181003000000000000000000000000000000000000000000000000000000000018100400000000000000000000000000000000000000000000000000000000001810050000000000000000000000000000000000000000000000000000000000181006000000000000000000000000000000000000000000000000000000000018100700000000000000000000000000000000000000000000000000000000001810080000000000000000000000000000000000000000000000000000000000181009000000000000000000000000000000000000000000000000000000000018100a000000000000000000000000000000000000000000000000000000000018100b000000000000000000000000000000000000000000000000000000000018100c000000000000000000000000000000000000000000000000000000000018100d000000000000000000000000000000000000000000000000000000000018100e000000000000000000000000000000000000000000000000000000000018100f0000000000000000000000000000000000000000000000000000000000181010000000000000000000000000000000000000000000000000000000000018101100000000000000000000000000000000000000000000000000000000001810120000000000000000000000000000000000000000000000000000000000181013000000000000000000000000000000000000000000000000000000000018101400000000000000000000000000000000000000000000000000000000001810150000000000000000000000000000000000000000000000000000000000181016000000000000000000000000000000000000000000000000000000000018101700000000000000000000000000000000000000000000000000000000001810180000000000000000000000000000000000000000000000000000000000181019000000000000000000000000000000000000000000000000000000000018101a000000000000000000000000000000000000000000000000000000000018101b000000000000000000000000000000000000000000000000000000000018101c000000000000000000000000000000000000000000000000000000000018101d000000000000000000000000000000000000000000000000000000000018101e000000000000000000000000000000000000000000000000000000000018101f0000000000000000000000000000000000000000000000000000000000181020000000000000000000000000000000000000000000000000000000000018102100000000000000000000000000000000000000000000000000000000001810220000000000000000000000000000000000000000000000000000000000181023000000000000000000000000000000000000000000000000000000000018102400000000000000000000000000000000000000000000000000000000001810250000000000000000000000000000000000000000000000000000000000181026000000000000000000000000000000000000000000000000000000000018102700000000000000000000000000000000000000000000000000000000001810280000000000000000000000000000000000000000000000000000000000181029000000000000000000000000000000000000000000000000000000000018102a000000000000000000000000000000000000000000000000000000000018102b000000000000000000000000000000000000000000000000000000000018102c000000000000000000000000000000000000000000000000000000000018102d000000000000000000000000000000000000000000000000000000000018102e000000000000000000000000000000000000000000000000000000000018102f0000000000000000000000000000000000000000000000000000000000181030000000000000000000000000000000000000000000000000000000000018103100000000000000000000000000000000000000000000000000000000001810320000000000000000000000000000000000000000000000000000000000181033000000000000000000000000000000000000000000000000000000000018103400000000000000000000000000000000000000000000000000000000001810350000000000000000000000000000000000000000000000000000000000181036000000000000000000000000000000000000000000000000000000000018103700000000000000000000000000000000000000000000000000000000001810380000000000000000000000000000000000000000000000000000000000181039000000000000000000000000000000000000000000000000000000000018103a000000000000000000000000000000000000000000000000000000000018103b000000000000000000000000000000000000000000000000000000000018103c000000000000000000000000000000000000000000000000000000000018103d000000000000000000000000000000000000000000000000000000000018103e000000000000000000000000000000000000000000000000000000000018103f3f0000000000000000000000000000000000000000000000000000000000181100000000000000000000000000000000000000000000000000000000000018110100000000000000000000000000000000000000000000000000000000001811020000000000000000000000000000000000000000000000000000000000181103000000000000000000000000000000000000000000000000000000000018110400000000000000000000000000000000000000000000000000000000001811050000000000000000000000000000000000000000000000000000000000181106000000000000000000000000000000000000000000000000000000000018110700000000000000000000000000000000000000000000000000000000001811080000000000000000000000000000000000000000000000000000000000181109000000000000000000000000000000000000000000000000000000000018110a000000000000000000000000000000000000000000000000000000000018110b000000000000000000000000000000000000000000000000000000000018110c000000000000000000000000000000000000000000000000000000000018110d000000000000000000000000000000000000000000000000000000000018110e000000000000000000000000000000000000000000000000000000000018110f0000000000000000000000000000000000000000000000000000000000181110000000000000000000000000000000000000000000000000000000000018111100000000000000000000000000000000000000000000000000000000001811120000000000000000000000000000000000000000000000000000000000181113000000000000000000000000000000000000000000000000000000000018111400000000000000000000000000000000000000000000000000000000001811150000000000000000000000000000000000000000000000000000000000181116000000000000000000000000000000000000000000000000000000000018111700000000000000000000000000000000000000000000000000000000001811180000000000000000000000000000000000000000000000000000000000181119000000000000000000000000000000000000000000000000000000000018111a000000000000000000000000000000000000000000000000000000000018111b000000000000000000000000000000000000000000000000000000000018111c000000000000000000000000000000000000000000000000000000000018111d000000000000000000000000000000000000000000000000000000000018111e000000000000000000000000000000000000000000000000000000000018111f0000000000000000000000000000000000000000000000000000000000181120000000000000000000000000000000000000000000000000000000000018112100000000000000000000000000000000000000000000000000000000001811220000000000000000000000000000000000000000000000000000000000181123000000000000000000000000000000000000000000000000000000000018112400000000000000000000000000000000000000000000000000000000001811250000000000000000000000000000000000000000000000000000000000181126000000000000000000000000000000000000000000000000000000000018112700000000000000000000000000000000000000000000000000000000001811280000000000000000000000000000000000000000000000000000000000181129000000000000000000000000000000000000000000000000000000000018112a000000000000000000000000000000000000000000000000000000000018112b000000000000000000000000000000000000000000000000000000000018112c000000000000000000000000000000000000000000000000000000000018112d000000000000000000000000000000000000000000000000000000000018112e000000000000000000000000000000000000000000000000000000000018112f0000000000000000000000000000000000000000000000000000000000181130000000000000000000000000000000000000000000000000000000000018113100000000000000000000000000000000000000000000000000000000001811320000000000000000000000000000000000000000000000000000000000181133000000000000000000000000000000000000000000000000000000000018113400000000000000000000000000000000000000000000000000000000001811350000000000000000000000000000000000000000000000000000000000181136000000000000000000000000000000000000000000000000000000000018113700000000000000000000000000000000000000000000000000000000001811380000000000000000000000000000000000000000000000000000000000181139000000000000000000000000000000000000000000000000000000000018113a000000000000000000000000000000000000000000000000000000000018113b000000000000000000000000000000000000000000000000000000000018113c000000000000000000000000000000000000000000000000000000000018113d000000000000000000000000000000000000000000000000000000000018113e0800f872eb9653f03af10f331da1361fa1524d3cd958cb72dacea1d424f19df3af00ffc548a17cd6ba1f2d228f30e4ddb19ecc46ad3b609977d52bb0f49e1206410032f8058bd779c520eabae2743b02ec4f71670428506fcceb2d4b69f26fb11800c0283e15fbf74ffa4eafb984030394f3c2ea6733cc0eacb0431a9475eff28f00b7f55314bfd9d441c1c624e241908228fe4da3d3a0a7fbd56814e1c8cd5d3e00f430f33a786675271736fd728c7bf7428b8c24ac948d7faf76ddb8783a496c0048fc235ead8d4b9d44929662a6384074fc4e5076bec5b7deb34f612393684300fd9b61cb1ad9b4b28f58399906e73933e3cccee8fc98a393f0eedb95b13ee63f0000000000000000000000000000000000000000000000000000000000182000000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182001000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182002000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182003000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182004000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182005000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820060000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018200700000000000000000000000000000000000000000000000000000000001820110000000000000000000000000000000000000000000000000000000000182008000000000000000000000000000000000000000000000000000000000018201200000000000000000000000000000000000000000000000000000000001820090000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182016000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182017000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182011000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182012000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820160000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018201700000000000000000000000000000000000000000000000000000000001820210000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018202200000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182026000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182027000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182021000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182022000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820260000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018202700000000000000000000000000000000000000000000000000000000001820310000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018203200000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182036000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182037000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182031000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182032000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018203f00000000000000000000000000000000000000000000000000000000001820360000000000000000000000000000000000000000000000000000000000182040000000000000000000000000000000000000000000000000000000000018203700000000000000000000000000000000000000000000000000000000001820410000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018204200000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182043000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182044000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182045000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182046000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182047000000000000000000000000000000000000000000000000000000000018203e00000000000000000000000000000000000000000000000000000000001820480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c100100000000000000000000000000000000000000000000000000000000001c100200000000000000000000000000000000000000000000000000000000001c100300000000000000000000000000000000000000000000000000000000001c100400000000000000000000000000000000000000000000000000000000001c100500000000000000000000000000000000000000000000000000000000001c100600000000000000000000000000000000000000000000000000000000001c100700000000000000000000000000000000000000000000000000000000001c100800000000000000000000000000000000000000000000000000000000001c100900000000000000000000000000000000000000000000000000000000001c100a00000000000000000000000000000000000000000000000000000000001c100b00000000000000000000000000000000000000000000000000000000001c100c00000000000000000000000000000000000000000000000000000000001c100d00000000000000000000000000000000000000000000000000000000001c100e00000000000000000000000000000000000000000000000000000000001c100f00000000000000000000000000000000000000000000000000000000001c101000000000000000000000000000000000000000000000000000000000001c101100000000000000000000000000000000000000000000000000000000001c101200000000000000000000000000000000000000000000000000000000001c101300000000000000000000000000000000000000000000000000000000001c101400000000000000000000000000000000000000000000000000000000001c101500000000000000000000000000000000000000000000000000000000001c101600000000000000000000000000000000000000000000000000000000001c101700000000000000000000000000000000000000000000000000000000001c101800000000000000000000000000000000000000000000000000000000001c101900000000000000000000000000000000000000000000000000000000001c101a00000000000000000000000000000000000000000000000000000000001c101b00000000000000000000000000000000000000000000000000000000001c101c00000000000000000000000000000000000000000000000000000000001c101d00000000000000000000000000000000000000000000000000000000001c101e00000000000000000000000000000000000000000000000000000000001c101f00000000000000000000000000000000000000000000000000000000001c102000000000000000000000000000000000000000000000000000000000001c102100000000000000000000000000000000000000000000000000000000001c102200000000000000000000000000000000000000000000000000000000001c102300000000000000000000000000000000000000000000000000000000001c102400000000000000000000000000000000000000000000000000000000001c102500000000000000000000000000000000000000000000000000000000001c102600000000000000000000000000000000000000000000000000000000001c102700000000000000000000000000000000000000000000000000000000001c102800000000000000000000000000000000000000000000000000000000001c102900000000000000000000000000000000000000000000000000000000001c102a00000000000000000000000000000000000000000000000000000000001c102b00000000000000000000000000000000000000000000000000000000001c102c00000000000000000000000000000000000000000000000000000000001c102d00000000000000000000000000000000000000000000000000000000001c102e00000000000000000000000000000000000000000000000000000000001c102f00000000000000000000000000000000000000000000000000000000001c103000000000000000000000000000000000000000000000000000000000001c103100000000000000000000000000000000000000000000000000000000001c103200000000000000000000000000000000000000000000000000000000001c103300000000000000000000000000000000000000000000000000000000001c103400000000000000000000000000000000000000000000000000000000001c103500000000000000000000000000000000000000000000000000000000001c103600000000000000000000000000000000000000000000000000000000001c103700000000000000000000000000000000000000000000000000000000001c103800000000000000000000000000000000000000000000000000000000001c103900000000000000000000000000000000000000000000000000000000001c103a00000000000000000000000000000000000000000000000000000000001c103b00000000000000000000000000000000000000000000000000000000001c103c00000000000000000000000000000000000000000000000000000000001c103d00000000000000000000000000000000000000000000000000000000001c103e00000000000000000000000000000000000000000000000000000000001c103f3f00000000000000000000000000000000000000000000000000000000001c110000000000000000000000000000000000000000000000000000000000001c110100000000000000000000000000000000000000000000000000000000001c110200000000000000000000000000000000000000000000000000000000001c110300000000000000000000000000000000000000000000000000000000001c110400000000000000000000000000000000000000000000000000000000001c110500000000000000000000000000000000000000000000000000000000001c110600000000000000000000000000000000000000000000000000000000001c110700000000000000000000000000000000000000000000000000000000001c110800000000000000000000000000000000000000000000000000000000001c110900000000000000000000000000000000000000000000000000000000001c110a00000000000000000000000000000000000000000000000000000000001c110b00000000000000000000000000000000000000000000000000000000001c110c00000000000000000000000000000000000000000000000000000000001c110d00000000000000000000000000000000000000000000000000000000001c110e00000000000000000000000000000000000000000000000000000000001c110f00000000000000000000000000000000000000000000000000000000001c111000000000000000000000000000000000000000000000000000000000001c111100000000000000000000000000000000000000000000000000000000001c111200000000000000000000000000000000000000000000000000000000001c111300000000000000000000000000000000000000000000000000000000001c111400000000000000000000000000000000000000000000000000000000001c111500000000000000000000000000000000000000000000000000000000001c111600000000000000000000000000000000000000000000000000000000001c111700000000000000000000000000000000000000000000000000000000001c111800000000000000000000000000000000000000000000000000000000001c111900000000000000000000000000000000000000000000000000000000001c111a00000000000000000000000000000000000000000000000000000000001c111b00000000000000000000000000000000000000000000000000000000001c111c00000000000000000000000000000000000000000000000000000000001c111d00000000000000000000000000000000000000000000000000000000001c111e00000000000000000000000000000000000000000000000000000000001c111f00000000000000000000000000000000000000000000000000000000001c112000000000000000000000000000000000000000000000000000000000001c112100000000000000000000000000000000000000000000000000000000001c112200000000000000000000000000000000000000000000000000000000001c112300000000000000000000000000000000000000000000000000000000001c112400000000000000000000000000000000000000000000000000000000001c112500000000000000000000000000000000000000000000000000000000001c112600000000000000000000000000000000000000000000000000000000001c112700000000000000000000000000000000000000000000000000000000001c112800000000000000000000000000000000000000000000000000000000001c112900000000000000000000000000000000000000000000000000000000001c112a00000000000000000000000000000000000000000000000000000000001c112b00000000000000000000000000000000000000000000000000000000001c112c00000000000000000000000000000000000000000000000000000000001c112d00000000000000000000000000000000000000000000000000000000001c112e00000000000000000000000000000000000000000000000000000000001c112f00000000000000000000000000000000000000000000000000000000001c113000000000000000000000000000000000000000000000000000000000001c113100000000000000000000000000000000000000000000000000000000001c113200000000000000000000000000000000000000000000000000000000001c113300000000000000000000000000000000000000000000000000000000001c113400000000000000000000000000000000000000000000000000000000001c113500000000000000000000000000000000000000000000000000000000001c113600000000000000000000000000000000000000000000000000000000001c113700000000000000000000000000000000000000000000000000000000001c113800000000000000000000000000000000000000000000000000000000001c113900000000000000000000000000000000000000000000000000000000001c113a00000000000000000000000000000000000000000000000000000000001c113b00000000000000000000000000000000000000000000000000000000001c113c00000000000000000000000000000000000000000000000000000000001c113d00000000000000000000000000000000000000000000000000000000001c113e08006838aa99533bea0d4204cad17cb3c147e99c2f9089e54a4289d54733eeada2002ab314bd11ace2494a3fb0970d276da39f0fe7da19c9a2438b9c7c334d32470071703d79d8425a7eca52006df6a8f9728508a83639e3e1c2ebae2b853a087c00c9501ac04a78ac5413c9131b08708064ed2c2515b8893f12c2d1cda15a44f100a0955f93e109778d26f9e5b0d46e45c539e59b0941517bfa888eb2d7d2d8a6005adc3be9406cc5f102c6adb44746e8529a256e2396353a8659344cc3e914c4007a5fe572cf6af804f472dabf095c5eb6b30efc5fd627ad3245a8ef0f3f578c003dcaa91dfc9fdad7ba8da68a48fc662dfc0a995cbb0c1bc62099c8257d240d3f00000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c200100000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c200200000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c200300000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c200400000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c200500000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c200600000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c200700000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c200800000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c200900000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c204000000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c204100000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c204200000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c204300000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c204400000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c204500000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c204600000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c204700000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c2048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000020100100000000000000000000000000000000000000000000000000000000002010020000000000000000000000000000000000000000000000000000000000201003000000000000000000000000000000000000000000000000000000000020100400000000000000000000000000000000000000000000000000000000002010050000000000000000000000000000000000000000000000000000000000201006000000000000000000000000000000000000000000000000000000000020100700000000000000000000000000000000000000000000000000000000002010080000000000000000000000000000000000000000000000000000000000201009000000000000000000000000000000000000000000000000000000000020100a000000000000000000000000000000000000000000000000000000000020100b000000000000000000000000000000000000000000000000000000000020100c000000000000000000000000000000000000000000000000000000000020100d000000000000000000000000000000000000000000000000000000000020100e000000000000000000000000000000000000000000000000000000000020100f0000000000000000000000000000000000000000000000000000000000201010000000000000000000000000000000000000000000000000000000000020101100000000000000000000000000000000000000000000000000000000002010120000000000000000000000000000000000000000000000000000000000201013000000000000000000000000000000000000000000000000000000000020101400000000000000000000000000000000000000000000000000000000002010150000000000000000000000000000000000000000000000000000000000201016000000000000000000000000000000000000000000000000000000000020101700000000000000000000000000000000000000000000000000000000002010180000000000000000000000000000000000000000000000000000000000201019000000000000000000000000000000000000000000000000000000000020101a000000000000000000000000000000000000000000000000000000000020101b000000000000000000000000000000000000000000000000000000000020101c000000000000000000000000000000000000000000000000000000000020101d000000000000000000000000000000000000000000000000000000000020101e000000000000000000000000000000000000000000000000000000000020101f0000000000000000000000000000000000000000000000000000000000201020000000000000000000000000000000000000000000000000000000000020102100000000000000000000000000000000000000000000000000000000002010220000000000000000000000000000000000000000000000000000000000201023000000000000000000000000000000000000000000000000000000000020102400000000000000000000000000000000000000000000000000000000002010250000000000000000000000000000000000000000000000000000000000201026000000000000000000000000000000000000000000000000000000000020102700000000000000000000000000000000000000000000000000000000002010280000000000000000000000000000000000000000000000000000000000201029000000000000000000000000000000000000000000000000000000000020102a000000000000000000000000000000000000000000000000000000000020102b000000000000000000000000000000000000000000000000000000000020102c000000000000000000000000000000000000000000000000000000000020102d000000000000000000000000000000000000000000000000000000000020102e000000000000000000000000000000000000000000000000000000000020102f0000000000000000000000000000000000000000000000000000000000201030000000000000000000000000000000000000000000000000000000000020103100000000000000000000000000000000000000000000000000000000002010320000000000000000000000000000000000000000000000000000000000201033000000000000000000000000000000000000000000000000000000000020103400000000000000000000000000000000000000000000000000000000002010350000000000000000000000000000000000000000000000000000000000201036000000000000000000000000000000000000000000000000000000000020103700000000000000000000000000000000000000000000000000000000002010380000000000000000000000000000000000000000000000000000000000201039000000000000000000000000000000000000000000000000000000000020103a000000000000000000000000000000000000000000000000000000000020103b000000000000000000000000000000000000000000000000000000000020103c000000000000000000000000000000000000000000000000000000000020103d000000000000000000000000000000000000000000000000000000000020103e000000000000000000000000000000000000000000000000000000000020103f3f0000000000000000000000000000000000000000000000000000000000201100000000000000000000000000000000000000000000000000000000000020110100000000000000000000000000000000000000000000000000000000002011020000000000000000000000000000000000000000000000000000000000201103000000000000000000000000000000000000000000000000000000000020110400000000000000000000000000000000000000000000000000000000002011050000000000000000000000000000000000000000000000000000000000201106000000000000000000000000000000000000000000000000000000000020110700000000000000000000000000000000000000000000000000000000002011080000000000000000000000000000000000000000000000000000000000201109000000000000000000000000000000000000000000000000000000000020110a000000000000000000000000000000000000000000000000000000000020110b000000000000000000000000000000000000000000000000000000000020110c000000000000000000000000000000000000000000000000000000000020110d000000000000000000000000000000000000000000000000000000000020110e000000000000000000000000000000000000000000000000000000000020110f0000000000000000000000000000000000000000000000000000000000201110000000000000000000000000000000000000000000000000000000000020111100000000000000000000000000000000000000000000000000000000002011120000000000000000000000000000000000000000000000000000000000201113000000000000000000000000000000000000000000000000000000000020111400000000000000000000000000000000000000000000000000000000002011150000000000000000000000000000000000000000000000000000000000201116000000000000000000000000000000000000000000000000000000000020111700000000000000000000000000000000000000000000000000000000002011180000000000000000000000000000000000000000000000000000000000201119000000000000000000000000000000000000000000000000000000000020111a000000000000000000000000000000000000000000000000000000000020111b000000000000000000000000000000000000000000000000000000000020111c000000000000000000000000000000000000000000000000000000000020111d000000000000000000000000000000000000000000000000000000000020111e000000000000000000000000000000000000000000000000000000000020111f0000000000000000000000000000000000000000000000000000000000201120000000000000000000000000000000000000000000000000000000000020112100000000000000000000000000000000000000000000000000000000002011220000000000000000000000000000000000000000000000000000000000201123000000000000000000000000000000000000000000000000000000000020112400000000000000000000000000000000000000000000000000000000002011250000000000000000000000000000000000000000000000000000000000201126000000000000000000000000000000000000000000000000000000000020112700000000000000000000000000000000000000000000000000000000002011280000000000000000000000000000000000000000000000000000000000201129000000000000000000000000000000000000000000000000000000000020112a000000000000000000000000000000000000000000000000000000000020112b000000000000000000000000000000000000000000000000000000000020112c000000000000000000000000000000000000000000000000000000000020112d000000000000000000000000000000000000000000000000000000000020112e000000000000000000000000000000000000000000000000000000000020112f0000000000000000000000000000000000000000000000000000000000201130000000000000000000000000000000000000000000000000000000000020113100000000000000000000000000000000000000000000000000000000002011320000000000000000000000000000000000000000000000000000000000201133000000000000000000000000000000000000000000000000000000000020113400000000000000000000000000000000000000000000000000000000002011350000000000000000000000000000000000000000000000000000000000201136000000000000000000000000000000000000000000000000000000000020113700000000000000000000000000000000000000000000000000000000002011380000000000000000000000000000000000000000000000000000000000201139000000000000000000000000000000000000000000000000000000000020113a000000000000000000000000000000000000000000000000000000000020113b000000000000000000000000000000000000000000000000000000000020113c000000000000000000000000000000000000000000000000000000000020113d000000000000000000000000000000000000000000000000000000000020113e0800e9805e8a4faa87fc419af08a6d956f18976c46ea694bbd4cf6946e6d02033200e0925a6b172b4b01bb76eb1d3f7dd2ced118bca70d223a6d61afa1b75915ae00383590492d2f99a0283d1de57015b4b6b0759a8023af2c68fb4929dee2f303007ed57100dd77e2b6405f780503ef61b7b53e13f344b6e6a6eff3e3c13de0d0001ab1b0c348c46184dbc86ff79f248e7da1b09d3f9c6a986e98fe45389f060d0023d134bc68d7efa25e255001069827dc0bee766c08c988d6300071ed27fe6c0031cbb780b07f632cbaf767dc80608cc0a8e1d1df3ecd6f5d8bc0ca6703e4f4002c7dc9e731fc5f6456b2a70b4e636ac17d5e0cd36d3a591116a9e124f735863f0000000000000000000000000000000000000000000000000000000000202000000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202001000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202002000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202003000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202004000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202005000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020060000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020200700000000000000000000000000000000000000000000000000000000002020110000000000000000000000000000000000000000000000000000000000202008000000000000000000000000000000000000000000000000000000000020201200000000000000000000000000000000000000000000000000000000002020090000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202016000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202017000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202011000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202012000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020160000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020201700000000000000000000000000000000000000000000000000000000002020210000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020202200000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202026000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202027000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202021000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202022000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020260000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020202700000000000000000000000000000000000000000000000000000000002020310000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020203200000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202036000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202037000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202031000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202032000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000002020360000000000000000000000000000000000000000000000000000000000202040000000000000000000000000000000000000000000000000000000000020203700000000000000000000000000000000000000000000000000000000002020410000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020204200000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202043000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202044000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202045000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202046000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202047000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "txsEffectsHash": "0x00d2d12b4d0c6202124a7625c585097078920e09dd2c650401a91b564234a6b4", + "archive": "0x0e0f11309acd34a0d37d7c714c1d8fe5fc74fb2322b8ee137b4471cbf61dd7c3", + "blockHash": "0x0ad98a1ccdc542d10f3fde78b9d31058fc4d6f1bbffe11333c0b4b8dd0ecce0c", + "body": "0x00000004000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f3f0000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e08005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e69200302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b16522993f0000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000018100100000000000000000000000000000000000000000000000000000000001810020000000000000000000000000000000000000000000000000000000000181003000000000000000000000000000000000000000000000000000000000018100400000000000000000000000000000000000000000000000000000000001810050000000000000000000000000000000000000000000000000000000000181006000000000000000000000000000000000000000000000000000000000018100700000000000000000000000000000000000000000000000000000000001810080000000000000000000000000000000000000000000000000000000000181009000000000000000000000000000000000000000000000000000000000018100a000000000000000000000000000000000000000000000000000000000018100b000000000000000000000000000000000000000000000000000000000018100c000000000000000000000000000000000000000000000000000000000018100d000000000000000000000000000000000000000000000000000000000018100e000000000000000000000000000000000000000000000000000000000018100f0000000000000000000000000000000000000000000000000000000000181010000000000000000000000000000000000000000000000000000000000018101100000000000000000000000000000000000000000000000000000000001810120000000000000000000000000000000000000000000000000000000000181013000000000000000000000000000000000000000000000000000000000018101400000000000000000000000000000000000000000000000000000000001810150000000000000000000000000000000000000000000000000000000000181016000000000000000000000000000000000000000000000000000000000018101700000000000000000000000000000000000000000000000000000000001810180000000000000000000000000000000000000000000000000000000000181019000000000000000000000000000000000000000000000000000000000018101a000000000000000000000000000000000000000000000000000000000018101b000000000000000000000000000000000000000000000000000000000018101c000000000000000000000000000000000000000000000000000000000018101d000000000000000000000000000000000000000000000000000000000018101e000000000000000000000000000000000000000000000000000000000018101f0000000000000000000000000000000000000000000000000000000000181020000000000000000000000000000000000000000000000000000000000018102100000000000000000000000000000000000000000000000000000000001810220000000000000000000000000000000000000000000000000000000000181023000000000000000000000000000000000000000000000000000000000018102400000000000000000000000000000000000000000000000000000000001810250000000000000000000000000000000000000000000000000000000000181026000000000000000000000000000000000000000000000000000000000018102700000000000000000000000000000000000000000000000000000000001810280000000000000000000000000000000000000000000000000000000000181029000000000000000000000000000000000000000000000000000000000018102a000000000000000000000000000000000000000000000000000000000018102b000000000000000000000000000000000000000000000000000000000018102c000000000000000000000000000000000000000000000000000000000018102d000000000000000000000000000000000000000000000000000000000018102e000000000000000000000000000000000000000000000000000000000018102f0000000000000000000000000000000000000000000000000000000000181030000000000000000000000000000000000000000000000000000000000018103100000000000000000000000000000000000000000000000000000000001810320000000000000000000000000000000000000000000000000000000000181033000000000000000000000000000000000000000000000000000000000018103400000000000000000000000000000000000000000000000000000000001810350000000000000000000000000000000000000000000000000000000000181036000000000000000000000000000000000000000000000000000000000018103700000000000000000000000000000000000000000000000000000000001810380000000000000000000000000000000000000000000000000000000000181039000000000000000000000000000000000000000000000000000000000018103a000000000000000000000000000000000000000000000000000000000018103b000000000000000000000000000000000000000000000000000000000018103c000000000000000000000000000000000000000000000000000000000018103d000000000000000000000000000000000000000000000000000000000018103e000000000000000000000000000000000000000000000000000000000018103f3f0000000000000000000000000000000000000000000000000000000000181100000000000000000000000000000000000000000000000000000000000018110100000000000000000000000000000000000000000000000000000000001811020000000000000000000000000000000000000000000000000000000000181103000000000000000000000000000000000000000000000000000000000018110400000000000000000000000000000000000000000000000000000000001811050000000000000000000000000000000000000000000000000000000000181106000000000000000000000000000000000000000000000000000000000018110700000000000000000000000000000000000000000000000000000000001811080000000000000000000000000000000000000000000000000000000000181109000000000000000000000000000000000000000000000000000000000018110a000000000000000000000000000000000000000000000000000000000018110b000000000000000000000000000000000000000000000000000000000018110c000000000000000000000000000000000000000000000000000000000018110d000000000000000000000000000000000000000000000000000000000018110e000000000000000000000000000000000000000000000000000000000018110f0000000000000000000000000000000000000000000000000000000000181110000000000000000000000000000000000000000000000000000000000018111100000000000000000000000000000000000000000000000000000000001811120000000000000000000000000000000000000000000000000000000000181113000000000000000000000000000000000000000000000000000000000018111400000000000000000000000000000000000000000000000000000000001811150000000000000000000000000000000000000000000000000000000000181116000000000000000000000000000000000000000000000000000000000018111700000000000000000000000000000000000000000000000000000000001811180000000000000000000000000000000000000000000000000000000000181119000000000000000000000000000000000000000000000000000000000018111a000000000000000000000000000000000000000000000000000000000018111b000000000000000000000000000000000000000000000000000000000018111c000000000000000000000000000000000000000000000000000000000018111d000000000000000000000000000000000000000000000000000000000018111e000000000000000000000000000000000000000000000000000000000018111f0000000000000000000000000000000000000000000000000000000000181120000000000000000000000000000000000000000000000000000000000018112100000000000000000000000000000000000000000000000000000000001811220000000000000000000000000000000000000000000000000000000000181123000000000000000000000000000000000000000000000000000000000018112400000000000000000000000000000000000000000000000000000000001811250000000000000000000000000000000000000000000000000000000000181126000000000000000000000000000000000000000000000000000000000018112700000000000000000000000000000000000000000000000000000000001811280000000000000000000000000000000000000000000000000000000000181129000000000000000000000000000000000000000000000000000000000018112a000000000000000000000000000000000000000000000000000000000018112b000000000000000000000000000000000000000000000000000000000018112c000000000000000000000000000000000000000000000000000000000018112d000000000000000000000000000000000000000000000000000000000018112e000000000000000000000000000000000000000000000000000000000018112f0000000000000000000000000000000000000000000000000000000000181130000000000000000000000000000000000000000000000000000000000018113100000000000000000000000000000000000000000000000000000000001811320000000000000000000000000000000000000000000000000000000000181133000000000000000000000000000000000000000000000000000000000018113400000000000000000000000000000000000000000000000000000000001811350000000000000000000000000000000000000000000000000000000000181136000000000000000000000000000000000000000000000000000000000018113700000000000000000000000000000000000000000000000000000000001811380000000000000000000000000000000000000000000000000000000000181139000000000000000000000000000000000000000000000000000000000018113a000000000000000000000000000000000000000000000000000000000018113b000000000000000000000000000000000000000000000000000000000018113c000000000000000000000000000000000000000000000000000000000018113d000000000000000000000000000000000000000000000000000000000018113e0800f872eb9653f03af10f331da1361fa1524d3cd958cb72dacea1d424f19df3af00ffc548a17cd6ba1f2d228f30e4ddb19ecc46ad3b609977d52bb0f49e1206410032f8058bd779c520eabae2743b02ec4f71670428506fcceb2d4b69f26fb11800c0283e15fbf74ffa4eafb984030394f3c2ea6733cc0eacb0431a9475eff28f00b7f55314bfd9d441c1c624e241908228fe4da3d3a0a7fbd56814e1c8cd5d3e00f430f33a786675271736fd728c7bf7428b8c24ac948d7faf76ddb8783a496c0048fc235ead8d4b9d44929662a6384074fc4e5076bec5b7deb34f612393684300fd9b61cb1ad9b4b28f58399906e73933e3cccee8fc98a393f0eedb95b13ee63f0000000000000000000000000000000000000000000000000000000000182000000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182001000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182002000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182003000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182004000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182005000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820060000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018200700000000000000000000000000000000000000000000000000000000001820110000000000000000000000000000000000000000000000000000000000182008000000000000000000000000000000000000000000000000000000000018201200000000000000000000000000000000000000000000000000000000001820090000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182016000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182017000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182011000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182012000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820160000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018201700000000000000000000000000000000000000000000000000000000001820210000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018202200000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182026000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182027000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182021000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182022000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820260000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018202700000000000000000000000000000000000000000000000000000000001820310000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018203200000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182036000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182037000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182031000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182032000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018203f00000000000000000000000000000000000000000000000000000000001820360000000000000000000000000000000000000000000000000000000000182040000000000000000000000000000000000000000000000000000000000018203700000000000000000000000000000000000000000000000000000000001820410000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018204200000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182043000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182044000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182045000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182046000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182047000000000000000000000000000000000000000000000000000000000018203e00000000000000000000000000000000000000000000000000000000001820480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c100100000000000000000000000000000000000000000000000000000000001c100200000000000000000000000000000000000000000000000000000000001c100300000000000000000000000000000000000000000000000000000000001c100400000000000000000000000000000000000000000000000000000000001c100500000000000000000000000000000000000000000000000000000000001c100600000000000000000000000000000000000000000000000000000000001c100700000000000000000000000000000000000000000000000000000000001c100800000000000000000000000000000000000000000000000000000000001c100900000000000000000000000000000000000000000000000000000000001c100a00000000000000000000000000000000000000000000000000000000001c100b00000000000000000000000000000000000000000000000000000000001c100c00000000000000000000000000000000000000000000000000000000001c100d00000000000000000000000000000000000000000000000000000000001c100e00000000000000000000000000000000000000000000000000000000001c100f00000000000000000000000000000000000000000000000000000000001c101000000000000000000000000000000000000000000000000000000000001c101100000000000000000000000000000000000000000000000000000000001c101200000000000000000000000000000000000000000000000000000000001c101300000000000000000000000000000000000000000000000000000000001c101400000000000000000000000000000000000000000000000000000000001c101500000000000000000000000000000000000000000000000000000000001c101600000000000000000000000000000000000000000000000000000000001c101700000000000000000000000000000000000000000000000000000000001c101800000000000000000000000000000000000000000000000000000000001c101900000000000000000000000000000000000000000000000000000000001c101a00000000000000000000000000000000000000000000000000000000001c101b00000000000000000000000000000000000000000000000000000000001c101c00000000000000000000000000000000000000000000000000000000001c101d00000000000000000000000000000000000000000000000000000000001c101e00000000000000000000000000000000000000000000000000000000001c101f00000000000000000000000000000000000000000000000000000000001c102000000000000000000000000000000000000000000000000000000000001c102100000000000000000000000000000000000000000000000000000000001c102200000000000000000000000000000000000000000000000000000000001c102300000000000000000000000000000000000000000000000000000000001c102400000000000000000000000000000000000000000000000000000000001c102500000000000000000000000000000000000000000000000000000000001c102600000000000000000000000000000000000000000000000000000000001c102700000000000000000000000000000000000000000000000000000000001c102800000000000000000000000000000000000000000000000000000000001c102900000000000000000000000000000000000000000000000000000000001c102a00000000000000000000000000000000000000000000000000000000001c102b00000000000000000000000000000000000000000000000000000000001c102c00000000000000000000000000000000000000000000000000000000001c102d00000000000000000000000000000000000000000000000000000000001c102e00000000000000000000000000000000000000000000000000000000001c102f00000000000000000000000000000000000000000000000000000000001c103000000000000000000000000000000000000000000000000000000000001c103100000000000000000000000000000000000000000000000000000000001c103200000000000000000000000000000000000000000000000000000000001c103300000000000000000000000000000000000000000000000000000000001c103400000000000000000000000000000000000000000000000000000000001c103500000000000000000000000000000000000000000000000000000000001c103600000000000000000000000000000000000000000000000000000000001c103700000000000000000000000000000000000000000000000000000000001c103800000000000000000000000000000000000000000000000000000000001c103900000000000000000000000000000000000000000000000000000000001c103a00000000000000000000000000000000000000000000000000000000001c103b00000000000000000000000000000000000000000000000000000000001c103c00000000000000000000000000000000000000000000000000000000001c103d00000000000000000000000000000000000000000000000000000000001c103e00000000000000000000000000000000000000000000000000000000001c103f3f00000000000000000000000000000000000000000000000000000000001c110000000000000000000000000000000000000000000000000000000000001c110100000000000000000000000000000000000000000000000000000000001c110200000000000000000000000000000000000000000000000000000000001c110300000000000000000000000000000000000000000000000000000000001c110400000000000000000000000000000000000000000000000000000000001c110500000000000000000000000000000000000000000000000000000000001c110600000000000000000000000000000000000000000000000000000000001c110700000000000000000000000000000000000000000000000000000000001c110800000000000000000000000000000000000000000000000000000000001c110900000000000000000000000000000000000000000000000000000000001c110a00000000000000000000000000000000000000000000000000000000001c110b00000000000000000000000000000000000000000000000000000000001c110c00000000000000000000000000000000000000000000000000000000001c110d00000000000000000000000000000000000000000000000000000000001c110e00000000000000000000000000000000000000000000000000000000001c110f00000000000000000000000000000000000000000000000000000000001c111000000000000000000000000000000000000000000000000000000000001c111100000000000000000000000000000000000000000000000000000000001c111200000000000000000000000000000000000000000000000000000000001c111300000000000000000000000000000000000000000000000000000000001c111400000000000000000000000000000000000000000000000000000000001c111500000000000000000000000000000000000000000000000000000000001c111600000000000000000000000000000000000000000000000000000000001c111700000000000000000000000000000000000000000000000000000000001c111800000000000000000000000000000000000000000000000000000000001c111900000000000000000000000000000000000000000000000000000000001c111a00000000000000000000000000000000000000000000000000000000001c111b00000000000000000000000000000000000000000000000000000000001c111c00000000000000000000000000000000000000000000000000000000001c111d00000000000000000000000000000000000000000000000000000000001c111e00000000000000000000000000000000000000000000000000000000001c111f00000000000000000000000000000000000000000000000000000000001c112000000000000000000000000000000000000000000000000000000000001c112100000000000000000000000000000000000000000000000000000000001c112200000000000000000000000000000000000000000000000000000000001c112300000000000000000000000000000000000000000000000000000000001c112400000000000000000000000000000000000000000000000000000000001c112500000000000000000000000000000000000000000000000000000000001c112600000000000000000000000000000000000000000000000000000000001c112700000000000000000000000000000000000000000000000000000000001c112800000000000000000000000000000000000000000000000000000000001c112900000000000000000000000000000000000000000000000000000000001c112a00000000000000000000000000000000000000000000000000000000001c112b00000000000000000000000000000000000000000000000000000000001c112c00000000000000000000000000000000000000000000000000000000001c112d00000000000000000000000000000000000000000000000000000000001c112e00000000000000000000000000000000000000000000000000000000001c112f00000000000000000000000000000000000000000000000000000000001c113000000000000000000000000000000000000000000000000000000000001c113100000000000000000000000000000000000000000000000000000000001c113200000000000000000000000000000000000000000000000000000000001c113300000000000000000000000000000000000000000000000000000000001c113400000000000000000000000000000000000000000000000000000000001c113500000000000000000000000000000000000000000000000000000000001c113600000000000000000000000000000000000000000000000000000000001c113700000000000000000000000000000000000000000000000000000000001c113800000000000000000000000000000000000000000000000000000000001c113900000000000000000000000000000000000000000000000000000000001c113a00000000000000000000000000000000000000000000000000000000001c113b00000000000000000000000000000000000000000000000000000000001c113c00000000000000000000000000000000000000000000000000000000001c113d00000000000000000000000000000000000000000000000000000000001c113e08006838aa99533bea0d4204cad17cb3c147e99c2f9089e54a4289d54733eeada2002ab314bd11ace2494a3fb0970d276da39f0fe7da19c9a2438b9c7c334d32470071703d79d8425a7eca52006df6a8f9728508a83639e3e1c2ebae2b853a087c00c9501ac04a78ac5413c9131b08708064ed2c2515b8893f12c2d1cda15a44f100a0955f93e109778d26f9e5b0d46e45c539e59b0941517bfa888eb2d7d2d8a6005adc3be9406cc5f102c6adb44746e8529a256e2396353a8659344cc3e914c4007a5fe572cf6af804f472dabf095c5eb6b30efc5fd627ad3245a8ef0f3f578c003dcaa91dfc9fdad7ba8da68a48fc662dfc0a995cbb0c1bc62099c8257d240d3f00000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c200100000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c200200000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c200300000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c200400000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c200500000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c200600000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c200700000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c200800000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c200900000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c204000000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c204100000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c204200000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c204300000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c204400000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c204500000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c204600000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c204700000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c2048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000020100100000000000000000000000000000000000000000000000000000000002010020000000000000000000000000000000000000000000000000000000000201003000000000000000000000000000000000000000000000000000000000020100400000000000000000000000000000000000000000000000000000000002010050000000000000000000000000000000000000000000000000000000000201006000000000000000000000000000000000000000000000000000000000020100700000000000000000000000000000000000000000000000000000000002010080000000000000000000000000000000000000000000000000000000000201009000000000000000000000000000000000000000000000000000000000020100a000000000000000000000000000000000000000000000000000000000020100b000000000000000000000000000000000000000000000000000000000020100c000000000000000000000000000000000000000000000000000000000020100d000000000000000000000000000000000000000000000000000000000020100e000000000000000000000000000000000000000000000000000000000020100f0000000000000000000000000000000000000000000000000000000000201010000000000000000000000000000000000000000000000000000000000020101100000000000000000000000000000000000000000000000000000000002010120000000000000000000000000000000000000000000000000000000000201013000000000000000000000000000000000000000000000000000000000020101400000000000000000000000000000000000000000000000000000000002010150000000000000000000000000000000000000000000000000000000000201016000000000000000000000000000000000000000000000000000000000020101700000000000000000000000000000000000000000000000000000000002010180000000000000000000000000000000000000000000000000000000000201019000000000000000000000000000000000000000000000000000000000020101a000000000000000000000000000000000000000000000000000000000020101b000000000000000000000000000000000000000000000000000000000020101c000000000000000000000000000000000000000000000000000000000020101d000000000000000000000000000000000000000000000000000000000020101e000000000000000000000000000000000000000000000000000000000020101f0000000000000000000000000000000000000000000000000000000000201020000000000000000000000000000000000000000000000000000000000020102100000000000000000000000000000000000000000000000000000000002010220000000000000000000000000000000000000000000000000000000000201023000000000000000000000000000000000000000000000000000000000020102400000000000000000000000000000000000000000000000000000000002010250000000000000000000000000000000000000000000000000000000000201026000000000000000000000000000000000000000000000000000000000020102700000000000000000000000000000000000000000000000000000000002010280000000000000000000000000000000000000000000000000000000000201029000000000000000000000000000000000000000000000000000000000020102a000000000000000000000000000000000000000000000000000000000020102b000000000000000000000000000000000000000000000000000000000020102c000000000000000000000000000000000000000000000000000000000020102d000000000000000000000000000000000000000000000000000000000020102e000000000000000000000000000000000000000000000000000000000020102f0000000000000000000000000000000000000000000000000000000000201030000000000000000000000000000000000000000000000000000000000020103100000000000000000000000000000000000000000000000000000000002010320000000000000000000000000000000000000000000000000000000000201033000000000000000000000000000000000000000000000000000000000020103400000000000000000000000000000000000000000000000000000000002010350000000000000000000000000000000000000000000000000000000000201036000000000000000000000000000000000000000000000000000000000020103700000000000000000000000000000000000000000000000000000000002010380000000000000000000000000000000000000000000000000000000000201039000000000000000000000000000000000000000000000000000000000020103a000000000000000000000000000000000000000000000000000000000020103b000000000000000000000000000000000000000000000000000000000020103c000000000000000000000000000000000000000000000000000000000020103d000000000000000000000000000000000000000000000000000000000020103e000000000000000000000000000000000000000000000000000000000020103f3f0000000000000000000000000000000000000000000000000000000000201100000000000000000000000000000000000000000000000000000000000020110100000000000000000000000000000000000000000000000000000000002011020000000000000000000000000000000000000000000000000000000000201103000000000000000000000000000000000000000000000000000000000020110400000000000000000000000000000000000000000000000000000000002011050000000000000000000000000000000000000000000000000000000000201106000000000000000000000000000000000000000000000000000000000020110700000000000000000000000000000000000000000000000000000000002011080000000000000000000000000000000000000000000000000000000000201109000000000000000000000000000000000000000000000000000000000020110a000000000000000000000000000000000000000000000000000000000020110b000000000000000000000000000000000000000000000000000000000020110c000000000000000000000000000000000000000000000000000000000020110d000000000000000000000000000000000000000000000000000000000020110e000000000000000000000000000000000000000000000000000000000020110f0000000000000000000000000000000000000000000000000000000000201110000000000000000000000000000000000000000000000000000000000020111100000000000000000000000000000000000000000000000000000000002011120000000000000000000000000000000000000000000000000000000000201113000000000000000000000000000000000000000000000000000000000020111400000000000000000000000000000000000000000000000000000000002011150000000000000000000000000000000000000000000000000000000000201116000000000000000000000000000000000000000000000000000000000020111700000000000000000000000000000000000000000000000000000000002011180000000000000000000000000000000000000000000000000000000000201119000000000000000000000000000000000000000000000000000000000020111a000000000000000000000000000000000000000000000000000000000020111b000000000000000000000000000000000000000000000000000000000020111c000000000000000000000000000000000000000000000000000000000020111d000000000000000000000000000000000000000000000000000000000020111e000000000000000000000000000000000000000000000000000000000020111f0000000000000000000000000000000000000000000000000000000000201120000000000000000000000000000000000000000000000000000000000020112100000000000000000000000000000000000000000000000000000000002011220000000000000000000000000000000000000000000000000000000000201123000000000000000000000000000000000000000000000000000000000020112400000000000000000000000000000000000000000000000000000000002011250000000000000000000000000000000000000000000000000000000000201126000000000000000000000000000000000000000000000000000000000020112700000000000000000000000000000000000000000000000000000000002011280000000000000000000000000000000000000000000000000000000000201129000000000000000000000000000000000000000000000000000000000020112a000000000000000000000000000000000000000000000000000000000020112b000000000000000000000000000000000000000000000000000000000020112c000000000000000000000000000000000000000000000000000000000020112d000000000000000000000000000000000000000000000000000000000020112e000000000000000000000000000000000000000000000000000000000020112f0000000000000000000000000000000000000000000000000000000000201130000000000000000000000000000000000000000000000000000000000020113100000000000000000000000000000000000000000000000000000000002011320000000000000000000000000000000000000000000000000000000000201133000000000000000000000000000000000000000000000000000000000020113400000000000000000000000000000000000000000000000000000000002011350000000000000000000000000000000000000000000000000000000000201136000000000000000000000000000000000000000000000000000000000020113700000000000000000000000000000000000000000000000000000000002011380000000000000000000000000000000000000000000000000000000000201139000000000000000000000000000000000000000000000000000000000020113a000000000000000000000000000000000000000000000000000000000020113b000000000000000000000000000000000000000000000000000000000020113c000000000000000000000000000000000000000000000000000000000020113d000000000000000000000000000000000000000000000000000000000020113e0800e9805e8a4faa87fc419af08a6d956f18976c46ea694bbd4cf6946e6d02033200e0925a6b172b4b01bb76eb1d3f7dd2ced118bca70d223a6d61afa1b75915ae00383590492d2f99a0283d1de57015b4b6b0759a8023af2c68fb4929dee2f303007ed57100dd77e2b6405f780503ef61b7b53e13f344b6e6a6eff3e3c13de0d0001ab1b0c348c46184dbc86ff79f248e7da1b09d3f9c6a986e98fe45389f060d0023d134bc68d7efa25e255001069827dc0bee766c08c988d6300071ed27fe6c0031cbb780b07f632cbaf767dc80608cc0a8e1d1df3ecd6f5d8bc0ca6703e4f4002c7dc9e731fc5f6456b2a70b4e636ac17d5e0cd36d3a591116a9e124f735863f0000000000000000000000000000000000000000000000000000000000202000000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202001000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202002000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202003000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202004000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202005000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020060000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020200700000000000000000000000000000000000000000000000000000000002020110000000000000000000000000000000000000000000000000000000000202008000000000000000000000000000000000000000000000000000000000020201200000000000000000000000000000000000000000000000000000000002020090000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202016000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202017000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202011000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202012000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020160000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020201700000000000000000000000000000000000000000000000000000000002020210000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020202200000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202026000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202027000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202021000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202022000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020260000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020202700000000000000000000000000000000000000000000000000000000002020310000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020203200000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202036000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202037000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202031000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202032000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000002020360000000000000000000000000000000000000000000000000000000000202040000000000000000000000000000000000000000000000000000000000020203700000000000000000000000000000000000000000000000000000000002020410000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020204200000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202043000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202044000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202045000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202046000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202047000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "decodedHeader": { "contentCommitment": { + "blobsHash": "0x00a249a9f834ecee6d0bd91c841e5a02a0629a89754c2844593b74bb50002697", "inHash": "0x00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242", - "outHash": "0x009514581058b2b6aae79574cc9129a801904407c6d869a5f168b02cebffecfe", - "numTxs": 8, - "txsEffectsHash": "0x00d2d12b4d0c6202124a7625c585097078920e09dd2c650401a91b564234a6b4" + "outHash": "0x00a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26", + "numTxs": 4 }, "globalVariables": { "blockNumber": 2, "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000023", "chainId": 31337, - "timestamp": 1731434221, + "timestamp": 1732284950, "version": 1, - "coinbase": "0xa8f1a4313bc15dcd3681ed2b6fdd042f1ee1f823", - "feeRecipient": "0x2abdc96d2ec8465dfd2bb7401f90dd3af0db16c3cece57bd5de2b63a3d25140b", + "coinbase": "0x1d18b0d58a782ce94f30cb2b122b9cbb4c523365", + "feeRecipient": "0x17058b928f637c62f9cb7a481168406410f91b54458bd6d2768fb3fb17080a16", "gasFees": { "feePerDaGas": 0, "feePerL2Gas": 0 @@ -116,7 +83,7 @@ }, "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x13232b1c92fcfba5f94aee813d7e454764f93d6292215552b8c973ef42c8e396" + "root": "0x0e53899e5997e6e78a98a4092b9627f8618a34f7e6585286acff725d1ae5e32d" }, "stateReference": { "l1ToL2MessageTree": { @@ -133,14 +100,15 @@ "root": "0x2ed5c359f01d6a1cacfa324bc48b7fcc6fe75a95ad66bdb1a6e32d6907550957" }, "publicDataTree": { - "nextAvailableLeafIndex": 640, - "root": "0x23a39db7c42fa47a6df2b9deea545155c39f6066cbbc2701a12c60af95b6cdf9" + "nextAvailableLeafIndex": 632, + "root": "0x0c5783f9fe3a18bb5abd12daca67d280f6b5dfef250b7433dc059ce0d868b319" } } } }, - "header": "0x13232b1c92fcfba5f94aee813d7e454764f93d6292215552b8c973ef42c8e39600000002000000000000000000000000000000000000000000000000000000000000000800d2d12b4d0c6202124a7625c585097078920e09dd2c650401a91b564234a6b400e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242009514581058b2b6aae79574cc9129a801904407c6d869a5f168b02cebffecfe026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944000000202494d2575971bca59a28ddc774d19136f4a294951ab67258c7e9c2d8f9805924000002002ed5c359f01d6a1cacfa324bc48b7fcc6fe75a95ad66bdb1a6e32d69075509570000028023a39db7c42fa47a6df2b9deea545155c39f6066cbbc2701a12c60af95b6cdf9000002800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002300000000000000000000000000000000000000000000000000000000673396eda8f1a4313bc15dcd3681ed2b6fdd042f1ee1f8232abdc96d2ec8465dfd2bb7401f90dd3af0db16c3cece57bd5de2b63a3d25140b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x0010b7371af5e28ae8d1d0385e2ad3e28322dc403bfab0a6196947e5bb95143b", - "numTxs": 8 + "header": "0x0e53899e5997e6e78a98a4092b9627f8618a34f7e6585286acff725d1ae5e32d00000002000000000000000000000000000000000000000000000000000000000000000400a249a9f834ecee6d0bd91c841e5a02a0629a89754c2844593b74bb5000269700e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e824200a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944000000202494d2575971bca59a28ddc774d19136f4a294951ab67258c7e9c2d8f9805924000002002ed5c359f01d6a1cacfa324bc48b7fcc6fe75a95ad66bdb1a6e32d6907550957000002800c5783f9fe3a18bb5abd12daca67d280f6b5dfef250b7433dc059ce0d868b319000002780000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002300000000000000000000000000000000000000000000000000000000674092161d18b0d58a782ce94f30cb2b122b9cbb4c52336517058b928f637c62f9cb7a481168406410f91b54458bd6d2768fb3fb17080a16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x0026ba02696b157262d5ff35f9e3e4e7e88464e5cc60cd74aa3d9efd6ed93343", + "blobInputs": "0x01019459274d8bf8edc690446032c9e349e4bed693db5fbc7e05d0d38e780445042b05f8c7ed84b2d229b760cecee7a7eec6cff16285f647eeadd63601b9fa240110881755773868744fbb3cd4a392b3ec27e859107d782b2e039791d03e16ce44a1e7643408f2a24771eb694ee4d50298d6122a3459cd4a5257829a3c4cc13b13247b7dd371eae4c94e7d9aff21f04137971b54bb0a05a7cc8338c36bec0149c0f9afaffba3f7836abe8e2ac6cab4955c20ef2e8d2e002384bcfdeade0fe3f915", + "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/merkle/UnbalancedMerkle.t.sol b/l1-contracts/test/merkle/UnbalancedMerkle.t.sol index e248f878b5a..e034a0e7247 100644 --- a/l1-contracts/test/merkle/UnbalancedMerkle.t.sol +++ b/l1-contracts/test/merkle/UnbalancedMerkle.t.sol @@ -5,11 +5,10 @@ pragma solidity >=0.8.27; import {Test} from "forge-std/Test.sol"; import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; -import {TxsDecoderHelper} from "../decoders/helpers/TxsDecoderHelper.sol"; +import {MerkleLibHelper} from "./helpers/MerkleLibHelper.sol"; /** * Tests the tree construction for unbalanced rollups. - * Used for calculating txsEffectsHash over non balanced rollups - each leaf is one baseLeaf - * calculated in TxsDecoder.sol. + * Used for calculating outHash over non balanced rollups. */ contract UnbalancedMerkleTest is Test { @@ -18,41 +17,41 @@ contract UnbalancedMerkleTest is Test { * powers of 2. * We list them in reverse order as we compute subtree roots from R to L */ - TxsDecoderHelper internal txsHelper; + MerkleLibHelper internal merkleLibHelper; function setUp() public { - txsHelper = new TxsDecoderHelper(); + merkleLibHelper = new MerkleLibHelper(); } - function testDecomp() public { + function testDecomp() public view { // Worst case - max num txs uint32 numTxs = 65535; - (uint256 min, uint256 max) = txsHelper.computeMinMaxPathLength(numTxs); + (uint256 min, uint256 max) = merkleLibHelper.computeMinMaxPathLength(numTxs); assertEq(min, 15); assertEq(max, 16); // Single tree of 2**15 numTxs = 32768; - (min, max) = txsHelper.computeMinMaxPathLength(numTxs); + (min, max) = merkleLibHelper.computeMinMaxPathLength(numTxs); assertEq(min, 15); assertEq(max, 15); // Single tree of 2**13 numTxs = 8192; - (min, max) = txsHelper.computeMinMaxPathLength(numTxs); + (min, max) = merkleLibHelper.computeMinMaxPathLength(numTxs); assertEq(min, 13); assertEq(max, 13); // Trees of 2**12, 2**11, ... 2**0 numTxs = 8191; - (min, max) = txsHelper.computeMinMaxPathLength(numTxs); + (min, max) = merkleLibHelper.computeMinMaxPathLength(numTxs); assertEq(min, 12); assertEq(max, 13); // Single tree of 2**8 numTxs = 256; - (min, max) = txsHelper.computeMinMaxPathLength(numTxs); + (min, max) = merkleLibHelper.computeMinMaxPathLength(numTxs); assertEq(min, 8); assertEq(max, 8); // Left subtree of 2**8, right subtree of single leaf numTxs = 257; - (min, max) = txsHelper.computeMinMaxPathLength(numTxs); + (min, max) = merkleLibHelper.computeMinMaxPathLength(numTxs); assertEq(min, 1); assertEq(max, 9); } @@ -62,18 +61,18 @@ contract UnbalancedMerkleTest is Test { // root // / \ // base base - function testComputeTxsEffectsHash2() public { + function testComputeTxsEffectsHash2() public view { // Generate some base leaves bytes32[] memory baseLeaves = new bytes32[](2); for (uint256 i = 0; i < 2; i++) { baseLeaves[i] = Hash.sha256ToField(abi.encodePacked(i)); } // We have just one 'balanced' branch, so depth is 0 with 2 elements - (uint256 min, uint256 max) = txsHelper.computeMinMaxPathLength(2); + (uint256 min, uint256 max) = merkleLibHelper.computeMinMaxPathLength(2); assertEq(min, 1); assertEq(max, 1); bytes32 rootTxsEffectsHash = Hash.sha256ToField(bytes.concat(baseLeaves[0], baseLeaves[1])); - bytes32 calculatedTxsEffectsHash = txsHelper.computeUnbalancedRoot(baseLeaves); + bytes32 calculatedTxsEffectsHash = merkleLibHelper.computeUnbalancedRoot(baseLeaves); assertEq(calculatedTxsEffectsHash, rootTxsEffectsHash); } // Example - 3 txs: @@ -84,19 +83,19 @@ contract UnbalancedMerkleTest is Test { // / \ // base base - function testComputeTxsEffectsHash3() public { + function testComputeTxsEffectsHash3() public view { // Generate some base leaves bytes32[] memory baseLeaves = new bytes32[](3); for (uint256 i = 0; i < 3; i++) { baseLeaves[i] = Hash.sha256ToField(abi.encodePacked(i)); } - (uint256 min, uint256 max) = txsHelper.computeMinMaxPathLength(3); + (uint256 min, uint256 max) = merkleLibHelper.computeMinMaxPathLength(3); assertEq(min, 1); assertEq(max, 2); bytes32 mergeTxsEffectsHash = Hash.sha256ToField(bytes.concat(baseLeaves[0], baseLeaves[1])); bytes32 rootTxsEffectsHash = Hash.sha256ToField(bytes.concat(mergeTxsEffectsHash, baseLeaves[2])); - bytes32 calculatedTxsEffectsHash = txsHelper.computeUnbalancedRoot(baseLeaves); + bytes32 calculatedTxsEffectsHash = merkleLibHelper.computeUnbalancedRoot(baseLeaves); assertEq(calculatedTxsEffectsHash, rootTxsEffectsHash); } @@ -109,13 +108,13 @@ contract UnbalancedMerkleTest is Test { // merge merge // / \ / \ // base base base base - function testComputeTxsEffectsHash5() public { + function testComputeTxsEffectsHash5() public view { // Generate some base leaves bytes32[] memory baseLeaves = new bytes32[](5); for (uint256 i = 0; i < 5; i++) { baseLeaves[i] = Hash.sha256ToField(abi.encodePacked(i)); } - (uint256 min, uint256 max) = txsHelper.computeMinMaxPathLength(5); + (uint256 min, uint256 max) = merkleLibHelper.computeMinMaxPathLength(5); assertEq(min, 1); assertEq(max, 3); bytes32 firstMergeTxsEffectsHash = @@ -126,7 +125,7 @@ contract UnbalancedMerkleTest is Test { Hash.sha256ToField(bytes.concat(firstMergeTxsEffectsHash, secondMergeTxsEffectsHash)); bytes32 rootTxsEffectsHash = Hash.sha256ToField(bytes.concat(thirdMergeTxsEffectsHash, baseLeaves[4])); - bytes32 calculatedTxsEffectsHash = txsHelper.computeUnbalancedRoot(baseLeaves); + bytes32 calculatedTxsEffectsHash = merkleLibHelper.computeUnbalancedRoot(baseLeaves); assertEq(calculatedTxsEffectsHash, rootTxsEffectsHash); } @@ -139,13 +138,13 @@ contract UnbalancedMerkleTest is Test { // merge1 merge2 base base // / \ / \ // base base base base - function testComputeTxsEffectsHash6() public { + function testComputeTxsEffectsHash6() public view { // Generate some base leaves bytes32[] memory baseLeaves = new bytes32[](6); for (uint256 i = 0; i < 6; i++) { baseLeaves[i] = Hash.sha256ToField(abi.encodePacked(i)); } - (uint256 min, uint256 max) = txsHelper.computeMinMaxPathLength(6); + (uint256 min, uint256 max) = merkleLibHelper.computeMinMaxPathLength(6); assertEq(min, 2); assertEq(max, 3); bytes32 firstMergeTxsEffectsHash = @@ -158,7 +157,7 @@ contract UnbalancedMerkleTest is Test { Hash.sha256ToField(bytes.concat(firstMergeTxsEffectsHash, secondMergeTxsEffectsHash)); bytes32 rootTxsEffectsHash = Hash.sha256ToField(bytes.concat(fourthMergeTxsEffectsHash, thirdMergeTxsEffectsHash)); - bytes32 calculatedTxsEffectsHash = txsHelper.computeUnbalancedRoot(baseLeaves); + bytes32 calculatedTxsEffectsHash = merkleLibHelper.computeUnbalancedRoot(baseLeaves); assertEq(calculatedTxsEffectsHash, rootTxsEffectsHash); } @@ -171,13 +170,13 @@ contract UnbalancedMerkleTest is Test { // merge1 merge2 merge4 base // / \ / \ / \ // base base base base base base - function testComputeTxsEffectsHash7() public { + function testComputeTxsEffectsHash7() public view { // Generate some base leaves bytes32[] memory baseLeaves = new bytes32[](7); for (uint256 i = 0; i < 6; i++) { baseLeaves[i] = Hash.sha256ToField(abi.encodePacked(i)); } - (uint256 min, uint256 max) = txsHelper.computeMinMaxPathLength(7); + (uint256 min, uint256 max) = merkleLibHelper.computeMinMaxPathLength(7); assertEq(min, 2); assertEq(max, 3); bytes32 firstMergeTxsEffectsHash = @@ -193,7 +192,7 @@ contract UnbalancedMerkleTest is Test { bytes32 rootTxsEffectsHash = Hash.sha256ToField(bytes.concat(thirdMergeTxsEffectsHash, fifthMergeTxsEffectsHash)); - bytes32 calculatedTxsEffectsHash = txsHelper.computeUnbalancedRoot(baseLeaves); + bytes32 calculatedTxsEffectsHash = merkleLibHelper.computeUnbalancedRoot(baseLeaves); assertEq(calculatedTxsEffectsHash, rootTxsEffectsHash); } } diff --git a/l1-contracts/test/merkle/helpers/MerkleLibHelper.sol b/l1-contracts/test/merkle/helpers/MerkleLibHelper.sol index a897896666b..02386122ae3 100644 --- a/l1-contracts/test/merkle/helpers/MerkleLibHelper.sol +++ b/l1-contracts/test/merkle/helpers/MerkleLibHelper.sol @@ -14,4 +14,12 @@ contract MerkleLibHelper { ) external pure { MerkleLib.verifyMembership(_path, _leaf, _index, _expectedRoot); } + + function computeMinMaxPathLength(uint256 _numTxs) external pure returns (uint256, uint256) { + return MerkleLib.computeMinMaxPathLength(_numTxs); + } + + function computeUnbalancedRoot(bytes32[] memory _leaves) external pure returns (bytes32) { + return MerkleLib.computeUnbalancedRoot(_leaves); + } } diff --git a/l1-contracts/test/sparta/Sparta.t.sol b/l1-contracts/test/sparta/Sparta.t.sol index 1d5642e60fa..989237e856a 100644 --- a/l1-contracts/test/sparta/Sparta.t.sol +++ b/l1-contracts/test/sparta/Sparta.t.sol @@ -17,7 +17,6 @@ import {Leonidas} from "../harnesses/Leonidas.sol"; import {NaiveMerkle} from "../merkle/Naive.sol"; import {MerkleTestUtil} from "../merkle/TestUtil.sol"; import {TestERC20} from "@aztec/mock/TestERC20.sol"; -import {TxsDecoderHelper} from "../decoders/helpers/TxsDecoderHelper.sol"; import {MessageHashUtils} from "@oz/utils/cryptography/MessageHashUtils.sol"; import {MockFeeJuicePortal} from "@aztec/mock/MockFeeJuicePortal.sol"; import {ProposeArgs, ProposeLib} from "@aztec/core/libraries/ProposeLib.sol"; @@ -45,7 +44,6 @@ contract SpartaTest is DecoderBase { Outbox internal outbox; Rollup internal rollup; MerkleTestUtil internal merkleTestUtil; - TxsDecoderHelper internal txsHelper; TestERC20 internal testERC20; RewardDistributor internal rewardDistributor; SignatureLib.Signature internal emptySignature; @@ -90,7 +88,6 @@ contract SpartaTest is DecoderBase { outbox = Outbox(address(rollup.OUTBOX())); merkleTestUtil = new MerkleTestUtil(); - txsHelper = new TxsDecoderHelper(); _; } @@ -166,7 +163,6 @@ contract SpartaTest is DecoderBase { bool _invalidaProposer ) internal { DecoderBase.Full memory full = load(_name); - bytes memory header = full.block.header; StructToAvoidDeepStacks memory ree; @@ -183,7 +179,7 @@ contract SpartaTest is DecoderBase { bytes32[] memory txHashes = new bytes32[](0); ProposeArgs memory args = ProposeArgs({ - header: header, + header: full.block.header, archive: full.block.archive, blockHash: bytes32(0), txHashes: txHashes @@ -215,6 +211,7 @@ contract SpartaTest is DecoderBase { // @todo Handle Leonidas__InsufficientAttestations case } + skipBlobCheck(address(rollup)); if (_expectRevert && _invalidaProposer) { address realProposer = ree.proposer; ree.proposer = address(uint160(uint256(keccak256(abi.encode("invalid", ree.proposer))))); @@ -225,16 +222,15 @@ contract SpartaTest is DecoderBase { ); ree.shouldRevert = true; } - vm.prank(ree.proposer); - rollup.propose(args, signatures, full.block.body); + rollup.propose(args, signatures, full.block.body, full.block.blobInputs); if (ree.shouldRevert) { return; } } else { SignatureLib.Signature[] memory signatures = new SignatureLib.Signature[](0); - rollup.propose(args, signatures, full.block.body); + rollup.propose(args, signatures, full.block.body, full.block.blobInputs); } assertEq(_expectRevert, ree.shouldRevert, "Does not match revert expectation"); diff --git a/noir-projects/noir-protocol-circuits/Nargo.template.toml b/noir-projects/noir-protocol-circuits/Nargo.template.toml index 349516d481e..553b27289cf 100644 --- a/noir-projects/noir-protocol-circuits/Nargo.template.toml +++ b/noir-projects/noir-protocol-circuits/Nargo.template.toml @@ -1,7 +1,7 @@ [workspace] members = [ "crates/types", -# "crates/blob", + "crates/blob", "crates/parity-base", "crates/parity-lib", "crates/parity-root", diff --git a/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml b/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml index 29bbc9ffce0..da49758490e 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml +++ b/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml @@ -1,8 +1,9 @@ [package] name = "blob" -type = "bin" +type = "lib" authors = [""] compiler_version = ">=0.30.0" [dependencies] -bigint = {tag = "v0.3.4", git = "https://github.com/noir-lang/noir-bignum" } +bigint = {tag = "v0.4.2", git = "https://github.com/noir-lang/noir-bignum" } +types = { path = "../types" } diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr new file mode 100644 index 00000000000..d7e85025df4 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr @@ -0,0 +1,671 @@ +// TODO(#9982): Replace unconstrained_config with config and import ROOTS - calculating ROOTS in unconstrained is insecure. +use crate::{ + blob_public_inputs::{BlobCommitment, BlobPublicInputs, BlockBlobPublicInputs}, + unconstrained_config::{ + compute_roots_of_unity, D, D_INV, F, FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB, + LOG_FIELDS_PER_BLOB, NOIR_FIELDS_PER_BLOB, + }, +}; + +use bigint::BigNum; +// Fixed hash method: +use types::hash::poseidon2_hash_subarray; +// Variable hash method: +// use types::hash::poseidon2_cheaper_variable_hash; +use types::{ + abis::sponge_blob::SpongeBlob, + constants::{BLOBS_PER_BLOCK, FIELDS_PER_BLOB}, + utils::arrays::array_splice, +}; + +global LIMB_MAX = 0x1000000000000000000000000000000; // 2^120 +global TWO_POW_56: u64 = 0x100000000000000; // u64 to aid integer only modulo in __field_to_bignum_limbs +global TWO_POW_64: Field = 0x10000000000000000; + +unconstrained fn __batch_invert_impl(mut x: [F; N]) -> [F; N] { + let mut accumulator: F = BigNum::one(); + + let mut temporaries: [F] = &[]; + for i in 0..x.len() { + temporaries = temporaries.push_back(accumulator); + if (x[i].__is_zero() == false) { + accumulator = accumulator.__mul(x[i]); + } + } + + accumulator = accumulator.__invmod(); + let mut T0: F = BigNum::new(); + for i in 0..x.len() { + let idx = x.len() - 1 - i; + if (x[idx].__is_zero() == false) { + T0 = accumulator.__mul(temporaries[idx]); + accumulator = accumulator.__mul(x[idx]); + x[idx] = T0; + } + } + x +} + +// Taken from https://github.com/iAmMichaelConnor/blob-lib/blob/main/noir-circuits/blob/src/main.nr +unconstrained fn __field_to_bignum_limbs(x: Field) -> [Field; 3] { + // Here we're taking advantage of truncating 64 bit limbs from the input field + // and then subtracting them from the input such that the field division is equivalent to integer division. + let low_120_lower_64 = (x as u64) as Field; + let x_shifted_64 = (x - low_120_lower_64) / TWO_POW_64; + let low_120_upper_56 = ((x_shifted_64 as u64) % TWO_POW_56) as Field; + let low_120 = low_120_lower_64 + TWO_POW_64 * low_120_upper_56; + + let x_shifted_120 = (x_shifted_64 - low_120_upper_56) / (TWO_POW_56 as Field); + + let mid_120_lower_64 = (x_shifted_120 as u64) as Field; + let x_shifted_184 = (x_shifted_120 - mid_120_lower_64) / TWO_POW_64; + let mid_120_upper_56 = ((x_shifted_184 as u64) % TWO_POW_56) as Field; + let mid_120 = mid_120_lower_64 + TWO_POW_64 * mid_120_upper_56; + + let x_shifted_240 = (x_shifted_184 - mid_120_upper_56) / (TWO_POW_56 as Field); + + let hi_120_lower_64 = (x_shifted_240 as u64) as Field; + // We don't need to go further, as we've reached 304 bits, and a Field is 254 bits. + let hi_120 = hi_120_lower_64; + + [low_120, mid_120, hi_120] +} + +// Only works for bignums with modulus larger than the BN Fr size (which is true +// for the bls12-381 Fr field). +fn field_to_bignum(x: Field) -> F { + let __x_limbs = unsafe { __field_to_bignum_limbs(x) }; + + let mut check = __x_limbs[3 - 1]; + for i in 1..3 { + check *= LIMB_MAX; + check += __x_limbs[3 - i - 1]; + } + assert(check == x); + + BigNum { limbs: __x_limbs } +} + +fn convert_blob_fields(blob_as_fields: [Field; FIELDS_PER_BLOB]) -> [F; FIELDS_PER_BLOB] { + let mut blob: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; + for i in 0..FIELDS_PER_BLOB { + blob[i] = field_to_bignum(blob_as_fields[i]); + } + blob +} + +pub fn check_block_blob_sponge( + blobs_as_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], + mut sponge_blob: SpongeBlob, +) -> Field { + // Check that we haven't overfilled the blobs + assert( + sponge_blob.expected_fields <= FIELDS_PER_BLOB * BLOBS_PER_BLOCK, + "Attempted to overfill blobs", + ); + // Check that the blob is full + assert( + sponge_blob.expected_fields == sponge_blob.fields, + "Incorrect number of tx effects added to blob", + ); + let sponge_hash = sponge_blob.squeeze(); + let hash = poseidon2_hash_subarray(blobs_as_fields, sponge_blob.fields); + assert(hash == sponge_hash, "Mismatched hashed tx effects"); + + sponge_hash +} + +fn compute_challenge(hashed_blobs_fields: Field, kzg_commitment: BlobCommitment) -> Field { + let preimage = [hashed_blobs_fields, kzg_commitment.inner[0], kzg_commitment.inner[1]]; + let challenge = std::hash::poseidon2::Poseidon2::hash(preimage, 3); + challenge +} + +// ~500k constraints. 30 MINUTES TO COMPILE (due to all the brillig)! +// +// Note: the kzg_commitment is technically a BLS12-381 point in (Fq, Fq), but +// we haven't implemented Fq; only Fr, and we don't actually need to operate on it; +// we just need the bits of data. So we've simply encoded it as fitting inside a +// [Field; 2], since two 254-bit fields more-than covers 381+1=382 bits. +// See yarn-project/foundation/src/blob/index.ts -> commitmentToFields() for encoding +fn evaluate_blob( + blob_as_fields: [Field; FIELDS_PER_BLOB], + kzg_commitment: BlobCommitment, + hashed_blobs_fields: Field, +) -> BlobPublicInputs { + let challenge_z: Field = compute_challenge(hashed_blobs_fields, kzg_commitment); + let challenge_z_as_bignum: F = field_to_bignum(challenge_z); + let blob = convert_blob_fields(blob_as_fields); + + let y: F = barycentric_evaluate_blob_at_z(challenge_z_as_bignum, blob); + // TODO(Miranda): Since we are verifying a root proof, the below doesn't apply. We should be hashing ALL root public inputs, including the blob ones. + // In future, when we do hash PIs, the below will apply. + // TODO: this return data needs to be TIGHTLY PACKED into bytes. + // TODO: then those bytes need to be sha256-hashed, to produce a single value that can be sent to ethereum for cheap snark verification. + // On ethereum, the bytes will be sent along with the sha256-hash of the bytes. The bytes will be used in the point evaluation precompile. The sha256-hash will form a part of the public inputs of the zk-snark proof. + BlobPublicInputs { z: challenge_z, y, kzg_commitment } +} + +// Evaluates each blob required for a block +pub fn evaluate_blobs( + blobs_as_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], + kzg_commitments: [BlobCommitment; BLOBS_PER_BLOCK], + mut sponge_blob: SpongeBlob, +) -> BlockBlobPublicInputs { + // Note that with multiple blobs per block, each blob uses the same hashed_blobs_fields in: + // challenge_z = H(hashed_blobs_fields, kzg_commitment[0], kzg_commitment[1]) + // This is ok, because each commitment is unique to the blob, and we need hashed_blobs_fields to encompass + // all fields in the blob, which it does. + let hashed_blobs_fields = check_block_blob_sponge(blobs_as_fields, sponge_blob); + let mut result = BlockBlobPublicInputs::empty(); + for i in 0..BLOBS_PER_BLOCK { + let single_blob_fields = array_splice(blobs_as_fields, i * FIELDS_PER_BLOB); + result.inner[i] = + evaluate_blob(single_blob_fields, kzg_commitments[i], hashed_blobs_fields); + if (result.inner[i].is_zero()) & (single_blob_fields[0] == 0) { + // We use empty PIs for empty blobs, to make it simpler to verify on L1. + // Since our fields come from the base rollup, we know they are tightly packed + // and should contain no 0 values among valid values => single_blob_fields[0] == 0. + result.inner[i] = BlobPublicInputs::empty(); + } + } + result +} + +/** + * ___d-1 + * z^d - 1 \ omega^i + * p(z) = --------- . / y_i . --------- + * d /____ z - omega^i + * i=0 + * + * p(z) = factor . sum( y_i . num / denom ) + * + * + * where d = 4096 + * + * Precompute: + * - The d roots of unity omega^i (plus maybe their negatives for z - omega^i computations). + * - (1 / d) + * + * @param z + * @param ys - the many y_i's of the blob. + * + * @return y = p(z) + */ +fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { + // TODO(#9982): Delete below and go back to using config.nr - calculating ROOTS in unconstrained is insecure. + let ROOTS = unsafe { compute_roots_of_unity() }; + // z ^ D: + let mut t1 = z.__mul(z); + + BigNum::evaluate_quadratic_expression([[z]], [[false]], [[z]], [[false]], [t1], [true]); + + let mut t2: F = BigNum::new(); + for _i in 0..LOG_FIELDS_PER_BLOB - 1 { + t2 = t1.__mul(t1); + + // GRATUITOUS USAGE OF as_witness, LIKE THROWING DARTS AT A DARTBOARD AND HOPING THIS HELPS + std::as_witness(t2.limbs[0]); + std::as_witness(t2.limbs[1]); + std::as_witness(t2.limbs[2]); + + BigNum::evaluate_quadratic_expression([[t1]], [[false]], [[t1]], [[false]], [t2], [true]); + + t1 = t2; + std::as_witness(t1.limbs[0]); + std::as_witness(t1.limbs[1]); + std::as_witness(t1.limbs[2]); + } + + let z_pow_d = t1; + + // factor: + let one: F = BigNum::one(); + + t1 = z_pow_d.__sub(one); + std::as_witness(t1.limbs[0]); + std::as_witness(t1.limbs[1]); + std::as_witness(t1.limbs[2]); + + let factor = t1.__mul(D_INV); + + // (z_pow_d - one) * (D_INV) - factor = 0 + // z_pow_d * D_INV - D_INV - factor = 0 + BigNum::evaluate_quadratic_expression( + [[z_pow_d]], + [[false]], + [[D_INV]], + [[false]], + [factor, D_INV], + [true, true], + ); + + // This version doesn't work: + // BigNum::evaluate_quadratic_expression( + // [[z_pow_d, one]], + // [[false, true]], + // [[D_INV]], + // [[false]], + // [factor], + // [true] + // ); + // sum: + let mut sum: F = BigNum::new(); + + // Making a call to this function causes a "stack too deep" error, so I've put the body of that function here, instead: + // let fracs = __compute_fracs(z, ys); // { y_i / (z - omega^i) } + // Note: it's more efficient (saving 30k constraints) to compute: + // ___d-1 + // \ / y_i \ + // / | --------- | . omega^i + // /____ \ z - omega^i / + // i=0 + // ^^^^^^^^^ + // frac + // + // ... than to compute: + // + // ___d-1 + // \ / omega^i \ + // / y_i . | --------- | + // /____ \ z - omega^i / + // i=0 + // + // perhaps because all the omega^i terms are constant witnesses? + //***************************************************************** + // This section is only needed because `__compute_fracs` isn't working (stack too deep error). + let mut fracs: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; // y_i / (z - omega^i), for all i + let mut denoms = [BigNum::new(); FIELDS_PER_BLOB]; + for i in 0..FIELDS_PER_BLOB { + denoms[i] = z.__sub(ROOTS[i]); // (z - omega^i) + } + + // If you're seeing a `bug` warning for this line, I think it's fine. + // Ideally, we'd be using `__compute_fracs`, anyway, but we're getting a "stack too deep" error. + let inv_denoms = __batch_invert_impl(denoms); // 1 / (z - omega^i), for all i + for i in 0..FIELDS_PER_BLOB { + let num = ys[i]; + let inv_denom = inv_denoms[i]; // 1 / (z - omega^i) + let frac = num.__mul(inv_denom); // y_i * (1 / (z - omega^i)) + fracs[i] = frac; // y_i / (z - omega^i) + std::as_witness(fracs[i].limbs[0]); + std::as_witness(fracs[i].limbs[1]); + std::as_witness(fracs[i].limbs[2]); + + //End of section that is only needed because `__compute_fracs` isn't working + //***************************************************************** + // frac <-- ys[i] / (z + neg_roots[i]) + // frac * (z + neg_roots[i]) - ys[i] = 0 + BigNum::evaluate_quadratic_expression( + [[fracs[i]]], + [[false]], + [[z, ROOTS[i].neg()]], + [[false, false]], + [ys[i]], + [true], + ); + } + + // OK so...we can add multiple product terms into a sum...but I am not sure how many! + // we are computing 254 * 254 bit products and we need to ensure each product limb doesn't overflow + // each limb is 120 bits => 120 * 120 = 240 bits. + // however when computing a mul we add up to 5 product terms into a single field element => 243 bits (ish) + // when we do a modular reduction we validate that a field element >> 120 bits is less than 2^{126} which implies we have 246 bits to play with + // which implies...we can accomodate up to EIGHT additions of product terms before we risk overflowing + // (this is really messy! I never considered the case of giant linear sequences of products) + let mut sum: F = BigNum::new(); + + // Seeking: + // ___d-1 + // \ omega^i + // sum = / y_i . --------- + // /____ z - omega^i + // i=0 + let NUM_PARTIAL_SUMS = FIELDS_PER_BLOB / 8; + for i in 0..NUM_PARTIAL_SUMS { + let mut partial_sum: F = BigNum::new(); + let mut lhs: [F; 8] = [BigNum::new(); 8]; + let mut rhs = lhs; + + // Seeking: + // ___i*8 + 7 + // \ omega^k + // partial_sum = / y_k . --------- + // /____ z - omega^k + // k=i*8 + 0 + for j in 0..8 { + let k = i * 8 + j; + lhs[j] = ROOTS[k]; // omega^k + rhs[j] = fracs[k]; // y_k / (z - omega^k) + std::as_witness(lhs[j].limbs[0]); + std::as_witness(lhs[j].limbs[1]); + std::as_witness(lhs[j].limbs[2]); + std::as_witness(rhs[j].limbs[0]); + std::as_witness(rhs[j].limbs[1]); + std::as_witness(rhs[j].limbs[2]); + + // y_k * ( omega^k / (z - omega^k) ) + let summand = ROOTS[k].__mul(fracs[k]); + + // partial_sum + ( y_k * ( omega^k / (z - omega^k) ) -> partial_sum + partial_sum = partial_sum.__add(summand); + std::as_witness(partial_sum.limbs[0]); + std::as_witness(partial_sum.limbs[1]); + std::as_witness(partial_sum.limbs[2]); + } + + // Seeking: + // ___i*8 - 1 ___i*8 + 7 + // \ omega^i \ / y_k \ + // sum_out = / y_i . --------- + / omega^k . | --------- | + // /____ z - omega^i /____ \ z - omega^k / + // 0 k = i*8 + // ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + // sum partial_sum + // + // ... that is: + // + // ___i*8 - 1 ___ 7 + // \ omega^i \ + // sum_out = / y_i . --------- + / lhs[j] . rhs[j] + // /____ z - omega^i /____ + // 0 j = 0 + // ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ + // sum partial_sum + // + let mut sum_out = sum.__add(partial_sum); + + std::as_witness(sum_out.limbs[0]); + std::as_witness(sum_out.limbs[1]); + std::as_witness(sum_out.limbs[2]); + + // sum_out <- sum + (lhs[0] * rhs[0] + ... + lhs[7] * rhs[7]) + // => (lhs[0] * rhs[0] + ... + lhs[7] * rhs[7]) + sum - sum_out == 0 + BigNum::evaluate_quadratic_expression( + [[lhs[0]], [lhs[1]], [lhs[2]], [lhs[3]], [lhs[4]], [lhs[5]], [lhs[6]], [lhs[7]]], + [[false], [false], [false], [false], [false], [false], [false], [false]], + [[rhs[0]], [rhs[1]], [rhs[2]], [rhs[3]], [rhs[4]], [rhs[5]], [rhs[6]], [rhs[7]]], + [[false], [false], [false], [false], [false], [false], [false], [false]], + [sum, sum_out], + [false, true], + ); + + sum = sum_out; + std::as_witness(sum.limbs[0]); + std::as_witness(sum.limbs[1]); + std::as_witness(sum.limbs[2]); + } + + // y: + let y = factor.__mul(sum); + + // y <- factor * sum + // => factor * sum - y == 0 + BigNum::evaluate_quadratic_expression([[factor]], [[false]], [[sum]], [[false]], [y], [true]); + + y +} + +mod tests { + // TODO(#9982): Replace unconstrained_config with config and import ROOTS - calculating ROOTS in unconstrained is insecure. + use crate::{ + blob::{ + barycentric_evaluate_blob_at_z, check_block_blob_sponge, evaluate_blob, evaluate_blobs, + field_to_bignum, + }, + blob_public_inputs::BlobCommitment, + unconstrained_config::{ + D, D_INV, F, FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB, LOG_FIELDS_PER_BLOB, + NOIR_FIELDS_PER_BLOB, + }, + }; + use bigint::{BigNum, fields::bls12_381Fr::BLS12_381_Fr_Params}; + use types::{ + abis::sponge_blob::SpongeBlob, + constants::{BLOBS_PER_BLOCK, FIELDS_PER_BLOB}, + tests::{fixture_builder::FixtureBuilder, utils::pad_end}, + }; + + // Helper to return (z^d - 1)/d (unsafe - test only) + fn z_d_helper(challenge_z: F) -> F { + let mut t1 = challenge_z.__mul(challenge_z); + let mut t2: F = BigNum::new(); + for _i in 0..LOG_FIELDS_PER_BLOB - 1 { + t2 = t1.__mul(t1); + t1 = t2; + } + + let z_pow_d = t1; + + let one: F = BigNum::one(); + + t1 = z_pow_d.__sub(one); + let factor = t1.__mul(D_INV); + factor + } + + #[test] + unconstrained fn test_one_note() { + let mut tx_data = FixtureBuilder::new(); + tx_data.add_new_note_hash(1); + let mut blob: [Field; FIELDS_PER_BLOB] = [0; FIELDS_PER_BLOB]; + let blob_fields = tx_data.to_combined_accumulated_data().serialize(); + for i in 0..blob_fields.len() { + blob[i] = blob_fields[i]; + } + let mut sponge_blob = SpongeBlob::new(blob_fields.len()); + sponge_blob.absorb(blob_fields, blob_fields.len()); + + let kzg_commitment_in = BlobCommitment { inner: [1, 2] }; // this is made-up nonsense. + let padded_blob_fields = pad_end(blob, 0); + let hashed_blob = check_block_blob_sponge(padded_blob_fields, sponge_blob); + let output = evaluate_blob(blob, kzg_commitment_in, hashed_blob); + let challenge_z = field_to_bignum(output.z); + let y = output.y; + // Our blob is all 0s, apart from one commitment of value 1 at position 0 + // It's in eval form => our barycentric formula to find p(z) becomes: + // + // z^d - 1 omega^0 z^d - 1 1 + // p(z) = --------- . note . --------- = --------- . 1 . --------- + // d z - omega^0 d z - 1 + // + // => + // We check that: + //* z^d - 1 + //* p(z).(z - 1) = --------- + //* d + // + let rhs = z_d_helper(challenge_z); + let z_minus_1 = unsafe { challenge_z.__sub(BigNum::one()) }; + let lhs = y.__mul(z_minus_1); + assert_eq(lhs, rhs); + } + + #[test] + unconstrained fn test_base() { + let mut tx_data = FixtureBuilder::new(); + // Add some random bits of state + tx_data.append_note_hashes_with_logs(50); + tx_data.set_first_nullifier(); + tx_data.append_nullifiers(50); + tx_data.append_l2_to_l1_msgs(5); + tx_data.append_unencrypted_log_hashes(5); + let mut blob: [Field; FIELDS_PER_BLOB] = [0; FIELDS_PER_BLOB]; + let blob_fields = tx_data.to_combined_accumulated_data().serialize(); + for i in 0..blob_fields.len() { + blob[i] = blob_fields[i]; + } + let mut sponge_blob = SpongeBlob::new(blob_fields.len()); + sponge_blob.absorb(blob_fields, blob_fields.len()); + + let kzg_commitment_in = BlobCommitment { inner: [1, 2] }; // this is made-up nonsense. + let padded_blob_fields = pad_end(blob, 0); + let hashed_blob = check_block_blob_sponge(padded_blob_fields, sponge_blob); + let output = evaluate_blob(blob, kzg_commitment_in, hashed_blob); + let expected_z = std::hash::poseidon2::Poseidon2::hash( + [sponge_blob.squeeze(), kzg_commitment_in.inner[0], kzg_commitment_in.inner[1]], + 3, + ); + assert(expected_z == output.z); + } + + // All hardcoded values in this test are taken from yarn-project/foundation/src/blob/blob.test.ts -> 'should evaluate a blob of 400 items' + #[test] + unconstrained fn test_400() { + let mut blob: [Field; FIELDS_PER_BLOB] = [0; FIELDS_PER_BLOB]; + for i in 0..400 { + blob[i] = 3; + } + let mut sponge_blob = SpongeBlob::new(400); + sponge_blob.absorb(blob, 400); + + let kzg_commitment_in = BlobCommitment { + inner: [ + 0x00b2803d5fe972914ba3616033e2748bbaa6dbcddefc3721a54895a7a45e7750, + 0x0000000000000000000000000000004dd1a971c7e8d8292be943d05bccebcfea, + ], + }; + + let padded_blob_fields = pad_end(blob, 0); + let hashed_blob = check_block_blob_sponge(padded_blob_fields, sponge_blob); + let output = evaluate_blob(blob, kzg_commitment_in, hashed_blob); + + // y is a BLS field with value 0x212c4f0c0ee5e7dd037110686a4639d191dde7b57ab99b51e4b06e7d827b6c4c + let expected_y: F = BigNum { + limbs: [0xdde7b57ab99b51e4b06e7d827b6c4c, 0x4f0c0ee5e7dd037110686a4639d191, 0x212c], + }; + assert(expected_y == output.y); + } + + // All hardcoded values in this test are taken from yarn-project/foundation/src/blob/blob.test.ts -> 'should evaluate full blobs' + #[test] + unconstrained fn test_full_blobs() { + let mut blob: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK] = + [0; FIELDS_PER_BLOB * BLOBS_PER_BLOCK]; + for j in 0..BLOBS_PER_BLOCK { + for i in 0..FIELDS_PER_BLOB { + blob[j * FIELDS_PER_BLOB + i] = i as Field + 2; + } + } + + let mut sponge_blob = SpongeBlob::new(FIELDS_PER_BLOB * BLOBS_PER_BLOCK); + sponge_blob.absorb(blob, FIELDS_PER_BLOB * BLOBS_PER_BLOCK); + + let kzg_commitment_in = BlobCommitment { + inner: [ + 0x00ac771dea41e29fc2b7016c32731602c0812548ba0f491864a4e03fdb94b8d3, + 0x000000000000000000000000000000d195faad1967cdf005acf73088b0e8474a, + ], + }; + + let output = evaluate_blobs(blob, [kzg_commitment_in; BLOBS_PER_BLOCK], sponge_blob); + + // y is a BLS field with value 0x52fd4e272015a79f3889cc9ab1d84bee4326de7d8ced52612ecc9ec137bd38ee + let expected_y: F = BigNum { + limbs: [0x26de7d8ced52612ecc9ec137bd38ee, 0x4e272015a79f3889cc9ab1d84bee43, 0x52fd], + }; + for j in 0..BLOBS_PER_BLOCK { + assert(expected_y == output.inner[j].y); + } + } + + #[test(should_fail_with = "Found non-zero field after breakpoint")] + unconstrained fn test_no_extra_blob_fields() { + let mut blob: [Field; FIELDS_PER_BLOB] = [0; FIELDS_PER_BLOB]; + // Fill fields with 50 inputs... + for i in 0..50 { + blob[i] = 3; + } + // ...but the rollup's sponge is only expecting 45... + let mut sponge_blob = SpongeBlob::new(45); + sponge_blob.absorb(blob, 45); + + // ...so the below should fail as it detects we are adding effects which did not come from the rollup. + let padded_blob_fields = pad_end(blob, 0); + let _ = check_block_blob_sponge(padded_blob_fields, sponge_blob); + } + + #[test(should_fail_with = "Incorrect number of tx effects added to blob")] + unconstrained fn test_absorbed_too_few_blob_fields() { + let mut blob: [Field; FIELDS_PER_BLOB] = [0; FIELDS_PER_BLOB]; + // Fill fields with 50 inputs... + for i in 0..50 { + blob[i] = 3; + } + // ...but the rollup's sponge is expecting 100... + let mut sponge_blob = SpongeBlob::new(100); + sponge_blob.absorb(blob, 50); + + // ...so the below should fail as it detects we have not added all the tx effects. + let padded_blob_fields = pad_end(blob, 0); + let _ = check_block_blob_sponge(padded_blob_fields, sponge_blob); + } + + #[test] + unconstrained fn test_empty_blob() { + let mut blob: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK] = + [0; FIELDS_PER_BLOB * BLOBS_PER_BLOCK]; + let mut sponge_blob = SpongeBlob::new(0); + // The below should not throw + let _ = check_block_blob_sponge(blob, sponge_blob); + } + + #[test] + unconstrained fn test_barycentric() { + let z: F = BigNum { limbs: [2, 0, 0] }; + + // many y's form a blob: + let mut ys: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; + + ys[0] = BigNum { limbs: [0x1234, 0, 0] }; + ys[1] = BigNum { limbs: [0xabcd, 0, 0] }; + ys[2] = BigNum { limbs: [0x69, 0, 0] }; + + // evaluate the blob at z = 2 to yield y: + let y = barycentric_evaluate_blob_at_z(z, ys); + + let mut expected_y: [Field; 3] = [0; 3]; + if (FIELDS_PER_BLOB == 4096) { + // Computed with the eth consensus specs py lib + expected_y = + [0x0c62e352a428e8e9842eadc1c106bd, 0x902c5b4968d755b6f49c0231e15af8, 0x00049a]; + // Also computed with cKzg, in the typescript tests: + // 0x049a902c5b4968d755b6f49c0231e15af80c62e352a428e8e9842eadc1c106bd + } + if (FIELDS_PER_BLOB == 8) { + // Computed with the eth consensus specs py lib (after hacking it to cope with blobs of size 8 instead of 4096): + expected_y = + [0xb04cdea4304000053abffffffb203a, 0x0000000002e30785c8afa4496f8e38, 0x000000]; + } + assert(y.limbs == expected_y); + } + + // Helper function used to populate the hard-coded double_modulus value in the bls12381Fr.nr file in the bignum library. + unconstrained fn compute_double_modulus() -> [Field; 3] { + let two_p = [0x7b4805fffcb7fdfffffffe00000002, 0x4ea6533afa906673b0101343b00aa7, 0x00e7db]; + let NUM_LIMBS = 3; // must be >= 3 + let two_pow_120 = 2.pow_32(120); + let mut double_modulus: [Field; 3] = [0; 3]; + + double_modulus[0] = two_p[0] + two_pow_120; + for i in 1..NUM_LIMBS - 1 { + double_modulus[i] = two_p[i] + two_pow_120 - 1; + } + double_modulus[NUM_LIMBS - 1] = two_p[NUM_LIMBS - 1] - 1; + double_modulus + } + + #[test] + unconstrained fn test_compute_double_modulus() { + let double_modulus = BLS12_381_Fr_Params::get_params().double_modulus; + assert_eq(double_modulus, compute_double_modulus()); + } + + #[test] + unconstrained fn test_compute_d_inv() { + let d_inversed = D.__invmod(); + assert_eq(d_inversed, D_INV); + } +} + diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr new file mode 100644 index 00000000000..ce3c00068c6 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr @@ -0,0 +1,134 @@ +use crate::unconstrained_config::F; +// TODO(#9982): Replace unconstrained_config with config. +use bigint::BigNum; +use types::{ + constants::{BLOB_PUBLIC_INPUTS, BLOBS_PER_BLOCK}, + traits::{Deserialize, Empty, Serialize}, + utils::reader::Reader, +}; + +// NB: This only exists because a nested array of [[Field; 2]; N] did not build with earthly, but was fine otherwise +// For blobs, we use the compressed 48 byte BLS12 commitment to compute the challenge. We never need to operate on it, +// so it's encoded as 2 fields. The first is the first 31 bytes, and the second is the next 17 bytes. +pub struct BlobCommitment { + pub inner: [Field; 2], +} + +impl Eq for BlobCommitment { + fn eq(self, other: Self) -> bool { + self.inner.eq(other.inner) + } +} + +impl Empty for BlobCommitment { + fn empty() -> Self { + Self { inner: [0; 2] } + } +} + +pub struct BlobPublicInputs { + pub z: Field, + pub y: F, + pub kzg_commitment: BlobCommitment, +} + +impl BlobPublicInputs { + fn accumulate(self, other: Self) -> Self { + // TODO: When we verify root, rather than block root, on L1 we need to accumulate many blob openings + // @Mike this may be where we calculate z_acc, y_acc, C_acc, etc. + // WARNING: unimplemented, below is nonsense to get noir to compile + Self { z: self.z + other.z, y: self.y.add(other.y), kzg_commitment: self.kzg_commitment } + } + + // This checks whether the blob public inputs represent data of all 0s + // This is not equivalent to being empty, since the challenge point z is a hash and won't have 0 value. + fn is_zero(self) -> bool { + // Note: there is no constrained is_zero in bignum + (self.y == BigNum { limbs: [0, 0, 0] }) & (self.kzg_commitment.inner == [0, 0]) + } +} + +impl Empty for BlobPublicInputs { + fn empty() -> Self { + Self { z: 0, y: BigNum::new(), kzg_commitment: BlobCommitment::empty() } + } +} + +impl Serialize for BlobPublicInputs { + fn serialize(self) -> [Field; BLOB_PUBLIC_INPUTS] { + [ + self.z, + self.y.limbs[0], + self.y.limbs[1], + self.y.limbs[2], + self.kzg_commitment.inner[0], + self.kzg_commitment.inner[1], + ] + } +} + +impl Deserialize for BlobPublicInputs { + fn deserialize(fields: [Field; BLOB_PUBLIC_INPUTS]) -> Self { + Self { + z: fields[0], + y: BigNum { limbs: [fields[1], fields[2], fields[3]] }, + kzg_commitment: BlobCommitment { inner: [fields[4], fields[5]] }, + } + } +} + +impl Eq for BlobPublicInputs { + fn eq(self, other: Self) -> bool { + (self.z == other.z) & (self.y.eq(other.y)) & (self.kzg_commitment.eq(other.kzg_commitment)) + } +} + +// NB: it is much cleaner throughout the protocol circuits to define this struct rather than use a nested array. +// Once we accumulate blob inputs, it should be removed, and we just use BlobPublicInputs::accumulate everywhere. +pub struct BlockBlobPublicInputs { + pub inner: [BlobPublicInputs; BLOBS_PER_BLOCK], +} + +impl Empty for BlockBlobPublicInputs { + fn empty() -> Self { + Self { inner: [BlobPublicInputs::empty(); BLOBS_PER_BLOCK] } + } +} + +impl Serialize for BlockBlobPublicInputs { + fn serialize(self) -> [Field; BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK] { + let mut fields: BoundedVec = BoundedVec::new(); + for i in 0..BLOBS_PER_BLOCK { + fields.extend_from_array(self.inner[i].serialize()); + } + fields.storage() + } +} + +impl Deserialize for BlockBlobPublicInputs { + fn deserialize(fields: [Field; BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK]) -> Self { + let mut reader = Reader::new(fields); + let item = Self { + inner: reader.read_struct_array( + BlobPublicInputs::deserialize, + [BlobPublicInputs::empty(); BLOBS_PER_BLOCK], + ), + }; + reader.finish(); + item + } +} + +impl Eq for BlockBlobPublicInputs { + fn eq(self, other: Self) -> bool { + self.inner.eq(other.inner) + } +} + +#[test] +fn serialization_of_empty() { + let item = BlockBlobPublicInputs::empty(); + let serialized = item.serialize(); + let deserialized = BlockBlobPublicInputs::deserialize(serialized); + assert(item.eq(deserialized)); +} diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr index 8b3fbac3339..9fd051426c0 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr @@ -1,4110 +1,12305 @@ -use dep::bigint::{BigNum, fields::bls12_381Fr::BLS12_381_Fr_Params}; +use bigint::{BigNum, fields::bls12_381Fr::BLS12_381_Fr_Params}; +use types::constants::FIELDS_PER_BLOB; -type F = BigNum<3, BLS12_381_Fr_Params>; +type F = BigNum<3, 255, BLS12_381_Fr_Params>; + +// TODO(#9982): Delete unconstrained_config.nr and go back to using this file - calculating ROOTS in unconstrained is insecure. -global FIELDS_PER_BLOB: u32 = 4096; global LOG_FIELDS_PER_BLOB: u32 = 12; global EXTRA_FIELDS_PER_BLOB: u32 = 16; // 16 = floor(4096 FIELDS_PER_BLOB / 254 noir_field_bits), wasting only 32 bits. global NOIR_FIELDS_PER_BLOB: u32 = FIELDS_PER_BLOB + EXTRA_FIELDS_PER_BLOB; global FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB: u32 = EXTRA_FIELDS_PER_BLOB * 254; // EXTRA_FIELDS_PER_BLOB * 254 = 4064. So the first 4064 bls Fr fields in the blob will carry an extra bit in their 255th bit position, that will be used to reconstitute 16 extra fields. global D: F = BigNum { limbs: [4096, 0, 0] }; -global D_INV = BigNum { limbs: [0x686828bfce5c19400fffff00100001, 0x6878b46ae3705eb6a46a89213de7d3, 0x73e6] }; +global D_INV: F = + BigNum { limbs: [0x686828bfce5c19400fffff00100001, 0x6878b46ae3705eb6a46a89213de7d3, 0x73e6] }; global ROOTS: [F; FIELDS_PER_BLOB] = [ - BigNum { limbs: [ 0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000 ] } , - BigNum { limbs: [ 0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed ] } , - BigNum { limbs: [ 0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000 ] } , - BigNum { limbs: [ 0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed ] } , - BigNum { limbs: [ 0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457 ] } , - BigNum { limbs: [ 0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96 ] } , - BigNum { limbs: [ 0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333 ] } , - BigNum { limbs: [ 0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9 ] } , - BigNum { limbs: [ 0xbeb312f20b6f7653ea61d87742bcce, 0xce9140267af9dd1c0af834cec32c17, 0x0020b1 ] } , - BigNum { limbs: [ 0xfef0f00df2ec88ac159e2688bd4333, 0xd8c1e977024e561dcd0fd4d314d93b, 0x00533b ] } , - BigNum { limbs: [ 0xf4e672ebc1e1bb95df4b360411fe73, 0x596e753e4fcc6e92a9c460afca4a1e, 0x004f2c ] } , - BigNum { limbs: [ 0xc8bd90143c7a436a20b4c8fbee018e, 0x4de4b45f2d7bc4a72e43a8f20dbb34, 0x0024c1 ] } , - BigNum { limbs: [ 0x7a6b6cfb0faca4807b811a823f728d, 0x919ec91f38ac5ccd4631f16edba496, 0x001edc ] } , - BigNum { limbs: [ 0x43389604eeaf5a7f847ee47dc08d74, 0x15b4607e449bd66c91d61832fc60bd, 0x005511 ] } , - BigNum { limbs: [ 0xbc96af334c36bca1abb31fb37786b9, 0xf2dd7e0c63fccabf643eda8951f257, 0x0038c7 ] } , - BigNum { limbs: [ 0x010d53ccb225425e544cdf4c887948, 0xb475ab91194b687a73c92f188612fc, 0x003b25 ] } , - BigNum { limbs: [ 0x6e88fb4c38fb8a360c60997369df4e, 0x903a157988bab4bcd40e22f55448bf, 0x0050e0 ] } , - BigNum { limbs: [ 0x4f1b07b3c56074c9f39f658c9620b3, 0x17191423f48d7e7d03f9e6ac83bc94, 0x00230d ] } , - BigNum { limbs: [ 0xbc7f62d13a6e1c3ec50c9031a36ca3, 0xc5837cb5fca206050b5832d1099726, 0x0065f6 ] } , - BigNum { limbs: [ 0x0124a02ec3ede2c13af36ece5c935e, 0xe1cface780a62d34ccafd6d0ce6e2d, 0x000df6 ] } , - BigNum { limbs: [ 0x3dc46688b5e11768cc0c58459f155b, 0x0457c83a7d9c5aea51f540eb0c0496, 0x002c7e ] } , - BigNum { limbs: [ 0x7fdf9c77487ae79733f3a6ba60eaa6, 0xa2fb6162ffabd84f8612c8b6cc00bd, 0x00476f ] } , - BigNum { limbs: [ 0xe943612401899720d4ed194fccfeb9, 0xda18a9d30564a8f0cfd2438f018c01, 0x005303 ] } , - BigNum { limbs: [ 0xd460a1dbfcd267df2b12e5b0330148, 0xcd3a7fca77e38a490835c612d67951, 0x0020e9 ] } , - BigNum { limbs: [ 0x317ae6451bb89de69679532ae1234c, 0x237e58fcced486fa69d8e4e48506e3, 0x000461 ] } , - BigNum { limbs: [ 0x8c291cbae2a361196986abd51edcb5, 0x83d4d0a0ae73ac3f6e2f24bd52fe70, 0x006f8c ] } , - BigNum { limbs: [ 0x593d6ff6dab086ee5bcecc4e7773cb, 0xb16caf96816fa3a95d2d4016e2bd45, 0x00047c ] } , - BigNum { limbs: [ 0x6466930923ab7811a43132b1888c36, 0xf5e67a06fbd88f907adac98af5480e, 0x006f70 ] } , - BigNum { limbs: [ 0xa6d195014b641082e68bc0bc50a88f, 0x5bb8ed54ae00468b04010fa5c79f62, 0x0056f3 ] } , - BigNum { limbs: [ 0x16d26dfeb2f7ee7d19743e43af5772, 0x4b9a3c48cf47ecaed406f9fc1065f1, 0x001cfa ] } , - BigNum { limbs: [ 0x452d43f6d5756f51cb57e0e3035d15, 0xb9c6e6797777851425ea12dcacdae7, 0x001579 ] } , - BigNum { limbs: [ 0x7876bf0928e68fae34a81e1cfca2ec, 0xed8c432405d0ae25b21df6c52b2a6c, 0x005e73 ] } , - BigNum { limbs: [ 0x967f4be2f951558140d032f0a9ee53, 0x6345ec055e4d14a1e27164d8fdbd2d, 0x0045af ] } , - BigNum { limbs: [ 0x2724b71d050aa97ebf2fcc0f5611ae, 0x440d3d981efb1e97f596a4c8da4826, 0x002e3e ] } , - BigNum { limbs: [ 0xf20a6f5e1709899ddf46bac40ac8e4, 0x300e9079af0b916f129332ba2dfc0b, 0x0028eb ] } , - BigNum { limbs: [ 0xcb9993a1e752756220b9443bf5371d, 0x77449923ce3ca1cac574d6e7aa0947, 0x004b02 ] } , - BigNum { limbs: [ 0xdc0ae311f00af48469ef4d246b6883, 0xad6a79b61c1a71d544f7800a7e4ae4, 0x005391 ] } , - BigNum { limbs: [ 0xe1991fee0e510a7b9610b1db94977e, 0xf9e8afe7612dc1649310899759ba6e, 0x00205b ] } , - BigNum { limbs: [ 0x2e4312e6011bf5d941e9338fb466f7, 0x0520cdfb5d9d6c54cb86cdf73e9123, 0x0044ed ] } , - BigNum { limbs: [ 0x8f60f019fd400926be16cb704b990a, 0xa2325ba21faac6e50c813baa997430, 0x002f00 ] } , - BigNum { limbs: [ 0x12abf7f3a89e7acf065a270f3c324f, 0x64fb4536c4fcf6ad66524f0376d9e4, 0x0054fa ] } , - BigNum { limbs: [ 0xaaf80b0c55bd8430f9a5d7f0c3cdb2, 0x4257e466b84b3c8c71b5ba9e612b6f, 0x001ef3 ] } , - BigNum { limbs: [ 0x2a70a615d0b8e4d2fc5e69ac5db47f, 0x40ac57f86f5e293b1d67bc8de5d9a1, 0x000e48 ] } , - BigNum { limbs: [ 0x93335cea2da31a2d03a19553a24b82, 0x66a6d1a50dea09febaa04d13f22bb2, 0x0065a5 ] } , - BigNum { limbs: [ 0x1f590ef73ba2bdc0f1357a508e5e7b, 0x00aba73798bfaf59d0fc7261da7291, 0x0058c4 ] } , - BigNum { limbs: [ 0x9e4af408c2b9413f0eca84af71a186, 0xa6a78265e48883e0070b973ffd92c2, 0x001b29 ] } , - BigNum { limbs: [ 0x02e4e461e72e18ddc3b03ea91bc267, 0x785206b5761a878d670fcb570ab3b8, 0x006358 ] } , - BigNum { limbs: [ 0xbabf1e9e172de6223c4fc056e43d9a, 0x2f0122e8072dabac70f83e4acd519b, 0x001095 ] } , - BigNum { limbs: [ 0xc3ebf43c92a949a4593e1acca2cb6c, 0x8adc7bff16bae3ee1645113940cf46, 0x0053c7 ] } , - BigNum { limbs: [ 0xf9b80ec36bb2b55ba6c1e4335d3495, 0x1c76ad9e668d4f4bc1c2f86897360c, 0x002026 ] } , - BigNum { limbs: [ 0xe74ba2b75ca477f44e14739932aa33, 0x508a14adf95959d7d47f20aa9f0259, 0x0037d3 ] } , - BigNum { limbs: [ 0xd6586048a1b7870bb1eb8b66cd55ce, 0x56c914ef83eed9620388e8f73902f9, 0x003c1a ] } , - BigNum { limbs: [ 0x9f1f01e2bbf0ac476e05bf67d4973c, 0xcc64ae610371dcd9ce528178852eaf, 0x005a50 ] } , - BigNum { limbs: [ 0x1e85011d426b52b891fa3f982b68c5, 0xdaee7b3c79d6566009b5882952d6a4, 0x00199c ] } , - BigNum { limbs: [ 0x1ae51df978cc3878f4ee1de45ab2f2, 0x03824bef73c976407b9926e20836d2, 0x006e57 ] } , - BigNum { limbs: [ 0xa2bee506858fc6870b11e11ba54d0f, 0xa3d0ddae097ebcf95c6ee2bfcfce81, 0x000596 ] } , - BigNum { limbs: [ 0x7493f160ce4cb729b4cb21179cfb0e, 0x79931cfdd8947f799cf20f675fde6a, 0x00036b ] } , - BigNum { limbs: [ 0x4910119f300f47d64b34dde86304f3, 0x2dc00c9fa4b3b3c03b15fa3a7826e9, 0x007082 ] } , - BigNum { limbs: [ 0x0664a566a603f98c15c05b1901cef2, 0xed2ec80a4115f20c57f6d7dc953305, 0x000afc ] } , - BigNum { limbs: [ 0xb73f5d9958580573ea3fa3e6fe310f, 0xba2461933c32412d801131c542d24e, 0x0068f0 ] } , - BigNum { limbs: [ 0xe20d3cfc83311c0727b36db1974ef4, 0xd5fd4e2f04c5e7caaba64af676214e, 0x0028c6 ] } , - BigNum { limbs: [ 0xdb96c6037b2ae2f8d84c914e68b10d, 0xd155db6e78824b6f2c61beab61e404, 0x004b26 ] } , - BigNum { limbs: [ 0x36750f231bcd8672d73ebbe97445d5, 0x9ddec7fa8e98e4b5243a8bda7ca378, 0x000fe0 ] } , - BigNum { limbs: [ 0x872ef3dce28e788d28c143168bba2c, 0x097461a2eeaf4e84b3cd7dc75b61db, 0x00640d ] } , - BigNum { limbs: [ 0xd0caac87f5713c5130c2c1660125be, 0x111413588742b7c68b4d7fdd60d098, 0x006898 ] } , - BigNum { limbs: [ 0xecd9567808eac2aecf3d3d99feda43, 0x963f1644f6057b734cba89c47734ba, 0x000b55 ] } , - BigNum { limbs: [ 0x30a34e5e4c7a31a0927a327c751043, 0x983de0110e23413ff88848100458b8, 0x0030d2 ] } , - BigNum { limbs: [ 0x8d00b4a1b1e1cd5f6d85cc838aefbe, 0x0f15498c6f24f1f9df7fc191d3ac9b, 0x00431b ] } , - BigNum { limbs: [ 0x1e0777f7ef73e32ef7664cb2440ed4, 0xf5b7cb3dee5f01fe51c5b744878f5d, 0x00510d ] } , - BigNum { limbs: [ 0x9f9c8b080ee81bd10899b24dbbf12d, 0xb19b5e5f8ee9313b8642525d5075f6, 0x0022df ] } , - BigNum { limbs: [ 0x608393655b6d323eae9752b92f9726, 0x1a173d90ba01c42ee040e5579a63af, 0x0015ae ] } , - BigNum { limbs: [ 0x5d206f9aa2eeccc15168ac46d068db, 0x8d3bec0cc3466f0af7c7244a3da1a4, 0x005e3f ] } , - BigNum { limbs: [ 0x136819ab9c98a27528d588439e5b12, 0x3ae1cc22ee66ae3320a20450eb9bbf, 0x001a8f ] } , - BigNum { limbs: [ 0xaa3be95461c35c8ad72a76bc61a4ef, 0x6c715d7a8ee18506b7660550ec6994, 0x00595e ] } , - BigNum { limbs: [ 0xb0deac619bda2d4000b0b3767c9928, 0x0b00588ed2cf8b98c6ffcd682aa219, 0x0035c6 ] } , - BigNum { limbs: [ 0x0cc5569e6281d1bfff4f4b898366d9, 0x9c52d10eaa78a7a111083c39ad633a, 0x003e27 ] } , - BigNum { limbs: [ 0x95392351a789a318d303a266992f63, 0x6bb22f520df225302664820cb7fbf4, 0x00058e ] } , - BigNum { limbs: [ 0x286adfae56d25be72cfc5c9966d09e, 0x3ba0fa4b6f560e09b1a3879520095f, 0x006e5f ] } , - BigNum { limbs: [ 0x47df05ce549e034eb4bb5cc301906f, 0xace8a4aeb40b597e225a1da4156c04, 0x007144 ] } , - BigNum { limbs: [ 0x75c4fd31a9bdfbb14b44a23cfe6f92, 0xfa6a84eec93cd9bbb5adebfdc2994f, 0x0002a8 ] } , - BigNum { limbs: [ 0x7d9fd5726f6b40ed9fa5c032ec0a23, 0xa72e47136966a4512dec6b0a03377e, 0x005f2f ] } , - BigNum { limbs: [ 0x40042d8d8ef0be12605a3ecd13f5de, 0x0024e28a13e18ee8aa1b9e97d4cdd5, 0x0014be ] } , - BigNum { limbs: [ 0x3accee4e32febaa4f1f87d90884c5a, 0x5f6ba59c3994a84b028e307c93637f, 0x002254 ] } , - BigNum { limbs: [ 0x82d714b1cb5d445b0e07816f77b3a7, 0x47e7840143b38aeed579d92544a1d4, 0x005199 ] } , - BigNum { limbs: [ 0x9fa49ec41505c948af25b254d71df9, 0xdf508052e8d9a67bb3d018ed258f03, 0x006c1c ] } , - BigNum { limbs: [ 0x1dff643be95635b750da4cab28e208, 0xc802a94a946e8cbe2437f0b4b27650, 0x0007d0 ] } , - BigNum { limbs: [ 0x0af27f081250e5bddd6dacba0b1d06, 0x9b0b4fa4971529805a2b04c50efc33, 0x005b75 ] } , - BigNum { limbs: [ 0xb2b183f7ec0b194222925245f4e2fb, 0x0c47d9f8e63309b97ddd04dcc90920, 0x001878 ] } , - BigNum { limbs: [ 0xffeee172f8ac74095e328eda2f8e5c, 0x8571ac60a4ce0468b4bb2b446edda9, 0x002904 ] } , - BigNum { limbs: [ 0xbdb5218d05af8af6a1cd7025d071a5, 0x21e17d3cd87a2ed1234cde5d6927a9, 0x004ae9 ] } , - BigNum { limbs: [ 0xfd4ee83f1b2499dbe21753938adf74, 0x09b8f9797bc1d44db4c7e28c3f15cb, 0x001aa9 ] } , - BigNum { limbs: [ 0xc0551ac0e33765241de8ab6c75208d, 0x9d9a302401865eec2340271598ef87, 0x005944 ] } , - BigNum { limbs: [ 0xfb82877b46d20d3f0ffba2ea149337, 0x83626bca158c398677e14a8cb7e715, 0x005815 ] } , - BigNum { limbs: [ 0xc2217b84b789f1c0f0045c15eb6cca, 0x23f0bdd367bbf9b36026bf15201e3d, 0x001bd8 ] } , - BigNum { limbs: [ 0xf0a42ec0e52a48c009cf2b0763b3d5, 0x72b23615cf703897e487b9c664354a, 0x0054b5 ] } , - BigNum { limbs: [ 0xccffd43f1931b63ff630d3f89c4c2c, 0x34a0f387add7faa1f3804fdb73d008, 0x001f38 ] } , - BigNum { limbs: [ 0xbdbdcad82928c864e8c456229dfdef, 0xd2940967b1a207e780cc7312dd5371, 0x0067ad ] } , - BigNum { limbs: [ 0xffe63827d533369b173ba8dd620212, 0xd4bf2035cba62b52573b968efab1e1, 0x000c3f ] } , - BigNum { limbs: [ 0x4b0f40448ca04c44568101d845f71f, 0x150315161c3e6e8ba6f2374a655d9d, 0x005318 ] } , - BigNum { limbs: [ 0x7294c2bb71bbb2bba97efd27ba08e2, 0x925014876109c4ae3115d25772a7b6, 0x0020d5 ] } , - BigNum { limbs: [ 0xe21a225b58e59f1d3e494f87fd6d91, 0x8bf565feb0f7bdf7f8f0d267d1ae2a, 0x00249a ] } , - BigNum { limbs: [ 0xdb89e0a4a5765fe2c1b6af78029270, 0x1b5dc39ecc507541df17373a065728, 0x004f53 ] } , - BigNum { limbs: [ 0x94a89651aca0ff810d9cff570736e9, 0x46355ac0cbecc13494e5cc0ae758c6, 0x006c43 ] } , - BigNum { limbs: [ 0x28fb6cae51baff7ef262ffa8f8c918, 0x611dcedcb15b720543223d96f0ac8d, 0x0007aa ] } , - BigNum { limbs: [ 0x9486bb67912a2b440dab45cd1fac5b, 0x03d7743e9a0675583bdb136e9f86e1, 0x001a9d ] } , - BigNum { limbs: [ 0x291d47986d31d3bbf254b932e053a6, 0xa37bb55ee341bde19c2cf633387e72, 0x005950 ] } , - BigNum { limbs: [ 0x6fb582ac74db12571ba2fccf28601b, 0xfa8d52f970ba51420be43501370b16, 0x001996 ] } , - BigNum { limbs: [ 0x4dee80538980eca8e45d0230d79fe6, 0xacc5d6a40c8de1f7cc23d4a0a0fa3d, 0x005a56 ] } , - BigNum { limbs: [ 0x8a65bc0f8e4d1ecdd815ee4d942bee, 0xa05ea5c70ef50d10f88231dde2f6e1, 0x003336 ] } , - BigNum { limbs: [ 0x333e46f0700ee03227ea10b26bd413, 0x06f483d66e532628df85d7c3f50e72, 0x0040b7 ] } , - BigNum { limbs: [ 0x56ab6223eff0406e175e44c490cbc0, 0x7a32e902f9e85187145dfaed820595, 0x0059dc ] } , - BigNum { limbs: [ 0x66f8a0dc0e6bbe91e8a1ba3b6f3441, 0x2d20409a835fe1b2c3aa0eb455ffbe, 0x001a11 ] } , - BigNum { limbs: [ 0x4492b6f43bb51eca7dadda50f555e4, 0x9040823a88e7b6a42eb341ff879cb0, 0x006025 ] } , - BigNum { limbs: [ 0x79114c0bc2a6e035825224af0aaa1d, 0x1712a762f4607c95a954c7a25068a3, 0x0013c8 ] } , - BigNum { limbs: [ 0xc85f7efbd6188bb08956f964517062, 0x2b7d27b4c23e09768a7087f0cc2629, 0x001356 ] } , - BigNum { limbs: [ 0xf54484042843734f76a9059bae8f9f, 0x7bd601e8bb0a29c34d9781b10bdf29, 0x006097 ] } , - BigNum { limbs: [ 0xae4a21d39a23bee9dc91a650a90e49, 0x59d76ca02af7f2f3e98766f8c9185c, 0x0016c3 ] } , - BigNum { limbs: [ 0x0f59e12c64384016236e58af56f1b8, 0x4d7bbcfd52504045ee80a2a90eecf7, 0x005d2a ] } , - BigNum { limbs: [ 0xc708b8b84ee699a565af7a806913be, 0x169d8ee087328d16baf2bdd5e94641, 0x002db7 ] } , - BigNum { limbs: [ 0xf69b4a47af75655a9a50847f96ec43, 0x90b59abcf615a6231d154bcbeebf11, 0x004636 ] } , - BigNum { limbs: [ 0xfb135ff413a356d5f57c79b59b2332, 0x73726e9409979c7943d6a33bc39345, 0x0061f2 ] } , - BigNum { limbs: [ 0xc290a30beab8a82a0a83854a64dccf, 0x33e0bb0973b096c09431666614720d, 0x0011fb ] } , - BigNum { limbs: [ 0x71082d2903a1ac633d3e92c7ca8ccf, 0x59c69ed3df9941205e1bb9264c6a7c, 0x003c9f ] } , - BigNum { limbs: [ 0x4c9bd5d6faba529cc2c16c38357332, 0x4d8c8ac99daef21979ec507b8b9ad7, 0x00374e ] } , - BigNum { limbs: [ 0x409954448fd0a2dbcc4af4074489e8, 0xe4668304bec207238a67fd3278fde6, 0x001bce ] } , - BigNum { limbs: [ 0x7d0aaebb6e8b5c2433b50af8bb7619, 0xc2eca698be862c164da00c6f5f076d, 0x00581e ] } , - BigNum { limbs: [ 0x3c9d94a870e33f9df832cfdf2062ef, 0xb766f5943eadc0dcf3788fe23b2f53, 0x001325 ] } , - BigNum { limbs: [ 0x81066e578d78bf6207cd2f20df9d12, 0xefec34093e9a725ce48f79bf9cd600, 0x0060c7 ] } , - BigNum { limbs: [ 0x0865a899e8deff4935bd2f817f694b, 0x4098e2e9f12e6b368121ac0cf4ad0a, 0x004f9b ] } , - BigNum { limbs: [ 0xb53e5a66157cffb6ca42cf7e8096b6, 0x66ba46b38c19c80356e65d94e35849, 0x002452 ] } , - BigNum { limbs: [ 0x505ce32828420562b851e3d2a34df5, 0x0aa154b7afb7604ccbce3186331764, 0x00663d ] } , - BigNum { limbs: [ 0x6d471fd7d619f99d47ae1b2d5cb20c, 0x9cb1d4e5cd90d2ed0c39d81ba4edef, 0x000db0 ] } , - BigNum { limbs: [ 0x39e2b6fbd943d0adc24eba36b7578e, 0x29432977ae6a072570e877993c3d74, 0x005a06 ] } , - BigNum { limbs: [ 0x83c14c0425182e523db144c948a873, 0x7e100025cede2c14671f92089bc7df, 0x0019e7 ] } , - BigNum { limbs: [ 0xcc59c903893ca8829235424bc52016, 0x03442f2fb2879a8a9d78c4fed2b2ba, 0x004d35 ] } , - BigNum { limbs: [ 0xf14a39fc751f567d6dcabcb43adfeb, 0xa40efa6dcac098af3a8f44a3055298, 0x0026b8 ] } , - BigNum { limbs: [ 0x8469e061a1c6905718b817f3ccad48, 0x97adfcf78a922bf7a6f6d02f061235, 0x005335 ] } , - BigNum { limbs: [ 0x393a229e5c956ea8e747e70c3352b9, 0x0fa52ca5f2b6074231113972d1f31e, 0x0020b8 ] } , - BigNum { limbs: [ 0x275f891994324c998731ee0c78437a, 0x57052117e1e151ea52ef08f1e06c38, 0x004ba3 ] } , - BigNum { limbs: [ 0x964479e66a29b26678ce10f387bc87, 0x504e08859b66e14f851900aff7991b, 0x00284a ] } , - BigNum { limbs: [ 0xdcd43dec9acd7108993b54226b7f93, 0x3f58561023a7fa481d537345cf6530, 0x004208 ] } , - BigNum { limbs: [ 0xe0cfc513638e8df766c4aadd94806e, 0x67fad38d59a038f1bab4965c08a022, 0x0031e5 ] } , - BigNum { limbs: [ 0xb309ae850664dec3e268216bdc4a30, 0x6d8cebced82bc53c32396daedbf90a, 0x000c11 ] } , - BigNum { limbs: [ 0x0a9a547af7f7203c1d97dd9423b5d1, 0x39c63dcea51c6dfda5ce9bf2fc0c49, 0x0067dc ] } , - BigNum { limbs: [ 0x10ed5bae398c9c164881d4baa8a72e, 0x37284ec1415dde48a52a93151b352e, 0x004432 ] } , - BigNum { limbs: [ 0xacb6a751c4cf62e9b77e2a455758d3, 0x702adadc3bea54f132dd768cbcd025, 0x002fbb ] } , - BigNum { limbs: [ 0x7fcad29e98164375352d72a0c9539a, 0xe61a3a2a9b39fcf3ec5eda0ddb53a0, 0x0042a2 ] } , - BigNum { limbs: [ 0x3dd930616645bb8acad28c5f36ac67, 0xc138ef72e20e3645eba92f93fcb1b3, 0x00314a ] } , - BigNum { limbs: [ 0x72c833e4cf3499ecbf5d6f01ea2fe8, 0xdb96249a23e969ac30e42135fbc427, 0x00485a ] } , - BigNum { limbs: [ 0x4adbcf1b2f27651340a28ffe15d019, 0xcbbd0503595ec98da723e86bdc412c, 0x002b92 ] } , - BigNum { limbs: [ 0xf67b913ee947b92fef56114b49c75d, 0x15ee4db709aa6e492ff0b0d05658b6, 0x0002b3 ] } , - BigNum { limbs: [ 0xc72871c1151445d010a9edb4b638a4, 0x9164dbe6739dc4f0a81758d181ac9c, 0x00713a ] } , - BigNum { limbs: [ 0x576cd5a085170dfba96832adfa9266, 0x0f08c01d85df59b31745ff67db9e8b, 0x004e34 ] } , - BigNum { limbs: [ 0x66372d5f7944f1045697cc52056d9b, 0x984a697ff768d986c0c20a39fc66c8, 0x0025b9 ] } , - BigNum { limbs: [ 0x0bf5a0bea3c2ee335ab15ecceb6a2d, 0xf883ceaa889c7f2b1554800870c74e, 0x005daf ] } , - BigNum { limbs: [ 0xb1ae62415a9910cca54ea0331495d4, 0xaecf5af2f4abb40ec2b38999673e05, 0x00163d ] } , - BigNum { limbs: [ 0xce26afb69019f7ee3b38a3813633f1, 0xacd7204034884021f50f21b39e1d96, 0x006743 ] } , - BigNum { limbs: [ 0xef7d53496e420711c4c75b7ec9cc10, 0xfa7c095d48bff317e2f8e7ee39e7bc, 0x000ca9 ] } , - BigNum { limbs: [ 0xa0eb428f0d8dccd165b2490ec7254e, 0x4dd24ebf1658766f71f92679eccdd9, 0x000959 ] } , - BigNum { limbs: [ 0x1cb8c070f0ce322e9a4db5f138dab3, 0x5980dade66efbcca660ee327eb377a, 0x006a94 ] } , - BigNum { limbs: [ 0x8df3051d69e220022193b333c3b855, 0x287007cdc98e2e1a54f5ed6dac0e6e, 0x003683 ] } , - BigNum { limbs: [ 0x2fb0fde29479defdde6c4bcc3c47ac, 0x7ee321cfb3ba051f83121c342bf6e5, 0x003d6a ] } , - BigNum { limbs: [ 0xafcb31434545d82efcfdaf4e265ab7, 0xb48988b9dbae9a54b1f2bebcea8bca, 0x002fb2 ] } , - BigNum { limbs: [ 0x0dd8d1bcb91626d103024fb1d9a54a, 0xf2c9a0e3a19998e526154ae4ed7989, 0x00443a ] } , - BigNum { limbs: [ 0x730e303c173e1c090bcdd715521bb1, 0x7940ac524648faaf9f04b421b462f2, 0x0046aa ] } , - BigNum { limbs: [ 0x4a95d2c3e71de2f6f43227eaade450, 0x2e127d4b36ff388a3903558023a261, 0x002d43 ] } , - BigNum { limbs: [ 0xa69d8f42e2c25b26dd05e4c4aec099, 0x5a6d7f643b5a2dee35b6cf12739eaf, 0x003dc4 ] } , - BigNum { limbs: [ 0x170673bd1b99a3d922fa1a3b513f68, 0x4ce5aa3941ee054ba2513a8f6466a4, 0x003629 ] } , - BigNum { limbs: [ 0x3d29335383e69a148277eef8c0a297, 0x64192e295d851bd07fc9fc34abead9, 0x00328f ] } , - BigNum { limbs: [ 0x807acfac7a7564eb7d8810073f5d6a, 0x4339fb741fc31769583e0d6d2c1a7a, 0x00415e ] } , - BigNum { limbs: [ 0x2c84f3154125602cabadec2fe322b8, 0xda59a33dcbf232a732ae1a3b0aef75, 0x002e95 ] } , - BigNum { limbs: [ 0x911f0feabd369ed3545212d01cdd49, 0xccf9865fb1560092a559ef66cd15de, 0x004557 ] } , - BigNum { limbs: [ 0x7570b00fca5c9a520c8c4d748fb509, 0x55665267f0974b35861cb1da153a8b, 0x003d06 ] } , - BigNum { limbs: [ 0x483352f033ff64adf373b18b704af8, 0x51ecd7358cb0e80451eb57c7c2cac8, 0x0036e7 ] } , - BigNum { limbs: [ 0x330977b7a8bfe99ca730e689c0bf9e, 0x7d2fce8520d1f5109fa0d7553d937a, 0x0000aa ] } , - BigNum { limbs: [ 0x8a9a8b48559c156358cf18763f4063, 0x2a235b185c763e293867324c9a71d9, 0x007343 ] } , - BigNum { limbs: [ 0x4628b567af1bb4e3d5dbe0d2f73e41, 0xb74a12568801be1e72f2066186fa64, 0x006eca ] } , - BigNum { limbs: [ 0x777b4d984f404a1c2a241e2d08c1c0, 0xf0091746f546751b65160340510aef, 0x000522 ] } , - BigNum { limbs: [ 0x5f56946340fdfc3b2bcdccf1ec7b16, 0x9e7e1c0691a3bae4d7a5261114f26f, 0x0055e2 ] } , - BigNum { limbs: [ 0x5e4d6e9cbd5e02c4d432320e1384eb, 0x08d50d96eba478550062e390c312e4, 0x001e0b ] } , - BigNum { limbs: [ 0x01cd8bef1b22603e16064aa9a77770, 0x214dfb1c37d97fb60b67a741a4eee4, 0x006635 ] } , - BigNum { limbs: [ 0xbbd67710e3399ec1e9f9b456588891, 0x86052e81456eb383cca0626033166f, 0x000db8 ] } , - BigNum { limbs: [ 0xab3ea313c630b6754ceec2fde25881, 0x29cbca5aa4231b2b2fbdb88c0832f1, 0x002043 ] } , - BigNum { limbs: [ 0x12655fec382b488ab3113c021da780, 0x7d875f42d925180ea84a5115cfd262, 0x0053aa ] } , - BigNum { limbs: [ 0x54e5045f96bdb5b46b6df596ba6ecf, 0xd3064ba6d18615e83527ce053b131c, 0x0055e9 ] } , - BigNum { limbs: [ 0x68befea0679e494b94920969459132, 0xd44cddf6abc21d51a2e03b9c9cf237, 0x001e03 ] } , - BigNum { limbs: [ 0x54642678ea64b7408a86452d1142b4, 0x14a479d7e1869cfafd436d7b412b06, 0x005c62 ] } , - BigNum { limbs: [ 0x693fdc8713f747bf7579b9d2eebd4d, 0x92aeafc59bc1963edac49c2696da4d, 0x00178b ] } , - BigNum { limbs: [ 0x771d65b2ee56d3198a034b1e705c0e, 0x117113c5d5a3e04369454396c3893c, 0x00255c ] } , - BigNum { limbs: [ 0x46869d4d10052be675fcb3e18fa3f3, 0x95e215d7a7a452f66ec2c60b147c17, 0x004e91 ] } , - BigNum { limbs: [ 0xc93f37bda7b84b0c06f42c4fa19fd3, 0xbb72051a32b8635dba604a48d7ba10, 0x003d0b ] } , - BigNum { limbs: [ 0xf464cb4256a3b3f3f90bd2b05e602e, 0xebe124834a8fcfdc1da7bf59004b42, 0x0036e1 ] } , - BigNum { limbs: [ 0x7d52a475e8ce1152a4c44c49a49f1e, 0x1bd32e1843bc1a3ef55558b56d6d42, 0x006dee ] } , - BigNum { limbs: [ 0x40515e8a158dedad5b3bb2b65b60e3, 0x8b7ffb85398c18fae2b2b0ec6a9811, 0x0005ff ] } , - BigNum { limbs: [ 0x4ef4c6bf3fe0c6c7ea608db8cd652c, 0x7ca6fc96f67ff5389b96856be8b140, 0x001df5 ] } , - BigNum { limbs: [ 0x6eaf3c40be7b3838159f7147329ad5, 0x2aac2d0686c83e013c718435ef5413, 0x0055f8 ] } , - BigNum { limbs: [ 0x38cc4f07468cebd78b1ef5748164e7, 0x56c04012bb93b8a0671498f387398d, 0x005e68 ] } , - BigNum { limbs: [ 0x84d7b3f8b7cf132874e1098b7e9b1a, 0x5092e98ac1b47a9970f370ae50cbc6, 0x001585 ] } , - BigNum { limbs: [ 0x6041cee0c4bdac8586e7bf3217bc38, 0x75545a9dcb2faf33b868f0e27d4ed6, 0x000a79 ] } , - BigNum { limbs: [ 0x5d62341f399e527a79183fcde843c9, 0x31feceffb21884061f9f18bf5ab67d, 0x006974 ] } , - BigNum { limbs: [ 0x8111d9b58068eda22cb0c0043581b8, 0x5f69535823b4eea87dbd8b3e7293c0, 0x004118 ] } , - BigNum { limbs: [ 0x3c92294a7df3115dd34f3efbca7e49, 0x47e9d645599344915a4a7e63657193, 0x0032d5 ] } , - BigNum { limbs: [ 0x01fb897d05b8538dfcd4912667f55f, 0x2898a7c259a810a20368471f6635e8, 0x0064e3 ] } , - BigNum { limbs: [ 0xbba87982f8a3ab72032b6dd9980aa2, 0x7eba81db23a02297d49fc28271cf6b, 0x000f0a ] } , - BigNum { limbs: [ 0x6cbfc87f549eb20f15758baad3fcf4, 0x7eef82a73dc4782fd931be0cba8ab0, 0x0018e1 ] } , - BigNum { limbs: [ 0x50e43a80a9bd4cf0ea8a73552c030d, 0x2863a6f63f83bb09fed64b951d7aa3, 0x005b0c ] } , - BigNum { limbs: [ 0x04a2294bb265301622dd5a6889a8e8, 0x0e0589dd793aa51bfee012ab18ba91, 0x00362f ] } , - BigNum { limbs: [ 0xb901d9b44bf6cee9dd22a497765719, 0x994d9fc0040d8e1dd927f6f6bf4ac2, 0x003dbe ] } , - BigNum { limbs: [ 0x1b8dd0e729d15d3f10f3a9abb257e1, 0x83b64fd60550e6c6e2fafbc3c935b1, 0x003718 ] } , - BigNum { limbs: [ 0xa2163218d48aa1c0ef0c55544da820, 0x239cd9c777f74c72f50d0dde0ecfa2, 0x003cd5 ] } , - BigNum { limbs: [ 0xc59162052451257675b5beeb6153ca, 0x7850ce28f03eea18ac2f59bed4eb36, 0x004405 ] } , - BigNum { limbs: [ 0xf812a0fada0ad9898a4a40149eac37, 0x2f025b748d0949212bd8afe3031a1c, 0x002fe8 ] } , - BigNum { limbs: [ 0x80f5ffdc6ac2e316a9e3e795d08887, 0xba2e026f2459a189d7e4af45dab593, 0x000688 ] } , - BigNum { limbs: [ 0x3cae032393991be9561c176a2f777a, 0xed25272e58ee91b000235a5bfd4fc0, 0x006d64 ] } , - BigNum { limbs: [ 0x78af6ba70b7705f1af8f454525fd66, 0xb1110b25238c7d7128741250354861, 0x004c33 ] } , - BigNum { limbs: [ 0x44f49758f2e4f90e5070b9bada029b, 0xf6421e7859bbb5c8af93f751a2bcf2, 0x0027b9 ] } , - BigNum { limbs: [ 0x3ec884963a020ab3e6eed5afa1109b, 0xced439e3c7897f5870bc08c4081661, 0x005db4 ] } , - BigNum { limbs: [ 0x7edb7e69c459f44c191129505eef66, 0xd87eefb9b5beb3e1674c00ddcfeef2, 0x001638 ] } , - BigNum { limbs: [ 0xffa1a105df6b8a7429c1fa7a88c247, 0xe1cbced44b4c46145a561c41e22acf, 0x000701 ] } , - BigNum { limbs: [ 0xbe0261fa1ef0748bd63e0485773dba, 0xc5875ac931fbed257db1ed5ff5da83, 0x006ceb ] } , - BigNum { limbs: [ 0x72266b93838c16cd4b696e7ea423f1, 0x1336b5ca226c34c543b8647ce9de4c, 0x000c72 ] } , - BigNum { limbs: [ 0x4b7d976c7acfe832b49690815bdc10, 0x941c73d35adbfe74944fa524ee2707, 0x00677b ] } , - BigNum { limbs: [ 0x6a4f579172314a0ff8423daf2fdb50, 0xfcd83aa5a469524e3a763bb50b0994, 0x0054c0 ] } , - BigNum { limbs: [ 0x5354ab6e8c2ab4f007bdc150d024b1, 0xaa7aeef7d8dee0eb9d91cdecccfbbf, 0x001f2c ] } , - BigNum { limbs: [ 0x2feb30d6711c70e95f38660e9d1536, 0xd7d20dac46ed6eae360ede81eba8db, 0x000832 ] } , - BigNum { limbs: [ 0x8db8d2298d3f8e16a0c798f162eacb, 0xcf811bf1365ac48ba1f92b1fec5c78, 0x006bba ] } , - BigNum { limbs: [ 0x0e24ef2f570c8a24438957b3e25619, 0x0e58dcdd8ce7f82295c732d111a2b2, 0x001a66 ] } , - BigNum { limbs: [ 0xaf7f13d0a74f74dbbc76a74c1da9e8, 0x98fa4cbff0603b174240d6d0c662a1, 0x005987 ] } , - BigNum { limbs: [ 0xa33e0d6b4dc2d87ee857bf1f253512, 0x8b55856bf49320c8b3bf4746e7abf6, 0x004877 ] } , - BigNum { limbs: [ 0x1a65f594b099268117a83fe0dacaef, 0x1bfda43188b512712448c25af0595d, 0x002b76 ] } , - BigNum { limbs: [ 0x1764ae9a77652c25c83bb50749f0af, 0x7bc7ac9a877903f012dba811a16818, 0x005e0b ] } , - BigNum { limbs: [ 0xa63f546586f6d2da37c449f8b60f52, 0x2b8b7d02f5cf2f49c52c6190369d3b, 0x0015e2 ] } , - BigNum { limbs: [ 0xca8e5c4d2dc5ffd2878366fcec15ba, 0x702dd52769aebdb6bf288d790d89bd, 0x005d19 ] } , - BigNum { limbs: [ 0xf315a6b2d095ff2d787c980313ea47, 0x372554761399758318df7c28ca7b95, 0x0016d4 ] } , - BigNum { limbs: [ 0x3d7e9803ec74e17a030cc2de5db52b, 0xdbf168716b60e5789556beff8edeb6, 0x001d12 ] } , - BigNum { limbs: [ 0x80256afc11e71d85fcf33c21a24ad6, 0xcb61c12c11e74dc142b14aa249269d, 0x0056da ] } , - BigNum { limbs: [ 0x7d166d26d7d13fef678c866ccd32d7, 0x1642c7524b471810c6122bee51ba89, 0x00725d ] } , - BigNum { limbs: [ 0x408d95d9268abf109873789332cd2a, 0x9110624b32011b2911f5ddb3864aca, 0x000190 ] } , - BigNum { limbs: [ 0x03788dd25be1b072994949fe8dda46, 0x315227033bb160f1e69f8f0320b088, 0x00622c ] } , - BigNum { limbs: [ 0xba2b752da27a4e8d66b6b5017225bb, 0x7601029a4196d247f1687a9eb754cb, 0x0011c1 ] } , - BigNum { limbs: [ 0x785fd8b3542a38a4a7a41d55234864, 0x2b04f3a711b74789f746a17afd9bde, 0x00241f ] } , - BigNum { limbs: [ 0x45442a4caa31c65b585be1aadcb79d, 0x7c4e35f66b90ebafe0c16826da6975, 0x004fce ] } , - BigNum { limbs: [ 0xbff88c0b7e4246f003cd6e73efb611, 0x0fdde70e992d0cc516e3bb219c82aa, 0x00146d ] } , - BigNum { limbs: [ 0xfdab76f48019b80ffc32908c1049f0, 0x9775428ee41b2674c1244e803b82a8, 0x005f80 ] } , - BigNum { limbs: [ 0x40e7eb01aad13b85caa34fd9b2b6ce, 0xb1d9346b1f74337b8c94b4e3a208e5, 0x007275 ] } , - BigNum { limbs: [ 0x7cbc17fe538ac37a355caf264d4933, 0xf579f5325dd3ffbe4b7354be35fc6e, 0x000177 ] } , - BigNum { limbs: [ 0x679941d7e3344ac1f99b485bb67d21, 0xd9e4727786c36067482e2d9445f9ef, 0x005aef ] } , - BigNum { limbs: [ 0x560ac1281b27b43e0664b6a44982e0, 0xcd6eb725f684d2d28fd9dc0d920b64, 0x0018fd ] } , - BigNum { limbs: [ 0xda7cb26fe41c7fe6b19f0b5eadf9cb, 0x1c67b10780e18ea3e9254dbb27ead7, 0x001c02 ] } , - BigNum { limbs: [ 0xe32750901a3f7f194e60f3a1520636, 0x8aeb7895fc66a495eee2bbe6b01a7b, 0x0057eb ] } , - BigNum { limbs: [ 0xafd9f0df88a27eefe8ef07b5048efa, 0x742370737a124164b50a572c9c65ee, 0x000ad7 ] } , - BigNum { limbs: [ 0x0dca122075b980101710f74afb7107, 0x332fb92a0335f1d522fdb2753b9f65, 0x006916 ] } , - BigNum { limbs: [ 0xde4d06174139246cfaf4c817c13fe6, 0x0e1ec7a28bb857f5f1a3b50f2b7f30, 0x0000c5 ] } , - BigNum { limbs: [ 0xdf56fce8bd22da93050b36e83ec01b, 0x993461faf18fdb43e6645492ac8622, 0x007328 ] } , - BigNum { limbs: [ 0x42551c91b1af3382fe7994226a7881, 0x30fb21510ba3cb52d65ec3b820f174, 0x005b33 ] } , - BigNum { limbs: [ 0x7b4ee66e4caccb7d01866add958780, 0x7658084c71a467e701a945e9b713df, 0x0018ba ] } , - BigNum { limbs: [ 0x97168a3a6000fe4541b8ff2ee0434e, 0x66525526a65439feec240d80689fd6, 0x000951 ] } , - BigNum { limbs: [ 0x268d78c59e5b00babe46ffd11fbcb3, 0x4100d476d6f3f93aebe3fc216f657d, 0x006a9c ] } , - BigNum { limbs: [ 0xa07e9cbe5a10af2a5e7b785841a1da, 0xb67ad287bb0f9589c90d5aa47634ea, 0x00668d ] } , - BigNum { limbs: [ 0x1d256641a44b4fd5a18486a7be5e27, 0xf0d85715c2389db00efaaefd61d069, 0x000d5f ] } , - BigNum { limbs: [ 0x6c91b560c5b82c9b2ee1a0bf112931, 0xdc55e43f779e0eace99e48f3d3cad6, 0x00243a ] } , - BigNum { limbs: [ 0x51124d9f38a3d264d11e5e40eed6d0, 0xcafd455e05aa248cee69c0ae043a7d, 0x004fb2 ] } , - BigNum { limbs: [ 0x424f00b1a2b32fa0eaaaa3583a6b80, 0x91a1889c6ab2045e7a34773491a611, 0x003362 ] } , - BigNum { limbs: [ 0x7b55024e5ba8cf5f15555ba7c59481, 0x15b1a10112962edb5dd3926d465f42, 0x00408b ] } , - BigNum { limbs: [ 0x0c078154d7c539a4c94125ad9dc176, 0x0931b15c62562ce4ba2c4bf31f353e, 0x006905 ] } , - BigNum { limbs: [ 0xb19c81ab2696c55b36bed952623e8b, 0x9e2178411af206551ddbbdaeb8d015, 0x000ae8 ] } , - BigNum { limbs: [ 0x9ad324193961627372e26d5720949f, 0x2ca6312ad70d5e3ab4ed8e1c3483aa, 0x0004a4 ] } , - BigNum { limbs: [ 0x22d0dee6c4fa9c8c8d1d91a8df6b62, 0x7aacf872a63ad4ff231a7b85a381a9, 0x006f49 ] } , - BigNum { limbs: [ 0xdf8723cf6834a9b16c92903c30681c, 0x7af602a41b0e4a7055b0fa4b32af44, 0x002a33 ] } , - BigNum { limbs: [ 0xde1cdf309627554e936d6ec3cf97e5, 0x2c5d26f96239e8c982570f56a5560e, 0x0049ba ] } , - BigNum { limbs: [ 0xa005008f5fa2fe6cd888c85ca05ae9, 0xeeb1a28cdf1a91ecc533285f28b4ad, 0x001b61 ] } , - BigNum { limbs: [ 0x1d9f02709eb90093277736a35fa518, 0xb8a187109e2da14d12d4e142af50a6, 0x00588b ] } , - BigNum { limbs: [ 0xec083a342b6152dc6c5431b7a01194, 0x444efe927bc8a141881064cd54d304, 0x002aaf ] } , - BigNum { limbs: [ 0xd19bc8cbd2faac2393abcd485fee6d, 0x63042b0b017f91f84ff7a4d483324e, 0x00493e ] } , - BigNum { limbs: [ 0xbf1d8539e5c50b799bd1773c3aadf2, 0xd6eec90f1e192c0cc5b558b3509c77, 0x00455e ] } , - BigNum { limbs: [ 0xfe867dc61896f386642e87c3c5520f, 0xd064608e5f2f072d1252b0ee8768db, 0x002e8e ] } , - BigNum { limbs: [ 0x4148b024d3ffa61cfd232fb7ac2d01, 0x8edaee2eeaed1ac42c62e56cb955a3, 0x0058ad ] } , - BigNum { limbs: [ 0x7c5b52db2a5c58e302dccf4853d300, 0x18783b6e925b1875aba524351eafb0, 0x001b40 ] } , - BigNum { limbs: [ 0x8bf3cd9093c0a2b6e7d38c824464d3, 0x5f24ab69299e82782d7daff3118923, 0x00223a ] } , - BigNum { limbs: [ 0x31b0356f6a9b5c49182c727dbb9b2e, 0x482e7e3453a9b0c1aa8a59aec67c30, 0x0051b3 ] } , - BigNum { limbs: [ 0xd0cb7ff2325177578545b4e64baae6, 0x86f9eb22d5720a288c1ac768fd31db, 0x00344b ] } , - BigNum { limbs: [ 0xecd8830dcc0a87a87aba4a19b4551b, 0x20593e7aa7d629114bed4238dad377, 0x003fa2 ] } , - BigNum { limbs: [ 0x49071f297def3c20da606ff4a3ba2b, 0x096ad9987ad9cbf93d062b4fda502a, 0x0072bf ] } , - BigNum { limbs: [ 0x749ce3d6806cc2df259f8f0b5c45d6, 0x9de85005026e67409b01de51fdb529, 0x00012e ] } , - BigNum { limbs: [ 0x9d3446b5219ed92c78c12b5913ffa2, 0x02082ceecbc03f01ab9eac85850baf, 0x0049e6 ] } , - BigNum { limbs: [ 0x206fbc4adcbd25d3873ed3a6ec005f, 0xa54afcaeb187f4382c695d1c52f9a4, 0x002a07 ] } , - BigNum { limbs: [ 0xb7b50e5693aeb64287ce1144fcf019, 0x4f3eb4931089c5be3aa28cfc810120, 0x00352c ] } , - BigNum { limbs: [ 0x05eef4a96aad48bd7831edbb030fe8, 0x5814750a6cbe6d7b9d657ca5570433, 0x003ec1 ] } , - BigNum { limbs: [ 0x30d9ac186fc5451f5753e3ccc4922e, 0x33f624c17d074b024c21cfa2302540, 0x0041ae ] } , - BigNum { limbs: [ 0x8cca56e78e96b9e0a8ac1b333b6dd3, 0x735d04dc0040e8378be639ffa7e013, 0x00323f ] } , - BigNum { limbs: [ 0x4de56daf67ef102318f1f6844036ac, 0x01b7108f6c67604297e1df5b7fe9fe, 0x007097 ] } , - BigNum { limbs: [ 0x6fbe9550966ceedce70e087bbfc955, 0xa59c190e10e0d2f740262a46581b55, 0x000356 ] } , - BigNum { limbs: [ 0xdc15bbb51c14b8bde69ad1be866e28, 0x4d702f536f1aef56d22dab86198a12, 0x005741 ] } , - BigNum { limbs: [ 0xe18e474ae247464219652d417991d9, 0x59e2fa4a0e2d43e305da5e1bbe7b40, 0x001cac ] } , - BigNum { limbs: [ 0x148b46fc8a9536b994f7e88da69099, 0xc54dedb0dd5c00f2b6fdeb2434990d, 0x0054a9 ] } , - BigNum { limbs: [ 0xa918bc0373c6c8466b081672596f68, 0xe2053bec9fec3247210a1e7da36c46, 0x001f43 ] } , - BigNum { limbs: [ 0xe0344c49d79b66f214cc49a9ca287b, 0x7bd852e497f37956c16f3a78ae28ee, 0x0051ec ] } , - BigNum { limbs: [ 0xdd6fb6b626c0980deb33b55635d786, 0x2b7ad6b8e554b9e31698cf2929dc64, 0x002201 ] } , - BigNum { limbs: [ 0x29e9208281d2988e92a08175236817, 0x8c4fc8876304b7701b97622a206b2e, 0x000f79 ] } , - BigNum { limbs: [ 0x93bae27d7c8966716d5f7d8adc97ea, 0x1b0361161a437bc9bc70a777b79a25, 0x006474 ] } , - BigNum { limbs: [ 0x2d67a18dc838277b51fa789fe811c1, 0x6d59e26f95d8df3b80de686838f4c0, 0x00420a ] } , - BigNum { limbs: [ 0x903c61723623d784ae05866017ee40, 0x39f9472de76f53fe5729a1399f1093, 0x0031e3 ] } , - BigNum { limbs: [ 0x98ce89ad3c4462f52172b7909c822f, 0x0f6f20aebd433bab579958add5d563, 0x000238 ] } , - BigNum { limbs: [ 0x24d57952c2179c0ade8d476f637dd2, 0x97e408eec004f78e806eb0f4022ff0, 0x0071b5 ] } , - BigNum { limbs: [ 0xad8bd407c8c41c02e2f94cd781d69e, 0xec60d8a45e9d074f9aa0ec1140c136, 0x0017c1 ] } , - BigNum { limbs: [ 0x10182ef83597e2fd1d06b2287e2963, 0xbaf250f91eab2bea3d671d9097441d, 0x005c2b ] } , - BigNum { limbs: [ 0x0d246202280193fea7c33496a345f2, 0xbad21bb26cbe0156dd6f2d56b9c192, 0x0059a2 ] } , - BigNum { limbs: [ 0xb07fa0fdd65a6b01583cca695cba0f, 0xec810deb108a31e2fa98dc4b1e43c1, 0x001a4a ] } , - BigNum { limbs: [ 0xb9bbd9b0a3590b2ee4c0317b41459b, 0x8c1a3548e372b5c82a603c67a3a3ba, 0x0016fd ] } , - BigNum { limbs: [ 0x03e8294f5b02f3d11b3fcd84beba66, 0x1b38f45499d57d71ada7cd3a346199, 0x005cf0 ] } , - BigNum { limbs: [ 0xc58a0b042cd4dc35d1ae71abd0a54d, 0x72419d80770cd6be007959cfa1c61b, 0x001793 ] } , - BigNum { limbs: [ 0xf819f7fbd18722ca2e518d542f5ab4, 0x35118c1d063b5c7bd78eafd2363f37, 0x005c5a ] } , - BigNum { limbs: [ 0x712f65dddcac5339a8f2d056a4027d, 0x8447f4db2f2599713674356834f476, 0x0059ac ] } , - BigNum { limbs: [ 0x4c749d2221afabc6570d2ea95bfd84, 0x230b34c24e2299c8a193d439a310dd, 0x001a41 ] } , - BigNum { limbs: [ 0x620b99aa201e9b7554cb01f596606f, 0x550e339064cc77fc010ff1bb87e048, 0x0000de ] } , - BigNum { limbs: [ 0x5b986955de3d638aab34fd0a699f92, 0x5244f60d187bbb3dd6f817e650250b, 0x00730f ] } , - BigNum { limbs: [ 0x7feef21aa1455b1985e5010d1e28f9, 0xf7d7a6997c064a244131970ee26e59, 0x005cf3 ] } , - BigNum { limbs: [ 0x3db510e55d16a3e67a1afdf2e1d708, 0xaf7b83040141e91596d67292f596fa, 0x0016f9 ] } , - BigNum { limbs: [ 0xef0eef02e9618bbf1b369c0a8445b6, 0x330063d404e1d74a7534d0a5cfbcaf, 0x006be4 ] } , - BigNum { limbs: [ 0xce9513fd14fa7340e4c962f57bba4b, 0x7452c5c978665bef62d338fc0848a3, 0x000809 ] } , - BigNum { limbs: [ 0x42f05b2dd0efa96d4b3d6d88b9ec49, 0x2dcdcaf325db8a076a0804aaf03d6b, 0x005a7e ] } , - BigNum { limbs: [ 0x7ab3a7d22d6c5592b4c291774613b8, 0x79855eaa576ca9326e0004f6e7c7e8, 0x00196f ] } , - BigNum { limbs: [ 0x278442906cdcb997c7058ee0f32403, 0x15d0bc7ed9cb8c826031662df9e760, 0x006c7a ] } , - BigNum { limbs: [ 0x961fc06f917f456838fa701f0cdbfe, 0x91826d1ea37ca6b777d6a373de1df3, 0x000773 ] } , - BigNum { limbs: [ 0x81b9b0030fff9b9dc2b95bda888cc3, 0x66c29c0c4d935f8efca0709e9fdc07, 0x004f0a ] } , - BigNum { limbs: [ 0x3bea52fcee5c63623d46a32577733e, 0x40908d912fb4d3aadb67990338294c, 0x0024e3 ] } , - BigNum { limbs: [ 0xb13e62a6404a74daf6c1cc2b79b805, 0x1db2c4fc40430e536c4bf821b25948, 0x002e8d ] } , - BigNum { limbs: [ 0x0c65a059be118a25093e32d48647fc, 0x89a064a13d0524e66bbc118025ac0b, 0x004560 ] } , - BigNum { limbs: [ 0x4ad0183cb4d23e3b9f40dc39226ef2, 0xbb8a5f91996cc7e207d405cec60f24, 0x004c63 ] } , - BigNum { limbs: [ 0x72d3eac34989c0c460bf22c6dd910f, 0xebc8ca0be3db6b57d03403d311f62f, 0x002789 ] } , - BigNum { limbs: [ 0x1d4b203d557fd3d0bd794485b1cd59, 0xff0465d7945d6b0fd286dc1624d8de, 0x001a8d ] } , - BigNum { limbs: [ 0xa058e2c2a8dc2b2f4286ba7a4e32a8, 0xa84ec3c5e8eac82a05812d8bb32c75, 0x00595f ] } , - BigNum { limbs: [ 0x7f4e7f70ec86ac05e2e6cb0db28404, 0x71b2bcbcebb0e07032ac4dd9f48655, 0x00222d ] } , - BigNum { limbs: [ 0x3e55838f11d552fa1d1933f24d7bfd, 0x35a06ce0919752c9a55bbbc7e37efe, 0x0051c0 ] } , - BigNum { limbs: [ 0x31d6a3b689584dd2f0f5e5e994ff3a, 0x98eed454988b6dee792e47fe9ebe96, 0x003268 ] } , - BigNum { limbs: [ 0x8bcd5f497503b12d0f0a19166b00c7, 0x0e645548e4bcc54b5ed9c1a33946bd, 0x004185 ] } , - BigNum { limbs: [ 0xd1a69ef390c21d4a865bf20d7fe4ff, 0x7ca7fee6f701be6bd1e602f93f1e7a, 0x000a60 ] } , - BigNum { limbs: [ 0xebfd640c6d99e1b579a40cf2801b02, 0x2aab2ab6864674ce062206a898e6d8, 0x00698d ] } , - BigNum { limbs: [ 0x62a8e248a5873997ef4c4862dac48b, 0x5edd0c55c21a756db007d73ddfd82b, 0x000083 ] } , - BigNum { limbs: [ 0x5afb20b758d4c56810b3b69d253b76, 0x48761d47bb2dbdcc28003263f82d28, 0x00736a ] } , - BigNum { limbs: [ 0xfbf6b6977f335ccc7ee15d01f39a0d, 0x40eb8f3ff496463dea24c6c2f0113d, 0x005839 ] } , - BigNum { limbs: [ 0xc1ad4c687f28a233811ea1fe0c65f4, 0x66679a5d88b1ecfbede342dee7f415, 0x001bb4 ] } , - BigNum { limbs: [ 0xa998918baa4ee01f8dc38c14a70a7d, 0x9a0c8d46e5c1431b68c23ab353eb5a, 0x00529a ] } , - BigNum { limbs: [ 0x140b7174540d1ee0723c72eb58f584, 0x0d469c569786f01e6f45ceee8419f9, 0x002153 ] } , - BigNum { limbs: [ 0xf5f8fb1cfd35bf416d25664132e681, 0xacd15cff4a085d468a777ba29478a8, 0x0063a1 ] } , - BigNum { limbs: [ 0xc7ab07e301263fbe92da98becd1980, 0xfa81cc9e333fd5f34d908dff438caa, 0x00104b ] } , - BigNum { limbs: [ 0xa148a069f07e83085c098a064e640d, 0x1d433b70d20df332844e948cea8ef0, 0x0059bd ] } , - BigNum { limbs: [ 0x1c5b62960ddd7bf7a3f674f9b19bf4, 0x8a0fee2cab3a400753b97514ed7663, 0x001a30 ] } , - BigNum { limbs: [ 0x323eed0b7541f7626cf66312dc75d4, 0xf0cfc53f02ad2cff5e64aca06bfdc0, 0x000521 ] } , - BigNum { limbs: [ 0x8b6515f4891a079d93099bed238a2d, 0xb683645e7a9b063a79a35d016c0793, 0x006ecb ] } , - BigNum { limbs: [ 0x6d33f723b2c096edd01d1e9965d339, 0xe5c62447e6c5b903259bd01c07a223, 0x007091 ] } , - BigNum { limbs: [ 0x50700bdc4b9b68122fe2e0669a2cc8, 0xc18d055596827a36b26c3985d06330, 0x00035b ] } , - BigNum { limbs: [ 0xced4862f3112b54a33b4ca4fa500d5, 0xe64e6e329643ccb9d7408ba4ad4f77, 0x0046d5 ] } , - BigNum { limbs: [ 0xeecf7cd0cd4949b5cc4b34b05aff2c, 0xc104bb6ae704668000c77dfd2ab5db, 0x002d17 ] } , - BigNum { limbs: [ 0xa7edc3eeb1ea0f3cd3d2e1c03a844c, 0xc7495e0793b32f9ded387ed31cf4f1, 0x001257 ] } , - BigNum { limbs: [ 0x15b63f114c71efc32c2d1d3fc57bb5, 0xe009cb95e995039beacf8acebb1062, 0x006195 ] } , - BigNum { limbs: [ 0xca9f6f63c7ee570593110cdd147867, 0x0c5a1acc4e039943b8c1f1c32bb124, 0x006d19 ] } , - BigNum { limbs: [ 0xf304939c366da7fa6ceef222eb879a, 0x9af90ed12f4499f61f4617deac542e, 0x0006d4 ] } , - BigNum { limbs: [ 0xa3138bbc3a874b460e884790b8c345, 0x8a70e4c6426c457a1f0b6f25f22f8b, 0x0049a9 ] } , - BigNum { limbs: [ 0x1a907743c3d4b3b9f177b76f473cbc, 0x1ce244d73adbedbfb8fc9a7be5d5c8, 0x002a44 ] } , - BigNum { limbs: [ 0x1169992c0dfff849ad9eda3ab2596b, 0xed13f5196adafec2c1e6f695673957, 0x006c32 ] } , - BigNum { limbs: [ 0xac3a69d3f05c06b6526124c54da696, 0xba3f3484126d34771621130c70cbfc, 0x0007ba ] } , - BigNum { limbs: [ 0x55a2ee5f896a4409af8f18266456c5, 0xac223b8b00a756b079736230d8d1e0, 0x005356 ] } , - BigNum { limbs: [ 0x680114a074f1baf65070e6d99ba93c, 0xfb30ee127ca0dc895e94a770ff3373, 0x002096 ] } , - BigNum { limbs: [ 0x2b4bfeb55dfba683a202b9605bdc7f, 0xcd834da0dfe13d24b851b6e0e2940a, 0x005b37 ] } , - BigNum { limbs: [ 0x9258044aa060587c5dfd459fa42382, 0xd9cfdbfc9d66f6151fb652c0f57149, 0x0018b5 ] } , - BigNum { limbs: [ 0x95ffdf3831c932ebf8ff080a52e66f, 0x9145a9d644ccae7ba896e4494d8bb6, 0x00364c ] } , - BigNum { limbs: [ 0x27a423c7cc92cc140700f6f5ad1992, 0x160d7fc7387b84be2f7125588a799d, 0x003da1 ] } , - BigNum { limbs: [ 0x548acb6d790da51557c2f3467bd1ca, 0x515b1711e6667471e199a39130b996, 0x0006b9 ] } , - BigNum { limbs: [ 0x69193792854e59eaa83d0bb9842e37, 0x55f8128b96e1bec7f66e6610a74bbd, 0x006d34 ] } , - BigNum { limbs: [ 0x0352b62f3f203eb38d064ea8444127, 0xfa03ad3c8255023718eed874887b51, 0x005aee ] } , - BigNum { limbs: [ 0xba514cd0bf3bc04c72f9b057bbbeda, 0xad4f7c60faf33102bf19312d4f8a02, 0x0018fe ] } , - BigNum { limbs: [ 0x6d63f8b28503442b436d7a469e3045, 0xd3a13151f5da0c095cf1e33152987a, 0x004c75 ] } , - BigNum { limbs: [ 0x50400a4d7958bad4bc9284b961cfbc, 0xd3b1f84b876e27307b162670856cd9, 0x002777 ] } , - BigNum { limbs: [ 0x62f6b763e08ab37846d9e1c754b5dc, 0x4af774526aa008078f5f1149b3a08b, 0x00327c ] } , - BigNum { limbs: [ 0x5aad4b9c1dd14b87b9261d38ab4a25, 0x5c5bb54b12a82b3248a8f8582464c8, 0x004171 ] } , - BigNum { limbs: [ 0xe5fdb63351c0ec536a984065c92adf, 0xe30b5b7bc5bd438d2dbf46dd5590f9, 0x000898 ] } , - BigNum { limbs: [ 0xd7a64cccac9b12ac9567be9a36d522, 0xc447ce21b78aefacaa48c2c4827459, 0x006b54 ] } , - BigNum { limbs: [ 0x2db53007db7808cb26d9489265bf28, 0x370156cdae5227f2d34b0ee0bab27b, 0x006103 ] } , - BigNum { limbs: [ 0x8feed2f822e3f634d926b66d9a40d9, 0x7051d2cfcef60b4704bcfac11d52d8, 0x0012ea ] } , - BigNum { limbs: [ 0xe92a5ff656e571e252f6a3681e0665, 0x48279a4d32928213bbd737bf0e62fa, 0x0067b7 ] } , - BigNum { limbs: [ 0xd479a309a7768d1dad095b97e1f99c, 0x5f2b8f504ab5b1261c30d1e2c9a258, 0x000c36 ] } , - BigNum { limbs: [ 0x4a3619fc303084522303685af9251f, 0xec39741c1ee0841ec896cf8d6b71cc, 0x003f80 ] } , - BigNum { limbs: [ 0x736de903ce2b7aaddcfc96a506dae2, 0xbb19b5815e67af1b0f713a146c9387, 0x00346c ] } , - BigNum { limbs: [ 0x09b29d2aaa46f58fde839c9b10f95a, 0xf481668a98cc916653ef8ee10c3160, 0x000b47 ] } , - BigNum { limbs: [ 0xb3f165d554150970217c6264ef06a7, 0xb2d1c312e47ba1d384187ac0cbd3f3, 0x0068a5 ] } , - BigNum { limbs: [ 0x8d4f7d4f608b27831af13e1a684e43, 0xeabd406c3a9d1aaa8bc17630875b9a, 0x002669 ] } , - BigNum { limbs: [ 0x305485b09dd0d77ce50ec0e597b1be, 0xbc95e93142ab188f4c46937150a9b9, 0x004d83 ] } , - BigNum { limbs: [ 0x5f59426e561ac3a0d046361160c87d, 0xf67c9a365f924184a3278cbac76cf6, 0x001e28 ] } , - BigNum { limbs: [ 0x5e4ac091a8413b5f2fb9c8ee9f3784, 0xb0d68f671db5f1b534e07ce710985d, 0x0055c4 ] } , - BigNum { limbs: [ 0xb504c88bc20bd7cd2b2f4c41dff3cb, 0x1dab874c3d6a7726f871b0da235e08, 0x00698f ] } , - BigNum { limbs: [ 0x089f3a743c502732d4d0b2be200c36, 0x89a7a2513fddbc12df9658c7b4a74b, 0x000a5e ] } , - BigNum { limbs: [ 0x5f34977fa341337055b514a4510f6a, 0x373ad66cee9842076ef74d0b719d55, 0x005dd7 ] } , - BigNum { limbs: [ 0x5e6f6b805b1acb8faa4aea5baef097, 0x701853308eaff1326910bc966667fe, 0x001616 ] } , - BigNum { limbs: [ 0x6c461ae56f072df424341daddcab5d, 0x0d96bee11ebb5204f44088385855a8, 0x004aa1 ] } , - BigNum { limbs: [ 0x515de81a8f54d10bdbcbe1522354a4, 0x99bc6abc5e8ce134e3c781697fafab, 0x00294c ] } , - BigNum { limbs: [ 0x0e8aaa2c0adab646add4de51661716, 0x17a81ec992dbd332c8edcb31b9c532, 0x006f8c ] } , - BigNum { limbs: [ 0xaf1958d3f38148b9522b20ae99e8eb, 0x8fab0ad3ea6c60070f1a3e701e4021, 0x000461 ] } , - BigNum { limbs: [ 0x966df282c99da1552407971d6a01b3, 0xc4a1e86297dd1f72eaf592b1a5e37c, 0x001064 ] } , - BigNum { limbs: [ 0x2736107d34be5daadbf867e295fe4e, 0xe2b1413ae56b13c6ed1276f03221d7, 0x006388 ] } , - BigNum { limbs: [ 0xdf55fe0e814040452ccd3a84afddff, 0xc0bccf122cf17f89e05099b9346eb4, 0x004fc3 ] } , - BigNum { limbs: [ 0xde4e04f17d1bbebad332c47b502202, 0xe6965a8b5056b3aff7b76fe8a3969e, 0x002429 ] } , - BigNum { limbs: [ 0x9025299f9d89f8b0a40e557f4b46ae, 0xb7cf8d35960d07e1837d2ec951dce4, 0x000c0e ] } , - BigNum { limbs: [ 0x2d7ed96060d2064f5bf1a980b4b953, 0xef839c67e73b2b58548adad886286f, 0x0067de ] } , - BigNum { limbs: [ 0x627ca6b51d001a6f9d0064fac7137d, 0xba9652521c23efdb2f0828054b7fb3, 0x006f56 ] } , - BigNum { limbs: [ 0x5b275c4ae15be49062ff9a0538ec84, 0xecbcd74b6124435ea8ffe19c8c85a0, 0x000496 ] } , - BigNum { limbs: [ 0x57c9facced7b915f66134727f54889, 0xc12d8a6f82133cf6cd1d9efc7c146e, 0x006c0e ] } , - BigNum { limbs: [ 0x65da083310e06da099ecb7d80ab778, 0xe6259f2dfb34f6430aea6aa55bf0e5, 0x0007de ] } , - BigNum { limbs: [ 0x339834601eaf9df9b5ad7e3464f5a5, 0x51053381165e056f4fd9e2e5174451, 0x00510f ] } , - BigNum { limbs: [ 0x8a0bce9fdfac61064a5280cb9b0a5c, 0x564df61c66ea2dca882e26bcc0c102, 0x0022de ] } , - BigNum { limbs: [ 0xea1b243740a635ed1c6473b3e31cf7, 0x6e5ee340acc503a56cc8813aa331a6, 0x0022c3 ] } , - BigNum { limbs: [ 0xd388dec8bdb5c912e39b8b4c1ce30a, 0x38f4465cd0832f946b3f886734d3ac, 0x00512a ] } , - BigNum { limbs: [ 0xa5a037f31901964ec74d66ce5ce51d, 0xd1a16317e2eef74564930e6096c055, 0x006852 ] } , - BigNum { limbs: [ 0x1803cb0ce55a68b138b29831a31ae4, 0xd5b1c6859a593bf47374fb414144fe, 0x000b9a ] } , - BigNum { limbs: [ 0x5b9ca898999be0e41960cc8f7cf554, 0x10c103e349beeebdfa4d46a48617eb, 0x001be6 ] } , - BigNum { limbs: [ 0x62075a6764c01e1be69f3270830aad, 0x969225ba3389447bddbac2fd51ed68, 0x005807 ] } , - BigNum { limbs: [ 0xc9e646f0bc30f46b1ac0499b422b78, 0x36685571ebe59efaac6d4efab2f7a2, 0x00178c ] } , - BigNum { limbs: [ 0xf3bdbc0f422b0a94e53fb564bdd489, 0x70ead42b9162943f2b9abaa7250db0, 0x005c61 ] } , - BigNum { limbs: [ 0x468edeb6787ad5963a9c566e8bd6b5, 0x92e90312698626747ffd80262ac35f, 0x003dfd ] } , - BigNum { limbs: [ 0x7715244985e12969c563a89174294c, 0x146a268b13c20cc5580a897bad41f4, 0x0035f0 ] } , - BigNum { limbs: [ 0xa1f0d04b158d7aa271966e405dcffd, 0xeac8ef44b61d5e3ddfac65da256f88, 0x00378f ] } , - BigNum { limbs: [ 0x1bb332b4e8ce845d8e6990bfa23004, 0xbc8a3a58c72ad4fbf85ba3c7b295cb, 0x003c5d ] } , - BigNum { limbs: [ 0x719dedc145d3ee4580dba9fc46a574, 0x8c3a3826d76773a54de6e95a9de480, 0x00102b ] } , - BigNum { limbs: [ 0x4c06153eb88810ba7f245503b95a8d, 0x1b18f176a5e0bf948a2120473a20d3, 0x0063c2 ] } , - BigNum { limbs: [ 0x6d85a7faf7c62885336974811c697a, 0xbda65519ec38a6266415c4d6ced228, 0x003b35 ] } , - BigNum { limbs: [ 0x501e5b050695d67acc968a7ee39687, 0xe9acd483910f8d1373f244cb09332b, 0x0038b7 ] } , - BigNum { limbs: [ 0x510ebfb4543a3efb350dbef02a116e, 0xa56e80f82b2df675522e37ad4eca1c, 0x001907 ] } , - BigNum { limbs: [ 0x6c95434baa21c004caf2400fd5ee93, 0x01e4a8a5521a3cc485d9d1f4893b37, 0x005ae6 ] } , - BigNum { limbs: [ 0x1102eb66f6fce55e501a6aa6138595, 0x8e203415456536060cc57d5ad557ea, 0x006d3d ] } , - BigNum { limbs: [ 0xaca11799075f19a1afe59459ec7a6c, 0x1932f58837e2fd33cb428c4702ad69, 0x0006b0 ] } , - BigNum { limbs: [ 0x7dea6029017fdc9dac7b409d585d19, 0xc0e6aaf7c2d906dbeaab1ad525575d, 0x00634f ] } , - BigNum { limbs: [ 0x3fb9a2d6fcdc22625384be62a7a2e8, 0xe66c7ea5ba6f2c5ded5ceeccb2adf6, 0x00109d ] } , - BigNum { limbs: [ 0x3764a3ff5f912e67cf9ca3e9f5b1b1, 0xbee4fcf836297cc088f970ebac3ad3, 0x005f20 ] } , - BigNum { limbs: [ 0x863f5f009ecad09830635b160a4e50, 0xe86e2ca5471eb6794f0e98b62bca80, 0x0014cc ] } , - BigNum { limbs: [ 0x738f0e49608f7fec3894fdbbc5e597, 0x6831b2c665dce522dc0df640392d0a, 0x002e91 ] } , - BigNum { limbs: [ 0x4a14f4b69dcc7f13c76b01443a1a6a, 0x3f2176d7176b4e16fbfa13619ed849, 0x00455c ] } , - BigNum { limbs: [ 0xb1cebef9a7dbaf187a081bc020c9e9, 0x49dce1168ed72eb22d78a01a149188, 0x0048c6 ] } , - BigNum { limbs: [ 0x0bd5440656804fe785f7e33fdf3618, 0x5d764886ee710487aa8f6987c373cb, 0x002b27 ] } , - BigNum { limbs: [ 0x786c05f26d2d14072fff623d593acc, 0x4567920d7fbdd5ad1e34af8ba8297e, 0x004b0f ] } , - BigNum { limbs: [ 0x4537fd0d912eeaf8d0009cc2a6c535, 0x61eb978ffd8a5d8cb9d35a162fdbd5, 0x0028de ] } , - BigNum { limbs: [ 0xa08916e4882ed38e69d125b2613b98, 0x2412402056b9c587252e3f738f0291, 0x00154d ] } , - BigNum { limbs: [ 0x1d1aec1b762d2b71962ed94d9ec469, 0x8340e97d268e6db2b2d9ca2e4902c2, 0x005ea0 ] } , - BigNum { limbs: [ 0xa44a292b2e5b2982758592725b5677, 0x3df3d2c48682ef7088ae62b6a01241, 0x004c5f ] } , - BigNum { limbs: [ 0x1959d9d4d000d57d8a7a6c8da4a98a, 0x695f56d8f6c543c94f59a6eb37f312, 0x00278e ] } , - BigNum { limbs: [ 0x3dc049317117871848f2442fea2cc8, 0x6e34562bbc52e204d5dce884424849, 0x002cb0 ] } , - BigNum { limbs: [ 0x7fe3b9ce8d4477e7b70dbad015d339, 0x391ed371c0f55135022b211d95bd0a, 0x00473d ] } , - BigNum { limbs: [ 0xd2201ed10a653f0612b0fb6cc1107c, 0xcba74f737371896fb6a2fbba8ee922, 0x006c1b ] } , - BigNum { limbs: [ 0xeb83e42ef3f6bff9ed4f03933eef85, 0xdbabda2a09d6a9ca21650de7491c30, 0x0007d1 ] } , - BigNum { limbs: [ 0xdf8a6e25303f2fd0c13b83274f45b0, 0xbb2eb5bc528c11781b3e716a0f505e, 0x002bdd ] } , - BigNum { limbs: [ 0xde1994dace1ccf2f3ec47bd8b0ba51, 0xec2473e12abc21c1bcc99837c8b4f4, 0x00480f ] } , - BigNum { limbs: [ 0xd22b0908293b435d970e0b0666e0d8, 0x0683301968fdb44d3b688f8492460a, 0x005b03 ] } , - BigNum { limbs: [ 0xeb78f9f7d520bba268f1f3f9991f29, 0xa0cff984144a7eec9c9f7a1d45bf48, 0x0018ea ] } , - BigNum { limbs: [ 0xc5922e39ae0bf92ae6e2c121bfc3c3, 0x9e36de006c054af1a2d79a24d27ae1, 0x007000 ] } , - BigNum { limbs: [ 0xf811d4c6505005d5191d3dde403c3e, 0x091c4b9d1142e84835306f7d058a71, 0x0003ed ] } , - BigNum { limbs: [ 0xe63a729649cca628f1221a8298a060, 0xe2fcb84cd789855a08d1b96d6c46b4, 0x001272 ] } , - BigNum { limbs: [ 0xd7699069b48f58d70edde47d675fa1, 0xc4567150a5beaddfcf3650346bbe9e, 0x00617a ] } , - BigNum { limbs: [ 0x5fe456e0de774541fed1c1f077470a, 0xef9cfd0d5b9c3c011284ce2c0a5ae6, 0x0058ea ] } , - BigNum { limbs: [ 0x5dbfac1f1fe4b9be012e3d0f88b8f7, 0xb7b62c9021abf738c5833b75cdaa6d, 0x001b02 ] } , - BigNum { limbs: [ 0x4e7bab3c93dde164936d794ecac754, 0x8efcbc9ffba397e292677efe6e684b, 0x00192d ] } , - BigNum { limbs: [ 0x6f2857c36a7e1d9b6c9285b13538ad, 0x18566cfd81a49b5745a08aa3699d08, 0x005ac0 ] } , - BigNum { limbs: [ 0xf39aabdcbb7d0745a8d91e955983d1, 0xed933c287503e05891c9ff9c3987d4, 0x00075d ] } , - BigNum { limbs: [ 0xca09572342def7ba5726e06aa67c30, 0xb9bfed75084452e1463e0a059e7d7e, 0x006c8f ] } , - BigNum { limbs: [ 0x04d8e25880e9cee1d977e545af710b, 0x5fb6453833c4c973f8fca82606c27d, 0x00527d ] } , - BigNum { limbs: [ 0xb8cb20a77d72301e268819ba508ef6, 0x479ce465498369c5df0b617bd142d6, 0x002170 ] } , - BigNum { limbs: [ 0x9741e455322d312856121a533306a0, 0xd41c2b82dcc6b2dd9a95731e9ccfab, 0x005d63 ] } , - BigNum { limbs: [ 0x26621eaacc2ecdd7a9ede4acccf961, 0xd336fe1aa081805c3d7296833b35a8, 0x001689 ] } , - BigNum { limbs: [ 0x9d89aade182224f825d2b60a32f87a, 0x4aec85b8f956e027a83558a1fa00b9, 0x001df4 ] } , - BigNum { limbs: [ 0x201a5821e639da07da2d48f5cd0787, 0x5c66a3e483f153122fd2b0ffde049a, 0x0055f9 ] } , - BigNum { limbs: [ 0x2d7dae9287cd043df47cf236da17e9, 0xf534d4599079c579b994cbef0c2ce9, 0x001306 ] } , - BigNum { limbs: [ 0x9026546d768efac20b830cc925e818, 0xb21e5543ecce6dc01e733db2cbd86a, 0x0060e6 ] } , - BigNum { limbs: [ 0xcbb1bd356f80cdcf2c53214fca9316, 0xe397c114f8f36fa873d6002f921fda, 0x003495 ] } , - BigNum { limbs: [ 0xf1f245ca8edb3130d3acddb0356ceb, 0xc3bb68888454c3916432097245e578, 0x003f57 ] } , - BigNum { limbs: [ 0x62629752f7b4ac743e6cd3f2d8b5e4, 0xb727404262a9c24956b7927d30eacb, 0x001874 ] } , - BigNum { limbs: [ 0x5b416bad06a7528bc1932b0d274a1d, 0xf02be95b1a9e70f081507724a71a88, 0x005b78 ] } , - BigNum { limbs: [ 0x0cfc2a8e76963e1cfb5b8201d3c611, 0xdbab8b1811260a0955d20478e94671, 0x0038a2 ] } , - BigNum { limbs: [ 0xb0a7d87187c5c0e304a47cfe2c39f0, 0xcba79e856c22293082360528eebee2, 0x003b4a ] } , - BigNum { limbs: [ 0x501d116ae74916c40d56452b59c640, 0x823696c820865acd8b4a64b679a2e3, 0x0032e8 ] } , - BigNum { limbs: [ 0x6d86f1951712e83bf2a9b9d4a639c1, 0x251c92d55cc1d86c4cbda4eb5e6270, 0x004105 ] } , - BigNum { limbs: [ 0x9d714edf2c5d73e9fd3487793e0a1e, 0x777daecfbc8bf776f0b322161a54eb, 0x000c02 ] } , - BigNum { limbs: [ 0x2032b420d1fe8b1602cb7786c1f5e3, 0x2fd57acdc0bc3bc2e754e78bbdb068, 0x0067eb ] } , - BigNum { limbs: [ 0xa019a046396b882f67888351b3aed0, 0x4490a807026fab8427037d4aaef513, 0x0000df ] } , - BigNum { limbs: [ 0x1d8a62b9c4f076d098777bae4c5131, 0x62c281967ad887b5b1048c57291040, 0x00730e ] } , - BigNum { limbs: [ 0xb7da58c5251abce7c952e4bd7af7d4, 0x42944aa32bee278a8c2e3d1fd8e115, 0x005e85 ] } , - BigNum { limbs: [ 0x05c9aa3ad941421836ad1a4285082d, 0x64bedefa515a0baf4bd9cc81ff243e, 0x001568 ] } , - BigNum { limbs: [ 0xb169206b7f3154077d390dd7d05b42, 0x0a68359a3f51e5084aaf8797a96f5e, 0x004197 ] } , - BigNum { limbs: [ 0x0c3ae2947f2aaaf882c6f1282fa4bf, 0x9ceaf4033df64e318d58820a2e95f5, 0x003256 ] } , - BigNum { limbs: [ 0x3c05a40dd7360af2be473f9f510696, 0x85d44e308ee97c96515b1b38427a7c, 0x004f02 ] } , - BigNum { limbs: [ 0x819e5ef22725f40d41b8bf60aef96b, 0x217edb6cee5eb6a386acee69958ad7, 0x0024eb ] } , - BigNum { limbs: [ 0xc01d3617a563363c520c2b1a297a42, 0x1b34b95dfdc7a5455416cfcec9c93f, 0x0057d1 ] } , - BigNum { limbs: [ 0xfd86cce858f8c8c3adf3d3e5d685bf, 0x8c1e703f7f808df483f139d30e3c13, 0x001c1c ] } , - BigNum { limbs: [ 0xd04289be4d5845428c9fe880b696f2, 0xefc99d37fe721eb3867a7d42417bfd, 0x003337 ] } , - BigNum { limbs: [ 0xed617941b103b9bd7360167f49690f, 0xb7898c657ed61486518d8c5f968955, 0x0040b5 ] } , - BigNum { limbs: [ 0x471747bfef212bcdcd38d6f117f52f, 0x873a1f951adfb6548e4a26c46cf637, 0x00260e ] } , - BigNum { limbs: [ 0x768cbb400f3ad33232c7280ee80ad2, 0x20190a0862687ce549bde2dd6b0f1c, 0x004ddf ] } , - BigNum { limbs: [ 0x1bd60176f653694582bcb64c16195c, 0xf7a2a21cae9a8382c4cf78190afc04, 0x0045c6 ] } , - BigNum { limbs: [ 0xa1ce0189080895ba7d4348b3e9e6a5, 0xafb08780ceadafb713389188cd094f, 0x002e26 ] } , - BigNum { limbs: [ 0x12d6dbc4da70eb9281ca5182004249, 0x6ee71fba800af7b5bc01b47b0c0cc1, 0x00524f ] } , - BigNum { limbs: [ 0xaacd273b23eb136d7e35ad7dffbdb8, 0x386c09e2fd3d3b841c065526cbf892, 0x00219e ] } , - BigNum { limbs: [ 0xdd88120258390fcf4a24368337be6a, 0xbc58cb5eb5c44cc9ff4bf19abce5bb, 0x0030e1 ] } , - BigNum { limbs: [ 0xe01bf0fda622ef30b5dbc87cc84197, 0xeafa5e3ec783e66fd8bc18071b1f97, 0x00430b ] } , - BigNum { limbs: [ 0xa959dcb76fe5390c0871ffc19b100f, 0xce8ba2c48aa4894506e8611524fe2a, 0x002f73 ] } , - BigNum { limbs: [ 0x144a26488e76c5f3f78dff3e64eff2, 0xd8c786d8f2a3a9f4d11fa88cb30729, 0x004479 ] } , - BigNum { limbs: [ 0x73882ea6ce7aa9e15b2a94a295c9ad, 0x7fb3c3230d556d15603c30cffb92d1, 0x003d74 ] } , - BigNum { limbs: [ 0x4a1bd4592fe1551ea4d56a5d6a3654, 0x279f667a6ff2c62477cbd8d1dc7282, 0x003679 ] } , - BigNum { limbs: [ 0xf7ba1663b31d0376fd4001b4f824c8, 0x46853ef9fa574485c4aa168e870ab3, 0x006fbe ] } , - BigNum { limbs: [ 0xc5e9ec9c4b3efb8902bffd4b07db39, 0x60cdeaa382f0eeb4135df31350fa9f, 0x00042f ] } , - BigNum { limbs: [ 0x0119a77a9a472b1f0256b78db57e18, 0xf68db38f4a7b27a0943532cbc2db68, 0x00474c ] } , - BigNum { limbs: [ 0xbc8a5b856414d3e0fda947724a81e9, 0xb0c5760e32cd0b9943d2d6d61529eb, 0x002ca0 ] } , - BigNum { limbs: [ 0x1592642caef3e5a869ecf2cc0d850a, 0xd792bef1368d6e952e48357708336a, 0x004164 ] } , - BigNum { limbs: [ 0xa8119ed34f68195796130c33f27af7, 0xcfc06aac46bac4a4a9bfd42acfd1e9, 0x003288 ] } , - BigNum { limbs: [ 0xea563e74aa3185e99ab4b0ce6c0c7c, 0xcb7ba7a1102bab1c2cbe2844a0ddd5, 0x00098b ] } , - BigNum { limbs: [ 0xd34dc48b542a7916654b4e3193f385, 0xdbd781fc6d1c881dab49e15d37277d, 0x006a61 ] } , - BigNum { limbs: [ 0x437f9626fc085e3c28d666a5c2d854, 0xb5c3debf77a18f4de02c0f776af3ea, 0x00325d ] } , - BigNum { limbs: [ 0x7a246cd90253a0c3d729985a3d27ad, 0xf18f4ade05a6a3ebf7dbfa2a6d1169, 0x00418f ] } , - BigNum { limbs: [ 0x042bde9573c4ad1ff95ac74f4dd55e, 0xf518291d3e252d00a5be2412a997b6, 0x0050c8 ] } , - BigNum { limbs: [ 0xb978246a8a9751e006a537b0b22aa3, 0xb23b00803f2306393249e58f2e6d9d, 0x002324 ] } , - BigNum { limbs: [ 0xd42ce812d4161a128568bfed36d2d6, 0x61d6a24bc012a01a09222bf9650bd9, 0x006524 ] } , - BigNum { limbs: [ 0xe9771aed2a45e4ed7a973f12c92d2b, 0x457c8751bd35931fcee5dda872f979, 0x000ec9 ] } , - BigNum { limbs: [ 0x4eea3f60d8ba48352b5233bf7ba901, 0x9a5b87438c07220bc79e6b495d459f, 0x003304 ] } , - BigNum { limbs: [ 0x6eb9c39f25a1b6cad4adcb40845700, 0x0cf7a259f141112e10699e587abfb4, 0x0040e9 ] } , - BigNum { limbs: [ 0x67db8f3cd65da7c8f54ccb3906df6e, 0x385ab3740f1d0a08b8806bf140116a, 0x003ff0 ] } , - BigNum { limbs: [ 0x55c873c327fe57370ab333c6f92093, 0x6ef876296e2b29311f879db097f3e9, 0x0033fd ] } , - BigNum { limbs: [ 0x10f133fcb8fede5de6afb9568b79d7, 0x555d2abe285e02fca0c6b9bfafb5fd, 0x00149f ] } , - BigNum { limbs: [ 0xacb2cf03455d20a2195045a974862a, 0x51f5fedf54ea303d37414fe2284f56, 0x005f4e ] } , - BigNum { limbs: [ 0xb769a52be75f80a78adc4c393f40fb, 0x8cf482eda4eaeba7fb8a7fa58fc5d9, 0x0007f3 ] } , - BigNum { limbs: [ 0x063a5dd416fc7e587523b2c6c0bf06, 0x1a5ea6afd85d4791dc7d89fc483f7a, 0x006bfa ] } , - BigNum { limbs: [ 0x1d3d048e2bae51fb8bf031847f0368, 0x7d0f0c1d7fa06092d03a32cfcbe1a7, 0x004b4f ] } , - BigNum { limbs: [ 0xa066fe71d2adad04740fcd7b80fc99, 0x2a441d7ffda7d2a707cdd6d20c23ac, 0x00289e ] } , - BigNum { limbs: [ 0xcfc07ba26779319d6862e69abec349, 0x7fd1ffada9fb7ce80043e235fce4b6, 0x0027a5 ] } , - BigNum { limbs: [ 0xede3875d96e2cd62979d1865413cb8, 0x278129efd34cb651d7c4276bdb209c, 0x004c48 ] } , - BigNum { limbs: [ 0x2b9280b02b0f38389490a19470e8d1, 0x662f4b3bf7dd4a6b4b7925d178b97c, 0x00006c ] } , - BigNum { limbs: [ 0x9211824fd34cc6c76b6f5d6b8f1730, 0x4123de61856ae8ce8c8ee3d05f4bd7, 0x007381 ] } , - BigNum { limbs: [ 0x626ce47a1970433653bbc394e0194f, 0x0ed3d812e1900c2d1e5df0ba7ba08d, 0x001b07 ] } , - BigNum { limbs: [ 0x5b371e85e4ebbbc9ac443b6b1fe6b2, 0x987f518a9bb8270cb9aa18e75c64c6, 0x0058e6 ] } , - BigNum { limbs: [ 0xbf59d5e64bbfa343aac380bd084cf0, 0xe70b5e0ee5d8a20cb37113cdf8a9af, 0x00534e ] } , - BigNum { limbs: [ 0xfe4a2d19b29c5bbc553c7e42f7b311, 0xc047cb8e976f912d2496f5d3df5ba3, 0x00209e ] } , - BigNum { limbs: [ 0x597b23df05312f8c2af61a8141cd2a, 0x0fd36013a65e8edf76cab18f8a37c7, 0x0008f6 ] } , - BigNum { limbs: [ 0x6428df20f92acf73d509e47ebe32d7, 0x977fc989d6e9a45a613d58124dcd8c, 0x006af7 ] } , - BigNum { limbs: [ 0x18d8297cc221bdb5e7ec7507841320, 0x300ff31bf898416efa2f23e851d93e, 0x00315f ] } , - BigNum { limbs: [ 0xa4cbd9833c3a414a181389f87bece1, 0x7743368184aff1caddd8e5b9862c15, 0x00428e ] } , - BigNum { limbs: [ 0xb9cfa13c9e7075a60c85450b7b2f47, 0x6723c0c73b43c6b58ce353a65ae24f, 0x000185 ] } , - BigNum { limbs: [ 0x03d461c35feb8959f37ab9f484d0ba, 0x402f68d642046c844b24b5fb7d2304, 0x007268 ] } , - BigNum { limbs: [ 0x4aa8865b38d3fe56375852f503eab6, 0x0a59d3076a69a11bab9cdb76c9aa34, 0x002e1d ] } , - BigNum { limbs: [ 0x72fb7ca4c58800a9c8a7ac0afc154b, 0x9cf9569612de921e2c6b2e2b0e5b1f, 0x0045d0 ] } , - BigNum { limbs: [ 0x2f158931e7234f34277686b037a511, 0x36a53627e337d86327fa50db777aaf, 0x003bff ] } , - BigNum { limbs: [ 0x8e8e79ce1738afcbd889784fc85af0, 0x70adf3759a105ad6b00db8c6608aa4, 0x0037ee ] } , - BigNum { limbs: [ 0x5b11f7e8d7950307379aa242bef13a, 0x854d6e4b49d1a48d5cc9eb4b326da6, 0x003cd9 ] } , - BigNum { limbs: [ 0x62920b1726c6fbf8c8655cbd410ec7, 0x2205bb5233768eac7b3e1e56a597ad, 0x003714 ] } , - BigNum { limbs: [ 0x74c9b15c2f6c8157b9d269efd0d9fd, 0x43d2741d83a4ffa6a4d8853dc711ed, 0x00349a ] } , - BigNum { limbs: [ 0x48da51a3ceef7da8462d95102f2604, 0x6380b57ff9a33393332f846410f366, 0x003f53 ] } , - BigNum { limbs: [ 0x922dc33e3981ed211c46be69369843, 0x792481d33f84533665b7ea0775febc, 0x004a34 ] } , - BigNum { limbs: [ 0x2b763fc1c4da11dee3b94096c967be, 0x2e2ea7ca3dc3e00372501f9a620697, 0x0029b9 ] } , - BigNum { limbs: [ 0x6fa92e866fdb2fb08e0577296c2a24, 0xadb60d8a7bf7640ac08abd3c0874ce, 0x00699a ] } , - BigNum { limbs: [ 0x4dfad4798e80cf4f71fa87d693d5dd, 0xf99d1c130150cf2f177d4c65cf9085, 0x000a52 ] } , - BigNum { limbs: [ 0x10bc93086722d6faa75e2409644896, 0x0d36010c2912e9b9971968377e8f23, 0x0045cc ] } , - BigNum { limbs: [ 0xace76ff79739280558a1daf69bb76b, 0x9a1d28915435498040eea16a597630, 0x002e21 ] } , - BigNum { limbs: [ 0x12974aa30cb0dbc3ad07b8488f216a, 0x599a73b32821076027ac452fa314e7, 0x0027f8 ] } , - BigNum { limbs: [ 0xab0cb85cf1ab233c52f846b770de97, 0x4db8b5ea55272bd9b05bc47234f06c, 0x004bf5 ] } , - BigNum { limbs: [ 0x07c23f803514299fe2121c20b86988, 0xb000d89ab17c3ca13436f849d0c5b7, 0x0052a3 ] } , - BigNum { limbs: [ 0xb5e1c37fc947d5601dede2df479679, 0xf7525102cbcbf698a3d11158073f9c, 0x002149 ] } , - BigNum { limbs: [ 0x54efb0bc8d997ff0498fbd3aed65cf, 0xb926e96be027edd2c44927ecd41b3a, 0x0021f9 ] } , - BigNum { limbs: [ 0x68b4524370c27f0fb67041c5129a32, 0xee2c40319d20456713bee1b503ea19, 0x0051f3 ] } , - BigNum { limbs: [ 0xc33eff3b2e005d15c92e1aac022f7a, 0x03f06c32134406419d72de2d04da5c, 0x0038dd ] } , - BigNum { limbs: [ 0xfa6503c4d05ba1ea36d1e453fdd087, 0xa362bd6b6a042cf83a952b74d32af6, 0x003b10 ] } , - BigNum { limbs: [ 0x35e832d903d52910fc77c70f6789eb, 0x025cc14be0ad31420245361de9b12f, 0x00575f ] } , - BigNum { limbs: [ 0x87bbd026fa86d5ef038837f0987616, 0xa4f668519c9b01f7d5c2d383ee5424, 0x001c8e ] } , - BigNum { limbs: [ 0xb7ab8507f3920122be1a8aba702c85, 0x25e3c9a4ab06a671d938712e096896, 0x0058b6 ] } , - BigNum { limbs: [ 0x05f87df80ac9fddd41e574458fd37c, 0x816f5ff8d2418cc7fecf9873ce9cbd, 0x001b37 ] } , - BigNum { limbs: [ 0x69be7aef4c8d1ef94c14f22139573f, 0x6f3cc7d42821defa95e48ec5f0df7f, 0x004e12 ] } , - BigNum { limbs: [ 0x53e58810b1cee006b3eb0cdec6a8c2, 0x381661c95526543f42237adbe725d4, 0x0025db ] } , - BigNum { limbs: [ 0x743ad6e2d471f5c5266f7287443e47, 0x5f70d71d12f4ac20bd03516e01a536, 0x002adc ] } , - BigNum { limbs: [ 0x49692c1d29ea093ad9908c78bbc1ba, 0x47e252806a5387191b04b833d6601d, 0x004911 ] } , - BigNum { limbs: [ 0x2c25c55d44a0cda2c7312172f024d5, 0x856c0c995405fcbdc0f7c531d5529a, 0x004d16 ] } , - BigNum { limbs: [ 0x917e3da2b9bb315d38cedd8d0fdb2c, 0x21e71d042942367c1710447002b2b9, 0x0026d7 ] } , - BigNum { limbs: [ 0x223e998d178fb680440e833ea39b55, 0x42b69828825b5da8aa10fae01e8c0c, 0x00181c ] } , - BigNum { limbs: [ 0x9b656972e6cc487fbbf17bc15c64ac, 0x649c9174faecd5912df70ec1b97947, 0x005bd1 ] } , - BigNum { limbs: [ 0x10989d7476cf2bc1bf28a8007ab548, 0xeb7d5ee5004ffc6c81de8478b8e220, 0x002099 ] } , - BigNum { limbs: [ 0xad0b658b878cd33e40d756ff854ab9, 0xbbd5cab87cf836cd562985291f2333, 0x005353 ] } , - BigNum { limbs: [ 0x96d79f8a3e8e0b93b28aebc303f074, 0xc9102a942d517007277851e8aec9ea, 0x0024db ] } , - BigNum { limbs: [ 0x26cc6375bfcdf36c4d75133cfc0f8d, 0xde42ff094ff6c332b08fb7b9293b69, 0x004f11 ] } , - BigNum { limbs: [ 0x472415b0f60defaa8f3f7b31a9d713, 0x5bb263c0e75edaf8ea26346303cc91, 0x00406e ] } , - BigNum { limbs: [ 0x767fed4f084e0f5570c083ce5628ee, 0x4ba0c5dc95e95840ede1d53ed438c2, 0x00337f ] } , - BigNum { limbs: [ 0x22c16ba307dd3aa0d0db6053a9a3e0, 0xe0b7bf8e8c0fd7bcbd2b9d03b8b2db, 0x000042 ] } , - BigNum { limbs: [ 0x9ae2975cf67ec45f2f249eac565c21, 0xc69b6a0ef1385b7d1adc6c9e1f5278, 0x0073aa ] } , - BigNum { limbs: [ 0xd8f9f506885a4f1784febbb03b452f, 0xd0cbdf62af6ec9809d68741ff12a30, 0x000d36 ] } , - BigNum { limbs: [ 0xe4aa0df97601afe87b01434fc4bad2, 0xd6874a3acdd969b93a9f9581e6db22, 0x0066b6 ] } , - BigNum { limbs: [ 0x657d647e701c3bc1294eb7f2f2f66d, 0x076752b9400f5ae617b0fcc5dbf9ca, 0x002887 ] } , - BigNum { limbs: [ 0x58269e818e3fc33ed6b1470d0d0994, 0x9febd6e43d38d853c0570cdbfc0b89, 0x004b66 ] } , - BigNum { limbs: [ 0xf3dc40acfe2b7256cfcec9c01c3ffe, 0xdab0be5128d795d19d03d8fd323cf7, 0x0068f0 ] } , - BigNum { limbs: [ 0xc9c7c25300308ca93031353fe3c003, 0xcca26b4c54709d683b0430a4a5c85b, 0x000afc ] } , - BigNum { limbs: [ 0x39c74778c695afde09673bab61e898, 0xdf77f041dc9735c1728a223969d1ee, 0x0013c8 ] } , - BigNum { limbs: [ 0x83dcbb8737c64f21f698c3549e1769, 0xc7db395ba0b0fd78657de7686e3365, 0x006024 ] } , - BigNum { limbs: [ 0x16c96bf3f6890a98d0402a397d3074, 0xa203d88e626925ff7d17d595046f32, 0x0057df ] } , - BigNum { limbs: [ 0xa6da970c07d2f4672fbfd4c682cf8d, 0x054f510f1adf0d3a5af0340cd39621, 0x001c0e ] } , - BigNum { limbs: [ 0xd286c9c7b2f3fd967bc7d5bce1a804, 0xdd564bbe5d15ce91a6d6efc2c7ca96, 0x007073 ] } , - BigNum { limbs: [ 0xeb1d39384b680169843829431e57fd, 0xc9fcdddf203264a8313119df103abc, 0x000379 ] } , - BigNum { limbs: [ 0xe540b9c586fcea58550848d0259347, 0xba723ff8c505df9d9a8301247105a2, 0x00046c ] } , - BigNum { limbs: [ 0xd863493a775f14a7aaf7b62fda6cba, 0xece0e9a4b842539c3d85087d66ffb0, 0x006f80 ] } , - BigNum { limbs: [ 0x97ac9b42b5bc323c3e9892b876b461, 0xd6151fc5ce2e0c824958cba91b6f97, 0x001128 ] } , - BigNum { limbs: [ 0x25f767bd489fccc3c1676c47894ba0, 0xd13e09d7af1a26b78eaf3df8bc95bc, 0x0062c4 ] } , - BigNum { limbs: [ 0xe306b538773eb4b850d2a3eabf958f, 0x7355217fce074c0bb60b247d0d6499, 0x0033dc ] } , - BigNum { limbs: [ 0xda9d4dc7871d4a47af2d5b15406a72, 0x33fe081daf40e72e21fce524caa0b9, 0x004011 ] } , - BigNum { limbs: [ 0xd5081bd50bfe8c49ab063c9866233a, 0x8d40c2ef982f0174fd293ff31fa487, 0x00546f ] } , - BigNum { limbs: [ 0xe89be72af25d72b654f9c26799dcc7, 0x1a1266ade51931c4dadec9aeb860cb, 0x001f7e ] } , - BigNum { limbs: [ 0xd4dd6fb2dd1c1cec4a327b5d6681f3, 0x978bf9dde4f2a890bb7866fb5680a5, 0x00421a ] } , - BigNum { limbs: [ 0xe8c6934d213fe213b5cd83a2997e0e, 0x0fc72fbf98558aa91c8fa2a68184ad, 0x0031d3 ] } , - BigNum { limbs: [ 0x46e6e574bb0264650613937dec903a, 0xc4fdd5553c2b935c9c3ce1c6e9f013, 0x0004e9 ] } , - BigNum { limbs: [ 0x76bd1d8b43599a9af9ec6b82136fc7, 0xe2555448411c9fdd3bcb27daee1540, 0x006f03 ] } , - BigNum { limbs: [ 0x967c6423a55ee21c6f641f5ca11dfc, 0x2962daeacf09aac3e29a57a5f0d8ef, 0x0000f1 ] } , - BigNum { limbs: [ 0x27279edc58fd1ce3909bdfa35ee205, 0x7df04eb2ae3e8875f56db1fbe72c64, 0x0072fc ] } , - BigNum { limbs: [ 0xa48d852fc35b7c3556faf3eba03702, 0x7d9f742f652cb5537e7ab5699d8e10, 0x000a28 ] } , - BigNum { limbs: [ 0x19167dd03b0082caa9050b145fc8ff, 0x29b3b56e181b7de6598d54383a7743, 0x0069c5 ] } , - BigNum { limbs: [ 0x4ece6e79d374f7694d7d44aa42aaf2, 0x25830d537d2afc0117e00180409d8d, 0x005c98 ] } , - BigNum { limbs: [ 0x6ed594862ae70796b282ba55bd550f, 0x81d01c4a001d3738c02808219767c6, 0x001755 ] } , - BigNum { limbs: [ 0xb02312ec12eeec6e8f66fbf9b79cc1, 0xb52abbca218662fa4f9250a0361b14, 0x002c94 ] } , - BigNum { limbs: [ 0x0d80f013eb6d129170990306486340, 0xf2286dd35bc1d03f8875b901a1ea3f, 0x004758 ] } , - BigNum { limbs: [ 0x06b58844f30ad2b5006d3e54988604, 0x08e682580ff68a3ffa39d11f260543, 0x0051cb ] } , - BigNum { limbs: [ 0xb6ee7abb0b512c4aff92c0ab6779fd, 0x9e6ca7456d51a8f9ddce3882b20010, 0x002222 ] } , - BigNum { limbs: [ 0x07e8ac00ccd608596a75b117ddfba0, 0x1c78170c4872ed5d290fa2d313f10c, 0x0021a0 ] } , - BigNum { limbs: [ 0xb5bb56ff3185f6a6958a4de8220461, 0x8adb129134d545dcaef866cec41447, 0x00524d ] } , - BigNum { limbs: [ 0x309873a10967a45beb4be6840f3104, 0xdee51318c6e47085da8a68d064ea95, 0x005b93 ] } , - BigNum { limbs: [ 0x8d0b8f5ef4f45aa414b4187bf0cefd, 0xc86e1684b663c2b3fd7da0d1731abe, 0x001859 ] } , - BigNum { limbs: [ 0x6bccfd4eb9f5f9bac25779bd028d08, 0x4c188b40510d4553ed07dd76774c14, 0x00204e ] } , - BigNum { limbs: [ 0x51d705b1446605453da88542fd72f9, 0x5b3a9e5d2c3aede5eb002c2b60b93f, 0x00539f ] } , - BigNum { limbs: [ 0x9cde21536c74fac14aa34c68accbfa, 0xacabe5adc2561160383ee23ed3ba6d, 0x0017a9 ] } , - BigNum { limbs: [ 0x20c5e1ac91e7043eb55cb297533407, 0xfaa743efbaf221d99fc92763044ae6, 0x005c43 ] } , - BigNum { limbs: [ 0x0e05ddcf13a22fbd9b29beb5d8cc55, 0x7f61fc62e2a94bc3a5672aa39e4215, 0x000c58 ] } , - BigNum { limbs: [ 0xaf9e2530eab9cf4264d6404a2733ac, 0x27f12d3a9a9ee77632a0defe39c33e, 0x006795 ] } , - BigNum { limbs: [ 0x375b2142604d30f4d7712a9f7e571c, 0xcab5043cc4f48ad290c1186b578186, 0x005b3c ] } , - BigNum { limbs: [ 0x8648e1bd9e0ece0b288ed46081a8e5, 0xdc9e2560b853a8674746f1368083cd, 0x0018b0 ] } , - BigNum { limbs: [ 0x0d311f3cdb74b04dc26f175eaf57e2, 0x9930e7bfc55513a31b5c3e627cc654, 0x00000d ] } , - BigNum { limbs: [ 0xb072e3c322e74eb23d90e7a150a81f, 0x0e2241ddb7f31f96bcabcb3f5b3eff, 0x0073e0 ] } , - BigNum { limbs: [ 0x0a9c3e533dc34f63482f5e6ac7f5ee, 0x67bf56026f1264f3c71a7fc4285c1b, 0x001ef8 ] } , - BigNum { limbs: [ 0xb307c4acc098af9cb7d0a095380a13, 0x3f93d39b0e35ce4610ed89ddafa938, 0x0054f5 ] } , - BigNum { limbs: [ 0xf4363b42e95eb239d9acde14fb20e2, 0xa43cfc49003d2e82c238e01af647d6, 0x0034fe ] } , - BigNum { limbs: [ 0xc96dc7bd14fd4cc6265320eb04df1f, 0x03162d547d0b04b715cf2986e1bd7c, 0x003eef ] } , - BigNum { limbs: [ 0x537def6e0f30f92345e2553f15b27d, 0x399fdefa8ddc87f3c352e16c5500fb, 0x005ae6 ] } , - BigNum { limbs: [ 0x6a261391ef2b05dcba1da9c0ea4d84, 0x6db34aa2ef6bab4614b52835830458, 0x001907 ] } , - BigNum { limbs: [ 0x2f5049b1d0e187821f241ffda547a5, 0x8f3a988966e051b31982d33b68de07, 0x000c4e ] } , - BigNum { limbs: [ 0x8e53b94e2d7a777de0dbdf025ab85c, 0x181891141667e186be8536666f274c, 0x00679f ] } , - BigNum { limbs: [ 0x0f2fa24cca7e118a23f8184f67be53, 0x33bf9e5c6e898b6d5abad78fbbc311, 0x005a94 ] } , - BigNum { limbs: [ 0xae7460b333dded75dc07e6b09841ae, 0x73938b410ebea7cc7d4d32121c4242, 0x001959 ] } , - BigNum { limbs: [ 0x58b769fd60bae85dd0ba3600c21ea9, 0xcba700d5638da68d1e587fd67f193c, 0x00442a ] } , - BigNum { limbs: [ 0x64ec99029da116a22f45c8ff3de158, 0xdbac28c819ba8cacb9af89cb58ec17, 0x002fc2 ] } , - BigNum { limbs: [ 0x49a4ab02e82f769ee500f647f7d43b, 0xb7446f10658c06ede0897762f302e9, 0x003cc1 ] } , - BigNum { limbs: [ 0x73ff57fd162c88611aff08b8082bc6, 0xf00eba8d17bc2c4bf77e923ee5026a, 0x00372b ] } , - BigNum { limbs: [ 0x511800ae1cf2a898a5dc3fa6a50014, 0x687779a20ce0b1eeadb86ec0a240a1, 0x000f9d ] } , - BigNum { limbs: [ 0x6c8c0251e16956675a23bf595affed, 0x3edbaffb7067814b2a4f9ae135c4b2, 0x006450 ] } , - BigNum { limbs: [ 0xa29e201b732f6dad4c4a46f5409741, 0xb39452ab3a4709599704eba189b706, 0x0017f3 ] } , - BigNum { limbs: [ 0x1b05e2e48b2c9152b3b5b80abf68c0, 0xf3bed6f2430129e041031e004e4e4d, 0x005bf9 ] } , - BigNum { limbs: [ 0x8c90ec812879e1589db18082632470, 0x0d64d5746e14f108e29cdc4cf25ab0, 0x000bd7 ] } , - BigNum { limbs: [ 0x3113167ed5e21da7624e7e7d9cdb91, 0x99ee54290f334230f56b2d54e5aaa3, 0x006816 ] } , - BigNum { limbs: [ 0xe820d586118b4a5213a84b62a68904, 0x52bba176b0cf4add1ac0d9aa0cc9d8, 0x0046e3 ] } , - BigNum { limbs: [ 0xd5832d79ecd0b4adec57b39d5976fd, 0x54978826cc78e85cbd472ff7cb3b7a, 0x002d0a ] } , - BigNum { limbs: [ 0x285991341c908ed897ab600af26a9f, 0x4729896b3e93c2aeac62b2b1175d52, 0x006743 ] } , - BigNum { limbs: [ 0x954a71cbe1cb702768549ef50d9562, 0x6029a0323eb4708b2ba556f0c0a801, 0x000caa ] } , - BigNum { limbs: [ 0xee64f977b0bc8213b864a44525e8e4, 0x576fae62c2747e9d59a9016efb44e8, 0x001b4d ] } , - BigNum { limbs: [ 0xcf3f09884d9f7cec479b5abada171d, 0x4fe37b3abad3b49c7e5f0832dcc06a, 0x0058a0 ] } , - BigNum { limbs: [ 0xbb530e72b7bfc3855fca21c045e849, 0x249e0bfc4d51cc64d8b824c354c377, 0x0023d3 ] } , - BigNum { limbs: [ 0x0250f48d469c3b7aa035dd3fba17b8, 0x82b51da12ff666d4ff4fe4de8341dc, 0x00501a ] } , - BigNum { limbs: [ 0x82849fa29e943275fe4524a3df9914, 0x4787c92fb6003ec786b72669f55ce5, 0x00043f ] } , - BigNum { limbs: [ 0x3b1f635d5fc7cc8a01bada5c2066ed, 0x5fcb606dc747f4725150e337e2a86e, 0x006fae ] } , - BigNum { limbs: [ 0x6b6f86bf14aefcc2338ad83cdfa657, 0xb53f58ce81940a859ee7dfedce98f1, 0x005c9d ] } , - BigNum { limbs: [ 0x52347c40e9ad023dcc7526c32059aa, 0xf213d0cefbb428b4392029b4096c62, 0x00174f ] } , - BigNum { limbs: [ 0xdcf47128786d2189831ce42c6138b3, 0x498eb85e702360db58e449ef2a892a, 0x0003f6 ] } , - BigNum { limbs: [ 0xe0af91d785eedd767ce31ad39ec74e, 0x5dc4713f0d24d25e7f23bfb2ad7c28, 0x006ff7 ] } , - BigNum { limbs: [ 0xf89acd6211e66705b59d4d67e78267, 0x51a561f4691450c8d1e120be501af7, 0x003dde ] } , - BigNum { limbs: [ 0xc509359dec7597fa4a62b198187d9a, 0x55adc7a91433e2710626e8e387ea5b, 0x00360f ] } , - BigNum { limbs: [ 0x5c622bba78e96e62ad6e618cd63fc9, 0xe604e2122797b4fc5b308c0f64c4b1, 0x006f1b ] } , - BigNum { limbs: [ 0x6141d7458572909d52919d7329c038, 0xc14e478b55b07e3d7cd77d927340a2, 0x0004d1 ] } , - BigNum { limbs: [ 0x7e9861925f3c85728b638faa490c47, 0x8f85d4bb9c9568fd174cc19863a83f, 0x001590 ] } , - BigNum { limbs: [ 0x3f0ba16d9f1f798d749c6f55b6f3ba, 0x17cd54e1e0b2ca3cc0bb4809745d14, 0x005e5d ] } , - BigNum { limbs: [ 0x5cc1b32b2a1950ab93f25b2906d21a, 0x69a09d5aa6587cf3f6638899a0097e, 0x00671e ] } , - BigNum { limbs: [ 0x60e24fd4d442ae546c0da3d6f92de7, 0x3db28c42d6efb645e1a4810837fbd5, 0x000ccf ] } , - BigNum { limbs: [ 0xc8f5dd633013028cfda586295ea84b, 0x7cce960c7027f14b86bb7c12055e83, 0x003da0 ] } , - BigNum { limbs: [ 0xf4ae259cce48fc73025a78d6a157b6, 0x2a8493910d2041ee514c8d8fd2a6cf, 0x00364d ] } , - BigNum { limbs: [ 0x71d0d9c1e612bd99b980c752953536, 0x26c472d9a268f3d2329d2bd130b8e7, 0x005126 ] } , - BigNum { limbs: [ 0x4bd3293e18494166467f37ad6acacb, 0x808eb6c3dadf3f67a56addd0a74c6c, 0x0022c7 ] } , - BigNum { limbs: [ 0x735dfec23461fb447108a871678206, 0x593fb2d1e4796f84312c4cd1ae75c2, 0x000d82 ] } , - BigNum { limbs: [ 0x4a46043dc9fa03bb8ef7568e987dfb, 0x4e1376cb98cec3b5a6dbbcd0298f91, 0x00666b ] } , - BigNum { limbs: [ 0x29130b18a08ed66bb7b793ab94d67d, 0xd9b87eff068a96987520a4a84e5315, 0x006d86 ] } , - BigNum { limbs: [ 0x9490f7e75dcd289448486b546b2984, 0xcd9aaa9e76bd9ca162e764f989b23e, 0x000666 ] } , - BigNum { limbs: [ 0xefd6b0570bf109d58a5af42d010ff9, 0xb09858f43cef3ed6d55a6350721d79, 0x002f27 ] } , - BigNum { limbs: [ 0xcdcd52a8f26af52a75a50ad2fef008, 0xf6bad0a94058f46302ada65165e7d9, 0x0044c5 ] } , - BigNum { limbs: [ 0x977360b30175c52dbb2cf227158434, 0x2fe0ca12c0b44b70ca6708f3104867, 0x002318 ] } , - BigNum { limbs: [ 0x2630a24cfce639d244d30cd8ea7bcd, 0x77725f8abc93e7c90da100aec7bcec, 0x0050d5 ] } , - BigNum { limbs: [ 0x835c9ca817ed357b3354fe4df74d21, 0xa535477e1384fba967880c356fda5d, 0x006d52 ] } , - BigNum { limbs: [ 0x3a476657e66ec984ccab00b208b2e0, 0x021de21f69c33790707ffd6c682af6, 0x00069b ] } , - BigNum { limbs: [ 0x62f50c1fa01a6ebf12d1967f5228c6, 0xcccb86887bc1090ea1eafe6cd3d6f0, 0x0021c7 ] } , - BigNum { limbs: [ 0x5aaef6e05e419040ed2e6880add73b, 0xda87a31501872a2b361d0b35042e63, 0x005225 ] } , - BigNum { limbs: [ 0x783e184f0f10da4ad463040bfa6b96, 0x89d9a062ba8ff6e0797726f231b176, 0x004b12 ] } , - BigNum { limbs: [ 0x4565eab0ef4b24b52b9cfaf405946b, 0x1d79893ac2b83c595e90e2afa653dd, 0x0028db ] } , - BigNum { limbs: [ 0x7fcbf22df21291ca782131084255da, 0xb49750ddb83253aa8f5c166504001b, 0x002164 ] } , - BigNum { limbs: [ 0x3dd810d20c496d3587decdf7bdaa27, 0xf2bbd8bfc515df8f48abf33cd40538, 0x005288 ] } , - BigNum { limbs: [ 0xeea8827f4e9ec602b926b27753b127, 0xfbbd7f20c3ced966ea577b468e20b9, 0x004f0e ] } , - BigNum { limbs: [ 0xcefb8080afbd38fd46d94c88ac4eda, 0xab95aa7cb97959d2edb08e5b49e499, 0x0024de ] } , - BigNum { limbs: [ 0xa933db67c24c70716d094756b66d63, 0x1aa615b346f8ebad67ddc10c732ae8, 0x0004d2 ] } , - BigNum { limbs: [ 0x147027983c0f8e8e92f6b7a949929e, 0x8cad13ea364f478c702a489564da6b, 0x006f1b ] } , - BigNum { limbs: [ 0xf79311d4603ebe660cb35a9fa42972, 0xdb65a3240463f4216b3d286b5f60ee, 0x000b7b ] } , - BigNum { limbs: [ 0xc610f12b9e1d4099f34ca4605bd68f, 0xcbed867978e43f186ccae13678a464, 0x006871 ] } , - BigNum { limbs: [ 0xafc701df2ef92f02a3555fc5ee25f7, 0x471ca69edd738a2bb3e93d180d6310, 0x004751 ] } , - BigNum { limbs: [ 0x0ddd0120cf62cffd5caa9f3a11da0a, 0x603682fe9fd4a90e241ecc89caa243, 0x002c9c ] } , - BigNum { limbs: [ 0x83b10a7188a75be4d08b3a9bd95dc2, 0xc0e837c5ea1d5fd7929a9439bb000a, 0x0012c1 ] } , - BigNum { limbs: [ 0x39f2f88e75b4a31b2f74c46426a23f, 0xe66af1d7932ad362456d75681d0549, 0x00612b ] } , - BigNum { limbs: [ 0x40d6987940175aa503ad6c44bc5ff8, 0xb1e6bfb9702607fd3c97042f2373a4, 0x005a03 ] } , - BigNum { limbs: [ 0x7ccd6a86be44a45afc5292bb43a009, 0xf56c69e40d222b3c9b710572b491af, 0x0019e9 ] } , - BigNum { limbs: [ 0x9c55f6ffe871ea5ddbbc4e9b6615b8, 0x0415d906203d93cbbee466fd232897, 0x00005c ] } , - BigNum { limbs: [ 0x214e0c0015ea14a22443b06499ea49, 0xa33d50975d0a9f6e1923a2a4b4dcbc, 0x007391 ] } , - BigNum { limbs: [ 0xd30122c843684408d2342a11db2c67, 0xe20c7f6c968c5058ca294459777599, 0x002c14 ] } , - BigNum { limbs: [ 0xeaa2e037baf3baf72dcbd4ee24d39a, 0xc546aa30e6bbe2e10ddec548608fb9, 0x0047d8 ] } , - BigNum { limbs: [ 0xcf9853c5492f70dbe2b6ae6a65e380, 0x4b4b630bd746efffb256ee28750441, 0x000c94 ] } , - BigNum { limbs: [ 0xee0baf3ab52c8e241d4950959a1c81, 0x5c07c691a601433a25b11b79630111, 0x006759 ] } , - BigNum { limbs: [ 0xa240a2a069113c159a067743cae6c5, 0xeb7f91a0d0a7f1d0c3c19d09cf9306, 0x00585a ] } , - BigNum { limbs: [ 0x1b63605f954ac2ea65f987bc35193c, 0xbbd397fcaca0416914466c9808724d, 0x001b92 ] } , - BigNum { limbs: [ 0xc301f4f32087447899594a115b42ec, 0xa53a04150fa19233a27cfafd0e6ca8, 0x002e4c ] } , - BigNum { limbs: [ 0xfaa20e0cddd4ba8766a6b4eea4bd15, 0x021925886da6a106358b0ea4c998aa, 0x0045a1 ] } , - BigNum { limbs: [ 0xb12fefba555a4c968b0decdd5c8bff, 0xbdc683722a25b401681bc0a21dae2e, 0x001c50 ] } , - BigNum { limbs: [ 0x0c741345a901b26974f21222a37402, 0xe98ca62b53227f386fec48ffba5725, 0x00579c ] } , - BigNum { limbs: [ 0xefb15e20ddffa892cbd498b8ae4748, 0x2ca691fde3753d113105a6f6224cab, 0x0037a8 ] } , - BigNum { limbs: [ 0xcdf2a4df205c566d342b664751b8b9, 0x7aac979f99d2f628a70262abb5b8a7, 0x003c45 ] } , - BigNum { limbs: [ 0xde6c81def05707ddd48b53c0632b7f, 0xb79237478ed134868d055a78d4d127, 0x006482 ] } , - BigNum { limbs: [ 0xdf3781210e04f7222b74ab3f9cd482, 0xefc0f255ee76feb34b02af2903342b, 0x000f6a ] } , - BigNum { limbs: [ 0x905e68e892d76597534a53351aeb21, 0xc2b7e09e88cf54c6bcf61242906281, 0x001c1b ] } , - BigNum { limbs: [ 0x2d459a176b849968acb5abcae514e0, 0xe49b48fef478de731b11f75f47a2d2, 0x0057d1 ] } , - BigNum { limbs: [ 0x3059b2dacb997091e05fa34880ee67, 0xb79d4996ad5169ae844074894dab48, 0x002374 ] } , - BigNum { limbs: [ 0x8d4a502532c28e6e1fa05bb77f119a, 0xefb5e006cff6c98b53c795188a5a0b, 0x005078 ] } , - BigNum { limbs: [ 0x81a6284dfcdcdb79aca024dfa3bea6, 0x4cf83a91c028b44b584b898ea2487e, 0x0032af ] } , - BigNum { limbs: [ 0x3bfddab2017f2386535fda205c415b, 0x5a5aef0bbd1f7eee7fbc801335bcd5, 0x00413e ] } , - BigNum { limbs: [ 0xe255d810db7c7ba57428937e370687, 0x2e7f20b138794741d7afe1d1739af4, 0x004cf7 ] } , - BigNum { limbs: [ 0xdb4e2aef22df835a8bd76b81c8f97a, 0x78d408ec44ceebf8005827d0646a5e, 0x0026f6 ] } , - BigNum { limbs: [ 0x2a36904e65334d504798a56d84b81b, 0x4e6452d677424619a91495c55a387a, 0x001963 ] } , - BigNum { limbs: [ 0x936d72b19928b1afb86759927b47e6, 0x58eed6c70605ed202ef373dc7dccd9, 0x005a8a ] } , - BigNum { limbs: [ 0x892679c5bf83b3bedbfaac558c8d18, 0xe9ac49520d3dc9997bf03a451a6630, 0x003754 ] } , - BigNum { limbs: [ 0x347d893a3ed84b41240552aa7372e9, 0xbda6e04b700a69a05c17cf5cbd9f23, 0x003c98 ] } , - BigNum { limbs: [ 0xf254f66ae5ee531c14292bf0255fd5, 0x1effcfc73d5c86252263d4232859d9, 0x00526e ] } , - BigNum { limbs: [ 0xcb4f0c95186dabe3ebd6d30fdaa02c, 0x885359d63febad14b5a4357eafab79, 0x00217f ] } , - BigNum { limbs: [ 0xe17e99d8256761f9a5ad12c1f3853f, 0x36423bc3f0fae23f188a9a547b7d01, 0x006a6d ] } , - BigNum { limbs: [ 0xdc256927d8f49d065a52ec3e0c7ac2, 0x7110edd98c4d50fabf7d6f4d5c8851, 0x000980 ] } , - BigNum { limbs: [ 0x306689091abed321eed5418571ac33, 0x92d95a4ef11d7cddd189d0ec4d20a0, 0x000e3d ] } , - BigNum { limbs: [ 0x8d3d79f6e39d2bde112abd7a8e53ce, 0x1479cf4e8c2ab65c067e38b58ae4b3, 0x0065b0 ] } , - BigNum { limbs: [ 0x3d1d54f8f2982de43fdb36bf47bcc3, 0xba63f2b18adc6f2e9e0b45136d4f1c, 0x006efb ] } , - BigNum { limbs: [ 0x8086ae070bc3d11bc024c840b8433e, 0xecef36ebf26bc40b39fcc48e6ab637, 0x0004f1 ] } , - BigNum { limbs: [ 0x902f381368c0b10a873d6c9d82cbdd, 0x7b0015a2d0fe32712683cabe07344f, 0x0050ee ] } , - BigNum { limbs: [ 0x2d74caec959b4df578c292627d3424, 0x2c5313faac4a00c8b1843ee3d0d104, 0x0022ff ] } , - BigNum { limbs: [ 0xee61519e282a1877ab619f936cb9e1, 0xf2c40c622d5c14a79f3664b930f42d, 0x002e62 ] } , - BigNum { limbs: [ 0xcf42b161d631e688549e5f6c934620, 0xb48f1d3b4fec1e9238d1a4e8a71125, 0x00458a ] } , - BigNum { limbs: [ 0xc4dccaecd1fbf5e4f8b0b094a83cb3, 0xa8ec3ef066195ec440a4e3fd2ea14c, 0x000539 ] } , - BigNum { limbs: [ 0xf8c738132c60091b074f4e6b57c34e, 0xfe66eaad172ed475976325a4a96406, 0x006eb3 ] } , - BigNum { limbs: [ 0xea27b86283f69cf28211eacc0710ff, 0x0a61fb4687169578008f160eb02032, 0x0016a8 ] } , - BigNum { limbs: [ 0xd37c4a9d7a65620d7dee1433f8ef02, 0x9cf12e56f6319dc1d778f39327e520, 0x005d45 ] } , - BigNum { limbs: [ 0x53ec9a4a2ac078308183f53cba4097, 0x9444ba3d2df9d017f9d3a6beb55f1f, 0x004fb9 ] } , - BigNum { limbs: [ 0x69b768b5d39b86cf7e7c09c345bf6a, 0x130e6f604f4e6321de3462e322a634, 0x002434 ] } , - BigNum { limbs: [ 0xd20df595f39f2afdc2fcf153ad903c, 0x2ece77c82d2c0c03b16ef100307a6e, 0x000d33 ] } , - BigNum { limbs: [ 0xeb960d6a0abcd4023d030dac526fc5, 0x7884b1d5501c2736269918a1a78ae4, 0x0066ba ] } , - BigNum { limbs: [ 0x0ac6a330a41421f54ee691e0643777, 0x4f96d2ac9b3923c8d9e9259802f7d7, 0x002194 ] } , - BigNum { limbs: [ 0xb2dd5fcf5a47dd0ab1196d1f9bc88a, 0x57bc56f0e20f0f70fe1ee409d50d7c, 0x005259 ] } , - BigNum { limbs: [ 0x0e3d52802ba363eb2b24461b367723, 0x0dba5e260f57ac9e3e8ba3ed80a750, 0x006e68 ] } , - BigNum { limbs: [ 0xaf66b07fd2b89b14d4dbb8e4c988de, 0x9998cb776df0869b997c65b4575e03, 0x000585 ] } , - BigNum { limbs: [ 0xc786c39e8d76c168070ff63089758b, 0x4bf2fd4556aba449afd09e0b523b9a, 0x0047cd ] } , - BigNum { limbs: [ 0xf61d3f6170e53d97f8f008cf768a76, 0x5b602c58269c8ef028376b9685c9b8, 0x002c20 ] } , - BigNum { limbs: [ 0x5b740bab2ae626b3a288e56cbe6ba2, 0x2ec9ee1056d93f5bdf1610b8e02c02, 0x0061be ] } , - BigNum { limbs: [ 0x622ff754d375d84c5d77199341945f, 0x78893b8d266ef3ddf8f1f8e8f7d951, 0x00122f ] } , - BigNum { limbs: [ 0xb2b4506b58821b9782d98e09dd2095, 0x1180e4201fdd09faded963276eda9c, 0x001717 ] } , - BigNum { limbs: [ 0x0aefb294a5d9e3687d2670f622df6c, 0x95d2457d5d6b293ef92ea67a692ab7, 0x005cd6 ] } , - BigNum { limbs: [ 0x59d09e36445b2c8d76f7be4ffbdf0c, 0x7d907dfec3418f3e53c99a199f8fa5, 0x005deb ] } , - BigNum { limbs: [ 0x63d364c9ba00d272890840b00420f5, 0x29c2ab9eba06a3fb843e6f883875ae, 0x001602 ] } , - BigNum { limbs: [ 0x5abe13ab2a152efe228225b0b37c11, 0x78ed18c25162b9575235ed65ee9b01, 0x005681 ] } , - BigNum { limbs: [ 0x62e5ef54d446d001dd7dd94f4c83f0, 0x2e6610db2be579e285d21c3be96a52, 0x001d6c ] } , - BigNum { limbs: [ 0xd8c7e12991d3593a7478c980a80dcd, 0xb7a1c70a28635fea4420d98de0ddff, 0x00077f ] } , - BigNum { limbs: [ 0xe4dc21d66c88a5c58b87357f57f234, 0xefb1629354e4d34f93e73013f72753, 0x006c6d ] } , - BigNum { limbs: [ 0xbe7f08f42eb31a40103db7fbe67596, 0x76187ee6c6269fbef78669ab90d7d8, 0x005cb3 ] } , - BigNum { limbs: [ 0xff24fa0bcfa8e4bfefc24704198a6b, 0x313aaab6b721937ae0819ff6472d7a, 0x00173a ] } , - BigNum { limbs: [ 0x1234f45f84b51a2458759b86aa9b46, 0xbce4857298de5aa7436a8e41578bef, 0x001ade ] } , - BigNum { limbs: [ 0xab6f0ea079a6e4dba78a63795564bb, 0xea6ea42ae469d892949d7b60807964, 0x00590e ] } , - BigNum { limbs: [ 0xe8cb30c74f3496a5de0a8cb929b435, 0x7142c749358132565e4a3f276dddcf, 0x00263d ] } , - BigNum { limbs: [ 0xd4d8d238af27685a21f57246d64bcc, 0x3610625447c700e379bdca7a6a2783, 0x004db0 ] } , - BigNum { limbs: [ 0xc06812fcc08500e1b3a80d3dc99e5a, 0xde2bae7c6bb687328292c58f0914fc, 0x000a7a ] } , - BigNum { limbs: [ 0xfd3bf0033dd6fe1e4c57f1c23661a7, 0xc9277b211191ac0755754412cef056, 0x006972 ] } , - BigNum { limbs: [ 0xc8b17cc28f5b5914730aa651dc14c6, 0x0a2862c6b0aa7e00857f06f8f13093, 0x001dca ] } , - BigNum { limbs: [ 0xf4f2863d6f00a5eb8cf558ae23eb3b, 0x9d2ac6d6cc9db539528902a8e6d4bf, 0x005623 ] } , - BigNum { limbs: [ 0x1230bc0e387e9558bd52e8fdf0f3fa, 0x0e85c8adf888bf4821c2f7e1d5e5bb, 0x003755 ] } , - BigNum { limbs: [ 0xab7346f1c5dd69a742ad16020f0c07, 0x98cd60ef84bf73f1b64511c0021f98, 0x003c98 ] } , - BigNum { limbs: [ 0xe24941616914e7ad110ef96d2c8b89, 0x2f2b1ea09b86b3e9ced3336c9ff439, 0x001bbc ] } , - BigNum { limbs: [ 0xdb5ac19e95471752eef10592d37478, 0x78280afce1c17f500934d635381119, 0x005831 ] } , - BigNum { limbs: [ 0xb530ecbcf382bb730881f99cce2b05, 0x97b86edc1c02dfa201d28456bec63b, 0x00008a ] } , - BigNum { limbs: [ 0x087316430ad9438cf77e056331d4fc, 0x0f9abac161455397d635854b193f18, 0x007363 ] } , - BigNum { limbs: [ 0xa7275730b5b11515f4e3caddb042a0, 0xf0a1a79dc567185006d5ff757c19fe, 0x0056c8 ] } , - BigNum { limbs: [ 0x167cabcf48aae9ea0b1c34224fbd61, 0xb6b181ffb7e11ae9d1320a2c5beb55, 0x001d24 ] } , - BigNum { limbs: [ 0x61b6a2481f0bc6f89b6e4cc3f8a8d9, 0xcbcfbfa6e1cac504800176c799853b, 0x005048 ] } , - BigNum { limbs: [ 0x5bed60b7df5038076491b23c075728, 0xdb8369f69b7d6e35580692da3e8018, 0x0023a4 ] } , - BigNum { limbs: [ 0x65dd758be92292d21af29fac91cf26, 0xf5feecd35328814b1382cf67a22cc2, 0x00503f ] } , - BigNum { limbs: [ 0x57c68d7415396c2de50d5f536e30db, 0xb1543cca2a1fb1eec4853a3a35d891, 0x0023ad ] } , - BigNum { limbs: [ 0x1f5a7f98a0d41d2fb01e7994ae9e07, 0x266275af949d1efef1ea963a619c6d, 0x007145 ] } , - BigNum { limbs: [ 0x9e4983675d87e1d04fe1856b5161fa, 0x80f0b3ede8ab143ae61d73677668e6, 0x0002a8 ] } , - BigNum { limbs: [ 0x8d78320cf0b1dc0bf6682a1f324c98, 0xd95c3d037697cca953c9a7d7135772, 0x004e04 ] } , - BigNum { limbs: [ 0x302bd0f30daa22f40997d4e0cdb369, 0xcdf6ec9a06b06690843e61cac4ade1, 0x0025e8 ] } , - BigNum { limbs: [ 0xab429c42218eea9d1a8d0cdf05b3f5, 0xba420ebae0ca2485088dcd0eedfd0f, 0x004571 ] } , - BigNum { limbs: [ 0x126166bddccd1462e572f220fa4c0c, 0xed111ae29c7e0eb4cf7a3c92ea0844, 0x002e7b ] } , - BigNum { limbs: [ 0x8a07f9f945e0a8a970b4f3f6820606, 0xc78bdc342aafc2989b69d7031f283b, 0x003573 ] } , - BigNum { limbs: [ 0x339c0906b87b56568f4b0b097df9fb, 0xdfc74d69529870a13c9e329eb8dd18, 0x003e79 ] } , - BigNum { limbs: [ 0x17df56d813171c551a3d49cec26fff, 0xd46e142d366d1862d870c69ea23d3b, 0x0034df ] } , - BigNum { limbs: [ 0xa5c4ac27eb44e2aae5c2b5313d9002, 0xd2e5157046db1ad6ff97430335c818, 0x003f0d ] } , - BigNum { limbs: [ 0x71280f074d1440d341280e40f6ff69, 0x493dd2c18195b3d4f002ab14fce7d7, 0x003657 ] } , - BigNum { limbs: [ 0x4c7bf3f8b147be2cbed7f0bf090098, 0x5e1556dbfbb27f64e8055e8cdb1d7c, 0x003d96 ] } , - BigNum { limbs: [ 0x7d5dfa3a479c8e611337171217a856, 0x8a69cc191d70c9bffed16f4a90e9b9, 0x0023f6 ] } , - BigNum { limbs: [ 0x404608c5b6bf709eecc8e7ede857ab, 0x1ce95d845fd76979d9369a57471b9a, 0x004ff7 ] } , - BigNum { limbs: [ 0x2297d77e27dabdc088bdd905a55f21, 0xe5ba74ab8f7b7943135dbd04ce91ce, 0x000ec6 ] } , - BigNum { limbs: [ 0x9b0c2b81d681413f774225fa5aa0e0, 0xc198b4f1edccb9f6c4aa4c9d097385, 0x006526 ] } , - BigNum { limbs: [ 0x1780f66062d06efdbc5c8f8076051c, 0xff129029040c12f30d72abc32d1510, 0x002214 ] } , - BigNum { limbs: [ 0xa6230c9f9b8b900243a36f7f89fae5, 0xa8409974793c2046ca955ddeaaf043, 0x0051d8 ] } , - BigNum { limbs: [ 0xff74fc1738cfd4e640defe9c3d1988, 0x5f9a2cb148576539d6e7048fb70e71, 0x002be5 ] } , - BigNum { limbs: [ 0xbe2f06e8c58c2a19bf210063c2e679, 0x47b8fcec34f0ce000121051220f6e1, 0x004808 ] } , - BigNum { limbs: [ 0xfee0e9919be7eb242860ad1233361d, 0x51765816dd0870c5f64dfff44c0fe1, 0x005251 ] } , - BigNum { limbs: [ 0xbec3196e627413dbd79f51edccc9e4, 0x55dcd186a03fc273e1ba09ad8bf571, 0x00219c ] } , - BigNum { limbs: [ 0x1d417ac2d72f8681deb3aea33c8449, 0xf5bec7ef45efbf9de97916504aabd2, 0x002801 ] } , - BigNum { limbs: [ 0xa062883d272c787e214c505cc37bb8, 0xb19461ae3758739bee8ef3518d5981, 0x004beb ] } , - BigNum { limbs: [ 0xffd9cd43748cd07e797c34f167e1ae, 0xfb8721c1baed95f9167176d30171d8, 0x0032d0 ] } , - BigNum { limbs: [ 0xbdca35bc89cf2e818683ca0e981e53, 0xabcc07dbc25a9d40c19692ced6937a, 0x00411c ] } , - BigNum { limbs: [ 0x46efcbd5cbd25bcdea20340e865edc, 0x5cf7ea7460e71bb5ebece92e50178a, 0x003bbb ] } , - BigNum { limbs: [ 0x76b4372a3289a33215dfcaf179a125, 0x4a5b3f291c611783ec1b207387edc9, 0x003832 ] } , - BigNum { limbs: [ 0x1acd98fa4e19e15adb37a5ea82fe43, 0x64500bde4ae6b522fed010b950c90d, 0x0039b7 ] } , - BigNum { limbs: [ 0xa2d66a05b0421da524c859157d01be, 0x43031dbf32617e16d937f8e8873c46, 0x003a36 ] } , - BigNum { limbs: [ 0xf97bf1fe6c26fcec89f106fb90245c, 0xcc7b13e9ecf1b6504cd2a95cc231ba, 0x00707c ] } , - BigNum { limbs: [ 0xc428110192350213760ef8046fdba5, 0xdad815b390567ce98b35604515d398, 0x000370 ] } , - BigNum { limbs: [ 0xb40031a396daed1d58d36d2887248a, 0xefd47eb0b490fb4b5fe309008ffb30, 0x0025d6 ] } , - BigNum { limbs: [ 0x09a3d15c678111e2a72c91d778db77, 0xb77eaaecc8b737ee782500a1480a23, 0x004e16 ] } , - BigNum { limbs: [ 0xb896192a36d9e94f4e49f4db97e1d9, 0x2ffe51ef6ac663a47e046c9d5d166c, 0x003fd0 ] } , - BigNum { limbs: [ 0x050de9d5c78215b0b1b60a24681e28, 0x7754d7ae1281cf955a039d047aeee7, 0x00341d ] } , - BigNum { limbs: [ 0x3c79d13bd65d4193ca2d1bc7fd9263, 0x66ae43c4c3c56831575a9d83a15eb2, 0x003933 ] } , - BigNum { limbs: [ 0x812a31c427febd6c35d2e338026d9e, 0x40a4e5d8b982cb0880ad6c1e36a6a1, 0x003aba ] } , - BigNum { limbs: [ 0x8534756de28ddf9c097282f8518c00, 0x2e85cd535086081a5545bd583161c8, 0x005fc4 ] } , - BigNum { limbs: [ 0x386f8d921bce1f63f68d7c07ae7401, 0x78cd5c4a2cc22b1f82c24c49a6a38b, 0x001429 ] } , - BigNum { limbs: [ 0x7ad52f8a5c627be96a0110191444de, 0xd5d6f7db3f4f0f669bb5886c3af4cb, 0x000753 ] } , - BigNum { limbs: [ 0x42ced375a1f9831695feeee6ebbb23, 0xd17c31c23df923d33c5281359d1088, 0x006c99 ] } , - BigNum { limbs: [ 0xfcbf4084f4f9b2c30b3c3647dd9723, 0x82a49d6b5c74782c1cd532b1b61313, 0x002b73 ] } , - BigNum { limbs: [ 0xc0e4c27b09624c3cf4c3c8b82268de, 0x24ae8c3220d3bb0dbb32d6f021f23f, 0x00487a ] } , - BigNum { limbs: [ 0x5167b6e1c6e7094e396cf2c8808fc1, 0x2b3fd45a67f93cbcdfb94554c90356, 0x00403c ] } , - BigNum { limbs: [ 0x6c3c4c1e3774f5b1c6930c377f7040, 0x7c135543154ef67cf84ec44d0f01fd, 0x0033b1 ] } , - BigNum { limbs: [ 0xaad9d1e07e8ad1c6704a19b8498e4c, 0x9a8e6f552967166e1d63d16fa4191b, 0x002cfc ] } , - BigNum { limbs: [ 0x12ca311f7fd12d398fb5e547b671b5, 0x0cc4ba4853e11ccbbaa4383233ec38, 0x0046f1 ] } , - BigNum { limbs: [ 0xa6f095c3e393ea78bad60fe8295af1, 0x51570dd9c749cd846dedf76d82d68e, 0x0018f1 ] } , - BigNum { limbs: [ 0x16b36d3c1ac814874529ef17d6a510, 0x55fc1bc3b5fe65b56a1a1234552ec5, 0x005afc ] } , - BigNum { limbs: [ 0xd4799a1030031151641d355ed74859, 0xa82ef937f7a8184e37dc8531cf3300, 0x005c33 ] } , - BigNum { limbs: [ 0xe92a68efce58edae9be2c9a128b7a8, 0xff24306585a01aeba02b847008d252, 0x0017b9 ] } , - BigNum { limbs: [ 0x9183dce28ef8014fe8d6d7c4afe0a9, 0xcfdf2f836149018debf684e68567f3, 0x002b70 ] } , - BigNum { limbs: [ 0x2c20261d6f63fdb01729273b501f58, 0xd773fa1a1bff31abec1184bb529d60, 0x00487c ] } , - BigNum { limbs: [ 0x78921f813dbb183c71a7402ec2eed5, 0x4ad5a9709b098e4630618320a9220e, 0x0034ff ] } , - BigNum { limbs: [ 0x4511e37ec0a0e6c38e58bed13d112c, 0x5c7d802ce23ea4f3a7a686812ee345, 0x003eee ] } , - BigNum { limbs: [ 0xb104627af5b12aeb15f8b2e0dc45d1, 0xafb9f051dae05d758652dede4d953e, 0x005765 ] } , - BigNum { limbs: [ 0x0c9fa08508aad414ea074c1f23ba30, 0xf799394ba267d5c451b52ac38a7015, 0x001c87 ] } , - BigNum { limbs: [ 0x076c47c5c2c17969253d44de1e4d00, 0x18e25537e45a543a827b37d2ebc611, 0x000970 ] } , - BigNum { limbs: [ 0xb637bb3a3b9a8596dac2ba21e1b301, 0x8e70d46598eddeff558cd1ceec3f42, 0x006a7d ] } , - BigNum { limbs: [ 0x1a77c155967b404f527ffbb148e55b, 0x124a85c2aa3222dad195f08db8c103, 0x004820 ] } , - BigNum { limbs: [ 0xa32c41aa67e0beb0ad80034eb71aa6, 0x9508a3dad316105f067219141f4450, 0x002bcd ] } , - BigNum { limbs: [ 0x526ac238e5a0c5a70265e120dec41a, 0xb91dbc2c171b610f40689e8bdb7e85, 0x0054a2 ] } , - BigNum { limbs: [ 0x6b3940c718bb3958fd9a1ddf213be7, 0xee356d71662cd22a979f6b15fc86ce, 0x001f4a ] } , - BigNum { limbs: [ 0xbc3f5982e5d13e52ac9853b184617d, 0xcfe5971c4e6c2818670f0f6e1efe30, 0x005db5 ] } , - BigNum { limbs: [ 0x0164a97d188ac0ad5367ab4e7b9e84, 0xd76d92812edc0b2170f8fa33b90723, 0x001637 ] } , - BigNum { limbs: [ 0xea190ee72171b5bf96906be310d83a, 0xb49f8ab5bb56e6d4fddaed19d920a7, 0x005edc ] } , - BigNum { limbs: [ 0xd38af418dcea4940696f931cef27c7, 0xf2b39ee7c1f14c64da2d1c87fee4ab, 0x001510 ] } , - BigNum { limbs: [ 0x1ca7fc06a7652dce89d9caeca2788e, 0x41484cc523db20e2ed344c1f0d27dc, 0x006fb2 ] } , - BigNum { limbs: [ 0xa0fc06f956f6d131762634135d8773, 0x660adcd8596d1256ead3bd82cadd77, 0x00043b ] } , - BigNum { limbs: [ 0x24ee69f08086a145b0c011142f943c, 0xbc8be1039af2e00b5ea72b0ce3cc51, 0x002f6b ] } , - BigNum { limbs: [ 0x98b5990f7dd55dba4f3fedebd06bc5, 0xeac74899e255532e7960de94f43902, 0x004481 ] } , - BigNum { limbs: [ 0x4e43d7d4c8cc800c599e831e62b8d6, 0xfe6e13f0c70ec64b7d75ada9bc94dc, 0x0020c6 ] } , - BigNum { limbs: [ 0x6f602b2b358f7ef3a6617be19d472b, 0xa8e515acb6396cee5a925bf81b7077, 0x005326 ] } , - BigNum { limbs: [ 0xa4cf29a5781cc8b8f0b1427b5e42f8, 0x14f60f00b7cfd56abdc480f96f516e, 0x001acf ] } , - BigNum { limbs: [ 0x18d4d95a863f36470f4ebc84a1bd09, 0x925d1a9cc5785dcf1a4388a868b3e5, 0x00591e ] } , - BigNum { limbs: [ 0x860ca3e0b0c8cd0d2607b31e34bf62, 0x39b5bc3017ffbab6734e04debb058b, 0x0046b3 ] } , - BigNum { limbs: [ 0x37975f1f4d9331f2d9f84be1cb409f, 0x6d9d6d6d6548788364ba04c31cffc8, 0x002d3a ] } , - BigNum { limbs: [ 0xaa0aa405432df6ef7fba47f56fb3d8, 0x3e710294f33c1a7756ed868ab15142, 0x005dc7 ] } , - BigNum { limbs: [ 0x13995efabb2e08108045b70a904c29, 0x68e227088a0c18c2811a831726b411, 0x001626 ] } , - BigNum { limbs: [ 0xe49f3bc59065cd5a9925b13969600f, 0x8418db7c8f6c07faa3df067d96a234, 0x0062b2 ] } , - BigNum { limbs: [ 0xd904c73a6df631a566da4dc6969ff2, 0x233a4e20eddc2b3f3429032441631e, 0x00113b ] } , - BigNum { limbs: [ 0x08f69bb5a34d7a4d4166e5018414f8, 0x0bd90a98a833477c49bd9f429e3221, 0x006bd5 ] } , - BigNum { limbs: [ 0xb4ad674a5b0e84b2be9919fe7beb09, 0x9b7a1f04d514ebbd8e4a6a5f39d332, 0x000818 ] } , - BigNum { limbs: [ 0x858e55d4b05011c65654cc6e143494, 0x5f38c3c0928bc650a7b8aabc2c90b0, 0x00637a ] } , - BigNum { limbs: [ 0x3815ad2b4e0bed39a9ab3291ebcb6d, 0x481a65dceabc6ce9304f5ee5ab74a3, 0x001073 ] } , - BigNum { limbs: [ 0x56451a0f2e97031e3ac422a3bebfce, 0x375f4d14b97ee1c87bd168b412c9dc, 0x0007ce ] } , - BigNum { limbs: [ 0x675ee8f0cfc4fbe1c53bdc5c414033, 0x6ff3dc88c3c951715c36a0edc53b77, 0x006c1f ] } , - BigNum { limbs: [ 0x203872ef16ad220269e1371ad9a322, 0x6fbb53c9f81b01ac67d632538bc740, 0x00731a ] } , - BigNum { limbs: [ 0x9d6b9010e7aedcfd961ec7e5265cdf, 0x3797d5d3852d318d7031d74e4c3e13, 0x0000d3 ] } , - BigNum { limbs: [ 0x46ca8e879475036676bb13db1cfdd7, 0xb14784ed9323b84e3224c2e800f6bf, 0x0044df ] } , - BigNum { limbs: [ 0x76d9747869e6fb998944eb24e3022a, 0xf60ba4afea247aeba5e346b9d70e94, 0x002f0d ] } , - BigNum { limbs: [ 0x3f2f1cdac0bdd61490fae57a7c33a7, 0xe357b3f96e6d94c1b71405e3140b1f, 0x001189 ] } , - BigNum { limbs: [ 0x7e74e6253d9e28eb6f05198583cc5a, 0xc3fb75a40eda9e7820f403bec3fa34, 0x006263 ] } , - BigNum { limbs: [ 0x55ed36483309549cee4813c5113cae, 0x623b190ab7ecc0e1424947746063b4, 0x006bbf ] } , - BigNum { limbs: [ 0x67b6ccb7cb52aa6311b7eb3aeec353, 0x45181092c55b725895bec22d77a19f, 0x00082e ] } , - BigNum { limbs: [ 0x1b0f77f0d55ea106e039f68e5ab3dd, 0x860235a7434baffb53bd6eab1fa801, 0x003664 ] } , - BigNum { limbs: [ 0xa2948b0f28fd5df91fc60871a54c24, 0x2150f3f639fc833e844a9af6b85d52, 0x003d89 ] } , - BigNum { limbs: [ 0xe78026be2d5e7457717af258d76b50, 0xdacf4627bc5be4665ae77a4160334d, 0x000eeb ] } , - BigNum { limbs: [ 0xd623dc41d0fd8aa88e850ca72894b1, 0xcc83e375c0ec4ed37d208f6077d205, 0x006501 ] } , - BigNum { limbs: [ 0x67bb8c3c1db6ea8505ca50e03d6419, 0x9cbef4cf3ede358ff43badf4f95a4a, 0x004340 ] } , - BigNum { limbs: [ 0x55e876c3e0a5147afa35ae1fc29be8, 0x0a9434ce3e69fda9e3cc5bacdeab09, 0x0030ad ] } , - BigNum { limbs: [ 0x5f6b1fce35a767a42cef3b59936aca, 0x330034910c6106697712ede6bda93f, 0x006c0d ] } , - BigNum { limbs: [ 0x5e38e331c8b4975bd310c3a66c9537, 0x7452f50c70e72cd060f51bbb1a5c14, 0x0007e0 ] } , - BigNum { limbs: [ 0x3a056f49df88978ecfab339e06cb5b, 0x2071f73b29bb76665151b4cb89bba9, 0x000d56 ] } , - BigNum { limbs: [ 0x839e93b61ed367713054cb61f934a6, 0x86e13262538cbcd386b654d64e49aa, 0x006697 ] } , - BigNum { limbs: [ 0xef2c4c46e3ffffcb692d0528f44414, 0xacccb9468e3c4282dc4972a3cca5fb, 0x0005ca ] } , - BigNum { limbs: [ 0xce77b6b91a5bff3496d2f9d70bbbed, 0xfa867056ef0bf0b6fbbe96fe0b5f57, 0x006e22 ] } , - BigNum { limbs: [ 0x881eea9a94f19f18bb67ac498bb306, 0xdd3a18e8bc717109bb87546c7be526, 0x001055 ] } , - BigNum { limbs: [ 0x35851865696a5fe7449852b6744cfb, 0xca1910b4c0d6c2301c80b5355c202d, 0x006397 ] } , - BigNum { limbs: [ 0xa7f2c626b2e4def707a2d2027625b3, 0x9b9923940fc900b3afc1442ae9abaf, 0x006fa1 ] } , - BigNum { limbs: [ 0x15b13cd94b772008f85d2cfd89da4e, 0x0bba06096d7f32862846c576ee59a4, 0x00044c ] } , - BigNum { limbs: [ 0x10558d9aa509ab0e5ae9a70d5d061a, 0xc356d0de01d48ff79d5e980fce6409, 0x004e6f ] } , - BigNum { limbs: [ 0xad4e7565595253f1a51657f2a2f9e7, 0xe3fc58bf7b73a3423aa9719209a14a, 0x00257d ] } , - BigNum { limbs: [ 0x23c188df7ce263b135c7a97914d377, 0x39349820411f5fc93aca2333a367b1, 0x0031d6 ] } , - BigNum { limbs: [ 0x99e27a2081799b4eca385586eb2c8a, 0x6e1e917d3c28d3709d3de66e349da2, 0x004217 ] } , - BigNum { limbs: [ 0x6246eaafa91200119436ea05caedb2, 0xfe0d05b931869a29e30166d46cc7b6, 0x004b5e ] } , - BigNum { limbs: [ 0x5b5d18505549feee6bc914fa35124f, 0xa94623e44bc1990ff506a2cd6b3d9d, 0x00288e ] } , - BigNum { limbs: [ 0x9d99175038716628f47d40e82d15bd, 0x093fd8cc8c196a702485b38d5808f4, 0x00713d ] } , - BigNum { limbs: [ 0x200aebafc5ea98d70b82be17d2ea44, 0x9e1350d0f12ec8c9b38256147ffc5f, 0x0002b0 ] } , - BigNum { limbs: [ 0xeb780345d8d48e768d55926c7e753e, 0x99ddf792e5371ad4958bc9e7000449, 0x005664 ] } , - BigNum { limbs: [ 0xd22bffba2587708972aa6c93818ac3, 0x0d75320a98111865427c3fbad80109, 0x001d89 ] } , - BigNum { limbs: [ 0x252bfa132081f9d0568f04b84b2a00, 0x3359a03f722a55433db658105171ca, 0x00726e ] } , - BigNum { limbs: [ 0x987808ecddda052fa970fa47b4d601, 0x73f9895e0b1dddf69a51b191869389, 0x00017f ] } , - BigNum { limbs: [ 0x4430904a87ce25144f897786ee3fb6, 0x09193ddd55abe3de5d7d83eacc3d55, 0x002f75 ] } , - BigNum { limbs: [ 0x797372b5768dd9ebb076877911c04b, 0x9e39ebc0279c4f5b7a8a85b70bc7fe, 0x004478 ] } , - BigNum { limbs: [ 0xe4fb2dcb4d9f1a4a9ebdd727b87a2e, 0x2b3e89f62de6e60238fe7599d7ec10, 0x0062ab ] } , - BigNum { limbs: [ 0xd8a8d534b0bce4b5614227d84785d3, 0x7c149fa74f614d379f099408001942, 0x001142 ] } , - BigNum { limbs: [ 0xd620293ae0ef1d9da284bedb2f43d0, 0x180a5114016f798c9348185b0382e2, 0x003b69 ] } , - BigNum { limbs: [ 0xe783d9c51d6ce1625d7b4024d0bc31, 0x8f48d8897bd8b9ad44bff146d48270, 0x003884 ] } , - BigNum { limbs: [ 0x6e4a6abf88d933719ae8985de5540a, 0x852ff0a7b43ffbb7a8b0d7b33af34c, 0x002eae ] } , - BigNum { limbs: [ 0x4f5998407582cb8e651766a21aabf7, 0x222338f5c90837822f5731ee9d1207, 0x00453f ] } , - BigNum { limbs: [ 0xcc886ec1f3ffe0d1b7b97da44a349a, 0x156b1645203e0188cbbb016cf2efe2, 0x006934 ] } , - BigNum { limbs: [ 0xf11b943e0a5c1e2e4846815bb5cb67, 0x91e813585d0a31b10c4d0834e51570, 0x000ab9 ] } , - BigNum { limbs: [ 0xa3311e69461863c932b24d441a3598, 0x4a6827f60d795efd1735c252faeb40, 0x0061aa ] } , - BigNum { limbs: [ 0x1a72e496b8439b36cd4db1bbe5ca69, 0x5ceb01a76fced43cc0d2474edd1a13, 0x001243 ] } , - BigNum { limbs: [ 0x82345ac27d7e4868b67310ef09a9cb, 0x92f702edb6d0f2507c5f193db6176b, 0x00110f ] } , - BigNum { limbs: [ 0x3b6fa83d80ddb697498cee10f65636, 0x145c26afc67740e95ba8f06421ede8, 0x0062de ] } , - BigNum { limbs: [ 0xdb0f7c98858057112f96e2b0f9b3dd, 0x58e0c574d4f3d63057d2ac2decc1c8, 0x001a68 ] } , - BigNum { limbs: [ 0xe294866778dba7eed0691c4f064c24, 0x4e726428a8545d0980355d73eb438a, 0x005985 ] } , - BigNum { limbs: [ 0x8c7c2afe21b8d4c669d39e6258ef1e, 0x02a17e71df56bfb88204fb95d7509b, 0x001696 ] } , - BigNum { limbs: [ 0x3127d801dca32a39962c609da710e3, 0xa4b1ab2b9df1738156030e0c00b4b8, 0x005d57 ] } , - BigNum { limbs: [ 0x4b6eef836791e9f54098590590f97a, 0x18a877b7ab1d7cfa546e4bac4497c4, 0x002a75 ] } , - BigNum { limbs: [ 0x7235137c96ca150abf67a5fa6f0687, 0x8eaab1e5d22ab63f8399bdf5936d8f, 0x004978 ] } , - BigNum { limbs: [ 0xda57a2483dd819a0521ef18aeb112b, 0x741f3f8e164dd0c49746d9253f440e, 0x005928 ] } , - BigNum { limbs: [ 0xe34c60b7c083e55fade10d7514eed6, 0x3333ea0f66fa627540c1307c98c144, 0x001ac5 ] } , - BigNum { limbs: [ 0x6d9efa01c14d946eb5dc3197a8ef92, 0x93e8f9bde758fed2674d81d6135835, 0x001439 ] } , - BigNum { limbs: [ 0x500508fe3d0e6a914a23cd6857106f, 0x136a2fdf95ef346770ba87cbc4ad1e, 0x005fb4 ] } , - BigNum { limbs: [ 0x6b343de16bed11f7715c2b59ea6e61, 0x4bd44428726e555938660d5f1259af, 0x003451 ] } , - BigNum { limbs: [ 0x526fc51e926eed088ea3d3a61591a0, 0x5b7ee5750ad9dde09fa1fc42c5aba4, 0x003f9c ] } , - BigNum { limbs: [ 0xd7adea656c88ebe1c73198fced09ec, 0x858f3343b72247e4ce45ae3b842b6b, 0x0004ba ] } , - BigNum { limbs: [ 0xe5f6189a91d3131e38ce660312f615, 0x21c3f659c625eb5509c25b6653d9e7, 0x006f33 ] } , - BigNum { limbs: [ 0x4396812497c58b3d6e0eb2267582d7, 0x19f1fc6fe5a19f799a4ac31e134aad, 0x00342f ] } , - BigNum { limbs: [ 0x7a0d81db669673c291f14cd98a7d2a, 0x8d612d2d97a693c03dbd4683c4baa6, 0x003fbe ] } , - BigNum { limbs: [ 0x330ac33976577896e7cd165be118af, 0x513188184d1e47fe7c0925272dc385, 0x006c00 ] } , - BigNum { limbs: [ 0x8a993fc6880486691832e8a41ee752, 0x5621a1853029eb3b5bfee47aaa41ce, 0x0007ed ] } , - BigNum { limbs: [ 0xb422e761321f21d09645fe30b61c23, 0x9970ea51b0e6b23e7b35ed24a1e5c7, 0x00395c ] } , - BigNum { limbs: [ 0x09811b9ecc3cdd2f69ba00cf49e3de, 0x0de23f4bcc6180fb5cd21c7d361f8c, 0x003a91 ] } , - BigNum { limbs: [ 0x0b160cf2d6797490f41560b245b067, 0xffc2ee6b0313ed07699a98a0e39141, 0x004a5a ] } , - BigNum { limbs: [ 0xb28df60d27e28a6f0bea9e4dba4f9a, 0xa7903b327a3446326e6d7100f47412, 0x002992 ] } , - BigNum { limbs: [ 0xaba6e2d7d140d91f7cc4829e8423a4, 0xb6b450e6f2baafc992e5de759fc13a, 0x002110 ] } , - BigNum { limbs: [ 0x11fd20282d1b25e0833b7c617bdc5d, 0xf09ed8b68a8d837045222b2c384419, 0x0052dc ] } , - BigNum { limbs: [ 0xa01148af98688c508dd3077d60548f, 0x935af62d62298775e60c31411c7d36, 0x0013e9 ] } , - BigNum { limbs: [ 0x1d92ba5065f372af722cf7829fab72, 0x13f833701b1eabc3f1fbd860bb881d, 0x006004 ] } , - BigNum { limbs: [ 0xc7276b0e0087cc7eb1318aca4306de, 0x43d57eb232ec56fb40f6e0bf66906e, 0x004451 ] } , - BigNum { limbs: [ 0xf67c97f1fdd432814ece7435bcf923, 0x637daaeb4a5bdc3e971128e27174e4, 0x002f9c ] } , - BigNum { limbs: [ 0xeba7f573b3b0edb038298303139ae1, 0xe4ce8328676baf6a10b22f3eda88c1, 0x001629 ] } , - BigNum { limbs: [ 0xd1fc0d8c4aab114fc7d67bfcec6520, 0xc284a67515dc83cfc755da62fd7c91, 0x005dc3 ] } , - BigNum { limbs: [ 0x9bcab0951254eec1d795605c9454e1, 0x4f1ed5f3daea6d94451f7d62139849, 0x0030d1 ] } , - BigNum { limbs: [ 0x21d9526aec07103e286a9ea36bab20, 0x583453a9a25dc5a592e88c3fc46d0a, 0x00431c ] } , - BigNum { limbs: [ 0x015a142b676f214fde7e2d7a559fd3, 0x6fb6de21ab8a003f81fccd9c6817e5, 0x00083d ] } , - BigNum { limbs: [ 0xbc49eed496ecddb02181d185aa602e, 0x379c4b7bd1be32fa560b3c056fed6e, 0x006bb0 ] } , - BigNum { limbs: [ 0xb05750b0757d9b1b525693c4fdf276, 0xa020a192f58550d8f5fae982ba3ffb, 0x006226 ] } , - BigNum { limbs: [ 0x0d4cb24f88de63e4ada96b3b020d8b, 0x0732880a87c2e260e20d201f1dc558, 0x0011c7 ] } , - BigNum { limbs: [ 0x9589c6d02e429124ca49ae2654cfed, 0x93b1dca7fd1456679d9af60081e614, 0x000055 ] } , - BigNum { limbs: [ 0x281a3c2fd0196ddb35b650d9ab3014, 0x13a14cf58033dcd23a6d13a1561f3f, 0x007398 ] } , - BigNum { limbs: [ 0xe5f85ddf3c1b5cb31a1acd9d26ce3c, 0x0c64c68dd203f81ab9316428dff763, 0x003505 ] } , - BigNum { limbs: [ 0xd7aba520c240a24ce5e53162d931c5, 0x9aee630fab443b1f1ed6a578f80def, 0x003ee8 ] } , - BigNum { limbs: [ 0xaa559c25a323066982caeaed4863fd, 0x51ff3b932efd9f1ca45610bea15005, 0x000405 ] } , - BigNum { limbs: [ 0x134e66da5b38f8967d351412b79c04, 0x5553ee0a4e4a941d33b1f8e336b54e, 0x006fe8 ] } , - BigNum { limbs: [ 0x7c55cac91b46847d77398fb0253409, 0x54aa601bd20e14bc524e83f5dfdf0a, 0x0018aa ] } , - BigNum { limbs: [ 0x414e3836e3157a8288c66f4fdacbf8, 0x52a8c981ab3a1e7d85b985abf82649, 0x005b43 ] } , - BigNum { limbs: [ 0x72ebfd53689d24efb99d766acb5fd5, 0x53b4e3288a76fc3f7b8a3bd7c507c1, 0x0018af ] } , - BigNum { limbs: [ 0x4ab805ac95beda104662889534a02c, 0x539e4674f2d136fa5c7dcdca12fd92, 0x005b3e ] } , - BigNum { limbs: [ 0xfd1bdd35d3c9d1c6cbff4af2be3916, 0x1e437926a687585966d8d7855d16d5, 0x00274d ] } , - BigNum { limbs: [ 0xc08825ca2a922d393400b40d41c6eb, 0x890fb076d6c0dae0712f321c7aee7d, 0x004ca0 ] } , - BigNum { limbs: [ 0xb77311aa5733c02e36541e5c44ddc4, 0xf70a9c158f6fb5fca7743791401f4b, 0x00649c ] } , - BigNum { limbs: [ 0x0630f155a7283ed1c9abe0a3bb223d, 0xb0488d87edd87d3d3093d21097e608, 0x000f50 ] } , - BigNum { limbs: [ 0xbec17bd32d28f964b877880b7bd162, 0x1c8e1645a812d561eb297d716c3f6e, 0x004732 ] } , - BigNum { limbs: [ 0xfee2872cd133059b478876f4842e9f, 0x8ac51357d5355dd7ecde8c306bc5e4, 0x002cbb ] } , - BigNum { limbs: [ 0x4b9abc640df6a92392180523c30faa, 0xccb911dcb1ae544edf064df058b8a6, 0x000b8b ] } , - BigNum { limbs: [ 0x7209469bf06555dc6de7f9dc3cf057, 0xda9a17c0cb99deeaf901bbb17f4cad, 0x006861 ] } , - BigNum { limbs: [ 0x43fba07004bb352fb97ddcbb685b7e, 0xfb15e4fc1addd4df8ea0dd402af30b, 0x0016aa ] } , - BigNum { limbs: [ 0x79a8628ff9a0c9d04682224497a483, 0xac3d44a1626a5e5a49672c61ad1248, 0x005d42 ] } , - BigNum { limbs: [ 0x56e2bbfada26463ad32c3398b4cb0a, 0xf0957745c50282acff8e98d64e22c9, 0x003095 ] } , - BigNum { limbs: [ 0x66c147052435b8c52cd3cb674b34f7, 0xb6bdb257b845b08cd87970cb89e28a, 0x004357 ] } , - BigNum { limbs: [ 0x31dfefa8056f0bb4ad409f0a9afc82, 0x9150327c8a8167c605fb4aa50a4642, 0x002e81 ] } , - BigNum { limbs: [ 0x8bc41357f8ecf34b52bf5ff565037f, 0x1602f720f2c6cb73d20cbefccdbf11, 0x00456c ] } , - BigNum { limbs: [ 0xe90e9f0a64c08bc2c919362a37a2f5, 0x90bdf40839f0ea8ca59fb662da9e1f, 0x003872 ] } , - BigNum { limbs: [ 0xd49563f5999b733d36e6c8d5c85d0c, 0x16953595435748ad3268533efd6733, 0x003b7b ] } , - BigNum { limbs: [ 0x071011023ca1f11813365f2e4dd33f, 0x63d9876c3af1054103abfd750fa7e3, 0x0073d8 ] } , - BigNum { limbs: [ 0xb693f1fdc1ba0de7ecc99fd1b22cc2, 0x4379a23142572df8d45c0c2cc85d70, 0x000015 ] } , - BigNum { limbs: [ 0x694ee83ae27a47bed39a0919fadbc3, 0x4a3b47df5caa2bdad7b86e55e1c1cc, 0x0030e6 ] } , - BigNum { limbs: [ 0x54551ac51be1b7412c65f5e605243e, 0x5d17e1be209e075f004f9b4bf64387, 0x004307 ] } , - BigNum { limbs: [ 0x5e55696d530d23c829d3b1ec72d08f, 0xc09602866dfdcaae5a41e711829dab, 0x003c1e ] } , - BigNum { limbs: [ 0x5f4e9992ab4edb37d62c4d138d2f72, 0xe6bd27170f4a688b7dc622905567a8, 0x0037ce ] } , - BigNum { limbs: [ 0x288cf2ea23bfefa96caf3ac3f8ba22, 0xb3275950a9f9c4441b6584b2104f8d, 0x00719f ] } , - BigNum { limbs: [ 0x95171015da9c0f569350c43c0745df, 0xf42bd04cd34e6ef5bca284efc7b5c6, 0x00024d ] } , - BigNum { limbs: [ 0x8bc3b8285c996dbad4d376d1513768, 0x7256e5b76cb3175f0352ab72b4f874, 0x005ebd ] } , - BigNum { limbs: [ 0x31e04ad7a1c291452b2c882eaec899, 0x34fc43e610951bdad4b55e2f230cdf, 0x001530 ] } , - BigNum { limbs: [ 0x894a39cb116c525af67e8ae5be1bb2, 0x8c6cd36c4d58e020f6ea3ff00d743a, 0x00625d ] } , - BigNum { limbs: [ 0x3459c934ecefaca50981741a41e44f, 0x1ae656312fef5318e11dc9b1ca9119, 0x001190 ] } , - BigNum { limbs: [ 0x25e1a5766d24382bb250f695030649, 0xd5ae6d99265b8f18e758585cbb43c1, 0x005977 ] } , - BigNum { limbs: [ 0x97c25d899137c6d44daf086afcf9b8, 0xd1a4bc0456eca420f0afb1451cc192, 0x001a75 ] } , - BigNum { limbs: [ 0x108a14b7c70a6ad26c4075ed336c51, 0x0b039e7a6793034fce3be69716022a, 0x0041dd ] } , - BigNum { limbs: [ 0xad19ee483751942d93bf8912cc93b0, 0x9c4f8b2315b52fea09cc230ac20329, 0x003210 ] } , - BigNum { limbs: [ 0x73d08bc76ccf5ba34807979b0215f8, 0x672456cb0e4d663c27a5ae14f1c97c, 0x006b48 ] } , - BigNum { limbs: [ 0x49d37738918ca35cb7f86764fdea09, 0x402ed2d26efaccfdb0625b8ce63bd7, 0x0008a5 ] } , - BigNum { limbs: [ 0xb194d22c9353d04f23e87d934f1f96, 0xd299fff47a28674a00d694f09259c6, 0x006a55 ] } , - BigNum { limbs: [ 0x0c0f30d36b082eb0dc17816cb0e06b, 0xd4b929a9031fcbefd73174b145ab8d, 0x000997 ] } , - BigNum { limbs: [ 0xe60667a30dabcfb52e13c743b9975c, 0x9bbee3ad9bc81a5f72c6f875ee7602, 0x001460 ] } , - BigNum { limbs: [ 0xd79d9b5cf0b02f4ad1ec37bc4668a5, 0x0b9445efe18018da6541112be98f50, 0x005f8d ] } , - BigNum { limbs: [ 0xab86dadb989e51f0cbebe282c25f67, 0x985bbe50fcdf18c268a03833d98497, 0x0007a0 ] } , - BigNum { limbs: [ 0x121d282465bdad0f34141c7d3da09a, 0x0ef76b4c80691a776f67d16dfe80bc, 0x006c4d ] } , - BigNum { limbs: [ 0xda7702676dea396d79c4d11332d72d, 0x2e7430a3a2a093042049534a4e9515, 0x004eda ] } , - BigNum { limbs: [ 0xe32d00989071c592863b2deccd28d4, 0x78def8f9daa7a035b7beb65789703d, 0x002513 ] } , - BigNum { limbs: [ 0x3fea587c4affedc04f2ce41153449c, 0x22a7edcf8fa76606557aaa616f7f58, 0x003eaa ] } , - BigNum { limbs: [ 0x7db9aa83b35c113fb0d31aeeacbb65, 0x84ab3bcdeda0cd33828d5f406885fb, 0x003543 ] } , - BigNum { limbs: [ 0xd6197d6c736880f50cd1a8e4c2db19, 0x175965785290878d175aaf9256fc91, 0x003bdf ] } , - BigNum { limbs: [ 0xe78a85938af37e0af32e561b3d24e8, 0x8ff9c4252ab7abacc0ad5a0f8108c1, 0x00380e ] } , - BigNum { limbs: [ 0xd541ba86f98b53e4a9ecb7395b88da, 0xdd06325810ac9f0db723ad6706b7b6, 0x002288 ] } , - BigNum { limbs: [ 0xe862487904d0ab1b561347c6a47727, 0xca4cf7456c9b942c20e45c3ad14d9c, 0x005164 ] } , - BigNum { limbs: [ 0xea6811be9c622d4a838b5d59cd79e5, 0x1f1b5c49c83409f1ca610a08f16655, 0x006d03 ] } , - BigNum { limbs: [ 0xd33bf14161f9d1b57c74a1a632861c, 0x8837cd53b51429480da6ff98e69efd, 0x0006ea ] } , - BigNum { limbs: [ 0x4e1e3ba38d57fa7de6ee5fb11c8691, 0xc39cc1085e035b0395f3cb50c20339, 0x000d8b ] } , - BigNum { limbs: [ 0x6f85c75c7104048219119f4ee37970, 0xe3b668951f44d83642143e5116021a, 0x006661 ] } , - BigNum { limbs: [ 0x11bb5ed43415b6eaa3a247fac9045c, 0x8ce61b57c643fab4ad0b6127b0bdf5, 0x006200 ] } , - BigNum { limbs: [ 0xabe8a42bca4648155c5db70536fba5, 0x1a6d0e45b70438852afca87a27475e, 0x0011ed ] } , - BigNum { limbs: [ 0x66edf951391e017027b8876a00b1dd, 0x16bac381fe479a73369f5b7b9fbd66, 0x00269e ] } , - BigNum { limbs: [ 0x56b609aec53dfd8fd8477795ff4e24, 0x9098661b7f0098c6a168ae263847ed, 0x004d4f ] } , - BigNum { limbs: [ 0x8d3bda72fe32ac556446a1e4c8b12c, 0xdecdc861cdd2ba3c1894e10b47bb26, 0x0070a1 ] } , - BigNum { limbs: [ 0x3068288d002952aa9bb95d1b374ed5, 0xc885613baf7578fdbf732896904a2d, 0x00034b ] } , - BigNum { limbs: [ 0xc2aede9421fa9e20d9bfae30c1dd53, 0x261192cf65c5eb82149a7ac5fda4ff, 0x0041af ] } , - BigNum { limbs: [ 0xfaf5246bdc6160df264050cf3e22ae, 0x814196ce178247b7c36d8edbda6053, 0x00323e ] } , - BigNum { limbs: [ 0x39f3a6db6531cdca1cb78883b5501f, 0x26227262918465175978507ae3f87a, 0x00650f ] } , - BigNum { limbs: [ 0x83b05c24992a3135e348767c4aafe2, 0x8130b73aebc3ce227e8fb926f40cd9, 0x000ede ] } , - BigNum { limbs: [ 0xc37dd45f1728e7f0d65f4eb1657ebb, 0xcbf627e693d811320caaca8a58a05a, 0x005d7a ] } , - BigNum { limbs: [ 0xfa262ea0e733170f29a0b04e9a8146, 0xdb5d01b6e9702207cb5d3f177f64f8, 0x001672 ] } , - BigNum { limbs: [ 0xf0213a7d775a248c5cb6eb5617be18, 0x3d8529f4a57d3684ca197cb9b2697e, 0x0032a6 ] } , - BigNum { limbs: [ 0xcd82c8828701da73a34913a9e841e9, 0x69cdffa8d7cafcb50dee8ce8259bd4, 0x004147 ] } , - BigNum { limbs: [ 0x28b34e361f477916846a9d93c59012, 0x68771297c5f5cab5e5b78e6a8640e0, 0x000bb8 ] } , - BigNum { limbs: [ 0x94f0b4c9df1485e97b95616c3a6fef, 0x3edc1705b7526883f2507b3751c473, 0x006835 ] } , - BigNum { limbs: [ 0x2fcc7b4c5132e44eade4f1a131233d, 0x24993436058950f7e263c54ee6a9b5, 0x0053e3 ] } , - BigNum { limbs: [ 0x8dd787b3ad291ab1521b0d5ecedcc4, 0x82b9f56777bee241f5a44452f15b9e, 0x00200a ] } , - BigNum { limbs: [ 0xe3b4dbe22b4392311d3304db643695, 0x6c675105ced67e07f5abd08cc0fb81, 0x00118c ] } , - BigNum { limbs: [ 0xd9ef271dd3186ccee2ccfa249bc96c, 0x3aebd897ae71b531e25c39151709d1, 0x006261 ] } , - BigNum { limbs: [ 0xf11efe066d096281a3dfb44cd7d165, 0x9692bcbb22f340a207f615ad60750f, 0x003157 ] } , - BigNum { limbs: [ 0xcc8504f991529c7e5c204ab3282e9c, 0x10c06ce25a54f297d011f3f4779043, 0x004296 ] } , - BigNum { limbs: [ 0xdcb69c52a4e2ed82c4a6de94c8bf96, 0xadb5b738776bd7f6723b1e2ff13929, 0x0005c6 ] } , - BigNum { limbs: [ 0xe0ed66ad5979117d3b59206b37406b, 0xf99d726505dc5b4365cceb71e6cc29, 0x006e26 ] } , - BigNum { limbs: [ 0xbdddcc8bf7cd9ed4857eba4432963c, 0xae7241f1a002af8f5d5d7f44857a7f, 0x001987 ] } , - BigNum { limbs: [ 0xffc63674068e602b7a8144bbcd69c5, 0xf8e0e7abdd4583aa7aaa8a5d528ad3, 0x005a65 ] } , - BigNum { limbs: [ 0x403fec5dd82b2b02f99d83bd109f22, 0xad7b8eb369ebc5844282de960e20ea, 0x004e19 ] } , - BigNum { limbs: [ 0x7d6416a22630d3fd06627b42ef60df, 0xf9d79aea135c6db595852b0bc9e469, 0x0025d3 ] } , - BigNum { limbs: [ 0x667871334f5a17c81450fbaf4bac63, 0x8c39463268f3eff98a4b7b39d85563, 0x0054d1 ] } , - BigNum { limbs: [ 0x572b91ccaf01e737ebaf0350b4539e, 0x1b19e36b145443404dbc8e67ffaff0, 0x001f1c ] } , - BigNum { limbs: [ 0xe5f786d3627dca98b3217a2417eb91, 0x2b1650a62e0d01d8396db702f1cebe, 0x007322 ] } , - BigNum { limbs: [ 0xd7ac7c2c9bde34674cde84dbe81470, 0x7c3cd8f74f3b31619e9a529ee63694, 0x0000cb ] } , - BigNum { limbs: [ 0x14442a81d5dacf112f0e1c1ea12f87, 0x8dc193c234980989fd6dc601cf00dc, 0x0039df ] } , - BigNum { limbs: [ 0xa95fd87e28812feed0f1e2e15ed07a, 0x199195db48b029afda9a43a0090477, 0x003a0e ] } , - BigNum { limbs: [ 0x921cee975fa0e584ce4ae1e892a3c5, 0xc62efbed2b5cecef70db4531b7f32d, 0x000c2f ] } , - BigNum { limbs: [ 0x2b8714689ebb197b31b51d176d5c3c, 0xe1242db051eb464a672cc470201226, 0x0067bd ] } , - BigNum { limbs: [ 0x80e62a591e130ddff868f0a741ce9b, 0x73617687ce3861a1cbdaf40353ac4d, 0x005d2b ] } , - BigNum { limbs: [ 0x3cbdd8a6e048f12007970e58be3166, 0x33f1b315af0fd1980c2d159e845906, 0x0016c2 ] } , - BigNum { limbs: [ 0xbebbfef511cfe3de78900fcc779e4b, 0x5e5d2d844e5ab78ecd7e8bbf2f114f, 0x004cc8 ] } , - BigNum { limbs: [ 0xfee8040aec8c1b21876fef338861b6, 0x48f5fc192eed7bab0a897de2a8f403, 0x002725 ] } , - BigNum { limbs: [ 0xfb644fa915d933a7364690463b8c5a, 0x3da87aae9f28ef0fa6840d0fb03214, 0x0035f4 ] } , - BigNum { limbs: [ 0xc23fb356e882cb58c9b96eb9c473a7, 0x69aaaeeede1f442a3183fc9227d33e, 0x003df9 ] } , - BigNum { limbs: [ 0x291078c0516e965d1f8871ac8e55dd, 0xd8a29031fa3b19ae5ba085ac0ef4a6, 0x005a92 ] } , - BigNum { limbs: [ 0x94938a3faced68a2e0778d5371aa24, 0xceb0996b830d198b7c6783f5c910ad, 0x00195a ] } , - BigNum { limbs: [ 0xbe569a3a31f165c75c815f425cadf6, 0x91d2ea1bb63a6725ce5bff1ee40056, 0x003c67 ] } , - BigNum { limbs: [ 0xff4d68c5cc6a9938a37e9fbda3520b, 0x15803f81c70dcc1409ac0a82f404fc, 0x003786 ] } , - BigNum { limbs: [ 0xd4e8f014ba143af233e178fcd9035e, 0x187a05e3c16ef03e7c1f872a7e3d16, 0x007309 ] } , - BigNum { limbs: [ 0xe8bb12eb4447c40dcc1e860326fca3, 0x8ed923b9bbd942fb5be8827759c83c, 0x0000e4 ] } , - BigNum { limbs: [ 0x72c83deac35889a527d24cb6033b6d, 0x8dae310a1c6ed27159d1f41e8ecf38, 0x002a77 ] } , - BigNum { limbs: [ 0x4adbc5153b03755ad82db249fcc494, 0x19a4f89360d960c87e36158349361b, 0x004976 ] } , - BigNum { limbs: [ 0xed383bd6c47164f0f4a28beafd4b05, 0xfe95f6cd1c5ae51f8b3c2f31b064ca, 0x004b19 ] } , - BigNum { limbs: [ 0xd06bc72939ea9a0f0b5d731502b4fc, 0xa8bd32d060ed4e1a4ccbda7027a088, 0x0028d3 ] } , - BigNum { limbs: [ 0xc2af4e8c17ec9b12d6d2603dee0fe2, 0xaffd6163c6457b489fed890fd8e5be, 0x0055b0 ] } , - BigNum { limbs: [ 0xfaf4b473e66f63ed292d9ec211f01f, 0xf755c839b702b7f1381a8091ff1f94, 0x001e3c ] } , - BigNum { limbs: [ 0x9902e6b674cd83c44a9dee0b94bba2, 0xe168decf4b8ed4289398be82882966, 0x001896 ] } , - BigNum { limbs: [ 0x24a11c49898e7b3bb56210f46b445f, 0xc5ea4ace31b95f11446f4b1f4fdbed, 0x005b56 ] } , - BigNum { limbs: [ 0x4e45ae2b0e3452a4529d1d508d95fc, 0x7722bad2894e16b2203d6eb58db41f, 0x0033f1 ] } , - BigNum { limbs: [ 0x6f5e54d4f027ac5bad62e1af726a05, 0x30306ecaf3fa1c87b7ca9aec4a5134, 0x003ffc ] } , - BigNum { limbs: [ 0x37da9fd247b74cb41071ef7f2aea85, 0x217231241ba8cb044aeeeef2e88ea4, 0x003467 ] } , - BigNum { limbs: [ 0x85c9632db6a4b24bef8e0f80d5157c, 0x85e0f879619f68358d191aaeef76af, 0x003f86 ] } , - BigNum { limbs: [ 0x3f627cef182bf8f6139aa4696affcb, 0x10ac5d53a149416469b17618f6a047, 0x005364 ] } , - BigNum { limbs: [ 0x7e418610e6300609ec655a96950036, 0x96a6cc49dbfef1d56e569388e1650c, 0x002089 ] } , - BigNum { limbs: [ 0x7e981b72650bfeff3159bca6f143eb, 0xfc526f7aaa2242fa324ea12a7d5c51, 0x0011d4 ] } , - BigNum { limbs: [ 0x3f0be78d99500000cea642590ebc16, 0xab00ba22d325f03fa5b968775aa902, 0x006218 ] } , - BigNum { limbs: [ 0xd355e9996feaa77dfbd1f922488ad7, 0xb0058ff22890469a4cefef1ddd319e, 0x005848 ] } , - BigNum { limbs: [ 0xea4e19668e715782042e05ddb7752a, 0xf74d99ab54b7ec9f8b181a83fad3b4, 0x001ba4 ] } , - BigNum { limbs: [ 0x71709889e0167d409fadc1390c215b, 0x74aa326c7001fa831c8ac096dad4f9, 0x00693f ] } , - BigNum { limbs: [ 0x4c336a761e4581bf60523dc6f3dea6, 0x32a8f7310d4638b6bb7d490afd305a, 0x000aae ] } , - BigNum { limbs: [ 0x7f3c55e68a9ebe67f8591eaace97e5, 0x36a927134e53d5de7528fa90299f94, 0x000767 ] } , - BigNum { limbs: [ 0x3e67ad1973bd409807a6e05531681c, 0x70aa028a2ef45d5b62df0f11ae65bf, 0x006c86 ] } , - BigNum { limbs: [ 0xd68c4e218d617df86a5774c5ddad45, 0x3791051adf2dcf04d9abd55a75fca8, 0x00056b ] } , - BigNum { limbs: [ 0xe717b4de70fa810795a88a3a2252bc, 0x6fc224829e1a6434fe5c34476208aa, 0x006e82 ] } , - BigNum { limbs: [ 0x7b2013f325133a921b388995bea7fd, 0x97cf9f1de049dea2d37f97aa42f19b, 0x001305 ] } , - BigNum { limbs: [ 0x4283ef0cd948c46de4c7756a415804, 0x0f838a7f9cfe5497048871f79513b8, 0x0060e8 ] } , - BigNum { limbs: [ 0x8ab8dd1277fe748ac4ce96c05922c8, 0x10e56eefef4251ebd9d921306ed45a, 0x005d42 ] } , - BigNum { limbs: [ 0x32eb25ed865d8a753b31683fa6dd39, 0x966dbaad8e05e14dfe2ee8716930f9, 0x0016ab ] } , - BigNum { limbs: [ 0x0a4f7342f02550b7dd369ee24a4b2c, 0xfee53953c53b0cfcf5e4fb20e3fa23, 0x0006c4 ] } , - BigNum { limbs: [ 0xb3548fbd0e36ae4822c9601db5b4d5, 0xa86df049b80d263ce2230e80f40b30, 0x006d28 ] } , - BigNum { limbs: [ 0x7d50a297e01b9f76128ae4a4ec03cc, 0x48ee592217168094228f05f9a5f7b1, 0x0003cd ] } , - BigNum { limbs: [ 0x405360681e405f89ed751a5b13fc35, 0x5e64d07b6631b2a5b57903a8320da2, 0x007020 ] } , - BigNum { limbs: [ 0x15ef3ee3ffc51b88fd3eb853540a9b, 0x0703b0d3a24c6f57d8c0bf34a21c9a, 0x001d2d ] } , - BigNum { limbs: [ 0xa7b4c41bfe96e37702c146acabf566, 0xa04f78c9dafbc3e1ff474a6d35e8b9, 0x0056c0 ] } , - BigNum { limbs: [ 0xa0e87e3224359144dd54d2b5c75587, 0x4ac46b49ad06003051d8ebe9cfeefb, 0x003126 ] } , - BigNum { limbs: [ 0x1cbb84cdda266dbb22ab2c4a38aa7a, 0x5c8ebe53d0423309862f1db8081658, 0x0042c7 ] } , - BigNum { limbs: [ 0x8b986d29b33eb5f0def2eff45786de, 0xc59e71fd63b2bf1d7ff3348ecd758b, 0x0040be ] } , - BigNum { limbs: [ 0x320b95d64b1d490f210d0f0ba87923, 0xe1b4b7a01995741c5814d5130a8fc8, 0x00332e ] } , - BigNum { limbs: [ 0x99b19c7bca6174d7162d9719890f64, 0x9b45fa34b0b61f0b2d8c094d642020, 0x003b30 ] } , - BigNum { limbs: [ 0x23f2668433fa8a28e9d267e676f09d, 0x0c0d2f68cc92142eaa7c005473e533, 0x0038bd ] } , - BigNum { limbs: [ 0xd107902335e8b13bda35e579e11aaf, 0x059e6e34b922e5757ecbd6781b5e62, 0x002ec2 ] } , - BigNum { limbs: [ 0xec9c72dcc8734dc425ca19861ee552, 0xa1b4bb68c4254dc4593c3329bca6f0, 0x00452b ] } , - BigNum { limbs: [ 0x9e3c15394e6e1b208b52545e33565a, 0x494ae6fc135c86b8d15bf3d84bec66, 0x00191b ] } , - BigNum { limbs: [ 0x1f67edc6afede3df74adaaa1cca9a7, 0x5e0842a169ebac8106ac15c98c18ed, 0x005ad2 ] } , - BigNum { limbs: [ 0x7d4b44384d28349ae50103d6566c65, 0x9d381a6230d31aa9d7cb35b628a6c7, 0x0057ad ] } , - BigNum { limbs: [ 0x4058bec7b133ca651afefb29a9939c, 0x0a1b0f3b4c751890003cd3ebaf5e8c, 0x001c40 ] } , - BigNum { limbs: [ 0x86f87457e8d83a3e453abe1c7e3711, 0x8ca8ab8a88de4e6c5a7b26d84725a4, 0x005162 ] } , - BigNum { limbs: [ 0x36ab8ea81583c4c1bac540e381c8f0, 0x1aaa7e12f469e4cd7d8ce2c990dfaf, 0x00228b ] } , - BigNum { limbs: [ 0xf1a3f8ee19dbd5ae0de328241583d7, 0xf540ec8a19daeeda67854d1fd03c74, 0x00330b ] } , - BigNum { limbs: [ 0xcc000a11e4802951f21cd6dbea7c2a, 0xb2123d13636d445f7082bc8207c8de, 0x0040e1 ] } , - BigNum { limbs: [ 0x7f4a71e8149069d29f8a66433e17c6, 0x9b28721e8abbc3e8f9d6b214dd6309, 0x001c12 ] } , - BigNum { limbs: [ 0x3e599117e9cb952d607598bcc1e83b, 0x0c2ab77ef28c6f50de31578cfaa24a, 0x0057db ] } , - BigNum { limbs: [ 0xa60a12a7fafe3326945a8982257a8c, 0x56b1edc476b1082be230899d88c0b8, 0x002d3f ] } , - BigNum { limbs: [ 0x1799f058035dcbd96ba5757dda8575, 0x50a13bd906972b0df5d780044f449b, 0x0046ae ] } , - BigNum { limbs: [ 0xeb5269e06340da74ad6f23b8331b7d, 0x812e1d221ea3c3d27fdf06de69822a, 0x00081d ] } , - BigNum { limbs: [ 0xd251991f9b1b248b5290db47cce484, 0x26250c7b5ea46f67582902c36e8328, 0x006bd0 ] } , - BigNum { limbs: [ 0x5d72906ae5974656402311a3c88c0d, 0x20bdebb8c529b77a75fbc3e63a6bd7, 0x0060c5 ] } , - BigNum { limbs: [ 0x6031729518c4b8a9bfdced5c3773f4, 0x86953de4b81e7bbf620c45bb9d997c, 0x001328 ] } , - BigNum { limbs: [ 0x8ae0d36eaa8ceeb0ec520770f54dd3, 0x051ba804583083d632fb1caac7277b, 0x005e0e ] } , - BigNum { limbs: [ 0x32c32f9153cf104f13adf78f0ab22e, 0xa23781992517af63a50cecf710ddd8, 0x0015df ] } , - BigNum { limbs: [ 0x70ca1a6b232d5316951ae5ab0e6a4c, 0x0e9a156bfcdfe7a10eedb8e7072c92, 0x000599 ] } , - BigNum { limbs: [ 0x4cd9e894db2eabe96ae51954f195b5, 0x98b9143180684b98c91a50bad0d8c1, 0x006e54 ] } , - BigNum { limbs: [ 0x0f8c6a786fe9e866941a14b23a4155, 0x871fec91df9e50d66999b7f71ecb85, 0x00260d ] } , - BigNum { limbs: [ 0xae1798878e7216996be5ea4dc5beac, 0x20333d0b9da9e2636e6e51aab939ce, 0x004de0 ] } , - BigNum { limbs: [ 0x728f805725223905648a06d5bf4779, 0x9f15f40745862c463c0f6c15f45234, 0x000eac ] } , - BigNum { limbs: [ 0x4b1482a8d939c5fa9b75f82a40b888, 0x083d359637c206f39bf89d8be3b31f, 0x006541 ] } , - BigNum { limbs: [ 0xb10938a76e2590378e47a78cb232a2, 0x99c93e92dfca58c7a298d7828572ca, 0x000550 ] } , - BigNum { limbs: [ 0x0c9aca5890366ec871b857734dcd5f, 0x0d89eb0a9d7dda72356f321f529289, 0x006e9d ] } , - BigNum { limbs: [ 0xe83b231555ac35ead6a82181c19293, 0xa2397a7ac4814435fb53a4ff017529, 0x001f23 ] } , - BigNum { limbs: [ 0xd568dfeaa8afc9152957dd7e3e6d6e, 0x0519af22b8c6ef03dcb464a2d69029, 0x0054ca ] } , - BigNum { limbs: [ 0x6f49efba092206bec4af45a3dd836a, 0x8a349d98ba5804e0a5947115d93a2f, 0x005569 ] } , - BigNum { limbs: [ 0x4e5a1345f539f8413b50b95c227c97, 0x1d1e8c04c2f02e593273988bfecb24, 0x001e84 ] } , - BigNum { limbs: [ 0x1b702ad51911966e554ba438256c09, 0x4d7122d117efeb680de72cff169011, 0x006daa ] } , - BigNum { limbs: [ 0xa233d82ae54a6891aab45ac7da93f8, 0x59e206cc655847d1ca20dca2c17542, 0x000643 ] } , - BigNum { limbs: [ 0x3bc1e33db1fabde67e9726e2110a9f, 0x5bf26247526e599fab5a4a1e19cff4, 0x0047a4 ] } , - BigNum { limbs: [ 0x81e21fc24c6141198168d81deef562, 0x4b60c7562ad9d99a2cadbf83be355f, 0x002c49 ] } , - BigNum { limbs: [ 0x92dc9c9ab9a192a42416165d386af9, 0x2e6ad1aa805d875c182d7bfe77cc17, 0x0035b9 ] } , - BigNum { limbs: [ 0x2ac7666544ba6c5bdbe9e8a2c79508, 0x78e857f2fceaabddbfda8da360393c, 0x003e34 ] } , - BigNum { limbs: [ 0xdbf9d401389e118356c2dfd4542a7e, 0x1beb3356e7eac8b5c49358e42cc261, 0x005d40 ] } , - BigNum { limbs: [ 0xe1aa2efec5bded7ca93d1f2babd583, 0x8b67f646955d6a841374b0bdab42f1, 0x0016ad ] } , - BigNum { limbs: [ 0xde093f86dc82aee638c24bfb618f3f, 0xcc695696e15f33b6703722957141dc, 0x004b57 ] } , - BigNum { limbs: [ 0xdf9ac37921d95019c73db3049e70c2, 0xdae9d3069be8ff8367d0e70c66c376, 0x002895 ] } , - BigNum { limbs: [ 0x43cf43b8a4fea9a6910d41d80997d6, 0xb89955f3ac075693ab26c50bb8772e, 0x001b0a ] } , - BigNum { limbs: [ 0x79d4bf47595d55596ef2bd27f6682b, 0xeeb9d3a9d140dca62ce144961f8e25, 0x0058e2 ] } , - BigNum { limbs: [ 0x6df74788bfddf547809a0593c52c29, 0x6e3537a8223b30a23b5534d53e7afc, 0x004be8 ] } , - BigNum { limbs: [ 0x4facbb773e7e09b87f65f96c3ad3d8, 0x391df1f55b0d02979cb2d4cc998a57, 0x002805 ] } , - BigNum { limbs: [ 0xecbebc0bb2bede8728abb983c104a2, 0xd259c48b91eaa8064226f6054683bc, 0x003083 ] } , - BigNum { limbs: [ 0xd0e546f44b9d2078d754457c3efb5f, 0xd4f96511eb5d8b3395e1139c918196, 0x004369 ] } , - BigNum { limbs: [ 0xd37ff2a87babb380c6c92288db9ca6, 0x72a1f9cd89124eb06d927e27a3fd9e, 0x007289 ] } , - BigNum { limbs: [ 0xea24105782b04b7f3936dc7724635b, 0x34b12fcff435e4896a758b7a3407b4, 0x000164 ] } , - BigNum { limbs: [ 0x3a7585c54ec264e3ee86325ff52f02, 0x34796ea0382b31d08ef46443e548e5, 0x000b97 ] } , - BigNum { limbs: [ 0x832e7d3aaf999a1c1179cca00ad0ff, 0x72d9bafd451d01694913a55df2bc6e, 0x006856 ] } , - BigNum { limbs: [ 0x83611805de11188d9fc12803667dbf, 0xd8489d9b1d2b7d981b5cc7400d058a, 0x00668c ] } , - BigNum { limbs: [ 0x3a42eafa204ae672603ed6fc998242, 0xcf0a8c02601cb5a1bcab4261caffc9, 0x000d60 ] } , - BigNum { limbs: [ 0x6ace9eee636cfea106cdd2093221c4, 0x25a27aaf423e560d8375b9f57ddb5f, 0x004164 ] } , - BigNum { limbs: [ 0x52d564119aef005ef9322cf6cdde3d, 0x81b0aeee3b09dd2c54924fac5a29f4, 0x003289 ] } , - BigNum { limbs: [ 0x804da7679b1f2ab1d8a86c599c1125, 0x37ea83b297acb4d4cac9a82e460d7a, 0x000562 ] } , - BigNum { limbs: [ 0x3d565b98633cd44e275792a663eedc, 0x6f68a5eae59b7e650d3e617391f7d9, 0x006e8b ] } , - BigNum { limbs: [ 0xac81ba0e9f27289accbc94269dcfed, 0xca7fe2354d973f2d66f302fd0a4109, 0x006288 ] } , - BigNum { limbs: [ 0x112248f15f34d66533436ad9623014, 0xdcd347682fb0f40c711506a4cdc44a, 0x001164 ] } , - BigNum { limbs: [ 0xaa925bcaf595931a976cec0c95430e, 0xf19446ee388087b66e87e6421ad7f4, 0x006e17 ] } , - BigNum { limbs: [ 0x1311a73508c66be5689312f36abcf3, 0xb5bee2af44c7ab836980235fbd2d5f, 0x0005d5 ] } , - BigNum { limbs: [ 0x7eebd047cbc2e51c5ec124a724f5d0, 0xf253594888ee9a00b7f8aae9ee446d, 0x0029f1 ] } , - BigNum { limbs: [ 0x3eb832b8329919e3a13eda58db0a31, 0xb4ffd054f4599939200f5eb7e9c0e6, 0x0049fb ] } , - BigNum { limbs: [ 0xc3721ea6c79959350ce6a6828af90a, 0x65e4d3674be8111f4ebbffa0ac1554, 0x003f1a ] } , - BigNum { limbs: [ 0xfa31e45936c2a5caf319587d7506f7, 0x416e56363160221a894c0a012beffe, 0x0034d3 ] } , - BigNum { limbs: [ 0xc955e365e603ea58bb2d6aa83247db, 0xdb61407a6cf482dcb6fbe1f248d57f, 0x006323 ] } , - BigNum { limbs: [ 0xf44e1f9a185814a744d29457cdb826, 0xcbf1e9231053b05d210c27af8f2fd3, 0x0010c9 ] } , - BigNum { limbs: [ 0x78a3d2d41320a58a91e7a363e4bf29, 0xf65a022ccf82e082eced9e4db37053, 0x004043 ] } , - BigNum { limbs: [ 0x4500302beb3b59756e185b9c1b40d8, 0xb0f92770adc552b6eb1a6b54249500, 0x0033a9 ] } , - BigNum { limbs: [ 0x51110b4d802457efc0e95192098448, 0x204ab0d2a8638e24584004aba6faa2, 0x001d4a ] } , - BigNum { limbs: [ 0x6c92f7b27e37a7103f16ad6df67bb9, 0x870878cad4e4a5157fc804f6310ab1, 0x0056a3 ] } , - BigNum { limbs: [ 0xa76cbd7137e6f47e6e58015540096f, 0x17e3d47a499280db319a950d9b3877, 0x0024f7 ] } , - BigNum { limbs: [ 0x1637458ec6750a8191a7fdaabff692, 0x8f6f552333b5b25ea66d74943cccdc, 0x004ef6 ] } , - BigNum { limbs: [ 0x46cc3132ae68b8a5f2cc3b6ce6684c, 0xaeefe26d6d67ed111551f5aecd91b5, 0x006694 ] } , - BigNum { limbs: [ 0x76d7d1cd4ff3465a0d33c3931997b5, 0xf86347300fe04628c2b613f30a739e, 0x000d58 ] } , - BigNum { limbs: [ 0x356ebb9037c6036cf0c644e1105fba, 0xe6ce8ff225aa86da51c04c9130a03f, 0x005271 ] } , - BigNum { limbs: [ 0x8835476fc695fb930f39ba1eefa047, 0xc08499ab579dac5f8647bd10a76514, 0x00217b ] } , - BigNum { limbs: [ 0x71972107f75956b53875e0be421d2a, 0xbd4090207fe16c1f9ade683c154e89, 0x0071bc ] } , - BigNum { limbs: [ 0x4c0ce1f80702a84ac78a1e41bde2d7, 0xea12997cfd66c71a3d29a165c2b6ca, 0x000230 ] } , - BigNum { limbs: [ 0x62cc3eb2ba6bc6f7b5e5dc5beed42f, 0x4302c5125319ab5b6b747430015857, 0x0067d1 ] } , - BigNum { limbs: [ 0x5ad7c44d43f038084a1a22a4112bd2, 0x6450648b2a2e87de6c939571d6acfc, 0x000c1c ] } , - BigNum { limbs: [ 0x4ded5e86515588409b42a1c622af82, 0xc18924c9ff6195534d6b669470a21f, 0x006db9 ] } , - BigNum { limbs: [ 0x6fb6a479ad0676bf64bd5d39dd507f, 0xe5ca04d37de69de68a9ca30d676334, 0x000633 ] } , - BigNum { limbs: [ 0xf940aaef199513b2942e1e96335b6e, 0x9fb0976b417260510ce0bd3d0820c3, 0x004908 ] } , - BigNum { limbs: [ 0xc4635810e4c6eb4d6bd1e069cca493, 0x07a292323bd5d2e8cb274c64cfe48f, 0x002ae5 ] } , - BigNum { limbs: [ 0x99f96384bc107506288c5822ce5a85, 0x472aaaaaf10a84bbb7015543f86105, 0x0031a4 ] } , - BigNum { limbs: [ 0x23aa9f7b424b89f9d773a6dd31a57c, 0x60287ef28c3dae7e2106b45ddfa44e, 0x004249 ] } , - BigNum { limbs: [ 0x380fc7606ef68763087e889370beba, 0xa48e895f4d79a04b607cacfddcb934, 0x0058be ] } , - BigNum { limbs: [ 0x85943b9f8f65779cf781766c8f4147, 0x02c4a03e2fce92ee778b5ca3fb4c1f, 0x001b2f ] } , - BigNum { limbs: [ 0x0d0e018ef12219eb96289ab55ac431, 0x583bb90996d418302d24d1f9482095, 0x0033d6 ] } , - BigNum { limbs: [ 0xb09601710d39e51469d7644aa53bd0, 0x4f177093e6741b09aae337a88fe4be, 0x004017 ] } , - BigNum { limbs: [ 0x720ee1ef0d377d0671c39b05d1219c, 0x0e3c672a9e17fe930bc21be24ae73d, 0x002bb2 ] } , - BigNum { limbs: [ 0x4b952110f12481f98e3c63fa2ede65, 0x9916c272df3034a6cc45edbf8d1e16, 0x00483b ] } , - BigNum { limbs: [ 0x8f937d589f241863fb1675b6ea931b, 0x1c2179e9ba67fb96c016aa69f8fe7b, 0x0010f3 ] } , - BigNum { limbs: [ 0x2e1085a75f37e69c04e98949156ce6, 0x8b31afb3c2e037a317f15f37df06d8, 0x0062fa ] } , - BigNum { limbs: [ 0x56e00d5f1e00882902252fc85dc59c, 0x3e901ee55f3ead151e1a9ffea6d1e0, 0x0020d7 ] } , - BigNum { limbs: [ 0x66c3f5a0e05b76d6fddacf37a23a65, 0x68c30ab81e098624b9ed69a3313373, 0x005316 ] } , - BigNum { limbs: [ 0xbc23b54455eb4351ac2ebbbbf58f0f, 0x9056fb6c09d687252eb8459705938c, 0x001765 ] } , - BigNum { limbs: [ 0x01804dbba870bbae53d143440a70f2, 0x16fc2e317371ac14a94fc40ad271c7, 0x005c88 ] } , - BigNum { limbs: [ 0x93c6b06754a128dff1056cfd5ec865, 0xf74df5e016d7a53f6b08885f52e784, 0x005e2a ] } , - BigNum { limbs: [ 0x29dd5298a9bad6200efa9202a1379c, 0xb00533bd66708dfa6cff8142851dcf, 0x0015c2 ] } , - BigNum { limbs: [ 0x41d2f6c7f8a9395717a8e61423c05b, 0x3d0053a77263e322f86bf6d0dc3924, 0x0048ae ] } , - BigNum { limbs: [ 0x7bd10c3805b2c5a8e85718ebdc3fa6, 0x6a52d5f60ae45016df9c12d0fbcc2f, 0x002b3f ] } , - BigNum { limbs: [ 0x709eafc06c4ff19ad80a4b7b416ac5, 0x298eec226cfaea1765007c50fae425, 0x0031fc ] } , - BigNum { limbs: [ 0x4d05533f920c0d6527f5b384be953c, 0x7dc43d7b104d492273078d50dd212e, 0x0041f1 ] } , - BigNum { limbs: [ 0x69099c2b782691822141c76792a203, 0x0bdedfe0d19fff137b4c5c01b22f1a, 0x003789 ] } , - BigNum { limbs: [ 0x549a66d486356d7ddebe37986d5dfe, 0x9b7449bcaba834265cbbada025d639, 0x003c64 ] } , - BigNum { limbs: [ 0x09b329fa1577ff554c99286208dfee, 0x6776f189910ff3a606914c38247b25, 0x005a7f ] } , - BigNum { limbs: [ 0xb3f0d905e8e3ffaab366d69df72013, 0x3fdc3813ec383f93d176bd69b38a2e, 0x00196e ] } , - BigNum { limbs: [ 0x24accfa767b8cf3d2cac8d90592e9c, 0xb0bff695f8bb1988ea48d61b0adbd7, 0x002e0c ] } , - BigNum { limbs: [ 0x98f7335896a32fc2d353716fa6d165, 0xf6933307848d19b0edbf3386cd297c, 0x0045e0 ] } , - BigNum { limbs: [ 0x1c7ac41146f49ac18f962c2f958a43, 0x307fb2724e316afbbe1c20bf199667, 0x0065d9 ] } , - BigNum { limbs: [ 0xa1293eeeb767643e7069d2d06a75be, 0x76d3772b2f16c83e19ebe8e2be6eec, 0x000e14 ] } , - BigNum { limbs: [ 0xcd5e72e6bcb06297c78f3489f706ea, 0x1ed60f08ce06aadbb17ef22557b500, 0x005a6f ] } , - BigNum { limbs: [ 0xf045901941ab9c683870ca7608f917, 0x887d1a94af41885e2689177c805052, 0x00197e ] } , - BigNum { limbs: [ 0xe6b7a3bfecde634244d4514c7912ad, 0x0cb7e84409d6c970aa662616e8b847, 0x0037f5 ] } , - BigNum { limbs: [ 0xd6ec5f40117d9bbdbb2badb386ed54, 0x9a9b4159737169c92da1e38aef4d0b, 0x003bf8 ] } , - BigNum { limbs: [ 0x209b1c1b82cb497c47ca08d92d3855, 0x585dfc3bb27bf4ec94f6914ed44415, 0x000f94 ] } , - BigNum { limbs: [ 0x9d08e6e47b90b583b835f626d2c7ac, 0x4ef52d61cacc3e4d4311785303c13e, 0x006459 ] } , - BigNum { limbs: [ 0x0c3761f18348336e42f959081acdf7, 0xc7e6d1ada8b1413bf7a2546e4b2a2c, 0x0025f0 ] } , - BigNum { limbs: [ 0xb16ca10e7b13cb91bd06a5f7e5320a, 0xdf6c57efd496f1fde065b5338cdb27, 0x004dfc ] } , - BigNum { limbs: [ 0xbd040be90c1f098bdfa8f11646bfd6, 0x43d46fcb1be37348df13ad0c2a5b55, 0x0010e9 ] } , - BigNum { limbs: [ 0x009ff716f23cf57420570de9b9402b, 0x637eb9d26164bff0f8f45c95ada9fe, 0x006304 ] } , - BigNum { limbs: [ 0x1d9aa77779df363215065a4e6c2abd, 0xc6a057415d04ff53233bd8fbdd0586, 0x004fa4 ] } , - BigNum { limbs: [ 0xa0095b88847cc8cdeaf9a4b193d544, 0xe0b2d25c204333e6b4cc30a5faffcd, 0x002448 ] } , - BigNum { limbs: [ 0x9cb31f0b9200b0648ac18a60c7b419, 0xedbddad8c9ed9ccc28ba8ce12efb12, 0x001deb ] } , - BigNum { limbs: [ 0x20f0e3f46c5b4e9b753e749f384be8, 0xb9954ec4b35a966daf4d7cc0a90a41, 0x005601 ] } , - BigNum { limbs: [ 0x2e713efdc506192c3fd2500d74ed6a, 0xf5c94a9135d4738d8393fd1f618fcf, 0x005a3e ] } , - BigNum { limbs: [ 0x8f32c4023955e5d3c02daef28b1297, 0xb189df0c4773bfac54740c82767584, 0x0019ae ] } , - BigNum { limbs: [ 0x019f2521aea11163fdb1347e6d3c9b, 0xa3738160674ee6d82b9f88354b2359, 0x0015f0 ] } , - BigNum { limbs: [ 0xbc04ddde4fbaed9c024eca8192c366, 0x03dfa83d15f94c61ac68816c8ce1fa, 0x005dfd ] } , - BigNum { limbs: [ 0x92fda99d579539f60c1d8e32539eed, 0x186ff76aea8fd621c79e7166b7c3ef, 0x004354 ] } , - BigNum { limbs: [ 0x2aa65962a6c6c509f3e270cdac6114, 0x8ee3323292b85d181069983b204164, 0x003099 ] } , - BigNum { limbs: [ 0x4724fc91e126a038f88846a27a42f1, 0x67d8299d6a032639726942cb41b3ab, 0x006903 ] } , - BigNum { limbs: [ 0x767f066e1d355ec70777b85d85bd10, 0x3f7b000013450d00659ec6d69651a8, 0x000aea ] } , - BigNum { limbs: [ 0x36b2bbef5d95fb7d47e495b596c9e9, 0x7f053989ebbecb783501b9ec0fc922, 0x0073b2 ] } , - BigNum { limbs: [ 0x86f14710a0c60382b81b694a693618, 0x284df013918967c1a3064fb5c83c31, 0x00003b ] } , - BigNum { limbs: [ 0xb23ca83d927621d3100b451544eeb2, 0xab0cf321b5b87b7be0e951d31d980f, 0x0001eb ] } , - BigNum { limbs: [ 0x0b675ac26be5dd2ceff4b9eabb114f, 0xfc46367bc78fb7bdf71eb7ceba6d44, 0x007201 ] } , - BigNum { limbs: [ 0x55d00501e227d8804bf625d398d145, 0x32372fc6312f124acc1f42547e59ea, 0x005032 ] } , - BigNum { limbs: [ 0x67d3fdfe1c34267fb409d92c672ebc, 0x751bf9d74c1920ef0be8c74d59ab69, 0x0023bb ] } , - BigNum { limbs: [ 0x179e352fd65140abe985536de528a4, 0xcebd48220fe6df7882f59ab9abc5a7, 0x000597 ] } , - BigNum { limbs: [ 0xa605cdd0280abe54167aab921ad75d, 0xd895e17b6d6153c155126ee82c3fac, 0x006e55 ] } , - BigNum { limbs: [ 0x6468c1fc0bd98bc3f6e8b28be3db63, 0x7ef3b4556ef6d679aecad160dc2576, 0x00313f ] } , - BigNum { limbs: [ 0x593b4103f282733c09174c741c249e, 0x285f75480e515cc0293d3840fbdfdd, 0x0042ae ] } , - BigNum { limbs: [ 0x13470f1ab3da1ef5d61e450be78a51, 0x2f1becd5cc2934506a82aac78647b9, 0x000c05 ] } , - BigNum { limbs: [ 0xaa5cf3e54a81e00a29e1b9f41875b0, 0x78373cc7b11efee96d855eda51bd9a, 0x0067e8 ] } , - BigNum { limbs: [ 0x661c5aa57383f79b12c70a99339b94, 0x46dd8726ce03b8415b884acecaf444, 0x001319 ] } , - BigNum { limbs: [ 0x5787a85a8ad80764ed38f466cc646d, 0x6075a276af447af87c7fbed30d110f, 0x0060d4 ] } , - BigNum { limbs: [ 0xce5f9885b2f745bfa666b56d5a311a, 0x2668128e4a2bc83ba98b6857538716, 0x000a71 ] } , - BigNum { limbs: [ 0xef446a7a4b64b94059994992a5cee7, 0x80eb170f331c6afe2e7ca14a847e3c, 0x00697c ] } , - BigNum { limbs: [ 0x6aed1a564c146832d3560d5be17df8, 0x52d64d9b5c2fa87d62e7251e9f9727, 0x006b68 ] } , - BigNum { limbs: [ 0x52b6e8a9b24796cd2ca9f1a41e8209, 0x547cdc0221188abc7520e483386e2c, 0x000885 ] } , - BigNum { limbs: [ 0xd812068ac8f3657b45e33be2652de0, 0x309990b78e6f19be2ed4aae8454f92, 0x00411b ] } , - BigNum { limbs: [ 0xe591fc7535689984ba1cc31d9ad221, 0x76b998e5eed9197ba9335eb992b5c0, 0x0032d2 ] } , - BigNum { limbs: [ 0xbd51462129070533c31b718832f5e8, 0x19426e03b06186e1de604ed007c9b0, 0x006903 ] } , - BigNum { limbs: [ 0x0052bcded554f9cc3ce48d77cd0a19, 0x8e10bb99cce6ac57f9a7bad1d03ba3, 0x000aea ] } , - BigNum { limbs: [ 0x55d8768e908ff925fd2d98cb6dbbee, 0x8db0c855debd836ab3062d9fa9d8d9, 0x00547a ] } , - BigNum { limbs: [ 0x67cb8c716dcc05da02d26634924413, 0x19a261479e8aafcf2501dc022e2c7a, 0x001f73 ] } , - BigNum { limbs: [ 0x8e0ba527eca417365149025f015d1e, 0xc3152df73f24a32669617e74f15ae1, 0x0070fc ] } , - BigNum { limbs: [ 0x2f985dd811b7e7c9aeb6fca0fea2e3, 0xe43dfba63e2390136ea68b2ce6aa72, 0x0002f0 ] } , - BigNum { limbs: [ 0x8275c394add2deae53a0e275fd0cf4, 0x7b2aeb5230fa2c195afbea2192bd19, 0x00702f ] } , - BigNum { limbs: [ 0x3b2e3f6b50892051ac5f1c8a02f30d, 0x2c283e4b4c4e07207d0c1f8045483a, 0x0003be ] } , - BigNum { limbs: [ 0xb3c3d1d51852439775462cfb15928e, 0x5b03ee8a9e0c240a6ba7523bd51940, 0x00068f ] } , - BigNum { limbs: [ 0x09e0312ae609bb688ab9d204ea6d73, 0x4c4f3b12df3c0f2f6c60b76602ec13, 0x006d5e ] } , - BigNum { limbs: [ 0x2b5f0db0dd8f62428bf3d065323436, 0x3195598a28d8092bd18a7ee24d2161, 0x0001e3 ] } , - BigNum { limbs: [ 0x9244f54f20cc9cbd740c2e9acdcbcb, 0x75bdd01354702a0e067d8abf8ae3f2, 0x00720a ] } , - BigNum { limbs: [ 0x9df86f28195171f1fe341312f98924, 0x54eb6b36c54b9602ae7a61023ae791, 0x0031b3 ] } , - BigNum { limbs: [ 0x1fab93d7e50a8d0e01cbebed0676dd, 0x5267be66b7fc9d37298da89f9d1dc2, 0x00423a ] } , - BigNum { limbs: [ 0x32e14ea5c65fd882f06ddfe57fb749, 0xa4854293013e6b346b4a4b01e810da, 0x00109a ] } , - BigNum { limbs: [ 0x8ac2b45a37fc267d0f921f1a8048b8, 0x02cde70a7c09c8056cbdbe9feff479, 0x006353 ] } , - BigNum { limbs: [ 0x423c71ad2b0dfa572131cee36007fa, 0x33b9c1df4ffd1b118bfbe33bd251a0, 0x001467 ] } , - BigNum { limbs: [ 0x7b679152d34e04a8dece301c9ff807, 0x739967be2d4b18284c0c266605b3b3, 0x005f86 ] } , - BigNum { limbs: [ 0x4312ad66d4b7e90d2b6da17aab81c3, 0xe4da640bbaac82fcb1b1e258caf7f7, 0x00218a ] } , - BigNum { limbs: [ 0x7a91559929a415f2d4925d85547e3e, 0xc278c591c29bb03d265627490d0d5c, 0x005262 ] } , - BigNum { limbs: [ 0x7b3c07432c4bb846d7751759b82258, 0xbcb86c65c99f9735bdebf5628898ac, 0x00653a ] } , - BigNum { limbs: [ 0x4267fbbcd21046b9288ae7a647dda9, 0xea9abd37b3a89c041a1c143f4f6ca7, 0x000eb2 ] } , - BigNum { limbs: [ 0x9ce7c297ab8d54db615b721e6888d5, 0x889f6574f553a2a6da1423fa9a8a78, 0x002313 ] } , - BigNum { limbs: [ 0x20bc406852ceaa249ea48ce197772c, 0x1eb3c42887f49092fdf3e5a73d7adb, 0x0050da ] } , - BigNum { limbs: [ 0x73546ee70933efffe30ef5a9528edd, 0x0e58e6c6cf02feb911dc3dad3a3bad, 0x0054bc ] } , - BigNum { limbs: [ 0x4a4f9418f5280f001cf10956ad7124, 0x98fa42d6ae453480c62bcbf49dc9a6, 0x001f31 ] } , - BigNum { limbs: [ 0x4b743731d6de69caf95626573b849e, 0x7b4eac93969def71980219544f4fd8, 0x0017e4 ] } , - BigNum { limbs: [ 0x722fcbce277d953506a9d8a8c47b63, 0x2c047d09e6aa43c84005f04d88b57b, 0x005c09 ] } , - BigNum { limbs: [ 0x76809182ba32c095d44706ae689c0c, 0xa9f46ae7f49b8041bad9d23de711f3, 0x0070d4 ] } , - BigNum { limbs: [ 0x4723717d44293e6a2bb8f8519763f5, 0xfd5ebeb588acb2f81d2e3763f0f360, 0x000318 ] } , - BigNum { limbs: [ 0x4311151b41f2e4a8b188dd1a6a4bf6, 0x66fd2e6a621ba27d46e4e6ebaaab28, 0x002920 ] } , - BigNum { limbs: [ 0x7a92ede4bc691a574e7721e595b40b, 0x4055fb331b2c90bc912322b62d5a2b, 0x004acd ] } , - BigNum { limbs: [ 0x5cb240f458a0411af937dd7884b5bd, 0x5c392742ebcb8eda0f11c5920ab794, 0x004c46 ] } , - BigNum { limbs: [ 0x60f1c20ba5bbbde506c821877b4a44, 0x4b1a025a917ca45fc8f6440fcd4dbf, 0x0027a7 ] } , - BigNum { limbs: [ 0x6b26bf3a5b9cedc4de75f89a010b97, 0x7787223bc8fc5a52f2e3933f823d47, 0x006a5b ] } , - BigNum { limbs: [ 0x527d43c5a2bf113b218a0665fef46a, 0x2fcc0761b44bd8e6e524766255c80c, 0x000992 ] } , - BigNum { limbs: [ 0x906daf54262b5a6d913c8a21d61a14, 0xfd20ce3f8b5ded02bf205d2103eac1, 0x00646e ] } , - BigNum { limbs: [ 0x2d3653abd830a4926ec374de29e5ed, 0xaa325b5df1ea463718e7ac80d41a92, 0x000f7e ] } , - BigNum { limbs: [ 0xd3fa076900a2701dc2e8ce1a0001e5, 0x8a061c5504e40c9c6d744ce76f9570, 0x004bae ] } , - BigNum { limbs: [ 0xe9a9fb96fdb98ee23d1730e5fffe1c, 0x1d4d0d487864269d6a93bcba686fe2, 0x00283f ] } , - BigNum { limbs: [ 0x841ffb42a9153d71f0aca0022c86e0, 0x0b4a3128782aad8b75eeb88658b3d3, 0x002b1f ] } , - BigNum { limbs: [ 0x398407bd5546c18e0f535efdd37921, 0x9c08f875051d85ae6219511b7f5180, 0x0048ce ] } , - BigNum { limbs: [ 0x328f11d9cdf877394e8363ac674b29, 0xfea00f8d24bf97d28a6cca10529e21, 0x004b21 ] } , - BigNum { limbs: [ 0x8b14f126306387c6b17c9b5398b4d8, 0xa8b31a1058889b674d9b3f91856732, 0x0028cb ] } , - BigNum { limbs: [ 0x535ba390e22a934f2887da7a4613ac, 0x146fc82c471d6006a526adeef61511, 0x005d2c ] } , - BigNum { limbs: [ 0x6a485f6f1c316bb0d7782485b9ec55, 0x92e36171362ad33332e15bb2e1f042, 0x0016c1 ] } , - BigNum { limbs: [ 0xe632049f8464426c8b9b2bf815aad7, 0x48ccf85251fc944d705267aef07995, 0x002fe5 ] } , - BigNum { limbs: [ 0xd771fe6079f7bc937464d307ea552a, 0x5e86314b2b4b9eec67b5a1f2e78bbd, 0x004408 ] } , - BigNum { limbs: [ 0xe3f58397fa59ca7ee8c97459708936, 0x49b450f7e1001fbfe1fc8d8a0d5fe7, 0x007294 ] } , - BigNum { limbs: [ 0xd9ae7f680402348117368aa68f76cb, 0x5d9ed8a59c481379f60b7c17caa56b, 0x000159 ] } , - BigNum { limbs: [ 0x9de328231391765bc4f547e17fae04, 0x7ae3db865ba7714dcc8e32350736c2, 0x002d93 ] } , - BigNum { limbs: [ 0x1fc0dadceaca88a43b0ab71e8051fd, 0x2c6f4e1721a0c1ec0b79d76cd0ce91, 0x00465a ] } , - BigNum { limbs: [ 0x99e982481eb187c638ab874c146c0a, 0x850021892f6b10f3be96e9d4669892, 0x001b04 ] } , - BigNum { limbs: [ 0x23ba80b7dfaa7739c75477b3eb93f7, 0x225308144ddd224619711fcd716cc1, 0x0058e9 ] } , - BigNum { limbs: [ 0x22968828352a6e3f4bf52554d38e6f, 0xf1c7a7718e251607c0636d7990d68f, 0x00262a ] } , - BigNum { limbs: [ 0x9b0d7ad7c93190c0b40ad9ab2c7192, 0xb58b822bef231d3217a49c28472ec4, 0x004dc2 ] } , - BigNum { limbs: [ 0x19d4b2a482d2fbc23c6ee8ac5a4aaf, 0xc9aafb60bcbac15b96d0a2f553f4e4, 0x002d95 ] } , - BigNum { limbs: [ 0xa3cf505b7b89033dc3911653a5b552, 0xdda82e3cc08d71de413766ac84106f, 0x004657 ] } , - BigNum { limbs: [ 0x9ac76eb653b8077d5feb370589ddcd, 0x1cea5e2d9df0734149137047b1786e, 0x003b8c ] } , - BigNum { limbs: [ 0x22dc9449aaa3f782a014c7fa762234, 0x8a68cb6fdf57bff88ef4995a268ce5, 0x003861 ] } , - BigNum { limbs: [ 0x6ea99bee92c793b2126ee2e55d5b7b, 0x532503b950c74c9db999b77bc95b13, 0x006efd ] } , - BigNum { limbs: [ 0x4efa67116b946b4ded911c1aa2a486, 0x542e25e42c80e69c1e6e52260eaa40, 0x0004f0 ] } , - BigNum { limbs: [ 0x4abd405dd655c9caba576e317c51c0, 0x5b7f47d7e3dde00b481b539b58b533, 0x006e5f ] } , - BigNum { limbs: [ 0x72e6c2a22806353545a890ce83ae41, 0x4bd3e1c5996a532e8fecb6067f5020, 0x00058e ] } , - BigNum { limbs: [ 0x231f19c71e8773da6453c4f956b91c, 0x019aedcb1f56b52853da3777fcc872, 0x000eaf ] } , - BigNum { limbs: [ 0x9a84e938dfd48b259bac3a06a946e5, 0xa5b83bd25df17e11842dd229db3ce1, 0x00653e ] } , - BigNum { limbs: [ 0x19668a6e56d866fa44b2cf5ea9ce3e, 0x3a4b78ab5c819959f3c1dbce24dcb2, 0x00567a ] } , - BigNum { limbs: [ 0xa43d7891a7839805bb4d2fa15631c3, 0x6d07b0f220c699dfe4462dd3b328a1, 0x001d73 ] } , - BigNum { limbs: [ 0x8fc3ecb74d2370818a195b4030b82d, 0xda607fd657b1ecc589fe94d902934c, 0x002c8e ] } , - BigNum { limbs: [ 0x2de01648b1388e7e75e6a3bfcf47d4, 0xccf2a9c7259646744e0974c8d57207, 0x00475e ] } , - BigNum { limbs: [ 0x8586ae1f584b84c709f7cddb49aefe, 0x9d29782d7022884ec5a8cd2669f7cc, 0x0019fa ] } , - BigNum { limbs: [ 0x381d54e0a6107a38f6083124b65103, 0x0a29b1700d25aaeb125f3c7b6e0d87, 0x0059f3 ] } , - BigNum { limbs: [ 0x97551d7eb479316903092c74d1b363, 0xc0dfcf0eae86c2b3ee68881b3131e8, 0x004b0e ] } , - BigNum { limbs: [ 0x264ee58149e2cd96fcf6d28b2e4c9e, 0xe6735a8ecec17085e99f8186a6d36b, 0x0028de ] } , - BigNum { limbs: [ 0x8f79025062832db2e14ff671c966ca, 0x39d976a5cc746815ff2c5df25e4c4b, 0x00500c ] } , - BigNum { limbs: [ 0x2e2b00af9bd8d14d1eb0088e369937, 0x6d79b2f7b0d3cb23d8dbabaf79b908, 0x0023e1 ] } , - BigNum { limbs: [ 0x9d16dab72c6ea893501f19a2ae9b40, 0x9285f4b67ba0714fb14e35f116982e, 0x003c74 ] } , - BigNum { limbs: [ 0x208d2848d1ed566cafe0e55d5164c1, 0x14cd34e701a7c1ea26b9d3b0c16d25, 0x003779 ] } , - BigNum { limbs: [ 0x376a86c53fbaa0e7b0f84cf1693a6c, 0xd3d2ca0f2c04501eff841f6ad00440, 0x005f25 ] } , - BigNum { limbs: [ 0x86397c3abea15e184f07b20e96c595, 0xd3805f8e5143e31ad883ea37080113, 0x0014c7 ] } , - BigNum { limbs: [ 0xcfc741b88a6d90351e7a72117b4660, 0xbefa63943b3c9fb623bd7d8f468827, 0x00235e ] } , - BigNum { limbs: [ 0xeddcc14773ee6ecae1858cee84b9a1, 0xe858c609420b9383b44a8c12917d2b, 0x00508e ] } , - BigNum { limbs: [ 0x73d6ebd3f2d04ebd818c79e9b418c3, 0xa89d6917cf356fb52776257e47f6bd, 0x006d9c ] } , - BigNum { limbs: [ 0x49cd172c0b8bb0427e7385164be73e, 0xfeb5c085ae12c384b091e423900e96, 0x000650 ] } , - BigNum { limbs: [ 0xcbed26a10189725865f49cae84c1f0, 0x51abf2ff1a7ac214f8af079281e8c2, 0x001c89 ] } , - BigNum { limbs: [ 0xf1b6dc5efcd28ca79a0b62517b3e11, 0x55a7369e62cd7124df59020f561c90, 0x005764 ] } , - BigNum { limbs: [ 0x5c2a2517ea29380d784d83532d58a4, 0xe5bdc2f376ef3fbfaf7cf36c98f23c, 0x002acb ] } , - BigNum { limbs: [ 0x6179dde81432c6f287b27bacd2a75d, 0xc19566aa0658f37a288b16353f1317, 0x004921 ] } , - BigNum { limbs: [ 0x0c396a9fa67ea67e2a604403076877, 0xa9395cb8d476fab39024f46a4961d9, 0x003334 ] } , - BigNum { limbs: [ 0xb16a986057dd5881d59fbafcf8978a, 0xfe19cce4a8d1388647e315378ea37a, 0x0040b8 ] } , - BigNum { limbs: [ 0x659be0bb7e781e96ab11c20e5ad151, 0xbf9e4612a7a04b853daeb5686a7f1f, 0x005f0e ] } , - BigNum { limbs: [ 0x580822447fe3e06954ee3cf1a52eb0, 0xe7b4e38ad5a7e7b49a5954396d8634, 0x0014de ] } , - BigNum { limbs: [ 0x34af14b61e0abe74a1f6718c130477, 0x7a8bca252472eb674a1a620890d7a5, 0x004352 ] } , - BigNum { limbs: [ 0x88f4ee49e051408b5e098d73ecfb8a, 0x2cc75f7858d547d28deda799472dae, 0x00309b ] } , - BigNum { limbs: [ 0x986d4f948654a8ddccfd2991cb1cc7, 0x529d1d76d858cc6ba0596eae27c4e4, 0x003b18 ] } , - BigNum { limbs: [ 0x2536b36b780756223302d56e34e33a, 0x54b60c26a4ef66ce37ae9af3b0406f, 0x0038d5 ] } , - BigNum { limbs: [ 0x9da80dc7ef9f0f200b5775cb7c7f34, 0xada04d5e74819262a96d0a5549b5f1, 0x000679 ] } , - BigNum { limbs: [ 0x1ffbf5380ebcefdff4a889348380cd, 0xf9b2dc3f08c6a0d72e9aff4c8e4f62, 0x006d73 ] } , - BigNum { limbs: [ 0x8076a04042fa6a4ae23d4887732cc7, 0x84efe7a91e54c20ba6c40efc806c85, 0x005327 ] } , - BigNum { limbs: [ 0x3d2d62bfbb6194b51dc2b6788cd33a, 0x226341f45ef3712e3143faa55798ce, 0x0020c6 ] } , - BigNum { limbs: [ 0xad338dc96b53f06d9bd93caef95435, 0x46d16b0ded487a772571e97d5605ea, 0x004ac4 ] } , - BigNum { limbs: [ 0x1070753693080e926426c25106abcc, 0x6081be8f8fffb8c2b296202481ff69, 0x002929 ] } , - BigNum { limbs: [ 0x640ded94a2153f4f3cf1b82d878f30, 0x620c501b6d5b34b1fe426ba069ee6f, 0x000904 ] } , - BigNum { limbs: [ 0x5996156b5c46bfb0c30e46d27870d1, 0x4546d9820fecfe87d9c59e016e16e4, 0x006ae9 ] } , - BigNum { limbs: [ 0x3fcc8fbece3ff36832c0e6cf2383d0, 0xb5ed3c6c5168d7a5b570137a2c4e8f, 0x0030a3 ] } , - BigNum { limbs: [ 0x7dd77341301c0b97cd3f1830dc7c31, 0xf165ed312bdf5b942297f627abb6c4, 0x004349 ] } , - BigNum { limbs: [ 0x950b898168358f10a2ea8dd9532d0b, 0x3fa6331dc12669b74e8a5f93d55dda, 0x0043a1 ] } , - BigNum { limbs: [ 0x2898797e96266fef5d157126acd2f6, 0x67acf67fbc21c982897daa0e02a779, 0x00304c ] } , - BigNum { limbs: [ 0x87dd867c2846dfcc3b7f324100ce0b, 0xdd9346337dff0ec770162a016a73c0, 0x000934 ] } , - BigNum { limbs: [ 0x35c67c83d6151f33c480ccbeff31f6, 0xc9bfe369ff49247267f1dfa06d9193, 0x006ab8 ] } , - BigNum { limbs: [ 0xea948838d3a59e714fe5f9a319f08b, 0xd9b9e9bc0a45bca442260d0f5cc781, 0x0019ff ] } , - BigNum { limbs: [ 0xd30f7ac72ab6608eb01a055ce60f76, 0xcd993fe17302769595e1fc927b3dd1, 0x0059ed ] } , - BigNum { limbs: [ 0x42eaa33c21a6c3f8e855b7ca48e223, 0x2a883802cf8d5e7aadc120761b2157, 0x001430 ] } , - BigNum { limbs: [ 0x7ab95fc3dcb53b0717aa4735b71dde, 0x7ccaf19aadbad4bf2a46e92bbce3fc, 0x005fbd ] } , - BigNum { limbs: [ 0xea26e3e861e9a6f03205e4801f0670, 0x521b43809c6f413f091a0442fe3b0a, 0x0057e2 ] } , - BigNum { limbs: [ 0xd37d1f179c72580fcdfa1a7fe0f991, 0x5537e61ce0d8f1faceee055ed9ca48, 0x001c0b ] } , - BigNum { limbs: [ 0x888aca5f2cf18937eb9c08a6bad0a5, 0xb368c1bd3ec3d9a4667dbe97b7466b, 0x006c24 ] } , - BigNum { limbs: [ 0x351938a0d16a75c81463f659452f5c, 0xf3ea67e03e845995718a4b0a20bee8, 0x0007c8 ] } , - BigNum { limbs: [ 0xca463738abfdcceae6f7f2c97f6ddc, 0x37a8bdb046c980f6c206144132a757, 0x0053ca ] } , - BigNum { limbs: [ 0xf35dcbc7525e321519080c36809225, 0x6faa6bed367eb2431601f560a55dfb, 0x002023 ] } , - BigNum { limbs: [ 0x33e248bb1c34f3d3daea56ba7f16a9, 0xf0818c66f93206930810c8ebd7cf6f, 0x002c56 ] } , - BigNum { limbs: [ 0x89c1ba44e2270b2c2515a84580e958, 0xb6d19d3684162ca6cff740b60035e4, 0x004796 ] } , - BigNum { limbs: [ 0xfa342f2e54d35b3efaf03e1f4c23a5, 0x4ed170bf21bac2867ad9bd62474fc4, 0x00426e ] } , - BigNum { limbs: [ 0xc36fd3d1a988a3c1050fc0e0b3dc5c, 0x5881b8de5b8d70b35d2e4c3f90b58e, 0x00317f ] } , - BigNum { limbs: [ 0xee7464cc2693acc7f2b0c7f97d0157, 0xcd54ee73a12d5a25364bab696dd707, 0x0044f2 ] } , - BigNum { limbs: [ 0xcf2f9e33d7c852380d4f370682feaa, 0xd9fe3b29dc1ad914a1bc5e386a2e4b, 0x002efa ] } , - BigNum { limbs: [ 0x09bb3a7eed94b5ee1cb6e72b82c6d1, 0x2cf9a0599655f39dd358a82382f466, 0x002a3b ] } , - BigNum { limbs: [ 0xb3e8c88110c74911e34917d47d3930, 0x7a598943e6f23f9c04af617e5510ed, 0x0049b2 ] } , - BigNum { limbs: [ 0xded1798f001c83984bae2ba9e576ec, 0x56ee3af2ac38ca85bda4670d2c2307, 0x000975 ] } , - BigNum { limbs: [ 0xded28970fe3f7b67b451d3561a8915, 0x5064eeaad10f68b41a63a294abe24b, 0x006a78 ] } , - BigNum { limbs: [ 0x4dc75cbe09f501a0b24ec3dca1f2ce, 0x3112ac902e13ee36737d3869b66204, 0x0031e6 ] } , - BigNum { limbs: [ 0x6fdca641f466fd5f4db13b235e0d33, 0x76407d0d4f344503648ad13821a34f, 0x004207 ] } , - BigNum { limbs: [ 0x156add501a1c6937b11e308bf0abc8, 0x363da95355ccf81be9d7b571ce05b1, 0x003e29 ] } , - BigNum { limbs: [ 0xa83925afe43f95c84ee1ce740f5439, 0x7115804a277b3b1dee30543009ffa2, 0x0035c4 ] } , - BigNum { limbs: [ 0xb50c83fd1f5c0dcd6dcd1e8a6d2938, 0x647da03f2b3cd52856ab58c24f30f6, 0x0025ad ] } , - BigNum { limbs: [ 0x08977f02defff1329232e07592d6c9, 0x42d5895e520b5e11815cb0df88d45d, 0x004e40 ] } , - BigNum { limbs: [ 0xa73479f853c1eb8d14b4edec527670, 0x6dce2e5ec6630aa522414c846da37a, 0x001450 ] } , - BigNum { limbs: [ 0x166f8907aa9a1372eb4b1113ad8991, 0x3984fb3eb6e52894b5c6bd1d6a61d9, 0x005f9d ] } , - BigNum { limbs: [ 0xd15d8f0976f55e06f8ee5e9777964d, 0x95ea54b09d10987f4e2ce1b79388c1, 0x00413d ] } , - BigNum { limbs: [ 0xec4673f68766a0f90711a0688869b4, 0x1168d4ece0379aba89db27ea447c91, 0x0032b0 ] } , - BigNum { limbs: [ 0xb6afda9637ccb788a3d4bd18e66da6, 0x518219806ce2d8c3dd1ccbc1b529ec, 0x005581 ] } , - BigNum { limbs: [ 0x06f42869c68f47775c2b41e719925b, 0x55d1101d10655a75faeb3de022db67, 0x001e6c ] } , - BigNum { limbs: [ 0x991b24aa25db0e40861b826cace87f, 0x5ee79ca9436b6c1feffb1c216f70a6, 0x007149 ] } , - BigNum { limbs: [ 0x2488de55d880f0bf79e47c93531782, 0x486b8cf439dcc719e80ced806894ad, 0x0002a4 ] } , - BigNum { limbs: [ 0xfb90de5161d3aa0e4f9e5a6854836c, 0x7730aabeaf2707d3acaf7b7234937b, 0x000453 ] } , - BigNum { limbs: [ 0xc21324ae9c8854f1b061a497ab7c95, 0x30227edece212b662b588e2fa371d7, 0x006f9a ] } , - BigNum { limbs: [ 0x514cd4e04272c008e2fb108e12e22a, 0x80e1938cd09c9a3ae5427d8e18cb54, 0x000fe6 ] } , - BigNum { limbs: [ 0x6c572e1fbbe93ef71d04ee71ed1dd7, 0x26719610acab98fef2c58c13bf39ff, 0x006407 ] } , - BigNum { limbs: [ 0xad623bf3402bd57a9634b25637c216, 0x449c6a67b9ed93981376c9cd141418, 0x003869 ] } , - BigNum { limbs: [ 0x1041c70cbe30298569cb4ca9c83deb, 0x62b6bf35c35a9fa1c4913fd4c3f13b, 0x003b84 ] } , - BigNum { limbs: [ 0xc2dfa82313ad493a3e1a7aa260077d, 0xbce2aa1625f8acb62f7f17837a2577, 0x001c25 ] } , - BigNum { limbs: [ 0xfac45adceaaeb5c5c1e5845d9ff884, 0xea707f87574f8683a888f21e5ddfdb, 0x0057c7 ] } , - BigNum { limbs: [ 0x1db465016aecf09e6f74084c8e85a6, 0xf3dd5bee9b24bd298bcb9b46025a18, 0x006cbe ] } , - BigNum { limbs: [ 0x9fef9dfe936f0e61908bf6b3717a5b, 0xb375cdaee22376104c3c6e5bd5ab3b, 0x00072e ] } , - BigNum { limbs: [ 0x07ba425b194f3be868c32a5b94f4e5, 0x27101520c4b2e11d3393b8d009aa2c, 0x000eba ] } , - BigNum { limbs: [ 0xb5e9c0a4e50cc317973cd4a46b0b1c, 0x8043147cb895521ca47450d1ce5b27, 0x006533 ] } , - BigNum { limbs: [ 0xe5eebb2c61bfc76d8878e6c92c1964, 0x3ea3f96c0440f88cd53e4cee2d698d, 0x00507c ] } , - BigNum { limbs: [ 0xd7b547d39c9c379277871836d3e69d, 0x68af303179073aad02c9bcb3aa9bc5, 0x002371 ] } , - BigNum { limbs: [ 0xcaef2e1b379cbd65f21f6521b5ffe3, 0xb92efbacec2085f75cd0394e7e1493, 0x004c10 ] } , - BigNum { limbs: [ 0xf2b4d4e4c6bf419a0de099de4a001e, 0xee242df09127ad427b37d05359f0bf, 0x0027dc ] } , - BigNum { limbs: [ 0x5a90d8902f34ee2ffffbac2e990b32, 0x85e3496a299b1a2b4aad24d743792b, 0x0042ce ] } , - BigNum { limbs: [ 0x63132a6fcf2710d0000452d166f4cf, 0x216fe03353ad190e8d5ae4ca948c28, 0x00311f ] } , - BigNum { limbs: [ 0xb5b47bb725cda97ed4be029bd47ddd, 0x6e0bba848829e2af1b87209c0c0556, 0x0072af ] } , - BigNum { limbs: [ 0x07ef8748d88e55812b41fc642b8224, 0x39476f18f51e508abc80e905cbfffd, 0x00013e ] } , - BigNum { limbs: [ 0x2bafd544a199a3fe213ce3f40c2fa1, 0x01cdf2ff819eb174b778fe8e29f421, 0x00158b ] } , - BigNum { limbs: [ 0x91f42dbb5cc25b01dec31b0bf3d060, 0xa585369dfba981c5208f0b13ae1132, 0x005e62 ] } , - BigNum { limbs: [ 0xe7f96676286b47c433afe4d106b43d, 0x310d4f00fee0175ca29996af2afe4e, 0x004b52 ] } , - BigNum { limbs: [ 0xd5aa9c89d5f0b73bcc501a2ef94bc4, 0x7645da9c7e681bdd356e72f2ad0704, 0x00289b ] } , - BigNum { limbs: [ 0xca2c4fd11289ccc9f8090ae9106aaf, 0x72623392274a8b3b1472c4aac7b30c, 0x00586f ] } , - BigNum { limbs: [ 0xf377b32eebd2323607f6f416ef9552, 0x34f0f60b55fda7fec39544f7105246, 0x001b7e ] } , - BigNum { limbs: [ 0xddcb3aae11b4f6a83569dad6cd41e9, 0xa2a0e40b14ad3ac082ec036858c652, 0x0042cb ] } , - BigNum { limbs: [ 0xdfd8c851eca70857ca96242932be18, 0x04b24592689af879551c06397f3f00, 0x003122 ] } , - BigNum { limbs: [ 0xa633eb2bd252b8f338d1145bbf0bd5, 0x83fc39549f77c4b5af9e6def1f5a2e, 0x006953 ] } , - BigNum { limbs: [ 0x177017d42c09460cc72eeaa440f42c, 0x2356f048ddd06e8428699bb2b8ab25, 0x000a9a ] } , - BigNum { limbs: [ 0xcd97301b698d332256b524d8b89e8b, 0x754e6966f69b3071acf3d7805a5c41, 0x004f5b ] } , - BigNum { limbs: [ 0xf00cd2e494cecbdda94ada27476176, 0x3204c03686ad02c82b1432217da911, 0x002492 ] } , - BigNum { limbs: [ 0x85f998168289ca7f2423392adae5b9, 0xd7a8d381273c1b290213873ae175d7, 0x004fd7 ] } , - BigNum { limbs: [ 0x37aa6ae97bd23480dbdcc5d5251a48, 0xcfaa561c560c1810d5f48266f68f7c, 0x002415 ] } , - BigNum { limbs: [ 0x461c33c1a0f0b758be078a66b064a1, 0xe1a1f2cc7087dc66f4b808f364646b, 0x0037f4 ] } , - BigNum { limbs: [ 0x7787cf3e5d6b47a741f874994f9b60, 0xc5b136d10cc056d2e35000ae73a0e8, 0x003bf8 ] } , - BigNum { limbs: [ 0x10344b217e61bd034fe540f385a129, 0x7149c0f9efc012a497e72294fe0d1b, 0x000151 ] } , - BigNum { limbs: [ 0xad6fb7de7ffa41fcb01abe0c7a5ed8, 0x360968a38d8820954020e70cd9f838, 0x00729c ] } , - BigNum { limbs: [ 0xaa12dad03920b780c10f21710ecb97, 0x2c08ab0d493cb63fc62f04e5adaf87, 0x0038b5 ] } , - BigNum { limbs: [ 0x1391282fc53b477f3ef0dd8ef1346a, 0x7b4a7e90340b7cfa11d904bc2a55cc, 0x003b38 ] } , - BigNum { limbs: [ 0xc9785e4b1a161953a535350d483019, 0x62ff5bf8d281fb472b23db94f42d8e, 0x00420b ] } , - BigNum { limbs: [ 0xf42ba4b4e445e5ac5acac9f2b7cfe8, 0x4453cda4aac637f2ace42e0ce3d7c4, 0x0031e2 ] } , - BigNum { limbs: [ 0xf91bc8feb9b112808f505c45cb015c, 0x917dc58e99c00d615843aba8be67e6, 0x00109e ] } , - BigNum { limbs: [ 0xc4883a0144aaec7f70afa2ba34fea5, 0x15d5640ee38825d87fc45df9199d6c, 0x00634f ] } , - BigNum { limbs: [ 0xa0b2c8a4a7bc2e69a5eae3e0a37475, 0x723faf835210730c75680995aa200f, 0x006fb5 ] } , - BigNum { limbs: [ 0x1cf13a5b569fd0965a151b1f5c8b8c, 0x35137a1a2b37c02d62a0000c2de544, 0x000438 ] } , - BigNum { limbs: [ 0x5cf9ee56a0d33e35042724c5b436bb, 0xc0eebcb1f4772ef461072f445e70e7, 0x00080e ] } , - BigNum { limbs: [ 0x60aa14a95d88c0cafbd8da3a4bc946, 0xe6646ceb88d104457700da5d79946c, 0x006bde ] } , - BigNum { limbs: [ 0xe4ef4d5372d2492e81ced8221f9f8a, 0x1efd37f7f7e0769798bf3a5553980d, 0x0060b7 ] } , - BigNum { limbs: [ 0xd8b4b5ac8b89b5d17e3126dde06077, 0x8855f1a58567bca23f48cf4c846d45, 0x001336 ] } , - BigNum { limbs: [ 0xc6252dbf1b326892f4d9b3220826cd, 0xfeab6ca661472557041d93d5177942, 0x0013b1 ] } , - BigNum { limbs: [ 0xf77ed540e329966d0b264bddf7d934, 0xa8a7bcf71c010de2d3ea75ccc08c10, 0x00603b ] } , - BigNum { limbs: [ 0x9b851d08727d4269878537a09ab251, 0xe2b20f3384ec13ab948f2be0c4358d, 0x005366 ] } , - BigNum { limbs: [ 0x221ee5f78bdebc96787ac75f654db0, 0xc4a11a69f85c1f8e4378ddc113cfc6, 0x002086 ] } , - BigNum { limbs: [ 0x97fa6b553424bce61ba1af6202359a, 0x62790c9ec5709483ded871817d0f54, 0x0027cf ] } , - BigNum { limbs: [ 0x25a997aaca374219e45e4f9dfdca67, 0x44da1cfeb7d79eb5f92f98205af5ff, 0x004c1e ] } , - BigNum { limbs: [ 0xc62920e6caa9f8f2292b77ec6944b7, 0x17e308d1480c85fddad45ca496fc0c, 0x006ddc ] } , - BigNum { limbs: [ 0xf77ae21933b2060dd6d4871396bb4a, 0x8f7020cc353bad3bfd33acfd410946, 0x000611 ] } , - BigNum { limbs: [ 0xcc6493ffad656f51eae331d45e4567, 0x9478a2d01333d6a928516c6c492af2, 0x0048b3 ] } , - BigNum { limbs: [ 0xf13f6f0050f68fae151ccd2ba1ba9a, 0x12da86cd6a145c90afb69d358eda60, 0x002b3a ] } , - BigNum { limbs: [ 0xa4b9a7d9b44f7d6609134c8fd05714, 0xef733c2089cf6b37fc2d2bce9a49f6, 0x006304 ] } , - BigNum { limbs: [ 0x18ea5b264a0c8199f6ecb2702fa8ed, 0xb7dfed7cf378c801dbdaddd33dbb5d, 0x0010e8 ] } , - BigNum { limbs: [ 0x01287aa8e28eee99c2146c444e519a, 0xaa852cf69d9898ecff7fc2e04b67ab, 0x0025ea ] } , - BigNum { limbs: [ 0xbc7b88571bcd10663deb92bbb1ae67, 0xfccdfca6dfaf9a4cd88846c18c9da8, 0x004e02 ] } , - BigNum { limbs: [ 0x6c05295b5fb41cb8d6b4ecef99c9e8, 0x71a09ca75e9ecf0144808af6112ecb, 0x001783 ] } , - BigNum { limbs: [ 0x519ed9a49ea7e247294b1210663619, 0x35b28cf61ea9643893877eabc6d688, 0x005c6a ] } , - BigNum { limbs: [ 0x0dab4c4a2a63ad2369ef864781d95e, 0x2f7c6017a94f9b01da56279eb5d9e5, 0x003cd1 ] } , - BigNum { limbs: [ 0xaff8b6b5d3f851dc961078b87e26a3, 0x77d6c985d3f89837fdb1e203222b6e, 0x00371c ] } , - BigNum { limbs: [ 0xfbbf05605e22049088086fe345cf99, 0x9962d49e98f824a86f10b7e39f2849, 0x004955 ] } , - BigNum { limbs: [ 0xc1e4fd9fa039fa6f77f78f1cba3068, 0x0df054fee4500e9168f751be38dd09, 0x002a98 ] } , - BigNum { limbs: [ 0x6ea85e98587c4a13068409bc82e244, 0x73eb7bcba57289a774bf888a996f9c, 0x0052c7 ] } , - BigNum { limbs: [ 0x4efba467a5dfb4ecf97bf5437d1dbd, 0x3367add1d7d5a992634881173e95b7, 0x002126 ] } , - BigNum { limbs: [ 0x15a25c56a25116ef4661cf681ac890, 0x122395c63dc1d8108a1f42d3561429, 0x000157 ] } , - BigNum { limbs: [ 0xa801a6a95c0ae810b99e2f97e53771, 0x952f93d73f865b294de8c6ce81f12a, 0x007296 ] } , - BigNum { limbs: [ 0xfa85c091fab993f2d6a61c264bba11, 0xc9de3a5deb69cc970bd5f2e6c815a4, 0x005469 ] } , - BigNum { limbs: [ 0xc31e426e03a26b0d2959e2d9b445f0, 0xdd74ef3f91de66a2cc3216bb0fefae, 0x001f83 ] } , - BigNum { limbs: [ 0x9cf7f79590474d5947ce0ad319cdc7, 0xe9425e38ffcc78b5a5b93d41590f4b, 0x0054d9 ] } , - BigNum { limbs: [ 0x20ac0b6a6e14b1a6b831f42ce6323a, 0xbe10cb647d7bba84324ecc607ef608, 0x001f13 ] } , - BigNum { limbs: [ 0x059903e0524868e55b60810a7f877b, 0xe6dafe0adda151ded54695836adc05, 0x006bea ] } , - BigNum { limbs: [ 0xb80aff1fac13961aa49f7df5807886, 0xc0782b929fa6e15b02c1741e6d294e, 0x000802 ] } , - BigNum { limbs: [ 0xe617879a72d893b66d13df0b850d61, 0x14ed7cb17771b59db72419438d24fd, 0x002e07 ] } , - BigNum { limbs: [ 0xd78c7b658b836b4992ec1ff47af2a0, 0x9265acec05d67d9c20e3f05e4ae055, 0x0045e6 ] } , - BigNum { limbs: [ 0xe4824fbac5f8e7a21ac44df3477076, 0x4574e3442ee136aebb2396bd4f09d5, 0x0062b3 ] } , - BigNum { limbs: [ 0xd921b3453863175de53bb10cb88f8b, 0x61de46594e66fc8b1ce472e488fb7d, 0x00113a ] } , - BigNum { limbs: [ 0xb8ecee197d9af0e3712b897f88b4d1, 0x00c45b561179be483f87c82a93f63f, 0x001a16 ] } , - BigNum { limbs: [ 0x04b714e680c10e1c8ed47580774b30, 0xa68ece476bce74f198804177440f14, 0x0059d7 ] } , - BigNum { limbs: [ 0x94ef84e6b7b995a1041f9488f68dae, 0x2ec1fc6138bd21f6d173aa046fe4ca, 0x0026c6 ] } , - BigNum { limbs: [ 0x28b47e1946a2695efbe06a77097253, 0x78912d3c448b114306945f9d682089, 0x004d27 ] } , - BigNum { limbs: [ 0x6d56a1d006b6372fac4dd82e55e945, 0x85187afb65a3c87c53ce3f7a76569b, 0x004129 ] } , - BigNum { limbs: [ 0x504d612ff7a5c7d053b226d1aa16bc, 0x223aaea217a46abd8439ca2761aeb8, 0x0032c4 ] } , - BigNum { limbs: [ 0x63ef45ad4908e6f172f93272aef9c6, 0xa5933f9d639627bceabba9c13bcb9a, 0x0011b5 ] } , - BigNum { limbs: [ 0x59b4bd52b553180e8d06cc8d51063b, 0x01bfea0019b20b7ced4c5fe09c39b9, 0x006238 ] } , - BigNum { limbs: [ 0x435d45df81fc513e24cf88d26d14bd, 0x4e82e0a4d4c5a66c4465ffe15f6be2, 0x00628f ] } , - BigNum { limbs: [ 0x7a46bd207c5fadc1db30762d92eb44, 0x58d048f8a8828ccd93a209c0789971, 0x00115e ] } , - BigNum { limbs: [ 0x5755762ed0dc2e1fda0410c4e4d674, 0x48feadc8d91349f2892deb1068f424, 0x0025ff ] } , - BigNum { limbs: [ 0x664e8cd12d7fd0e025fbee3b1b298d, 0x5e547bd4a434e9474eda1e916f112f, 0x004dee ] } , - BigNum { limbs: [ 0x976a04577e50444bc5e118fb425b35, 0xe8512409c3857773b21c8454d0d6c7, 0x001273 ] } , - BigNum { limbs: [ 0x2639fea8800bbab43a1ee604bda4cc, 0xbf020593b9c2bbc625eb854d072e8c, 0x006179 ] } , - BigNum { limbs: [ 0x4fb65d28974f6792018eab205ac3e1, 0x8d26543a3a60f8147ec78eec0ecf24, 0x006da6 ] } , - BigNum { limbs: [ 0x6deda5d7670c976dfe7153dfa53c20, 0x1a2cd56342e73b2559407ab5c9362f, 0x000647 ] } , - BigNum { limbs: [ 0x98fe6b6879e3c225a29005376888d7, 0x028e0bf569fd1c2b22c48fbf68ae2d, 0x000ebb ] } , - BigNum { limbs: [ 0x24a5979784783cda5d6ff9c897772a, 0xa4c51da8134b170eb54379e26f5726, 0x006532 ] } , - BigNum { limbs: [ 0x5c491d95facfe2393b548d4204a51f, 0xc40edecaced7de301cf8986c431565, 0x0020c0 ] } , - BigNum { limbs: [ 0x615ae56a038c1cc6c4ab71bdfb5ae2, 0xe3444ad2ae705509bb0f713594efee, 0x00532c ] } , - BigNum { limbs: [ 0xad139cafdaa772d6e616c9c1421c9e, 0x0a3d1e68f810578306d723b212c53f, 0x00348b ] } , - BigNum { limbs: [ 0x1090665023b48c2919e9353ebde363, 0x9d160b348537dbb6d130e5efc54014, 0x003f62 ] } , - BigNum { limbs: [ 0x700a79da2ac3c6085f76ac583f79a0, 0x140bc42b07da6b95d0e40b88b4ff01, 0x002e99 ] } , - BigNum { limbs: [ 0x4d998925d39838f7a08952a7c08661, 0x93476572756dc7a40723fe19230652, 0x004554 ] } , - BigNum { limbs: [ 0x81818041738bf1e847f9433776feb1, 0x0ebca8a36a05a5b6c8dde49bad804f, 0x00290a ] } , - BigNum { limbs: [ 0x3c2282be8ad00d17b806bbc8890150, 0x989680fa13428d830f2a25062a8504, 0x004ae3 ] } , - BigNum { limbs: [ 0x309e790e65064e32306af340c1db2d, 0x686764a69972d87fb06401dd4ca805, 0x000bd0 ] } , - BigNum { limbs: [ 0x8d0589f19955b0cdcf950bbf3e24d4, 0x3eebc4f6e3d55aba27a407c48b5d4e, 0x00681d ] } , - BigNum { limbs: [ 0xde5b52cfa56e5ef9702d02ce6b3081, 0xdded4361edc32293b4da09077a31d3, 0x001395 ] } , - BigNum { limbs: [ 0xdf48b03058eda0068fd2fc3194cf80, 0xc965e63b8f8510a6232e009a5dd37f, 0x006057 ] } , - BigNum { limbs: [ 0x3a7a3a30e164ebf89184cfc722bd9f, 0x110afa3cec1ecf530b2c40345efea5, 0x000c0f ] } , - BigNum { limbs: [ 0x8329c8cf1cf713076e7b2f38dd4262, 0x96482f60912963e6ccdbc96d7906ae, 0x0067de ] } , - BigNum { limbs: [ 0x82c7aa2f50c6718c98f99408577a27, 0x59b976e328f1826addffd2285db4e5, 0x002059 ] } , - BigNum { limbs: [ 0x3adc58d0ad958d7367066af7a885da, 0x4d99b2ba5456b0cefa0837797a506e, 0x005394 ] } , - BigNum { limbs: [ 0x8fd7eef9244cb298fb4636446409e3, 0x01c7ef28e18206ab7288252332b360, 0x004783 ] } , - BigNum { limbs: [ 0x2dcc1406da0f4c6704b9c8bb9bf61e, 0xa58b3a749bc62c8e657fe47ea551f3, 0x002c6a ] } , - BigNum { limbs: [ 0x32aeceebd86026c4febf0b91c6806d, 0xa560942c6498c9107c1635743781d4, 0x0012a7 ] } , - BigNum { limbs: [ 0x8af5341425fbd83b0140f36e397f94, 0x01f2957118af6a295bf1d42da0837f, 0x006146 ] } , - BigNum { limbs: [ 0x1d7f2bc75be4ac1b670bcfcf1f849a, 0x509f02a10d5b316a6fe11176b0f9a8, 0x003c30 ] } , - BigNum { limbs: [ 0xa024d738a27752e498f42f30e07b67, 0x56b426fc6fed01cf6826f82b270bab, 0x0037bd ] } , - BigNum { limbs: [ 0xafa9321aff17c9004c5e11eb9505f9, 0x07f5cae1a195084571c7ab7696e4c1, 0x002e99 ] } , - BigNum { limbs: [ 0x0dfad0e4ff4435ffb3a1ed146afa08, 0x9f5d5ebbdbb32af466405e2b412092, 0x004554 ] } , - BigNum { limbs: [ 0x292d24283ac6fa129eee3f986b8455, 0x05c46d5e39f3855c0d1a0fb582e60a, 0x003852 ] } , - BigNum { limbs: [ 0x9476ded7c39504ed6111bf67947bac, 0xa18ebc3f4354adddcaedf9ec551f49, 0x003b9b ] } , - BigNum { limbs: [ 0xff6d043f13d90de781a5b5ae382857, 0xc1f34621fa6d9a2287d5f9220e2fb7, 0x003caa ] } , - BigNum { limbs: [ 0xbe36fec0ea82f1187e5a4951c7d7aa, 0xe55fe37b82da99175032107fc9d59b, 0x003742 ] } , - BigNum { limbs: [ 0x36a4cdd6c52bf66dea2db07aecfb2c, 0xb07666086a21dc850dde1ba420a978, 0x00081f ] } , - BigNum { limbs: [ 0x86ff35293930089215d24e851304d5, 0xf6dcc395132656b4ca29edfdb75bdb, 0x006bcd ] } , - BigNum { limbs: [ 0xcff89970e84a2fd43576dcf6601f6a, 0x95fd98daca15ee47fe04bc7132137e, 0x0020d0 ] } , - BigNum { limbs: [ 0xedab698f1611cf2bca8922099fe097, 0x115590c2b33244f1da034d30a5f1d4, 0x00531d ] } , - BigNum { limbs: [ 0x4bf510cf7c7c8c9e768704f04e2b80, 0x2d1b75a1ffc63094c7611bdd129b82, 0x002527 ] } , - BigNum { limbs: [ 0x71aef23081df72618978fa0fb1d481, 0x7a37b3fb7d8202a510a6edc4c569d1, 0x004ec6 ] } , - BigNum { limbs: [ 0xc766da81eb5f3a10cba8cca132a4af, 0x9895da559f7bcc1f97abceafe390c3, 0x002aef ] } , - BigNum { limbs: [ 0xf63d287e12fcc4ef3457325ecd5b52, 0x0ebd4f47ddcc671a405c3af1f4748f, 0x0048fe ] } , - BigNum { limbs: [ 0x77ccfd0e68f45d81c3ad1e35f68aa0, 0x04249a2841514c8df7a0b2153271d0, 0x007214 ] } , - BigNum { limbs: [ 0x45d705f19567a17e3c52e0ca097561, 0xa32e8f753bf6e6abe067578ca59383, 0x0001d9 ] } , - BigNum { limbs: [ 0xe42b3486654278312cda878efea016, 0x69b4cb4cf4fafbed3003ef8c3a813e, 0x001cc7 ] } , - BigNum { limbs: [ 0xd978ce79991986ced3257771015feb, 0x3d9e5e50884d374ca8041a159d8414, 0x005726 ] } , - BigNum { limbs: [ 0xdc08ba88d180d93188d4192bcfb84d, 0xa6db496e5b977354760383a269ab6e, 0x001e05 ] } , - BigNum { limbs: [ 0xe19b48772cdb25ce772be5d43047b4, 0x0077e02f21b0bfe5620485ff6e59e4, 0x0055e8 ] } , - BigNum { limbs: [ 0x9617aa98504fbcdf57909bea0a2da4, 0x5272602dee9b726a2311ddae84a49a, 0x005643 ] } , - BigNum { limbs: [ 0x278c5867ae0c4220a86f6315f5d25d, 0x54e0c96f8eacc0cfb4f62bf35360b9, 0x001daa ] } , - BigNum { limbs: [ 0x74a072f75e1eafc6b7ae4cbe9918df, 0x0ca1fa1ca2ce7bd130433636e1f719, 0x003963 ] } , - BigNum { limbs: [ 0x49039008a03d4f394851b24166e722, 0x9ab12f80da79b768a7c4d36af60e3a, 0x003a8a ] } , - BigNum { limbs: [ 0x0e4544b75517c16711866509b0117e, 0x8e613f107412f75f355eb5219f4d29, 0x005860 ] } , - BigNum { limbs: [ 0xaf5ebe48a9443d98ee7999f64fee83, 0x18f1ea8d09353bdaa2a9548038b82a, 0x001b8d ] } , - BigNum { limbs: [ 0x6b2362c6e3206af330c75237fd3287, 0xcf9dbeeb7a113d432c185eaed41723, 0x003918 ] } , - BigNum { limbs: [ 0x5280a0391b3b940ccf38acc802cd7a, 0xd7b56ab20336f5f6abefaaf303ee30, 0x003ad4 ] } , - BigNum { limbs: [ 0xfe6141c56e87705d1a4de431b14902, 0xb6f79972f279436a9109526def19bc, 0x000611 ] } , - BigNum { limbs: [ 0xbf42c13a8fd48ea2e5b21ace4eb6ff, 0xf05b902a8aceefcf46feb733e8eb96, 0x006ddb ] } , - BigNum { limbs: [ 0x771ac41ed853a25780bbfe03ec55d5, 0xa563d5b51c810b94291b65dd88b855, 0x000bf6 ] } , - BigNum { limbs: [ 0x46893ee126085ca87f4400fc13aa2c, 0x01ef53e860c727a5aeeca3c44f4cfe, 0x0067f7 ] } , - BigNum { limbs: [ 0x3ef3285a12e45cc86a0ebf672f9539, 0x73a1f676d8115d3e5f439eda2e7ab2, 0x001b27 ] } , - BigNum { limbs: [ 0x7eb0daa5eb77a23795f13f98d06ac8, 0x33b13326a536d5fb78c46ac7a98aa1, 0x0058c6 ] } , - BigNum { limbs: [ 0x078bb4a345264200b56e295c87eb31, 0x8d23be8445a567589623fdf89c7c4c, 0x002c63 ] } , - BigNum { limbs: [ 0xb6184e5cb935bcff4a91d5a37814d0, 0x1a2f6b1937a2cbe141e40ba93b8907, 0x00478a ] } , - BigNum { limbs: [ 0xc428f8a2654518b52166440df9b688, 0x3d89e044cc6c8191cc5fd4eb468731, 0x002ec4 ] } , - BigNum { limbs: [ 0xf97b0a5d9916e64ade99baf2064979, 0x69c94958b0dbb1a80ba834b6917e21, 0x004529 ] } , - BigNum { limbs: [ 0x356a0242c49b8fb3212df6a0e2db64, 0x410905166866b24236a3c7e932fe37, 0x004cde ] } , - BigNum { limbs: [ 0x883a00bd39c06f4cded2085f1d249d, 0x664a248714e180f7a16441b8a5071c, 0x00270f ] } , - BigNum { limbs: [ 0x4a92da52332af0b26f1f6b19b802a2, 0x903bb1db99afcd62607b6d2f5a7aed, 0x005ee5 ] } , - BigNum { limbs: [ 0x731128adcb310e4d90e093e647fd5f, 0x171777c1e39865d7778c9c727d8a66, 0x001508 ] } , - BigNum { limbs: [ 0x34b261df65292e9ebf6443bba0f2ed, 0x19bd16418157f24ce6e76cd2d04b7e, 0x0060b4 ] } , - BigNum { limbs: [ 0x88f1a1209932d061409bbb445f0d14, 0x8d96135bfbf040ecf1209ccf07b9d5, 0x001339 ] } , - BigNum { limbs: [ 0x3654f0611097c6b6a28c1f1914c201, 0x62bf4cb52ef4097fce3915c694a5c5, 0x004e30 ] } , - BigNum { limbs: [ 0x874f129eedc438495d73dfe6eb3e00, 0x4493dce84e5429ba09cef3db435f8e, 0x0025bd ] } , - BigNum { limbs: [ 0xa053141f7d3d7cf9065e7bcadcfc19, 0xb655d0e63d59e74dac8f8f64831f8c, 0x006be1 ] } , - BigNum { limbs: [ 0x1d50eee0811e8206f9a183352303e8, 0xf0fd58b73fee4bec2b787a3d54e5c7, 0x00080b ] } , - BigNum { limbs: [ 0x1211542079c63a04b57a388ce6c261, 0x7bac5f90a18bb38f7e83bd6db07800, 0x00699e ] } , - BigNum { limbs: [ 0xab92aedf8495c4fb4a85c673193da0, 0x2ba6ca0cdbbc7faa59844c34278d53, 0x000a4f ] } , - BigNum { limbs: [ 0x0ee0c64f8b7ac1ff7ba2024a37b7bb, 0x93e4697b1d9ce0c431b6db18076ff9, 0x000834 ] } , - BigNum { limbs: [ 0xaec33cb072e13d00845dfcb5c84846, 0x136ec0225fab5275a6512e89d0955a, 0x006bb9 ] } , - BigNum { limbs: [ 0x01fa182468ba7c595e445abe442dca, 0x879144d0fcd2fcc9670838442647e3, 0x0051e8 ] } , - BigNum { limbs: [ 0xbba9eadb95a182a6a1bba441bbd237, 0x1fc1e4cc8075367070ffd15db1bd70, 0x002205 ] } , - BigNum { limbs: [ 0x9afd4618c5e1bc80afccf22a6f8a52, 0x1540ac49fb06bbc6c6b9a9fc918afb, 0x005101 ] } , - BigNum { limbs: [ 0x22a6bce7387a427f50330cd59075af, 0x92127d5382417773114e5fa5467a58, 0x0022ec ] } , - BigNum { limbs: [ 0x1ee525b1ec67d1c5c9581135a7ab68, 0x30ea2e1c440d8b23d1f54cdf1fae7b, 0x00349e ] } , - BigNum { limbs: [ 0x9ebedd4e11f42d3a36a7edca585499, 0x7668fb81393aa8160612bcc2b856d8, 0x003f4f ] } , - BigNum { limbs: [ 0xae2ac8e1522fb525497b14298a9c76, 0x29bc131a89602fe31e0bda03eafb9b, 0x005ebe ] } , - BigNum { limbs: [ 0x0f793a1eac2c49dab684ead675638b, 0x7d971682f3e80356b9fc2f9ded09b8, 0x00152f ] } , - BigNum { limbs: [ 0x5b2f702a43d37b7ab8dac27f3e254c, 0x42d5471bc24662632562d7c80a5369, 0x0064a9 ] } , - BigNum { limbs: [ 0x627492d5ba88838547253c80c1dab5, 0x647de281bb01d0d6b2a531d9cdb1ea, 0x000f44 ] } , - BigNum { limbs: [ 0x77c91e81814f8b58eef8ea01b32225, 0xbbcf1c263cfc2d486a35143271ee7d, 0x003ea3 ] } , - BigNum { limbs: [ 0x45dae47e7d0c73a7110714fe4cdddc, 0xeb840d77404c05f16dd2f56f6616d6, 0x003549 ] } , - BigNum { limbs: [ 0x7e33d54601da6d389208e6356979ab, 0xc09b9fa4dfb218819428c8056d1d39, 0x0028c1 ] } , - BigNum { limbs: [ 0x3f702db9fc8191c76df718ca968656, 0xe6b789f89d961ab843df419c6ae81a, 0x004b2b ] } , - BigNum { limbs: [ 0xa5905736c46ea4c5475b119e356265, 0xd098fc0f8207b6faf0e0d74f7a1025, 0x00690b ] } , - BigNum { limbs: [ 0x1813abc939ed5a3ab8a4ed61ca9d9c, 0xd6ba2d8dfb407c3ee72732525df52e, 0x000ae1 ] } , - BigNum { limbs: [ 0xc3720c7bf19f0c42aa886429513423, 0xef4adbfcd69d77f7f625dacb9ddb3b, 0x0045eb ] } , - BigNum { limbs: [ 0xfa31f6840cbcf2bd55779ad6aecbde, 0xb8084da0a6aabb41e1e22ed63a2a17, 0x002e01 ] } , - BigNum { limbs: [ 0xd1b9212b65bf214e921640c47a0a45, 0xd6554ec4fbad86e639ebf267f538dd, 0x00278f ] } , - BigNum { limbs: [ 0xebeae1d4989cddb16de9be3b85f5bc, 0xd0fddad8819aac539e1c1739e2cc75, 0x004c5d ] } , - BigNum { limbs: [ 0x0c31c44ac745f527c512ff22e85c3a, 0x2e4cd97518258238f206e24c0b1c2b, 0x002cbc ] } , - BigNum { limbs: [ 0xb1723eb5371609d83aecffdd17a3c7, 0x790650286522b100e6012755cce928, 0x004731 ] } , - BigNum { limbs: [ 0x9989268429206117d51008e47afac8, 0x2c5a3a4f9c6aeb6b7a036c657da412, 0x001856 ] } , - BigNum { limbs: [ 0x241adc7bd53b9de82aeff61b850539, 0x7af8ef4de0dd47ce5e049d3c5a6141, 0x005b97 ] } , - BigNum { limbs: [ 0x3c1bffa488ae4c91a9d99c561db4f3, 0x5df95918a808d3a4931256f1413ddf, 0x002162 ] } , - BigNum { limbs: [ 0x8188035b75adb26e562662a9e24b0e, 0x4959d084d53f5f9544f5b2b096c774, 0x00528b ] } , - BigNum { limbs: [ 0xfb570516b5e5cefc96ef08c768f7bb, 0x202424aab720e62747593b3d0256dd, 0x004ae0 ] } , - BigNum { limbs: [ 0xc24cfde9487630036910f638970846, 0x872f04f2c6274d1290aece64d5ae75, 0x00290d ] } , - BigNum { limbs: [ 0x6d477b956af945571da68e63a7c767, 0xa9008ab58c52c373a0f84872096ba6, 0x005eed ] } , - BigNum { limbs: [ 0x505c876a9362b9a8e259709c58389a, 0xfe529ee7f0f56fc6370fc12fce99ad, 0x0014ff ] } , - BigNum { limbs: [ 0xc5dd2ae9e83d223d69281ae1af9955, 0x35a347e2e5a7d5bf621e6cdc1ff837, 0x00668d ] } , - BigNum { limbs: [ 0xf7c6d816161edcc296d7e41e5066ac, 0x71afe1ba97a05d7a75e99cc5b80d1b, 0x000d60 ] } , - BigNum { limbs: [ 0xba0324468f865128736875d438f2d6, 0x73380eda1d3ba312905b71fb212d57, 0x001dae ] } , - BigNum { limbs: [ 0x03a0deb96ed5add78c97892bc70d2b, 0x341b1ac3600c902747ac97a6b6d7fc, 0x00563f ] } , - BigNum { limbs: [ 0x5e326a7b6d1553fd517bb125e87aa6, 0xbdab877991b02c465a03f89c87977d, 0x000c40 ] } , - BigNum { limbs: [ 0x5f7198849146ab02ae844dda17855b, 0xe9a7a223eb9806f37e041105506dd6, 0x0067ac ] } , - BigNum { limbs: [ 0x5b47aa7fc702df407a3035875afd49, 0xa961d2308993234e4002f9a199a5c3, 0x004f00 ] } , - BigNum { limbs: [ 0x625c588037591fbf85cfc978a502b8, 0xfdf1576cf3b50feb980510003e5f90, 0x0024ec ] } , - BigNum { limbs: [ 0xfb9dc693cfbdcbd6d7b660f42ebdf7, 0xe8ad2baf59d5de4ac442c8ffc9599c, 0x004111 ] } , - BigNum { limbs: [ 0xc2063c6c2e9e332928499e0bd1420a, 0xbea5fdee237254ef13c540a20eabb6, 0x0032db ] } , - BigNum { limbs: [ 0x14d71f3d115d480b10922f5983b2e8, 0x80c524bd040ea27554f6cda2dd8143, 0x0046bf ] } , - BigNum { limbs: [ 0xa8cce3c2ecfeb6f4ef6dcfa67c4d19, 0x268e04e0793990c483113bfefa8410, 0x002d2e ] } , - BigNum { limbs: [ 0x8a4ccd5a8ffdaea479ce0adf737d2c, 0x281fc9738b6acf6a3c9e3de03c4b9f, 0x0057b4 ] } , - BigNum { limbs: [ 0x335735a56e5e505b8631f4208c82d5, 0x7f336029f1dd63cf9b69cbc19bb9b4, 0x001c39 ] } , - BigNum { limbs: [ 0xfa9da9aea7b7a807f3949ff7497ac4, 0x94e273230bc82fa52c43468bc2cb46, 0x0067d1 ] } , - BigNum { limbs: [ 0xc306595156a456f80c6b5f08b6853d, 0x1270b67a71800394abc4c316153a0c, 0x000c1c ] } , - BigNum { limbs: [ 0xf90efcf7889498c0fa84462b5be3f9, 0x506cf5b4ad5c5dfa071dbcb2f776a7, 0x004583 ] } , - BigNum { limbs: [ 0xc495060875c7663f057bb8d4a41c08, 0x56e633e8cfebd53fd0ea4ceee08eab, 0x002e6a ] } , - BigNum { limbs: [ 0x4bd6bd4ae9ab1cba6dbc0d400aabca, 0x020cfd306c1de084a51cd4d6f9f64b, 0x00678e ] } , - BigNum { limbs: [ 0x71cd45b514b0e2459243f1bff55437, 0xa5462c6d112a52b532eb34cade0f08, 0x000c5f ] } , - BigNum { limbs: [ 0xadc30be0afecd9400809b932c038e7, 0x6d07fcafce4a9a767be86caf30f381, 0x0063a0 ] } , - BigNum { limbs: [ 0x0fe0f71f4e6f25bff7f645cd3fc71a, 0x3a4b2cedaefd98c35c1f9cf2a711d2, 0x00104d ] } , - BigNum { limbs: [ 0xfe8d47e5eb3bac52f1982243ace47a, 0xd6124eee8fcbbcf665d106968cdd39, 0x0039da ] } , - BigNum { limbs: [ 0xbf16bb1a132052ad0e67dcbc531b87, 0xd140daaeed7c76437237030b4b2819, 0x003a12 ] } , - BigNum { limbs: [ 0x8b5ce291f218c9dd74958e6cca1c43, 0x7e5763a2583ce605c2850effefc8c8, 0x00144b ] } , - BigNum { limbs: [ 0x3247206e0c4335228b6a709335e3be, 0x28fbc5fb250b4d341582faa1e83c8b, 0x005fa2 ] } , - BigNum { limbs: [ 0x2e5e696f842cffe144608f74eaac1b, 0x8fb393a3ab78c209cb769b65fa1ebe, 0x0030f6 ] } , - BigNum { limbs: [ 0x8f4599907a2eff1ebb9f6f8b1553e6, 0x179f95f9d1cf71300c916e3bdde695, 0x0042f7 ] } , - BigNum { limbs: [ 0xa5b8d3dda353e8a443e6dbbea71c3d, 0x4da2acaeebdd573de9e05c005ca05c, 0x003e26 ] } , - BigNum { limbs: [ 0x17eb2f225b08165bbc19234158e3c4, 0x59b07cee916adbfbee27ada17b64f7, 0x0035c7 ] } , - BigNum { limbs: [ 0x78b65b0a65311a96bd8776dcb3a3de, 0x40eea7b1a760a3c8fb7b4ca1b1ceb3, 0x000c7f ] } , - BigNum { limbs: [ 0x44eda7f5992ae469427888234c5c23, 0x666481ebd5e78f70dc8cbd002636a0, 0x00676e ] } , - BigNum { limbs: [ 0xdc89a891d9f52411e9aa243ff64fb7, 0xf8687719af42f436be5744d2fd476f, 0x0005fd ] } , - BigNum { limbs: [ 0xe11a5a6e2466daee1655dac009b04a, 0xaeeab283ce053f0319b0c4cedabde3, 0x006def ] } , - BigNum { limbs: [ 0xa76a4d12a65a59e004a8616ad310f0, 0xdcd7f3e6f15ec6c4f5b601e21ff0d9, 0x0016c4 ] } , - BigNum { limbs: [ 0x1639b5ed5801a51ffb579d952cef11, 0xca7b35b68be96c74e25207bfb8147a, 0x005d28 ] } , - BigNum { limbs: [ 0x0467bb084c964790407b4446e144b0, 0x40ff209302f1e88adcdbbfcc7732aa, 0x004269 ] } , - BigNum { limbs: [ 0xb93c47f7b1c5b76fbf84bab91ebb51, 0x6654090a7a564aaefb2c49d560d2a9, 0x003184 ] } , - BigNum { limbs: [ 0x7f89984e1f494bd58aa66bb4834fd9, 0xf85ceb431b3e231aa97f1b81adbf24, 0x000a1c ] } , - BigNum { limbs: [ 0x3e1a6ab1df12b32a7559934b7cb028, 0xaef63e5a620a101f2e88ee202a462f, 0x0069d0 ] } , - BigNum { limbs: [ 0x6e71b10378df567095602a91bfeb57, 0x333f31a2b277845fe7e2ace6ee7a68, 0x0068bf ] } , - BigNum { limbs: [ 0x4f3251fc857ca88f6a9fd46e4014aa, 0x7413f7facad0aed9f0255cbae98aeb, 0x000b2e ] } , - BigNum { limbs: [ 0x72e12d4ef7b1bc1d048d5e4c8f92d5, 0x1919c9e42d245edfec475cd95fd90c, 0x0006dd ] } , - BigNum { limbs: [ 0x4ac2d5b106aa42e2fb72a0b3706d2c, 0x8e395fb95023d459ebc0acc8782c47, 0x006d10 ] } , - BigNum { limbs: [ 0xa6caeec0019cce89f8a28c04b02908, 0x4254d49cb10f9468da4449c73ffa3f, 0x002507 ] } , - BigNum { limbs: [ 0x16d9143ffcbf3076075d72fb4fd6f9, 0x64fe5500cc389ed0fdc3bfda980b14, 0x004ee6 ] } , - BigNum { limbs: [ 0x7678b48bb1db8fb4bd8e160157197c, 0x9af535ae0e253b310b396831542a11, 0x004279 ] } , - BigNum { limbs: [ 0x472b4e744c806f4b4271e8fea8e685, 0x0c5df3ef6f22f808cccea17083db42, 0x003174 ] } , - BigNum { limbs: [ 0xc281a93aef62e96137a691be2497f9, 0xd3cb28a3b5a16588627f08e73b1b20, 0x004bab ] } , - BigNum { limbs: [ 0xfb2259c50ef9159ec8596d41db6808, 0xd38800f9c7a6cdb1758900ba9cea32, 0x002841 ] } , - BigNum { limbs: [ 0xf4c10059af274ee2cc0434baf3e2fb, 0xd18546fdbca8764eb4562d580122db, 0x001aec ] } , - BigNum { limbs: [ 0xc8e302a64f34b01d33fbca450c1d06, 0xd5cde29fc09fbceb23b1dc49d6e277, 0x005900 ] } , - BigNum { limbs: [ 0x2d6fb35a5cecb4467864c0e822f4f6, 0x40d594cfa384a9b31eb7a0574d1a1c, 0x001a4b ] } , - BigNum { limbs: [ 0x90344fa5a16f4ab9879b3e17dd0b0b, 0x667d94cdd9c38986b950694a8aeb37, 0x0059a2 ] } , - BigNum { limbs: [ 0x0048cde3a189929b8c6581b7a57bb6, 0xc9c6a859b493283d27539aa3079e7e, 0x001a9f ] } , - BigNum { limbs: [ 0xbd5b351c5cd26c64739a7d485a844b, 0xdd8c8143c8b50afcb0b46efed066d5, 0x00594d ] } , - BigNum { limbs: [ 0x901f632ec9e7867e4f0728f664f220, 0x29d3d7d78713ff0e7a5f644cc3151a, 0x00256e ] } , - BigNum { limbs: [ 0x2d849fd134747881b0f8d6099b0de1, 0x7d7f51c5f634342b5da8a55514f039, 0x004e7f ] } , - BigNum { limbs: [ 0x8f4de46dd12913aa9ae8a21f3d3b2a, 0xc598ec5b2425c7cd9306078735756a, 0x006528 ] } , - BigNum { limbs: [ 0x2e561e922d32eb5565175ce0c2c4d7, 0xe1ba3d4259226b6c4502021aa28fe9, 0x000ec4 ] } , - BigNum { limbs: [ 0x13ba7565944c5b1543c85450272199, 0xf3850c2463a95f9cce23d45411857f, 0x00207f ] } , - BigNum { limbs: [ 0xa9e98d9a6a0fa3eabc37aaafd8de68, 0xb3ce1d79199ed39d09e4354dc67fd4, 0x00536d ] } , - BigNum { limbs: [ 0x46eb57ea4ac470f442b205efee0514, 0x43f88c427dfaf9484c246f79adca12, 0x00333c ] } , - BigNum { limbs: [ 0x76b8ab15b3978e0bbd4df91011faed, 0x635a9d5aff4d39f18be39a282a3b41, 0x0040b1 ] } , - BigNum { limbs: [ 0xd2b436f50932afdcd4eae782b30688, 0x64dd8e54b387f9512866d3f7d41f14, 0x000837 ] } , - BigNum { limbs: [ 0xeaefcc0af5294f232b15177d4cf979, 0x42759b48c9c039e8afa135aa03e63e, 0x006bb6 ] } , - BigNum { limbs: [ 0x99d9214c68d624dc714980be571087, 0x9f73e4a877e46ea11c8dfdfe84358b, 0x001f19 ] } , - BigNum { limbs: [ 0x23cae1b39585da238eb67e41a8ef7a, 0x07df44f50563c498bb7a0ba353cfc8, 0x0054d4 ] } , - BigNum { limbs: [ 0x399fcbaaa521a98ea8afae00d170ae, 0x373c48aa371fc73ef01e4237d0cd62, 0x004d0a ] } , - BigNum { limbs: [ 0x84043755593a5571575050ff2e8f53, 0x7016e0f346286bfae7e9c76a0737f1, 0x0026e3 ] } , - BigNum { limbs: [ 0x500eb02ee2d9b63e9fe4a0fd9609b0, 0x23d941e9787714e54cb0055d4e79e0, 0x0034ae ] } , - BigNum { limbs: [ 0x6d9552d11b8248c1601b5e0269f651, 0x8379e7b404d11e548b580444898b73, 0x003f3f ] } , - BigNum { limbs: [ 0x352480fa0142bbab3354b95ae621bc, 0x5126bd58cd82930f5e8f92bf19b8f0, 0x000cc6 ] } , - BigNum { limbs: [ 0x887f8205fd194354ccab45a519de45, 0x562c6c44afc5a02a797876e2be4c63, 0x006727 ] } , - BigNum { limbs: [ 0x62ded52fd700885ee20c0dd1b4a838, 0x1c067801129b35ed2aecb3a3c45a67, 0x00368a ] } , - BigNum { limbs: [ 0x5ac52dd0275b76a11df3f12e4b57c9, 0x8b4cb19c6aacfd4cad1b55fe13aaec, 0x003d63 ] } , - BigNum { limbs: [ 0x66e7055dd8b9a9362010e8b6f2fca0, 0xb1192af8a686ae9351a4b09f45cf52, 0x006626 ] } , - BigNum { limbs: [ 0x56bcfda225a255c9dfef16490d0361, 0xf639fea4d6c184a686635902923601, 0x000dc6 ] } , - BigNum { limbs: [ 0x829fa9756239065149e6b135daad43, 0x1d92c648e00ac9797442364e2a520c, 0x0042df ] } , - BigNum { limbs: [ 0x3b04598a9c22f8aeb6194dca2552be, 0x89c063549d3d69c063c5d353adb347, 0x00310e ] } , - BigNum { limbs: [ 0x039c93ab01de8dc45d6a0ee42c235e, 0xe9a05d32ae0c342f0b767f189f73b8, 0x005802 ] } , - BigNum { limbs: [ 0xba076f54fc7d713ba295f01bd3dca3, 0xbdb2cc6acf3bff0acc918a8938919b, 0x001bea ] } , - BigNum { limbs: [ 0x607690dcfab6e9e6e915abaf97bc2d, 0x7a3834c2b60b8fa3fe5f9b3c8ae049, 0x000023 ] } , - BigNum { limbs: [ 0x5d2d722303a5151916ea53506843d4, 0x2d1af4dac73ca395d9a86e654d250a, 0x0073ca ] } , - BigNum { limbs: [ 0xf7e8d06558cc09c2361a9ef0904d55, 0xcd45c3e35c09548b704bd2ae612416, 0x003a9d ] } , - BigNum { limbs: [ 0xc5bb329aa58ff53dc9e5600f6fb2ac, 0xda0d65ba213edeae67bc36f376e13c, 0x00394f ] } , - BigNum { limbs: [ 0x366ec9858bbf6c69998015cfb618f9, 0x55e541519389f820338273189ec513, 0x0070c9 ] } , - BigNum { limbs: [ 0x8735397a729c9296667fe93049e708, 0x516de84be9be3b19a4859689394040, 0x000324 ] } , - BigNum { limbs: [ 0x991a8549b179952dfc1c048b1eebba, 0x4c4e68daaf27eca0d4a90b42cef9db, 0x002fd7 ] } , - BigNum { limbs: [ 0x24897db64ce269d203e3fa74e11447, 0x5b04c0c2ce204699035efe5f090b78, 0x004416 ] } , - BigNum { limbs: [ 0xaa6d581ed2c4bd1bfec4e31db595da, 0x7d5b0ed096e4303bd342e46dae0b30, 0x000674 ] } , - BigNum { limbs: [ 0x1336aae12b9741e4013b1be24a6a27, 0x29f81acce66402fe04c5253429fa23, 0x006d79 ] } , - BigNum { limbs: [ 0x81e1b366348d59d5008b415742cf2c, 0x1de08c44b05c5f9615ada1567cea0f, 0x001a24 ] } , - BigNum { limbs: [ 0x3bc24f99c9cea52aff74bda8bd30d5, 0x89729d58ccebd3a3c25a684b5b1b44, 0x0059c9 ] } , - BigNum { limbs: [ 0xe75b2f9b862e777f2812860a5e7bf6, 0x603dcb33a8f035c2af174b0de333ac, 0x002fce ] } , - BigNum { limbs: [ 0xd648d364782d8780d7ed78f5a1840b, 0x47155e69d457fd7728f0be93f4d1a6, 0x00441f ] } , - BigNum { limbs: [ 0x192102577134b3fe804b693688c917, 0x152542076b192914da850aa8c1ca1b, 0x003d77 ] } , - BigNum { limbs: [ 0xa48300a88d274b017fb495c97736ea, 0x922de796122f0a24fd82fef9163b38, 0x003676 ] } , - BigNum { limbs: [ 0xf4bccd99cb9046c44608878e56b18d, 0xe4da84bd62fbae9aa110d4844095c6, 0x001266 ] } , - BigNum { limbs: [ 0xc8e7356632cbb83bb9f77771a94e74, 0xc278a4e01a4c849f36f7351d976f8c, 0x006186 ] } , - BigNum { limbs: [ 0x311fa027a0f568823cb99f2c17bdcd, 0xf7cf11927e6353a2ae829e2dd36e96, 0x0072d2 ] } , - BigNum { limbs: [ 0x8c8462d85d66967dc3465fd3e84234, 0xaf84180afee4df9729856b740496bd, 0x00011a ] } , - BigNum { limbs: [ 0x5c255fec426d8cdc8023c433014b7a, 0x1125fb8d170db8f63036640b7cfca4, 0x005ec0 ] } , - BigNum { limbs: [ 0x617ea313bbee72237fdc3accfeb487, 0x962d2e10663a7a43a7d1a5965b08af, 0x00152d ] } , - BigNum { limbs: [ 0x234cc83e129d05cac696b0e5c3fcac, 0xfeb419a46ea5fcd501b9c2cf437010, 0x001c0a ] } , - BigNum { limbs: [ 0x9a573ac1ebbef93539694e1a3c0355, 0xa89f0ff90ea23664d64e46d2949543, 0x0057e2 ] } , - BigNum { limbs: [ 0xe716e0f033f72b72498848fbc00998, 0xd0588d6029adaf665203abefaf0457, 0x001323 ] } , - BigNum { limbs: [ 0xd68d220fca64d38db677b6043ff669, 0xd6fa9c3d539a83d386045db22900fb, 0x0060c9 ] } , - BigNum { limbs: [ 0xa69c5cb7b5339c8b28202568c1191a, 0x7473aec107d89fd3fc0a318afa7228, 0x0010f4 ] } , - BigNum { limbs: [ 0x1707a64849286274d7dfd9973ee6e7, 0x32df7adc756f9365dbfdd816dd932b, 0x0062f9 ] } , - BigNum { limbs: [ 0x181f2d5d9e2a131245b9b503b948f7, 0x10fc1f1f45c512e78cf448f8beafff, 0x004bab ] } , - BigNum { limbs: [ 0xa584d5a26031ebedba4649fc46b70a, 0x96570a7e378320524b13c0a9195554, 0x002842 ] } , - BigNum { limbs: [ 0x899c749fdaf665bc1548facb7b03c5, 0xc7d005315cea488effc435dd9245f1, 0x0047e6 ] } , - BigNum { limbs: [ 0x34078e6023659943eab7043484fc3c, 0xdf83246c205deaaad843d3c445bf62, 0x002c06 ] } , - BigNum { limbs: [ 0x980680010107783cd0d52868bd62f1, 0xff4f2394b51c1d27378dd579388bb1, 0x001b6d ] } , - BigNum { limbs: [ 0x259d82fefd5486c32f2ad697429d10, 0xa8040608c82c1612a07a34289f79a2, 0x00587f ] } , - BigNum { limbs: [ 0x0fda5051a37d3acd0cf163f403c594, 0x25d07b49a277db8a3197f6667f0a7c, 0x000aa3 ] } , - BigNum { limbs: [ 0xadc9b2ae5adec432f30e9b0bfc3a6d, 0x8182ae53dad057afa670133b58fad7, 0x00694a ] } , - BigNum { limbs: [ 0xc4daee200c52605c067d108a5ba95a, 0x92c2bf28e2003a96940c094299dc62, 0x002976 ] } , - BigNum { limbs: [ 0xf8c914dff2099ea3f982ee75a456a7, 0x14906a749b47f8a343fc005f3e28f0, 0x004a77 ] } , - BigNum { limbs: [ 0xde75070be93e05f8f3ba3d42f36d2c, 0xd5e4479c8df0ecb3f50fb0f21337d1, 0x002414 ] } , - BigNum { limbs: [ 0xdf2efbf4151df9070c45c1bd0c92d5, 0xd16ee200ef574685e2f858afc4cd81, 0x004fd8 ] } , - BigNum { limbs: [ 0xf7bca4242070fcbc79729bfc181d87, 0xb15ea032d2eb3432303860656bc2eb, 0x004e23 ] } , - BigNum { limbs: [ 0xc5e75edbddeb0243868d6303e7e27a, 0xf5f4896aaa5cff07a7cfa93c6c4267, 0x0025c9 ] } , - BigNum { limbs: [ 0x5ef5e86046408143a898fb31c9c4ee, 0x91addd75800726e4c08df8991f67a0, 0x0056bd ] } , - BigNum { limbs: [ 0x5eae1a9fb81b7dbc576703ce363b13, 0x15a54c27fd410c55177a1108b89db3, 0x001d30 ] } , - BigNum { limbs: [ 0x6e588415ecaa66b136effd3f67e4f0, 0xd8fd7bb9852f096506fcb28d9b7cf6, 0x0038ce ] } , - BigNum { limbs: [ 0x4f4b7eea11b1984ec91001c0981b11, 0xce55ade3f81929d4d10b57143c885d, 0x003b1e ] } , - BigNum { limbs: [ 0x8f36cb9e84d1b1630642f16c936994, 0xe75a382cbf2e02f0663c969124c698, 0x0067dc ] } , - BigNum { limbs: [ 0x2e6d3761798a4d9cf9bd0d936c966d, 0xbff8f170be1a304971cb7310b33ebb, 0x000c10 ] } , - BigNum { limbs: [ 0xc391a44d095efb7975e7721deb1be9, 0xd069b7229003170842e6e017c538ea, 0x001403 ] } , - BigNum { limbs: [ 0xfa125eb2f4fd03868a188ce214e418, 0xd6e9727aed451c319521298a12cc68, 0x005fe9 ] } , - BigNum { limbs: [ 0x51d7689baf0f40f6c18c8d1ea26560, 0xb6ddd5775cb0f1982c73f8102e9d6d, 0x001b19 ] } , - BigNum { limbs: [ 0x6bcc9a644f4cbe093e7371e15d9aa1, 0xf0755426209741a1ab941191a967e6, 0x0058d3 ] } , - BigNum { limbs: [ 0xb10ea7a313f73e11fa377f6160c3e7, 0xf76f040b0a89bed4581761f087904e, 0x00346e ] } , - BigNum { limbs: [ 0x0c955b5cea64c0ee05c87f9e9f3c1a, 0xafe4259272be74657ff0a7b1507505, 0x003f7e ] } , - BigNum { limbs: [ 0xd73d5d3d1ebf4c2b27692f9d97b929, 0xc253a232e71502e1414cf60bcb7626, 0x004dd4 ] } , - BigNum { limbs: [ 0xe666a5c2df9cb2d4d896cf626846d8, 0xe4ff876a9633305896bb13960c8f2c, 0x002618 ] } , - BigNum { limbs: [ 0x01ab792405734124e37d7512d665de, 0x4efd72d699b6ad23b531fa5e728f48, 0x00502a ] } , - BigNum { limbs: [ 0xbbf889dbf8e8bddb1c8289ed299a23, 0x5855b6c6e391861622d60f4365760b, 0x0023c3 ] } , - BigNum { limbs: [ 0x04625fcd552eb47e4f18a74d8f0ffc, 0x74e27cad0a2c5df5679e2874a63c51, 0x001b14 ] } , - BigNum { limbs: [ 0xb941a332a92d4a81b0e757b270f005, 0x3270acf0731bd5447069e12d31c902, 0x0058d9 ] } , - BigNum { limbs: [ 0x128954af94fd14686873f8ebe729d3, 0xaf07783cd487ebc8683b74daafca98, 0x0067d2 ] } , - BigNum { limbs: [ 0xab1aae50695eea97978c061418d62e, 0xf84bb160a8c047716fcc94c7283abb, 0x000c1a ] } , - BigNum { limbs: [ 0x39c3bd751f2997989a8b21cb4b1481, 0xb14019f2da1c4b94376b4bf82d9ec8, 0x001e87 ] } , - BigNum { limbs: [ 0x83e0458adf3267676574dd34b4eb80, 0xf6130faaa32be7a5a09cbda9aa668b, 0x005565 ] } , - BigNum { limbs: [ 0x224e8044fb9b302d358051fe142663, 0x7e5dd2080df78bfe971e712d186e0a, 0x0041ee ] } , - BigNum { limbs: [ 0x9b5582bb02c0ced2ca7fad01ebd99e, 0x28f557956f50a73b40e99874bf9749, 0x0031ff ] } , - BigNum { limbs: [ 0x266e7302d6261ee8604ef138481f67, 0x4af099edb3d6b0bba73275b4fd222d, 0x003fb0 ] } , - BigNum { limbs: [ 0x97358ffd2835e0179fb10dc7b7e09a, 0x5c628fafc971827e30d593ecdae326, 0x00343d ] } , - BigNum { limbs: [ 0xcd04d4f26b49a51297254297f78ee1, 0x396fe69b76655402529839aa08e182, 0x0029a6 ] } , - BigNum { limbs: [ 0xf09f2e0d931259ed68dabc68087120, 0x6de3430206e2df37856fcff7cf23d0, 0x004a47 ] } , - BigNum { limbs: [ 0x9a0420135c1e74d004fced7127bbd0, 0xfdaea9b84859439bb05a2196d21ca9, 0x006730 ] } , - BigNum { limbs: [ 0x239fe2eca23d8a2ffb03118ed84431, 0xa9a47fe534eeef9e27ade80b05e8aa, 0x000cbc ] } , - BigNum { limbs: [ 0x9389ca095aa500706ae67706c752d6, 0x240d9f9006949ad4f83cf67b6dbbbc, 0x00710a ] } , - BigNum { limbs: [ 0x2a1a38f6a3b6fe8f951987f938ad2b, 0x83458a0d76b39864dfcb13266a4997, 0x0002e3 ] } , - BigNum { limbs: [ 0x3128560305c8ef5a2396bbf9697fb6, 0xccabef53799b1e88e1d0d1f0dc5dc7, 0x003bc4 ] } , - BigNum { limbs: [ 0x8c7bacfcf8930fa5dc69430696804b, 0xdaa73a4a03ad14b0f63737b0fba78c, 0x003828 ] } , - BigNum { limbs: [ 0x7bdee41758cacac6c8da15682a43ad, 0xa255a42715a228e1ce9a9398792771, 0x0061ed ] } , - BigNum { limbs: [ 0x41c51ee8a59134393725e997d5bc54, 0x04fd857667a60a58096d76095edde2, 0x001200 ] } , - BigNum { limbs: [ 0x36460c54463cd8f3645a8d9dd0449e, 0xc5e63ebd7c87a1375287bdfc69b2e7, 0x005f7a ] } , - BigNum { limbs: [ 0x875df6abb81f260c9ba571622fbb63, 0xe16ceae000c0920285804ba56e526c, 0x001472 ] } , - BigNum { limbs: [ 0xe527d3c618bd91111135e45e927581, 0x651a3c71c35b24f44b3cbdee5bb69e, 0x0034e9 ] } , - BigNum { limbs: [ 0xd87c2f39e59e6deeeeca1aa16d8a80, 0x4238ed2bb9ed0e458ccb4bb37c4eb4, 0x003f04 ] } , - BigNum { limbs: [ 0x14bad0bf6f6300650f9beee20b5515, 0xe269c37d4d8412f381403b89980ee9, 0x00217b ] } , - BigNum { limbs: [ 0xa8e932408ef8fe9af064101df4aaec, 0xc4e966202fc4204656c7ce183ff66a, 0x005271 ] } , - BigNum { limbs: [ 0x762a4c86bee8123a5f306e81360e77, 0x7337cf2dbc5743ce881218684db954, 0x0009e9 ] } , - BigNum { limbs: [ 0x4779b6793f73ecc5a0cf907ec9f18a, 0x341b5a6fc0f0ef6b4ff5f1398a4bff, 0x006a04 ] } , - BigNum { limbs: [ 0x9937ed82cb4a9fc76cd46491730168, 0xdc87d269cdd4133553ee41427fca0f, 0x001f19 ] } , - BigNum { limbs: [ 0x246c157d33115f38932b9a6e8cfe99, 0xcacb5733af7420048419c85f583b44, 0x0054d3 ] } , - BigNum { limbs: [ 0x56d7ccb64bbb09a91f10acaa57449b, 0x3d85d572d287a73bb732faaf08a75a, 0x004c45 ] } , - BigNum { limbs: [ 0x66cc3649b2a0f556e0ef5255a8bb66, 0x69cd542aaac08bfe20d50ef2cf5df9, 0x0027a8 ] } , - BigNum { limbs: [ 0x6f93db2578f813a18e4c1292f11cf2, 0x1640b859af326965abb4bbaf508f24, 0x003059 ] } , - BigNum { limbs: [ 0x4e1027da8563eb5e71b3ec6d0ee30f, 0x91127143ce15c9d42c534df287762f, 0x004394 ] } , - BigNum { limbs: [ 0x60ca413c1470f069cd62c92c7d3417, 0x0c87494cf671479a275b158a6c0d06, 0x006c26 ] } , - BigNum { limbs: [ 0x5cd9c1c3e9eb0e96329d35d382cbea, 0x9acbe05086d6eb9fb0acf4176bf84d, 0x0007c7 ] } , - BigNum { limbs: [ 0xb124828724cb9e6154c10541689b3b, 0x28ea95e4e4c038654cd2bddea77d27, 0x005169 ] } , - BigNum { limbs: [ 0x0c7f8078d990609eab3ef9be9764c6, 0x7e6893b89887fad48b354bc330882c, 0x002284 ] } , - BigNum { limbs: [ 0xd65e0a886ccc459e92185783bbf588, 0xf9623fbe85bf577afaa3b0aa4366e4, 0x003525 ] } , - BigNum { limbs: [ 0xe745f877918fb9616de7a77c440a79, 0xadf0e9def788dbbedd6458f7949e6e, 0x003ec7 ] } , - BigNum { limbs: [ 0x39b33948d004277c7c788388618a21, 0xd5d37bc89361ba87d73f16df38f517, 0x00166f ] } , - BigNum { limbs: [ 0x83f0c9b72e57d78383877b779e75e0, 0xd17fadd4e9e678b200c8f2c29f103c, 0x005d7d ] } , - BigNum { limbs: [ 0x0184807cbb3ccd17563741f5395c61, 0x191d96a87bdcf9bfabd2f465302102, 0x002917 ] } , - BigNum { limbs: [ 0xbc1f8283431f31e8a9c8bd0ac6a3a0, 0x8e3592f5016b397a2c35153ca7e451, 0x004ad6 ] } , - BigNum { limbs: [ 0x70b480ff3c8ada180c9ea7df3e2e1c, 0xb24c47cd173318b38cd42c7775b82f, 0x006df1 ] } , - BigNum { limbs: [ 0x4cef8200c1d124e7f3615720c1d1e5, 0xf506e1d066151a864b33dd2a624d24, 0x0005fb ] } , - BigNum { limbs: [ 0xe0618f7723728fadfafe11076f83fb, 0xb65b78377562265e0e278de1545148, 0x0033f7 ] } , - BigNum { limbs: [ 0xdd427388dae96f520501edf8907c06, 0xf0f7b16607e60cdbc9e07bc083b40a, 0x003ff5 ] } , - BigNum { limbs: [ 0xe5d866c41107068d880fd835f7e59c, 0xfd30fb91fe1846ee4785af0c016f5e, 0x000ff9 ] } , - BigNum { limbs: [ 0xd7cb9c3bed54f87277f026ca081a65, 0xaa222e0b7f2fec4b90825a95d695f4, 0x0063f3 ] } , - BigNum { limbs: [ 0xb426361576c9da4906585ea02264ed, 0x7eb308dc00235023c5a79a89d2bbdf, 0x0032a6 ] } , - BigNum { limbs: [ 0x097dccea879224b6f9a7a05fdd9b14, 0x28a020c17d24e31612606f18054974, 0x004147 ] } , - BigNum { limbs: [ 0xa8b71686c297c367949e884db344bf, 0xdc7f753c1d55d80c7e16600602f704, 0x00100d ] } , - BigNum { limbs: [ 0x14ecec793bc43b986b6176b24cbb42, 0xcad3b4615ff25b2d59f1a99bd50e4f, 0x0063df ] } , - BigNum { limbs: [ 0xc575ec1a329a5541f33ede3b9f9399, 0x7826ed24369781fc49d19b208571ff, 0x002b29 ] } , - BigNum { limbs: [ 0xf82e16e5cbc1a9be0cc120c4606c68, 0x2f2c3c7946b0b13d8e366e81529353, 0x0048c4 ] } , - BigNum { limbs: [ 0xd485c1f50cc769de0283afe1cb6584, 0x56553e601b81d52738de72cd45e191, 0x005dda ] } , - BigNum { limbs: [ 0xe91e410af1949521fd7c4f1e349a7d, 0x50fdeb3d61c65e129f2996d49223c1, 0x001613 ] } , - BigNum { limbs: [ 0x1fe5a5c8cfa8db155697e920b8c870, 0x4ccf3a7b715b6346c4d279d010a3a4, 0x000160 ] } , - BigNum { limbs: [ 0x9dbe5d372eb323eaa96815df473791, 0x5a83ef220beccff313358fd1c761af, 0x00728d ] } , - BigNum { limbs: [ 0x99795435ca67fef6cc5689c1f540e1, 0x2cd7cfa083667322f2be809c88ff9b, 0x001572 ] } , - BigNum { limbs: [ 0x242aaeca33f4000933a9753e0abf20, 0x7a7b59fcf9e1c016e54989054f05b8, 0x005e7b ] } , - BigNum { limbs: [ 0xba3d2b430423bbd2fee202f8577732, 0x8b74a34e54522dfa0d10e94de8286c, 0x002fb5 ] } , - BigNum { limbs: [ 0x0366d7bcfa38432d011dfc07a888cf, 0x1bde864f28f6053fcaf72053efdce7, 0x004438 ] } , - BigNum { limbs: [ 0xdbc3b2b164561896ce8e2e452c03e9, 0x67d41c98b8fa9829526ed6eec7578b, 0x0043ec ] } , - BigNum { limbs: [ 0xe1e0504e9a05e6693171d0bad3fc18, 0x3f7f0d04c44d9b10859932b310adc7, 0x003001 ] } , - BigNum { limbs: [ 0x3a3bcba4e33b5f6e7f2a73337c97eb, 0xb18d510dd282977c9c840d057bc4a8, 0x0012ad ] } , - BigNum { limbs: [ 0x8368375b1b209f9180d58bcc836816, 0xf5c5d88faac59bbd3b83fc9c5c40ab, 0x00613f ] } , - BigNum { limbs: [ 0x546f42d2f2136ab70c1a97d4a5a28b, 0x519305a6a34d00a54824fbd3c944df, 0x0032b8 ] } , - BigNum { limbs: [ 0x6934c02d0c489448f3e5672b5a5d76, 0x55c023f6d9fb32948fe30dce0ec074, 0x004135 ] } , - BigNum { limbs: [ 0x565938c72e8dc88dd6a6cbf1ff3e4a, 0xdbdc2c56cc7d4b28d83b2561c2568a, 0x002e17 ] } , - BigNum { limbs: [ 0x674aca38cfce36722959330e00c1b7, 0xcb76fd46b0cae810ffcce44015aec9, 0x0045d5 ] } , - BigNum { limbs: [ 0x77ba8dbe3dfb062809456c05e23c98, 0x14671281b8a4b1b3a9be35f3271afe, 0x001935 ] } , - BigNum { limbs: [ 0x45e97541c060f8d7f6ba92fa1dc369, 0x92ec171bc4a381862e49d3aeb0ea55, 0x005ab8 ] } , - BigNum { limbs: [ 0x1096f45046dd52a99f6a0d133d06aa, 0x861a7b23584626170d92377f7b5e79, 0x004ed7 ] } , - BigNum { limbs: [ 0xad0d0eafb77eac566095f1ecc2f957, 0x2138ae7a25020d22ca75d2225ca6da, 0x002516 ] } , - BigNum { limbs: [ 0xe1ab1e5b93f822d0b94eb237110d9f, 0x5fa125e49db89d2655af277ba7868c, 0x0069f2 ] } , - BigNum { limbs: [ 0xdbf8e4a46a63dc2f46b14cc8eef262, 0x47b203b8df8f96138258e226307ec6, 0x0009fb ] } , - BigNum { limbs: [ 0x6db8fecb665fa64c727ae95a4f1504, 0x4de5de9d149d0992379cc3665e3b80, 0x006d5c ] } , - BigNum { limbs: [ 0x4feb043497fc58b38d8515a5b0eafd, 0x596d4b0068ab29a7a06b463b79c9d3, 0x000691 ] } , - BigNum { limbs: [ 0x62eebd2d2d03301254d2facb9c65ec, 0x9789160e7b8c0fe7473fe43df5ffa2, 0x000707 ] } , - BigNum { limbs: [ 0x5ab545d2d158ceedab2d0434639a15, 0x0fca138f01bc235290c82563e205b1, 0x006ce6 ] } , - BigNum { limbs: [ 0x34fabfe22bf195070a40826b0a8a22, 0x496805d716afcfe47a545cdc549868, 0x0045de ] } , - BigNum { limbs: [ 0x88a9431dd26a69f8f5bf7c94f575df, 0x5deb23c6669863555db3acc5836ceb, 0x002e0f ] } , - BigNum { limbs: [ 0x8e36a4f207ed7934afa23e4d664fb9, 0xe13b38a0e39adb1535f05011c0f97d, 0x001f5f ] } , - BigNum { limbs: [ 0x2f6d5e0df66e85cb505dc0b299b048, 0xc617f0fc99ad5824a217b990170bd6, 0x00548d ] } , - BigNum { limbs: [ 0x0efba3add1439fcda6025fcec5f85e, 0x23e39e3bddb85c5f7c6f1f39bb4a43, 0x004172 ] } , - BigNum { limbs: [ 0xaea85f522d185f3259fd9f313a07a3, 0x836f8b619f8fd6da5b98ea681cbb10, 0x00327b ] } , - BigNum { limbs: [ 0x50fd367a04217a99f8b35c4feecc72, 0x3aeef6d281f2894bb176dc6c03beb7, 0x0000fa ] } , - BigNum { limbs: [ 0x6ca6cc85fa3a8466074ca2b011338f, 0x6c6432cafb55a9ee26912d35d4469c, 0x0072f3 ] } , - BigNum { limbs: [ 0x3abeed94b4f1634be87dab9013c5e6, 0x7c84cd1b601bec56a6760508dcf493, 0x002bd5 ] } , - BigNum { limbs: [ 0x82e5156b496a9bb41782536fec3a1b, 0x2ace5c821d2c46e331920498fb10c0, 0x004818 ] } , - BigNum { limbs: [ 0x8726c067a90bbe12024f89b257ee62, 0x2e08318aeeacb408378170769053cb, 0x006b7e ] } , - BigNum { limbs: [ 0x367d4298555040edfdb0754da8119f, 0x794af8128e9b7f31a086992b47b188, 0x00086f ] } , - BigNum { limbs: [ 0xd18fa289732f688a5ee031a9245ad3, 0xbc0e64c9d219a8d562efc8186a2d24, 0x002969 ] } , - BigNum { limbs: [ 0xec1460768b2c9675a11fcd56dba52e, 0xeb44c4d3ab2e8a64751841896dd82e, 0x004a83 ] } , - BigNum { limbs: [ 0x427c3d5132b42adb5bf0d17886f914, 0x1b7bf18b694222c41c5896457592c9, 0x0009bb ] } , - BigNum { limbs: [ 0x7b27c5aecba7d424a40f2d877906ed, 0x8bd7381214061075bbaf735c62728a, 0x006a32 ] } , - BigNum { limbs: [ 0xf4a328d6df60c441d4d6f8a6035ba1, 0x0e4e224ed50ccd12172874ef649f75, 0x0015ff ] } , - BigNum { limbs: [ 0xc900da291efb3abe2b290659fca460, 0x9905074ea83b6627c0df94b27365dd, 0x005dee ] } , - BigNum { limbs: [ 0x32eadeb2eaebb63bfd3383d2361246, 0xc05b04c9044fc6c5f0964c53353c45, 0x004c30 ] } , - BigNum { limbs: [ 0x8ab9244d137048c402cc7b2dc9edbb, 0xe6f824d478f86c73e771bd4ea2c90e, 0x0027bc ] } , - BigNum { limbs: [ 0xe64e1a0d2e560d6e1499e715bda543, 0x278c6eed86f45ec8092b13ec8a7ecd, 0x00484d ] } , - BigNum { limbs: [ 0xd755e8f2d005f191eb6617ea425abe, 0x7fc6baaff653d471cedcf5b54d8685, 0x002ba0 ] } , - BigNum { limbs: [ 0xa2a69107b6a980b482447428fa23ee, 0x7561de37d95e60cd66c57736477daa, 0x001a2c ] } , - BigNum { limbs: [ 0x1afd71f847b27e4b7dbb8ad705dc13, 0x31f14b65a3e9d26c7142926b9087a9, 0x0059c1 ] } , - BigNum { limbs: [ 0x34a8335508915c9da5d0cc12724318, 0x78fad28e89573fde62c6b46b658a0f, 0x00242c ] } , - BigNum { limbs: [ 0x88fbcfaaf5caa2625a2f32ed8dbce9, 0x2e58570ef3f0f35b75415536727b44, 0x004fc1 ] } , - BigNum { limbs: [ 0xd771dbf6e9599e6ae672da7b46fa2c, 0x3a0e0347179ccc16de33046dedfd4f, 0x005276 ] } , - BigNum { limbs: [ 0xe632270915026095198d2484b905d5, 0x6d45265665ab6722f9d50533ea0803, 0x002177 ] } , - BigNum { limbs: [ 0x50f41a25187433d5401e0e3fd3cfc1, 0x51bd4c910d3fe33c91024f7a8e43e3, 0x006e98 ] } , - BigNum { limbs: [ 0x6cafe8dae5e7cb2abfe1f0c02c3040, 0x5595dd0c70084ffd4705ba2749c170, 0x000555 ] } , - BigNum { limbs: [ 0x693136244c47d39006fed3cdaa0066, 0xa274da64baa96fb21ab194d4741dbd, 0x00004a ] } , - BigNum { limbs: [ 0x5472ccdbb2142b6ff9012b3255ff9b, 0x04de4f38c29ec387bd5674cd63e796, 0x0073a3 ] } , - BigNum { limbs: [ 0x960d51bf6ae6f4e4ab5ac48f2bd9a6, 0x11dd7971e55a4d99e7da903c25f117, 0x006584 ] } , - BigNum { limbs: [ 0x2796b14093750a1b54a53a70d4265b, 0x9575b02b97ede59ff02d7965b2143c, 0x000e69 ] } , - BigNum { limbs: [ 0x60c1d07e6eeefc87b5eac39c929ac3, 0xe6212869277b67c6ec8885a28cd25a, 0x005d5f ] } , - BigNum { limbs: [ 0x5ce232818f6d02784a153b636d653e, 0xc132013455cccb72eb7f83ff4b32f9, 0x00168d ] } , - BigNum { limbs: [ 0xddf56e2cd4099acf38136ebca02c29, 0xac21cd03c9f223c6493f18cca8f69b, 0x003a40 ] } , - BigNum { limbs: [ 0xdfae94d32a526430c7ec90435fd3d8, 0xfb315c99b3560f738ec8f0d52f0eb7, 0x0039ac ] } , - BigNum { limbs: [ 0x02b232af695bcf227fe83d53c1ddee, 0x912d964c2baf45393450556cb92530, 0x006af1 ] } , - BigNum { limbs: [ 0xbaf1d05095002fdd8017c1ac3e2213, 0x162593515198ee00a3b7b4351ee023, 0x0008fc ] } , - BigNum { limbs: [ 0xa642214f0552fce5dcbdb1a601c023, 0xc5389b8a77563adc60186611634372, 0x001ccb ] } , - BigNum { limbs: [ 0x1761e1b0f909021a23424d59fe3fde, 0xe21a8e1305f1f85d77efa39074c1e1, 0x005721 ] } , - BigNum { limbs: [ 0x62c16e272104bf004be4bfd097d114, 0xef816bc349c995e8b12f9a81eaa16a, 0x003adb ] } , - BigNum { limbs: [ 0x5ae294d8dd573fffb41b3f2f682eed, 0xb7d1bdda337e9d5126d86f1fed63e9, 0x003911 ] } , - BigNum { limbs: [ 0xe4c9e2213e75a9aea4435a94a73592, 0x7bacf43b42c5ad0303a3834b35fc71, 0x005f05 ] } , - BigNum { limbs: [ 0xd8da20debfe655515bbca46b58ca6f, 0x2ba635623a828636d4648656a208e1, 0x0014e8 ] } , - BigNum { limbs: [ 0xaea472d254c55dee3ac1bc2e985d0e, 0x481c5fd3e525670a5d517f05737bda, 0x005dc7 ] } , - BigNum { limbs: [ 0x0eff902da996a111c53e42d167a2f3, 0x5f36c9c99822cc2f7ab68a9c648979, 0x001626 ] } , - BigNum { limbs: [ 0x95714916b52a44a1d1b433c6d47388, 0xf72b124899b39b47aca9f79b77ff22, 0x000957 ] } , - BigNum { limbs: [ 0x2832b9e94931ba5e2e4bcb392b8c79, 0xb0281754e39497f22b5e1206600631, 0x006a95 ] } , - BigNum { limbs: [ 0x3dab9667fd8d6bc0b912fc6ebb6b4d, 0xa957470b3b35b9ebd8849e767d8f1a, 0x00723d ] } , - BigNum { limbs: [ 0x7ff86c9800ce933f46ed02914494b4, 0xfdfbe2924212794dff836b2b5a7639, 0x0001af ] } , - BigNum { limbs: [ 0x1a6dd107013e8f532cb2e6d8d5aba7, 0x5fb4f46a87242dcbdd1d919b4e16c6, 0x004c9c ] } , - BigNum { limbs: [ 0xa33631f8fd1d6facd34d18272a545a, 0x479e3532f624056dfaea780689ee8d, 0x002751 ] } , - BigNum { limbs: [ 0xdefdd5e0a986ed1c437a27915897ce, 0x95170c6c7a701e40b397a45127173a, 0x0043fb ] } , - BigNum { limbs: [ 0xdea62d1f54d511e3bc85d76ea76833, 0x123c1d3102d814f924706550b0ee18, 0x002ff2 ] } , - BigNum { limbs: [ 0xbba69476fa5eda3561bfd6c71847fd, 0xc0f1216b6c3e53e37f41765245dfb3, 0x003b35 ] } , - BigNum { limbs: [ 0x01fd6e8903fd24ca9e402838e7b804, 0xe66208321109df5658c6934f9225a0, 0x0038b7 ] } , - BigNum { limbs: [ 0x1e4f3c2848bde33792a0704d7f3d5c, 0xa41db4f4117fa6964523fbe0428afd, 0x0028ea ] } , - BigNum { limbs: [ 0x9f54c6d7b59e1bc86d5f8eb280c2a5, 0x033574a96bc88ca392e40dc1957a56, 0x004b03 ] } , - BigNum { limbs: [ 0x499179728f96587b47364abb902a7f, 0x06969e493afaf1cae603a9624c7f48, 0x0026cb ] } , - BigNum { limbs: [ 0x7412898d6ec5a684b8c9b4446fd582, 0xa0bc8b54424d416ef204603f8b860b, 0x004d22 ] } , - BigNum { limbs: [ 0x2eab334af1e1da6d7b0ac353e2e894, 0xc71899852062fc6ecc48d2fcc38796, 0x0034e7 ] } , - BigNum { limbs: [ 0x8ef8cfb50c7a249284f53bac1d176d, 0xe03a90185ce536cb0bbf36a5147dbd, 0x003f05 ] } , - BigNum { limbs: [ 0xbaaa75d37ac780d245d76b67f27d60, 0x6941c2658187de20aaf30c6e820a8f, 0x0009bf ] } , - BigNum { limbs: [ 0x02f98d2c83947e2dba2893980d82a1, 0x3e116737fbc055192d14fd3355fac4, 0x006a2e ] } , - BigNum { limbs: [ 0x4d58135e5084d45283c7e8f859236e, 0xd03359beb3ea94caca1076aabb329a, 0x002fc3 ] } , - BigNum { limbs: [ 0x704befa1add72aad7c381607a6dc93, 0xd71fcfdec95d9e6f0df792f71cd2b9, 0x004429 ] } , - BigNum { limbs: [ 0x10e5e09d4a435c9c77c878f2bb8464, 0xf72162824b43a150ed4182d6c5cc71, 0x0021a4 ] } , - BigNum { limbs: [ 0xacbe2262b418a2638837860d447b9d, 0xb031c71b320491e8eac686cb1238e2, 0x005248 ] } , - BigNum { limbs: [ 0xf51d82b4bab62433c15d109a2b1351, 0xc51b3151c9ef8fa6d009cc1e058c1f, 0x000714 ] } , - BigNum { limbs: [ 0xc886804b43a5dacc3ea2ee65d4ecb0, 0xe237f84bb358a39307fe3d83d27933, 0x006cd8 ] } , - BigNum { limbs: [ 0x34ef3e831e2ed58ba307e4e30ab1d4, 0x08d18af837ce39c12f6fd503a491da, 0x006d88 ] } , - BigNum { limbs: [ 0x88b4c47ce02d29745cf81a1cf54e2d, 0x9e819ea54579f978a898349e337379, 0x000665 ] } , - BigNum { limbs: [ 0x336da7150fc15dddd56ac9a7dc56c7, 0x7d5317cd6abce54817f7fd9bdce46e, 0x004011 ] } , - BigNum { limbs: [ 0x8a365beaee9aa1222a95355823a93a, 0x2a0011d0128b4df1c0100c05fb20e5, 0x0033dc ] } , - BigNum { limbs: [ 0x6ec9d66ed0d05112d7c36272dfa403, 0xc5d21eec1555ed81ca1bbc982e7922, 0x001ec1 ] } , - BigNum { limbs: [ 0x4eda2c912d8baded283c9c8d205bfe, 0xe1810ab167f245b80dec4d09a98c31, 0x00552b ] } , - BigNum { limbs: [ 0xfa8f9106dce56dec7ec96011f79a3c, 0x1ac2f79b05e28225f2afe1f417c2c5, 0x0052ee ] } , - BigNum { limbs: [ 0xc31471f92176911381369eee0865c5, 0x8c9032027765b113e55827adc0428d, 0x0020ff ] } , - BigNum { limbs: [ 0x088b2b3a9aec775d554ddf3121ab7d, 0xfa53f3c7787f73c5ee3d79f317d56d, 0x00357f ] } , - BigNum { limbs: [ 0xb518d7c5636f87a2aab21fcede5484, 0xacff35d604c8bf73e9ca8faec02fe6, 0x003e6d ] } , - BigNum { limbs: [ 0xab1d2a69326150035433bf5ab27518, 0x9450acd956d2d3e5beb3e22dd68c4c, 0x0011d9 ] } , - BigNum { limbs: [ 0x1286d896cbfaaefcabcc3fa54d8ae9, 0x13027cc426755f5419542774017907, 0x006214 ] } , - BigNum { limbs: [ 0xb422d75c3d666f868f9ace7f0c05ad, 0x08fa0da5731b7a4f6bf340fd338d21, 0x003186 ] } , - BigNum { limbs: [ 0x09812ba3c0f58f7970653080f3fa54, 0x9e591bf80a2cb8ea6c14c8a4a47832, 0x004267 ] } , - BigNum { limbs: [ 0xa13ca9ab7aec628d9e085dbcf627b3, 0x2ceae6375943e17d761d599629634f, 0x0061f7 ] } , - BigNum { limbs: [ 0x1c675954836f9c7261f7a14309d84e, 0x7a684366240451bc61eab00baea204, 0x0011f6 ] } , - BigNum { limbs: [ 0x5a435445e20ad1603533d63a46811e, 0x107acd46e6ead73902c051a4f47a89, 0x001099 ] } , - BigNum { limbs: [ 0x6360aeba1c512d9fcacc28c5b97ee3, 0x96d85c56965d5c00d547b7fce38aca, 0x006354 ] } , - BigNum { limbs: [ 0x0f556c7dd965c9e662abd652bab712, 0x2868b33df772d83728a650fec1696a, 0x0039ae ] } , - BigNum { limbs: [ 0xae4e968224f635199d5428ad4548ef, 0x7eea765f85d55b02af61b8a3169be9, 0x003a3f ] } , - BigNum { limbs: [ 0x095888daa8cfdbbb8cc4d2edbd46d3, 0xae4dd751366cffd24594deb8870dde, 0x0007e3 ] } , - BigNum { limbs: [ 0xb44b7a25558c2344733b2c1242b92e, 0xf905524c46db336792732ae950f775, 0x006c09 ] } , - BigNum { limbs: [ 0x5aeccb05e4e36060803fc8de4668e8, 0x193723dba47ad8cbb8d047f3a39b0c, 0x00414b ] } , - BigNum { limbs: [ 0x62b737fa19789e9f7fc03621b99719, 0x8e1c05c1d8cd5a6e1f37c1ae346a47, 0x0032a2 ] } , - BigNum { limbs: [ 0x1853b4ee0a8f23056507ef2eaa6a09, 0x0a90ca49d553e549f2ee40567332ca, 0x002d21 ] } , - BigNum { limbs: [ 0xa5504e11f3ccdbfa9af80fd15595f8, 0x9cc25f53a7f44defe519c94b64d289, 0x0046cc ] } , - BigNum { limbs: [ 0x2624f47a7cc3c3863217230f4471f9, 0xa98b3d9bb1a86d72e5e027b600ea16, 0x00382c ] } , - BigNum { limbs: [ 0x977f0e8581983b79cde8dbf0bb8e08, 0xfdc7ec01cb9fc5c6f227e1ebd71b3d, 0x003bc0 ] } , - BigNum { limbs: [ 0x833c9a0c4b5810f5b4c6b50487ae1f, 0x21f3bb92f58d494135cedd7cc2a033, 0x001be4 ] } , - BigNum { limbs: [ 0x3a6768f3b303ee0a4b3949fb7851e2, 0x855f6e0a87bae9f8a2392c25156520, 0x005809 ] } , - BigNum { limbs: [ 0xf382d2cf899e1c66a46ab4699489c6, 0xcabaccd26113e0b7a9efc26faa9532, 0x002803 ] } , - BigNum { limbs: [ 0xca21303074bde2995b954a966b763b, 0xdc985ccb1c3452822e1847322d7020, 0x004be9 ] } , - BigNum { limbs: [ 0x6910d639aefe17754b6a53fddc4c94, 0x88cd7576b823f47dfc583fe631a439, 0x0021d0 ] } , - BigNum { limbs: [ 0x54932cc64f5de78ab495ab0223b36d, 0x1e85b426c5243ebbdbafc9bba6611a, 0x00521d ] } , - BigNum { limbs: [ 0x0d613cc36bfa358f848821e4356469, 0x09516722769df28de6c16bb4bbee36, 0x002f2b ] } , - BigNum { limbs: [ 0xb042c63c9261c9707b77dd1bca9b98, 0x9e01c27b06aa40abf1469ded1c171d, 0x0044c2 ] } , - BigNum { limbs: [ 0x75d2d8c194a702ae113bb568e33c3c, 0xfd9bbe2b455b567ce9424c694ca7ba, 0x00596e ] } , - BigNum { limbs: [ 0x47d12a3e69b4fc51eec449971cc3c5, 0xa9b76b7237ecdcbceec5bd388b5d99, 0x001a7e ] } , - BigNum { limbs: [ 0xd67644ecb1ec23b5e2c92f7207066f, 0x3669f0b510aff120489b258ca13d29, 0x000c90 ] } , - BigNum { limbs: [ 0xe72dbe134c6fdb4a1d36cf8df8f992, 0x70e938e86c9842198f6ce41536c829, 0x00675d ] } , - BigNum { limbs: [ 0xc313287b50ee6ceb107d107792e331, 0xf5f496036dda75d6467e78880bd899, 0x001f92 ] } , - BigNum { limbs: [ 0xfa90da84ad6d9214ef82ee886d1cd0, 0xb15e939a0f6dbd6391899119cc2cb9, 0x00545a ] } , - BigNum { limbs: [ 0x0bd4e6a7e888998588ec8712bbb533, 0xc466e9f46b9b99b02b0d0da9e471ba, 0x003367 ] } , - BigNum { limbs: [ 0xb1cf1c5815d3657a771377ed444ace, 0xe2ec3fa911ac9989acfafbf7f39399, 0x004085 ] } , - BigNum { limbs: [ 0x3be97480c55418f45dadfa7ab57531, 0xea964384940530c5e2bc37a1533ac3, 0x0066b4 ] } , - BigNum { limbs: [ 0x81ba8e7f3907e60ba25204854a8ad0, 0xbcbce618e9430273f54bd20084ca90, 0x000d38 ] } , - BigNum { limbs: [ 0xc2430643e8182d35323eec80747457, 0xfcbdae14d82de463155db41faca3da, 0x006021 ] } , - BigNum { limbs: [ 0xfb60fcbc1643d1cacdc1127f8b8baa, 0xaa957b88a51a4ed6c2aa55822b6178, 0x0013cb ] } , - BigNum { limbs: [ 0xc7a2c8ab4cebe3229d28add06fa1a0, 0x36b466b8ceec2076b2987fe06886b8, 0x001769 ] } , - BigNum { limbs: [ 0xf6013a54b1701bdd62d7512f905e61, 0x709ec2e4ae5c12c3256f89c16f7e9a, 0x005c84 ] } , - BigNum { limbs: [ 0xd8a879169dd8991a08d5e4e2e01343, 0x192fb0cd079daf0f64a02464f057f6, 0x00679a ] } , - BigNum { limbs: [ 0xe4fb89e9608365e5f72a1a1d1fecbe, 0x8e2378d075aa842a7367e53ce7ad5c, 0x000c53 ] } , - BigNum { limbs: [ 0xb5485481194aefa65b28ed517d4354, 0xde37523e64d4ddbaddb9f90e7d697a, 0x000019 ] } , - BigNum { limbs: [ 0x085bae7ee5110f59a4d711ae82bcad, 0xc91bd75f1873557efa4e10935a9bd9, 0x0073d3 ] } , - BigNum { limbs: [ 0x970eedd0930abc1f41e0a2ec24c764, 0x76aca5cbffa191b659acf68394e8b7, 0x006b2f ] } , - BigNum { limbs: [ 0x2695152f6b5142e0be1f5c13db389d, 0x30a683d17da6a1837e5b131e431c9c, 0x0008be ] } , - BigNum { limbs: [ 0xea426fe3382da5ccd6232e773a7be0, 0xbccf1d2163b24879f55520eec3096c, 0x005fc0 ] } , - BigNum { limbs: [ 0xd361931cc62e593329dcd088c58421, 0xea840c7c1995eabfe2b2e8b314fbe6, 0x00142c ] } , - BigNum { limbs: [ 0x5ded1899239a88898b0554d218a61c, 0xd11ff6f7fa6cbcbe9301f686e86bf9, 0x0044c1 ] } , - BigNum { limbs: [ 0x5fb6ea66dac1767674faaa2de759e5, 0xd63332a582db767b4506131aef995a, 0x002f2b ] } , - BigNum { limbs: [ 0x62a1c1fa6e32aa1b529e40de1d7c4d, 0x5788394251987c11e63de35442f626, 0x0054e6 ] } , - BigNum { limbs: [ 0x5b024105902954e4ad61be21e283b4, 0x4fcaf05b2bafb727f1ca264d950f2d, 0x001f07 ] } , - BigNum { limbs: [ 0x23483beb660aa3126c1c8e445a8a5b, 0x12a22a888026f6f5faa93431d39300, 0x005726 ] } , - BigNum { limbs: [ 0x9a5bc71498515bed93e370bba575a6, 0x94b0ff14fd213c43dd5ed570047253, 0x001cc7 ] } , - BigNum { limbs: [ 0xd34a8629e2a390579464a37d34c01f, 0xe95e089c5912926d173883e9142489, 0x006800 ] } , - BigNum { limbs: [ 0xea597cd61bb86ea86b9b5b82cb3fe2, 0xbdf521012435a0ccc0cf85b8c3e0c9, 0x000bec ] } , - BigNum { limbs: [ 0x12f7a9a2ba4c6f2289841708c47e76, 0x8d51514e6d3ba1fb1ad2f91bea10fe, 0x006c5c ] } , - BigNum { limbs: [ 0xaaac595d440f8fdd767be7f73b818b, 0x1a01d84f100c913ebd351085edf455, 0x000791 ] } , - BigNum { limbs: [ 0x1084d1e459c2644faaa91388ae574d, 0xed8c43ec33b5e17e82746da5a2b076, 0x0047d7 ] } , - BigNum { limbs: [ 0xad1f311ba4999ab05556eb7751a8b4, 0xb9c6e5b1499251bb55939bfc3554dd, 0x002c15 ] } , - BigNum { limbs: [ 0xf9870d09b49934594ef32abcf775b9, 0xd339e9bdd168c902e32bba607579dc, 0x00220b ] } , - BigNum { limbs: [ 0xc41cf5f649c2caa6b10cd443088a48, 0xd4193fdfabdf6a36f4dc4f41628b76, 0x0051e1 ] } , - BigNum { limbs: [ 0xba5587cee31ba92218afc24fb3fb6d, 0x26f47becfa9260ab9a24e417ab6e2a, 0x00010c ] } , - BigNum { limbs: [ 0x034e7b311b4055dde7503cb04c0494, 0x805eadb082b5d28e3de3258a2c9729, 0x0072e1 ] } , - BigNum { limbs: [ 0xb1101b4a6a67fce5fb1ba223a764f8, 0x59b150561c08ee82c31d8e145688a9, 0x001f99 ] } , - BigNum { limbs: [ 0x0c93e7b593f4021a04e45cdc589b09, 0x4da1d947613f44b714ea7b8d817caa, 0x005454 ] } , - BigNum { limbs: [ 0x33e7e7f45b14fb3783b2614bebb0c2, 0x6a09c6e30dc4df9d916b36a30c5404, 0x006136 ] } , - BigNum { limbs: [ 0x89bc1b0ba34703c87c4d9db4144f3f, 0x3d4962ba6f83539c469cd2fecbb14f, 0x0012b7 ] } , - BigNum { limbs: [ 0x3eb77e93fdfad62d5d0f5c33535fd6, 0x31fb8102066d8296d9a9c6a10e2512, 0x006457 ] } , - BigNum { limbs: [ 0x7eec846c006128d2a2f0a2ccaca02b, 0x7557a89b76dab0a2fe5e4300c9e041, 0x000f96 ] } , - BigNum { limbs: [ 0x8fd58359d39d07910b8b9b66684add, 0x7d8c49ec4fb7f6900d91db7be189f1, 0x005363 ] } , - BigNum { limbs: [ 0x2dce7fa62abef76ef474639997b524, 0x29c6dfb12d903ca9ca762e25f67b62, 0x00208a ] } , - BigNum { limbs: [ 0x5b9ae4008d73829ab0eaa775faa012, 0x76e29080b50f1cd896a4b3705edc8a, 0x004256 ] } , - BigNum { limbs: [ 0x62091eff70e87c654f15578a055fef, 0x3070991cc8391661416356317928c9, 0x003197 ] } , - BigNum { limbs: [ 0x5415c7e32b57d8f14c6ea5a428c753, 0x2871d8bbf1938804b57eba0c7f48b2, 0x005ea3 ] } , - BigNum { limbs: [ 0x698e3b1cd304260eb391595bd738ae, 0x7ee150e18bb4ab3522894f9558bca1, 0x00154a ] } , - BigNum { limbs: [ 0x454cc072521a80dee4982fe73f0476, 0xc15b4cc4b5699059b96ae5d8e22ca0, 0x002ec1 ] } , - BigNum { limbs: [ 0x7857428dac417e211b67cf18c0fb8b, 0xe5f7dcd8c7dea2e01e9d23c8f5d8b3, 0x00452b ] } , - BigNum { limbs: [ 0x6a4174f9d391c3c1bc0e2e75444e71, 0xd2c2aeff4f7c1033a694607d9089ee, 0x00585f ] } , - BigNum { limbs: [ 0x53628e062aca3b3e43f1d08abbb190, 0xd4907a9e2dcc23063173a924477b65, 0x001b8d ] } , - BigNum { limbs: [ 0x077fb2af5f3968498cb1c004d751da, 0x9f9a7567a04fcef4eeac0deb62a9e2, 0x002f41 ] } , - BigNum { limbs: [ 0xb62450509f2296b6734e3efb28ae27, 0x07b8b435dcf86444e95bfbb6755b71, 0x0044ac ] } , - BigNum { limbs: [ 0x7f4b22ee86c90c6e3bf01c498740f6, 0xc509aec45575756fdf33240b9eb8c2, 0x004322 ] } , - BigNum { limbs: [ 0x3e58e0117792f291c40fe2b678bf0b, 0xe2497ad927d2bdc9f8d4e596394c91, 0x0030ca ] } , - BigNum { limbs: [ 0x62ff60cc15dea0c8e2dd3ed107d499, 0x0cdd9173bbfd3e8c95924f0548cbe5, 0x004c1c ] } , - BigNum { limbs: [ 0x5aa4a233e87d5e371d22c02ef82b68, 0x9a759829c14af4ad4275ba9c8f396e, 0x0027d1 ] } , - BigNum { limbs: [ 0xc9f9aa166bf26bc0797107b1cb3124, 0x3826c895df7f4b00e4140110a4aed7, 0x001896 ] } , - BigNum { limbs: [ 0xf3aa58e99269933f868ef74e34cedd, 0x6f2c61079dc8e838f3f4089133567b, 0x005b57 ] } , - BigNum { limbs: [ 0x6b1f176bbbafe77f0e8114b6a0d047, 0xe6b5bd56753f2c848ff6620f2d19a0, 0x0021fa ] } , - BigNum { limbs: [ 0x5284eb9442ac1780f17eea495f2fba, 0xc09d6c47080906b54811a792aaebb3, 0x0051f2 ] } , - BigNum { limbs: [ 0x24dfe0eff265eeb9f443beec8e4a98, 0xd12f488a4f008dde048d37f34632d0, 0x006ab6 ] } , - BigNum { limbs: [ 0x98c422100bf610460bbc401371b569, 0xd623e1132e47a55bd37ad1ae91d283, 0x000936 ] } , - BigNum { limbs: [ 0x89389d045ecd85912bd03df9174127, 0x5678784bdd314b69773fb25cf78088, 0x0009e9 ] } , - BigNum { limbs: [ 0x346b65fb9f8e796ed42fc106e8beda, 0x50dab151a016e7d060c85744e084cb, 0x006a04 ] } , - BigNum { limbs: [ 0xb2c43c2678b650937dff33b29a7067, 0x10012f49cbdbb0c057cfa5a042c808, 0x0032f6 ] } , - BigNum { limbs: [ 0x0adfc6d985a5ae6c8200cb4d658f9a, 0x9751fa53b16c827980386401953d4b, 0x0040f7 ] } , - BigNum { limbs: [ 0x89db099f5aa3d61cf9c8103c36f106, 0x04026adc48a1cb249422c0b1923c84, 0x00420f ] } , - BigNum { limbs: [ 0x33c8f960a3b828e30637eec3c90efb, 0xa350bec134a6681543e548f045c8cf, 0x0031de ] } , - BigNum { limbs: [ 0x131960517113c6aa3f1fa1135a9163, 0xb023314a82dbfe42fdcdc306e96f61, 0x006fbc ] } , - BigNum { limbs: [ 0xaa8aa2ae8d483855c0e05deca56e9e, 0xf72ff852fa6c34f6da3a469aee95f2, 0x000430 ] } , - BigNum { limbs: [ 0xa8dfb2d95d08eebad594175ea0777d, 0xd15d1348757839ea78d5ebd557ac68, 0x000fa5 ] } , - BigNum { limbs: [ 0x14c45026a15310452a6be7a15f8884, 0xd5f6165507cff94f5f321dcc8058eb, 0x006447 ] } , - BigNum { limbs: [ 0xb49eae14ca61adfb5a74bbf196694f, 0x78e42eccf77a299af2a89d3d9a9503, 0x0004a5 ] } , - BigNum { limbs: [ 0x090554eb33fa5104a58b430e6996b2, 0x2e6efad085ce099ee55f6c643d7050, 0x006f48 ] } , - BigNum { limbs: [ 0xc57c7aae3c5d192fc39139d30accaa, 0x6a37e78478720ac2b9a3a71bc6dee6, 0x0052ff ] } , - BigNum { limbs: [ 0xf8278851c1fee5d03c6ec52cf53357, 0x3d1b421904d628771e64628611266c, 0x0020ee ] } , - BigNum { limbs: [ 0xbfe4d04bc3af5abd41931e6ad8fbc4, 0xb4226f2d37b4092596aa02af41df19, 0x0052df ] } , - BigNum { limbs: [ 0xfdbf32b43aaca442be6ce09527043d, 0xf330ba7045942a14415e06f2962639, 0x00210d ] } , - BigNum { limbs: [ 0x5d4c8253345fc0da9862bcfa4152a5, 0xb67b052567d36d907e855e18e24fe2, 0x001666 ] } , - BigNum { limbs: [ 0x605780acc9fc3e25679d4205bead5c, 0xf0d824781574c5a95982ab88f5b571, 0x005d86 ] } , - BigNum { limbs: [ 0x2a6b489ba9d4071dd477a1a8fb9943, 0x2f1ccbe3e2f477c805e7d68aa60033, 0x0057e3 ] } , - BigNum { limbs: [ 0x9338ba645487f7e22b885d570466be, 0x78365db99a53bb71d2203317320520, 0x001c0a ] } , - BigNum { limbs: [ 0x1ab551c326a152b58257bb2e5d71db, 0xbc560f4a92e069085360a46e5262e7, 0x004bf9 ] } , - BigNum { limbs: [ 0xa2eeb13cd7baac4a7da843d1a28e26, 0xeafd1a52ea67ca3184a7653385a26c, 0x0027f3 ] } , - BigNum { limbs: [ 0x58997c0bcf1c7ec8ed5cac7b9d2bac, 0xb301523084ffbb94572c1757cd8070, 0x001998 ] } , - BigNum { limbs: [ 0x650a86f42f3f803712a3528462d455, 0xf451d76cf84877a580dbf24a0a84e3, 0x005a54 ] } , - BigNum { limbs: [ 0xbf85946a2dad3bd8b9c1884f38f043, 0x2e2d253894999a00ad991d57396878, 0x000645 ] } , - BigNum { limbs: [ 0xfe1e6e95d0aec327463e76b0c70fbe, 0x79260464e8ae99392a6eec4a9e9cda, 0x006da8 ] } , - BigNum { limbs: [ 0x79d0abcc6b92776cfd5fd90654dc47, 0x92b5ba1dbfdb4e6157ba4c1415819b, 0x001b33 ] } , - BigNum { limbs: [ 0x43d3573392c9879302a025f9ab23ba, 0x149d6f7fbd6ce4d8804dbd8dc283b8, 0x0058ba ] } , - BigNum { limbs: [ 0x68d3d308f6af752367d21449c614fb, 0x7acb9966a71884d4224a351c246aaa, 0x001e8c ] } , - BigNum { limbs: [ 0x54d02ff707ac89dc982deab639eb06, 0x2c879036d62fae65b5bdd485b39aa9, 0x005561 ] } , - BigNum { limbs: [ 0xd1347b378fbf96e206da11a5d36306, 0x0a11a0f704f4fc3e8acfe0f8245f0a, 0x00564c ] } , - BigNum { limbs: [ 0xec6f87c86e9c681df925ed5a2c9cfb, 0x9d4188a6785336fb4d3828a9b3a648, 0x001da1 ] } , - BigNum { limbs: [ 0xad4b8238fb15a2cd5f7b9753dbc950, 0x8876214b5ea64b7394e9aacb5a271f, 0x002bb6 ] } , - BigNum { limbs: [ 0x105880c703465c32a08467ac2436b1, 0x1edd08521ea1e7c6431e5ed67dde34, 0x004837 ] } , - BigNum { limbs: [ 0x63fff9337fecd313c7c03ef17a2033, 0xabee7c028923cc0affedaf37b5bb4e, 0x001c39 ] } , - BigNum { limbs: [ 0x59a409cc7e6f2bec383fc00e85dfce, 0xfb64ad9af424672ed81a5a6a224a05, 0x0057b3 ] } , - BigNum { limbs: [ 0x91a1faeb4b36d5cc2201b834e74a04, 0x8f5b87d7a05090eb099e349e17639b, 0x00605b ] } , - BigNum { limbs: [ 0x2c020814b3252933ddfe46cb18b5fd, 0x17f7a1c5dcf7a24ece69d503c0a1b8, 0x001392 ] } , - BigNum { limbs: [ 0xa2df4d8921e8aff1867882e0b9cae8, 0xcb41966a5661788743c7818f06051d, 0x0006f3 ] } , - BigNum { limbs: [ 0x1ac4b576dc734f0e79877c1f463519, 0xdc11933326e6bab294408812d20036, 0x006cf9 ] } , - BigNum { limbs: [ 0x5c5d4be5b92c7b5ab670793f534c85, 0x7f1658569f752082ae264b6ae7cc8d, 0x003a09 ] } , - BigNum { limbs: [ 0x6146b71a452f83a5498f85c0acb37c, 0x283cd146ddd312b729e1be36f038c6, 0x0039e4 ] } , - BigNum { limbs: [ 0x6736009fa130119f9a06a539dcc7bd, 0xf5a12bf093b927ab9acee22625ab94, 0x005351 ] } , - BigNum { limbs: [ 0x566e02605d2bed6065f959c6233844, 0xb1b1fdace98f0b8e3d39277bb259bf, 0x00209b ] } , - BigNum { limbs: [ 0x24c2fd6a62162b6b37d19f83bb87e0, 0xac8524669b3262d47d6f3069a6b4a9, 0x002146 ] } , - BigNum { limbs: [ 0x98e105959c45d394c82e5f7c447821, 0xface0536e215d0655a98d9383150aa, 0x0052a6 ] } , - BigNum { limbs: [ 0xa24a9bd470cd67ca0a0220aec02fa4, 0x3ba7dfb14308007b0e472badec8d39, 0x0057e0 ] } , - BigNum { limbs: [ 0x1b59672b8d8e9735f5fdde513fd05d, 0x6bab49ec3a4032bec9c0ddf3eb781a, 0x001c0d ] } , - BigNum { limbs: [ 0xbf80d6881dc2190c850dd65aaaaefa, 0x4708ac66bf63479ddf15c7b33589c3, 0x001bab ] } , - BigNum { limbs: [ 0xfe232c77e099e5f37af228a5555107, 0x604a7d36bde4eb9bf8f241eea27b8f, 0x005842 ] } , - BigNum { limbs: [ 0xd6c764f82602a7228bc1c0e7e3fdf5, 0x4cef0ca52f27785009eb7e7ecdaa03, 0x000658 ] } , - BigNum { limbs: [ 0xe6dc9e07d85957dd743e3e181c020c, 0x5a641cf84e20bae9ce1c8b230a5b4f, 0x006d95 ] } , - BigNum { limbs: [ 0x74957c1d2728744430911d2ef02d6c, 0x00c1a3aeef45073c6cb1200432d367, 0x00688a ] } , - BigNum { limbs: [ 0x490e86e2d7338abbcf6ee1d10fd295, 0xa69185ee8e032bfd6b56e99da531ec, 0x000b63 ] } , - BigNum { limbs: [ 0xb39fb2d51ad78d473ea412a309a77c, 0x9915614f3901e5434787eb246e5cea, 0x003d3d ] } , - BigNum { limbs: [ 0x0a04502ae38471b8c15bec5cf65885, 0x0e3dc84e44464df690801e7d69a869, 0x0036b0 ] } , - BigNum { limbs: [ 0x7203a676aa3fae360419ba7b4a732f, 0x208bd4a64316c3de999d9c5ccf8954, 0x00200d ] } , - BigNum { limbs: [ 0x4ba05c89541c50c9fbe64484b58cd2, 0x86c754f73a316f5b3e6a6d45087bff, 0x0053e0 ] } , - BigNum { limbs: [ 0xcb18f70b1666477b49fff1eb1daf38, 0x4e933af6252c6dc58e41cd427dbe5f, 0x00009c ] } , - BigNum { limbs: [ 0xf28b0bf4e7f5b784b6000d14e250c9, 0x58bfeea7581bc57449c63c5f5a46f3, 0x007351 ] } , - BigNum { limbs: [ 0x4567cac5c777f44c56fb3866d3a809, 0xffb392002a5b378787829b9e0abd13, 0x0067b3 ] } , - BigNum { limbs: [ 0x783c383a36e40ab3a904c6992c57f8, 0xa79f979d52ecfbb250856e03cd4840, 0x000c39 ] } , - BigNum { limbs: [ 0xdca0ae49bc978f29ebf33886000c8a, 0xabc5b7c03be4cc772df2b06be7d8d7, 0x0053d7 ] } , - BigNum { limbs: [ 0xe10354b641c46fd6140cc679fff377, 0xfb8d71dd416366c2aa155935f02c7b, 0x002015 ] } , - BigNum { limbs: [ 0x940867fad3080cff61da335d218c69, 0x9d4a6f36bb328011781ae2eb8338e5, 0x00596a ] } , - BigNum { limbs: [ 0x299b9b052b53f2009e25cba2de7398, 0x0a08ba66c215b3285fed26b654cc6e, 0x001a83 ] } , - BigNum { limbs: [ 0x542b67f83c49199e3ccb8dd576b0f5, 0xadb736656798954b937d9da775086a, 0x004a41 ] } , - BigNum { limbs: [ 0x69789b07c212e561c334712a894f0c, 0xf99bf33815af9dee448a6bfa62fce9, 0x0029ab ] } , - BigNum { limbs: [ 0x76cfa8688aad937936281d725764c6, 0xda887f345f79f45562e9505e5e255d, 0x005b21 ] } , - BigNum { limbs: [ 0x46d45a9773ae6b86c9d7e18da89b3b, 0xcccaaa691dce3ee4751eb94379dff6, 0x0018cb ] } , - BigNum { limbs: [ 0xeafd87bcdafda8cb6a70e04f526a21, 0x340846157bd5c13b498f50314635ca, 0x0029d8 ] } , - BigNum { limbs: [ 0xd2a67b43235e5634958f1eb0ad95e0, 0x734ae388017271fe8e78b97091cf88, 0x004a15 ] } , - BigNum { limbs: [ 0x1da259503de1389ec8f2d00aa19cc2, 0xbf6ff47ecf4640000ffa7ee6b74af1, 0x002250 ] } , - BigNum { limbs: [ 0xa001a9afc07ac661370d2ef55e633f, 0xe7e3351eae01f339c80d8abb20ba62, 0x00519c ] } , - BigNum { limbs: [ 0x03dab19044e968a5e53cecd36dabb8, 0xfcab3ad741ebc624a6bf28c35e8472, 0x00592e ] } , - BigNum { limbs: [ 0xb9c9516fb972965a1ac3122c925449, 0xaaa7eec63b5c6d153148e0de7980e1, 0x001abe ] } , - BigNum { limbs: [ 0x9d5d562fb82e29d6e0934f96c7a283, 0x5287a19abf3c4b844ced5de375e7cb, 0x0009c6 ] } , - BigNum { limbs: [ 0x2046acd0462dd5291f6caf69385d7e, 0x54cb8802be0be7b58b1aabbe621d88, 0x006a27 ] } , - BigNum { limbs: [ 0x726517ced91929d4910b491b0f88ae, 0x5ec1c5949c07f55d7b47c3dbbb90a2, 0x0010c6 ] } , - BigNum { limbs: [ 0x4b3eeb312542d52b6ef4b5e4f07753, 0x48916408e1403ddc5cc045c61c74b1, 0x006327 ] } , - BigNum { limbs: [ 0x93ecc4fa926abf15507909d573d669, 0x2ddbb6673ea3ae29036141e291016e, 0x00394a ] } , - BigNum { limbs: [ 0x29b73e056bf13feaaf86f52a8c2998, 0x797773363ea48510d4a6c7bf4703e5, 0x003aa3 ] } , - BigNum { limbs: [ 0xdb8c0f19e4d5789314520692a107bf, 0x559da0d834d894ef9b74b96b0020a5, 0x006d5b ] } , - BigNum { limbs: [ 0xe217f3e61986866cebadf86d5ef842, 0x51b588c5486f9e4a3c935036d7e4ad, 0x000692 ] } , - BigNum { limbs: [ 0x4ce9d6b7ae56c76a7878b810d6b679, 0xd0cbecb1569285bfd4bf0aae06bd36, 0x004ed8 ] } , - BigNum { limbs: [ 0x70ba2c4850053795878746ef294988, 0xd6873cec26b5ad7a0348fef3d1481d, 0x002514 ] } , - BigNum { limbs: [ 0x9a7d5bdaf34775fa3f8e60a92902ec, 0x7e6ad59835800491be3e124c5646a5, 0x0052a2 ] } , - BigNum { limbs: [ 0x2326a7250b148905c0719e56d6fd15, 0x28e8540547c82ea819c9f75581beae, 0x00214b ] } , - BigNum { limbs: [ 0x930a3974130cf21f0bf5b12e2ad57b, 0xa88d3bb843f1e59a0efbb9fbdaac29, 0x003f00 ] } , - BigNum { limbs: [ 0x2a99c98beb4f0ce0f40a4dd1d52a86, 0xfec5ede539564d9fc90c4fa5fd592a, 0x0034ec ] } , - BigNum { limbs: [ 0x0ca2ec307a54e23de675002a1dc598, 0xeaab319d871b6f8272abdf5878899b, 0x001327 ] } , - BigNum { limbs: [ 0xb10116cf84071cc2198afed5e23a69, 0xbca7f7fff62cc3b7655c2a495f7bb8, 0x0060c5 ] } , - BigNum { limbs: [ 0x7b78bbf9fcf6ac1a8ce009481b06f4, 0xcd295c0ef9e69f7e9ea74befd40aec, 0x00681c ] } , - BigNum { limbs: [ 0x422b4706016552e5731ff5b7e4f90d, 0xda29cd8e836193bb3960bdb203fa67, 0x000bd0 ] } , - BigNum { limbs: [ 0x684c6a14b706e6a4e458d205940a65, 0xb4baeca30de2fa564db1db4df55ad5, 0x00160f ] } , - BigNum { limbs: [ 0x555798eb4755185b1ba72cfa6bf59c, 0xf2983cfa6f6538e38a562e53e2aa7e, 0x005ddd ] } , - BigNum { limbs: [ 0x357125c09f65d2f6bc04f1ccc8a05b, 0x75ece38b6b216509c259b1a0a550a2, 0x002e7a ] } , - BigNum { limbs: [ 0x8832dd3f5ef62c0943fb0d33375fa6, 0x316646121226ce3015ae580132b4b1, 0x004573 ] } , - BigNum { limbs: [ 0x21340434d0af3d0e2bce377d6c3748, 0x53137d74125bb90512b69f97c1abe0, 0x003162 ] } , - BigNum { limbs: [ 0x9c6ffecb2dacc1f1d431c78293c8b9, 0x543fac296aec7a34c5516a0a165973, 0x00428b ] } , - BigNum { limbs: [ 0xb75ebf1fa6a848f2dcd7de352e7812, 0xfa066178e33c85eb74ae061ea0c95e, 0x005b88 ] } , - BigNum { limbs: [ 0x064543e057b3b60d232820cad187ef, 0xad4cc8249a0bad4e635a0383373bf5, 0x001864 ] } , - BigNum { limbs: [ 0x7841ddfd61aa748afd27280b1d26d5, 0xb5dc03165af6d7e53ad367a6de9eee, 0x004736 ] } , - BigNum { limbs: [ 0x456225029cb18a7502d8d6f4e2d92c, 0xf177268722515b549d34a1faf96665, 0x002cb6 ] } , - BigNum { limbs: [ 0xa3fca4c95e97ef62e4bc4334d24aa2, 0x970f33b7a49db81d211727eccfa32c, 0x00148a ] } , - BigNum { limbs: [ 0x19a75e369fc40f9d1b43bbcb2db55f, 0x1043f5e5d8aa7b1cb6f0e1b5086227, 0x005f63 ] } , - BigNum { limbs: [ 0x1af71607b2c66dfea4a56081023372, 0xb346b11ea91175e3dbeb28007ad97d, 0x0036e2 ] } , - BigNum { limbs: [ 0xa2acecf84b9591015b5a9e7efdcc8f, 0xf40c787ed436bd55fc1ce1a15d2bd6, 0x003d0a ] } , - BigNum { limbs: [ 0xd98e5d422c5d1b27ff824c52dca1d0, 0x28e8851cb172fab2b64503252a7def, 0x004e8f ] } , - BigNum { limbs: [ 0xe415a5bdd1fee3d8007db2ad235e31, 0x7e6aa480cbd5388721c3067cad8763, 0x00255e ] } , - BigNum { limbs: [ 0x47a42d475447363d44f03d6a565b97, 0xbe856f6bbf1c5d54f3a81142092b09, 0x005168 ] } , - BigNum { limbs: [ 0x75ffd5b8aa14c8c2bb0fc195a9a46a, 0xe8cdba31be2bd5e4e45ff85fceda4a, 0x002284 ] } , - BigNum { limbs: [ 0x31d674997b53dae2b092cec051cab3, 0x4c464e1891f0c3c830738958768167, 0x001f64 ] } , - BigNum { limbs: [ 0x8bcd8e668308241d4f6d303fae354e, 0x5b0cdb84eb576f71a79480496183ec, 0x005489 ] } , - BigNum { limbs: [ 0xa86a543b84b81418e39ed00f0fb9e9, 0x2c67e97367ce5c3e6671824479d465, 0x003d75 ] } , - BigNum { limbs: [ 0x1539aec479a3eae71c612ef0f04618, 0x7aeb402a1579d6fb7196875d5e30ee, 0x003678 ] } , - BigNum { limbs: [ 0x8378bf20f973c70da3b463586d4b7b, 0xcdaeaa9b7abf7cc0ce06072e27a588, 0x003aa6 ] } , - BigNum { limbs: [ 0x3a2b43df04e837f25c4b9ba792b486, 0xd9a47f020288b6790a020273b05fcb, 0x003946 ] } , - BigNum { limbs: [ 0x010585e07a712c0b6729335818e69a, 0x2bac15e611d6564ae36561f30c5d45, 0x00369d ] } , - BigNum { limbs: [ 0xbc9e7d1f83ead2f498d6cba7e71967, 0x7ba713b76b71dceef4a2a7aecba80e, 0x003d50 ] } , - BigNum { limbs: [ 0xa526579d681c965a90ff08490bfddc, 0x09f9fa970046d8d2e1418a37800c8a, 0x0027ad ] } , - BigNum { limbs: [ 0x187dab62963f68a56f00f6b6f40225, 0x9d592f067d015a66f6c67f6a57f8c9, 0x004c40 ] } , - BigNum { limbs: [ 0x203f88cbdc4471948cb801db257f24, 0xa39c71e06fdf474e1e622995bbb22e, 0x000088 ] } , - BigNum { limbs: [ 0x9d647a3422178d6b7347fd24da80dd, 0x03b6b7bd0d68ebebb9a5e00c1c5325, 0x007365 ] } , - BigNum { limbs: [ 0xd9640467b89b62bb3664bc5da730c0, 0xf25d387914b42e95a8ce3dab9495f8, 0x00070c ] } , - BigNum { limbs: [ 0xe43ffe9845c09c44c99b42a258cf41, 0xb4f5f124689404a42f39cbf6436f5a, 0x006ce0 ] } , - BigNum { limbs: [ 0xcb1c4c78afeecd4318a4cc529de646, 0x8ab180b6121766d0fbf770c619f590, 0x006722 ] } , - BigNum { limbs: [ 0xf287b6874e6d31bce75b32ad6219bb, 0x1ca1a8e76b30cc68dc1098dbbe0fc2, 0x000ccb ] } , - BigNum { limbs: [ 0xf232337ef6eba4549c3333d5cdae87, 0x1b7d643dcbb06052961d233134d2bd, 0x001131 ] } , - BigNum { limbs: [ 0xcb71cf8107705aab63cccb2a32517a, 0x8bd5c55fb197d2e741eae670a33295, 0x0062bc ] } , - BigNum { limbs: [ 0xd2a6543bf0a923b8baa3c5f39511a9, 0xfaafbd50344cd931eb4e7d8227c6d9, 0x0033f1 ] } , - BigNum { limbs: [ 0xeafdaec40db2db47455c390c6aee58, 0xaca36c4d48fb5a07ecb98c1fb03e79, 0x003ffb ] } , - BigNum { limbs: [ 0x1777ae6de43c3bcc3cf45503a26bf9, 0x4930044f66d8675907d64a5c2feb97, 0x005605 ] } , - BigNum { limbs: [ 0xa62c54921a1fc333c30ba9fc5d9408, 0x5e23254e166fcbe0d031bf45a819bc, 0x001de8 ] } , - BigNum { limbs: [ 0x7664eaa2d713a5c7b1b0deaf488dc0, 0xdecc5a66647f9784a0b1a526c1fc01, 0x00040b ] } , - BigNum { limbs: [ 0x473f185d274859384e4f2050b77241, 0xc886cf3718c89bb53756647b160952, 0x006fe1 ] } , - BigNum { limbs: [ 0xadbc1a2c46fc2c8d7616ca9a1232dd, 0x417472eed79049a3167cfffc90e27f, 0x0057d6 ] } , - BigNum { limbs: [ 0x0fe7e8d3b75fd27289e93465edcd24, 0x65deb6aea5b7e996c18b09a54722d4, 0x001c17 ] } , - BigNum { limbs: [ 0xfa62bbbbd6b631a42d6916ba23404c, 0x404b2b3e80406629c6836b11a80e95, 0x001e1a ] } , - BigNum { limbs: [ 0xc341474427a5cd5bd296e845dcbfb5, 0x6707fe5efd07cd1011849e902ff6bd, 0x0055d3 ] } , - BigNum { limbs: [ 0xd481d0bb6911548cb29e5f68cdc81a, 0xaaa3d798d21e94dadff55c6cbfdb7f, 0x00630e ] } , - BigNum { limbs: [ 0xe9223244954aaa734d619f973237e7, 0xfcaf5204ab299e5ef812ad351829d3, 0x0010de ] } , - BigNum { limbs: [ 0x030f7af2e756bfa10792d623ec078b, 0xaf53a7f8913c194caac36ab9b39ee1, 0x001fef ] } , - BigNum { limbs: [ 0xba94880d17053f5ef86d28dc13f876, 0xf7ff81a4ec0c19ed2d449ee8246672, 0x0053fd ] } , - BigNum { limbs: [ 0xca4d3655b7f65a7a73df2ecd0e2030, 0x7518b9fd3554c0f19a67641063833c, 0x004b1d ] } , - BigNum { limbs: [ 0xf356ccaa4665a4858c20d032f1dfd1, 0x323a6fa047f372483da0a591748216, 0x0028d0 ] } , - BigNum { limbs: [ 0xd3049773ed303c881867a03315f5d3, 0x2b4acc7c704c4f38a455be37d321ba, 0x0048b5 ] } , - BigNum { limbs: [ 0xea9f6b8c112bc277e7985eccea0a2e, 0x7c085d210cfbe40133b24b6a04e398, 0x002b38 ] } , - BigNum { limbs: [ 0xc2d66725116e6c0e39c5c0deac938d, 0x7b09d8722543e50d1ed404838c3942, 0x003c85 ] } , - BigNum { limbs: [ 0xfacd9bdaeced92f1c63a3e21536c74, 0x2c49512b58044e2cb934051e4bcc10, 0x003768 ] } , - BigNum { limbs: [ 0xc4f44254bfe3f098c01ebb90ee775e, 0x6d9caec03381a9ee3c0868e70f5777, 0x0043bc ] } , - BigNum { limbs: [ 0xf8afc0ab3e780e673fe1436f1188a3, 0x39b67add49c6894b9bffa0bac8addb, 0x003031 ] } , - BigNum { limbs: [ 0xfddd235c7a98ac608be7900aae3100, 0xa244819154424d60ebf9f5ac99f13f, 0x005cb7 ] } , - BigNum { limbs: [ 0xbfc6dfa383c3529f74186ef551cf01, 0x050ea80c2905e5d8ec0e13f53e1413, 0x001736 ] } , - BigNum { limbs: [ 0x4a0fd486334f79d808d5c0d3ae1f12, 0x9daab2457724a2a6708e58d280c315, 0x005ac9 ] } , - BigNum { limbs: [ 0x73942e79cb0c8527f72a3e2c51e0ef, 0x09a87758062390936779b0cf57423e, 0x001924 ] } , - BigNum { limbs: [ 0xea8c83047a0348092bc156145ae3be, 0x6498d3d08cd0b43f4591e262934f10, 0x001299 ] } , - BigNum { limbs: [ 0xd3177ffb8458b6f6d43ea8eba51c43, 0x42ba55ccf0777efa9276273f44b642, 0x006154 ] } , - BigNum { limbs: [ 0xc9e71e9ad981f3f9bee777f505a670, 0xa66cf5599656047e8cec0c7be22c07, 0x0015ed ] } , - BigNum { limbs: [ 0xf3bce46524da0b064118870afa5991, 0x00e63443e6f22ebb4b1bfd25f5d94b, 0x005e00 ] } , - BigNum { limbs: [ 0xaa95c116471933d23a4a114812d636, 0x1521f33b59d5e1255a25981421ff14, 0x0052c0 ] } , - BigNum { limbs: [ 0x130e41e9b742cb2dc5b5edb7ed29cb, 0x92313662237252147de2718db6063f, 0x00212d ] } , - BigNum { limbs: [ 0xd54a83f5ca1be3e25cfe9c39fa442b, 0xf39fdb8f4cc1ff72289a55de1ef66f, 0x003042 ] } , - BigNum { limbs: [ 0xe8597f0a34401b1da30162c605bbd6, 0xb3b34e0e308633c7af6db3c3b90ee3, 0x0043aa ] } , - BigNum { limbs: [ 0x6df133f7321a25f20ce8d579e35cee, 0xa3f774f19f1ff7a8b04d2828931d48, 0x0018c6 ] } , - BigNum { limbs: [ 0x4fb2cf08cc41d90df31729861ca313, 0x035bb4abde283b9127bae17944e80b, 0x005b27 ] } , - BigNum { limbs: [ 0x0f9d3b81d8d23eded4a5f256a9c7fa, 0xe84cc460e97596051ddbd646a327cd, 0x00211d ] } , - BigNum { limbs: [ 0xae06c77e2589c0212b5a0ca9563807, 0xbf06653c93d29d34ba2c335b34dd86, 0x0052cf ] } , - BigNum { limbs: [ 0x6d32c4bc785ddf8f84dcc764345e6f, 0x440f93c3062bad415ce2d67286aaff, 0x005d3d ] } , - BigNum { limbs: [ 0x50713e4385fe1f707b23379bcba192, 0x634395da771c85f87b25332f515a54, 0x0016b0 ] } , - BigNum { limbs: [ 0x65f7f950b8ea85342030e7ba39b3a6, 0x509b496b983f565de17858f422f2df, 0x002b01 ] } , - BigNum { limbs: [ 0x57ac09af457179cbdfcf1745c64c5b, 0x56b7e031e508dcdbf68fb0adb51274, 0x0048ec ] } , - BigNum { limbs: [ 0x0cf136ceac4b7be81282d9762849c5, 0x475dcfa943c0ac10e91b6361e98f4d, 0x004e05 ] } , - BigNum { limbs: [ 0xb0b2cc3152108317ed7d2589d7b63c, 0x5ff559f439878728eeeca63fee7606, 0x0025e8 ] } , - BigNum { limbs: [ 0xf5a38f02d0d9e3f6e035ff20282882, 0x92eb3eb00addf10be3c3f4a15ce3d9, 0x004f48 ] } , - BigNum { limbs: [ 0xc80073fd2d821b091fc9ffdfd7d77f, 0x1467eaed726a422df44415007b2179, 0x0024a5 ] } , - BigNum { limbs: [ 0x15abe4dc2aec8fda060609b2b47d85, 0x138145182f544c8a68d80bcba67af2, 0x0069de ] } , - BigNum { limbs: [ 0xa7f81e23d36f6f25f9f9f54d4b827c, 0x93d1e4854df3e6af6f2ffdd6318a61, 0x000a0f ] } , - BigNum { limbs: [ 0x1876aef7cc205e21ae42d827deca30, 0x6f29f2073a63626669c7c06691d161, 0x0010c7 ] } , - BigNum { limbs: [ 0xa52d5408323ba0de51bd26d82135d1, 0x3829379642e4d0d36e40493b4633f2, 0x006326 ] } , - BigNum { limbs: [ 0xd8e98cba8c851f53dbcceebb1aec4c, 0x7da509b2c067c30ab0c323dcd93343, 0x005edb ] } , - BigNum { limbs: [ 0xe4ba764571d6dfac24331044e513b5, 0x29ae1feabce0702f2744e5c4fed20f, 0x001512 ] } , - BigNum { limbs: [ 0x34466bd37b654e75fbe2738ef6ec21, 0xf7bdf6d2576613871ea55580a605e5, 0x002f9e ] } , - BigNum { limbs: [ 0x895d972c82f6b08a041d8b710913e0, 0xaf9532cb25e21fb2b962b42131ff6e, 0x00444e ] } , - BigNum { limbs: [ 0xe3d5c95963601cef87c9f995096338, 0x788108ad69a5b53f9e776978ee912d, 0x0022c0 ] } , - BigNum { limbs: [ 0xd9ce39a69afbe2107836056af69cc9, 0x2ed220f013a27dfa3990a028e97425, 0x00512d ] } , - BigNum { limbs: [ 0xa52764195066cb368bf892d23cfbea, 0x4ffc4e3af3f346bc2d29fe6ef3b600, 0x0000a1 ] } , - BigNum { limbs: [ 0x187c9ee6adf533c974076c2dc30417, 0x5756db628954ec7daade0b32e44f53, 0x00734c ] } , - BigNum { limbs: [ 0xe7644948035d564c122ce446b3b25c, 0xf7e46fad681a2e91cb91310e85e484, 0x003e4b ] } , - BigNum { limbs: [ 0xd63fb9b7fafea8b3edd31ab94c4da5, 0xaf6eb9f0152e04a80c76d8935220ce, 0x0035a1 ] } , - BigNum { limbs: [ 0xf2d9bfd5140d699cc42e43382e70a4, 0x083148cb1058349ee0fb910de629c0, 0x001bdd ] } , - BigNum { limbs: [ 0xcaca432aea4e95633bd1bbc7d18f5d, 0x9f21e0d26ceffe9af70c7893f1db92, 0x005810 ] } , - BigNum { limbs: [ 0xff8a227dfd1dec38fa67bcd4f84471, 0xbd7da7f332978a73656310ab4c6c08, 0x0066e4 ] } , - BigNum { limbs: [ 0xbe19e082013e12c70598422b07bb90, 0xe9d581aa4ab0a8c672a4f8f68b994a, 0x000d08 ] } , - BigNum { limbs: [ 0xdac5574c6b36285f26172cbdae7696, 0x467880c3870fe5f29a8023d2eb1261, 0x001a74 ] } , - BigNum { limbs: [ 0xe2deabb39325d6a0d9e8d24251896b, 0x60daa8d9f6384d473d87e5ceecf2f1, 0x005979 ] } , - BigNum { limbs: [ 0x092a39c6a48f459c533e348b6eff5f, 0x1db7d0376a78528b2ecd3ea8ae6c56, 0x0011e5 ] } , - BigNum { limbs: [ 0xb479c93959ccb963acc1ca749100a2, 0x899b596612cfe0aea93acaf92998fd, 0x006208 ] } , - BigNum { limbs: [ 0x209c683b1f1277f13eb4a91bb6a4f8, 0xdb28617d36ba715ec5ec903e27b135, 0x0051e8 ] } , - BigNum { limbs: [ 0x9d079ac4df49870ec14b55e4495b09, 0xcc2ac820468dc1db121b7963b0541e, 0x002204 ] } , - BigNum { limbs: [ 0x39d9bec3468ebe119a0380eb0bbdd4, 0xf5fcf2b2518e4d3d9ef4fd3ca74c1a, 0x00493d ] } , - BigNum { limbs: [ 0x83ca443cb7cd40ee65fc7e14f4422d, 0xb15636eb2bb9e5fc39130c6530b939, 0x002aaf ] } , - BigNum { limbs: [ 0xc036c97cdeccdb1309e8f8e477af4b, 0x633fec31a36e9a52920637cefbb3a0, 0x0053b9 ] } , - BigNum { limbs: [ 0xfd6d39831f8f23ecf617061b8850b6, 0x44133d6bd9d998e74601d1d2dc51b2, 0x002034 ] } , - BigNum { limbs: [ 0xb83acfc8e1fc9f12f727121ee0964a, 0x4d4c275307f975b7d7ce0cb29b36bc, 0x0017fa ] } , - BigNum { limbs: [ 0x056933371c5f5fed08d8ece11f69b7, 0x5a07024a754ebd820039fcef3cce97, 0x005bf3 ] } , - BigNum { limbs: [ 0x59be7af6c293cfd283f3b304941cef, 0x20f7ffe182d1e66aa095c3e85fc919, 0x0072b6 ] } , - BigNum { limbs: [ 0x63e588093bc82f2d7c0c4bfb6be312, 0x865b29bbfa764ccf377245b9783c3a, 0x000137 ] } , - BigNum { limbs: [ 0x03249c8429f87e6844532496014769, 0xf040e1fdfca4b40f89ddd68b08bfde, 0x000116 ] } , - BigNum { limbs: [ 0xba7f667bd4638097bbacda69feb898, 0xb712479f80a37f2a4e2a3316cf4575, 0x0072d6 ] } , - BigNum { limbs: [ 0x9356da41aa6f8f02e7836bb3ab600d, 0x64c674e3478a1a81fdfbfaf9e23819, 0x00690f ] } , - BigNum { limbs: [ 0x2a4d28be53ec6ffd187c934c549ff4, 0x428cb4ba35be18b7da0c0ea7f5cd3a, 0x000ade ] } , - BigNum { limbs: [ 0xcf83fe0ae1e6a534ea9661ff26117d, 0xfe13068acf76d38555ddf2b6be9f66, 0x005e47 ] } , - BigNum { limbs: [ 0xee2004f51c7559cb15699d00d9ee84, 0xa9402312add15fb4822a16eb1965ec, 0x0015a5 ] } , - BigNum { limbs: [ 0xad1740d605853de7454aa702a3c258, 0x76c88e274f02c447c149769ccad950, 0x0000a0 ] } , - BigNum { limbs: [ 0x108cc229f8d6c118bab557fd5c3da9, 0x308a9b762e456ef216be93050d2c03, 0x00734d ] } , - BigNum { limbs: [ 0xaec3d9a57ccd3297472f2054fecfd5, 0xb9661959f10d1a81eafd4497a5304a, 0x0054dd ] } , - BigNum { limbs: [ 0x0ee0295a818ecc68b8d0deab01302c, 0xeded10438c3b18b7ed0ac50a32d509, 0x001f0f ] } , - BigNum { limbs: [ 0xd7652e15e99c4fa549c326bd5ec839, 0x7e6d3b984ce333a79fcc2c033c1a9e, 0x0029e0 ] } , - BigNum { limbs: [ 0xe63ed4ea14bfaf5ab63cd842a137c8, 0x28e5ee053064ff92383bdd9e9beab4, 0x004a0d ] } , - BigNum { limbs: [ 0x4c88ff93efa64a2f0a407c5295fb98, 0xfac010dea4409740b7a0a0fd537819, 0x005882 ] } , - BigNum { limbs: [ 0x711b036c0eb5b4d0f5bf82ad6a0469, 0xac9318bed9079bf9206768a4848d3a, 0x001b6a ] } , - BigNum { limbs: [ 0x5e84d56af0f9ca4f7f8d52f0dc3992, 0x3119b933616cdbe1801187d7696ce6, 0x001772 ] } , - BigNum { limbs: [ 0x5f1f2d950d6234b08072ac0f23c66f, 0x7639706a1bdb575857f681ca6e986d, 0x005c7b ] } , - BigNum { limbs: [ 0x1f60d0941e92cd6a0c566da29d6b4e, 0x36ed69e2548982af2ca67090f30a51, 0x0007ca ] } , - BigNum { limbs: [ 0x9e43326bdfc93195f3a9915d6294b3, 0x7065bfbb28beb08aab619910e4fb02, 0x006c23 ] } , - BigNum { limbs: [ 0xe983b035dd777461db389f0c72ef67, 0xaaa63a9561e15c725eab59b885b4dc, 0x000a23 ] } , - BigNum { limbs: [ 0xd42052ca20e48a9e24c75ff38d109a, 0xfcacef081b66d6c7795cafe9525076, 0x0069c9 ] } , - BigNum { limbs: [ 0x1026bb7cc4a92cb1a5916f0c03c77e, 0x52872cea0502fba135f7b61b767f8b, 0x00673d ] } , - BigNum { limbs: [ 0xad7d478339b2d24e5a6e8ff3fc3883, 0x54cbfcb378453798a21053866185c8, 0x000cb0 ] } , - BigNum { limbs: [ 0xcc96ca4f8ddbb2b42b0658a8edfb6b, 0x43de3052b6648a3783538c1c28ad2f, 0x005c9c ] } , - BigNum { limbs: [ 0xf10d38b070804c4bd4f9a657120496, 0x6374f94ac6e3a90254b47d85af5823, 0x001751 ] } , - BigNum { limbs: [ 0xf152a3c0f1c231ff49725a1870375c, 0xf7d3c4edc935ffc2941254837a46d2, 0x006b82 ] } , - BigNum { limbs: [ 0xcc515f3f0c99cd00b68da4e78fc8a5, 0xaf7f64afb412337743f5b51e5dbe80, 0x00086a ] } , - BigNum { limbs: [ 0x9f913cac2cc77977ee6e82bfd3a1f9, 0xad1a0314eff2961eaed1c485488a76, 0x00706e ] } , - BigNum { limbs: [ 0x1e12c653d194858811917c402c5e08, 0xfa3926888d559d1b2936451c8f7add, 0x00037e ] } , - BigNum { limbs: [ 0x2ae97a5238177d86f50a21463dd536, 0x89498b4a364c53f06d7099b29ccb04, 0x004723 ] } , - BigNum { limbs: [ 0x92ba88adc64481790af5ddb9c22acb, 0x1e099e5346fbdf496a976fef3b3a4f, 0x002cca ] } , - BigNum { limbs: [ 0xb3b215b2a1cb8a7d5e2afb958221be, 0xa16e424912fc4b00c302811881c325, 0x0021e9 ] } , - BigNum { limbs: [ 0x09f1ed4d5c907482a1d5036a7dde43, 0x05e4e7546a4be8391505888956422e, 0x005204 ] } , - BigNum { limbs: [ 0x4e85ecd63f5c377a6298c0d8230e4f, 0x740ddd00e10d2b0611c4592c433219, 0x0062fa ] } , - BigNum { limbs: [ 0x6f1e1629beffc7859d673e27dcf1b2, 0x33454c9c9c3b0833c643b07594d33a, 0x0010f3 ] } , - BigNum { limbs: [ 0xe9678b025e60f28b161ada6afe9538, 0xf7a59a09cbe80551530ffb9aa031dd, 0x0027b8 ] } , - BigNum { limbs: [ 0xd43c77fd9ffb0c74e9e52495016ac9, 0xafad8f93b1602de884f80e0737d375, 0x004c34 ] } , - BigNum { limbs: [ 0x7ff15c409eef5bc3a92ef2ca3fd8cc, 0xfb4c9980bb944a5586179e02d5dc88, 0x004869 ] } , - BigNum { limbs: [ 0x3db2a6bf5f6ca33c56d10c35c02735, 0xac06901cc1b3e8e451f06b9f0228cb, 0x002b83 ] } , - BigNum { limbs: [ 0x85709d15b42a3e0c14b9b4139f47cc, 0xb392702c989dd317c3b03bc4cc00cc, 0x006104 ] } , - BigNum { limbs: [ 0x383365ea4a31c0f3eb464aec60b835, 0xf3c0b970e4aa60221457cddd0c0487, 0x0012e8 ] } , - BigNum { limbs: [ 0xd0d4498d8b5ced307b71c0af325c62, 0x9d954e4bc32d2071129882629c2840, 0x00278e ] } , - BigNum { limbs: [ 0xeccfb97272ff11cf848e3e50cda39f, 0x09bddb51ba1b12c8c56f873f3bdd12, 0x004c5f ] } , - BigNum { limbs: [ 0x525b7e8ba1b24d98d86a7929758ccd, 0x15da7d5d01b023f671701bbd40ca3b, 0x006b5e ] } , - BigNum { limbs: [ 0x6b4884745ca9b167279585d68a7334, 0x9178ac407b980f436697ede4973b18, 0x00088f ] } , - BigNum { limbs: [ 0x908e545d34e2793c0867a94b248b6c, 0x7d213aed98fd4b3905264a3e4317e5, 0x006bcc ] } , - BigNum { limbs: [ 0x2d15aea2c97985c3f79855b4db7495, 0x2a31eeafe44ae800d2e1bf6394ed6e, 0x000821 ] } , - BigNum { limbs: [ 0xc94cff0b73a8b9be2ad0a5f63874ba, 0xed38e13513aa7562ef27c3910418f9, 0x0056f9 ] } , - BigNum { limbs: [ 0xf45703f48ab34541d52f5909c78b47, 0xba1a4868699dbdd6e8e04610d3ec59, 0x001cf3 ] } , - BigNum { limbs: [ 0x36fe219d2f1ca32551d25163a57d86, 0xa592c8e79d78eb4ed97a2ea201b711, 0x002f18 ] } , - BigNum { limbs: [ 0x86a5e162cf3f5bdaae2dad9c5a827b, 0x01c060b5dfcf47eafe8ddaffd64e42, 0x0044d5 ] } , - BigNum { limbs: [ 0xa4784e5cefc9be2e1b980e4cafe433, 0x577770c381e5cbe1a229495b4b99c7, 0x0042db ] } , - BigNum { limbs: [ 0x192bb4a30e9240d1e467f0b3501bce, 0x4fdbb8d9fb62675835dec0468c6b8c, 0x003112 ] } , - BigNum { limbs: [ 0xb3c2c92942824865084a31ecb924fa, 0x2a1ecf656d32a30763627a6886702e, 0x001c62 ] } , - BigNum { limbs: [ 0x09e139d6bbd9b69af7b5cd1346db07, 0x7d345a381015903274a58f39519525, 0x00578b ] } , - BigNum { limbs: [ 0x3d902f03551049f127d7c393e202c0, 0xf9cfd3370d6c944417a9fc1f8cfeb5, 0x00056b ] } , - BigNum { limbs: [ 0x8013d3fca94bb50ed8283b6c1dfd41, 0xad8356666fdb9ef5c05e0d824b069e, 0x006e81 ] } , - BigNum { limbs: [ 0x4ba5d295058ca307a2b4097373ef5a, 0x85b55ab26d8ac390432f293555e2ba, 0x001d20 ] } , - BigNum { limbs: [ 0x71fe306af8cf5bf85d4bf58c8c10a7, 0x219dceeb0fbd6fa994d8e06c822299, 0x0056cd ] } , - BigNum { limbs: [ 0xc2c4351645ca60d00d8e28e597ebb9, 0x937f818d465e2b8a21cbde1084c7d2, 0x0019b8 ] } , - BigNum { limbs: [ 0xfadfcde9b8919e2ff271d61a681448, 0x13d3a81036ea07afb63c2b91533d80, 0x005a35 ] } , - BigNum { limbs: [ 0x449d265c117b30c24ac967f93d8b01, 0xb6bfa3edb16c0360158fd6702a37e9, 0x00141f ] } , - BigNum { limbs: [ 0x7906dca3ece0ce3db5369706c27500, 0xf09385afcbdc2fd9c2783331adcd6a, 0x005fcd ] } , - BigNum { limbs: [ 0x3651759b44053677b99f0eca393e84, 0xa01b180d7fc3a4c3b9f74a56ca0543, 0x00077b ] } , - BigNum { limbs: [ 0x87528d64ba56c8884660f035c6c17d, 0x0738118ffd848e761e10bf4b0e0010, 0x006c72 ] } , - BigNum { limbs: [ 0x5c324df87197f007401cd383ea6433, 0x19ddb92d997b13b0e0ff9f159f428e, 0x006b23 ] } , - BigNum { limbs: [ 0x6171b5078cc40ef8bfe32b7c159bce, 0x8d75706fe3cd1f88f7086a8c38c2c5, 0x0008ca ] } , - BigNum { limbs: [ 0xa3ed8c7d553c366294367b3eef0647, 0x6b11dbd832ff1fb4c9583417520f25, 0x0008b2 ] } , - BigNum { limbs: [ 0x19b67682a91fc89d6bc983c110f9ba, 0x3c414dc54a4913850eafd58a85f62e, 0x006b3b ] } , - BigNum { limbs: [ 0x9f779c216532e9654dff9acfc27353, 0xbb20340e48cb13a9b86723f41d63bd, 0x002365 ] } , - BigNum { limbs: [ 0x1e2c66de9929159ab20064303d8cae, 0xec32f58f347d1f901fa0e5adbaa196, 0x005087 ] } , - BigNum { limbs: [ 0x4badbde5b349d3512f0d5b5d19ba24, 0x6365555433d7803a1a95d55fc37552, 0x004e56 ] } , - BigNum { limbs: [ 0x71f6451a4b122baed0f2a3a2e645dd, 0x43edd4494970b2ffbd723442149001, 0x002597 ] } , - BigNum { limbs: [ 0x0acf4a881882c49d95b848783baff6, 0x6ef4daa39a3398ecd2bc6003abf49e, 0x004b0e ] } , - BigNum { limbs: [ 0xb2d4b877e5d93a626a47b687c4500b, 0x385e4ef9e3149a4d054ba99e2c10b5, 0x0028df ] } , - BigNum { limbs: [ 0xff7db1e208ca5762d37d2f50142c1d, 0x1798ccc9781075e48186a0f936f2f9, 0x00655b ] } , - BigNum { limbs: [ 0xbe26511df591a79d2c82cfafebd3e4, 0x8fba5cd40537bd55568168a8a11259, 0x000e92 ] } , - BigNum { limbs: [ 0xe4385aa59379304eb87f06f3052074, 0xb8a802a174ea379ba1457efc2e2881, 0x0011f9 ] } , - BigNum { limbs: [ 0xd96ba85a6ae2ceb14780f80cfadf8d, 0xeeab26fc085dfb9e36c28aa5a9dcd1, 0x0061f3 ] } , - BigNum { limbs: [ 0xec510028ee108633efbda071957818, 0x8ee91d8b9f540e171f160493e14fee, 0x0003a1 ] } , - BigNum { limbs: [ 0xd15302d7104b78cc10425e8e6a87e9, 0x186a0c11ddf42522b8f2050df6b564, 0x00704c ] } , - BigNum { limbs: [ 0xa7bbb5ec527557ba4fa14e54bbedf6, 0x417cb0e82b9ffd191ef6acc3e59f9d, 0x000c5e ] } , - BigNum { limbs: [ 0x15e84d13abe6a745b05eb0ab44120b, 0x65d678b551a83620b9115cddf265b6, 0x00678f ] } , - BigNum { limbs: [ 0xc024153f96227a1683c9b2579ec673, 0x898d8eda40f85e2f7f8a626b1f2011, 0x0035fc ] } , - BigNum { limbs: [ 0xfd7fedc0683984e97c364ca861398e, 0x1dc59ac33c4fd50a587da736b8e541, 0x003df1 ] } , - BigNum { limbs: [ 0xe952a25430c3b9c15e92b69fb876f2, 0x4d58a5b97c0d1ffa0fefe7651f7418, 0x004a57 ] } , - BigNum { limbs: [ 0xd45160abcd98453ea16d486047890f, 0x59fa83e4013b133fc818223cb8913a, 0x002996 ] } , - BigNum { limbs: [ 0xc16e47ee9344e623a5a02af7352846, 0x1570af1eaed89534129c442b9b50b0, 0x0039b2 ] } , - BigNum { limbs: [ 0xfc35bb116b1718dc5a5fd408cad7bb, 0x91e27a7ece6f9e05c56bc5763cb4a2, 0x003a3b ] } , - BigNum { limbs: [ 0xc9ff6bc17ee0c0300dcd481613376a, 0xf4786d303126047688651a184c8190, 0x003750 ] } , - BigNum { limbs: [ 0xf3a4973e7f7b3ecff232b6e9ecc897, 0xb2dabc6d4c222ec34fa2ef898b83c2, 0x003c9c ] } , - BigNum { limbs: [ 0xe47938602798ee2feabcab1eb5c580, 0x8bd6fa1e279cd00145595a25cf22fa, 0x000af4 ] } , - BigNum { limbs: [ 0xd92aca9fd6c310d0154353e14a3a81, 0x1b7c2f7f55ab633892aeaf7c08e258, 0x0068f9 ] } , - BigNum { limbs: [ 0x82450dbe073be8162efe65f1c2b990, 0xe506ed3420bd548b26494c5a621e78, 0x002335 ] } , - BigNum { limbs: [ 0x3b5ef541f72016e9d101990e3d4671, 0xc24c3c695c8adeaeb1bebd4775e6db, 0x0050b7 ] } , - BigNum { limbs: [ 0x1a903d8f52d2a90dff66838d9c7fbd, 0x8a08974d8c1bf1ec877e19a187e39b, 0x004c87 ] } , - BigNum { limbs: [ 0xa313c570ab8955f200997b72638044, 0x1d4a924ff12c414d5089f0005021b8, 0x002766 ] } , - BigNum { limbs: [ 0x96c3746709260726d987fa9e3bbed3, 0xa27be85055e8b203921cd6971c63e4, 0x004e25 ] } , - BigNum { limbs: [ 0x26e08e98f535f7d926780461c4412e, 0x04d7414d275f813645eb330abba16f, 0x0025c8 ] } , - BigNum { limbs: [ 0xbdee817f227e486819b9b9795c3e0f, 0x00154a61744cbb7789c88db15913ad, 0x000d03 ] } , - BigNum { limbs: [ 0xffb58180dbddb697e6464586a3c1f2, 0xa73ddf3c08fb77c24e3f7bf07ef1a5, 0x0066ea ] } , - BigNum { limbs: [ 0x07a6e79adda5afa3109ba77f2518c7, 0x867bd40a744e3d649126de0af18e82, 0x0063ea ] } , - BigNum { limbs: [ 0xb5fd1b6520b64f5cef645780dae73a, 0x20d7559308f9f5d546e12b96e676d1, 0x001003 ] } , - BigNum { limbs: [ 0x5b78d7ad57b0f38547116436757283, 0xfdd66062acb5a269327c0efa5e5c8c, 0x004514 ] } , - BigNum { limbs: [ 0x622b2b52a6ab0b7ab8ee9ac98a8d7e, 0xa97cc93ad09290d0a58bfaa779a8c7, 0x002ed8 ] } , - BigNum { limbs: [ 0xa56f61a006515a17be1566d99a7483, 0x4f501ad75aad02dac68288140c42da, 0x0043c5 ] } , - BigNum { limbs: [ 0x1834a15ff80aa4e841ea9826658b7e, 0x58030ec6229b305f1185818dcbc279, 0x003028 ] } , - BigNum { limbs: [ 0x065584e021791f1391419338a0badc, 0xe82a30c630237655b39804b4c4a0e3, 0x003951 ] } , - BigNum { limbs: [ 0xb74e7e1fdce2dfec6ebe6bc75f4525, 0xbf28f8d74d24bce4247004ed136470, 0x003a9b ] } , - BigNum { limbs: [ 0xf92ae474cef12d5145aca500592c77, 0x9d1eaf1c0b155b90729187a8961bf7, 0x000c7c ] } , - BigNum { limbs: [ 0xc4791e8b2f6ad1aeba5359ffa6d38a, 0x0a347a817232d7a9657681f941e95b, 0x006771 ] } , - BigNum { limbs: [ 0x97eb526090f342f807dc397d6d14ee, 0x13ef0677dcd750c7a1520e76702560, 0x00627c ] } , - BigNum { limbs: [ 0x25b8b09f6d68bc07f823c58292eb13, 0x93642325a070e27236b5fb2b67dff3, 0x001171 ] } , - BigNum { limbs: [ 0x94ea7f998e3036d6bed2498a5d8638, 0x448b1d5cbea6dfc72166834e512278, 0x003922 ] } , - BigNum { limbs: [ 0x28b98366702bc829412db575a279c9, 0x62c80c40bea15372b6a1865386e2db, 0x003acb ] } , - BigNum { limbs: [ 0xff614331a1c5ee416c0cec37d6d1e3, 0x358697a1948bdde939ccba7d1a0b56, 0x006912 ] } , - BigNum { limbs: [ 0xbe42bfce5c9610be93f312c8292e1e, 0x71cc91fbe8bc55509e3b4f24bdf9fc, 0x000adb ] } , - BigNum { limbs: [ 0xf453443751352cd5ec27c20801dd0c, 0xe39b16faf7c46cc7ac221e46db195c, 0x005428 ] } , - BigNum { limbs: [ 0xc950bec8ad26d22a13d83cf7fe22f5, 0xc3b812a28583c6722be5eb5afcebf6, 0x001fc4 ] } , - BigNum { limbs: [ 0x55db26760dbddac00db50a8b455478, 0xd94bd5ed9311a8d9ff5e4d8aea5817, 0x001b03 ] } , - BigNum { limbs: [ 0x67c8dc89f09e243ff24af474baab89, 0xce0753afea368a5fd8a9bc16edad3c, 0x0058e9 ] } , - BigNum { limbs: [ 0x49b65c7d1fed03f5b384a538296000, 0x7c3942fa7cfd9aed68d099c5eb4e62, 0x006288 ] } , - BigNum { limbs: [ 0x73eda682de6efb0a4c7b59c7d6a001, 0x2b19e6a3004a984c6f376fdbecb6f1, 0x001165 ] } , - BigNum { limbs: [ 0x3a5b42deb5e4c1b66d42eea88ef658, 0xd75572234819e092ac4898119b265f, 0x0020b2 ] } , - BigNum { limbs: [ 0x8348c02148773d4992bd10577109a9, 0xcffdb77a352e52a72bbf71903cdef4, 0x00533a ] } , - BigNum { limbs: [ 0x9789fe6f5e6d87ec21011e1910e3f6, 0xddfe267b290a0c6b6dbfa5a338e877, 0x0062a3 ] } , - BigNum { limbs: [ 0x261a04909fee7713defee0e6ef1c0b, 0xc9550322543e26ce6a4863fe9f1cdc, 0x001149 ] } , - BigNum { limbs: [ 0x4759df07c81cf588e130df905786d7, 0xe1eeb4fc8bcd8ed5ffac85a790ec7a, 0x000af2 ] } , - BigNum { limbs: [ 0x764a23f8363f09771ecf1f6fa8792a, 0xc56474a0f17aa463d85b83fa4718d9, 0x0068fa ] } , - BigNum { limbs: [ 0x5186929cb753ce8a84298fd3ddf34c, 0xba25714e3e69008fab821a3ee08d64, 0x006086 ] } , - BigNum { limbs: [ 0x6c1d7063470830757bd66f2c220cb5, 0xed2db84f3edf32aa2c85ef62f777ef, 0x001366 ] } , - BigNum { limbs: [ 0xe7a0348b8faec254f0afb89d963fea, 0x64ab3a29297f3027fbcec0f933fe6b, 0x003eee ] } , - BigNum { limbs: [ 0xd603ce746ead3cab0f50466269c017, 0x42a7ef7453c90311dc3948a8a406e7, 0x0034ff ] } , - BigNum { limbs: [ 0x3b845b65ff13ce04b81c740d89cb54, 0xd4ceaa3502758601997f45fa4a4b00, 0x0049b8 ] } , - BigNum { limbs: [ 0x821fa799ff4830fb47e38af27634ad, 0xd2847f687ad2ad383e88c3a78dba53, 0x002a34 ] } , - BigNum { limbs: [ 0xe365db905d5bbf2f11ec355270b1d7, 0x6c686f4d606c07c39a15c300ab83e5, 0x004b5f ] } , - BigNum { limbs: [ 0xda3e276fa1003fd0ee13c9ad8f4e2a, 0x3aeaba501cdc2b763df246a12c816d, 0x00288e ] } , - BigNum { limbs: [ 0xe2d540a29e52cd9cab5805fc609431, 0xba317c9334f608b7a43373d7cd3962, 0x006450 ] } , - BigNum { limbs: [ 0xdacec25d6009316354a7f9039f6bd0, 0xed21ad0a48522a8233d495ca0acbf0, 0x000f9c ] } , - BigNum { limbs: [ 0x2b493a84dfb36896b6a5c9464cd413, 0x24db15ec7c17375f6988a630da2245, 0x006eb6 ] } , - BigNum { limbs: [ 0x925ac87b1ea89669495a35b9b32bee, 0x827813b10130fbda6e7f6370fde30e, 0x000537 ] } , - BigNum { limbs: [ 0x9b4d224b0528c83d046a082716bcad, 0x86515fbcd4407b19ef363b2e531257, 0x002064 ] } , - BigNum { limbs: [ 0x2256e0b4f93336c2fb95f6d8e94354, 0x2101c9e0a907b81fe8d1ce7384f2fc, 0x005389 ] } , - BigNum { limbs: [ 0xeb12eb2761d20c77841793f2e1f3bd, 0xf7216cd9a914d05c53c86f28bcf1f1, 0x00683d ] } , - BigNum { limbs: [ 0xd29117d89c89f2887be86b0d1e0c44, 0xb031bcc3d43362dd843f9a791b1361, 0x000baf ] } , - BigNum { limbs: [ 0x8beb6ddae7129a65bf313b1012d3c3, 0x6543cac258cb9e754890fcc1363893, 0x003e2d ] } , - BigNum { limbs: [ 0x31b895251749649a40cec3efed2c3e, 0x420f5edb247c94c48f770ce0a1ccc0, 0x0035c0 ] } , - BigNum { limbs: [ 0xedd3f0704fcd8f277505ba720effe1, 0xa8a8ede82d0fb1e20890ceda6f1723, 0x0043a3 ] } , - BigNum { limbs: [ 0xcfd0128fae8e6fd88afa448df10020, 0xfeaa3bb550388157cf773ac768ee2f, 0x003049 ] } , - BigNum { limbs: [ 0xd1ce9ac4ad54c9e879678fda473b16, 0xae4c1953da0602d3749c19fa0c5093, 0x0056cb ] } , - BigNum { limbs: [ 0xebd5683b5107351786986f25b8c4eb, 0xf9071049a3423066636befa7cbb4bf, 0x001d21 ] } , - BigNum { limbs: [ 0xa589adcd54196cf6b1a5c2e3dca6d2, 0xfd08c1065f9bee4333f2689c749b27, 0x000dba ] } , - BigNum { limbs: [ 0x181a5532aa4292094e5a3c1c23592f, 0xaa4a68971dac44f6a415a105636a2c, 0x006632 ] } , - BigNum { limbs: [ 0x2f8dfa512822d59b3f666708cf6ab9, 0xd0072ac754cfe2a8f07114efb1bbae, 0x002c53 ] } , - BigNum { limbs: [ 0x8e1608aed6392964c09997f7309548, 0xd74bfed628785090e796f4b22649a5, 0x004799 ] } , - BigNum { limbs: [ 0xc31a16ae503a1dbb4d3aef9624f018, 0xe6e12b03a3ac400f72460d090590de, 0x004c37 ] } , - BigNum { limbs: [ 0xfa89ec51ae21e144b2c50f69db0fe9, 0xc071fe99d99bf32a65c1fc98d27474, 0x0027b5 ] } , - BigNum { limbs: [ 0x8cd6fdc62b7832b8bc7c0276b4eb5c, 0x0c57398282e4d2ba7b1aeab16b3187, 0x004445 ] } , - BigNum { limbs: [ 0x30cd0539d2e3cc474383fc894b14a5, 0x9afbf01afa63607f5ced1ef06cd3cc, 0x002fa8 ] } , - BigNum { limbs: [ 0x56f9dc800d97f131c91d435c7c321f, 0xe64eb0a6f68528607cdf9e439ef7d2, 0x00469d ] } , - BigNum { limbs: [ 0x66aa267ff0c40dce36e2bba383cde2, 0xc10478f686c30ad95b286b5e390d81, 0x002d4f ] } , - BigNum { limbs: [ 0x4b10df195a1e62c5f3a1fed8434f96, 0x7b876a5c766a1e9f60b772f6f9d3e6, 0x000afd ] } , - BigNum { limbs: [ 0x729323e6a43d9c3a0c5e0027bcb06b, 0x2bcbbf4106de149a775096aade316d, 0x0068f0 ] } , - BigNum { limbs: [ 0xfbd130f283c5b69e922efa201850aa, 0x6ccf34bf27600b6ce3857940d09152, 0x001f8c ] } , - BigNum { limbs: [ 0xc1d2d20d7a9648616dd104dfe7af57, 0x3a83f4de55e827ccf4829061077400, 0x005461 ] } , - BigNum { limbs: [ 0xa6a757eea27f2fa9af23aa807c2be1, 0x059ee3a1b642e96a613abae5c1d9bc, 0x005306 ] } , - BigNum { limbs: [ 0x16fcab115bdccf5650dc547f83d420, 0xa1b445fbc70549cf76cd4ebc162b97, 0x0020e7 ] } , - BigNum { limbs: [ 0xec67bec93ed7b8fcc288eadc69885e, 0xb2024f06f16a517e48c887951e3cc8, 0x004547 ] } , - BigNum { limbs: [ 0xd13c4436bf8446033d7714239677a3, 0xf550da968bdde1bb8f3f820cb9c88a, 0x002ea5 ] } , - BigNum { limbs: [ 0x2257110db62c1989285663ad98ee1f, 0x5151c6756d96e98d0ff23a9eb5a0ae, 0x0020d4 ] } , - BigNum { limbs: [ 0x9b4cf1f2482fe576d7a99b526711e2, 0x560163280fb149acc815cf032264a5, 0x005319 ] } , - BigNum { limbs: [ 0x0edb74177d38a4ad4cd59e471baa4d, 0x9e2545372c7b28f86f4786ee953296, 0x006cfe ] } , - BigNum { limbs: [ 0xaec88ee881235a52b32a60b8e455b4, 0x092de46650cd0a4168c082b342d2bd, 0x0006ef ] } , - BigNum { limbs: [ 0x412dab573abf941818f477fd67a800, 0x9584c239f193a789079521925a487d, 0x00439b ] } , - BigNum { limbs: [ 0x7c7657a8c39c6ae7e70b8702985801, 0x11ce67638bb48bb0d072e80f7dbcd6, 0x003052 ] } , - BigNum { limbs: [ 0x7f2231c95ebaaa709feba3bd78dc6b, 0xca0f0381c911ddb1b93891f3063039, 0x0057ce ] } , - BigNum { limbs: [ 0x3e81d1369fa1548f60145b42872396, 0xdd44261bb43655881ecf77aed1d51a, 0x001c1e ] } , - BigNum { limbs: [ 0xde10ef35c170a32825b20112cdd5e9, 0xcd1b39a42a351e4dedee0a80e57d26, 0x002bd5 ] } , - BigNum { limbs: [ 0xdf9313ca3ceb5bd7da4dfded322a18, 0xda37eff9531314ebea19ff20f2882c, 0x004817 ] } , - BigNum { limbs: [ 0xdd1684a82174337180d4984f1ebc40, 0x3177280da2870d25a01bec21dfa01e, 0x002abe ] } , - BigNum { limbs: [ 0xe08d7e57dce7cb8e7f2b66b0e143c1, 0x75dc018fdac1261437ec1d7ff86534, 0x00492f ] } , - BigNum { limbs: [ 0x3d7f2a56a5a89fc8a744a668a546f7, 0x302ac56ea9dfeb1198dd3db79ebe10, 0x000a71 ] } , - BigNum { limbs: [ 0x8024d8a958b35f3758bb58975ab90a, 0x7728642ed36848283f2acbea394743, 0x00697c ] } , - BigNum { limbs: [ 0x052f439346a8b05b12288d994b4771, 0xb9bad3328e426f695c45a377ddfd7e, 0x00682e ] } , - BigNum { limbs: [ 0xb874bf6cb7b34ea4edd77166b4b890, 0xed98566aef05c3d07bc26629fa07d5, 0x000bbe ] } , - BigNum { limbs: [ 0xba62b0c4e030ef1f583b87d6ade6f9, 0x014d6c8e9858d2bbd398ad664ee592, 0x002257 ] } , - BigNum { limbs: [ 0x0341523b1e2b0fe0a7c47729521908, 0xa605bd0ee4ef607e046f5c3b891fc1, 0x005196 ] } , - BigNum { limbs: [ 0x21e6561a1920b10c72391c8a1cc159, 0x16faab48860710a81440947ef47c01, 0x0003e6 ] } , - BigNum { limbs: [ 0x9bbdace5e53b4df38dc6e275e33ea8, 0x90587e54f7412291c3c77522e38952, 0x007007 ] } , - BigNum { limbs: [ 0x8aa947145e5a1fec90dd2dde7b5bef, 0x1560147bf3b782cd30aa038c9c0d6a, 0x00520e ] } , - BigNum { limbs: [ 0x32fabbeba001df136f22d12184a412, 0x91f315218990b06ca75e06153bf7e9, 0x0021df ] } , - BigNum { limbs: [ 0x29f6779cbe3cee50df9925dcf2a32c, 0x5c422ae049929893a83fe0e4945804, 0x006de1 ] } , - BigNum { limbs: [ 0x93ad8b63401f10af2066d9230d5cd5, 0x4b10febd33b59aa62fc828bd43ad4f, 0x00060c ] } , - BigNum { limbs: [ 0x1c29ca120a5e788da46467972393bf, 0x37a599bc3caad9f3d4cbc2d492945a, 0x006d29 ] } , - BigNum { limbs: [ 0xa17a38edf3fd86725b9b9768dc6c42, 0x6fad8fe1409d5946033c46cd4570f9, 0x0006c4 ] } , - BigNum { limbs: [ 0x8bdc93a30df3b872ba7cd748c22385, 0x0d6b5a03665f72c462365d4b3dd6b5, 0x0015a8 ] } , - BigNum { limbs: [ 0x31c76f5cf068468d458327b73ddc7c, 0x99e7cf9a16e8c07575d1ac569a2e9e, 0x005e45 ] } , - BigNum { limbs: [ 0x594d11234a23b7fd8eaaee8a4332e5, 0x6bbb0c03c90c1fc1bd3e89411619ec, 0x00539f ] } , - BigNum { limbs: [ 0x6456f1dcb438470271551075bccd1c, 0x3b981d99b43c13781ac98060c1eb67, 0x00204e ] } , - BigNum { limbs: [ 0xbe36f366cdac04fe33f22717ae9a38, 0x1bf270758c7cedda892c24b801fffa, 0x001fcf ] } , - BigNum { limbs: [ 0xff6d0f9930affa01cc0dd7e85165c9, 0x8b60b927f0cb455f4edbe4e9d60558, 0x00541e ] } , - BigNum { limbs: [ 0xa2bc16d1f444dd3d8631f87a66bd9b, 0xb86c4fe25686801afb3bb037c2a2a3, 0x006d81 ] } , - BigNum { limbs: [ 0x1ae7ec2e0a1721c279ce0685994266, 0xeee6d9bb26c1b31edccc596a1562b0, 0x00066b ] } , - BigNum { limbs: [ 0x429fc4b615dc88fbaeb3bdb102cf18, 0x62c9a6820e51c2d5d0d5ef27c7e4d5, 0x003b8b ] } , - BigNum { limbs: [ 0x7b043e49e87f7604514c414efd30e9, 0x4489831b6ef6706407321a7a10207e, 0x003862 ] } , - BigNum { limbs: [ 0xf771c7881bf39e9792c9e792201cec, 0xf49510f16df834c2564b0fa575d528, 0x000708 ] } , - BigNum { limbs: [ 0xc6323b77e26860686d36176ddfe315, 0xb2be18ac0f4ffe7781bcf9fc62302a, 0x006ce4 ] } , - BigNum { limbs: [ 0x032279af1aaeba30316f6a5cbe727c, 0xe71dd75bc2ecd64c8f0c367f618e97, 0x000c66 ] } , - BigNum { limbs: [ 0xba818950e3ad44cfce9094a3418d85, 0xc0355241ba5b5ced48fbd3227676bc, 0x006786 ] } , - BigNum { limbs: [ 0x95285f31f3aad9c2b862b5a29aa404, 0x4aebd7d15d91b9f6a3756239a7394f, 0x005c5c ] } , - BigNum { limbs: [ 0x287ba3ce0ab1253d479d495d655bfd, 0x5c6751cc1fb679433492a76830cc04, 0x001791 ] } , - BigNum { limbs: [ 0x5e256b68b3e8a4cd3a2a932e00323d, 0x168e51f06071676c71539cd85de38c, 0x001e97 ] } , - BigNum { limbs: [ 0x5f7e97974a735a32c5d56bd1ffcdc4, 0x90c4d7ad1cd6cbcd66b46cc97a21c7, 0x005556 ] } , - BigNum { limbs: [ 0x87e437986d307d92538c02aa2f6e16, 0xb672f7fb05252c5e0d6a5b267af071, 0x006080 ] } , - BigNum { limbs: [ 0x35bfcb67912b816dac73fc55d091eb, 0xf0e031a2782306dbca9dae7b5d14e2, 0x00136c ] } , - BigNum { limbs: [ 0x0c2482681b3eecc7d230d176d2502b, 0xd166744e9433dbc0ece48bd069c490, 0x005a31 ] } , - BigNum { limbs: [ 0xb17f8097e31d12382dcf2d892dafd6, 0xd5ecb54ee9145778eb237dd16e40c3, 0x0019bb ] } , - BigNum { limbs: [ 0x86b8b99e949a02a08d6542914ee68a, 0x2a3b847f9576527c4feb08776b8971, 0x001129 ] } , - BigNum { limbs: [ 0x36eb496169c1fc5f729abc6eb11977, 0x7d17a51de7d1e0bd881d012a6c7be2, 0x0062c4 ] } , - BigNum { limbs: [ 0x4dcb7d01ac2baaa6a808ecba9ac50b, 0x596e3a73a678b5b2804924315b5201, 0x002545 ] } , - BigNum { limbs: [ 0x6fd885fe5230545957f71245653af6, 0x4de4ef29d6cf7d8757bee5707cb352, 0x004ea8 ] } , - BigNum { limbs: [ 0xac76cc4049dd79650254e725ec2473, 0x0e33010313dbc8d859f57cc1de01fe, 0x005030 ] } , - BigNum { limbs: [ 0x112d36bfb47e859afdab17da13db8e, 0x9920289a696c6a617e128cdffa0355, 0x0023bd ] } , - BigNum { limbs: [ 0x998959ee6be9e2410139dd5d09fffd, 0xf17cbc4b985729a80acaddf2df26ce, 0x001503 ] } , - BigNum { limbs: [ 0x241aa91192721cbefec621a2f60004, 0xb5d66d51e4f10991cd3d2baef8de85, 0x005ee9 ] } , - BigNum { limbs: [ 0x71139ca7d67729c5bde460a2bdde47, 0x104a66cf8ad94927833498c5a6b856, 0x002bf7 ] } , - BigNum { limbs: [ 0x4c90665827e4d53a421b9e5d4221ba, 0x9708c2cdf26eea1254d370dc314cfd, 0x0047f6 ] } , - BigNum { limbs: [ 0x8b90011d36f27ab1f8b0fada34ec97, 0xa849a2a72f072104cea55f96f8dc55, 0x0036a4 ] } , - BigNum { limbs: [ 0x321401e2c769844e074f0425cb136a, 0xff0986f64e4112350962aa0adf28fe, 0x003d48 ] } , - BigNum { limbs: [ 0xefe96b3eb765c50b865660e5468565, 0xdc08604089a07e4077bf84d06c3ecf, 0x007390 ] } , - BigNum { limbs: [ 0xcdba97c146f639f479a99e1ab97a9c, 0xcb4ac95cf3a7b4f9604884d16bc683, 0x00005c ] } , - BigNum { limbs: [ 0xdefcb7f945a2551e66a066094d7636, 0x02f3870607e14fa3bbdd211d8337d4, 0x004421 ] } , - BigNum { limbs: [ 0xdea74b06b8b9a9e1995f98f6b289cb, 0xa45fa2977566e3961c2ae88454cd7e, 0x002fcc ] } , - BigNum { limbs: [ 0x5822b64e0b9b26373a682660761944, 0xa7eef5328e8818fe26781cf3ff9137, 0x001c36 ] } , - BigNum { limbs: [ 0x65814cb1f2c0d8c8c597d89f89e6bd, 0xff64346aeec01a3bb18fecadd8741c, 0x0057b6 ] } , - BigNum { limbs: [ 0xfb335a0dcf92b2fc5c7a8d9430e9cb, 0xa76183551e88d8097dcb514c5654dd, 0x005f25 ] } , - BigNum { limbs: [ 0xc270a8f22ec94c03a385716bcf1636, 0xfff1a6485ebf5b305a3cb85581b075, 0x0014c7 ] } , - BigNum { limbs: [ 0x31363172d494c26fb839a9faf8188e, 0x2c9f639a3a5ab566a93088cd7eb1c4, 0x006c1a ] } , - BigNum { limbs: [ 0x8c6dd18d29c73c9047c6550507e773, 0x7ab3c60342ed7dd32ed780d459538f, 0x0007d3 ] } , - BigNum { limbs: [ 0xaa1c87567b5903e83915b2035faea7, 0x57b15ac7081ca9b60f8f2c9fb54863, 0x0048b0 ] } , - BigNum { limbs: [ 0x13877ba98302fb17c6ea4cfca0515a, 0x4fa1ced6752b8983c878dd0222bcf0, 0x002b3d ] } , - BigNum { limbs: [ 0xafbb716bbc387cca1310530cc044fa, 0x5601643b2882d8a0074dfb20e2d164, 0x00211f ] } , - BigNum { limbs: [ 0x0de8919442238235ecefabf33fbb07, 0x5151c56254c55a99d0ba0e80f533ef, 0x0052ce ] } , - BigNum { limbs: [ 0x10e1a8f2f64bf41a2ef73c66cbb7c6, 0x8f02f37c8d2455ee9f580df9527030, 0x00173a ] } , - BigNum { limbs: [ 0xacc25a0d08100ae5d108c29934483b, 0x18503620f023dd4b38affba8859523, 0x005cb3 ] } , - BigNum { limbs: [ 0xa6122f655c997c2d3f94e98ca49bbb, 0xde0653949e912e81c1c7698c577526, 0x00143d ] } , - BigNum { limbs: [ 0x1791d39aa1c282d2c06b15735b6446, 0xc94cd608deb704b81640a01580902d, 0x005faf ] } , - BigNum { limbs: [ 0x1124d405bf7aabdf8d55151ef4f9ec, 0xc3c3bed53d882ad9387c916f12854a, 0x002055 ] } , - BigNum { limbs: [ 0xac7f2efa3ee1532072aae9e10b0615, 0xe38f6ac83fc008609f8b7832c58009, 0x005397 ] } , - BigNum { limbs: [ 0x2c74299a10e7c95e09090a764f6390, 0xbfebc2782a92610f3e639653fe3c1c, 0x006efc ] } , - BigNum { limbs: [ 0x912fd965ed7435a1f6f6f489b09c71, 0xe767672552b5d22a99a4734dd9c937, 0x0004f0 ] } , - BigNum { limbs: [ 0x886bbc04a47c4088112f52fe2c4432, 0x3dfdc5b94c147f938adf9e252d8003, 0x006eef ] } , - BigNum { limbs: [ 0x353846fb59dfbe77eed0ac01d3bbcf, 0x695563e43133b3a64d286b7caa8550, 0x0004fe ] } , - BigNum { limbs: [ 0xbd0f5c286ae03a2c5fd0ee29a61068, 0x4b0ce3eea8ca794fdc040507aba85a, 0x003012 ] } , - BigNum { limbs: [ 0x0094a6d7937bc4d3a02f10d659ef99, 0x5c4645aed47db9e9fc04049a2c5cf9, 0x0043db ] } , - BigNum { limbs: [ 0x36b7edd690eb355bbdd1528660c72d, 0x4bd9de921697a1e738e2f329ab8e0b, 0x001152 ] } , - BigNum { limbs: [ 0x86ec15296d70c9a4422eac799f38d4, 0x5b794b0b66b091529f2516782c7748, 0x00629b ] } , - BigNum { limbs: [ 0xd72ad65f46d726783ee4e9030b121d, 0x4f5a2a19f612bc5b54bb9d04899f77, 0x0032ec ] } , - BigNum { limbs: [ 0xe6792ca0b784d887c11b15fcf4ede4, 0x57f8ff83873576de834c6c9d4e65db, 0x004101 ] } , - BigNum { limbs: [ 0xc38dc29ee64919bd5b0d2da1fdb04f, 0xadda3175e8ed6509386b35e64b9e42, 0x005508 ] } , - BigNum { limbs: [ 0xfa1640611812e542a4f2d15e024fb2, 0xf978f827945ace309f9cd3bb8c6710, 0x001ee4 ] } , - BigNum { limbs: [ 0x8e7c5ddb1443d706f0db8c7121f9f3, 0x81191b6befa46edbc381958375eb7d, 0x001666 ] } , - BigNum { limbs: [ 0x2f27a524ea1827f90f24728ede060e, 0x263a0e318da3c45e1486741e6219d6, 0x005d87 ] } , - BigNum { limbs: [ 0x362129fcf80f3a0c35fe1ecc54fea6, 0x7330eb7307e28a976c40c41df52101, 0x00446d ] } , - BigNum { limbs: [ 0x8782d903064cc4f3ca01e033ab015b, 0x34223e2a7565a8a26bc74583e2e452, 0x002f80 ] } , - BigNum { limbs: [ 0x896469b6669563c15ccddff613e6c3, 0x5ad7346c2a74d501f59804e685491d, 0x0045ad ] } , - BigNum { limbs: [ 0x343f994997c69b3ea3321f09ec193e, 0x4c7bf53152d35e37e27004bb52bc36, 0x002e40 ] } , - BigNum { limbs: [ 0x71eca35d5272bc11b2b030ee121117, 0xac36dbd7d8ed6f40d43527acf89d16, 0x004c3a ] } , - BigNum { limbs: [ 0x4bb75fa2abe942ee4d4fce11edeeea, 0xfb1c4dc5a45ac3f903d2e1f4df683d, 0x0027b2 ] } , - BigNum { limbs: [ 0x02b20f5415c8edfd3888c1a912f735, 0x7dd6b49f8d01590557dbc7ff3a72c5, 0x007263 ] } , - BigNum { limbs: [ 0xbaf1f3abe8931102c7773d56ed08cc, 0x297c74fdf046da34802c41a29d928e, 0x00018a ] } , - BigNum { limbs: [ 0x07af22564f84f8f83aecc92580b8aa, 0x5a42aef9c0269ffb74496a8aa8d45f, 0x004f6e ] } , - BigNum { limbs: [ 0xb5f4e0a9aed70607c51335da7f4757, 0x4d107aa3bd21933e63be9f172f30f4, 0x00247f ] } , - BigNum { limbs: [ 0x9c70269bbd114690350f4e3f8df6a5, 0x89e17d7aec42fb14952aba78db9462, 0x0017ca ] } , - BigNum { limbs: [ 0x2133dc64414ab86fcaf0b0c072095c, 0x1d71ac229105382542dd4f28fc70f1, 0x005c23 ] } , - BigNum { limbs: [ 0x5984f698b67a4f84e0147535fc4cc7, 0x9fb480cf1962424ccc9781abb5d4bd, 0x005cc5 ] } , - BigNum { limbs: [ 0x641f0c6747e1af7b1feb89ca03b33a, 0x079ea8ce63e5f0ed0b7087f6223096, 0x001728 ] } , - BigNum { limbs: [ 0xcc3eb7bca53cba14e4436934073cf8, 0xa29cc0a9b176bab082cf14139ca439, 0x000be1 ] } , - BigNum { limbs: [ 0xf1654b43591f44eb1bbc95cbf8c309, 0x04b668f3cbd178895538f58e3b6119, 0x00680c ] } , - BigNum { limbs: [ 0x577ec3fec64b94ffa0768034358069, 0x2f0427377bf2559ffc5a62719e22db, 0x001c74 ] } , - BigNum { limbs: [ 0x66253f0138106a005f897ecbca7f98, 0x784f02660155dd99dbada73039e278, 0x005779 ] } , - BigNum { limbs: [ 0x336422fb2484bea951fae8db934564, 0x8cfc63f4ce5809a7f4331ef665f6ff, 0x002060 ] } , - BigNum { limbs: [ 0x8a3fe004d9d74056ae0516246cba9d, 0x1a56c5a8aef02991e3d4eaab720e54, 0x00538d ] } , - BigNum { limbs: [ 0x2fee58775d07250cdf6a3a35ecf57f, 0x5f739bcb6b817b150a3d799a20a549, 0x001e1e ] } , - BigNum { limbs: [ 0x8db5aa88a154d9f32095c4ca130a82, 0x47df8dd211c6b824cdca9007b7600a, 0x0055cf ] } , - BigNum { limbs: [ 0xacd165ded9ee4bee85bd9f44eadafc, 0x8c66cae96230cc8ca46d95273f8560, 0x0043aa ] } , - BigNum { limbs: [ 0x10d29d21246db3117a425fbb152505, 0x1aec5eb41b1766ad339a747a987ff3, 0x003043 ] } , - BigNum { limbs: [ 0xa62701b792b4b927428087510b4690, 0x4dfbddaa0f7018a5f6c9d6ee753c3a, 0x000c3e ] } , - BigNum { limbs: [ 0x177d01486ba745d8bd7f77aef4b971, 0x59574bf36dd81a93e13e32b362c919, 0x0067af ] } , - BigNum { limbs: [ 0x2bb8a6efad1e27f723ac02bc953aad, 0x19512cc16fca078fe779deb9655e56, 0x0027db ] } , - BigNum { limbs: [ 0x91eb5c10513dd708dc53fc436ac554, 0x8e01fcdc0d7e2ba9f08e2ae872a6fd, 0x004c12 ] } , - BigNum { limbs: [ 0x4b2cfa769fd7090da3400381fcc74e, 0x37ba404a0d987ba20ac46f869f0e03, 0x002a5f ] } , - BigNum { limbs: [ 0x727708895e84f5f25cbffb7e0338b3, 0x6f98e9536fafb797cd439a1b38f750, 0x00498e ] } , - BigNum { limbs: [ 0x4c63965a705ecf9e985c7e18ed3d94, 0x676f45ec4c4be580c83d05f64c7819, 0x00641b ] } , - BigNum { limbs: [ 0x71406ca58dfd2f6167a380e712c26d, 0x3fe3e3b130fc4db90fcb03ab8b8d3a, 0x000fd2 ] } , - BigNum { limbs: [ 0x40a5a6bee95b75b0a24612e823d13d, 0xb243df1e9853a678f914d4d20ec0cd, 0x004d3d ] } , - BigNum { limbs: [ 0x7cfe5c411500894f5db9ec17dc2ec4, 0xf50f4a7ee4f48cc0def334cfc94486, 0x0026af ] } , - BigNum { limbs: [ 0xe486ab9c1d181d325a4c24c7ca7cc7, 0x380a113e0de0bb589129ecd866e89a, 0x0004e7 ] } , - BigNum { limbs: [ 0xd91d5763e143e1cda5b3da3835833a, 0x6f49185f6f6777e146de1cc9711cb8, 0x006f06 ] } , - BigNum { limbs: [ 0xdad8d7196fb3f65c1941863d1168cd, 0x90308f169ce69e837a858ba1f4dbec, 0x0014da ] } , - BigNum { limbs: [ 0xe2cb2be68ea808a3e6be78c2ee9734, 0x17229a86e06194b65d827dffe32966, 0x005f13 ] } , - BigNum { limbs: [ 0x74bd923dc36a592cc0d7becb4f8876, 0x61262f282dcae92f7171df3b47edda, 0x005b1b ] } , - BigNum { limbs: [ 0x48e670c23af1a5d33f284034b0778b, 0x462cfa754f7d4a0a66962a66901779, 0x0018d2 ] } , - BigNum { limbs: [ 0x6d7db0e788ca47358d0356fe5c9dd1, 0x3bf5a632c343afe3c67ccb9bc555d5, 0x004101 ] } , - BigNum { limbs: [ 0x502652187591b7ca72fca801a36230, 0x6b5d836aba048356118b3e0612af7e, 0x0032ec ] } , - BigNum { limbs: [ 0x8478c058ba081aa9a5318b553b5055, 0x204b4d180e5fafaf710124fe64cc2f, 0x00303b ] } , - BigNum { limbs: [ 0x392b42a74453e4565ace73aac4afac, 0x8707dc856ee8838a6706e4a3733924, 0x0043b2 ] } , - BigNum { limbs: [ 0xdedeaa3d44c908d6481057712b62db, 0xae5fdb8f2f3d6ddcbaedc9453e96d0, 0x001bb7 ] } , - BigNum { limbs: [ 0xdec558c2b992f629b7efa78ed49d26, 0xf8f34e0e4e0ac55d1d1a405c996e82, 0x005835 ] } , - BigNum { limbs: [ 0xc6be59ee6c4978fab7b69fb529b7e3, 0x6c09a50cc22023fa498ade54827584, 0x006aeb ] } , - BigNum { limbs: [ 0xf6e5a9119212860548495f4ad6481e, 0x3b498490bb280f3f8e7d2b4d558fce, 0x000902 ] } , - BigNum { limbs: [ 0x8f864a71161064a192553890378d77, 0x17ee086c6e073fd463744dfe796c4c, 0x004698 ] } , - BigNum { limbs: [ 0x2e1db88ee84b9a5e6daac66fc8728a, 0x8f6521310f40f3657493bba35e9907, 0x002d55 ] } , - BigNum { limbs: [ 0x9a9969bef61c7030607eed4e106241, 0xd1f0e3ff52986368034091730c6b9d, 0x000b2c ] } , - BigNum { limbs: [ 0x230a9941083f8ecf9f8111b1ef9dc0, 0xd562459e2aafcfd1d4c7782ecb99b6, 0x0068c0 ] } , - BigNum { limbs: [ 0x507e6d99ae9fb5cf3f5b54b4aec959, 0x04f0408c123beba4f8ff3b7a8c1be7, 0x00027f ] } , - BigNum { limbs: [ 0x6d2595664fbc4930c0a4aa4b5136a8, 0xa262e9116b0c4794df08ce274be96c, 0x00716e ] } , - BigNum { limbs: [ 0xd9ded9e5b846364876072015b5eb65, 0xf33c820d1972523c36cb307c474c66, 0x002c3d ] } , - BigNum { limbs: [ 0xe3c5291a4615c8b789f8deea4a149c, 0xb416a79063d5e0fda13cd92590b8ec, 0x0047af ] } , - BigNum { limbs: [ 0xeb1be306684058ab89474dafefa2eb, 0xad8e0aff72fddd5f394035f10efc55, 0x004171 ] } , - BigNum { limbs: [ 0xd2881ff9961ba65476b8b150105d16, 0xf9c51e9e0a4a55da9ec7d3b0c908fd, 0x00327b ] } , - BigNum { limbs: [ 0x254f5541ef7930a331a41b73f7abaa, 0xc571ec70792379996efebe4f0acfa9, 0x002115 ] } , - BigNum { limbs: [ 0x9854adbe0ee2ce5cce5be38c085457, 0xe1e13d2d0424b9a069094b52cd35aa, 0x0052d7 ] } , - BigNum { limbs: [ 0xb41f6fa66c6185499dc9307637db4e, 0x33aa2adfa3d536b7641585985e553c, 0x000617 ] } , - BigNum { limbs: [ 0x0984935991fa79b66236ce89c824b3, 0x73a8febdd972fc8273f2840979b017, 0x006dd6 ] } , - BigNum { limbs: [ 0xf9ceeec6dcc80182ea775599840a35, 0xfeed9f0db0a00b8ee40fc17a7860b4, 0x00597c ] } , - BigNum { limbs: [ 0xc3d514392193fd7d1588a9667bf5cc, 0xa8658a8fcca827aaf3f848275fa49e, 0x001a70 ] } , - BigNum { limbs: [ 0x7c3afc63865e0d5abea05493f97fa6, 0x8700c692c174b22a86412d8ed07cee, 0x0040a9 ] } , - BigNum { limbs: [ 0x4169069c77fdf1a5415faa6c06805b, 0x2052630abbd3810f51c6dc13078865, 0x003344 ] } , - BigNum { limbs: [ 0x6fce9cfc06ce536b61e1f83655b4f5, 0xd69266a9fcde925a42a6d3f34fed4c, 0x0040d7 ] } , - BigNum { limbs: [ 0x4dd56603f78dab949e1e06c9aa4b0c, 0xd0c0c2f38069a0df956135ae881807, 0x003315 ] } , - BigNum { limbs: [ 0x6da96883a873462ccc2c2cf47c63df, 0x9ad5a4f61993a52471a84bb496a6c3, 0x0007f6 ] } , - BigNum { limbs: [ 0x4ffa9a7c55e8b8d333d3d20b839c22, 0x0c7d84a763b48e15665fbded415e90, 0x006bf7 ] } , - BigNum { limbs: [ 0xcdadabd0b38af56c035d9eab203dbe, 0x7ca455960f91959b712aca7c881bfe, 0x0021b1 ] } , - BigNum { limbs: [ 0xeff6572f4ad10993fca26054dfc243, 0x2aaed4076db69d9e66dd3f254fe954, 0x00523c ] } , - BigNum { limbs: [ 0xe00594924fb402d6cd14fd27e25700, 0x44261676fcc9f3bc3df6273fd94bd1, 0x003186 ] } , - BigNum { limbs: [ 0xdd9e6e6daea7fc2932eb01d81da901, 0x632d1326807e3f7d9a11e261feb981, 0x004267 ] } , - BigNum { limbs: [ 0x0ee7d30e12b23d1ab447818017f222, 0xc6b854445b5ea6798aa04ee79bdb41, 0x0068aa ] } , - BigNum { limbs: [ 0xaebc2ff1eba9c1e54bb87d7fe80ddf, 0xe09ad55921e98cc04d67baba3c2a12, 0x000b42 ] } , - BigNum { limbs: [ 0xfea3e5c0c9365a897755321979df0f, 0x1526811d79ccb36c6e20369d140fc1, 0x00306c ] } , - BigNum { limbs: [ 0xbf001d3f3525a47688aacce68620f2, 0x922ca880037b7fcd69e7d304c3f591, 0x004381 ] } , - BigNum { limbs: [ 0x749a7cd475fcba89e3a03ed602252d, 0x3d4724f28a112be91e58eee71d4355, 0x006a7a ] } , - BigNum { limbs: [ 0x4909862b885f44761c5fc029fddad4, 0x6a0c04aaf3370750b9af1ababac1fe, 0x000973 ] } , - BigNum { limbs: [ 0x0f1173523113cd28d02344081ebd9c, 0x6aa34cdcd1600752f686c03aab1979, 0x0072a9 ] } , - BigNum { limbs: [ 0xae928fadcd4831d72fdcbaf7e14265, 0x3cafdcc0abe82be6e18149672cebda, 0x000144 ] } , - BigNum { limbs: [ 0x19809deb59fb23d7cd720d549ab2eb, 0x7b346cc7e5c436afd1adf36438b891, 0x001f2d ] } , - BigNum { limbs: [ 0xa4236514a460db28328df1ab654d16, 0x2c1ebcd59783fc8a065a163d9f4cc2, 0x0054c0 ] } , - BigNum { limbs: [ 0x61c74f88aecaa3f8518c32a0f5203d, 0x2e03ec6552ab659ae7550d5fbfbdcb, 0x001264 ] } , - BigNum { limbs: [ 0x5bdcb3774f915b07ae73cc5f0adfc4, 0x794f3d382a9ccd9ef0b2fc42184788, 0x006189 ] } , - BigNum { limbs: [ 0x0f7509eb12bf7a12d6b6c03800e954, 0xd14a7eea8bf2615934146cd481131e, 0x006ced ] } , - BigNum { limbs: [ 0xae2ef914eb9c84ed29493ec7ff16ad, 0xd608aab2f155d1e0a3f39ccd56f235, 0x0006ff ] } , - BigNum { limbs: [ 0x5972f0c64c836900ff94c5632452fe, 0xb39695b0958edb6e036992fd59a041, 0x000050 ] } , - BigNum { limbs: [ 0x64311239b1d895ff006b399cdbad03, 0xf3bc93ece7b957cbd49e76a47e6512, 0x00739c ] } , - BigNum { limbs: [ 0x82918a1275e4859be951ce740d7fdb, 0xba9bb0ed7d9163545d0bf99fcaa395, 0x0056d7 ] } , - BigNum { limbs: [ 0x3b1278ed8877796416ae308bf28026, 0xecb778afffb6cfe57afc10020d61be, 0x001d15 ] } , - BigNum { limbs: [ 0x1601a76229c1adfbecb0a04cff1fd5, 0x7a5cdde8aca2e66faae39b39c088f7, 0x00292f ] } , - BigNum { limbs: [ 0xa7a25b9dd49a5104134f5eb300e02c, 0x2cf64bb4d0a54cca2d246e68177c5c, 0x004abe ] } , - BigNum { limbs: [ 0xb612d30c081aabf34e05525f877021, 0x4bfe667932157f92916e86d96b6930, 0x004bf2 ] } , - BigNum { limbs: [ 0x07912ff3f641530cb1faaca0788fe0, 0x5b54c3244b32b3a7469982c86c9c23, 0x0027fb ] } , - BigNum { limbs: [ 0xd5ea380ce32e6b2dd42bd931d880fa, 0xe427c36951f6d473cff7407c6dcfb4, 0x006e88 ] } , - BigNum { limbs: [ 0xe7b9caf31b2d93d22bd425ce277f07, 0xc32b66342b515ec60810c9256a359e, 0x000564 ] } , - BigNum { limbs: [ 0x0f84475022fe939470465bee013097, 0x58bad03c9dbd58155a83a8ea6c3390, 0x002cda ] } , - BigNum { limbs: [ 0xae1fbbafdb5d6b6b8fb9a311fecf6a, 0x4e985960df8adb247d8460b76bd1c3, 0x004713 ] } , - BigNum { limbs: [ 0xa16ef813f31e5f83b68b581d21fd33, 0xd5284c1600d347aae07d7872a6391a, 0x005202 ] } , - BigNum { limbs: [ 0x1c350aec0b3d9f7c4974a6e2de02ce, 0xd22add877c74eb8ef78a912f31cc39, 0x0021ea ] } , - BigNum { limbs: [ 0x48051e0746d4d27634d53c101b484f, 0x274c05b653d0979001b1a9c1802b67, 0x00425b ] } , - BigNum { limbs: [ 0x759ee4f8b7872c89cb2ac2efe4b7b2, 0x800723e729779ba9d6565fe057d9ec, 0x003192 ] } , - BigNum { limbs: [ 0x8503100bf4f456b35f7bf5575c7b23, 0x45cdf7a9ba4cf1bf9c0b78cfea72b9, 0x006f01 ] } , - BigNum { limbs: [ 0x38a0f2f40967a84ca08409a8a384de, 0x618531f3c2fb417a3bfc90d1ed929a, 0x0004ec ] } , - BigNum { limbs: [ 0xf49d1fef18fe446a96b2f8aba94ca5, 0x0381d5637adbe052493f508ebbd64e, 0x005062 ] } , - BigNum { limbs: [ 0xc906e310e55dba95694d065456b35c, 0xa3d1543a026c52e78ec8b9131c2f04, 0x00238b ] } , - BigNum { limbs: [ 0xe70398715625d1fe45dab729efaea5, 0x48d147f9e07b866b74814bbc6fc20e, 0x00284b ] } , - BigNum { limbs: [ 0xd6a06a8ea8362d01ba2547d610515c, 0x5e81e1a39cccacce6386bde5684344, 0x004ba2 ] } , - BigNum { limbs: [ 0x43e19212b8aa4df3a5ad5791a994d8, 0x540c98122505b6ecd0eb892cffb184, 0x000dd3 ] } , - BigNum { limbs: [ 0x79c270ed45b1b10c5a52a76e566b29, 0x5346918b58427c4d071c8074d853cf, 0x00661a ] } , - BigNum { limbs: [ 0x6bc6576070693cb7d4f57ca8e234d2, 0x78031812872bf13558bc3f0560e2d7, 0x00695a ] } , - BigNum { limbs: [ 0x51ddab9f8df2c2482b0a82571dcb2f, 0x2f50118af61c42047f4bca9c77227c, 0x000a93 ] } , - BigNum { limbs: [ 0xfe1703fe711c29b80e538fb0db8eac, 0xdb43a94f5b7bb38f39714deeb1ae8a, 0x0014bd ] } , - BigNum { limbs: [ 0xbf8cff018d3fd547f1ac6f4f247155, 0xcc0f804e21cc7faa9e96bbb32656c8, 0x005f2f ] } , - BigNum { limbs: [ 0x24660d2d313d631f591af96e8a7fee, 0xc197a37224f76ca24d962e9700475f, 0x00347c ] } , - BigNum { limbs: [ 0x993df5d2cd1e9be0a6e50591758013, 0xe5bb862b5850c6978a71db0ad7bdf4, 0x003f70 ] } , - BigNum { limbs: [ 0x88d41415a9d2b7905e2d22cc47814f, 0x81307e7897487efc9679d3ae6717af, 0x0029a4 ] } , - BigNum { limbs: [ 0x34cfeeea5489476fa1d2dc33b87eb2, 0x2622ab24e5ffb43d418e35f370eda4, 0x004a49 ] } , - BigNum { limbs: [ 0xf108e4ee1b6fb6162787b451688c10, 0x962e55e3bd5fbe8f28ffbc2667540c, 0x000c3d ] } , - BigNum { limbs: [ 0xcc9b1e11e2ec48e9d8784aae9773f1, 0x1124d3b9bfe874aaaf084d7b70b146, 0x0067b0 ] } , - BigNum { limbs: [ 0x206cf9748b83dd96d828215664721a, 0xe83969d643cbcec6ec3b08bdf75cb5, 0x006a6b ] } , - BigNum { limbs: [ 0x9d37098b72d8216927d7dda99b8de7, 0xbf19bfc7397c6472ebcd00e3e0a89e, 0x000981 ] } , - BigNum { limbs: [ 0x44895d478fa9ddd1291c9619ff853a, 0x8c88d24405c2e8c071ee884d75d3a4, 0x004ef4 ] } , - BigNum { limbs: [ 0x791aa5b86eb2212ed6e368e6007ac7, 0x1aca575977854a79661981546231af, 0x0024f9 ] } , - BigNum { limbs: [ 0x5a424237cbda19892e38be9f062611, 0x11bc8052d3e3f0c732b4b9a2d2ebd0, 0x000a94 ] } , - BigNum { limbs: [ 0x6361c0c83281e576d1c74060f9d9f0, 0x9596a94aa9644272a5534fff051983, 0x006959 ] } , - BigNum { limbs: [ 0x7d89921705901e5de06a0b012d0243, 0x594fdeb2e307f3e1fb2deb76f3bb71, 0x006c45 ] } , - BigNum { limbs: [ 0x401a70e8f8cbe0a21f95f3fed2fdbe, 0x4e034aea9a403f57dcda1e2ae449e2, 0x0007a8 ] } , - BigNum { limbs: [ 0xa788bc6d17181423c79bd954755494, 0x0481d07a7e9f35032fbef532789ce5, 0x00611b ] } , - BigNum { limbs: [ 0x161b4692e743eadc386425ab8aab6d, 0xa2d15922fea8fe36a849146f5f686e, 0x0012d2 ] } , - BigNum { limbs: [ 0x1653d1c1bc6e308ea22d6694856daa, 0xb4cc459331ab514ca0d0085bb39e9d, 0x005068 ] } , - BigNum { limbs: [ 0xa750313e41edce715dd2986b7a9257, 0xf286e40a4b9ce1ed373801462466b6, 0x002384 ] } , - BigNum { limbs: [ 0x054f3e075b729d81098d794dea5701, 0x6abf41700b9842a65fa559497c8810, 0x004f9d ] } , - BigNum { limbs: [ 0xb854c4f8a2e9617ef67285b215a900, 0x3c93e82d71aff0937862b0585b7d43, 0x002450 ] } , - BigNum { limbs: [ 0x5057d57703f9a87e126235ecd43026, 0x74affe564b7a8b3844deac9ea56431, 0x001736 ] } , - BigNum { limbs: [ 0x6d4c2d88fa625681ed9dc9132bcfdb, 0x32a32b4731cda80193295d0332a122, 0x005cb7 ] } , - BigNum { limbs: [ 0xb47dbca9cae90afbe221bbe8b0070f, 0x1707ef01055ae713812af75c3ce340, 0x006e6d ] } , - BigNum { limbs: [ 0x092646563372f4041dde43174ff8f2, 0x904b3a9c77ed4c2656dd12459b2213, 0x000580 ] } , - BigNum { limbs: [ 0x6f364ee6ca599e2a57e7c2e3829f5d, 0xbff09ddfad632d741d8ddfa5d583ef, 0x0061f4 ] } , - BigNum { limbs: [ 0x4e6db419340260d5a8183c1c7d60a4, 0xe7628bbdcfe505c5ba7a29fc028164, 0x0011f8 ] } , - BigNum { limbs: [ 0x0b303e3b187bfe2d29236b4aba2c30, 0x7d686e321ed7e2bf66e7d85fbbf104, 0x004f5a ] } , - BigNum { limbs: [ 0xb273c4c4e5e000d2d6dc93b545d3d1, 0x29eabb6b5e70507a712031421c144f, 0x002493 ] } , - BigNum { limbs: [ 0x8af5568bee084eafc9284dc5c825b3, 0x1e8cce6557ae443ba5d28686f073a4, 0x001c5b ] } , - BigNum { limbs: [ 0x32aeac741053b05036d7b13a37da4e, 0x88c65b382599eefe3235831ae791af, 0x005792 ] } , - BigNum { limbs: [ 0x7e09e82f1c3e9d4efb199435cf1951, 0x5d7839b1fcfcf9503d8f57a4d6614e, 0x003b14 ] } , - BigNum { limbs: [ 0x3f9a1ad0e21d61b104e66aca30e6b0, 0x49daefeb804b39e99a78b1fd01a405, 0x0038d9 ] } , - BigNum { limbs: [ 0x55d107b1c203eab17bd0bb5bad1182, 0x9c8b5342ec1d44944d3f7324eb7480, 0x001cb9 ] } , - BigNum { limbs: [ 0x67d2fb4e3c58144e842f43a452ee7f, 0x0ac7d65a912aeea58ac8967cec90d3, 0x005734 ] } , - BigNum { limbs: [ 0xcc98e5c7db5187d8c1d40bb10adc59, 0xc0675265fa2dfc519755c087a32876, 0x003c33 ] } , - BigNum { limbs: [ 0xf10b1d38230a77273e2bf34ef523a8, 0xe6ebd737831a36e840b2491a34dcdc, 0x0037b9 ] } , - BigNum { limbs: [ 0xc2ff3e383faedce4a93fcddb1211f4, 0x208ddf82338cb12eca28a2ee1691e3, 0x0035c4 ] } , - BigNum { limbs: [ 0xfaa4c4c7bead221b56c03124edee0d, 0x86c54a1b49bb820b0ddf66b3c1736f, 0x003e29 ] } , - BigNum { limbs: [ 0x770750a3295ce013845fe3e81af4a9, 0x5e069cf1ffd4b20beea0d3d2717cab, 0x0040d6 ] } , - BigNum { limbs: [ 0x469cb25cd4ff1eec7ba01b17e50b58, 0x494c8cab7d73812de96735cf6688a8, 0x003317 ] } , - BigNum { limbs: [ 0x4b6d768688f6163f7aef5a8d5a484b, 0xc4e0a34ac8817ca0911d55cb959127, 0x003367 ] } , - BigNum { limbs: [ 0x72368c797565e8c08510a472a5b7b6, 0xe2728652b4c6b69946eab3d642742c, 0x004085 ] } , - BigNum { limbs: [ 0x0454e65c549e730c28faecaf1e8d22, 0x56b81cdb2573eb5e4c7cc761dd4520, 0x005d92 ] } , - BigNum { limbs: [ 0xb94f1ca3a9bd8bf3d7051250e172df, 0x509b0cc257d447db8b8b423ffac033, 0x00165b ] } , - BigNum { limbs: [ 0x51ee0472a016488c27b766a60882f9, 0x11507fe896a5498eb71d7559be4c99, 0x0052c2 ] } , - BigNum { limbs: [ 0x6bb5fe8d5e45b673d8489859f77d08, 0x9602a9b4e6a2e9ab20ea944819b8ba, 0x00212b ] } , - BigNum { limbs: [ 0xc5bca14681745c76d754972b0417a7, 0x2f86c9d8d39011f0f8130ff3be0f88, 0x0018f0 ] } , - BigNum { limbs: [ 0xf7e761b97ce7a28928ab67d4fbe85a, 0x77cc5fc4a9b82148dff4f9ae19f5ca, 0x005afd ] } , - BigNum { limbs: [ 0x638559361842718ac62a5b6e5ad517, 0x6fb41d42210a721065e2d58541d8ed, 0x004100 ] } , - BigNum { limbs: [ 0x5a1ea9c9e6198d7539d5a391a52aea, 0x379f0c5b5c3dc1297225341c962c66, 0x0032ed ] } , - BigNum { limbs: [ 0x1950751921323a56171b04b937cdaf, 0x937ddeaca07bc012d70246b27dc065, 0x0024ee ] } , - BigNum { limbs: [ 0xa4538de6dd29c4a9e8e4fa46c83252, 0x13d54af0dccc73270105c2ef5a44ee, 0x004eff ] } , - BigNum { limbs: [ 0x2a319f1febe961d72e9ae3be101d4a, 0x9c3f07698480401ec4aa8199861df1, 0x004b05 ] } , - BigNum { limbs: [ 0x937263e012729d28d1651b41efe2b7, 0x0b142233f8c7f31b135d880851e762, 0x0028e8 ] } , - BigNum { limbs: [ 0x6741faefb9fa2d5aa8609bb6978a8a, 0x21978e244f9d146d95e0e0022b3e03, 0x001a07 ] } , - BigNum { limbs: [ 0x566208104461d1a5579f6349687577, 0x85bb9b792dab1ecc4227299facc750, 0x0059e6 ] } , - BigNum { limbs: [ 0x45ddc7c4867210129ed5dca288fdad, 0xda03c2eccc63b00e689f35ee7c4f17, 0x000145 ] } , - BigNum { limbs: [ 0x77c63b3b77e9eeed612a225d770254, 0xcd4f66b0b0e4832b6f68d3b35bb63c, 0x0072a7 ] } , - BigNum { limbs: [ 0xb74b780ee14bd5ffd348ed4368ea6b, 0xe856ea5ac03fc0e50bf8399e8a372b, 0x0030c0 ] } , - BigNum { limbs: [ 0x06588af11d1029002cb711bc971596, 0xbefc3f42bd087254cc0fd0034dce28, 0x00432c ] } , - BigNum { limbs: [ 0xb180cc06183fdc238b0dcafb1476da, 0x9abcdc6fffbff88b8ccd41b6fe9072, 0x006dae ] } , - BigNum { limbs: [ 0x0c2336f9e61c22dc74f23404eb8927, 0x0c964d2d7d883aae4b3ac7ead974e1, 0x00063f ] } , - BigNum { limbs: [ 0xa0aa4b47b65a9aa9b9e943288d1377, 0x1a344d6f5983ebaddafe1ce61a3e55, 0x002139 ] } , - BigNum { limbs: [ 0x1cf9b7b8480164564616bbd772ec8a, 0x8d1edc2e23c4478bfd09ecbbbdc6fe, 0x0052b4 ] } , - BigNum { limbs: [ 0xda2c1965bb0e4df3f081d760a857c1, 0x717dde8a10fab09cc8a6d690d6d975, 0x002b2c ] } , - BigNum { limbs: [ 0xe377e99a434db10c0f7e279f57a840, 0x35d54b136c4d829d0f613311012bdd, 0x0048c1 ] } , - BigNum { limbs: [ 0x4b18da6a0cb40d9f323ea3d74cb3ed, 0xd903bc2a828e0a910beaf7801c3c4a, 0x0068a3 ] } , - BigNum { limbs: [ 0x728b2895f1a7f160cdc15b28b34c14, 0xce4f6d72faba28a8cc1d1221bbc909, 0x000b49 ] } , - BigNum { limbs: [ 0xdbfda03b545ae6d8953347b71b2763, 0x4045701c2afdeb6b10d0ae8fdb6702, 0x004e58 ] } , - BigNum { limbs: [ 0xe1a662c4aa0118276accb748e4d89e, 0x670db981524a47cec7375b11fc9e50, 0x002595 ] } , - BigNum { limbs: [ 0x29f1a50e3889f85141aa86a2a5ecfe, 0xb7b08d8f15ade18c576cea199d2fa8, 0x000189 ] } , - BigNum { limbs: [ 0x93b25df1c5d206aebe55785d5a1303, 0xefa29c0e679a51ad809b1f883ad5ab, 0x007263 ] } , - BigNum { limbs: [ 0xb6ef0eb662097c3848f25bc12e55e5, 0x0f09621ec698c303dcd2525aa8e1d5, 0x00207c ] } , - BigNum { limbs: [ 0x06b4f4499c5282c7b70da33ed1aa1c, 0x9849c77eb6af7035fb35b7472f237e, 0x005371 ] } , - BigNum { limbs: [ 0xfee96131f8a2c92461b61f8c172710, 0x3925f9b4c85b4d19a6dc30bd3cf9de, 0x0034d0 ] } , - BigNum { limbs: [ 0xbebaa1ce05b935db9e49df73e8d8f1, 0x6e2d2fe8b4ece620312bd8e49b0b74, 0x003f1d ] } , - BigNum { limbs: [ 0x141e3d346407c47189304e56429ad5, 0xb91199af6c50c47d1bfcf63d8da28f, 0x0056f5 ] } , - BigNum { limbs: [ 0xa985c5cb9a543a8e76cfb0a9bd652c, 0xee418fee10f76ebcbc0b13644a62c4, 0x001cf7 ] } , - BigNum { limbs: [ 0x8bc773e8f76ec48f6d8cad9a860cd0, 0x8ac912456e1d8865c216fafad6f949, 0x004228 ] } , - BigNum { limbs: [ 0x31dc8f1706ed3a709273516579f331, 0x1c8a17580f2aaad415f10ea7010c0a, 0x0031c5 ] } , - BigNum { limbs: [ 0x0738e3b14d3321adc2f5fb7a0f9779, 0xe3491835bf37c77b9884e9951f09f5, 0x001285 ] } , - BigNum { limbs: [ 0xb66b1f4eb128dd523d0a0385f06888, 0xc40a1167be106bbe3f83200cb8fb5e, 0x006167 ] } , - BigNum { limbs: [ 0xede3c44914fead6b72120c1df2a4b7, 0xe8be4df796d59f6c51b91a1bb80965, 0x0057f2 ] } , - BigNum { limbs: [ 0xcfc03eb6e95d51948dedf2e20d5b4a, 0xbe94dba5e67293cd864eef861ffbed, 0x001bfa ] } , - BigNum { limbs: [ 0x02db433ead26c61eff4e410f51f541, 0xac8c4cf028e96b55b53b85b3aaaf65, 0x004f11 ] } , - BigNum { limbs: [ 0xbac8bfc1513538e100b1bdf0ae0ac0, 0xfac6dcad545ec7e422cc83ee2d55ee, 0x0024db ] } , - BigNum { limbs: [ 0xcdd406650e46c8d98b75fb7861f2ca, 0x7cbfb59eea4ac9eaecdc39624a74d6, 0x00337d ] } , - BigNum { limbs: [ 0xefcffc9af0153626748a03879e0d37, 0x2a9373fe92fd694eeb2bd03f8d907c, 0x004070 ] } , - BigNum { limbs: [ 0xa5bc30f24fec3acc3d6f4f809b0a53, 0x6ed642e8c59a514c846d5f0e44976d, 0x002013 ] } , - BigNum { limbs: [ 0x17e7d20dae6fc433c290af7f64f5ae, 0x387ce6b4b7ade1ed539aaa93936de6, 0x0053da ] } , - BigNum { limbs: [ 0xdeb7a80902a9c5efdf3ccfe8e53a24, 0x1a50f8bb8a7d92a4ae617d426c9358, 0x0070ba ] } , - BigNum { limbs: [ 0xdeec5af6fbb2391020c32f171ac5dd, 0x8d0230e1f2caa09529a68c5f6b71fa, 0x000333 ] } , - BigNum { limbs: [ 0x682f007f22bb81fdd7ada825dfd8e9, 0xba432991de5065a9a51a6b3c1aee25, 0x003c87 ] } , - BigNum { limbs: [ 0x55750280dba07d02285256da202718, 0xed10000b9ef7cd9032ed9e65bd172e, 0x003765 ] } , - BigNum { limbs: [ 0xdc15430c03b1e93f800f008fb12ae6, 0xab089b07419bb6f14d619c69d89866, 0x00665b ] } , - BigNum { limbs: [ 0xe18ebff3faaa15c07ff0fe704ed51b, 0xfc4a8e963bac7c488aa66d37ff6cec, 0x000d91 ] } , - BigNum { limbs: [ 0x9e920fb609ba358d5ceacfe1dffb42, 0x817f573e38be9b763b9e8a078d875c, 0x004094 ] } , - BigNum { limbs: [ 0x1f11f349f4a1c972a3152f1e2004bf, 0x25d3d25f448997c39c697f9a4a7df7, 0x003359 ] } , - BigNum { limbs: [ 0x5f4c56d978347b10decd73542a05fd, 0x12ef8c4b82539a2ef0ffba88222629, 0x005c58 ] } , - BigNum { limbs: [ 0x5e57ac26862783ef21328babd5fa04, 0x94639d51faf4990ae7084f19b5df2a, 0x001795 ] } , - BigNum { limbs: [ 0x1a0584cc517b2805c42dc5891560a9, 0x9d33e7931ce4ecbc30602b356bce70, 0x0016b0 ] } , - BigNum { limbs: [ 0xa39e7e33ace0d6fa3bd23976ea9f58, 0x0a1f420a6063467da7a7de6c6c36e3, 0x005d3d ] } , - BigNum { limbs: [ 0x628e600a788e04ab750b85650ebd1b, 0x45839982795b2e6635a42125b2c691, 0x004faf ] } , - BigNum { limbs: [ 0x5b15a2f585cdfa548af4799af142e6, 0x61cf901b03ed04d3a263e87c253ec2, 0x00243e ] } , - BigNum { limbs: [ 0x5fd0a3184059075334c20cef94dd35, 0x069a3f7275ed6f16b28321f60d75c3, 0x001a8e ] } , - BigNum { limbs: [ 0x5dd35fe7be02f7accb3df2106b22cc, 0xa0b8ea2b075ac4232584e7abca8f90, 0x00595f ] } , - BigNum { limbs: [ 0x5321e5ff1832016c9ec31e57800535, 0x6fde6d9f8cf58100484127999969e6, 0x0058d2 ] } , - BigNum { limbs: [ 0x6a821d00e629fd93613ce0a87ffacc, 0x3774bbfdf052b2398fc6e2083e9b6d, 0x001b1b ] } , - BigNum { limbs: [ 0x24e42aa8d5aec08ce356eec0b581c3, 0x96482f24fb2a6806482acecf123181, 0x004ad6 ] } , - BigNum { limbs: [ 0x98bfd85728ad3e731ca9103f4a7e3e, 0x110afa78821dcb338fdd3ad2c5d3d2, 0x002917 ] } , - BigNum { limbs: [ 0x346f499430ac3e8834e343be816ade, 0x1c7a1e79b28af076c80674fbea502b, 0x003324 ] } , - BigNum { limbs: [ 0x8934b96bcdafc077cb1cbb417e9523, 0x8ad90b23cabd42c3100194a5edb528, 0x0040c9 ] } , - BigNum { limbs: [ 0x57918f034022d6713037f8b64415e9, 0x19fd78f51a8800de167d51cdd33239, 0x0000b2 ] } , - BigNum { limbs: [ 0x661273fcbe39288ecfc80649bbea18, 0x8d55b0a862c0325bc18ab7d404d31a, 0x00733b ] } , - BigNum { limbs: [ 0xf59be099efbbbf1e9ee7f422718376, 0x28cf3247eb4450669afedabf51d50f, 0x006d6b ] } , - BigNum { limbs: [ 0xc80822660ea03fe161180add8e7c8b, 0x7e83f7559203e2d33d092ee2863043, 0x000682 ] } , - BigNum { limbs: [ 0x717496b394e228bde1fcdaa1e27c0c, 0xc92134ed8fe810bde4e31b054a62bd, 0x001f39 ] } , - BigNum { limbs: [ 0x4c2f6c4c6979d6421e03245e1d83f5, 0xde31f4afed60227bf324ee9c8da296, 0x0054b3 ] } , - BigNum { limbs: [ 0x7d09d03af59770f1d0fcc7934e784a, 0xe258d964b59394e25115d08b5a107a, 0x005651 ] } , - BigNum { limbs: [ 0x409a32c508c48e0e2f03376cb187b7, 0xc4fa5038c7b49e5786f239167df4d9, 0x001d9b ] } , - BigNum { limbs: [ 0xaaeb71ec0f716e68b025c69346bf09, 0x88ac099cc542dbc85d2e72f3dee770, 0x0004ca ] } , - BigNum { limbs: [ 0x12b89113eeea90974fda386cb940f8, 0x1ea72000b80557717ad996adf91de3, 0x006f23 ] } , - BigNum { limbs: [ 0x3f0ed736ba61d95846912ad0cd72e8, 0xa976934ab9259ff3085d4c741c88b3, 0x00184a ] } , - BigNum { limbs: [ 0x7e952bc943fa25a7b96ed42f328d19, 0xfddc9652c4229346cfaabd2dbb7ca0, 0x005ba2 ] } , - BigNum { limbs: [ 0x62b291c828ec3ebaf26067815711fc, 0xbb8260b46d2c51e40cbf75a7ee58fd, 0x0062e0 ] } , - BigNum { limbs: [ 0x5af17137d56fc0450d9f977ea8ee05, 0xebd0c8e9101be155cb4893f9e9ac56, 0x00110c ] } , - BigNum { limbs: [ 0xf1944f8062e2362fd7908ad327998c, 0xfae10609ac308c560763e9b339ee02, 0x005d20 ] } , - BigNum { limbs: [ 0xcc0fb37f9b79c8d0286f742cd86675, 0xac722393d117a6e3d0a41fee9e1750, 0x0016cc ] } , - BigNum { limbs: [ 0x238124a0db2fb18fbde3dcc5b9f194, 0x2223c6d14ff1cf5fcb7416a05e18ff, 0x002605 ] } , - BigNum { limbs: [ 0x9a22de5f232c4d70421c223a460e6d, 0x852f62cc2d5663da0c93f30179ec54, 0x004de8 ] } , - BigNum { limbs: [ 0x2f181b14aed10ff6e67eefaeab0cff, 0xa75b010005d75274ac3b3a23333006, 0x004d09 ] } , - BigNum { limbs: [ 0x8e8be7eb4f8aef0919810f5154f302, 0xfff8289d7770e0c52bcccf7ea4d54d, 0x0026e3 ] } , - BigNum { limbs: [ 0x84f64a6ba25a938975fe3c072f5f5c, 0xbd52dee2d5f7a21bae96e51a32d19d, 0x005087 ] } , - BigNum { limbs: [ 0x38adb8945c016b768a01c2f8d0a0a5, 0xea004abaa750911e29712487a533b6, 0x002365 ] } , - BigNum { limbs: [ 0x2ae0e11e73c3f16ca52fc81438540d, 0x08c778383129c0429531c4dd5df66d, 0x001ebd ] } , - BigNum { limbs: [ 0x92c321e18a980d935ad036ebc7abf4, 0x9e8bb1654c1e72f742d644c47a0ee6, 0x005530 ] } , - BigNum { limbs: [ 0xe7fa646df251b192383683e59ecc6a, 0xc7fe5a5827024c14c0e444da9cff88, 0x000ef4 ] } , - BigNum { limbs: [ 0xd5a99e920c0a4d6dc7c97b1a613397, 0xdf54cf455645e7251723c4c73b05ca, 0x0064f8 ] } , - BigNum { limbs: [ 0xeef0bcd91847d841253cc2a928d6be, 0x37718307eb1a9579e0bf9778e20bdc, 0x005a0c ] } , - BigNum { limbs: [ 0xceb34626e61426bedac33c56d72943, 0x6fe1a695922d9dbff7487228f5f976, 0x0019e1 ] } , - BigNum { limbs: [ 0xa701b8e3a721e0fefce536fb906424, 0x78afcd6fbd8fcad332db11efc5f13f, 0x00420e ] } , - BigNum { limbs: [ 0x16a24a1c573a1e01031ac8046f9bdd, 0x2ea35c2dbfb86866a52cf7b2121414, 0x0031df ] } , - BigNum { limbs: [ 0x2703973a98577b707f616b8ee5bc69, 0x35a38c635602c55fbb5a72a5dee0a8, 0x002220 ] } , - BigNum { limbs: [ 0x96a06bc56604838f809e93711a4398, 0x71af9d3a27456dda1cad96fbf924ab, 0x0051cd ] } , - BigNum { limbs: [ 0xd426ce3bc379cebaa02908f78226c1, 0x3b64fc8a8d3697b57a95d72f49a7ec, 0x006531 ] } , - BigNum { limbs: [ 0xe97d34c43ae230455fd6f6087dd940, 0x6bee2d12f0119b845d7232728e5d66, 0x000ebc ] } , - BigNum { limbs: [ 0x1aee8a70a157bc3db5dce28b3ecf15, 0xa940ed13adc86207c5cca3e248bbea, 0x0066a7 ] } , - BigNum { limbs: [ 0xa2b5788f5d0442c24a231c74c130ec, 0xfe123c89cf7fd132123b65bf8f4969, 0x000d45 ] } , - BigNum { limbs: [ 0x8d825a7d11480cdc99619927e24871, 0x40afc2350d54fc80dd3fde8f89eaed, 0x0012b8 ] } , - BigNum { limbs: [ 0x3021a882ed13f223669e65d81db790, 0x66a367686ff336b8fac82b124e1a66, 0x006135 ] } , - BigNum { limbs: [ 0x6d89d1cf521a52f9730ea6ccca6aa9, 0x874736ffd05944b37a5bdf5fc29b8e, 0x00017a ] } , - BigNum { limbs: [ 0x501a3130ac41ac068cf15833359558, 0x200bf29daceeee865dac2a421569c5, 0x007273 ] } , - BigNum { limbs: [ 0x2ebb72dd507ad3e370ae5c9d88c367, 0xcad2981271db38af49782c25cc6a83, 0x002982 ] } , - BigNum { limbs: [ 0x8ee89022ade12b1c8f51a262773c9a, 0xdc80918b0b6cfa8a8e8fdd7c0b9ad0, 0x004a6a ] } , - BigNum { limbs: [ 0x40bb9966258c7e444ef5bf9f9eaf5d, 0x50d0cd0a9c9ad02239843d3a7238d0, 0x00238a ] } , - BigNum { limbs: [ 0x7ce86999d8cf80bbb10a3f606150a4, 0x56825c92e0ad63179e83cc6765cc83, 0x005063 ] } , - BigNum { limbs: [ 0xd860053850eb383390d76bb3f42bd6, 0x4a15cbfaab68c4280ae7caa60cf1aa, 0x003f5e ] } , - BigNum { limbs: [ 0xe543fdc7ad70c6cc6f28934c0bd42b, 0x5d3d5da2d1df6f11cd203efbcb13a8, 0x00348f ] } , - BigNum { limbs: [ 0xaef4419c79da6004e08d670c53a44e, 0xf7bd11fb6ad2133b0600858128f29b, 0x0069fc ] } , - BigNum { limbs: [ 0x0eafc16384819efb1f7297f3ac5bb3, 0xaf9617a212761ffed2078420af12b8, 0x0009f0 ] } , - BigNum { limbs: [ 0x7f907f020a14b917b055c5dfbd2d5c, 0xe05ec31861f5674bdaf8e72b8709a1, 0x006927 ] } , - BigNum { limbs: [ 0x3e1383fdf44745e84faa392042d2a5, 0xc6f466851b52cbedfd0f227650fbb2, 0x000ac5 ] } , - BigNum { limbs: [ 0xebc1bad8e840c2ad13f6bbb95ec8ec, 0xcb2b258381423a47594a3ac9ba80ed, 0x000ba4 ] } , - BigNum { limbs: [ 0xd1e24827161b3c52ec094346a13715, 0xdc280419fc05f8f27ebdced81d8465, 0x006848 ] } , - BigNum { limbs: [ 0x2b07db533eecf717c095e63014ae72, 0x14ee8e4ee0069beb9bd9e5a49c9517, 0x002bbf ] } , - BigNum { limbs: [ 0x929c27acbf6f07e83f6a18cfeb518f, 0x92649b4e9d41974e3c2e23fd3b703c, 0x00482e ] } , - BigNum { limbs: [ 0xfce3f1ae16e1352f27668740f423f4, 0x53b32e18eb883962e4267ad3b836c2, 0x000776 ] } , - BigNum { limbs: [ 0xc0c01151e77ac9d0d89977bf0bdc0d, 0x539ffb8491bff9d6f3e18ece1fce90, 0x006c77 ] } , - BigNum { limbs: [ 0x0cb139b40f4c25efde2d1e3d91bdd7, 0x607ce8d23ffed09655e7bf9bbb56a0, 0x002fac ] } , - BigNum { limbs: [ 0xb0f2c94bef0fd91021d2e0c26e422a, 0x46d640cb3d4962a382204a061caeb3, 0x004441 ] } , - BigNum { limbs: [ 0x9056c4e381145f218592573596e4e9, 0x1da7c6d8816a814bffbf8d20cef142, 0x000e09 ] } , - BigNum { limbs: [ 0x2d4d3e1c7d479fde7a6da7ca691b18, 0x89ab62c4fbddb1edd8487c81091411, 0x0065e4 ] } , - BigNum { limbs: [ 0x85d191ac75223523bb85f2da7f3e51, 0xb26339d05091e20e765bc6522c3d49, 0x0023fb ] } , - BigNum { limbs: [ 0x37d271538939c9dc447a0c2580c1b0, 0xf4efefcd2cb6512b61ac434fabc80a, 0x004ff1 ] } , - BigNum { limbs: [ 0x42dd56d39e955417d408cfe1efe0da, 0x6dd7b2cf3c059a45ee2eabefd88d8d, 0x001286 ] } , - BigNum { limbs: [ 0x7ac6ac2c5fc6aae82bf72f1e101f27, 0x397b76ce414298f3e9d95db1ff77c6, 0x006167 ] } , - BigNum { limbs: [ 0x8ff68b2704622d8db3b98e4423fc50, 0x8734ba95974fe0a610e2a9cc4f55cf, 0x0021c7 ] } , - BigNum { limbs: [ 0x2dad77d8f9f9d1724c4670bbdc03b1, 0x201e6f07e5f85293c7255fd588af84, 0x005226 ] } , - BigNum { limbs: [ 0x8beba55b423887eb9775afe0580eb6, 0xc6493ca6f7bafdd94ab18c03456354, 0x00021f ] } , - BigNum { limbs: [ 0x31b85da4bc237714688a4f1fa7f14b, 0xe109ecf6858d35608d567d9e92a1ff, 0x0071cd ] } , - BigNum { limbs: [ 0xddf65cfc1c7f198f6e446f0ba80111, 0xfc3367b27efadae203a5d04d12b33b, 0x00547e ] } , - BigNum { limbs: [ 0xdfada603e1dce57091bb8ff457fef0, 0xab1fc1eafe4d5857d4623954c55217, 0x001f6e ] } , - BigNum { limbs: [ 0xb2111259c0e6827b9f2d0dfbe1fda0, 0xea46adb91f8909429055d788c6ef35, 0x0045e8 ] } , - BigNum { limbs: [ 0x0b92f0a63d757c8460d2f1041e0261, 0xbd0c7be45dbf29f747b2321911161e, 0x002e04 ] } , - BigNum { limbs: [ 0xd451939d2efc7530d247f9f1b06a9d, 0x723488ddb269aa2a0bb898bac279da, 0x002e0f ] } , - BigNum { limbs: [ 0xe9526f62cf5f89cf2db8050e4f9564, 0x351ea0bfcade890fcc4f70e7158b78, 0x0045de ] } , - BigNum { limbs: [ 0xcdfd800f910da40d61b57cc139d00a, 0x6f4e20fb2f20f36c5be4373da4ad3e, 0x002436 ] } , - BigNum { limbs: [ 0xefa682f06d4e5af29e4a823ec62ff7, 0x380508a24e273fcd7c23d264335814, 0x004fb7 ] } , - BigNum { limbs: [ 0xad59732db132de9f70a3a4625a28a2, 0x30d35a07976b6f22eeb847e6a4c2c5, 0x000455 ] } , - BigNum { limbs: [ 0x104a8fd24d2920608f5c5a9da5d75f, 0x767fcf95e5dcc416e94fc1bb33428e, 0x006f98 ] } , - BigNum { limbs: [ 0xa83f0d64199428796ae7ed987e3031, 0x66c481043d84ce7b5b9a58967a125a, 0x006e11 ] } , - BigNum { limbs: [ 0x1564f59be4c7d6869518116781cfd0, 0x408ea8993fc364be7c6db10b5df2f9, 0x0005dc ] } , - BigNum { limbs: [ 0xfeec51f753cc687c69d6ae5df2c7e5, 0x01672a864c45dae541d1fd7ab0cf3b, 0x00252a ] } , - BigNum { limbs: [ 0xbeb7b108aa8f9683962950a20d381c, 0xa5ebff173102585496360c27273617, 0x004ec3 ] } , - BigNum { limbs: [ 0x3737709114df79354b1b9355e6a54e, 0x4098bda9ad6a6469757c2498b0fd99, 0x006a78 ] } , - BigNum { limbs: [ 0x866c926ee97c85cab4e46baa195ab3, 0x66ba6bf3cfddced0628be5092707ba, 0x000975 ] } , - BigNum { limbs: [ 0x51ed8769fd01bf945fda78a7f367d9, 0x753bf1d2a62039f1517d74049b890e, 0x004fe3 ] } , - BigNum { limbs: [ 0x6bb67b96015a3f6ba02586580c9828, 0x321737cad727f948868a959d3c7c45, 0x00240a ] } , - BigNum { limbs: [ 0x3fe7cabd0b23e5bf705eba460abe55, 0x3151de041923e02a79c24740b9cac2, 0x0008cf ] } , - BigNum { limbs: [ 0x7dbc3842f33819408fa144b9f541ac, 0x76014b996424530f5e45c2611e3a91, 0x006b1e ] } , - BigNum { limbs: [ 0x66c55dea845e4933d0b97dedcbec39, 0xbe534af38fff28cbbe5b58d6539c1a, 0x002362 ] } , - BigNum { limbs: [ 0x56dea51579fdb5cc2f4681123413c8, 0xe8ffdea9ed490a6e19acb0cb846939, 0x00508a ] } , - BigNum { limbs: [ 0xe74ce466f28a996afd86c991620276, 0x6a14aab731397177349c6cb97b7c51, 0x005ffd ] } , - BigNum { limbs: [ 0xd6571e990bd165950279356e9dfd8b, 0x3d3e7ee64c0ec1c2a36b9ce85c8901, 0x0013f0 ] } , - BigNum { limbs: [ 0xfc885d40f73760387ca37368ee6036, 0xfdacb64f6dcef359c6db5d8d487fc5, 0x003810 ] } , - BigNum { limbs: [ 0xc11ba5bf07249ec7835c8b97119fcb, 0xa9a6734e0f793fe0112cac148f858d, 0x003bdc ] } , - BigNum { limbs: [ 0xe66d78cb626cc03ccda280ddf7c676, 0xaa5aa0b483b385f66bd08a1d249b53, 0x006a97 ] } , - BigNum { limbs: [ 0xd7368a349bef3ec3325d7e2208398b, 0xfcf888e8f994ad436c377f84b369ff, 0x000955 ] } , - BigNum { limbs: [ 0xe73f7a50c5aaeb5db85ae6ebfcb38d, 0xbca65083b25f7ee89ab1508940ca94, 0x001c15 ] } , - BigNum { limbs: [ 0xd66488af38b113a247a51814034c74, 0xeaacd919cae8b4513d56b918973abe, 0x0057d7 ] } , - BigNum { limbs: [ 0x3041d38fa295c8677f529da0db3616, 0x61b3e4c04bcf4cc051000148d5479a, 0x006b8b ] } , - BigNum { limbs: [ 0x8d622f705bc6369880ad615f24c9eb, 0x459f44dd3178e6798708085902bdb9, 0x000862 ] } , - BigNum { limbs: [ 0x36ba5d59a1fdb3918b8ff2657cb799, 0x73141aa50ce8e0448856303668e326, 0x001a6f ] } , - BigNum { limbs: [ 0x86e9a5a65c5e4b6e74700c9a834868, 0x343f0ef8705f52f54fb1d96b6f222d, 0x00597e ] } , - BigNum { limbs: [ 0x6ccba57529ef3a2e69b325f8c2d10e, 0x4d647a8586116f35f254c16ac4e2e8, 0x000d42 ] } , - BigNum { limbs: [ 0x50d85d8ad46cc4d1964cd9073d2ef3, 0x59eeaf17f736c403e5b3483713226b, 0x0066ab ] } , - BigNum { limbs: [ 0xd6a430a0bc13faa1c38e986fed60b7, 0xce5eedbb83c74a15db11a3b554b5d3, 0x006858 ] } , - BigNum { limbs: [ 0xe6ffd25f4248045e3c716690129f4a, 0xd8f43be1f980e923fcf665ec834f7f, 0x000b94 ] } , - BigNum { limbs: [ 0xbb69b1e997262c5f8b75eb59322015, 0xada1e5d0b6bf2aca0bb3f1eaef08eb, 0x0038e8 ] } , - BigNum { limbs: [ 0x023a51166735d2a0748a13a6cddfec, 0xf9b143ccc689086fcc5417b6e8fc68, 0x003b04 ] } , - BigNum { limbs: [ 0xb9c653a69df49edefa7c37d09c36a2, 0xadf904b0681b511569231f5f35c687, 0x0049b2 ] } , - BigNum { limbs: [ 0x03ddaf59606760210583c72f63c95f, 0xf95a24ed152ce2246ee4ea42a23ecc, 0x002a3a ] } , - BigNum { limbs: [ 0x544e0eef300ebb6922152d741da680, 0xf4657f7341d681f7a80461466d15fc, 0x00633f ] } , - BigNum { limbs: [ 0x6955f410ce4d4396ddead18be25981, 0xb2edaa2a3b71b1423003a85b6aef57, 0x0010ad ] } , - BigNum { limbs: [ 0x3cb7a69485ca0129ceb6ef8030b2de, 0x6468a2d46ee05d32b857f28457a44c, 0x00702f ] } , - BigNum { limbs: [ 0x80ec5c6b7891fdd631490f7fcf4d23, 0x42ea86c90e67d6071fb0171d806107, 0x0003be ] } , - BigNum { limbs: [ 0x690adce0d4559ad0bab5f02b35aea3, 0x8d7a680f4f615969a24f8e2106f81a, 0x005dc7 ] } , - BigNum { limbs: [ 0x5499261f2a06642f454a0ed4ca515e, 0x19d8c18e2de6d9d035b87b80d10d39, 0x001626 ] } , - BigNum { limbs: [ 0xbf6566f761bbaaa58ea51a15cb2a93, 0xa436bbf70ebc9a481043f60ec7964f, 0x0042fa ] } , - BigNum { limbs: [ 0xfe3e9c089ca0545a715ae4ea34d56e, 0x031c6da66e8b98f1c7c41393106f03, 0x0030f3 ] } , - BigNum { limbs: [ 0x3c61e635e16ea6e68378ad80a7bb00, 0x1824c50aa16fccd46c8c0a5d9be527, 0x004d3d ] } , - BigNum { limbs: [ 0x81421cca1ced58197c87517f584501, 0x8f2e6492dbd866656b7bff443c202c, 0x0026b0 ] } , - BigNum { limbs: [ 0x32055cd6e43a26efe507326576562d, 0x3a3febc19c74e00c852874294fe1a0, 0x006623 ] } , - BigNum { limbs: [ 0x8b9ea6291a21d8101af8cc9a89a9d4, 0x6d133ddbe0d3532d52df95788823b3, 0x000dca ] } , - BigNum { limbs: [ 0x920cdabfd84a8600c41c7ed4c36731, 0xe4e20eda21e3bc795bd8f25ded6ef3, 0x000937 ] } , - BigNum { limbs: [ 0x2b972840261178ff3be3802b3c98d0, 0xc2711ac35b6476c07c2f1743ea9660, 0x006ab5 ] } , - BigNum { limbs: [ 0xca1d8869e45cb67ef2f5436db89ce5, 0x428cd15fec9829f4d52d022a11c056, 0x003d18 ] } , - BigNum { limbs: [ 0xf3867a9619ff48810d0abb9247631c, 0x64c6583d90b0094502db0777c644fc, 0x0036d5 ] } , - BigNum { limbs: [ 0xc512d0ba6e3f20da7810f90a14ed63, 0xe965ba4aab15753bb87fe847a6e84a, 0x001400 ] } , - BigNum { limbs: [ 0xf8913245901cde2587ef05f5eb129e, 0xbded6f52d232bdfe1f88215a311d08, 0x005fec ] } , - BigNum { limbs: [ 0xb385262d0e06a7bf046f046933915c, 0x2fcbe3d8e169f25d115b2909df5fae, 0x0070a5 ] } , - BigNum { limbs: [ 0x0a1edcd2f0555740fb90fa96cc6ea5, 0x778745c49bde40dcc6ace097f8a5a5, 0x000348 ] } , - BigNum { limbs: [ 0x8d607f4ee699ae051d64216ef65230, 0xb7a8f24647997c6daa193db1745c67, 0x003466 ] } , - BigNum { limbs: [ 0x304383b117c250fae29bdd9109add1, 0xefaa375735aeb6cc2deecbf063a8ec, 0x003f86 ] } , - BigNum { limbs: [ 0xd5f7ce03dd2713a624911665fba78b, 0x63171cfd358f14986d8c2b99885009, 0x002862 ] } , - BigNum { limbs: [ 0xe7ac34fc2134eb59db6ee89a045876, 0x443c0ca047b91ea16a7bde084fb549, 0x004b8b ] } , - BigNum { limbs: [ 0xfe70a1a000bdeededa81868d68b00a, 0xd7c52f795ab5a3cbe846b833307b38, 0x0063a9 ] } , - BigNum { limbs: [ 0xbf33615ffd9e1021257e7872974ff7, 0xcf8dfa2422928f6defc1516ea78a1a, 0x001043 ] } , - BigNum { limbs: [ 0xe211b10f8f4244573cc1221781e0bc, 0xa9ee4fed8c9defe5bf47c589849963, 0x0002ca ] } , - BigNum { limbs: [ 0xdb9251f06f19baa8c33edce87e1f45, 0xfd64d9aff0aa435418c04418536bef, 0x007122 ] } , - BigNum { limbs: [ 0x377cbd2bf36fcc3ec268ec688da522, 0x1c5a67a005fe6aef4b6396adfc608c, 0x004310 ] } , - BigNum { limbs: [ 0x862745d40aec32c13d971297725adf, 0x8af8c1fd7749c84a8ca472f3dba4c7, 0x0030dd ] } , - BigNum { limbs: [ 0x258de8ab7c6bf6492d72265c8bb286, 0x12dd6a762ba5433ae5253027a86d6c, 0x001e57 ] } , - BigNum { limbs: [ 0x98161a5481f008b6d28dd8a3744d7b, 0x9475bf2751a2effef2e2d97a2f97e7, 0x005596 ] } , - BigNum { limbs: [ 0xfc6245c2276cfe52b9e2e3d8e363f5, 0x8f91391224f82d1509ea7380eb432e, 0x006724 ] } , - BigNum { limbs: [ 0xc141bd3dd6ef00ad461d1b271c9c0c, 0x17c1f08b58500624ce1d9620ecc224, 0x000cc9 ] } , - BigNum { limbs: [ 0xab98917739772b3fcea5a50aafcbdb, 0x2bbc74577df8687bcc2850f602ddf5, 0x002b9d ] } , - BigNum { limbs: [ 0x120b7188c4e4d3c0315a59f5503426, 0x7b96b545ff4fcabe0bdfb8abd5275e, 0x004850 ] } , - BigNum { limbs: [ 0x59749fab0ea4f5cad4d5192ef12ff5, 0xf00a1aaafd469e2d6961368dca2476, 0x002787 ] } , - BigNum { limbs: [ 0x642f6354efb709352b2ae5d10ed00c, 0xb7490ef28001950c6ea6d3140de0dd, 0x004c65 ] } , - BigNum { limbs: [ 0xc74b9514983765d71e1882e1dd7f28, 0x927973e027868355da437798fef908, 0x00730c ] } , - BigNum { limbs: [ 0xf6586deb66249928e1e77c1e2280d9, 0x14d9b5bd55c1afe3fdc49208d90c4a, 0x0000e1 ] } , - BigNum { limbs: [ 0xe18a0dbf32e81b22ac28512f733ac0, 0x88e2477fbf79aba7460fd9c360ec14, 0x006684 ] } , - BigNum { limbs: [ 0xdc19f540cb73e3dd53d7add08cc541, 0x1e70e21dbdce879291f82fde77193e, 0x000d69 ] } , - BigNum { limbs: [ 0x67f6c836862ed38368bc3ff9fe041d, 0x3f6664ca78be793846d6244234b80d, 0x005e13 ] } , - BigNum { limbs: [ 0x55ad3ac9782d2b7c9743bf0601fbe4, 0x67ecc4d30489ba019131e55fa34d46, 0x0015da ] } , - BigNum { limbs: [ 0x95610ecb9899c53b6ead007648781c, 0xf6f4afb976d236fa3357bfa851e961, 0x0022da ] } , - BigNum { limbs: [ 0x2842f43465c239c49152fe89b787e5, 0xb05e79e40675fc3fa4b049f9861bf2, 0x005112 ] } , - BigNum { limbs: [ 0xaa1b5e34bb77878b236035fa24c486, 0x954412900ed54088745ec1f2c16631, 0x0050d0 ] } , - BigNum { limbs: [ 0x1388a4cb42e47774dc9fc905db3b7b, 0x120f170d6e72f2b163a947af169f22, 0x00231d ] } , - BigNum { limbs: [ 0x8a241be93dc8974e02b11bd3a217c2, 0x84a58f018d4c9b113b0587c1e3580c, 0x005870 ] } , - BigNum { limbs: [ 0x337fe716c09367b1fd4ee32c5de83f, 0x22ad9a9beffb98289d0281dff4ad47, 0x001b7d ] } , - BigNum { limbs: [ 0x8dba7176a3140438e61a2bdb947cfb, 0x7d36756abfa6e6de4760c9223ca35d, 0x006d9b ] } , - BigNum { limbs: [ 0x2fe991895b47fac719e5d3246b8306, 0x2a1cb432bda14c5b90a7407f9b61f6, 0x000652 ] } , - BigNum { limbs: [ 0x7a93ae34c98803cc138ce5decb272f, 0x9d92ac58ff78ea09ac3f1bdf706976, 0x002877 ] } , - BigNum { limbs: [ 0x431054cb34d3fb33ec73192134d8d2, 0x09c07d447dcf49302bc8edc2679bdd, 0x004b76 ] } , - BigNum { limbs: [ 0xf0341a13b3565ad286345e7ac747d6, 0x7c023d791f0bdc6832ada0a4abdbb2, 0x001473 ] } , - BigNum { limbs: [ 0xcd6fe8ec4b05a42d79cba08538b82b, 0x2b50ec245e3c56d1a55a68fd2c29a0, 0x005f7a ] } , - BigNum { limbs: [ 0x4c4fa5f5263d07bfb59bd6f3e3410f, 0x1ddc11c537cbfe3ed86585643677f4, 0x00641b ] } , - BigNum { limbs: [ 0x71545d0ad81ef7404a64280c1cbef2, 0x897717d8457c34faffa2843da18d5f, 0x000fd2 ] } , - BigNum { limbs: [ 0x2144b16886b434df3737d784288d49, 0x98ef059d3185cc257d69e121cd84b3, 0x006755 ] } , - BigNum { limbs: [ 0x9c5f519777a7ca20c8c8277bd772b8, 0x0e6424004bc267145a9e28800a80a0, 0x000c98 ] } , - BigNum { limbs: [ 0xdad8f147195417f8e3b085a77afbf2, 0xd402f8d47177c758c7a4112d4a8bea, 0x003aff ] } , - BigNum { limbs: [ 0xe2cb11b8e507e7071c4f795885040f, 0xd35030c90bd06be11063f8748d7968, 0x0038ed ] } , - BigNum { limbs: [ 0x13b822085973279feb3060dee77336, 0xec04bf19f89eb75b9bf5262d598072, 0x002dd3 ] } , - BigNum { limbs: [ 0xa9ebe0f7a4e8d76014cf9e21188ccb, 0xbb4e6a8384a97bde3c12e3747e84e1, 0x004619 ] } , - BigNum { limbs: [ 0xce316d93c6b00bb50855547902c03e, 0x97ca4d2c7b6a0c1945109c1f1e9c3a, 0x006ce3 ] } , - BigNum { limbs: [ 0xef72956c37abf34af7aaaa86fd3fc3, 0x0f88dc7101de272092f76d82b96918, 0x00070a ] } , - BigNum { limbs: [ 0x694267eeda9311b9bc81d1e5f516e1, 0x5846cd4336b188de7c8b11604d8ff0, 0x006fb0 ] } , - BigNum { limbs: [ 0x54619b1123c8ed46437e2d1a0ae920, 0x4f0c5c5a4696aa5b5b7cf8418a7563, 0x00043d ] } , - BigNum { limbs: [ 0x24f213c919d43d562e491138e601de, 0xe28f29fa7cfa57c3839a0140d9f2bb, 0x0007dd ] } , - BigNum { limbs: [ 0x98b1ef36e487c1a9d1b6edc719fe23, 0xc4c3ffa3004ddb76546e0860fe1298, 0x006c0f ] } , - BigNum { limbs: [ 0x6b7e5ff4d425ec22ae86624a026d8f, 0xf1287fe086b18251211dc7db069146, 0x00583a ] } , - BigNum { limbs: [ 0x5225a30b2a3612dd51799cb5fd9272, 0xb62aa9bcf696b0e8b6ea41c6d1740d, 0x001bb2 ] } , - BigNum { limbs: [ 0x80b253331456f274067e67d28a7bf9, 0xe5fb6401d35e8b476c3d92001ca186, 0x000d83 ] } , - BigNum { limbs: [ 0x3cf1afccea050c8bf981972d758408, 0xc157c59ba9e9a7f26bca77a1bb63cd, 0x006669 ] } , - BigNum { limbs: [ 0xd98dbcb16d6b2bc8c4f400030cd5c1, 0x16f7a347bb978b3074eb9fb6094903, 0x0047b1 ] } , - BigNum { limbs: [ 0xe416464e90f0d3373b0bfefcf32a40, 0x905b8655c1b0a809631c69ebcebc4f, 0x002c3c ] } , - BigNum { limbs: [ 0xb330e761da3be1436d1d98942671d5, 0xa5e3e36a9bf331e93cc37de09f5274, 0x006d89 ] } , - BigNum { limbs: [ 0x0a731b9e24201dbc92e2666bd98e2c, 0x016f4632e15501509b448bc138b2df, 0x000664 ] } , - BigNum { limbs: [ 0x3fb3867287d861038cb90b5f9e2564, 0x2156aa8bb80679fa31d23cd3c210ae, 0x0014ef ] } , - BigNum { limbs: [ 0x7df07c8d76839dfc7346f3a061da9d, 0x85fc7f11c541b93fa635ccce15f4a5, 0x005efe ] } , - BigNum { limbs: [ 0x32317a2cdbea65c58c12f0eb455e6b, 0x4698b9e42244abdd2198bdf7fde562, 0x00244b ] } , - BigNum { limbs: [ 0x8b7288d32271993a73ed0e14baa196, 0x60ba6fb95b03875cb66f4ba9da1ff1, 0x004fa2 ] } , - BigNum { limbs: [ 0x8ed195331b98672808faa3ccaafe7d, 0xa34e6b5142c7e48095cf2e1b9d09fa, 0x00138f ] } , - BigNum { limbs: [ 0x2ed26dcce2c397d7f7055b33550184, 0x0404be4c3a804eb94238db863afb59, 0x00605e ] } , - BigNum { limbs: [ 0x6ce50ce8631ddc37c974247e893e37, 0xbafc2e8182867d9f8711636eb28e84, 0x004348 ] } , - BigNum { limbs: [ 0x50bef6179b3e22c8368bda8176c1ca, 0xec56fb1bfac1b59a50f6a6332576cf, 0x0030a4 ] } , - BigNum { limbs: [ 0xdb3d1d363620c7059279cc46720e88, 0x4bc4b85d0584dfd6b5fa91067e76e4, 0x000d5b ] } , - BigNum { limbs: [ 0xe266e5c9c83b37fa6d8632b98df179, 0x5b8e714077c35363220d789b598e6e, 0x006692 ] } , - BigNum { limbs: [ 0x6ad7cae3c87627c98f6b3a48df5a28, 0xd4863b46a956c8dcee098ed888b038, 0x0029fb ] } , - BigNum { limbs: [ 0x52cc381c35e5d7367094c4b720a5d9, 0xd2ccee56d3f16a5ce9fe7ac94f551b, 0x0049f1 ] } , - BigNum { limbs: [ 0xc9b512172293bb81396ff313d3bb80, 0x1736abd6d04b4739c52b4fabaab4dd, 0x005da9 ] } , - BigNum { limbs: [ 0xf3eef0e8dbc8437ec6900bec2c4481, 0x901c7dc6acfcec0012dcb9f62d5075, 0x001644 ] } , - BigNum { limbs: [ 0x977a45ccd1f4913ff0793ba434977c, 0x8bcb0af58a52192a995975d7064454, 0x003af5 ] } , - BigNum { limbs: [ 0x2629bd332c676dc00f86c35bcb6885, 0x1b881ea7f2f61a0f3eae93cad1c0ff, 0x0038f8 ] } , - BigNum { limbs: [ 0xef2fb42e82a91c3aaf009278b4b454, 0xef630dea07dd87c170f9a2a01856a4, 0x00038b ] } , - BigNum { limbs: [ 0xce744ed17bb2e2c550ff6c874b4bad, 0xb7f01bb3756aab78670e6701bfaeae, 0x007061 ] } , - BigNum { limbs: [ 0xc8e73f1fb0956aac66e8dafc81fe1e, 0x059efabd9ae1387d443ddded77add3, 0x00321c ] } , - BigNum { limbs: [ 0xf4bcc3e04dc69453991724037e01e3, 0xa1b42edfe266fabc93ca2bb460577f, 0x0041d1 ] } , - BigNum { limbs: [ 0x3933c1beda8052e1a0aa54ab584031, 0xe11c874ac1ff523154d2355e4e4176, 0x000605 ] } , - BigNum { limbs: [ 0x8470414123dbac1e5f55aa54a7bfd0, 0xc636a252bb48e1088335d44389c3dd, 0x006de7 ] } , - BigNum { limbs: [ 0x434bad0898bac4640aa66581465d9a, 0xaf57ad62903dde30dfbc088a2d14cc, 0x002840 ] } , - BigNum { limbs: [ 0x7a5855f765a13a9bf559997eb9a267, 0xf7fb7c3aed0a5508f84c0117aaf087, 0x004bac ] } , - BigNum { limbs: [ 0xa295c7dfe550262e424716d6fbaa2d, 0xd989cae69b749be1ba8e713c6bf63c, 0x000224 ] } , - BigNum { limbs: [ 0x1b0e3b20190bd8d1bdb8e8290455d4, 0xcdc95eb6e1d397581d7998656c0f17, 0x0071c8 ] } , - BigNum { limbs: [ 0x027b481a99f8d7f13eed8a7afc59cc, 0x1cc9790e8f2c1db924e35b38caf6b5, 0x00086c ] } , - BigNum { limbs: [ 0xbb28bae56463270ec112748503a635, 0x8a89b08eee1c1580b324ae690d0e9e, 0x006b81 ] } , - BigNum { limbs: [ 0x2f35aea290ac55b604c24be38ed2f2, 0xaa61fc26cd5f4c7a8318ba28706e7c, 0x004bf1 ] } , - BigNum { limbs: [ 0x8e6e545d6dafa949fb3db31c712d0f, 0xfcf12d76afe8e6bf54ef4f796796d7, 0x0027fb ] } , - BigNum { limbs: [ 0x44c8d9317399ddb4c3351d1f85a494, 0x5c08fdb7b5f58ca2789772dc1ee600, 0x00527c ] } , - BigNum { limbs: [ 0x78db29ce8ac2214b3ccae1e07a5b6d, 0x4b4a2be5c752a6975f7096c5b91f53, 0x002171 ] } , - BigNum { limbs: [ 0xacd8c18fd788b79108eb0359f985a8, 0xa5fb219c39b3597fd7cdb7cb9ec359, 0x0020c5 ] } , - BigNum { limbs: [ 0x10cb417026d3476ef714fba6067a59, 0x015808014394d9ba003a51d63941fa, 0x005328 ] } , - BigNum { limbs: [ 0x336e8b0eaa01fdee91311271ee45a3, 0x6b1c12f87566ddd0bf944a8e6d750a, 0x003ee3 ] } , - BigNum { limbs: [ 0x8a3577f1545a01116eceec8e11ba5e, 0x3c3716a507e155691873bf136a9049, 0x00350a ] } , - BigNum { limbs: [ 0x0e3a4a2c1307877112e3fc3d4ace71, 0x75e2c927a7c9d2046ce027a513df74, 0x001ada ] } , - BigNum { limbs: [ 0xaf69b8d3eb54778eed1c02c2b53190, 0x31706075d57e61356b27e1fcc425df, 0x005913 ] } , - BigNum { limbs: [ 0x531d011069710c1aadbdf0d9becb26, 0xfe392258bd3c57b360a745e7386083, 0x005264 ] } , - BigNum { limbs: [ 0x6a8701ef94eaf2e552420e264134db, 0xa91a0744c00bdb867760c3ba9fa4d0, 0x002188 ] } , - BigNum { limbs: [ 0xe9187454698944ac775919154154c1, 0x8c85aab132d3f04ce0af0a60f99468, 0x001dba ] } , - BigNum { limbs: [ 0xd48b8eab94d2ba5388a6e5eabeab40, 0x1acd7eec4a7442ecf758ff40de70ea, 0x005633 ] } , - BigNum { limbs: [ 0x6c1604b24820a3770340790d55dc4c, 0x70485191eb56fc775110f342bec6f3, 0x003e60 ] } , - BigNum { limbs: [ 0x518dfe4db63b5b88fcbf85f2aa23b5, 0x370ad80b91f136c286f7165f193e60, 0x00358d ] } , - BigNum { limbs: [ 0xeafb428e38a30928c22245d72bb2a3, 0xce32f7e962fa2b3e31afd97e204be3, 0x004902 ] } , - BigNum { limbs: [ 0xd2a8c071c5b8f5d73dddb928d44d5e, 0xd92031b41a4e07fba6583023b7b96f, 0x002aea ] } , - BigNum { limbs: [ 0x3a451584a96e0ef35f980490fcc053, 0xd4e5faca74e951f07361d72a49f4b1, 0x00173b ] } , - BigNum { limbs: [ 0x835eed7b54edf00ca067fa6f033fae, 0xd26d2ed3085ee14964a632778e10a2, 0x005cb1 ] } , - BigNum { limbs: [ 0x2e15a71ff3bb6b1793eb9057fda39b, 0x6d1eafc21e45b97be27adfc8bad8f1, 0x00170c ] } , - BigNum { limbs: [ 0x8f8e5be00aa093e86c146ea8025c66, 0x3a3479db5f0279bdf58d29d91d2c62, 0x005ce1 ] } , - BigNum { limbs: [ 0x91a01cb11e1d388fbbb51771aacdbc, 0x5543e381889b38beaaccd6ea72786b, 0x003dcd ] } , - BigNum { limbs: [ 0x2c03e64ee03ec670444ae78e553245, 0x520f461bf4acfa7b2d3b32b7658ce8, 0x003620 ] } , - BigNum { limbs: [ 0x1b2c2bf57e2ffa8bff0d76e779efd8, 0x136e7973448a6e8452d09af6d4fe0b, 0x002579 ] } , - BigNum { limbs: [ 0xa277d70a802c047400f28818861029, 0x93e4b02a38bdc4b585376eab030748, 0x004e74 ] } , - BigNum { limbs: [ 0x965114af80d5f237b8489e744cdb6a, 0x34a8111b5e6c4c02091f65cedfc07a, 0x000798 ] } , - BigNum { limbs: [ 0x2752ee507d860cc847b7608bb32497, 0x72ab18821edbe737cee8a3d2f844d9, 0x006c55 ] } , - BigNum { limbs: [ 0xe7ccd1f49218bcde0a39b54757baf4, 0x55b1570da586ba40c31e363e1506aa, 0x006c6a ] } , - BigNum { limbs: [ 0xd5d7310b6c434221f5c649b8a8450d, 0x51a1d28fd7c178f914e9d363c2fea8, 0x000783 ] } , - BigNum { limbs: [ 0xd75a4c1d0a47bc8a57f67a92771886, 0xf7e713a14f663701ec08b9515cc1d4, 0x00504d ] } , - BigNum { limbs: [ 0xe649b6e2f4144275a809846d88e77b, 0xaf6c15fc2de1fc37ebff50507b437e, 0x00239f ] } , - BigNum { limbs: [ 0x4a6f5157ee66feed092f02034b4427, 0x089313ebbb63ab112c6e47f651c56b, 0x004f80 ] } , - BigNum { limbs: [ 0x7334b1a80ff50012f6d0fcfcb4bbda, 0x9ec015b1c1e48828ab99c1ab863fe8, 0x00246d ] } , - BigNum { limbs: [ 0x960a2dbf6b89282bb928b6c2bc3afc, 0x9de0cb3644273fde5012c262290cdd, 0x000f2b ] } , - BigNum { limbs: [ 0x2799d54092d2d6d446d7483d43c505, 0x09725e673920f35b87f5473faef876, 0x0064c2 ] } , - BigNum { limbs: [ 0xd8f900e407b7f428bce7e30c66a081, 0xa99e4a437b505d95dfd1630242422e, 0x005a1e ] } , - BigNum { limbs: [ 0xe4ab021bf6a40ad743181bf3995f80, 0xfdb4df5a01f7d5a3f836a69f95c324, 0x0019ce ] } , - BigNum { limbs: [ 0x7d648cf9f44e1804ceeaa511f4fae9, 0x69d70232147b3a090bcaa59c776b2b, 0x0041e4 ] } , - BigNum { limbs: [ 0x403f76060a0de6fb311559ee0b0518, 0x3d7c276b68ccf930cc3d6405609a28, 0x003209 ] } , - BigNum { limbs: [ 0x25da2e047033fefbbcff900fcc827f, 0x02ebc6464d846f98cb09f9865d83d0, 0x004d59 ] } , - BigNum { limbs: [ 0x97c9d4fb8e28000443006ef0337d82, 0xa46763572fc3c3a10cfe101b7a8183, 0x002694 ] } , - BigNum { limbs: [ 0xee0ffdf718781e60b137ab482066e4, 0xbc8d78d3c3cc9173a7c9c3c994b807, 0x001459 ] } , - BigNum { limbs: [ 0xcf940508e5e3e09f4ec853b7df991d, 0xeac5b0c9b97ba1c6303e45d8434d4b, 0x005f93 ] } , - BigNum { limbs: [ 0x525bc3d1cd03ba13854305ef54b104, 0x6d82f16d68853bf7bb74b643ac07c9, 0x000956 ] } , - BigNum { limbs: [ 0x6b483f2e315844ec7abcf910ab4efd, 0x39d0383014c2f7421c93535e2bfd8a, 0x006a97 ] } , - BigNum { limbs: [ 0x5e2f10a51b5409e93521dc76f14b89, 0x6a17ed37cedbd2dff79cd54a6ea067, 0x000beb ] } , - BigNum { limbs: [ 0x5f74f25ae307f516cade22890eb478, 0x3d3b3c65ae6c6059e06b34576964ec, 0x006802 ] } , - BigNum { limbs: [ 0x55735e16b82bb0a2073fb0e02a7667, 0x7f1df880e7c227e024663dc027bae4, 0x006a70 ] } , - BigNum { limbs: [ 0x6830a4e946304e5df8c04e1fd5899a, 0x2835311c95860b59b3a1cbe1b04a6f, 0x00097d ] } , - BigNum { limbs: [ 0x3c367ca1d1ffe6e2ae57afb246966b, 0xe0e87f964513f8ddba3c5316c7ec75, 0x0013e7 ] } , - BigNum { limbs: [ 0x816d865e2c5c181d51a84f4db96996, 0xc66aaa0738343a5c1dcbb68b1018de, 0x006005 ] } , - BigNum { limbs: [ 0xb3e11681c510a6dd5a6a3e91095dc7, 0x32d749c30d1dc4895811317d780782, 0x004019 ] } , - BigNum { limbs: [ 0x09c2ec7e394b5822a595c06ef6a23a, 0x747bdfda702a6eb07ff6d8245ffdd1, 0x0033d4 ] } , - BigNum { limbs: [ 0xbd453fb132b4682cdfe9db0ff4374b, 0x9c9a35f12409aee55906ba0e6f2ed2, 0x003225 ] } , - BigNum { limbs: [ 0x005ec34ecba796d3201623f00bc8b6, 0x0ab8f3ac593e84547f014f9368d681, 0x0041c8 ] } , - BigNum { limbs: [ 0xc6f53956b47ef98c1e4633a1e79a90, 0xf8a65c0009dce5d7361d5906eb273a, 0x002444 ] } , - BigNum { limbs: [ 0xf6aec9a949dd0573e1b9cb5e186571, 0xaeaccd9d736b4d62a1eab09aecde18, 0x004fa8 ] } , - BigNum { limbs: [ 0x73a69a942f840ad1d45960e9d626dc, 0xfe77b2223aa587ca2ddd92f73d486e, 0x001875 ] } , - BigNum { limbs: [ 0x49fd686bced7f42e2ba69e1629d925, 0xa8db777b42a2ab6faa2a76aa9abce5, 0x005b77 ] } , - BigNum { limbs: [ 0x880501279a899bcee868ce8587a13b, 0x8f1b04bfd10c7250976724baad776d, 0x0018f1 ] } , - BigNum { limbs: [ 0x359f01d863d263311797307a785ec6, 0x183824ddac3bc0e940a0e4e72a8de6, 0x005afc ] } , - BigNum { limbs: [ 0xb3d3b950311f02a824f0ba9a8f2963, 0x7cb97acb4245d1566d60c3a6ba5720, 0x0036d4 ] } , - BigNum { limbs: [ 0x09d049afcd3cfc57db0f446570d69e, 0x2a99aed23b0261e36aa745fb1dae33, 0x003d19 ] } , - BigNum { limbs: [ 0x8992a0b4aebe62c3176cafbba6ece2, 0x3e3e42733334ed43caff7cac4fa484, 0x005665 ] } , - BigNum { limbs: [ 0x3411624b4f9d9c3ce8934f4459131f, 0x6914e72a4a1345f60d088cf58860cf, 0x001d88 ] } , - BigNum { limbs: [ 0x3e333e731c6d86ea2f0310654c1c69, 0x45e320a61c7930dd4640b8259046fa, 0x0072e0 ] } , - BigNum { limbs: [ 0x7f70c48ce1ee7815d0fcee9ab3e398, 0x617008f760cf025c91c7517c47be59, 0x00010d ] } , - BigNum { limbs: [ 0xb4fac3c927f6e90d16741ca2ea19f3, 0x2ea688ce95690fb3e7765ded195901, 0x005fc4 ] } , - BigNum { limbs: [ 0x08a93f36d66515f2e98be25d15e60e, 0x78aca0cee7df2385f091abb4beac52, 0x001429 ] } , - BigNum { limbs: [ 0x38250aebdfea19439e2c0f3fec014c, 0x0c68a0cd2567ed61c7c501f9cc757c, 0x005f62 ] } , - BigNum { limbs: [ 0x857ef8141e71e5bc61d3efc013feb5, 0x9aea88d057e045d8104307a80b8fd7, 0x00148b ] } , - BigNum { limbs: [ 0x315044d26ab11b7f5d7bffe0b305c8, 0x73d2528c3d883247ea42471dd1c0ed, 0x006381 ] } , - BigNum { limbs: [ 0x8c53be2d93aae380a283ff1f4cfa39, 0x3380d7113fc000f1edc5c284064466, 0x00106c ] } , - BigNum { limbs: [ 0x80ec4b796d3c1fa24716c0654b3fca, 0x7624f7423ea31f36512a3c42e181bd, 0x006902 ] } , - BigNum { limbs: [ 0x3cb7b786911fdf5db8e93e9ab4c037, 0x312e325b3ea5140386ddcd5ef68396, 0x000aeb ] } , - BigNum { limbs: [ 0xd55c9043bd712ec2374a085a04cf77, 0x4dce95290db96dbc6e981c87cc0d39, 0x0039dd ] } , - BigNum { limbs: [ 0xe84772bc40ead03dc8b5f6a5fb308a, 0x598494746f8ec57d696fed1a0bf819, 0x003a10 ] } , - BigNum { limbs: [ 0xbf7472dae4da3860bf9e6bf6e31812, 0xb2cbafa33fb884780e7c68542c3f12, 0x006bd1 ] } , - BigNum { limbs: [ 0xfe2f90251981c69f406193091ce7ef, 0xf48779fa3d8faec1c98ba14dabc640, 0x00081b ] } , - BigNum { limbs: [ 0xdd1b58249906be9ff079ce58af3199, 0xcedb6916a28c6ca682e24066db3c86, 0x001c77 ] } , - BigNum { limbs: [ 0xe088aadb655540600f8630a750ce68, 0xd877c086dabbc6935525c93afcc8cc, 0x005775 ] } , - BigNum { limbs: [ 0xb2c473d5eff1b216b4e9b27e7dd10b, 0x04f3b5c0b97878d28972a2a650511c, 0x0052f6 ] } , - BigNum { limbs: [ 0x0adf8f2a0e6a4ce94b164c81822ef6, 0xa25f73dcc3cfba674e9566fb87b437, 0x0020f7 ] } , - BigNum { limbs: [ 0x8ad7d4ab3b17b51f1f8779e781781b, 0x9112fa9f6cf5817199711eebb68441, 0x00416b ] } , - BigNum { limbs: [ 0x32cc2e54c34449e0e07885187e87e6, 0x16402efe1052b1c83e96eab6218112, 0x003282 ] } , - BigNum { limbs: [ 0x388900a081efcebb6ed1c6d5c49f1c, 0xb4fd14ec51aeca9da4521c768d51ec, 0x001d1d ] } , - BigNum { limbs: [ 0x851b025f7c6c3044912e382a3b60e5, 0xf25614b12b99689c33b5ed2b4ab367, 0x0056cf ] } , - BigNum { limbs: [ 0x7bc9af0716769144464acf1f36c0d2, 0xf594e8c1b0eaeb8fc60143a855ad12, 0x006cdf ] } , - BigNum { limbs: [ 0x41da53f8e7e56dbbb9b52fe0c93f2f, 0xb1be40dbcc5d47aa1206c5f9825841, 0x00070d ] } , - BigNum { limbs: [ 0x9c31869ce1406981ccf144abd15da6, 0x3ce0bc31b687d449f891cf11c7f71e, 0x0032a7 ] } , - BigNum { limbs: [ 0x21727c631d1b957e330eba542ea25b, 0x6a726d6bc6c05eefdf763a90100e35, 0x004146 ] } , - BigNum { limbs: [ 0x3287e1eea50550f6cff67feb0214a3, 0x2edb568a00aaae9ef31c7368529f7b, 0x001469 ] } , - BigNum { limbs: [ 0x8b1c21115956ae0930097f14fdeb5e, 0x7877d3137c9d849ae4eb96398565d8, 0x005f84 ] } , - BigNum { limbs: [ 0x1765e37219c59a01744eaf22f61cd5, 0xa5ee072d800a1ddf4a71f83fdd1ad2, 0x005ac1 ] } , - BigNum { limbs: [ 0xa63e1f8de49664fe8bb14fdd09e32c, 0x0165226ffd3e155a8d961161faea81, 0x00192c ] } , - BigNum { limbs: [ 0x9cafd3f14593be08db6cfdab4f5cbc, 0x28b7d9ee0088d8fd5273b9e4c23a8a, 0x0057b4 ] } , - BigNum { limbs: [ 0x20f42f0eb8c840f724930154b0a345, 0x7e9b4faf7cbf5a3c85944fbd15cac9, 0x001c39 ] } , - BigNum { limbs: [ 0x1d9eb5efde33ed0116fc035b9ef1e4, 0xbde86d834a067c0302160fb86d4f84, 0x00151e ] } , - BigNum { limbs: [ 0xa0054d10202811fee903fba4610e1d, 0xe96abc1a3341b736d5f1f9e96ab5cf, 0x005ece ] } , - BigNum { limbs: [ 0x6855f02b9c14d37b254b4c16aecf49, 0xebabeb3d7ef48c4988b6f7e98663fa, 0x0034ca ] } , - BigNum { limbs: [ 0x554e12d462472b84dab4b2e95130b8, 0xbba73e5ffe53a6f04f5111b851a159, 0x003f22 ] } , - BigNum { limbs: [ 0x018d3725a347a231aef389d1650159, 0xe15e3ad0ea849dd9032a8990ebcab4, 0x00055b ] } , - BigNum { limbs: [ 0xbc16cbda5b145cce510c752e9afea8, 0xc5f4eecc92c39560d4dd8010ec3a9f, 0x006e91 ] } , - BigNum { limbs: [ 0x291cf291adb45adf4f59597e92099f, 0x5f789f1b1294ee932d062fe4dad38d, 0x0016a6 ] } , - BigNum { limbs: [ 0x9487106e50a7a420b0a6a5816df662, 0x47da8a826ab344a6ab01d9bcfd31c6, 0x005d47 ] } , - BigNum { limbs: [ 0x6c7c3031e114547e10569404305b4e, 0x0bfd1bdf8a97e9ebe9b3a7f47018b5, 0x005d66 ] } , - BigNum { limbs: [ 0x5127d2ce1d47aa81efa96afbcfa4b3, 0x9b560dbdf2b0494dee5461ad67ec9e, 0x001687 ] } , - BigNum { limbs: [ 0xd91b48dadb210c247b1a81979f35c0, 0x6ac519183e52453eabbc8a1e13a637, 0x0065d5 ] } , - BigNum { limbs: [ 0xe488ba25233af2db84e57d6860ca41, 0x3c8e10853ef5edfb2c4b7f83c45f1b, 0x000e18 ] } , - BigNum { limbs: [ 0xf9c0f86360276418f827bbe6225400, 0xde0c2c3ab91f997809bf4d6d1952fa, 0x0026db ] } , - BigNum { limbs: [ 0xc3e30a9c9e349ae707d84319ddac01, 0xc946fd62c42899c1ce48bc34beb258, 0x004d11 ] } , - BigNum { limbs: [ 0x80d9b39a09327511be38f00fe0e15b, 0x0ed0b718d075007221b4e63392be47, 0x006b81 ] } , - BigNum { limbs: [ 0x3cca4f65f52989ee41c70ef01f1ea6, 0x98827284acd332c7b653236e45470c, 0x00086c ] } , - BigNum { limbs: [ 0x37d5f8a16c4f0f051e1aa4af01a637, 0x04ef549725e3a992bf6d27f26ad9a0, 0x006706 ] } , - BigNum { limbs: [ 0x85ce0a5e920ceffae1e55a50fe59ca, 0xa263d506576489a7189ae1af6d2bb3, 0x000ce7 ] } , - BigNum { limbs: [ 0xd3148a4e36e3f07250f3cf33f08243, 0x11b3253731a2f1970b62d2eeb13eaf, 0x001c8e ] } , - BigNum { limbs: [ 0xea8f78b1c7780e8daf0c2fcc0f7dbe, 0x95a004664ba541a2cca536b326c6a3, 0x00575f ] } , - BigNum { limbs: [ 0xd921850e3e933c628e568582ec954a, 0x63d8ead24230b1313472e590e57dc9, 0x0010ec ] } , - BigNum { limbs: [ 0xe4827df1bfc8c29d71a9797d136ab7, 0x437a3ecb3b178208a3952410f28789, 0x006301 ] } , - BigNum { limbs: [ 0xca58916c4689cf7045743933f004c4, 0x0c8b650b839487fbfdffef881252a8, 0x0025e5 ] } , - BigNum { limbs: [ 0xf34b7193b7d22f8fba8bc5cc0ffb3d, 0x9ac7c491f9b3ab3dda081a19c5b2aa, 0x004e08 ] } , - BigNum { limbs: [ 0x98a02aabd7ff53948a74e7d72a06cd, 0x3cd150debfd777dd0e7b4cd77e3590, 0x006129 ] } , - BigNum { limbs: [ 0x2503d854265cab6b758b1728d5f934, 0x6a81d8bebd70bb5cc98cbcca59cfc3, 0x0012c4 ] } , - BigNum { limbs: [ 0x8d3c5d8e2ae3c2772ae3260559361e, 0x29d913bae95cd300eb8ed538a67baf, 0x006233 ] } , - BigNum { limbs: [ 0x3067a571d3783c88d51cd8faa6c9e3, 0x7d7a15e293eb6038ec7934693189a4, 0x0011ba ] } , - BigNum { limbs: [ 0x7cb9e132d2958e4a821d18d001905b, 0x4d1e9a0e31c08c8b929e83caa601f1, 0x0042c1 ] } , - BigNum { limbs: [ 0x40ea21cd2bc670b57de2e62ffe6fa6, 0x5a348f8f4b87a6ae456985d7320362, 0x00312c ] } , - BigNum { limbs: [ 0xb6a6109f87dc09a945ddfd3194d6d4, 0x6a5b221a98193db17c13a115ad244a, 0x006b90 ] } , - BigNum { limbs: [ 0x06fdf260767ff556ba2201ce6b292d, 0x3cf80782e52ef5885bf4688c2ae109, 0x00085d ] } , - BigNum { limbs: [ 0xb409a53b4e735b3e20998093f034d1, 0x4132904aebad93d405cac07f33f025, 0x002dcc ] } , - BigNum { limbs: [ 0x099a5dc4afe8a3c1df667e6c0fcb30, 0x66209952919a9f65d23d4922a4152e, 0x004621 ] } , - BigNum { limbs: [ 0x347967c3bc6e57d128b5e565be28ca, 0xd7c469a307201e75fc005a4b76b707, 0x0040d8 ] } , - BigNum { limbs: [ 0x892a9b3c41eda72ed74a199a41d737, 0xcf8ebffa762814c3dc07af56614e4c, 0x003314 ] } , - BigNum { limbs: [ 0xe64499b0d7caec0b00709d16ad9a83, 0xb54c8d72e98d795445bdfc60240f61, 0x00365f ] } , - BigNum { limbs: [ 0xd75f694f269112f4ff8f61e952657e, 0xf2069c2a93bab9e5924a0d41b3f5f1, 0x003d8d ] } , - BigNum { limbs: [ 0xd7a3987f769bcdcca9e87f5a7f1839, 0x28c04a0ebb7cef135ae7b8e3362098, 0x000aaf ] } , - BigNum { limbs: [ 0xe6006a8087c0313356177fa580e7c8, 0x7e92df8ec1cb44267d2050bea1e4ba, 0x00693e ] } , - BigNum { limbs: [ 0x46526f56e933837b9a7281e045bece, 0xca3c7024fc860c906c9a837e1ef6c9, 0x0051c3 ] } , - BigNum { limbs: [ 0x775193a915287b84658d7d1fba4133, 0xdd16b97880c226a96b6d8623b90e8a, 0x002229 ] } , - BigNum { limbs: [ 0x7bf2539257c17e7aad249861212753, 0x694837b9391d085fa60b9f017e7069, 0x0036a0 ] } , - BigNum { limbs: [ 0x41b1af6da69a808552db669eded8ae, 0x3e0af1e4442b2ada31fc6aa05994ea, 0x003d4d ] } , - BigNum { limbs: [ 0x08ab2a2ad21968eec3c5de94bad69d, 0xc186cf00b349406509fe76f63710de, 0x0054c8 ] } , - BigNum { limbs: [ 0xb4f8d8d52c4296113c3a206b452964, 0xe5cc5a9cc9fef2d4ce0992aba0f475, 0x001f24 ] } , - BigNum { limbs: [ 0x944f00370ccf4f13fb91c643fb2d66, 0x95a692611ba92c8972a756f96cb36c, 0x003bbe ] } , - BigNum { limbs: [ 0x295502c8f18cafec046e38bc04d29b, 0x11ac973c619f06b06560b2a86b51e7, 0x00382f ] } , - BigNum { limbs: [ 0x272c6068d63114246a617ab5b1d7c1, 0xc9ed81babb1d1bd763ca4d6bdfd295, 0x005026 ] } , - BigNum { limbs: [ 0x9677a297282aeadb959e844a4e2840, 0xdd65a7e2c22b1762743dbc35f832be, 0x0023c6 ] } , - BigNum { limbs: [ 0x951e797897dba86fdf5cf1dc0d5e2d, 0xeff498b8905fcb05b3a6dd0acdcfa0, 0x00328e ] } , - BigNum { limbs: [ 0x288589876680569020a30d23f2a1d4, 0xb75e90e4ece8683424612c970a35b3, 0x00415e ] } , - BigNum { limbs: [ 0x6c51f4dd49bc1edfaec8846128af8c, 0xec951e59e820a34667352ae9d5dc49, 0x00565e ] } , - BigNum { limbs: [ 0x51520e22b49fe02051377a9ed75075, 0xbabe0b4395278ff370d2deb802290a, 0x001d8e ] } , - BigNum { limbs: [ 0x564a7da1b902e56caf3d28aac9a3c4, 0xb58e63be683db556ce006a3e0689cf, 0x0032f3 ] } , - BigNum { limbs: [ 0x6759855e4559199350c2d655365c3d, 0xf1c4c5df150a7de30a079f63d17b84, 0x0040f9 ] } , - BigNum { limbs: [ 0xc813f4bdbc74d2b530d23b962f2a33, 0xdc158b69f2a11da67680a3c4d0af46, 0x004500 ] } , - BigNum { limbs: [ 0xf5900e4241e72c4acf2dc369d0d5ce, 0xcb3d9e338aa71593618765dd07560c, 0x002eec ] } , - BigNum { limbs: [ 0x5b041f5f9708988f8dae3158baa4f0, 0xfeb5f831eb4b4062055dbcce3169b1, 0x00257e ] } , - BigNum { limbs: [ 0x629fe3a0675366707251cda7455b11, 0xa89d316b91fcf2d7d2aa4cd3a69ba2, 0x004e6e ] } , - BigNum { limbs: [ 0xd87eea1587a122a77fcdb6e01fc805, 0xddb0d6f819ff9a970fd511c11cc817, 0x005111 ] } , - BigNum { limbs: [ 0xe52518ea76badc588032481fe037fc, 0xc9a252a5634898a2c832f7e0bb3d3b, 0x0022db ] } , - BigNum { limbs: [ 0xcbb32eecd136f3bd36b91fbcc4d9b6, 0x5004d39bdc27c60b52058c6a5d992c, 0x0036d5 ] } , - BigNum { limbs: [ 0xf1f0d4132d250b42c946df433b264b, 0x574e5601a1206d2e86027d377a6c26, 0x003d18 ] } , - BigNum { limbs: [ 0x31775507138bf4d55710af424be9d8, 0xced1d9e77067fa868a71c6f77de16d, 0x006ab5 ] } , - BigNum { limbs: [ 0x8c2cadf8ead00a2aa8ef4fbdb41629, 0xd8814fb60ce038b34d9642aa5a23e6, 0x000937 ] } , - BigNum { limbs: [ 0x22be3aea24e089a73c2d0794e42fd6, 0x2e20bfe4966c7b20ecd45027f90dba, 0x002641 ] } , - BigNum { limbs: [ 0x9ae5c815d97b7558c3d2f76b1bd02b, 0x793269b8e6dbb818eb33b979def799, 0x004dac ] } , - BigNum { limbs: [ 0x44e9ca24af3f23db594c625e551d2f, 0xaa708ba0d9387fc2ea6188ea73aeba, 0x005797 ] } , - BigNum { limbs: [ 0x78ba38db4f1cdb24a6b39ca1aae2d2, 0xfce29dfca40fb376eda680b7645699, 0x001c55 ] } , - BigNum { limbs: [ 0x1a389fbb63a04a5f354e65971de4d9, 0x55f4c40d039d403ad68fd45a57b606, 0x00422e ] } , - BigNum { limbs: [ 0xa36b63449abbb4a0cab19968e21b28, 0x515e659079aaf2ff01783547804f4d, 0x0031bf ] } , - BigNum { limbs: [ 0xb6cdeb0f626ed00651b1676d885461, 0x33380951bff039cc3eca9b8f12386f, 0x0033f6 ] } , - BigNum { limbs: [ 0x06d617f09bed2ef9ae4e979277aba0, 0x741b204bbd57f96d993d6e12c5cce4, 0x003ff7 ] } , - BigNum { limbs: [ 0xda6ff3d514cd34f981d24464db09e3, 0x09b0db598773f7ce184aa37ed63aa3, 0x0007f7 ] } , - BigNum { limbs: [ 0xe3340f2ae98eca067e2dba9b24f61e, 0x9da24e43f5d43b6bbfbd662301caaf, 0x006bf6 ] } , - BigNum { limbs: [ 0xd1f0ef63638923521de4c4c32db9ab, 0xbf2f35a097b959e1e80e2b91530396, 0x0021cc ] } , - BigNum { limbs: [ 0xebb3139c9ad2dbade21b3a3cd24656, 0xe823f3fce58ed957eff9de108501bc, 0x005220 ] } , - BigNum { limbs: [ 0xd4938d032e32e3680c16c5a25aa156, 0x3cf7027be69cc607157d64fd6ad8aa, 0x007110 ] } , - BigNum { limbs: [ 0xe91075fcd0291b97f3e9395da55eab, 0x6a5c272196ab6d32c28aa4a46d2ca8, 0x0002dd ] } , - BigNum { limbs: [ 0x49f11bcd26167e652046ce1ccb0b04, 0x0ab5a536a2bc4ae3bc899b9f299d3d, 0x006f24 ] } , - BigNum { limbs: [ 0x73b2e732d845809adfb930e334f4fd, 0x9c9d8466da8be8561b7e6e02ae6816, 0x0004c9 ] } , - BigNum { limbs: [ 0x86d07b2a764c768bf2bded30b49e55, 0x35c886192d15cdecb2b5626ba1982a, 0x001d5e ] } , - BigNum { limbs: [ 0x36d387d5880f88740d4211cf4b61ac, 0x718aa3845032654d2552a736366d29, 0x00568f ] } , - BigNum { limbs: [ 0x741dccc9d3b837864148660c5ff769, 0x674a258c9a5f5df0c9cf432b619672, 0x0044a4 ] } , - BigNum { limbs: [ 0x498636362aa3c779beb798f3a00898, 0x40090410e2e8d5490e38c676766ee1, 0x002f49 ] } , - BigNum { limbs: [ 0xf349c07945e5e0edb443dca4bddafd, 0xb2d557f9bc8f70459aa181f5b2c711, 0x00091a ] } , - BigNum { limbs: [ 0xca5a4286b8761e124bbc225b422504, 0xf47dd1a3c0b8c2f43d6687ac253e41, 0x006ad2 ] } , - BigNum { limbs: [ 0x00d055d2a9b0bc6d8a5054451ad0e3, 0x34fba2e3d54058c59b99b8084fe171, 0x007059 ] } , - BigNum { limbs: [ 0xbcd3ad2d54ab429275afaabae52f1e, 0x725786b9a807da743c6e51998823e2, 0x000394 ] } , - BigNum { limbs: [ 0xdf38bbada9907b5c19b4d0ea2cf552, 0xe3137f39dc7cc1b70fdd68b0c23c3a, 0x0064a0 ] } , - BigNum { limbs: [ 0xde6b475254cb83a3e64b2e15d30aaf, 0xc43faa63a0cb7182c82aa0f115c918, 0x000f4c ] } , - BigNum { limbs: [ 0xf33e0433d82ab9c8eb3ce41f9b3865, 0x856912a85c660aad656ffeb6c2bf63, 0x006c1f ] } , - BigNum { limbs: [ 0xca65fecc2631453714c31ae064c79c, 0x21ea16f520e2288c72980aeb1545ef, 0x0007ce ] } , - BigNum { limbs: [ 0xa761ed7f56302d96809abbf18276db, 0xe1596b71f9bc589a263dde7e697951, 0x005505 ] } , - BigNum { limbs: [ 0x16421580a82bd1697f65430e7d8926, 0xc5f9be2b838bda9fb1ca2b236e8c02, 0x001ee7 ] } , - BigNum { limbs: [ 0x4999895b894e7b3bcce44cd25431fe, 0x099c42c3c3a0f3e1f8c910f610b39b, 0x00349e ] } , - BigNum { limbs: [ 0x740a79a4750d83c4331bb22dabce03, 0x9db6e6d9b9a73f57df3ef8abc751b8, 0x003f4f ] } , - BigNum { limbs: [ 0xef365d8f564d8665d97d20da8a4880, 0x019e35705d3df95a130822cd786187, 0x005d09 ] } , - BigNum { limbs: [ 0xce6da570a80e789a2682de2575b781, 0xa5b4f42d200a39dfc4ffe6d45fa3cb, 0x0016e4 ] } , - BigNum { limbs: [ 0xbc1a689171d2cf978fe23164f37571, 0xf0e9d4f0de132b3dd8b8c5ad4beab0, 0x0073cf ] } , - BigNum { limbs: [ 0x01899a6e8c892f68701dcd9b0c8a90, 0xb66954ac9f3507fbff4f43f48c1aa3, 0x00001d ] } , - BigNum { limbs: [ 0x3ffb8f77520ffff2a23b550a4ab2db, 0x0b24e9dfe12818744d82593f6f34d6, 0x0057cf ] } , - BigNum { limbs: [ 0x7da87388ac4bff0d5dc4a9f5b54d26, 0x9c2e3fbd9c201ac58a85b06268d07d, 0x001c1e ] } , - BigNum { limbs: [ 0x997826bfc8ad389e25e3fe6cef99eb, 0x78749cc708a949a477553bc2f4fc33, 0x000ab3 ] } , - BigNum { limbs: [ 0x242bdc4035aec661da1c0093106616, 0x2ede8cd6749ee99560b2cddee30920, 0x00693a ] } , - BigNum { limbs: [ 0x586184211e1e67d4f1c280878dd156, 0xde92b22d5da44740e70657943af37e, 0x0059db ] } , - BigNum { limbs: [ 0x65427edee03d972b0e3d7e78722eab, 0xc8c077701fa3ebf8f101b20d9d11d5, 0x001a11 ] } , - BigNum { limbs: [ 0xcda463a8d1c74bd10369bd08096f25, 0xee4c927ff242f2211ffa4190c7122f, 0x0005f6 ] } , - BigNum { limbs: [ 0xefff9f572c94b32efc9641f7f690dc, 0xb906971d8b054118b80dc81110f323, 0x006df6 ] } , - BigNum { limbs: [ 0x064b923b363ae2563bf5faa91ed24b, 0xba6d9970e394849ed4fd6170ed5c48, 0x0061b0 ] } , - BigNum { limbs: [ 0xb75870c4c8211ca9c40a0456e12db6, 0xece5902c99b3ae9b030aa830eaa90b, 0x00123c ] } , - BigNum { limbs: [ 0xac287e54e95f83e124da9b67220f6a, 0x9a86ccaef3e24ca64c8224be01c20b, 0x005fe6 ] } , - BigNum { limbs: [ 0x117b84ab14fc7b1edb256398ddf097, 0x0ccc5cee8965e6938b85e4e3d64348, 0x001407 ] } , - BigNum { limbs: [ 0xbdc8bec4ca55090a1159e33226fddc, 0x01452a43350e9ccd0a8ad0d9ab6b1b, 0x004ded ] } , - BigNum { limbs: [ 0xffdb443b3406f5f5eea61bcdd90225, 0xa60dff5a4839966ccd7d38c82c9a37, 0x002600 ] } , - BigNum { limbs: [ 0x5e1c54792bce639cc1766f87d12b83, 0xfc8a65c7f929a997bfdd4f35e3ed22, 0x003339 ] } , - BigNum { limbs: [ 0x5f87ae86d28d9b633e898f782ed47e, 0xaac8c3d5841e89a2182aba6bf41831, 0x0040b3 ] } , - BigNum { limbs: [ 0xa43adf717e6f5462df3334e6f50603, 0x78efac810f398ebea89d164fda7eb5, 0x00194a ] } , - BigNum { limbs: [ 0x1969238e7fecaa9d20ccca190af9fe, 0x2e637d1c6e0ea47b2f6af351fd869e, 0x005aa3 ] } , - BigNum { limbs: [ 0xc24e588eeaf243b62ac02fe31ee32e, 0x8a30a21a1e10ea55f945e2ab111301, 0x004765 ] } , - BigNum { limbs: [ 0xfb55aa711369bb49d53fcf1ce11cd3, 0x1d2287835f3748e3dec226f6c6f251, 0x002c88 ] } , - BigNum { limbs: [ 0xc6c68d42f47a67560dced4fdd1fa58, 0x7540ddef6d67d1f5d35735e4bd5e3b, 0x002f01 ] } , - BigNum { limbs: [ 0xf6dd75bd09e197a9f2312a022e05a9, 0x32124bae0fe0614404b0d3bd1aa717, 0x0044ec ] } , - BigNum { limbs: [ 0xca9e3b165ffd945b504b3bb34e64db, 0x5e2e8b0cfbfa61bd24d49a89618b24, 0x0012ad ] } , - BigNum { limbs: [ 0xf305c7e99e5e6aa4afb4c34cb19b26, 0x49249e90814dd17cb3336f18767a2e, 0x006140 ] } , - BigNum { limbs: [ 0x96f2f1c97a5e1a3a3e804ffc87763e, 0xbb98eb7f7419a70793f2a8652ad8ed, 0x002c07 ] } , - BigNum { limbs: [ 0x26b1113683fde4c5c17faf037889c3, 0xebba3e1e092e8c324415613cad2c66, 0x0047e5 ] } , - BigNum { limbs: [ 0x140327f4c971e021cd8ea769a094a8, 0xaaff762d242c005f3353a3f16a497c, 0x002959 ] } , - BigNum { limbs: [ 0xa9a0db0b34ea1ede327157965f6b59, 0xfc53b370591c32daa4b465b06dbbd7, 0x004a93 ] } , - BigNum { limbs: [ 0x0f71e5bc71e446fdc1747a63ca7ac3, 0x9afc610afa905bd996a93f88b570c4, 0x002c32 ] } , - BigNum { limbs: [ 0xae321d438c77b8023e8b849c35853e, 0x0c56c89282b7d760415eca1922948f, 0x0047bb ] } , - BigNum { limbs: [ 0xf4cfbb63e2c54e74aa45a97409d198, 0x989b5812a14b95b3455dc1fc4ccd45, 0x00472e ] } , - BigNum { limbs: [ 0xc8d4479c1b96b08b55ba558bf62e69, 0x0eb7d18adbfc9d8692aa47a58b380d, 0x002cbf ] } , - BigNum { limbs: [ 0x93cc71925057864dbe0415c94990ca, 0xc088a84a78536f2265c88b14e72ab3, 0x0036e4 ] } , - BigNum { limbs: [ 0x29d7916dae0478b241fbe936b66f37, 0xe6ca815304f4c417723f7e8cf0daa0, 0x003d08 ] } , - BigNum { limbs: [ 0x84298ae8c5a849168f04747c6dd5f6, 0xafa0841de6392d45266b5073cdd55a, 0x002780 ] } , - BigNum { limbs: [ 0x397a781738b3b5e970fb8a83922a0b, 0xf7b2a57f970f05f4b19cb92e0a2ff9, 0x004c6c ] } , - BigNum { limbs: [ 0x3e0b597663520df89d77764e3c697d, 0x98e3d7cffb2883fe05d75d187fb448, 0x000e2d ] } , - BigNum { limbs: [ 0x7f98a9899b09f107628888b1c39684, 0x0e6f51cd821faf3bd230ac8958510b, 0x0065c0 ] } , - BigNum { limbs: [ 0x19ce40ca252a482fa108ef1d9fd883, 0xa5be459b5d08fae658577ea875bd85, 0x0053b2 ] } , - BigNum { limbs: [ 0xa3d5c235d931b6d05ef70fe260277e, 0x0194e402203f38537fb08af96247ce, 0x00203b ] } , - BigNum { limbs: [ 0x8e834b9d101cc30553818f08ec3792, 0x732ccb933eb66f82430836ca2cb22d, 0x002a8a ] } , - BigNum { limbs: [ 0x2f20b762ee3f3bfaac7e6ff713c86f, 0x34265e0a3e91c3b794ffd2d7ab5326, 0x004963 ] } , - BigNum { limbs: [ 0x578c6d4d68ed7dca98bd685bd2aadb, 0xcf54a97840df560670b0af632fe115, 0x0002a8 ] } , - BigNum { limbs: [ 0x661795b2956e8135674296a42d5526, 0xd7fe80253c68dd3367575a3ea8243e, 0x007144 ] } , - BigNum { limbs: [ 0x34d2b570c678cbc0cb94250c958ba6, 0x1552c8b68e2f38b6e13590d0570de6, 0x0025a8 ] } , - BigNum { limbs: [ 0x88d14d8f37e3333f346bd9f36a745b, 0x920060e6ef18fa82f6d278d180f76d, 0x004e45 ] } , - BigNum { limbs: [ 0x1184a5a8c9d0c61c94431cded59c35, 0x120f1f2bdbbd7a988914f8099e95c1, 0x00607e ] } , - BigNum { limbs: [ 0xac1f5d57348b38e36bbce2212a63cc, 0x95440a71a18ab8a14ef31198396f92, 0x00136f ] } , - BigNum { limbs: [ 0xd6fefe5e71e4af3ce5516b5b587650, 0x34b9a353074fe5db498087c0b30bec, 0x002f22 ] } , - BigNum { limbs: [ 0xe6a504a18c774fc31aae93a4a789b1, 0x7299864a75f84d5e8e8781e124f966, 0x0044cb ] } , - BigNum { limbs: [ 0x7afe2f33b2d29c01e3f791190a25d7, 0x177195db06ee6206cad3f8f8edd20f, 0x000ffe ] } , - BigNum { limbs: [ 0x42a5d3cc4b8962fe1c086de6f5da2a, 0x8fe193c27659d1330d3410a8ea3344, 0x0063ef ] } , - BigNum { limbs: [ 0x5406346f9e88c9af3e5868ce1e4fa4, 0xf3250b114352a07bbae29228324286, 0x0037a1 ] } , - BigNum { limbs: [ 0x699dce905fd33550c1a79631e1b05d, 0xb42e1e8c39f592be1d257779a5c2cd, 0x003c4b ] } , - BigNum { limbs: [ 0x32052ccde9b4a9e6681bf64684319d, 0x21267ce32c4122aea787e30b9f31d8, 0x005561 ] } , - BigNum { limbs: [ 0x8b9ed63214a7551997e408b97bce64, 0x862cacba5107108b3080269638d37b, 0x001e8c ] } , - BigNum { limbs: [ 0x7297ee3889650ac76cad1646b4761b, 0x3c8ebc9a02da5d2bc85bcb435da336, 0x00018a ] } , - BigNum { limbs: [ 0x4b0c14c774f6f4389352e8b94b89e6, 0x6ac46d037a6dd60e0fac3e5e7a621d, 0x007263 ] } , - BigNum { limbs: [ 0x254665e6c64ce581eae2c4dce4c189, 0x28fa32bbdcdfe1800790e64116d4ae, 0x006d41 ] } , - BigNum { limbs: [ 0x985d9d19380f197e151d3a231b3e78, 0x7e58f6e1a06851b9d0772360c130a5, 0x0006ac ] } , - BigNum { limbs: [ 0xf3441dca163541a496c81e00ff1276, 0xbde858c524939b5eade1d86f47824f, 0x00678d ] } , - BigNum { limbs: [ 0xca5fe535e826bd5b6937e0ff00ed8b, 0xe96ad0d858b497db2a263132908303, 0x000c5f ] } , - BigNum { limbs: [ 0xe51ebc10b57b63a5e9eab8152b4839, 0xee15d6617551bb90e37cb272360e41, 0x004f8c ] } , - BigNum { limbs: [ 0xd88546ef48e09b5a161546ead4b7c8, 0xb93d533c07f677a8f48b572fa1f711, 0x002460 ] } , - BigNum { limbs: [ 0x22cebc18e0dfea53811fb238fd2814, 0x90a3cef9da73ce6a4f2099a0af14fb, 0x0021bb ] } , - BigNum { limbs: [ 0x9ad546e71d7c14ac7ee04cc702d7ed, 0x16af5aa3a2d464cf88e7700128f058, 0x005232 ] } , - BigNum { limbs: [ 0xfa1af59c87e3c79575577ad3edf1cb, 0x27562b6a9a47cd994218dfd57859ef, 0x00061a ] } , - BigNum { limbs: [ 0xc3890d637678376a8aa8842c120e36, 0x7ffcfe32e30065a095ef29cc5fab63, 0x006dd3 ] } , - BigNum { limbs: [ 0x82dfab906848c79c3c62b3f1e99da1, 0x28bbc7ee1bd43b6c686683ad41bf33, 0x0012d8 ] } , - BigNum { limbs: [ 0x3ac4576f96133763c39d4b0e166260, 0x7e9761af6173f7cd6fa185f4964620, 0x006115 ] } , - BigNum { limbs: [ 0x55abba30f4c41cd573721eba4465da, 0x1de7a6c125e8339bd6dd4c22a7b59c, 0x0014b0 ] } , - BigNum { limbs: [ 0x67f848cf0997e22a8c8de045bb9a27, 0x896b82dc575fff9e012abd7f304fb7, 0x005f3d ] } , - BigNum { limbs: [ 0x2d52cdfd0b98891cc466c414f63fc0, 0x2c10967cc466405960131e7988212b, 0x00237a ] } , - BigNum { limbs: [ 0x90513502f2c375e33b993aeb09c041, 0x7b429320b8e1f2e077f4eb284fe428, 0x005073 ] } , - BigNum { limbs: [ 0x1c1e85d06fe60186a9252bd472f5c3, 0xa8ec47f5c95bf245914235998e63d5, 0x003282 ] } , - BigNum { limbs: [ 0xa1857d2f8e75fd7956dad32b8d0a3e, 0xfe66e1a7b3ec40f446c5d40849a17e, 0x00416a ] } , - BigNum { limbs: [ 0x020c89ecc0849375daa8809864b9c9, 0xcb5137860e4d96b953a9110b8bc722, 0x0047e3 ] } , - BigNum { limbs: [ 0xbb9779133dd76b8a25577e679b4638, 0xdc01f2176efa9c80845ef8964c3e31, 0x002c09 ] } , - BigNum { limbs: [ 0xdc61fcccb02913fc394ee9057469b2, 0x555589c733ab00def2f546ab11bdb3, 0x006841 ] } , - BigNum { limbs: [ 0xe14206334e32eb03c6b115fa8b964f, 0x51fd9fd6499d325ae512c2f6c6479f, 0x000bac ] } , - BigNum { limbs: [ 0x726e23ee95bde2252d6661602d7435, 0x26d40fbaeeb2b594020b8675359421, 0x0060ae ] } , - BigNum { limbs: [ 0x4b35df11689e1cdad2999d9fd28bcc, 0x807f19e28e957da5d5fc832ca27132, 0x00133f ] } , - BigNum { limbs: [ 0x9a0662c6b842dae4bdeee08a005d23, 0x5a11d5a09148a256aa11611dc01ba3, 0x001d34 ] } , - BigNum { limbs: [ 0x239da0394619241b42111e75ffa2de, 0x4d4153fcebff90e32df6a88417e9b0, 0x0056b9 ] } , - BigNum { limbs: [ 0xac53ac97accee001ed731a05753b82, 0x2e90157bd61796b1028e1af5170f0b, 0x000a2c ] } , - BigNum { limbs: [ 0x11505668518d1efe128ce4fa8ac47f, 0x78c31421a7309c88d579eeacc0f648, 0x0069c1 ] } , - BigNum { limbs: [ 0xb6f5ee2e46bfbbca14e7c13bdd9bf7, 0x1801a4e66be3bb20514a762a99af1c, 0x00441c ] } , - BigNum { limbs: [ 0x06ae14d1b79c4335eb183dc422640a, 0x8f5184b71164781986bd93773e5637, 0x002fd1 ] } , - BigNum { limbs: [ 0x439ad148d806a7ccdf8183b63ed567, 0x8c89b8e828873394d984953e9c4dc3, 0x0010e4 ] } , - BigNum { limbs: [ 0x7a0931b726555733207e7b49c12a9a, 0x1ac970b554c0ffa4fe8374633bb790, 0x006309 ] } , - BigNum { limbs: [ 0x3e07bd495b317f1e77078e4a922207, 0x5c0d57961afe92b25ed1032a82f445, 0x0041c9 ] } , - BigNum { limbs: [ 0x7f9c45b6a32a7fe188f870b56dddfa, 0x4b45d2076249a0877937067755110e, 0x003224 ] } , - BigNum { limbs: [ 0x3ab0758cbe037ad272322f2e9b1d0f, 0xce3c4a3cd9a490a6c43e4346125662, 0x000ae3 ] } , - BigNum { limbs: [ 0x82f38d734058842d8dcdcfd164e2f2, 0xd916df60a3a3a29313c9c65bc5aef1, 0x006909 ] } , - BigNum { limbs: [ 0x466a99fb5f7bef1e6017af6230182b, 0x7eb0960434809577da230e2c88260c, 0x0003df ] } , - BigNum { limbs: [ 0x773969049ee00fe19fe84f9dcfe7d6, 0x28a2939948c79dc1fde4fb754fdf47, 0x00700e ] } , - BigNum { limbs: [ 0x6ed968e5c09240096c2d089156eaed, 0x5fefa464baa254d980d9d59b1f65bd, 0x005bb3 ] } , - BigNum { limbs: [ 0x4eca9a1a3dc9bef693d2f66ea91514, 0x47638538c2a5de60572e3406b89f96, 0x00183a ] } , - BigNum { limbs: [ 0x999c758ec8080ab8e9e36ceea971b7, 0x146d0722977916eed0bc549904aba0, 0x002254 ] } , - BigNum { limbs: [ 0x24078d713653f447161c9211568e4a, 0x92e6227ae5cf1c4b074bb508d359b3, 0x005199 ] } , - BigNum { limbs: [ 0x4d72814a2d66d08895e916b75c0586, 0x130e3be6e721dff06413633821356e, 0x0023c2 ] } , - BigNum { limbs: [ 0x703181b5d0f52e776a16e848a3fa7b, 0x9444edb69626534973f4a669b6cfe5, 0x00502b ] } , - BigNum { limbs: [ 0x4f3dcab708c5c68b54a44d5eb5f239, 0xafacdf20a18221d002ebd6d577c87d, 0x004b6e ] } , - BigNum { limbs: [ 0x6e663848f5963874ab5bb1a14a0dc8, 0xf7a64a7cdbc61169d51c32cc603cd6, 0x00287e ] } , - BigNum { limbs: [ 0x3cd85a008ad190414dbdcb15d0dac0, 0x18c3495bb2a9b4c1265d710a862f5f, 0x006749 ] } , - BigNum { limbs: [ 0x80cba8ff738a6ebeb24233ea2f2541, 0x8e8fe041ca9e7e78b1aa989751d5f4, 0x000ca4 ] } , - BigNum { limbs: [ 0xfc5bbb5fe6d85bf135c083512c9fe8, 0xfacd0f29438dc279c735326262a715, 0x00443c ] } , - BigNum { limbs: [ 0xc14847a01783a30eca3f7baed36019, 0xac861a7439ba70c010d2d73f755e3d, 0x002fb0 ] } , - BigNum { limbs: [ 0xddd69a355f5807ccd7ce20289e7057, 0xc73dd7b7381292525534a336790988, 0x0021bd ] } , - BigNum { limbs: [ 0xdfcd68ca9f03f7332831ded7618faa, 0xe01551e64535a0e782d3666b5efbca, 0x00522f ] } , - BigNum { limbs: [ 0x2e72025de4a0c712a4159d38ee7edf, 0x93133a3a6b7193b0142074a447361e, 0x00210f ] } , - BigNum { limbs: [ 0x8f3200a219bb37ed5bea61c7118122, 0x143fef6311d69f89c3e794fd90cf35, 0x0052de ] } , - BigNum { limbs: [ 0x668bb61eabbf26efe8b7c5f4cdbb8a, 0x8055f6f56ceef2a6ba04234203090d, 0x005169 ] } , - BigNum { limbs: [ 0x57184ce1529cd8101748390b324477, 0x26fd32a8105940931e03e65fd4fc46, 0x002284 ] } , - BigNum { limbs: [ 0x151dff81d368d532dbe75201147c74, 0xf563dca47733442fccebb3b272904a, 0x0015aa ] } , - BigNum { limbs: [ 0xa886037e2af329cd2418acfeeb838d, 0xb1ef4cf90614ef0a0b1c55ef657509, 0x005e42 ] } , - BigNum { limbs: [ 0x0a8dbfebab4f06748e13419b319c10, 0x1d7727add9dd135d2ad0956ba98d78, 0x00528e ] } , - BigNum { limbs: [ 0xb3164314530cf88b71ecbd64ce63f1, 0x89dc01efa36b1fdcad3774362e77db, 0x00215f ] } , - BigNum { limbs: [ 0x9f0e6768335b1d2b9a21f44b8839df, 0xcffa24a5ed86e22b586a2e37e5b16a, 0x0039b5 ] } , - BigNum { limbs: [ 0x1e959b97cb00e1d465de0ab477c622, 0xd75904f78fc1510e7f9ddb69f253e9, 0x003a37 ] } , - BigNum { limbs: [ 0xe12f618a02f52636e22842492675f1, 0x1578dddc06904031a5b1f1d0e35a2d, 0x00465a ] } , - BigNum { limbs: [ 0xdc74a175fb66d8c91dd7bcb6d98a10, 0x91da4bc176b7f308325617d0f4ab25, 0x002d93 ] } , - BigNum { limbs: [ 0xfc7593aacae8f0048c998c718b18fa, 0xb132aace436810593938764cd2873c, 0x005e9f ] } , - BigNum { limbs: [ 0xc12e6f5533730efb7366728e74e707, 0xf6207ecf39e022e09ecf9355057e16, 0x00154d ] } , - BigNum { limbs: [ 0x855c98f03e4ec9bbc878488ea71ba8, 0x4f4d80e421236231f3707b9d46a099, 0x005765 ] } , - BigNum { limbs: [ 0x38476a0fc00d35443787b67158e459, 0x5805a8b95c24d107e4978e049164ba, 0x001c88 ] } , - BigNum { limbs: [ 0xa9e6457cbef76d1fccde66fc588d7d, 0x6964e2c2128178dec9a67d6bf69ab1, 0x004c6b ] } , - BigNum { limbs: [ 0x13bdbd833f6491e033219803a77284, 0x3dee46db6ac6ba5b0e618c35e16aa2, 0x002782 ] } , - BigNum { limbs: [ 0x0ab900fdd04ba0c27a1a12d0f2c7b4, 0x958f86d2b38d13cebad18da8de97be, 0x004fe1 ] } , - BigNum { limbs: [ 0xb2eb02022e105e3d85e5ec2f0d384d, 0x11c3a2cac9bb1f6b1d367bf8f96d95, 0x00240c ] } , - BigNum { limbs: [ 0xfec709676525a283ae887be3b065d2, 0x31dc646483ada7ec9b7504f5c08d9a, 0x004ea3 ] } , - BigNum { limbs: [ 0xbedcf99899365c7c5177831c4f9a2f, 0x7576c538f99a8b4d3c9304ac1777b8, 0x00254a ] } , - BigNum { limbs: [ 0x6236400ce1a035463b81e35706dc93, 0x794174efafe9bbb1da00479695453e, 0x0008ab ] } , - BigNum { limbs: [ 0x5b6dc2f31cbbc9b9c47e1ba8f9236e, 0x2e11b4adcd5e7787fe07c20b42c015, 0x006b42 ] } , - BigNum { limbs: [ 0xac3ff58faca4e3edadb1101621f8bf, 0x844c97b849b37e115e7879e5fe85de, 0x003d52 ] } , - BigNum { limbs: [ 0x11640d7051b71b12524eeee9de0742, 0x230691e53394b528798f8fbbd97f75, 0x00369b ] } , - BigNum { limbs: [ 0x7c85bcff563e231e8623e352e51c35, 0xcdffedfad78d5fe87ca61ae9abc08f, 0x002b43 ] } , - BigNum { limbs: [ 0x411e4600a81ddbe179dc1bad1ae3cc, 0xd9533ba2a5bad3515b61eeb82c44c4, 0x0048a9 ] } , - BigNum { limbs: [ 0xa804027c23b9f95376802e91e05be8, 0xe9c4cef6cbefe6c9741d8956584aee, 0x001cdb ] } , - BigNum { limbs: [ 0x15a00083daa205ac897fd06e1fa419, 0xbd8e5aa6b1584c7063ea804b7fba65, 0x005711 ] } , - BigNum { limbs: [ 0x0e0cd54bd4aa61826d2d37f94a447f, 0x63512d6507eff7e74e36ebb406ab4a, 0x0065c6 ] } , - BigNum { limbs: [ 0xaf972db429b19d7d92d2c706b5bb82, 0x4401fc3875583b5289d11dedd15a09, 0x000e27 ] } , - BigNum { limbs: [ 0x1d8f59d2e0d8f517d1f555defa4965, 0xce0a6cf41e04d1f37da3193dc2f7e1, 0x000e39 ] } , - BigNum { limbs: [ 0xa014a92d1d8309e82e0aa92105b69c, 0xd948bca95f4361465a64f064150d72, 0x0065b3 ] } , - BigNum { limbs: [ 0xe9debb01a73a7d2d2fd8f2b8879fa4, 0x9ddf450c9503f6d1e86fff13f87f5a, 0x0010af ] } , - BigNum { limbs: [ 0xd3c547fe572181d2d0270c4778605d, 0x0973e490e8443c67ef980a8ddf85f8, 0x00633e ] } , - BigNum { limbs: [ 0x82a869b076061adec6750f6279f487, 0xe06fd1d55ed610877582a2642dfdc9, 0x0052c8 ] } , - BigNum { limbs: [ 0x3afb994f8855e421398aef9d860b7a, 0xc6e357c81e7222b26285673daa078a, 0x002124 ] } , - BigNum { limbs: [ 0xcd0477f8b300e2e8072dcdffa22a4b, 0x0427dc1ed46b959d6213b9fb9ca34b, 0x006cfb ] } , - BigNum { limbs: [ 0xf09f8b074b5b1c17f8d231005dd5b6, 0xa32b4d7ea8dc9d9c75f44fa63b6207, 0x0006f2 ] } , - BigNum { limbs: [ 0x6e9b05922fb4ca4db6496c5f476610, 0x7f60ea83e3914376d6422502433719, 0x004ee5 ] } , - BigNum { limbs: [ 0x4f08fd6dcea734b249b692a0b899f1, 0x27f23f1999b6efc301c5e49f94ce3a, 0x002508 ] } , - BigNum { limbs: [ 0xa62fc0089b634dbf2aac25d7d75fee, 0xdb944f0c588276cb7f8865b7d9ba3e, 0x0035ed ] } , - BigNum { limbs: [ 0x177442f762f8b140d553d92828a013, 0xcbbeda9124c5bc6e587fa3e9fe4b15, 0x003dff ] } , - BigNum { limbs: [ 0x98290aa8b6ad53f2043aa3f401dfdc, 0x09673fc03acedd09ac836e1ca7736a, 0x0053e1 ] } , - BigNum { limbs: [ 0x257af85747aeab0dfbc55b0bfe2025, 0x9debe9dd427956302b849b853091e9, 0x00200c ] } , - BigNum { limbs: [ 0x647448c7b0afb7ec1c61775ab7abdd, 0x889ebec7d61b637217c82c971d9e4f, 0x005239 ] } , - BigNum { limbs: [ 0x592fba384dac4713e39e87a5485424, 0x1eb46ad5a72ccfc7c03fdd0aba6704, 0x0021b4 ] } , - BigNum { limbs: [ 0xfdccab18b6ef1df95145ce9d220f41, 0xae5fde2b4f5827052bda8626455524, 0x0033b2 ] } , - BigNum { limbs: [ 0xbfd757e7476ce106aeba3062ddf0c0, 0xf8f34b722df00c34ac2d837b92b02e, 0x00403a ] } , - BigNum { limbs: [ 0x48364c6d02ded0006ae02ab74add69, 0x07e0704b0c97aead5c4e44e64375c3, 0x000c8d ] } , - BigNum { limbs: [ 0x756db692fb7d2eff951fd448b52298, 0x9f72b95270b0848c7bb9c4bb948f90, 0x006760 ] } , - BigNum { limbs: [ 0x0fa82de7378c5647041bcb6bd46fcc, 0x5e373ec8ee1bbc8c8f5360d1f7b0e5, 0x00450a ] } , - BigNum { limbs: [ 0xadfbd518c6cfa8b8fbe433942b9035, 0x491bead48f2c76ad48b4a8cfe0546e, 0x002ee3 ] } , - BigNum { limbs: [ 0xd7924989f5052ba483ec3b98206641, 0xa817449255ff6eb0398da5372b4151, 0x0008d0 ] } , - BigNum { limbs: [ 0xe611b9760956d35b7c13c367df99c0, 0xff3be50b2748c4899e7a646aacc401, 0x006b1c ] } , - BigNum { limbs: [ 0xcaad5df72cd49bbe86414d32e186de, 0xdad728f81f15d7ed9ff23c94d4b3e1, 0x00493c ] } , - BigNum { limbs: [ 0xf2f6a508d187634179beb1cd1e7923, 0xcc7c00a55e325b4c3815cd0d035171, 0x002ab0 ] } , - BigNum { limbs: [ 0x1247f31227b7d49e32a2c19d55f8d3, 0xded3eebc215ddeea461ee0cd7d94d6, 0x001f0e ] } , - BigNum { limbs: [ 0xab5c0fedd6a42a61cd5d3d62aa072e, 0xc87f3ae15bea544f91e928d45a707d, 0x0054de ] } , - BigNum { limbs: [ 0xdc89075d67ed7e317050f884ca576b, 0x281b92bda8a01a3a778c086ff4e1ad, 0x0001ed ] } , - BigNum { limbs: [ 0xe11afba2966e80ce8faf067b35a896, 0x7f3796dfd4a818ff607c0131e323a5, 0x007200 ] } , - BigNum { limbs: [ 0xcdb87cb712877e0bf60e7c63c2437b, 0x4efb2363ab2f1ff78cb0023480e8f9, 0x001a6f ] } , - BigNum { limbs: [ 0xefeb8648ebd480f409f1829c3dbc86, 0x58580639d21913424b58076d571c59, 0x00597e ] } , - BigNum { limbs: [ 0xd45c8361c9f7297117194176b34fcd, 0xabbd11933f13d0bd028d2df1d8d2ea, 0x00657c ] } , - BigNum { limbs: [ 0xe9477f9e3464d58ee8e6bd894cb034, 0xfb96180a3e34627cd57adbafff3268, 0x000e70 ] } , - BigNum { limbs: [ 0xf77a7bafa8af3673a70628281b1030, 0x37b660a6007a671cd104321d3da423, 0x00523d ] } , - BigNum { limbs: [ 0xc629875055acc88c58f9d6d7e4efd1, 0x6f9cc8f77ccdcc1d0703d7849a612f, 0x0021b0 ] } , - BigNum { limbs: [ 0xa5adf88739a7bd9d7f8fd7d5e17d4c, 0xa451b990fd38ff18af03ba072d922e, 0x0030ed ] } , - BigNum { limbs: [ 0x17f60a78c4b441628070272a1e82b5, 0x0301700c800f342129044f9aaa7325, 0x004300 ] } , - BigNum { limbs: [ 0xd55f49d6b5a1fa4a715cef814e4239, 0x8cd22f924921ab164cf3cbcd563e6d, 0x005b3b ] } , - BigNum { limbs: [ 0xe844b92948ba04b58ea30f7eb1bdc8, 0x1a80fa0b342688238b143dd481c6e5, 0x0018b2 ] } , - BigNum { limbs: [ 0xaa756712f2bc015611aad4215f6c1d, 0x446d71965b3a8e20c5aa738a332574, 0x001a1a ] } , - BigNum { limbs: [ 0x132e9bed0b9ffda9ee552adea093e4, 0x62e5b807220da519125d9617a4dfdf, 0x0059d3 ] } , - BigNum { limbs: [ 0xdf1a3727fd721d20a3252151ac98a0, 0x0d63de7126601d7386b1d14b886090, 0x001c40 ] } , - BigNum { limbs: [ 0xde89cbd800e9e1df5cdaddae536761, 0x99ef4b2c56e815c6515638564fa4c2, 0x0057ad ] } , - BigNum { limbs: [ 0xfb22b17b1b8fce193fef7af0333d31, 0x8d54f1ac8eda45244257bc7eed74d0, 0x001373 ] } , - BigNum { limbs: [ 0xc2815184e2cc30e6c010840fccc2d0, 0x19fe37f0ee6dee1595b04d22ea9082, 0x00607a ] } , - BigNum { limbs: [ 0xd94eb86ff1ed3c7833cda901f237d1, 0x6cac58e7d4d227ece7306d1ad0f73b, 0x003446 ] } , - BigNum { limbs: [ 0xe4554a900c6ec287cc3255fe0dc830, 0x3aa6d0b5a8760b4cf0d79c87070e17, 0x003fa7 ] } , - BigNum { limbs: [ 0x0a0b6dc3344e9740aa98279de1d272, 0x396f0bbba2006c10dffbc6e2ccfd1f, 0x0043ce ] } , - BigNum { limbs: [ 0xb398953cca0d67bf5567d7621e2d8f, 0x6de41de1db47c728f80c42bf0b0834, 0x00301f ] } , - BigNum { limbs: [ 0x2774aacbd8e5410e990b7ea6099539, 0x0ff19575c66a5d823a24eadcf44034, 0x00013a ] } , - BigNum { limbs: [ 0x962f58342576bdf166f48059f66ac8, 0x97619427b6ddd5b79de31ec4e3c51f, 0x0072b3 ] } , - BigNum { limbs: [ 0x98cfc228cdac64c0f4b12f26fbee10, 0x608230bf89f522f30a822df80cebab, 0x006bbe ] } , - BigNum { limbs: [ 0x24d440d730af9a3f0b4ecfd90411f1, 0x46d0f8ddf3531046cd85dba9cb19a8, 0x00082f ] } , - BigNum { limbs: [ 0xfcae5ba09e0c9e7936dad504dd20d8, 0xd14ad990c5d94abc61794fedbb7b37, 0x0004fd ] } , - BigNum { limbs: [ 0xc0f5a75f604f6086c92529fb22df29, 0xd608500cb76ee87d768eb9b41c8a1b, 0x006eef ] } , - BigNum { limbs: [ 0x2dd2cd0d439bf99df86a7b583e6a7a, 0x334ff56b12c0fe4d544102494ce813, 0x000313 ] } , - BigNum { limbs: [ 0x8fd135f2bac00562079583a7c19587, 0x740334326a8734ec83c707588b1d40, 0x0070da ] } , - BigNum { limbs: [ 0x012acc92ab4930bd516cd62ba82664, 0xc77d512a5bc54b53c2020e1531be45, 0x0008b1 ] } , - BigNum { limbs: [ 0xbc79366d5312ce42ae9328d457d99d, 0xdfd5d8732182e7e61605fb8ca6470e, 0x006b3b ] } , - BigNum { limbs: [ 0xa0896f1080c1eee49d3bc9f665878a, 0x46f8c3bf1cc0a4b9f13d221641f726, 0x0029aa ] } , - BigNum { limbs: [ 0x1d1a93ef7d9a101b62c435099a7877, 0x605a65de60878e7fe6cae78b960e2d, 0x004a43 ] } , - BigNum { limbs: [ 0x53929cdf5d53f68046a0338d19eb21, 0x4ecf71c935ff0ddb58cba88e385eb4, 0x00701c ] } , - BigNum { limbs: [ 0x6a116620a108087fb95fcb72e614e0, 0x5883b7d44749255e7f3c61139fa69f, 0x0003d1 ] } , - BigNum { limbs: [ 0x4d116daf42538b08c8845e74a76e3c, 0x3df169bd66227d167a1aa89fd1bf92, 0x006073 ] } , - BigNum { limbs: [ 0x70929550bc0873f7377ba08b5891c5, 0x6961bfe01725b6235ded61020645c1, 0x00137a ] } , - BigNum { limbs: [ 0x7ec84bcbd1676791088fac0c4f9032, 0x2f32a44ea3b5e5353491392eb969f1, 0x004928 ] } , - BigNum { limbs: [ 0x3edbb7342cf4976ef77052f3b06fcf, 0x7820854ed9924e04a376d0731e9b62, 0x002ac5 ] } , - BigNum { limbs: [ 0x9fefa0239bcb3e8a28db7c68591369, 0xab965ee2dd62dc7f696be9aa0ec978, 0x0028e0 ] } , - BigNum { limbs: [ 0x1db462dc6290c075d7248297a6ec98, 0xfbbccaba9fe556ba6e9c1ff7c93bdb, 0x004b0c ] } , - BigNum { limbs: [ 0xb1df0d7f11055f353f8e344469d5db, 0xee2957ec3250ae111cfbdc4970ab0d, 0x006a85 ] } , - BigNum { limbs: [ 0x0bc4f580ed569fcac071cabb962a26, 0xb929d1b14af78528bb0c2d58675a46, 0x000967 ] } , - BigNum { limbs: [ 0xcaf14f19ed7d03a0f0d6fddf65ab78, 0x1d09b8983f31effc399a99a0f0774b, 0x001ce3 ] } , - BigNum { limbs: [ 0xf2b2b3e610defb5f0f2901209a5489, 0x8a4971053e16433d9e6d7000e78e07, 0x00570a ] } , - BigNum { limbs: [ 0x0eb926614be1a588cdfcb063137ed0, 0xde7ab1959c4bc6a2ed06d37f167a03, 0x00407f ] } , - BigNum { limbs: [ 0xaeeadc9eb27a597732034e9cec8131, 0xc8d87807e0fc6c96eb013622c18b50, 0x00336d ] } , - BigNum { limbs: [ 0x7ea24c2e5ec8f8aa638667dde3590d, 0x5373bf1e91d9fef178082e44ecc0c7, 0x002ce4 ] } , - BigNum { limbs: [ 0x3f01b6d19f9306559c7997221ca6f4, 0x53df6a7eeb6e34485fffdb5ceb448c, 0x004709 ] } , - BigNum { limbs: [ 0x908be130f926723ad61f87d207308f, 0xd1772f77e6a8eea341e88434f19304, 0x004a4c ] } , - BigNum { limbs: [ 0x2d1821cf05358cc529e0772df8cf72, 0xd5dbfa25969f4496961f856ce6724f, 0x0029a0 ] } , - BigNum { limbs: [ 0xe8222d4428fff63a9a7c5389c73e8f, 0x6f9d1eeb0abdf3bac4d64a36538a64, 0x007363 ] } , - BigNum { limbs: [ 0xd581d5bbd55c08c56583ab7638c172, 0x37b60ab2728a3f7f1331bf6b847aee, 0x00008a ] } , - BigNum { limbs: [ 0x931b5f8b6cbdcc7974730b5c3ba924, 0x64469d1accc8fc62eef966d0253b7f, 0x003675 ] } , - BigNum { limbs: [ 0x2a88a374919e32868b8cf3a3c456dd, 0x430c8c82b07f36d6e90ea2d1b2c9d4, 0x003d78 ] } , - BigNum { limbs: [ 0x67e34e22abef508c9d7369401c9ce9, 0x6cd186a4d1bf23bfab53572bc8e62a, 0x007179 ] } , - BigNum { limbs: [ 0x55c0b4dd526cae73628c95bfe36318, 0x3a81a2f8ab890f7a2cb4b2760f1f29, 0x000274 ] } , - BigNum { limbs: [ 0x523efd9a4034293bcb639a86de8161, 0x70e5bd7314ec89710171d3095acded, 0x002dc3 ] } , - BigNum { limbs: [ 0x6b650565be27d5c4349c6479217ea0, 0x366d6c2a685ba9c8d69636987d3766, 0x00462a ] } , - BigNum { limbs: [ 0xdc86cb3ee5aeda0dc44788191c6694, 0x85025f6fc6b635ee1289a4af9cc708, 0x000a03 ] } , - BigNum { limbs: [ 0xe11d37c118ad24f23bb876e6e3996d, 0x2250ca2db691fd4bc57e64f23b3e4a, 0x0069ea ] } , - BigNum { limbs: [ 0xfb20b8ec99d14e44d969247a3b9ea0, 0x8d984cf2bbe3e84864fbbaf6ca1a19, 0x003a17 ] } , - BigNum { limbs: [ 0xc2834a13648ab0bb2696da85c46161, 0x19badcaac1644af1730c4eab0deb39, 0x0039d6 ] } , - BigNum { limbs: [ 0x3e4ce9b0b4d29e8ddb46c387d94289, 0x9c0f10c48a5ee2c04f5308e4117c29, 0x006e01 ] } , - BigNum { limbs: [ 0x7f57194f4989607224b93b7826bd78, 0x0b4418d8f2e9507988b500bdc6892a, 0x0005ec ] } , - BigNum { limbs: [ 0x0843767d0372343f1f18f7ffc6877b, 0x6f733cc9941e4d1f292459f8fcb93b, 0x000f19 ] } , - BigNum { limbs: [ 0xb5608c82fae9cac0e0e70700397886, 0x37dfecd3e929e61aaee3afa8db4c18, 0x0064d4 ] } , - BigNum { limbs: [ 0x88b0025d0d21897a73822ebdcd10f4, 0xad7c3cd1771ded6b0d595d2df89be8, 0x00255b ] } , - BigNum { limbs: [ 0x34f400a2f13a75858c7dd04232ef0d, 0xf9d6eccc062a45cecaaeac73df696b, 0x004e91 ] } , - BigNum { limbs: [ 0x33a0cc91de22b00210a61427617e32, 0xf107893997a09e1935feb8328692f2, 0x003e5f ] } , - BigNum { limbs: [ 0x8a03366e20394efdef59ead89e81cf, 0xb64ba063e5a79520a209516f517261, 0x00358d ] } , - BigNum { limbs: [ 0xaba4806747cbbb3ed3c6695778c414, 0x6b7fc7d64506fd4c8ab2f0d9a0c2ef, 0x001fd5 ] } , - BigNum { limbs: [ 0x11ff8298b69043c12c3995a8873bed, 0x3bd361c7384135ed4d5518c8374264, 0x005418 ] } , - BigNum { limbs: [ 0x9793cdc553268fdb8c8c9df25f113f, 0xc8b8a6bed3ce2e4295f13884893e82, 0x00569a ] } , - BigNum { limbs: [ 0x2610353aab356f247373610da0eec2, 0xde9a82dea97a04f74216d11d4ec6d1, 0x001d52 ] } , - BigNum { limbs: [ 0x48c725f84f95c141afaf92fc44c150, 0x2ec90d8645b8541c402b6099de87a6, 0x006430 ] } , - BigNum { limbs: [ 0x74dcdd07aec63dbe50506c03bb3eb1, 0x788a1c17378fdf1d97dca907f97dad, 0x000fbd ] } , - BigNum { limbs: [ 0x3d298b3fdcee949d23158904db414e, 0x5b2f0cdcb97b5ef4890c09efc1b9e8, 0x002c4a ] } , - BigNum { limbs: [ 0x807a77c0216d6a62dcea75fb24beb3, 0x4c241cc0c3ccd4454efbffb2164b6b, 0x0047a3 ] } , - BigNum { limbs: [ 0x54bc8d5e005d10a64eed6a5818a4bf, 0x165bdc32edd97d8cc8889c8a298881, 0x005ab7 ] } , - BigNum { limbs: [ 0x68e775a1fdfeee59b11294a7e75b42, 0x90f74d6a8f6eb5ad0f7f6d17ae7cd2, 0x001936 ] } , - BigNum { limbs: [ 0x5d543983bbd49126324200928abe0a, 0x82d48a57fa1bf0d2b13a179c103085, 0x005e68 ] } , - BigNum { limbs: [ 0x604fc97c42876dd9cdbdfe6d7541f7, 0x247e9f45832c426726cdf205c7d4ce, 0x001585 ] } , - BigNum { limbs: [ 0x4959e25753f8727e4cddf5bbcf9e2e, 0x0e9ae069d4854261fc6d52cd9f472f, 0x001c9a ] } , - BigNum { limbs: [ 0x744a20a8aa638c81b32209443061d3, 0x98b84933a8c2f0d7db9ab6d438be24, 0x005753 ] } , - BigNum { limbs: [ 0xfb52a4a4084049b64635a1fca37cd4, 0x97060617002b139d9e55125fd6a0da, 0x0006a1 ] } , - BigNum { limbs: [ 0xc2515e5bf61bb549b9ca5d035c832d, 0x104d23867d1d1f9c39b2f742016478, 0x006d4c ] } , - BigNum { limbs: [ 0x46b757d37646ad5f6ed9d54ebc7dfd, 0x115e1973082b57191cb038744d3fda, 0x0059ad ] } , - BigNum { limbs: [ 0x76ecab2c881551a0912629b1438204, 0x95f5102a751cdc20bb57d12d8ac579, 0x001a40 ] } , - BigNum { limbs: [ 0x3a3fdb27ce4620c9037884585beeed, 0x7ba852c1b35fd6ee452a97c16ac388, 0x004c29 ] } , - BigNum { limbs: [ 0x836427d83015de36fc877aa7a41114, 0x2baad6dbc9e85c4b92dd71e06d41cb, 0x0027c4 ] } , - BigNum { limbs: [ 0x5007e38c90bf5a1406a9e74470eb1c, 0x2d7256bac7644923c535f42197488e, 0x0059a7 ] } , - BigNum { limbs: [ 0x6d9c1f736d9ca4ebf95617bb8f14e5, 0x79e0d2e2b5e3ea1612d2158040bcc5, 0x001a46 ] } , - BigNum { limbs: [ 0x58596cd9180f6351eeda0bf1f9d15c, 0xdbac48ffd83b5b50fba542ee045f2d, 0x000cc1 ] } , - BigNum { limbs: [ 0x654a9626e64c9bae1125f30e062ea5, 0xcba6e09da50cd7e8dc62c6b3d3a626, 0x00672b ] } , - BigNum { limbs: [ 0xda385259825e8ff7de74762844b59b, 0x8d1d32ee41ea7fa57c0bb07ba2861e, 0x004a07 ] } , - BigNum { limbs: [ 0xe36bb0a67bfd6f08218b88d7bb4a66, 0x1a35f6af3b5db3945bfc5926357f34, 0x0029e6 ] } , - BigNum { limbs: [ 0x663b19281ecf204a13c9090a5de344, 0x6cb1b8029d0f4ea7520a9e1f45fed2, 0x000264 ] } , - BigNum { limbs: [ 0x5768e9d7df8cdeb5ec36f5f5a21cbd, 0x3aa1719ae038e49285fd6b82920681, 0x007189 ] } , - BigNum { limbs: [ 0x424c5b7c97a6d27d1881b7fb2a11e6, 0x8b263946eb224cb0fea682711f56cf, 0x000526 ] } , - BigNum { limbs: [ 0x7b57a78366b52c82e77e4704d5ee1b, 0x1c2cf0569225e688d9618730b8ae84, 0x006ec7 ] } , - BigNum { limbs: [ 0xbf61c5f3d0832796c52d21fbc61f0f, 0xb379c9183ffc813bcf1073aceca325, 0x000ef4 ] } , - BigNum { limbs: [ 0xfe423d0c2dd8d7693ad2dd0439e0f2, 0xf3d960853d4bb1fe08f795f4eb622d, 0x0064f8 ] } , - BigNum { limbs: [ 0xe3a6cd55d29c43736afc498dd8c1d1, 0xa19828da9aab0564b5a8d1072ba42b, 0x00445e ] } , - BigNum { limbs: [ 0xd9fd35aa2bbfbb8c9503b572273e30, 0x05bb00c2e29d2dd5225f389aac6127, 0x002f8f ] } , - BigNum { limbs: [ 0xead8a0448ecebabcdf1235752b0ef3, 0xe8ee9237909732d4a06d7aa57eb71b, 0x006bcb ] } , - BigNum { limbs: [ 0xd2cb62bb6f8d444320edc98ad4f10e, 0xbe649765ecb10065379a8efc594e37, 0x000821 ] } , - BigNum { limbs: [ 0x4119ad873614884d66efb4fed2279a, 0xd9900b7ae25a95dfadf106e3f002de, 0x005ae6 ] } , - BigNum { limbs: [ 0x7c8a5578c84776b299104a012dd867, 0xcdc31e229aed9d5a2a1702bde80275, 0x001906 ] } , - BigNum { limbs: [ 0xb4f7967f7e42a5fda4841718420054, 0x2f3fb51cf0a715d27b6251fc311c17, 0x0062fb ] } , - BigNum { limbs: [ 0x08ac6c80801959025b7be7e7bdffad, 0x781374808ca11d675ca5b7a5a6e93c, 0x0010f2 ] } , - BigNum { limbs: [ 0x180e0e8b24f12309f239f760b82267, 0xba636d174692ad5a534045625d9514, 0x0058c3 ] } , - BigNum { limbs: [ 0xa595f474d96adbf60dc6079f47dd9a, 0xecefbc8636b585df84c7c43f7a703f, 0x001b29 ] } , - BigNum { limbs: [ 0xc7e8901137ff0153a93b55b4fea0eb, 0xc4a69476d9fc4bb6f34c1c58a0568e, 0x000e7c ] } , - BigNum { limbs: [ 0xf5bb72eec65cfdac56c4a94b015f16, 0xe2ac9526a34be782e4bbed4937aec4, 0x006570 ] } , - BigNum { limbs: [ 0x72a5c3f51c283524eb6f79660ba729, 0x4cc8ec848f9932f96660e46b8b0362, 0x00548e ] } , - BigNum { limbs: [ 0x4afe3f0ae233c9db14908599f458d8, 0x5a8a3d18edaf004071a725364d01f1, 0x001f5f ] } , - BigNum { limbs: [ 0xb69e5da3889e1b2613fb0ba0d0c8b9, 0x48f2bdc1f969a35750fccdbd565adc, 0x0045f4 ] } , - BigNum { limbs: [ 0x0705a55c75bde3d9ec04f35f2f3748, 0x5e606bdb83de8fe2870b3be481aa77, 0x002df9 ] } , - BigNum { limbs: [ 0xeeae11e7bccf3f082cf84eeb77b539, 0xd3cae75d7dcbb02266098876489699, 0x006a92 ] } , - BigNum { limbs: [ 0xcef5f118418cbff7d307b014884ac8, 0xd388423fff7c831771fe812b8f6eb9, 0x00095a ] } , - BigNum { limbs: [ 0x9edcfa443aea1905a885cb88412fc6, 0x71fcb801d5d5172aa6aa52827f4c0e, 0x00140c ] } , - BigNum { limbs: [ 0x1ec708bbc371e5fa577a3377bed03b, 0x3556719ba7731c0f315db71f58b945, 0x005fe1 ] } , - BigNum { limbs: [ 0x2c95af5bc18faa930fa010bc171746, 0x7dc1d3176b166ae305e12c0d0f3845, 0x003659 ] } , - BigNum { limbs: [ 0x910e53a43ccc546cf05fee43e8e8bb, 0x299156861231c856d226dd94c8cd0e, 0x003d94 ] } , - BigNum { limbs: [ 0x85a508df2452feef976635fc779c0c, 0x54744d4336448dd7a2cb1fe4cabc60, 0x00509e ] } , - BigNum { limbs: [ 0x37fefa20da0900106899c9038863f5, 0x52dedc5a4703a562353ce9bd0d48f3, 0x00234f ] } , - BigNum { limbs: [ 0x2a457ac1b1515e66caf0bfe0dc71bd, 0xde54f97535615e9a245b3b982d893b, 0x007033 ] } , - BigNum { limbs: [ 0x935e883e4d0aa099350f3f1f238e44, 0xc8fe302847e6d49fb3acce09aa7c18, 0x0003b9 ] } , - BigNum { limbs: [ 0xe681ffa04fd14425cd201433440674, 0xde62396f17618541eba544010dc6e2, 0x0031d2 ] } , - BigNum { limbs: [ 0xd722035fae8abada32dfeaccbbf98d, 0xc8f0f02e65e6adf7ec62c5a0ca3e70, 0x00421a ] } , - BigNum { limbs: [ 0x52dc972de8dd1ae0ef5504d0804371, 0xd7d00aa6d47ea06254fd521a05e75b, 0x0063c3 ] } , - BigNum { limbs: [ 0x6ac76bd2157ee41f10aafa2f7fbc90, 0xcf831ef6a8c992d7830ab787d21df8, 0x001029 ] } , - BigNum { limbs: [ 0x4804de0259a52492093ce6634374ea, 0x74a1cf96403463f289036f16b94858, 0x002037 ] } , - BigNum { limbs: [ 0x759f24fda4b6da6df6c3189cbc8b17, 0x32b15a073d13cf474f049a8b1ebcfb, 0x0053b6 ] } , - BigNum { limbs: [ 0x0b4a6523f47a1ff8e0b04c3b1af356, 0x83b623d916a3ad6c4c7ac3494271a8, 0x005a8d ] } , - BigNum { limbs: [ 0xb2599ddc09e1df071f4fb2c4e50cab, 0x239d05c466a485cd8b8d46589593ab, 0x001960 ] } , - BigNum { limbs: [ 0x3acd5edbf5700358a7bfe4303c5b1e, 0xb52b913e7460fc8fc271fb692c97c4, 0x0021a2 ] } , - BigNum { limbs: [ 0x82d6a42408ebfba758401acfc3a4e3, 0xf227985f08e736aa15960e38ab6d8f, 0x00524a ] } , - BigNum { limbs: [ 0x751f4f8dda18c726694b3c0708989b, 0x74e808084266d6dc71af08a18e5f03, 0x000d2f ] } , - BigNum { limbs: [ 0x4884b372244337d996b4c2f8f76766, 0x326b21953ae15c5d6659010049a650, 0x0066be ] } , - BigNum { limbs: [ 0x4d9b4898d2ec0030ad1815af2831cb, 0xb9b40807616a9227838f3a3ed300cf, 0x003d4c ] } , - BigNum { limbs: [ 0x7008ba672b6ffecf52e7e950d7ce36, 0xed9f21961bdda1125478cf63050484, 0x0036a0 ] } , - BigNum { limbs: [ 0x5661caa9b88f7bc99c409c32cbe93c, 0x81febdfe94276a8aad8807a5d7050b, 0x006767 ] } , - BigNum { limbs: [ 0x6742385645cc833663bf62cd3416c5, 0x25546b9ee920c8af2a8001fc010048, 0x000c86 ] } , - BigNum { limbs: [ 0xe1b8db4b0c6ea3ab3dcd74abc0acc5, 0x518f26f7d15431ab14182ee5361144, 0x003309 ] } , - BigNum { limbs: [ 0xdbeb27b4f1ed5b54c2328a543f533c, 0x55c402a5abf4018ec3efdabca1f40e, 0x0040e4 ] } , - BigNum { limbs: [ 0xef2afdb60852031c3f34a887d3c3e1, 0xcb3506e60a81f0394c93a42b5b72e9, 0x00064c ] } , - BigNum { limbs: [ 0xce790549f609fbe3c0cb56782c3c20, 0xdc1e22b772c643008b7465767c9269, 0x006da0 ] } , - BigNum { limbs: [ 0x8cdb76a42676ccb187cd4b5130698f, 0x41db3bd37280e077b68e7eab756cb8, 0x006959 ] } , - BigNum { limbs: [ 0x30c88c5bd7e5324e7832b3aecf9672, 0x6577edca0ac752c221798af662989b, 0x000a94 ] } , - BigNum { limbs: [ 0xb80be01829aa6e6b4e1dd7a6e41adf, 0x6de1daf8905fb9f70b105865f3b1cf, 0x004c84 ] } , - BigNum { limbs: [ 0x059822e7d4b19094b1e227591be522, 0x39714ea4ece87942ccf7b13be45384, 0x002769 ] } , - BigNum { limbs: [ 0xcad3633089749adf4e63d01af609aa, 0x0be46010a6b28fce2e90dce28a6db3, 0x003d3e ] } , - BigNum { limbs: [ 0xf2d09fcf74e76420b19c2ee509f657, 0x9b6ec98cd695a36ba9772cbf4d979f, 0x0036af ] } , - BigNum { limbs: [ 0x3fe56d15f19fd9d3a88f9769d85682, 0xa2628ede060eab8f2d5800a8be3b0f, 0x006281 ] } , - BigNum { limbs: [ 0x7dbe95ea0cbc252c5770679627a97f, 0x04f09abf773987aaaab008f919ca44, 0x00116c ] } , - BigNum { limbs: [ 0x33b77d2d66205cd6436789acd58a6a, 0x0e51924a73f486c6d515c6dbbd56d8, 0x00661d ] } , - BigNum { limbs: [ 0x89ec85d2983ba229bc9875532a7597, 0x990197530953ac7302f242c61aae7b, 0x000dd0 ] } , - BigNum { limbs: [ 0xbbd52b782f347dae0408970b4aab1a, 0x678caa916b48f296454a57be9a3dd2, 0x000554 ] } , - BigNum { limbs: [ 0x01ced787cf278151fbf767f4b554e7, 0x3fc67f0c11ff40a392bdb1e33dc781, 0x006e99 ] } , - BigNum { limbs: [ 0x7fe07d8d824b70a6b05f18a33c32b1, 0x4018a4fba9970315f7d6239cfdfbbe, 0x004ea9 ] } , - BigNum { limbs: [ 0x3dc385727c108e594fa0e65cc3cd50, 0x673a84a1d3b13023e031e604da0995, 0x002544 ] } , - BigNum { limbs: [ 0x50bf4dbafd02920d87e416425a1f5b, 0x43b8831183496fc9fedba1ca177ecf, 0x004c47 ] } , - BigNum { limbs: [ 0x6ce4b54501596cf2781be8bda5e0a6, 0x639aa68bf9fec36fd92c67d7c08684, 0x0027a6 ] } , - BigNum { limbs: [ 0x9c92782418d9a6f68d125f81344d2e, 0x3ae417d106a4752a779731a01e141a, 0x0005a4 ] } , - BigNum { limbs: [ 0x21118adbe582580972ed9f7ecbb2d3, 0x6c6f11cc76a3be0f6070d801b9f139, 0x006e49 ] } , - BigNum { limbs: [ 0xa9568098dc13297c139a093efa1190, 0x1f8538db87179f115b32fd34f9e257, 0x0044e7 ] } , - BigNum { limbs: [ 0x144d82672248d583ec65f5c105ee71, 0x87cdf0c1f63094287cd50c6cde22fc, 0x002f06 ] } , - BigNum { limbs: [ 0xdb59a295eea1fad891f7ce48c338da, 0x0bc19af45832cd3e67ec475459da28, 0x001a56 ] } , - BigNum { limbs: [ 0xe24a606a0fba04276e0830b73cc727, 0x9b918ea9251565fb701bc24d7e2b2a, 0x005997 ] } , - BigNum { limbs: [ 0x7cc816a910521c8f7f77012d9d64d2, 0xfd5789c0e146b081e9cf98bbfed9d6, 0x00483a ] } , - BigNum { limbs: [ 0x40dbec56ee09e2708088fdd2629b2f, 0xa9fb9fdc9c0182b7ee3870e5d92b7d, 0x002bb2 ] } , - BigNum { limbs: [ 0xc356be3d0f029aa409d9ee00585213, 0xb147452598293eb810c81a72553cb7, 0x0025b3 ] } , - BigNum { limbs: [ 0xfa4d44c2ef59645bf62610ffa7adee, 0xf60be477e51ef481c73fef2f82c89b, 0x004e39 ] } , - BigNum { limbs: [ 0xb871097a9f0c6f53f1742ce989b5a2, 0xdd8280effb6326d76b58b9434f6ec5, 0x00686f ] } , - BigNum { limbs: [ 0x0532f9855f4f8fac0e8bd216764a5f, 0xc9d0a8ad81e50c626caf505e88968e, 0x000b7d ] } , - BigNum { limbs: [ 0x1a129e137f0039c2fcba24fbaa6740, 0xaf9519ca80d68d67bc688c2a21ffa8, 0x0046ea ] } , - BigNum { limbs: [ 0xa39164ec7f5bc53d0345da045598c1, 0xf7be0fd2fc71a5d21b9f7d77b605ab, 0x002d02 ] } , - BigNum { limbs: [ 0x077dddb5761a734e2a017e4ffb6836, 0xe1e4f08eb7ec1e23d4338ba1fdbc33, 0x00099a ] } , - BigNum { limbs: [ 0xb626254a88418bb1d5fe80b00497cb, 0xc56e390ec55c151603d47dffda4920, 0x006a52 ] } , - BigNum { limbs: [ 0xc00f384e56df5ab098af553e858ddc, 0x772639e0f2e0bdf93ce28c12b17e9a, 0x003d4d ] } , - BigNum { limbs: [ 0xfd94cab1a77ca44f6750a9c17a7225, 0x302cefbc8a6775409b257d8f2686b8, 0x0036a0 ] } , - BigNum { limbs: [ 0xbbcd0457572ea4ba6f047a391e07cd, 0xdb9969605428e20283d330193c8c22, 0x00227d ] } , - BigNum { limbs: [ 0x01d6fea8a72d5a4590fb84c6e1f834, 0xcbb9c03d291f51375434d9889b7931, 0x00516f ] } , - BigNum { limbs: [ 0x3d78a715d35e675f5607600ebe8e85, 0x45bcd7037c97ac5bec5d064c7b2fa1, 0x0068c0 ] } , - BigNum { limbs: [ 0x802b5bea2afd97a0a9f89ef141717c, 0x6196529a00b086ddebab03555cd5b2, 0x000b2d ] } , - BigNum { limbs: [ 0x5255f97b2f5f8a3aab39c40d504e47, 0x3931c4e8a3365aa19c692fd480ceff, 0x0022e9 ] } , - BigNum { limbs: [ 0x6b4e0984cefc74c554c63af2afb1ba, 0x6e2164b4da11d8983b9ed9cd573654, 0x005104 ] } , - BigNum { limbs: [ 0xe8628b87c4717f74298e4f1f6b05b8, 0x86ffd6389f469bbcecee7941985189, 0x006d89 ] } , - BigNum { limbs: [ 0xd541777839ea7f8bd671afe094fa49, 0x20535364de01977ceb1990603fb3c9, 0x000664 ] } , - BigNum { limbs: [ 0xc4b3dde8d99b1da59b819134b83579, 0x3f3b319dd1b9a8cc0754083d8a76de, 0x001476 ] } , - BigNum { limbs: [ 0xf8f0251724c0e15a647e6dcb47ca88, 0x6817f7ffab8e8a6dd0b401644d8e74, 0x005f77 ] } , - BigNum { limbs: [ 0x5e5d72ca14bf355b2c4072b03330aa, 0xfcb9bed9a1d0c039e6a24828a4d111, 0x0044cb ] } , - BigNum { limbs: [ 0x5f469035e99cc9a4d3bf8c4fcccf57, 0xaa996ac3db7772fff165c179333442, 0x002f21 ] } , - BigNum { limbs: [ 0xa6b76707616830fca70889363d0810, 0x474a16a937608616f4669de6d37aa6, 0x004100 ] } , - BigNum { limbs: [ 0x16ec9bf89cf3ce0358f775c9c2f7f1, 0x600912f445e7ad22e3a16bbb048aad, 0x0032ed ] } , - BigNum { limbs: [ 0x034ce5f2a0e16cc71a57258e59e205, 0x4a3b69d18144f376ca920c31a41df2, 0x005d4a ] } , - BigNum { limbs: [ 0xba571d0d5d7a9238e5a8d971a61dfc, 0x5d17bfcbfc033fc30d75fd7033e761, 0x0016a3 ] } , - BigNum { limbs: [ 0x479c06b64c620e54913a5fad66493e, 0xe8eccb401e43ab35fb17c2ef06e1ff, 0x004f0e ] } , - BigNum { limbs: [ 0x7607fc49b1f9f0ab6ec59f5299b6c3, 0xbe665e5d5f048803dcf046b2d12354, 0x0024de ] } , - BigNum { limbs: [ 0x8301162f9b026bdf8f0a899f9ee419, 0x8d97e4ea5441615140b6e155e9ab76, 0x001aa6 ] } , - BigNum { limbs: [ 0x3aa2ecd06359932070f57560611be8, 0x19bb44b32906d1e89751284bee59dd, 0x005947 ] } , - BigNum { limbs: [ 0x9c1028848c11d02b0801fe4d03f4b3, 0xddace4e38717b5fc4d667f921f06b3, 0x001110 ] } , - BigNum { limbs: [ 0x2193da7b724a2ed4f7fe00b2fc0b4e, 0xc9a644b9f6307d3d8aa18a0fb8fea0, 0x0062dc ] } , - BigNum { limbs: [ 0x3288fa993675c6b000ebfccd728a11, 0x3393fe4edec850a6b9493521aaddad, 0x006be2 ] } , - BigNum { limbs: [ 0x8b1b0866c7e6384fff1402328d75f0, 0x73bf2b4e9e7fe2931ebed4802d27a6, 0x00080b ] } , - BigNum { limbs: [ 0x199a38673d1c784644f6e6d10cdb65, 0x5763a14834a7853a33904d076ea499, 0x0005fe ] } , - BigNum { limbs: [ 0xa409ca98c13f86b9bb09182ef3249c, 0x4fef885548a0adffa477bc9a6960ba, 0x006def ] } , - BigNum { limbs: [ 0x50d9ce6be8ab7e9afd17ae1c79b3cc, 0x6f3c81d65abe294532501559ab8009, 0x003e12 ] } , - BigNum { limbs: [ 0x6cca349415b0806502e850e3864c35, 0x3816a7c7228a09f4a5b7f4482c854a, 0x0035db ] } , - BigNum { limbs: [ 0x2086a26309099ab289450a2c8c785c, 0x78639fbbfa1a19c8f6a5547ef0cb37, 0x005cae ] } , - BigNum { limbs: [ 0x9d1d609cf552644d76baf4d37387a5, 0x2eef89e1832e1970e162b522e73a1c, 0x00173f ] } , - BigNum { limbs: [ 0x726a6f11fd5d1e41a26186d0f7d95a, 0x480ded0b0a2522ed236d0d4ec5e8bf, 0x005b39 ] } , - BigNum { limbs: [ 0x4b3993ee00fee0be5d9e782f0826a7, 0x5f453c927323104cb49afc53121c94, 0x0018b4 ] } , - BigNum { limbs: [ 0xac9edb793129a56d2a3526d2c2e46a, 0x40f093ad57bc107ae64b724aae15f9, 0x006831 ] } , - BigNum { limbs: [ 0x11052786cd325992d5cad82d3d1b97, 0x666295f0258c22bef1bc975729ef5a, 0x000bbc ] } , - BigNum { limbs: [ 0x6a7dd7ea6053089d718125b7898a67, 0xf96ecc6b5153abf178d66922bda5cb, 0x005b3c ] } , - BigNum { limbs: [ 0x53262b159e08f6628e7ed94876759a, 0xade45d322bf487485f31a07f1a5f88, 0x0018b0 ] } , - BigNum { limbs: [ 0xa04848fde48575abf74fde099c325f, 0x7857f96a44b11675db3747d3d791a7, 0x003395 ] } , - BigNum { limbs: [ 0x1d5bba0219d6895408b020f663cda2, 0x2efb303338971cc3fcd0c1ce0073ac, 0x004058 ] } , - BigNum { limbs: [ 0x69b1ce32ce51fbe4282ad9e2553334, 0x6ea21fc2a195c87adc4b385e8304b6, 0x005bd0 ] } , - BigNum { limbs: [ 0x53f234cd300a031bd7d5251daacccd, 0x38b109dadbb26abefbbcd14355009d, 0x00181d ] } , - BigNum { limbs: [ 0x5f6c03f0f179646b0b935e5c78f259, 0x287edbd07e2b04b4c968ebc0152690, 0x005995 ] } , - BigNum { limbs: [ 0x5e37ff0f0ce29a94f46ca0a3870da8, 0x7ed44dccff1d2e850e9f1de1c2dec3, 0x001a58 ] } , - BigNum { limbs: [ 0x5ed2cf19172e412e59452c2173c6ea, 0xb895c01840aecfda8e31c5ff001739, 0x005656 ] } , - BigNum { limbs: [ 0x5ed133e6e72dbdd1a6bad2de8c3917, 0xeebd69853c99635f49d643a2d7ee1a, 0x001d96 ] } , - BigNum { limbs: [ 0x9dcb7f92ea6a9b8d444a5beec3aaaf, 0x07e606bceb10c1d6263b3c797138ff, 0x00654d ] } , - BigNum { limbs: [ 0x1fd8836d13f16372bbb5a3113c5552, 0x9f6d22e092377163b1cccd2866cc54, 0x000ea0 ] } , - BigNum { limbs: [ 0xb9b3a0749e60cb8768c9f875b63680, 0x291981e1a6ffd922ef4010fd623046, 0x003a9e ] } , - BigNum { limbs: [ 0x03f0628b5ffb33789736068a49c981, 0x7e39a7bbd6485a16e8c7f8a475d50d, 0x00394f ] } , - BigNum { limbs: [ 0xf2172bc7473892459629b66ba900be, 0xeb28f1112e24ae07a577ed5adb9833, 0x003ec2 ] } , - BigNum { limbs: [ 0xcb8cd738b7236cba69d6489456ff43, 0xbc2a388c4f23853232901c46fc6d1f, 0x00352a ] } , - BigNum { limbs: [ 0x6c73629eb540ea3f9554aa5ac511e9, 0xba428345abaac34c773123acc36bcc, 0x004a8a ] } , - BigNum { limbs: [ 0x5130a061491b14c06aab54a53aee18, 0xed10a657d19d6fed60d6e5f5149987, 0x002962 ] } , - BigNum { limbs: [ 0xd2b29f89691c73686d7450c33d5a33, 0x95c67b9ea2efa1729a4994ac329b4c, 0x0057b5 ] } , - BigNum { limbs: [ 0xeaf16376953f8b97928bae3cc2a5ce, 0x118cadfeda5891c73dbe74f5a56a06, 0x001c38 ] } , - BigNum { limbs: [ 0x0da05f62a2205a038764a74650d0c5, 0x264ed896f8869866cb67d02650f974, 0x00192c ] } , - BigNum { limbs: [ 0xb003a39d5c3ba4fc789b57b9af2f3c, 0x8104510684c19ad30ca0397b870bdf, 0x005ac1 ] } , - BigNum { limbs: [ 0x07f2b8fe1b995c6f51caab160744d9, 0x45b7ef86f69047659707080c8273d8, 0x00724c ] } , - BigNum { limbs: [ 0xb5b14a01e2c2a290ae3553e9f8bb28, 0x619b3a1686b7ebd44101019555917b, 0x0001a1 ] } , - BigNum { limbs: [ 0xe6a93079ee7cccc934e486ecc125c0, 0x355dce7eaf368f76379c2c28653e10, 0x002031 ] } , - BigNum { limbs: [ 0xd6fad2860fdf3236cb1b78133eda41, 0x71f55b1ece11a3c3a06bdd7972c742, 0x0053bc ] } , - BigNum { limbs: [ 0xf79fc3d741bf226521696c6179297c, 0x9ae2c216552207600419c3f6115aeb, 0x0063bc ] } , - BigNum { limbs: [ 0xc6043f28bc9cdc9ade96929e86d685, 0x0c70678728262bd9d3ee45abc6aa67, 0x001031 ] } , - BigNum { limbs: [ 0xc4ded9ffbba24056e5deedda27244b, 0x8f8601768ac3bbb9b61429944d0c24, 0x00213e ] } , - BigNum { limbs: [ 0xf8c5290042b9bea91a211125d8dbb6, 0x17cd2826f284778021f3e00d8af92e, 0x0052af ] } , - BigNum { limbs: [ 0xf518b492651ba347ad66c74d7bca64, 0x5064e14b100a32e73c0848a259cce0, 0x004409 ] } , - BigNum { limbs: [ 0xc88b4e6d99405bb8529937b284359d, 0x56ee48526d3e00529bffc0ff7e3872, 0x002fe4 ] } , - BigNum { limbs: [ 0x31564fda741ade70b774835f62ee3c, 0x1ce4194322964607884498bbcb8c71, 0x001e85 ] } , - BigNum { limbs: [ 0x8c4db3258a41208f488b7ba09d11c5, 0x8a6f105a5ab1ed324fc370e60c78e2, 0x005568 ] } , - BigNum { limbs: [ 0xddec933364680fd1c931b0f7188c6e, 0x2e92d9ce55819bcfd2af02a07aa006, 0x000456 ] } , - BigNum { limbs: [ 0xdfb76fcc99f3ef2e36ce4e08e77393, 0x78c04fcf27c6976a055907015d654c, 0x006f97 ] } , - BigNum { limbs: [ 0x960fc9c499955198e1e535f0666860, 0x5f24e19b3eee4df7efe5f71e0abf44, 0x0054a5 ] } , - BigNum { limbs: [ 0x2794393b64c6ad671e1ac90f9997a1, 0x482e48023e59e541e8221283cd460f, 0x001f48 ] } , - BigNum { limbs: [ 0x1bc63ba1f12ba86a96e7321bc04210, 0x5ec81887c4f43e877567664189754e, 0x0045df ] } , - BigNum { limbs: [ 0xa1ddc75e0d3056956918cce43fbdf1, 0x488b1115b853f4b262a0a3604e9005, 0x002e0e ] } , - BigNum { limbs: [ 0x7c81ae1d87699d225d35c86477d58b, 0x400e38958dc7f5783bcc2a7ca18b18, 0x004293 ] } , - BigNum { limbs: [ 0x412254e276f261dda2ca369b882a76, 0x6744f107ef803dc19c3bdf25367a3b, 0x00315a ] } , - BigNum { limbs: [ 0x2611cec67dd54be518be27e7093f4e, 0x9743b4e0d46958698576f11c4a2e78, 0x0011ea ] } , - BigNum { limbs: [ 0x979234398086b31ae741d718f6c0b3, 0x100f74bca8dedad0529118858dd6db, 0x006203 ] } , - BigNum { limbs: [ 0x0223751b720a0cf2dab1c8c4a189ff, 0xdcb7690555b9127b1606420ade2a86, 0x002ac9 ] } , - BigNum { limbs: [ 0xbb808de48c51f20d254e363b5e7602, 0xca9bc098278f20bec201c796f9dacd, 0x004923 ] } , - BigNum { limbs: [ 0xa5dd527cd71fb7976ac7f5f6c72a88, 0x6117fe37a234a60a47cec5cb1a85e6, 0x001f1c ] } , - BigNum { limbs: [ 0x17c6b083273c47689538090938d579, 0x463b2b65db138d2f903943d6bd7f6d, 0x0054d1 ] } , - BigNum { limbs: [ 0x8b12057546a348bd571c059c104014, 0xb61776734f89d0fc55508e07bb7098, 0x00699c ] } , - BigNum { limbs: [ 0x3291fd8ab7b8b642a8e3f963efbfed, 0xf13bb32a2dbe623d82b77b9a1c94bb, 0x000a50 ] } , - BigNum { limbs: [ 0x9e8b72db6f1e2653fd29142d3819a2, 0xd3f9439750aa38a37afc68b0fafae2, 0x0054a1 ] } , - BigNum { limbs: [ 0x1f1890248f3dd8ac02d6ead2c7e65f, 0xd359e6062c9dfa965d0ba0f0dd0a71, 0x001f4b ] } , - BigNum { limbs: [ 0xd7c1a278ec608700a9be0299817ca4, 0x55532c1abbaf9ef11dfefbb02e5e62, 0x0007a0 ] } , - BigNum { limbs: [ 0xe5e2608711fb77ff5641fc667e835d, 0x51fffd82c1989448ba090df1a9a6f0, 0x006c4d ] } , - BigNum { limbs: [ 0x1fd547be4b6ce2b275fb29418f4c5d, 0x428c158ed643f84e55b954bddacbef, 0x003076 ] } , - BigNum { limbs: [ 0x9dcebb41b2ef1c4d8a04d5be70b3a4, 0x64c7140ea7043aeb824eb4e3fd3964, 0x004377 ] } , - BigNum { limbs: [ 0xc86ad30700ce774a3b8d2e0f596020, 0xba2fd3948857eb766ca2207244f211, 0x006a3e ] } , - BigNum { limbs: [ 0xf5392ff8fd8d87b5c472d0f0a69fe1, 0xed235608f4f047c36b65e92f931341, 0x0009ae ] } , - BigNum { limbs: [ 0x855177336fb60fdca2ca5cd99ce3c3, 0xe0d6b37e59679e533b9248389fa8c1, 0x00324a ] } , - BigNum { limbs: [ 0x38528bcc8ea5ef235d35a226631c3e, 0xc67c761f23e094e69c75c169385c92, 0x0041a2 ] } , - BigNum { limbs: [ 0xa947be6ae0adca67112eaf34e9f6be, 0x377e8099fa46465283e47a582918fe, 0x001b23 ] } , - BigNum { limbs: [ 0x145c44951dae3498eed14fcb160943, 0x6fd4a9038301ece754238f49aeec55, 0x0058ca ] } , - BigNum { limbs: [ 0x1d79c870ba25b6c9e1715651f94edb, 0xe6471ba2107df5f9703e00bf2460a7, 0x002bbe ] } , - BigNum { limbs: [ 0xa02a3a8f443648361e8ea8ae06b126, 0xc10c0dfb6cca3d4067ca08e2b3a4ac, 0x00482e ] } , - BigNum { limbs: [ 0x180a97607b7b75ee0a9b7720fe18ea, 0x61caaccddcb331fc82977997ab4493, 0x003441 ] } , - BigNum { limbs: [ 0xa5996b9f82e08911f56487df01e717, 0x45887ccfa095013d5570900a2cc0c0, 0x003fac ] } , - BigNum { limbs: [ 0x7a4cdd8c345f311415ae6f648ca4c4, 0x11970ddf05c3476edefa503afd9c0a, 0x0017ae ] } , - BigNum { limbs: [ 0x43572573c9fccdebea518f9b735b3d, 0x95bc1bbe7784ebcaf90db966da6949, 0x005c3f ] } , - BigNum { limbs: [ 0x2431336dffbd3ff302032d443d58d3, 0xda94c4d882d868bd470adc88c0ecd8, 0x0026c2 ] } , - BigNum { limbs: [ 0x9972cf91fe9ebf0cfdfcd1bbc2a72e, 0xccbe64c4fa6fca7c90fd2d1917187b, 0x004d2a ] } , - BigNum { limbs: [ 0x8b73877a32f62bdfe96721a6cd7b3e, 0x0231915bdd4603e21d77f00f7c14ae, 0x004f5b ] } , - BigNum { limbs: [ 0x32307b85cb65d3201698dd593284c3, 0xa5219841a0022f57ba9019925bf0a5, 0x002492 ] } , - BigNum { limbs: [ 0xe566e43fbfb3adcaa4621ab46a4d30, 0xe4c6b3243876efd27177d6ce56ad87, 0x00583a ] } , - BigNum { limbs: [ 0xd83d1ec03ea851355b9de44b95b2d1, 0xc28c767944d14367669032d38157cb, 0x001bb2 ] } , - BigNum { limbs: [ 0x7e23dd40142c5f9422d2c34101124c, 0x9b8792f6512f934f79299c50142c3d, 0x0024ea ] } , - BigNum { limbs: [ 0x3f8025bfea2f9f6bdd2d3bbefeedb5, 0x0bcb96a72c189fea5ede6d51c3d916, 0x004f03 ] } , - BigNum { limbs: [ 0xec9c0406a08f265cce2c30333b187f, 0x6ca4e92bd0ad946fec5826cc03719d, 0x000206 ] } , - BigNum { limbs: [ 0xd107fef95dccd8a331d3ceccc4e782, 0x3aae4071ac9a9ec9ebafe2d5d493b5, 0x0071e7 ] } , - BigNum { limbs: [ 0x7f3449b8bd93686beadab96405ae3a, 0x1ab61fc3015bf5412a443f8e57f148, 0x003965 ] } , - BigNum { limbs: [ 0x3e6fb94740c896941525459bfa51c7, 0x8c9d09da7bec3df8adc3ca1380140b, 0x003a88 ] } , - BigNum { limbs: [ 0xd9c57133e56dfad3ea280c5f782f2b, 0xead5a7d140e1e3fff1c4cd5cae127b, 0x0024c2 ] } , - BigNum { limbs: [ 0xe3de91cc18ee042c15d7f2a087d0d6, 0xbc7d81cc3c664f39e6433c4529f2d7, 0x004f2a ] } , - BigNum { limbs: [ 0xa7fbcbd8c1ce86f75167878ef4c2b7, 0x118566730cb78c4efcd85ee6395889, 0x007110 ] } , - BigNum { limbs: [ 0x15a837273c8d7808ae9877710b3d4a, 0x95cdc32a7090a6eadb2faabb9eacca, 0x0002dd ] } , - BigNum { limbs: [ 0x1ffcba3c12bc2b9ee90b3d11c2dd21, 0x102ef837861bde2c7551f9dff19445, 0x0006b7 ] } , - BigNum { limbs: [ 0x9da748c3eb9fd36116f4c1ee3d22e0, 0x97243165f72c550d62b60fc1e6710e, 0x006d36 ] } , - BigNum { limbs: [ 0xd017e31cf0cb08eef8f30684ce9026, 0x8d3c8185d7d529293c2d54cc37eba5, 0x00519e ] } , - BigNum { limbs: [ 0xed8c1fe30d90f611070cf87b316fdb, 0x1a16a817a5730a109bdab4d5a019ad, 0x00224f ] } , - BigNum { limbs: [ 0x7a986565c2a5d1c9be282a115f3af5, 0x9b7c85ec9ffed0759691f8350bcf77, 0x002dfe ] } , - BigNum { limbs: [ 0x430b9d9a3bb62d3641d7d4eea0c50c, 0x0bd6a3b0dd4962c44176116ccc35dc, 0x0045ef ] } , - BigNum { limbs: [ 0xa9e37a3c78a6f03c5e8cd07ac27967, 0xa77bf4482596c40e6ea7ec15f1e470, 0x006957 ] } , - BigNum { limbs: [ 0x13c088c385b50ec3a1732e853d869a, 0xffd7355557b16f2b69601d8be620e3, 0x000a95 ] } , - BigNum { limbs: [ 0xda1d1c2ae95f6ed46bc78329689a4e, 0xd3feed71abf08747974362d7998504, 0x005f55 ] } , - BigNum { limbs: [ 0xe386e6d514fc902b94387bd69765b3, 0xd3543c2bd157abf240c4a6ca3e804e, 0x001497 ] } , - BigNum { limbs: [ 0xdc7f318ce3896129a67c58c11af270, 0x33b32d96101f50bdf12f11ba2ba3f6, 0x004407 ] } , - BigNum { limbs: [ 0xe124d1731ad29dd65983a63ee50d91, 0x739ffc076d28e27be6d8f7e7ac615c, 0x002fe6 ] } , - BigNum { limbs: [ 0x277cbb3e7a777eeeb008d78b019434, 0xfbfe7fba4f67c98d9a4ba421a74a5e, 0x006892 ] } , - BigNum { limbs: [ 0x962747c183e480114ff72774fe6bcd, 0xab54a9e32de069ac3dbc658030baf5, 0x000b5a ] } , - BigNum { limbs: [ 0x20997b1fdd66bd53ec18ed560e5c0c, 0x74a3e7e4ae661be49858d07f3e273d, 0x000bdf ] } , - BigNum { limbs: [ 0x9d0a87e020f541ac13e711a9f1a3f5, 0x32af41b8cee217553faf392299de16, 0x00680e ] } , - BigNum { limbs: [ 0xe792ae1b302effd0b0f21e5dd18de6, 0x1d8cfff841ef8c787035f36a072656, 0x0051d1 ] } , - BigNum { limbs: [ 0xd61154e4ce2cff2f4f0de0a22e721b, 0x89c629a53b58a6c167d21637d0defc, 0x00221c ] } , - BigNum { limbs: [ 0x1a01cc28fefe11f643be94ebcf7272, 0x3a3286fa30c54b3fe9256008c92553, 0x00491c ] } , - BigNum { limbs: [ 0xa3a236d6ff5ded09bc416a14308d8f, 0x6d20a2a34c82e7f9eee2a9990ee000, 0x002ad1 ] } , - BigNum { limbs: [ 0x3fdeea97c6fe196470728429de50e2, 0x0a1474f2943817443ffa79edc2405a, 0x003edc ] } , - BigNum { limbs: [ 0x7dc51868375de59b8f8d7ad621af1f, 0x9d3eb4aae9101bf5980d8fb415c4f9, 0x003511 ] } , - BigNum { limbs: [ 0xeaa5fd91eb8ad60697528e66468f8b, 0xf542a4cb0e56a928854e7f46c10779, 0x0037ca ] } , - BigNum { limbs: [ 0xd2fe056e12d128f968ad7099b97076, 0xb21084d26ef18a1152b98a5b16fdd9, 0x003c22 ] } , - BigNum { limbs: [ 0x13924feb1eeca0f1045bd496c219a4, 0x1bdcc7a762a7a1e2d45135ad7c1cf7, 0x000303 ] } , - BigNum { limbs: [ 0xaa11b314df6f5e0efba42a693de65d, 0x8b7661f61aa0915703b6d3f45be85c, 0x0070ea ] } , - BigNum { limbs: [ 0x4daa4a99dbb5b03fbacc5e6dc71317, 0x8eb4ab2df85240fdd323261f47b06d, 0x002bbf ] } , - BigNum { limbs: [ 0x6ff9b86622a64ec04533a09238ecea, 0x189e7e6f84f5f23c04e4e3829054e6, 0x00482e ] } , - BigNum { limbs: [ 0x6af2a3df55476564cabfb80ccdf965, 0xa8bb5dc5e43d9aaa551e3cb295f125, 0x006bfb ] } , - BigNum { limbs: [ 0x52b15f20a914999b354046f332069c, 0xfe97cbd7990a988f82e9ccef42142e, 0x0007f1 ] } , - BigNum { limbs: [ 0x57cb9f5410cdb13e4972bf66f482c6, 0x0a0c78d1f4e98c45d4e61e2afaf2e3, 0x006534 ] } , - BigNum { limbs: [ 0x65d863abed8e4dc1b68d3f990b7d3b, 0x9d46b0cb885ea6f40321eb76dd1270, 0x000eb9 ] } , - BigNum { limbs: [ 0x47df7ab3dcb27be44ecf3b78cfad97, 0x5daa7c9b91da67e2903db4b2328356, 0x000cb4 ] } , - BigNum { limbs: [ 0x75c4884c21a9831bb130c38730526a, 0x49a8ad01eb6dcb5747ca54efa581fd, 0x006739 ] } , - BigNum { limbs: [ 0x335495b3e381a61803b5a2380d0d30, 0xdc57672d00970d536c25c56fe7a60f, 0x0021d1 ] } , - BigNum { limbs: [ 0x8a4f6d4c1ada58e7fc4a5cc7f2f2d1, 0xcafbc2707cb125e66be24431f05f44, 0x00521b ] } , - BigNum { limbs: [ 0xb619876811f53367d96ac4dec2a7c5, 0x205c599f30a57bf990ec45bb4a8b69, 0x003ef1 ] } , - BigNum { limbs: [ 0x078a7b97ec66cb9826953a213d583c, 0x86f6cffe4ca2b740471bc3e68d79ea, 0x0034fc ] } , - BigNum { limbs: [ 0x41e2dc3cbcaa821d94f28bd2c67835, 0x1f70aeb2ebcd2b0325dad02c36de2e, 0x0014b9 ] } , - BigNum { limbs: [ 0x7bc126c341b17ce26b0d732d3987cc, 0x87e27aea917b0836b22d3975a12725, 0x005f34 ] } , - BigNum { limbs: [ 0x4afcc358f070656798b57cfe3321aa, 0xf69b92ab6fc454e75abe206844831d, 0x001654 ] } , - BigNum { limbs: [ 0x72a73fa70deb9998674a8201ccde57, 0xb0b796f20d83de527d49e939938236, 0x005d98 ] } , - BigNum { limbs: [ 0xb646d5a9ae7de4fb27d64d21924534, 0x29fc62fee1ef3730c5466a640457fe, 0x003c13 ] } , - BigNum { limbs: [ 0x075d2d564fde1a04d829b1de6dbacd, 0x7d56c69e9b58fc0912c19f3dd3ad55, 0x0037da ] } , - BigNum { limbs: [ 0x89d821e1ae06b63c3d590cd42f742e, 0x63ad8b42d73f52437581fc31b4cb3b, 0x0045cb ] } , - BigNum { limbs: [ 0x33cbe11e505548c3c2a6f22bd08bd3, 0x43a59e5aa608e0f662860d70233a18, 0x002e22 ] } , - BigNum { limbs: [ 0xd7c6c5de7c9c7598942eff1093543f, 0x475a4ded008f25944c39b09897e604, 0x006e29 ] } , - BigNum { limbs: [ 0xe5dd3d2181bf89676bd0ffef6cabc2, 0x5ff8dbb07cb90da58bce5909401f4e, 0x0005c4 ] } , - BigNum { limbs: [ 0xac5823be4c981f8af00971a8493ef2, 0x1d363d4b2f15805a9b50ec0d2d83c6, 0x003175 ] } , - BigNum { limbs: [ 0x114bdf41b1c3df750ff68d57b6c10f, 0x8a1cec524e32b2df3cb71d94aa818d, 0x004278 ] } , - BigNum { limbs: [ 0x9f60bd799619a78b235e378dc9fa7c, 0x81e948ae5bc5fe101b8c580f1b2242, 0x0067b0 ] } , - BigNum { limbs: [ 0x1e43458668425774dca1c772360585, 0x2569e0ef21823529bc7bb192bce311, 0x000c3d ] } , - BigNum { limbs: [ 0xee8492ee3da22ff3e3e1962f75a6b8, 0x5dd7ff6f5999d3d22736d22e5d8107, 0x0073d3 ] } , - BigNum { limbs: [ 0xcf1f7011c0b9cf0c1c1e68d08a5949, 0x497b2a2e23ae5f67b0d137737a844b, 0x00001a ] } , - BigNum { limbs: [ 0xcec740fed7840e6dbad9a23e72f81c, 0xb9a5d59ea6535f2fce20817a78d7c3, 0x004785 ] } , - BigNum { limbs: [ 0xeedcc20126d7f09245265cc18d07e5, 0xedad53fed6f4d40a09e788275f2d8f, 0x002c67 ] } , - BigNum { limbs: [ 0x069ac76165652518b66c7d8e84b7fb, 0x6824377d54128a64cca9517059cf6b, 0x0033f1 ] } , - BigNum { limbs: [ 0xb7093b9e98f6d9e7499381717b4806, 0x3f2ef2202935a8d50b5eb8317e35e8, 0x003ffc ] } , - BigNum { limbs: [ 0x0ecd974f2a3b506efed909666fe227, 0x79afbe389bf399a8cb100ba938f0ea, 0x005eac ] } , - BigNum { limbs: [ 0xaed66bb0d420ae910126f599901dda, 0x2da36b64e15499910cf7fdf89f1469, 0x001541 ] } , - BigNum { limbs: [ 0x010631e01cbc9f572cb84cf2c5ba09, 0x861b644b42c375aa55f89169d7ad93, 0x005b59 ] } , - BigNum { limbs: [ 0xbc9dd11fe19f5fa8d347b20d3a45f8, 0x2137c5523a84bd8f820f78380057c0, 0x001894 ] } , - BigNum { limbs: [ 0x036aeea430a057753ed7c94fb0eeb9, 0x421b969856edaeada54c5497aad2cf, 0x002aa4 ] } , - BigNum { limbs: [ 0xba39145bcdbba78ac12835b04f1148, 0x65379305265a848c32bbb50a2d3284, 0x004949 ] } , - BigNum { limbs: [ 0x27f1e0971010d57a3c81696a211fdf, 0xa91f129e2638b0ee8a91eb8b9e25cb, 0x0065f1 ] } , - BigNum { limbs: [ 0x95b22268ee4b2985c37e9595dee022, 0xfe3416ff570f824b4d761e1639df88, 0x000dfb ] } , - BigNum { limbs: [ 0xb6b627c983a9d2e73458ac79b074ee, 0x26f9a1f2fb63a902b699f27a42bda3, 0x0066ae ] } , - BigNum { limbs: [ 0x06eddb367ab22c18cba752864f8b13, 0x805987aa81e48a37216e17279547b0, 0x000d3f ] } , - BigNum { limbs: [ 0x2345c5177d051a336503a91e97e5d7, 0xe82a9d82d223e607676361fe30e365, 0x002b64 ] } , - BigNum { limbs: [ 0x9a5e3de88156e4cc9afc55e1681a2a, 0xbf288c1aab244d3270a4a7a3a721ee, 0x004888 ] } , - BigNum { limbs: [ 0xb5d08955ff9e20e0480ab0fd9a31fa, 0x67c5369459aa472ce39066e706af49, 0x005bf5 ] } , - BigNum { limbs: [ 0x07d379a9febdde1fb7f54e0265ce07, 0x3f8df309239dec0cf477a2bad1560a, 0x0017f8 ] } , - BigNum { limbs: [ 0x21a614ccdb8d0356d6ec5ed1e118ad, 0x4cbaa9097311544f0b99685cfd7fc2, 0x003715 ] } , - BigNum { limbs: [ 0x9bfdee3322cefba92913a02e1ee754, 0x5a9880940a36deeacc6ea144da8591, 0x003cd8 ] } , - BigNum { limbs: [ 0x4004660ebbfc8136ef495f9fe8668d, 0xd2acd3b1314f047d8c5e8e943d7b0f, 0x00158c ] } , - BigNum { limbs: [ 0x7d9f9cf1425f7dc910b69f60179974, 0xd4a655ec4bf92ebc4ba97b0d9a8a44, 0x005e60 ] } , - BigNum { limbs: [ 0xef7cb95c169e236f344925d273570b, 0xed4d89397e65a1e265fc1fb2d6cb41, 0x0039d6 ] } , - BigNum { limbs: [ 0xce2749a3e7bddb90cbb6d92d8ca8f6, 0xba05a063fee29157720be9ef013a11, 0x003a16 ] } , - BigNum { limbs: [ 0xbfd8fb21c9bc312aafa84a8f32c4c3, 0x725ed9887c0d76a737cfb9ec903271, 0x006fd9 ] } , - BigNum { limbs: [ 0xfdcb07de349fcdd55057b470cd3b3e, 0x34f45015013abc92a0384fb547d2e1, 0x000414 ] } , - BigNum { limbs: [ 0xac5555ad914c92614850e921b50b55, 0x888e1bc2c0f01f01546fd8631e66e8, 0x0027fc ] } , - BigNum { limbs: [ 0x114ead526d0f6c9eb7af15de4af4ac, 0x1ec50ddabc5814388398313eb99e6b, 0x004bf1 ] } , - BigNum { limbs: [ 0x54fbc08c604c0bc827edff9f54ca63, 0xdddc6facd3a427840b4f6a4b3ffe3c, 0x0000cc ] } , - BigNum { limbs: [ 0x68a842739e0ff337d811ff60ab359e, 0xc976b9f0a9a40bb5ccb89f56980717, 0x007320 ] } , - BigNum { limbs: [ 0xf4f876d5d1189994dd945218bdbbc2, 0xfb376ec72a786796c6567f5b161232, 0x005e8f ] } , - BigNum { limbs: [ 0xc8ab8c2a2d43656b226bace742443f, 0xac1bbad652cfcba311b18a46c1f320, 0x00155d ] } , - BigNum { limbs: [ 0x33fc05de37b96a5c092cddae2df4ca, 0x946abc676c5ed913df0b62773d4fbd, 0x000822 ] } , - BigNum { limbs: [ 0x89a7fd21c6a294a3f6d32151d20b37, 0x12e86d3610e95a25f8fca72a9ab596, 0x006bcb ] } , - BigNum { limbs: [ 0x9d80b5ada11a750907a4e8b7d58e6a, 0x3c12226705777b23957d3889bcbf4d, 0x005b5e ] } , - BigNum { limbs: [ 0x20234d525d4189f6f85b16482a7197, 0x6b41073677d0b816428ad1181b4606, 0x00188f ] } , - BigNum { limbs: [ 0xdeb374606e7481ab9cb369c352cef9, 0x386f0661f1a7f25ded5a7525beba19, 0x0030c6 ] } , - BigNum { limbs: [ 0xdef08e9f8fe77d54634c953cad3108, 0x6ee4233b8ba040dbeaad947c194b39, 0x004327 ] } , - BigNum { limbs: [ 0x5b1a2164b6dd1896e6c704e507a68c, 0xa11049970467d95853e14bf970d3fc, 0x00736a ] } , - BigNum { limbs: [ 0x6289e19b477ee6691938fa1af85975, 0x0642e00678e059e18426bda8673157, 0x000083 ] } , - BigNum { limbs: [ 0xa0c3b85cc1625c18889dbb4c8fc93f, 0x554ad434a3a77303d14549438829dd, 0x002db8 ] } , - BigNum { limbs: [ 0x1ce04aa33cf9a2e7776243b37036c2, 0x52085568d9a0c03606c2c05e4fdb76, 0x004635 ] } , - BigNum { limbs: [ 0x495a3f68e907e71bb3e6377c8ca828, 0x42dcd31ae38aaeeb020aab9a427042, 0x00136d ] } , - BigNum { limbs: [ 0x7449c397155417e44c19c7837357d9, 0x6476568299bd844ed5fd5e07959511, 0x006080 ] } , - BigNum { limbs: [ 0x03fca33ae80a7fc83b37a3b9e12e68, 0x42747c135aee51c1f421f069545a96, 0x0016f8 ] } , - BigNum { limbs: [ 0xb9a75fc516517f37c4c85b461ed199, 0x64dead8a2259e177e3e6193883aabd, 0x005cf5 ] } , - BigNum { limbs: [ 0x2e14681c99205c3efbab2e58a9a902, 0xd98628e0476857354101f90fd89fc1, 0x002975 ] } , - BigNum { limbs: [ 0x8f8f9ae3653ba2c10454d0a75656ff, 0xcdcd00bd35dfdc0497061091ff6592, 0x004a77 ] } , - BigNum { limbs: [ 0x8b8205eb6bd64213c2c46305798d57, 0xc8a83119f25dcd4785621a77f02003, 0x0029a8 ] } , - BigNum { limbs: [ 0x3221fd149285bcec3d3b9bfa8672aa, 0xdeaaf8838aea65f252a5ef29e7e550, 0x004a44 ] } , - BigNum { limbs: [ 0x3a7975240c453467f53af052532623, 0x65af92d4f70159b29ee57bf65f7f96, 0x00622b ] } , - BigNum { limbs: [ 0x832a8ddbf216ca980ac50eadacd9de, 0x41a396c88646d98739228dab7885bd, 0x0011c2 ] } , - BigNum { limbs: [ 0x63e200e9d8e2e5305f74f884460d5a, 0xf96b57d1fb5374dfde2f880fa03f19, 0x0023a8 ] } , - BigNum { limbs: [ 0x59c20216257919cfa08b067bb9f2a7, 0xade7d1cb81f4be59f9d8819237c63a, 0x005044 ] } , - BigNum { limbs: [ 0xe6f3a7aa7aa027d5ef58fc555a6545, 0xc3a26d8d2d0b63363c75ac7b61fa06, 0x001efe ] } , - BigNum { limbs: [ 0xd6b05b5583bbd72a10a702aaa59abc, 0xe3b0bc10503cd0039b925d26760b4c, 0x0054ee ] } , - BigNum { limbs: [ 0x8cc4e59271bc254675e44de9acb089, 0x90622d1b33952336df41aa60d8fd88, 0x002a16 ] } , - BigNum { limbs: [ 0x30df1d6d8c9fd9b98a1bb116534f78, 0x16f0fc8249b31002f8c65f40ff07cb, 0x0049d7 ] } , - BigNum { limbs: [ 0x5a4984bd3033326a314c573c060e79, 0x4308610110d950309e5d6881371a44, 0x00251f ] } , - BigNum { limbs: [ 0x635a7e42ce28cc95ceb3a7c3f9f188, 0x644ac89c6c6ee30939aaa120a0eb0f, 0x004ece ] } , - BigNum { limbs: [ 0x6261dae436c20e1ae655f9c67cb4ee, 0x22db31ab8d36fc199e379693433fef, 0x00590d ] } , - BigNum { limbs: [ 0x5b42281bc799f0e519aa0539834b13, 0x8477f7f1f011372039d0730e94c564, 0x001ae0 ] } , - BigNum { limbs: [ 0x97df7b82540d7f520fa375ce78b879, 0xd257d52cc247f82e1823a6a0a604df, 0x0013e4 ] } , - BigNum { limbs: [ 0x25c4877daa4e7fadf05c8931874788, 0xd4fb5470bb003b0bbfe46301320074, 0x006008 ] } , - BigNum { limbs: [ 0x27e28d07b063a01ddcc828594b2606, 0x18800771dd7f441b5c5cba7e08c60a, 0x006e7a ] } , - BigNum { limbs: [ 0x95c175f84df85ee22337d6a6b4d9fb, 0x8ed3222b9fc8ef1e7bab4f23cf3f49, 0x000573 ] } , - BigNum { limbs: [ 0x122a6bda001d781a1d628b12064a8f, 0xbef1ee380b4c3884583970d8ed1f28, 0x000d69 ] } , - BigNum { limbs: [ 0xab799725fe3e86e5e29d73edf9b572, 0xe8613b6571fbfab57fce98c8eae62b, 0x006683 ] } , - BigNum { limbs: [ 0x4109d826db2ff20301669f731697cb, 0xefe5327bd2b34713d04cbf2d404699, 0x005999 ] } , - BigNum { limbs: [ 0x7c9a2ad9232c0cfcfe995f8ce96836, 0xb76df721aa94ec2607bb4a7497beba, 0x001a53 ] } , - BigNum { limbs: [ 0x279b87d2e6b387fcf5fe3b045dd181, 0x1fd88f51bc49ee62c37382b0353690, 0x004f16 ] } , - BigNum { limbs: [ 0x96087b2d17a877030a01c3fba22e80, 0x877a9a4bc0fe44d7149486f1a2cec3, 0x0024d7 ] } , - BigNum { limbs: [ 0xb5d2af6411c8553712b61b70f50fdc, 0xfef871d9d6648a833323701f1e4282, 0x003dba ] } , - BigNum { limbs: [ 0x07d1539bec93a9c8ed49e38f0af025, 0xa85ab7c3a6e3a8b6a4e49982b9c2d1, 0x003632 ] } , - BigNum { limbs: [ 0x15c80f017c9aa2a069d1dc9b7042bc, 0xa5269bf2095fdaa09ca8fc7421e5f7, 0x0019e0 ] } , - BigNum { limbs: [ 0xa7dbf3fe81c15c5f962e22648fbd45, 0x022c8dab73e858993b5f0d2db61f5c, 0x005a0d ] } , - BigNum { limbs: [ 0x62db18feb3e506f88c9f388c0677df, 0x3b9eaedc5bb79b6f2492431540cb08, 0x005385 ] } , - BigNum { limbs: [ 0x5ac8ea014a76f8077360c673f98822, 0x6bb47ac1219097cab375c68c973a4b, 0x002068 ] } , - BigNum { limbs: [ 0x655490bf2eb5c842ba9cf6eeeeae9b, 0xd2474b10f54a9e3e5c6ba11db18f5c, 0x003d7f ] } , - BigNum { limbs: [ 0x584f7240cfa636bd45630811115166, 0xd50bde8c87fd94fb7b9c68842675f7, 0x00366d ] } , - BigNum { limbs: [ 0xdbd2559a884245d72951864d8fa8da, 0x1375b8c0af7b737efcd5f01ebdb95c, 0x001fb6 ] } , - BigNum { limbs: [ 0xe1d1ad657619b928d6ae78b2705727, 0x93dd70dccdccbfbadb3219831a4bf6, 0x005437 ] } , - BigNum { limbs: [ 0x5879432fea7a51222aedd803cfa5cb, 0x4886f803ad1dad27b4014dedfaed14, 0x001b15 ] } , - BigNum { limbs: [ 0x652abfd013e1adddd51226fc305a36, 0x5ecc3199d02a86122406bbb3dd183f, 0x0058d8 ] } , - BigNum { limbs: [ 0xc99defc2a29159bca5d0ce219b4711, 0x7214004ab09d69632374d00f8a2e91, 0x001737 ] } , - BigNum { limbs: [ 0xf406133d5bcaa5435a2f30de64b8f0, 0x353f2952ccaac9d6b49339924dd6c1, 0x005cb6 ] } , - BigNum { limbs: [ 0x4901bbd26428fd3608266993cc1060, 0xf73cd3a330df9a39086a6948da8562, 0x004f39 ] } , - BigNum { limbs: [ 0x74a2472d9a3301c9f7d9956c33efa1, 0xb01655fa4c689900cf9da058fd7ff1, 0x0024b3 ] } , - BigNum { limbs: [ 0x077d669930bd57b515ba906dbfc129, 0x63cbfdc3672250f2476c3902b234c3, 0x0025eb ] } , - BigNum { limbs: [ 0xb6269c66cd9ea74aea456e92403ed8, 0x43872bda1625e247909bd09f25d090, 0x004e02 ] } , - BigNum { limbs: [ 0x63a3ef0a0dc0eda56e5338c1cb228f, 0x4dcd2085462924021dd09c3abc78e7, 0x003d7c ] } , - BigNum { limbs: [ 0x5a0013f5f09b115a91acc63e34dd72, 0x59860918371f0f37ba376d671b8c6c, 0x003671 ] } , - BigNum { limbs: [ 0x17f78b09396083ed9be33e30f62aaa, 0xb650aa0b473d0bd9e6a77fb9d5d6ca, 0x007369 ] } , - BigNum { limbs: [ 0xa5ac77f6c4fb7b12641cc0cf09d557, 0xf1027f92360b275ff16089e8022e89, 0x000083 ] } , - BigNum { limbs: [ 0xb3ac610f977e33a5d11204dfbed99d, 0xbb4b42cf1f3a9b0feb4704453bb48b, 0x0046df ] } , - BigNum { limbs: [ 0x09f7a1f066ddcb5a2eedfa20412664, 0xec07e6ce5e0d9829ecc1055c9c50c8, 0x002d0d ] } , - BigNum { limbs: [ 0x55ad625c181f556065bcd7a01c30f2, 0x781a7c2239ae887a36503010401e36, 0x004f5b ] } , - BigNum { limbs: [ 0x67f6a0a3e63ca99f9a43275fe3cf0f, 0x2f38ad7b4399aabfa1b7d99197e71d, 0x002492 ] } , - BigNum { limbs: [ 0x41edb4801671b387553452e7d61777, 0xd29ba4c63ee76548d5a502b249e7f1, 0x006dc9 ] } , - BigNum { limbs: [ 0x7bb64e7fe7ea4b78aacbac1829e88a, 0xd4b784d73e60cdf1026306ef8e1d62, 0x000623 ] } , - BigNum { limbs: [ 0xc3fa6b12b3b74ec8b70acd9cf0d865, 0x2c1755de706dc08e3aa03315ca7a63, 0x003b64 ] } , - BigNum { limbs: [ 0xf9a997ed4aa4b03748f531630f279c, 0x7b3bd3bf0cda72ab9d67d68c0d8aef, 0x003889 ] } , - BigNum { limbs: [ 0xef690241dfa3963ce8fa61277fed1a, 0x4b9f0b721eb1bf8908719fe1ec6949, 0x005e90 ] } , - BigNum { limbs: [ 0xce3b00be1eb868c317059dd88012e7, 0x5bb41e2b5e9673b0cf9669bfeb9c09, 0x00155d ] } , - BigNum { limbs: [ 0xe791c9632c5ea306ce63b513ad4ce0, 0xe3baa6b4f02c0689adb2f9082fb65f, 0x004e36 ] } , - BigNum { limbs: [ 0xd612399cd1fd5bf9319c49ec52b321, 0xc39882e88d1c2cb02a551099a84ef3, 0x0025b6 ] } , - BigNum { limbs: [ 0x0cde3a17cbf71e5f622b1f50d9fdd2, 0x2cf1d0e1dadb041561a5e218abee3e, 0x002002 ] } , - BigNum { limbs: [ 0xb0c5c8e83264e0a09dd4dfaf26022f, 0x7a6158bba26d2f24766227892c1715, 0x0053eb ] } , - BigNum { limbs: [ 0x537e43d8e58b2372f85bc98bc40e5a, 0xeaa7d4663a5035d056852237c9d923, 0x002481 ] } , - BigNum { limbs: [ 0x6a25bf2718d0db8d07a435743bf1a7, 0xbcab553742f7fd698182e76a0e2c30, 0x004f6b ] } , - BigNum { limbs: [ 0x47b2f144954b140bbd1890bb6705e7, 0xff7adae82fa6558f5be8e50b86a696, 0x001707 ] } , - BigNum { limbs: [ 0x75f111bb6910eaf442e76e4498fa1a, 0xa7d84eb54da1ddaa7c1f2496515ebd, 0x005ce5 ] } , - BigNum { limbs: [ 0xe680f5dafc6153a131aa10fd632e00, 0x134c2edfd8640e2f577d0ff387b8a5, 0x005ff3 ] } , - BigNum { limbs: [ 0xd7230d2501faab5ece55ee029cd201, 0x9406fabda4e4250a808af9ae504cad, 0x0013fa ] } , - BigNum { limbs: [ 0x52d122bd538957e4cb00352c21f113, 0x6b967a02c84b89d12a87006d579ea1, 0x0027d8 ] } , - BigNum { limbs: [ 0x6ad2e042aad2a71b34ffc9d3de0eee, 0x3bbcaf9ab4fca968ad8109348066b2, 0x004c15 ] } , - BigNum { limbs: [ 0x6069bbc672bcd63fc6e7f37a5b26a1, 0x12f82c0988ef81ca254da703f317b7, 0x002c4a ] } , - BigNum { limbs: [ 0x5d3a47398b9f28c039180b85a4d960, 0x945afd93f458b16fb2ba629de4ed9c, 0x0047a3 ] } , - BigNum { limbs: [ 0x550d70148336689facaa64d3610ad5, 0x07745a6b893c3d980cdab38ca1760a, 0x0002f8 ] } , - BigNum { limbs: [ 0x689692eb7b25966053559a2c9ef52c, 0x9fdecf31f40bf5a1cb2d5615368f49, 0x0070f5 ] } , - BigNum { limbs: [ 0xca0410a1c9a10a62c107092a653563, 0x89b5205c01ad36eb0ad3b74e021dec, 0x002aa8 ] } , - BigNum { limbs: [ 0xf39ff25e34baf49d3ef8f5d59aca9e, 0x1d9e09417b9afc4ecd345253d5e766, 0x004945 ] } , - BigNum { limbs: [ 0x0607c9bc523c31742ddf5eef4d4eaa, 0x891e1db52597a9c0b4d6e6ac40094a, 0x00155d ] } , - BigNum { limbs: [ 0xb79c3943ac1fcd8bd220a010b2b157, 0x1e350be857b08979233122f597fc09, 0x005e90 ] } , - BigNum { limbs: [ 0xdadda702f99ca6235747e7245ca8f3, 0x989c317709ce3761dca398879864ee, 0x0067f5 ] } , - BigNum { limbs: [ 0xe2c65bfd04bf58dca8b817dba3570e, 0x0eb6f8267379fbd7fb64711a3fa064, 0x000bf8 ] } , - BigNum { limbs: [ 0x26cb392f9cd37aa223717637b2a39a, 0x7bac12ba0cc14923b1de5d054ff5cd, 0x0008ac ] } , - BigNum { limbs: [ 0x96d8c9d06188845ddc8e88c84d5c67, 0x2ba716e37086ea162629ac9c880f86, 0x006b41 ] } , - BigNum { limbs: [ 0xcc5d3b6c2f14c021e5adbdd7b45b67, 0xa957448e60fb4ed489c94adbeee64a, 0x004438 ] } , - BigNum { limbs: [ 0xf146c793cf473ede1a5241284ba49a, 0xfdfbe50f1c4ce4654e3ebec5e91f08, 0x002fb4 ] } , - BigNum { limbs: [ 0xbd422a206f6b6a21a0019cde8aa342, 0x4dfd3ba86f2050548384249ecf71c4, 0x00178c ] } , - BigNum { limbs: [ 0x0061d8df8ef094de5ffe6221755cbf, 0x5955edf50e27e2e55483e50308938f, 0x005c61 ] } , - BigNum { limbs: [ 0xcc4b7382a961c6042cdc510b610c75, 0x371b67e5b1e369b3acd7001093f4a1, 0x00431e ] } , - BigNum { limbs: [ 0xf1588f7d54fa38fbd323adf49ef38c, 0x7037c1b7cb64c9862b3109914410b1, 0x0030cf ] } , - BigNum { limbs: [ 0x6fd201e8f5cc40a3afe5b2094fc128, 0xfe671be7bb3770be381d1d554a5b40, 0x0018bf ] } , - BigNum { limbs: [ 0x4dd20117088fbe5c501a4cf6b03ed9, 0xa8ec0db5c210c27b9feaec4c8daa13, 0x005b2d ] } , - BigNum { limbs: [ 0xf025db383b07030c5949b99fe0cf18, 0x293af972bc06e684d71edb9b48c8fb, 0x005514 ] } , - BigNum { limbs: [ 0xcd7e27c7c354fbf3a6b645601f30e9, 0x7e18302ac1414cb500e92e068f3c57, 0x001ed9 ] } , - BigNum { limbs: [ 0x3562ca05a2228a61650d680b8a6595, 0x9add509bfeb324c70882829c954881, 0x003f8f ] } , - BigNum { limbs: [ 0x884138fa5c39749e9af296f4759a6c, 0x0c75d9017e950e72cf85870542bcd2, 0x00345e ] } , - BigNum { limbs: [ 0x6b3c313aa95aee82f6451c0ffd9e4b, 0x6d8766a0943a502e6324c3508a3d5d, 0x001de8 ] } , - BigNum { limbs: [ 0x5267d1c55501107d09bae2f00261b6, 0x39cbc2fce90de30b74e346514dc7f6, 0x005605 ] } , - BigNum { limbs: [ 0x654ce80fe96082a1e43aaa7b821ea8, 0xf72b923064c0be698f7263e18fd0b9, 0x002cc7 ] } , - BigNum { limbs: [ 0x58571af014fb7c5e1bc554847de159, 0xb027976d188774d04895a5c048349a, 0x004725 ] } , - BigNum { limbs: [ 0x54ae98f2436032489a67c9866dd8ad, 0xe4d12bf37061256021f248c7908c5b, 0x005e75 ] } , - BigNum { limbs: [ 0x68f56a0dbafbccb765983579922754, 0xc281fdaa0ce70dd9b615c0da4778f8, 0x001577 ] } , - BigNum { limbs: [ 0x8497fcc49d0aa40b429d38e35259ba, 0x99a26cd1eb74403a1340a2d6a1bb64, 0x003475 ] } , - BigNum { limbs: [ 0x390c063b61515af4bd62c61cada647, 0x0db0bccb91d3f2ffc4c766cb3649ef, 0x003f78 ] } , - BigNum { limbs: [ 0x3be6ce0d94c6fa2af3b166edf32104, 0xdd86f64b2b584cdc6ccbf204e89982, 0x00386c ] } , - BigNum { limbs: [ 0x81bd34f2699504d50c4e98120cdefd, 0xc9cc335251efe65d6b3c179cef6bd1, 0x003b80 ] } , - BigNum { limbs: [ 0xfe230845799344541d2d22e8741f95, 0xb81eac8a6b93f11de21f95fdc20639, 0x0019a3 ] } , - BigNum { limbs: [ 0xbf80faba84c8baabe2d2dc178be06c, 0xef347d1311b4421bf5e873a415ff19, 0x005a49 ] } , - BigNum { limbs: [ 0xfe8d642079b117e2b984147df9fa0c, 0x54602f81f7daddb4495985ce8faabc, 0x00268a ] } , - BigNum { limbs: [ 0xbf169edf84aae71d467bea820605f5, 0x52f2fa1b856d55858eae83d3485a96, 0x004d63 ] } , - BigNum { limbs: [ 0xac10045770c08b8c60ff7cd1cb44b7, 0x548cbf1cc89059674f9cea35a7984c, 0x002455 ] } , - BigNum { limbs: [ 0x1193fea88d9b73739f00822e34bb4a, 0x52c66a80b4b7d9d2886b1f6c306d07, 0x004f98 ] } , - BigNum { limbs: [ 0x3682e1dd8e09eea1bf6608e5f02061, 0x4966d963f03feefe5024fc878e21d5, 0x007052 ] } , - BigNum { limbs: [ 0x872121227052105e4099f61a0fdfa0, 0x5dec50398d08443b87e30d1a49e37e, 0x00039b ] } , - BigNum { limbs: [ 0x2e052cb748d5c0c04adf434b4e09ff, 0xf2bbe685dbe29aa1cac699a261938d, 0x00218a ] } , - BigNum { limbs: [ 0x8f9ed648b5863e3fb520bbb4b1f602, 0xb4974317a16598980d416fff7671c6, 0x005262 ] } , - BigNum { limbs: [ 0x6d28a175fac82773be83cb00213581, 0x05a1a5d4698d5ee9e090bc999a0261, 0x002710 ] } , - BigNum { limbs: [ 0x507b618a0393d78c417c33ffdeca80, 0xa1b183c913bad44ff7774d083e02f2, 0x004cdd ] } , - BigNum { limbs: [ 0xc71ad10f1cb57ed38797c866a2d324, 0x5a3fce4392a5b6641cef26ddbb1e10, 0x00543a ] } , - BigNum { limbs: [ 0xf68931f0e1a6802c786836995d2cdd, 0x4d135b59eaa27cd5bb18e2c41ce742, 0x001fb3 ] } , - BigNum { limbs: [ 0x3b0e7eef22839ee457f3a8335b7c95, 0x7dc08530f7efe3a32515bfe9049360, 0x000a3e ] } , - BigNum { limbs: [ 0x82958410dbd8601ba80c56cca4836c, 0x2992a46c85584f96b2f249b8d371f3, 0x0069af ] } , - BigNum { limbs: [ 0x010d11ad78e67deb7dbe225750689c, 0xc1ce8fe57512b096e947760ffd71d2, 0x001478 ] } , - BigNum { limbs: [ 0xbc96f152857581148241dca8af9765, 0xe58499b8083582a2eec09391da9381, 0x005f74 ] } , - BigNum { limbs: [ 0x0d7b400461dcb7a69e3537d4ebbcf1, 0xf8671d4058336373dcdb72a544f8c7, 0x000aab ] } , - BigNum { limbs: [ 0xb028c2fb9c7f475961cac72b144310, 0xaeec0c5d2514cfc5fb2c96fc930c8c, 0x006941 ] } , - BigNum { limbs: [ 0xbcb5780f8ed96932b18098666562a4, 0xbd71f2c2ea600d38d4f3d4ea6f549f, 0x004256 ] } , - BigNum { limbs: [ 0x00ee8af06f8295cd4e7f66999a9d5d, 0xe9e136da92e82601031434b768b0b4, 0x003196 ] } , - BigNum { limbs: [ 0x38d17454846f3841f49d74735570ea, 0x165fbd58c5a8755dc5938773609f0e, 0x0003ed ] } , - BigNum { limbs: [ 0x84d28eab79ecc6be0b628a8caa8f17, 0x90f36c44b79fbddc1274822e776645, 0x007000 ] } , - BigNum { limbs: [ 0xfcb916c626e0e9bc29f6173ab70b65, 0x3d073a9c55cdd85ea2235bfe4d4804, 0x005b5b ] } , - BigNum { limbs: [ 0xc0eaec39d77b1543d609e7c548f49c, 0x6a4bef01277a5adb35e4ada38abd4e, 0x001892 ] } , - BigNum { limbs: [ 0xc37b9a1dfaaf4193724cef26d4b27a, 0x9c2994f61e115e9f0991476ba4f346, 0x004ae3 ] } , - BigNum { limbs: [ 0xfa2868e203acbd6c8db30fd92b4d87, 0x0b2994a75f36d49ace76c23633120c, 0x00290a ] } , - BigNum { limbs: [ 0x377a276c1c5329c1018e5e8284261e, 0xd80ac1ce9fe1755c33da05a269c910, 0x0053fd ] } , - BigNum { limbs: [ 0x8629db93e208d53efe71a07d7bd9e3, 0xcf4867cedd66bddda42e03ff6e3c43, 0x001fef ] } , - BigNum { limbs: [ 0x45dc24dbfdb880c6163bc865dd8bfa, 0x904b30cf1672d3253aaf3beeedf700, 0x0032fe ] } , - BigNum { limbs: [ 0x77c7de2400a37e39e9c4369a227407, 0x1707f8ce66d560149d58cdb2ea0e53, 0x0040ef ] } , - BigNum { limbs: [ 0xba16207a4ed9735b36b24c6dd788a9, 0x460aee018137df4643f06e17e34196, 0x001af7 ] } , - BigNum { limbs: [ 0x038de285af828ba4c94db292287758, 0x61483b9bfc1053f394179b89f4c3bd, 0x0058f6 ] } , - BigNum { limbs: [ 0x5051b124a48d44acceb7bbce4cc395, 0x49a9f4f29b3a002bc0adb6fdc0f664, 0x006fcb ] } , - BigNum { limbs: [ 0x6d5251db59ceba5331484331b33c6c, 0x5da934aae20e330e175a52a4170eef, 0x000422 ] } , - BigNum { limbs: [ 0xdce6f23222f777c94bdd9d3ac706d2, 0x815b057415a7e25cd2e9271b27153d, 0x000455 ] } , - BigNum { limbs: [ 0xe0bd10cddb648736b42261c538f92f, 0x25f8242967a050dd051ee286b0f015, 0x006f98 ] } , - BigNum { limbs: [ 0x66373acc16d886ceddaf21e77fc517, 0xa9919ec5166a85cf008f30e27fbec0, 0x0010b0 ] } , - BigNum { limbs: [ 0x576cc833e78378312250dd18803aea, 0xfdc18ad866ddad6ad778d8bf584693, 0x00633c ] } , - BigNum { limbs: [ 0xcf5dfbcdebe183e6e206d7bdffab49, 0x14f3cf6874649b5de195f3b709f16f, 0x000d09 ] } , - BigNum { limbs: [ 0xee460732127a7b191df927420054b8, 0x925f5a3508e397dbf67215eace13e3, 0x0066e4 ] } , - BigNum { limbs: [ 0x620e2e04af3cb774d607ae86c135cd, 0x379a5ac72106a7f3d9eeeea2803ed8, 0x002032 ] } , - BigNum { limbs: [ 0x5b95d4fb4f1f478b29f850793eca34, 0x6fb8ced65c418b45fe191aff57c67b, 0x0053bb ] } , - BigNum { limbs: [ 0xbe8983b787f09a3fda16b703ae79d7, 0xc42675dd613b3489b26bb21f6c258f, 0x0056da ] } , - BigNum { limbs: [ 0xff1a7f48766b64c025e947fc51862a, 0xe32cb3c01c0cfeb0259c57826bdfc3, 0x001d12 ] } , - BigNum { limbs: [ 0x4e939154c03c580acc2b5ef5216f61, 0x9334769b3974daaf8d6debc056151e, 0x001ead ] } , - BigNum { limbs: [ 0x6f1071ab3e1fa6f533d4a00ade90a0, 0x141eb30243d3588a4a9a1de181f035, 0x005540 ] } , - BigNum { limbs: [ 0x6b31e32115dd92996c19a5568c67f4, 0x5347f1132f4d1e57fcce6b05f90380, 0x0036c7 ] } , - BigNum { limbs: [ 0x52721fdee87e6c6693e659a973980d, 0x540b388a4dfb14e1db399e9bdf01d3, 0x003d26 ] } , - BigNum { limbs: [ 0xf2bdccb70a6ef709cbca5b7a65aab2, 0xbd04f7f6b469d3ddff14a41bbd9dd2, 0x0036f1 ] } , - BigNum { limbs: [ 0xcae63648f3ed07f63435a3859a554f, 0xea4e31a6c8de5f5bd8f365861a6780, 0x003cfb ] } , - BigNum { limbs: [ 0x66f13b1ab5685cd8cdc7146b807204, 0x9469afda287a4012a1a3ae0c60acc9, 0x004fd2 ] } , - BigNum { limbs: [ 0x56b2c7e548f3a2273238ea947f8dfd, 0x12e979c354cdf32736645b9577588a, 0x00241b ] } , - BigNum { limbs: [ 0x7853b66b61d5200372e53f548f8ce3, 0x87ce2ad498442d5e019288a337976e, 0x003b03 ] } , - BigNum { limbs: [ 0x45504c949c86defc8d1abfab70731e, 0x1f84fec8e50405dbd67580fea06de5, 0x0038ea ] } , - BigNum { limbs: [ 0x70bff3af461bc0ca31c421a753efa0, 0xa63dfd84ffaec090ac87917778335b, 0x0056b5 ] } , - BigNum { limbs: [ 0x4ce40f50b8403e35ce3bdd58ac1061, 0x01152c187d9972a92b80782a5fd1f8, 0x001d38 ] } , - BigNum { limbs: [ 0xc5373ec9c8343b1e4ca4d8ce229e36, 0x5d229a04387d9c5d5a214d0488f0ef, 0x00455e ] } , - BigNum { limbs: [ 0xf86cc4363627c3e1b35b2631dd61cb, 0x4a308f9944ca96dc7de6bc9d4f1463, 0x002e8f ] } , - BigNum { limbs: [ 0x5dcdee102c3ba87f2f48f3eb5d88d3, 0xa72bf8109fde405a5c49fdd0824580, 0x0013de ] } , - BigNum { limbs: [ 0x5fd614efd2205680d0b70b14a2772e, 0x0027318cdd69f2df7bbe0bd155bfd3, 0x00600f ] } , - BigNum { limbs: [ 0xd2826073fe1c3d9541142e4bebfa33, 0x8b9ab81f31622738fb770b6f7db0fd, 0x006321 ] } , - BigNum { limbs: [ 0xeb21a28c003fc16abeebd0b41405ce, 0x1bb8717e4be60c00dc90fe325a5455, 0x0010cc ] } , - BigNum { limbs: [ 0x2655a4f2a71153bc164249c8f6ae4c, 0xed9f7c0b36665bc1b21db066728eec, 0x00230a ] } , - BigNum { limbs: [ 0x974e5e0d574aab43e9bdb5370951b5, 0xb9b3ad9246e1d77825ea593b657667, 0x0050e2 ] } , - BigNum { limbs: [ 0x47c28ba9fd6add445358152fe9e30e, 0x4d75bff8bc844cda745819c6a69193, 0x000182 ] } , - BigNum { limbs: [ 0x75e1775600f121bbaca7e9d0161cf3, 0x59dd69a4c0c3e65f63afefdb3173c0, 0x00726b ] } , - BigNum { limbs: [ 0xeccbd814da06896454b1247b57539e, 0xde70f6f89e7b9b7862421542c6ade1, 0x002cc2 ] } , - BigNum { limbs: [ 0xd0d82aeb2455759bab4eda84a8ac63, 0xc8e232a4decc97c175c5f45f115771, 0x00472a ] } , - BigNum { limbs: [ 0x94d9614b087f3c1980045ae4b78723, 0xd97a1ce103e07e6e65b246bd533015, 0x0044dd ] } , - BigNum { limbs: [ 0x28caa1b4f5dcc2e67ffba41b4878de, 0xcdd90cbc7967b4cb7255c2e484d53e, 0x002f0f ] } , - BigNum { limbs: [ 0x51fbc98b29ffba9c5a4354bbba58aa, 0x3cb2c5f57ea5b26b1d49f27a08e557, 0x003f3d ] } , - BigNum { limbs: [ 0x6ba83974d45c4463a5bcaa4445a757, 0x6aa063a7fea280cebabe1727cf1ffc, 0x0034b0 ] } , - BigNum { limbs: [ 0x61db1d1b9c0b08cb773551758ecaa4, 0xe37eb8a506acf1f91c7b55db3a8be4, 0x00593a ] } , - BigNum { limbs: [ 0x5bc8e5e46250f63488caad8a71355d, 0xc3d470f8769b4140bb8cb3c69d796f, 0x001ab2 ] } , - BigNum { limbs: [ 0x444d8a302c8da96e37bfb94751e58e, 0x6690ae243ef976f6b24227dd5cb253, 0x005ec0 ] } , - BigNum { limbs: [ 0x795678cfd1ce5591c84045b8ae1a73, 0x40c27b793e4ebc4325c5e1c47b5300, 0x00152d ] } , - BigNum { limbs: [ 0x3dfdc600984107cda32780a77f8f5f, 0xa1529986e0edb5dd9e2d3dd12687a9, 0x002eb2 ] } , - BigNum { limbs: [ 0x7fa63cff661af7325cd87e588070a2, 0x060090169c5a7d5c39dacbd0b17daa, 0x00453b ] } , - BigNum { limbs: [ 0x2489344a456b47cae21e3bd7150af7, 0xea05243f47f6f7db687fb68d902acb, 0x005750 ] } , - BigNum { limbs: [ 0x991aceb5b8f0b7351de1c328eaf50a, 0xbd4e055e35513b5e6f88531447da88, 0x001c9c ] } , - BigNum { limbs: [ 0xca05a65a819a818d65f283960c64f6, 0xfcc67803f85a9d91f530887530a761, 0x004c36 ] } , - BigNum { limbs: [ 0xf39e5ca57cc17d729a0d7b69f39b0b, 0xaa8cb19984ed95a7e2d7812ca75df1, 0x0027b6 ] } , - BigNum { limbs: [ 0x5c3a002f47ebc42d07692bea45f396, 0xa5fa42eabba5613a5c9f9b3231c3b6, 0x007192 ] } , - BigNum { limbs: [ 0x616a02d0b6703ad2f896d315ba0c6b, 0x0158e6b2c1a2d1ff7b686e6fa6419d, 0x00025b ] } , - BigNum { limbs: [ 0xeceaad029bec7ce943f9b1660bb1a9, 0x59ff4eddaac6fee6711ca11606eba0, 0x001658 ] } , - BigNum { limbs: [ 0xd0b955fd626f8216bc064d99f44e58, 0x4d53dabfd281345366eb688bd119b2, 0x005d95 ] } , - BigNum { limbs: [ 0x218f1dd4394b56b4953e423b9c04e0, 0x87019792e16ae4979dbd6023b97478, 0x004970 ] } , - BigNum { limbs: [ 0x9c14e52bc510a84b6ac1bcc463fb21, 0x2051920a9bdd4ea23a4aa97e1e90db, 0x002a7d ] } , - BigNum { limbs: [ 0x37f73343b719ecede15ecd60b3df65, 0x624c06087cb6ad30ccd8f447ed080a, 0x0059ba ] } , - BigNum { limbs: [ 0x85accfbc474212121ea1319f4c209c, 0x45072395009186090b2f1559eafd49, 0x001a33 ] } , - BigNum { limbs: [ 0x467cc6e972110032c5ece8b055e8a9, 0x62d2f2b315a015393dcc435c95bf3a, 0x000274 ] } , - BigNum { limbs: [ 0x77273c168c4afecd3a13164faa1758, 0x448036ea67a81e009a3bc645424619, 0x007179 ] } , - BigNum { limbs: [ 0xc2941dbdeb3eff86bbc2821a7c954d, 0x4e5fe188f49e4f87f802ec2872f93e, 0x0043c8 ] } , - BigNum { limbs: [ 0xfb0fe542131cff79443d7ce5836ab4, 0x58f3481488a9e3b1e0051d79650c14, 0x003025 ] } , - BigNum { limbs: [ 0x5315b31507ceb8d2aa93f770b9c8e1, 0x9106ee3a43fd12880e5eefdbae2ab6, 0x004b9b ] } , - BigNum { limbs: [ 0x6a8e4feaf68d462d556c078f463720, 0x164c3b63394b20b1c9a919c629da9d, 0x002852 ] } , - BigNum { limbs: [ 0xcbd2211181fe944077e77ff3104df5, 0xaa51988e575837557c3b5ebdfea8e8, 0x0060c6 ] } , - BigNum { limbs: [ 0xf1d1e1ee7c5d6abf88187f0cefb20c, 0xfd01910f25effbe45bccaae3d95c6a, 0x001326 ] } , - BigNum { limbs: [ 0xe7ea60eb7cbec10bffa78086fdf997, 0xf61c4bca67ebd5e3fdd1c6dc2cea86, 0x005f7c ] } , - BigNum { limbs: [ 0xd5b9a214819d3df400587e7902066a, 0xb136ddd3155c5d55da3642c5ab1acc, 0x001470 ] } , - BigNum { limbs: [ 0xade32f51e3b92db7b324b4eaa555a9, 0xf91f5315f9552e1b95e6b724cde4ee, 0x0008b5 ] } , - BigNum { limbs: [ 0x0fc0d3ae1aa2d1484cdb4a155aaa58, 0xae33d68783f3051e4221527d0a2065, 0x006b37 ] } , - BigNum { limbs: [ 0xf8a4660d27320008b429fd878ffa9e, 0x7d7b53ab5425e3b013ebe22d4afdb4, 0x003702 ] } , - BigNum { limbs: [ 0xc4ff9cf2d729fef74bd60178700563, 0x29d7d5f229224f89c41c27748d079e, 0x003ceb ] } , - BigNum { limbs: [ 0xd3a1081b7dc34879cad7e40b802754, 0xb1694de1defdc9b305be4031baafd7, 0x004d4c ] } , - BigNum { limbs: [ 0xea02fae48098b68635281af47fd8ad, 0xf5e9dbbb9e4a6986d249c9701d557b, 0x0026a0 ] } , - BigNum { limbs: [ 0xbb4de382da6cec9b679276f6e92cd5, 0x81b1b3b9f48d763ed728d201436845, 0x004de2 ] } , - BigNum { limbs: [ 0x02561f7d23ef1264986d880916d32c, 0x25a175e388babcfb00df37a0949d0e, 0x00260b ] } , - BigNum { limbs: [ 0xfea794c0e0d6b46940f19dbc185b43, 0xe9cede62c18b938f1b083fb184c56e, 0x000168 ] } , - BigNum { limbs: [ 0xbefc6e3f1d854a96bf0e6143e7a4be, 0xbd844b3abbbc9faabcffc9f0533fe4, 0x007284 ] } , - BigNum { limbs: [ 0xadf465bebef8ccebfad58878130b3d, 0xc395d5f911b303cec6f905265aae1a, 0x00446a ] } , - BigNum { limbs: [ 0x0faf9d413f633214052a7687ecf4c4, 0xe3bd53a46b952f6b110f047b7d5739, 0x002f82 ] } , - BigNum { limbs: [ 0x9f1ddab1d4fa82932aebc0965a4202, 0xf36fa2b47ddb5a73c6e65398047a50, 0x000364 ] } , - BigNum { limbs: [ 0x1e86284e29617c6cd5143e69a5bdff, 0xb3e386e8ff6cd8c61121b609d38b03, 0x007088 ] } , - BigNum { limbs: [ 0xc769faa4402f293c314964fd4408c9, 0x849c98537bacc5b2f69cad1dade64b, 0x00177b ] } , - BigNum { limbs: [ 0xf63a085bbe2cd5c3ceb69a02bbf738, 0x22b6914a019b6d86e16b5c842a1f07, 0x005c72 ] } , - BigNum { limbs: [ 0x79365f811d5769926a3c0cfe4005c3, 0x79a31835c7e2ccb2e5196d0deb2ba5, 0x003864 ] } , - BigNum { limbs: [ 0x446da37ee104956d95c3f201bffa3e, 0x2db01167b5656686f2ee9c93ecd9ae, 0x003b89 ] } , - BigNum { limbs: [ 0x6df44639124f2ba81be6d8edda7638, 0x668413c019df4374af12eabf982893, 0x006f87 ] } , - BigNum { limbs: [ 0x4fafbcc6ec0cd357e41926122589c9, 0x40cf15dd6368efc528f51ee23fdcc0, 0x000466 ] } , - BigNum { limbs: [ 0x43a907c09f060427d329827aa98fff, 0xb856c1b52cf9492d043c2e74cf231b, 0x00354b ] } , - BigNum { limbs: [ 0x79fafb3f5f55fad82cd67c85567002, 0xeefc67e8504eea0cd3cbdb2d08e238, 0x003ea1 ] } , - BigNum { limbs: [ 0xb9bf92bae7e7fe896a2d7f2d01187c, 0x0f53d6c54c0941a9861e5c72b0d523, 0x000277 ] } , - BigNum { limbs: [ 0x03e470451674007695d27fd2fee785, 0x97ff52d8313ef19051e9ad2f273030, 0x007176 ] } , - BigNum { limbs: [ 0x1b0da0ac3997d798ff94a498f96017, 0x732533ddaf1a10b0beb4fee8a1769d, 0x006801 ] } , - BigNum { limbs: [ 0xa2966253c4c42767006b5a67069fea, 0x342df5bfce2e228919530ab9368eb6, 0x000bec ] } , - BigNum { limbs: [ 0x26c30fdbf9ba3500c4ee9032afcc94, 0x105c8329a6955caccf15dda0d8ad03, 0x002fff ] } , - BigNum { limbs: [ 0x96e0f32404a1c9ff3b116ecd50336d, 0x96f6a673d6b2d68d08f22c00ff5850, 0x0043ee ] } , - BigNum { limbs: [ 0x236a92397b76349a0f0a5f9fbb73b7, 0x6e8046dfa7d7b0dba6fd299e303d1d, 0x000cc2 ] } , - BigNum { limbs: [ 0x9a3970c682e5ca65f0f59f60448c4a, 0x38d2e2bdd570825e310ae003a7c836, 0x00672b ] } , - BigNum { limbs: [ 0x3b84c03955634d9dafd3593bc10665, 0x7aa88f051d3d6e47e7481dbd70b738, 0x004f3a ] } , - BigNum { limbs: [ 0x821f42c6a8f8b162502ca5c43ef99c, 0x2caa9a98600ac4f1f0bfebe4674e1b, 0x0024b3 ] } , - BigNum { limbs: [ 0x0a98ca924c9853cdf99d946705e265, 0xb82069c37ab55ff8776e9d4b000112, 0x002b67 ] } , - BigNum { limbs: [ 0xb30b386db1c3ab3206626a98fa1d9c, 0xef32bfda0292d34160996c56d80441, 0x004885 ] } , - BigNum { limbs: [ 0x50631ef088678db03b789302413b7c, 0xcd6afbf40e773e053844b1d7c4c0ec, 0x00455e ] } , - BigNum { limbs: [ 0x6d40e40f75f4714fc4876bfdbec485, 0xd9e82da96ed0f5349fc357ca134467, 0x002e8e ] } , - BigNum { limbs: [ 0x1279da43e3f45b1ede5de981ebf8f8, 0xce9f04a28d115ecc4f16874611b142, 0x000db4 ] } , - BigNum { limbs: [ 0xab2a28bc1a67a3e121a2157e140709, 0xd8b424faf036d46d88f1825bc65411, 0x006638 ] } , - BigNum { limbs: [ 0x91e47e376c2e5b6ff7d691b3198b23, 0xe821190696fc5d6ecc9a8405e05629, 0x005133 ] } , - BigNum { limbs: [ 0x2bbf84c8922da39008296d4ce674de, 0xbf321096e64bd5cb0b6d859bf7af2a, 0x0022b9 ] } , - BigNum { limbs: [ 0xc528e11bb8f362bbb3efec893f294f, 0x10302a2f39be6d2099caa9324c56d8, 0x005679 ] } , - BigNum { limbs: [ 0xf87b21e445689c444c101276c0d6b2, 0x9722ff6e4389c6193e3d606f8bae7a, 0x001d74 ] } , - BigNum { limbs: [ 0xd83c84ed265e50977e9c4587dfe508, 0x739e84003bec789aed56b517a468ea, 0x000076 ] } , - BigNum { limbs: [ 0xe5677e12d7fdae688163b978201af9, 0x33b4a59d415bba9eeab1548a339c68, 0x007377 ] } , - BigNum { limbs: [ 0x235c660dcd47d87bf14d05ce8047ea, 0xef848d536f6afc0071a614f0a4770c, 0x00643c ] } , - BigNum { limbs: [ 0x9a479cf2311426840eb2f9317fb817, 0xb7ce9c4a0ddd37396661f4b1338e47, 0x000fb0 ] } , - BigNum { limbs: [ 0x7f1ed0313f9e0fe150bea48f8d1dea, 0xe117dc9238c29fb9c14a0e4d763a00, 0x0024c9 ] } , - BigNum { limbs: [ 0x3e8532cebebdef1eaf415a7072e217, 0xc63b4d0b4485938016bdfb5461cb53, 0x004f23 ] } , - BigNum { limbs: [ 0x81791f3a6308454c51bb17349f0783, 0xe041d03cc117b367e019a720931783, 0x001d2d ] } , - BigNum { limbs: [ 0x3c2ae3c59b53b9b3ae44e7cb60f87e, 0xc7115960bc307fd1f7ee628144edd0, 0x0056bf ] } , - BigNum { limbs: [ 0xc3ba13d252c0e88f18500f83965a8e, 0x641539037f771f1b83b02e67527a4d, 0x0055b6 ] } , - BigNum { limbs: [ 0xf9e9ef2dab9b1670e7afef7c69a573, 0x433df099fdd1141e5457db3a858b05, 0x001e37 ] } , - BigNum { limbs: [ 0x5502a77ae6332fa6600254a7d754be, 0x4cdc36f88410f5d7bfef36de3b7834, 0x00027e ] } , - BigNum { limbs: [ 0x68a15b851828cf599ffdaa5828ab43, 0x5a76f2a4f9373d621818d2c39c8d1f, 0x00716f ] } , - BigNum { limbs: [ 0x8d41cd7ab1753ea7303c63152c1640, 0x4a2297423679aee4b37190faa6c7d5, 0x004f91 ] } , - BigNum { limbs: [ 0x306235854ce6c058cfc39bead3e9c1, 0x5d30925b46ce8455249678a7313d7e, 0x00245c ] } , - BigNum { limbs: [ 0x87cba345c1658b64271241619da532, 0x46ae7297a21a8f4310cd2220399c88, 0x0037d2 ] } , - BigNum { limbs: [ 0x35d85fba3cf6739bd8edbd9e625acf, 0x60a4b705db2da3f6c73ae7819e68cb, 0x003c1b ] } , - BigNum { limbs: [ 0x2651d853c9eca95343e645167ee188, 0x1331dca429aad2f2eb5255c656c902, 0x00258b ] } , - BigNum { limbs: [ 0x97522aac346f55acbc19b9e9811e79, 0x94214cf9539d6046ecb5b3db813c51, 0x004e62 ] } , - BigNum { limbs: [ 0x5390d0e60bdfb3b93907b7592ea586, 0xe4164e07f2ab58063db3959fe0ef23, 0x003596 ] } , - BigNum { limbs: [ 0x6a133219f27c4b46c6f847a6d15a7b, 0xc33cdb958a9cdb339a547401f71630, 0x003e56 ] } , - BigNum { limbs: [ 0xb8b209e98b7e0f2fa61198c7de7bd4, 0x75e0a5e4145fb34bad5f4e9cfdb6f3, 0x003811 ] } , - BigNum { limbs: [ 0x04f1f91672ddefd059ee663821842d, 0x317283b968e87fee2aa8bb04da4e60, 0x003bdc ] } , - BigNum { limbs: [ 0x6e76cf4f775ba9242cce972bd82d65, 0x812b15a0625c3583f1f0c36ae9d2f5, 0x0011d0 ] } , - BigNum { limbs: [ 0x4f2d33b0870055dbd33167d427d29c, 0x262813fd1aebfdb5e6174636ee325e, 0x00621d ] } , - BigNum { limbs: [ 0x7524de9c02b81cf5045a21462659cf, 0x5fa6f3c3db8efc130759d8cd8c1f9d, 0x0017bf ] } , - BigNum { limbs: [ 0x487f2463fba3e20afba5ddb9d9a632, 0x47ac35d9a1b93726d0ae30d44be5b6, 0x005c2e ] } , - BigNum { limbs: [ 0x66175e422e5e04509c353c559ce0e4, 0xc2a34bbcc1de81c01f6a38e43c7150, 0x0028ff ] } , - BigNum { limbs: [ 0x578ca4bdcffdfaaf63cac2aa631f1d, 0xe4afdde0bb69b179b89dd0bd9b9403, 0x004aed ] } , - BigNum { limbs: [ 0xc17fed2efa16c0bf255236c073301f, 0x95c68591a521990ffbee982e626b47, 0x00713f ] } , - BigNum { limbs: [ 0xfc2415d104453e40daadc83f8ccfe2, 0x118ca40bd8269a29dc197173759a0b, 0x0002ae ] } , - BigNum { limbs: [ 0x37692cb91745a591e0a5ec1dbb4517, 0x2b1236ce1f78bd6f986d418b46797f, 0x006418 ] } , - BigNum { limbs: [ 0x863ad646e716596e1f5a12e244baea, 0x7c40f2cf5dcf75ca3f9ac816918bd4, 0x000fd5 ] } , - BigNum { limbs: [ 0x743adadff7878293e97ac2c7bf5f23, 0x47fe2645c3ccca5cf55c4cee43e80b, 0x005d20 ] } , - BigNum { limbs: [ 0x4969282006d47c6c16853c3840a0de, 0x5f550357b97b68dce2abbcb3941d48, 0x0016cd ] } , - BigNum { limbs: [ 0x1f5b434515524094eb42b26bd7cec8, 0x5d84c1e11520848c1259d579deff61, 0x006ae4 ] } , - BigNum { limbs: [ 0x9e48bfbae909be6b14bd4c94283139, 0x49ce67bc6827aeadc5ae3427f905f2, 0x000909 ] } , - BigNum { limbs: [ 0x7a83f4b3620a8bc1ab543280174b65, 0x4fe4101d764247b839b40665b9ab31, 0x004d4e ] } , - BigNum { limbs: [ 0x43200e4c9c51733e54abcc7fe8b49c, 0x576f19800705eb819e54033c1e5a22, 0x00269f ] } , - BigNum { limbs: [ 0x16e6f88f393313659ed34f1ba7c758, 0x479f6d036dbe156e6d5f1cd1d95835, 0x004f05 ] } , - BigNum { limbs: [ 0xa6bd0a70c528eb9a612cafe45838a9, 0x5fb3bc9a0f8a1dcb6aa8eccffead1e, 0x0024e8 ] } , - BigNum { limbs: [ 0xb4744f8cf411c654449ec24eff1d4a, 0xae41472c7c0e590ce3fe74cee9cc36, 0x0061df ] } , - BigNum { limbs: [ 0x092fb3730a4a38abbb613cb100e2b7, 0xf911e2710139da2cf40994d2ee391d, 0x00120d ] } , - BigNum { limbs: [ 0x1b7ec3a436588065b8118cdf67b4c8, 0x457a8a468be812b6b2973fbcaa7c77, 0x003d49 ] } , - BigNum { limbs: [ 0xa2253f5bc8037e9a47ee7220984b39, 0x61d89f56f16020832570c9e52d88dc, 0x0036a4 ] } , - BigNum { limbs: [ 0x3412c9cd2a9b3731e9ab2413ce6403, 0x8dc1af53e39e07ae39bf50998fa407, 0x004686 ] } , - BigNum { limbs: [ 0x89913932d3c0c7ce1654daec319bfe, 0x19917a4999aa2b8b9e48b90848614c, 0x002d67 ] } , - BigNum { limbs: [ 0x89c1bd2dd357cf20f00f1e8819ff37, 0x2f0c9a6585b33115765c3d23d4949e, 0x003fb7 ] } , - BigNum { limbs: [ 0x33e245d22b042fdf0ff0e077e600ca, 0x78468f37f795022461abcc7e0370b5, 0x003436 ] } , - BigNum { limbs: [ 0xdd464b1c886d78042cef5c92e33195, 0x557b73b7e48b242355a680b717f586, 0x0025de ] } , - BigNum { limbs: [ 0xe05db7e375ee86fbd310a26d1cce6c, 0x51d7b5e598bd0f16826188eac00fcc, 0x004e0f ] } , - BigNum { limbs: [ 0xedf499ef3076be4475c4d42b7a4b38, 0x602954fc0ca6ba46042c3d326406d9, 0x0054de ] } , - BigNum { limbs: [ 0xcfaf6910cde540bb8a3b2ad485b4c9, 0x4729d4a170a178f3d3dbcc6f73fe79, 0x001f0f ] } , - BigNum { limbs: [ 0xfcd31b702dd686c47e6812cda15c19, 0xf2d45a69922bb0a0d0c53a6b502bef, 0x005861 ] } , - BigNum { limbs: [ 0xc0d0e78fd085783b8197ec325ea3e8, 0xb47ecf33eb1c82990742cf3687d963, 0x001b8b ] } , - BigNum { limbs: [ 0x8425612ae7e671237bffd304e4fe50, 0xf9f2176adc1d48e923008e61d9c58e, 0x004067 ] } , - BigNum { limbs: [ 0x397ea1d516758ddc84002bfb1b01b1, 0xad611232a12aea50b5077b3ffe3fc5, 0x003385 ] } , - BigNum { limbs: [ 0xba411117fb1be0bb14f4f365c1b600, 0x58bcb55478df34740bade3183ade28, 0x000335 ] } , - BigNum { limbs: [ 0x0362f1e803401e44eb0b0b9a3e4a01, 0x4e9674490468fec5cc5a26899d272b, 0x0070b8 ] } , - BigNum { limbs: [ 0x9fcc4cdb6f0c10a87049c0b5897879, 0x9424325317c08c97b1f14e6a7312cd, 0x006329 ] } , - BigNum { limbs: [ 0x1dd7b6248f4fee578fb63e4a768788, 0x132ef74a6587a6a22616bb3764f286, 0x0010c4 ] } , - BigNum { limbs: [ 0x9f899703062de0d3baa1acb4e5b0f5, 0x090a68110f9092a633fc64cef521ba, 0x0065eb ] } , - BigNum { limbs: [ 0x1e1a6bfcf82e1e2c455e524b1a4f0c, 0x9e48c18c6db7a093a40ba4d2e2e399, 0x000e02 ] } , - BigNum { limbs: [ 0xd96ff2cd8b2f2e472cb619daac4bd2, 0x0f2dbc497381f411d51f076e4466de, 0x00573a ] } , - BigNum { limbs: [ 0xe4341032732cd0b8d349e52553b42f, 0x98256d5409c63f2802e90233939e74, 0x001cb3 ] } , - BigNum { limbs: [ 0xb84c544876a9c789aa8cb2686396ce, 0xa3313c8414b9bdb48d3a72566086b0, 0x006dbc ] } , - BigNum { limbs: [ 0x0557aeb787b2377655734c979c6933, 0x0421ed19688e75854acd974b777ea3, 0x000631 ] } , - BigNum { limbs: [ 0xe7613894a9b5c86333defbe1eafec8, 0xecb3aff7822dc90fd38cadbdeab57e, 0x0051a0 ] } , - BigNum { limbs: [ 0xd642ca6b54a6369ccc21031e150139, 0xba9f79a5fb1a6a2a047b5be3ed4fd4, 0x00224c ] } , - BigNum { limbs: [ 0xbd99d6f7d72c9825c9330c166c32b6, 0x656984a80d04d77f485529026c165c, 0x0008f3 ] } , - BigNum { limbs: [ 0x000a2c08272f66da36ccf2e993cd4b, 0x41e9a4f570435bba8fb2e09f6beef7, 0x006afa ] } , - BigNum { limbs: [ 0x00ac7d231f0dcc77f716ad84ec3f4e, 0x66b749227bc79c2b526b533ce6736d, 0x001236 ] } , - BigNum { limbs: [ 0xbcf785dcdf4e328808e9517b13c0b3, 0x409be07b0180970e859cb664f191e6, 0x0061b7 ] } , - BigNum { limbs: [ 0x44df453062977b35a87e2790b1aa63, 0x70a52543032792c60337c3de194e28, 0x004ca4 ] } , - BigNum { limbs: [ 0x78c4bdcf9bc483ca5781d76f4e559e, 0x36ae045a7a20a073d4d045c3beb72b, 0x002749 ] } , - BigNum { limbs: [ 0x009c43f83b178b774638c79cf5dc1f, 0x3f6e8235ecae3905159358e0d38ebb, 0x0010c4 ] } , - BigNum { limbs: [ 0xbd07bf07c3447388b9c737630a23e2, 0x67e4a7679099fa34c274b0c1047698, 0x006329 ] } , - BigNum { limbs: [ 0x2a876351c2a2215759eb2f01eda387, 0xcb3d2bb78a0443275a5062c289ae5a, 0x0051ae ] } , - BigNum { limbs: [ 0x931c9fae3bb9dda8a614cffe125c7a, 0xdc15fde5f343f0127db7a6df4e56f9, 0x00223e ] } , - BigNum { limbs: [ 0xa8a3a7f2912453021ed75861bf15b2, 0xb5e368fea545ec1883b4b3c9abedbf, 0x0052cb ] } , - BigNum { limbs: [ 0x15005b0d6d37abfde128a69e40ea4f, 0xf16fc09ed8024721545355d82c1794, 0x002121 ] } , - BigNum { limbs: [ 0x99bf3cadf47500466419f0acda4132, 0x0fab03bda4f931faf27e04e17cf31b, 0x004831 ] } , - BigNum { limbs: [ 0x23e4c65209e6feb99be60e5325becf, 0x97a825dfd84f013ee58a04c05b1238, 0x002bbc ] } , - BigNum { limbs: [ 0x2af33beac6f68086ebdd53f2e05b8c, 0x18dfadf4968e6c38c06e52f5b19228, 0x003f52 ] } , - BigNum { limbs: [ 0x92b0c71537657e791422ab0d1fa475, 0x8e737ba8e6b9c7011799b6ac26732b, 0x00349b ] } , - BigNum { limbs: [ 0x532ae018561e10623432bc97e66621, 0x7d758178f8009d3d7a7ff033103d20, 0x003c40 ] } , - BigNum { limbs: [ 0x6a7922e7a83dee9dcbcd42681999e0, 0x29dda824854795fc5d88196ec7c833, 0x0037ad ] } , - BigNum { limbs: [ 0x5fdb8562ecaee38095506aaf2ed4e8, 0x40fa9e92971b3b44484802d2908ee1, 0x005327 ] } , - BigNum { limbs: [ 0x5dc87d9d11ad1b7f6aaf9450d12b19, 0x66588b0ae62cf7f58fc006cf477672, 0x0020c6 ] } , - BigNum { limbs: [ 0xc00587548157407cc2c1b551422388, 0x2433aacc79664fd54b05535ed75859, 0x0006c4 ] } , - BigNum { limbs: [ 0xfd9e7bab7d04be833d3e49aebddc79, 0x831f7ed103e1e3648d02b64300acf9, 0x006d29 ] } , - BigNum { limbs: [ 0xabf9af77e7e83655b9012175a8cc3b, 0xe87fd6b51c9c4226a334d73bebcb2b, 0x000b72 ] } , - BigNum { limbs: [ 0x11aa53881673c8aa46fedd8a5733c6, 0xbed352e860abf11334d33265ec3a28, 0x00687a ] } , - BigNum { limbs: [ 0x1fbcdb53444abbab0181bccc152b72, 0xedc455355287c6bf314728f7672064, 0x0068e3 ] } , - BigNum { limbs: [ 0x9de727acba114354fe7e4233ead48f, 0xb98ed4682ac06c7aa6c0e0aa70e4ef, 0x000b09 ] } , - BigNum { limbs: [ 0x5603226dcddca5147d1e72d2b5d06e, 0xc12baea83c091f5a39e548082c8807, 0x0064a3 ] } , - BigNum { limbs: [ 0x67a0e092307f59eb82e18c2d4a2f93, 0xe6277af5413f13df9e22c199ab7d4c, 0x000f49 ] } , - BigNum { limbs: [ 0x2ed8500386c76648c8e50cb39616ec, 0xef6739da92bc569aa8da7c3ebc2a85, 0x005a31 ] } , - BigNum { limbs: [ 0x8ecbb2fc779498b7371af24c69e915, 0xb7ebefc2ea8bdc9f2f2d8d631bdace, 0x0019bb ] } , - BigNum { limbs: [ 0xfe3a2e7b95c6469630cf3b08b533d4, 0x2a8f2e2a85919ad23e75d282b2d3b6, 0x006802 ] } , - BigNum { limbs: [ 0xbf69d4846895b869cf30c3f74acc2d, 0x7cc3fb72f7b698679992371f25319c, 0x000beb ] } , - BigNum { limbs: [ 0xcae90dfb3c0064c6123fa45fb28c2e, 0xd4cb52a34e3d7519670d09634336d4, 0x0023ce ] } , - BigNum { limbs: [ 0xf2baf504c25b9a39edc05aa04d73d3, 0xd287d6fa2f0abe2070fb003e94ce7e, 0x00501e ] } , - BigNum { limbs: [ 0x5ca0f385906331980144927341bf91, 0xe145a4a45855dd7ae283294477734f, 0x006964 ] } , - BigNum { limbs: [ 0x61030f7a6df8cd67febb6c8cbe4070, 0xc60d84f924f255bef584e05d609204, 0x000a88 ] } , - BigNum { limbs: [ 0xa47df0bc824e8ea22755dfe7bb9750, 0xfb32f90ffda0d607ced8ce69bc11a9, 0x0046cf ] } , - BigNum { limbs: [ 0x192612437c0d705dd8aa1f184468b1, 0xac20308d7fa75d32092f3b381bf3aa, 0x002d1d ] } , - BigNum { limbs: [ 0xec958cdc54a63cc7a96c1c03278845, 0x14461e4a1131fa3b366dda348f3893, 0x000791 ] } , - BigNum { limbs: [ 0xd10e7623a9b5c2385693e2fcd877bc, 0x930d0b536c1638fea19a2f6d48ccbf, 0x006c5c ] } , - BigNum { limbs: [ 0xb5abf8c3e544b7cec40dd9d4019abd, 0xe3e21a204627ca43fa39cf3715caad, 0x002b0f ] } , - BigNum { limbs: [ 0x07f80a3c191747313bf2252bfe6544, 0xc3710f7d372068f5ddce3a6ac23aa6, 0x0048dd ] } , - BigNum { limbs: [ 0x40722db5a2fdf30997af02bca933c9, 0x56c300383c82d6ab35ba4d5db3f1f7, 0x00688a ] } , - BigNum { limbs: [ 0x7d31d54a5b5e0bf66850fc4356cc38, 0x5090296540c55c8ea24dbc4424135c, 0x000b63 ] } , - BigNum { limbs: [ 0x564fcbc247d6d6ac9cc344a8cfff5a, 0xeb803c23772e9c6afb16ff55ea304f, 0x004b12 ] } , - BigNum { limbs: [ 0x6754373db6852853633cba573000a7, 0xbbd2ed7a061996cedcf10a4bedd504, 0x0028da ] } , - BigNum { limbs: [ 0xcdd1364d8cfacb93f88bc67b7b3721, 0x665f2b83a6deb7fdceb13345570e65, 0x0022a4 ] } , - BigNum { limbs: [ 0xefd2ccb27161336c0774388484c8e0, 0x40f3fe19d6697b3c0956d65c80f6ed, 0x005149 ] } , - BigNum { limbs: [ 0x0e9d35b6ed76adf7713ef284c069ff, 0xcf43948b469bcd431486dfe074f000, 0x002d69 ] } , - BigNum { limbs: [ 0xaf06cd4910e551088ec10c7b3f9602, 0xd80f951236ac65f6c38129c1631553, 0x004683 ] } , - BigNum { limbs: [ 0x67d80e0380c9dd297e9abd55f848ed, 0x70bfd3999432941131a1638c47aaf6, 0x002ffb ] } , - BigNum { limbs: [ 0x55cbf4fc7d9221d6816541aa07b714, 0x36935603e9159f28a666a615905a5d, 0x0043f2 ] } , - BigNum { limbs: [ 0x8032cefe4d368500c64cd40384f439, 0xe7910a9571c7e580abd9bdea663091, 0x001d7f ] } , - BigNum { limbs: [ 0x3d713401b12579ff39b32afc7b0bc8, 0xbfc21f080b804db92c2e4bb771d4c2, 0x00566d ] } , - BigNum { limbs: [ 0x121d901c68c49123c031d18d8c2649, 0xd8bc987365098ce1593a825ad83ef5, 0x006fc8 ] } , - BigNum { limbs: [ 0xab8672e395976ddc3fce2d7273d9b8, 0xce96912a183ea6587ecd8746ffc65e, 0x000424 ] } , - BigNum { limbs: [ 0xe9d91c5935fd49f4b6cc71968e9630, 0xab942a7f28f2aeb5acc56ef4dd0686, 0x003414 ] } , - BigNum { limbs: [ 0xd3cae6a6c85eb50b49338d697169d1, 0xfbbeff1e545584842b429aacfafecc, 0x003fd8 ] } , - BigNum { limbs: [ 0x40d3a6dad17cfb58253c958a750acb, 0xd11e6709e3150b19cc92362eeaac79, 0x00503d ] } , - BigNum { limbs: [ 0x7cd05c252cdf03a7dac369758af536, 0xd634c2939a3328200b75d372ed58da, 0x0023af ] } , - BigNum { limbs: [ 0x25871b96c0742e75161473966a53f7, 0x032dedb0b892480e75bd26e4e2ccb3, 0x000e42 ] } , - BigNum { limbs: [ 0x981ce7693de7d08ae9eb8b6995ac0a, 0xa4253becc4b5eb2b624ae2bcf538a0, 0x0065ab ] } , - BigNum { limbs: [ 0x309054dce40022360156e8b623013e, 0xbaeda02a6ff092a7ec5a61b18bafed, 0x003381 ] } , - BigNum { limbs: [ 0x8d13ae231a5bdcc9fea91649dcfec3, 0xec6589730d57a091ebada7f04c5566, 0x00406b ] } , - BigNum { limbs: [ 0xa9d4bab0b502dd86edbea447c942d5, 0x0a33a25ac40a26f8483151cc7c8088, 0x0060a2 ] } , - BigNum { limbs: [ 0x13cf484f4959217912415ab836bd2c, 0x9d1f8742b93e0c418fd6b7d55b84cb, 0x00134b ] } , - BigNum { limbs: [ 0x269bddbc2b9df4ce9a534745bfd613, 0xeb58904936dbdf2b8960761678b86c, 0x001fa4 ] } , - BigNum { limbs: [ 0x97082543d2be0a3165acb7ba4029ee, 0xbbfa9954466c540e4ea7938b5f4ce7, 0x005448 ] } , - BigNum { limbs: [ 0xc4c8739d4475765bf0e8fec7a9af22, 0xd3a3929c4bb36342213767f33397b9, 0x002c4c ] } , - BigNum { limbs: [ 0xf8db8f62b9e688a40f1700385650df, 0xd3af97013194cff7b6d0a1aea46d99, 0x0047a0 ] } , - BigNum { limbs: [ 0x8c7a99da8938647073084001146f23, 0x948861351141f0f5093f56be4518ad, 0x000b04 ] } , - BigNum { limbs: [ 0x3129692575239a8f8cf7befeeb90de, 0x12cac8686c064244cec8b2e392eca6, 0x0068e9 ] } , - BigNum { limbs: [ 0xab88365b6035748de74346b283c145, 0xa824ff74aa74280674d32da105c40d, 0x004f97 ] } , - BigNum { limbs: [ 0x121bcca49e268a7218bcb84d7c3ebc, 0xff2e2a28d2d40b336334dc00d24146, 0x002455 ] } , - BigNum { limbs: [ 0x76d28a9be629fb69e5dad127abcc9f, 0x7efc6393c8cfe857780d4fc57e7f03, 0x003ad2 ] } , - BigNum { limbs: [ 0x46d17864183203961a252dd8543362, 0x2856c609b4784ae25ffab9dc598650, 0x00391b ] } + BigNum { + limbs: [0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000], + }, + BigNum { + limbs: [0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed], + }, + BigNum { + limbs: [0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000], + }, + BigNum { + limbs: [0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed], + }, + BigNum { + limbs: [0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457], + }, + BigNum { + limbs: [0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96], + }, + BigNum { + limbs: [0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333], + }, + BigNum { + limbs: [0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9], + }, + BigNum { + limbs: [0xbeb312f20b6f7653ea61d87742bcce, 0xce9140267af9dd1c0af834cec32c17, 0x0020b1], + }, + BigNum { + limbs: [0xfef0f00df2ec88ac159e2688bd4333, 0xd8c1e977024e561dcd0fd4d314d93b, 0x00533b], + }, + BigNum { + limbs: [0xf4e672ebc1e1bb95df4b360411fe73, 0x596e753e4fcc6e92a9c460afca4a1e, 0x004f2c], + }, + BigNum { + limbs: [0xc8bd90143c7a436a20b4c8fbee018e, 0x4de4b45f2d7bc4a72e43a8f20dbb34, 0x0024c1], + }, + BigNum { + limbs: [0x7a6b6cfb0faca4807b811a823f728d, 0x919ec91f38ac5ccd4631f16edba496, 0x001edc], + }, + BigNum { + limbs: [0x43389604eeaf5a7f847ee47dc08d74, 0x15b4607e449bd66c91d61832fc60bd, 0x005511], + }, + BigNum { + limbs: [0xbc96af334c36bca1abb31fb37786b9, 0xf2dd7e0c63fccabf643eda8951f257, 0x0038c7], + }, + BigNum { + limbs: [0x010d53ccb225425e544cdf4c887948, 0xb475ab91194b687a73c92f188612fc, 0x003b25], + }, + BigNum { + limbs: [0x6e88fb4c38fb8a360c60997369df4e, 0x903a157988bab4bcd40e22f55448bf, 0x0050e0], + }, + BigNum { + limbs: [0x4f1b07b3c56074c9f39f658c9620b3, 0x17191423f48d7e7d03f9e6ac83bc94, 0x00230d], + }, + BigNum { + limbs: [0xbc7f62d13a6e1c3ec50c9031a36ca3, 0xc5837cb5fca206050b5832d1099726, 0x0065f6], + }, + BigNum { + limbs: [0x0124a02ec3ede2c13af36ece5c935e, 0xe1cface780a62d34ccafd6d0ce6e2d, 0x000df6], + }, + BigNum { + limbs: [0x3dc46688b5e11768cc0c58459f155b, 0x0457c83a7d9c5aea51f540eb0c0496, 0x002c7e], + }, + BigNum { + limbs: [0x7fdf9c77487ae79733f3a6ba60eaa6, 0xa2fb6162ffabd84f8612c8b6cc00bd, 0x00476f], + }, + BigNum { + limbs: [0xe943612401899720d4ed194fccfeb9, 0xda18a9d30564a8f0cfd2438f018c01, 0x005303], + }, + BigNum { + limbs: [0xd460a1dbfcd267df2b12e5b0330148, 0xcd3a7fca77e38a490835c612d67951, 0x0020e9], + }, + BigNum { + limbs: [0x317ae6451bb89de69679532ae1234c, 0x237e58fcced486fa69d8e4e48506e3, 0x000461], + }, + BigNum { + limbs: [0x8c291cbae2a361196986abd51edcb5, 0x83d4d0a0ae73ac3f6e2f24bd52fe70, 0x006f8c], + }, + BigNum { + limbs: [0x593d6ff6dab086ee5bcecc4e7773cb, 0xb16caf96816fa3a95d2d4016e2bd45, 0x00047c], + }, + BigNum { + limbs: [0x6466930923ab7811a43132b1888c36, 0xf5e67a06fbd88f907adac98af5480e, 0x006f70], + }, + BigNum { + limbs: [0xa6d195014b641082e68bc0bc50a88f, 0x5bb8ed54ae00468b04010fa5c79f62, 0x0056f3], + }, + BigNum { + limbs: [0x16d26dfeb2f7ee7d19743e43af5772, 0x4b9a3c48cf47ecaed406f9fc1065f1, 0x001cfa], + }, + BigNum { + limbs: [0x452d43f6d5756f51cb57e0e3035d15, 0xb9c6e6797777851425ea12dcacdae7, 0x001579], + }, + BigNum { + limbs: [0x7876bf0928e68fae34a81e1cfca2ec, 0xed8c432405d0ae25b21df6c52b2a6c, 0x005e73], + }, + BigNum { + limbs: [0x967f4be2f951558140d032f0a9ee53, 0x6345ec055e4d14a1e27164d8fdbd2d, 0x0045af], + }, + BigNum { + limbs: [0x2724b71d050aa97ebf2fcc0f5611ae, 0x440d3d981efb1e97f596a4c8da4826, 0x002e3e], + }, + BigNum { + limbs: [0xf20a6f5e1709899ddf46bac40ac8e4, 0x300e9079af0b916f129332ba2dfc0b, 0x0028eb], + }, + BigNum { + limbs: [0xcb9993a1e752756220b9443bf5371d, 0x77449923ce3ca1cac574d6e7aa0947, 0x004b02], + }, + BigNum { + limbs: [0xdc0ae311f00af48469ef4d246b6883, 0xad6a79b61c1a71d544f7800a7e4ae4, 0x005391], + }, + BigNum { + limbs: [0xe1991fee0e510a7b9610b1db94977e, 0xf9e8afe7612dc1649310899759ba6e, 0x00205b], + }, + BigNum { + limbs: [0x2e4312e6011bf5d941e9338fb466f7, 0x0520cdfb5d9d6c54cb86cdf73e9123, 0x0044ed], + }, + BigNum { + limbs: [0x8f60f019fd400926be16cb704b990a, 0xa2325ba21faac6e50c813baa997430, 0x002f00], + }, + BigNum { + limbs: [0x12abf7f3a89e7acf065a270f3c324f, 0x64fb4536c4fcf6ad66524f0376d9e4, 0x0054fa], + }, + BigNum { + limbs: [0xaaf80b0c55bd8430f9a5d7f0c3cdb2, 0x4257e466b84b3c8c71b5ba9e612b6f, 0x001ef3], + }, + BigNum { + limbs: [0x2a70a615d0b8e4d2fc5e69ac5db47f, 0x40ac57f86f5e293b1d67bc8de5d9a1, 0x000e48], + }, + BigNum { + limbs: [0x93335cea2da31a2d03a19553a24b82, 0x66a6d1a50dea09febaa04d13f22bb2, 0x0065a5], + }, + BigNum { + limbs: [0x1f590ef73ba2bdc0f1357a508e5e7b, 0x00aba73798bfaf59d0fc7261da7291, 0x0058c4], + }, + BigNum { + limbs: [0x9e4af408c2b9413f0eca84af71a186, 0xa6a78265e48883e0070b973ffd92c2, 0x001b29], + }, + BigNum { + limbs: [0x02e4e461e72e18ddc3b03ea91bc267, 0x785206b5761a878d670fcb570ab3b8, 0x006358], + }, + BigNum { + limbs: [0xbabf1e9e172de6223c4fc056e43d9a, 0x2f0122e8072dabac70f83e4acd519b, 0x001095], + }, + BigNum { + limbs: [0xc3ebf43c92a949a4593e1acca2cb6c, 0x8adc7bff16bae3ee1645113940cf46, 0x0053c7], + }, + BigNum { + limbs: [0xf9b80ec36bb2b55ba6c1e4335d3495, 0x1c76ad9e668d4f4bc1c2f86897360c, 0x002026], + }, + BigNum { + limbs: [0xe74ba2b75ca477f44e14739932aa33, 0x508a14adf95959d7d47f20aa9f0259, 0x0037d3], + }, + BigNum { + limbs: [0xd6586048a1b7870bb1eb8b66cd55ce, 0x56c914ef83eed9620388e8f73902f9, 0x003c1a], + }, + BigNum { + limbs: [0x9f1f01e2bbf0ac476e05bf67d4973c, 0xcc64ae610371dcd9ce528178852eaf, 0x005a50], + }, + BigNum { + limbs: [0x1e85011d426b52b891fa3f982b68c5, 0xdaee7b3c79d6566009b5882952d6a4, 0x00199c], + }, + BigNum { + limbs: [0x1ae51df978cc3878f4ee1de45ab2f2, 0x03824bef73c976407b9926e20836d2, 0x006e57], + }, + BigNum { + limbs: [0xa2bee506858fc6870b11e11ba54d0f, 0xa3d0ddae097ebcf95c6ee2bfcfce81, 0x000596], + }, + BigNum { + limbs: [0x7493f160ce4cb729b4cb21179cfb0e, 0x79931cfdd8947f799cf20f675fde6a, 0x00036b], + }, + BigNum { + limbs: [0x4910119f300f47d64b34dde86304f3, 0x2dc00c9fa4b3b3c03b15fa3a7826e9, 0x007082], + }, + BigNum { + limbs: [0x0664a566a603f98c15c05b1901cef2, 0xed2ec80a4115f20c57f6d7dc953305, 0x000afc], + }, + BigNum { + limbs: [0xb73f5d9958580573ea3fa3e6fe310f, 0xba2461933c32412d801131c542d24e, 0x0068f0], + }, + BigNum { + limbs: [0xe20d3cfc83311c0727b36db1974ef4, 0xd5fd4e2f04c5e7caaba64af676214e, 0x0028c6], + }, + BigNum { + limbs: [0xdb96c6037b2ae2f8d84c914e68b10d, 0xd155db6e78824b6f2c61beab61e404, 0x004b26], + }, + BigNum { + limbs: [0x36750f231bcd8672d73ebbe97445d5, 0x9ddec7fa8e98e4b5243a8bda7ca378, 0x000fe0], + }, + BigNum { + limbs: [0x872ef3dce28e788d28c143168bba2c, 0x097461a2eeaf4e84b3cd7dc75b61db, 0x00640d], + }, + BigNum { + limbs: [0xd0caac87f5713c5130c2c1660125be, 0x111413588742b7c68b4d7fdd60d098, 0x006898], + }, + BigNum { + limbs: [0xecd9567808eac2aecf3d3d99feda43, 0x963f1644f6057b734cba89c47734ba, 0x000b55], + }, + BigNum { + limbs: [0x30a34e5e4c7a31a0927a327c751043, 0x983de0110e23413ff88848100458b8, 0x0030d2], + }, + BigNum { + limbs: [0x8d00b4a1b1e1cd5f6d85cc838aefbe, 0x0f15498c6f24f1f9df7fc191d3ac9b, 0x00431b], + }, + BigNum { + limbs: [0x1e0777f7ef73e32ef7664cb2440ed4, 0xf5b7cb3dee5f01fe51c5b744878f5d, 0x00510d], + }, + BigNum { + limbs: [0x9f9c8b080ee81bd10899b24dbbf12d, 0xb19b5e5f8ee9313b8642525d5075f6, 0x0022df], + }, + BigNum { + limbs: [0x608393655b6d323eae9752b92f9726, 0x1a173d90ba01c42ee040e5579a63af, 0x0015ae], + }, + BigNum { + limbs: [0x5d206f9aa2eeccc15168ac46d068db, 0x8d3bec0cc3466f0af7c7244a3da1a4, 0x005e3f], + }, + BigNum { + limbs: [0x136819ab9c98a27528d588439e5b12, 0x3ae1cc22ee66ae3320a20450eb9bbf, 0x001a8f], + }, + BigNum { + limbs: [0xaa3be95461c35c8ad72a76bc61a4ef, 0x6c715d7a8ee18506b7660550ec6994, 0x00595e], + }, + BigNum { + limbs: [0xb0deac619bda2d4000b0b3767c9928, 0x0b00588ed2cf8b98c6ffcd682aa219, 0x0035c6], + }, + BigNum { + limbs: [0x0cc5569e6281d1bfff4f4b898366d9, 0x9c52d10eaa78a7a111083c39ad633a, 0x003e27], + }, + BigNum { + limbs: [0x95392351a789a318d303a266992f63, 0x6bb22f520df225302664820cb7fbf4, 0x00058e], + }, + BigNum { + limbs: [0x286adfae56d25be72cfc5c9966d09e, 0x3ba0fa4b6f560e09b1a3879520095f, 0x006e5f], + }, + BigNum { + limbs: [0x47df05ce549e034eb4bb5cc301906f, 0xace8a4aeb40b597e225a1da4156c04, 0x007144], + }, + BigNum { + limbs: [0x75c4fd31a9bdfbb14b44a23cfe6f92, 0xfa6a84eec93cd9bbb5adebfdc2994f, 0x0002a8], + }, + BigNum { + limbs: [0x7d9fd5726f6b40ed9fa5c032ec0a23, 0xa72e47136966a4512dec6b0a03377e, 0x005f2f], + }, + BigNum { + limbs: [0x40042d8d8ef0be12605a3ecd13f5de, 0x0024e28a13e18ee8aa1b9e97d4cdd5, 0x0014be], + }, + BigNum { + limbs: [0x3accee4e32febaa4f1f87d90884c5a, 0x5f6ba59c3994a84b028e307c93637f, 0x002254], + }, + BigNum { + limbs: [0x82d714b1cb5d445b0e07816f77b3a7, 0x47e7840143b38aeed579d92544a1d4, 0x005199], + }, + BigNum { + limbs: [0x9fa49ec41505c948af25b254d71df9, 0xdf508052e8d9a67bb3d018ed258f03, 0x006c1c], + }, + BigNum { + limbs: [0x1dff643be95635b750da4cab28e208, 0xc802a94a946e8cbe2437f0b4b27650, 0x0007d0], + }, + BigNum { + limbs: [0x0af27f081250e5bddd6dacba0b1d06, 0x9b0b4fa4971529805a2b04c50efc33, 0x005b75], + }, + BigNum { + limbs: [0xb2b183f7ec0b194222925245f4e2fb, 0x0c47d9f8e63309b97ddd04dcc90920, 0x001878], + }, + BigNum { + limbs: [0xffeee172f8ac74095e328eda2f8e5c, 0x8571ac60a4ce0468b4bb2b446edda9, 0x002904], + }, + BigNum { + limbs: [0xbdb5218d05af8af6a1cd7025d071a5, 0x21e17d3cd87a2ed1234cde5d6927a9, 0x004ae9], + }, + BigNum { + limbs: [0xfd4ee83f1b2499dbe21753938adf74, 0x09b8f9797bc1d44db4c7e28c3f15cb, 0x001aa9], + }, + BigNum { + limbs: [0xc0551ac0e33765241de8ab6c75208d, 0x9d9a302401865eec2340271598ef87, 0x005944], + }, + BigNum { + limbs: [0xfb82877b46d20d3f0ffba2ea149337, 0x83626bca158c398677e14a8cb7e715, 0x005815], + }, + BigNum { + limbs: [0xc2217b84b789f1c0f0045c15eb6cca, 0x23f0bdd367bbf9b36026bf15201e3d, 0x001bd8], + }, + BigNum { + limbs: [0xf0a42ec0e52a48c009cf2b0763b3d5, 0x72b23615cf703897e487b9c664354a, 0x0054b5], + }, + BigNum { + limbs: [0xccffd43f1931b63ff630d3f89c4c2c, 0x34a0f387add7faa1f3804fdb73d008, 0x001f38], + }, + BigNum { + limbs: [0xbdbdcad82928c864e8c456229dfdef, 0xd2940967b1a207e780cc7312dd5371, 0x0067ad], + }, + BigNum { + limbs: [0xffe63827d533369b173ba8dd620212, 0xd4bf2035cba62b52573b968efab1e1, 0x000c3f], + }, + BigNum { + limbs: [0x4b0f40448ca04c44568101d845f71f, 0x150315161c3e6e8ba6f2374a655d9d, 0x005318], + }, + BigNum { + limbs: [0x7294c2bb71bbb2bba97efd27ba08e2, 0x925014876109c4ae3115d25772a7b6, 0x0020d5], + }, + BigNum { + limbs: [0xe21a225b58e59f1d3e494f87fd6d91, 0x8bf565feb0f7bdf7f8f0d267d1ae2a, 0x00249a], + }, + BigNum { + limbs: [0xdb89e0a4a5765fe2c1b6af78029270, 0x1b5dc39ecc507541df17373a065728, 0x004f53], + }, + BigNum { + limbs: [0x94a89651aca0ff810d9cff570736e9, 0x46355ac0cbecc13494e5cc0ae758c6, 0x006c43], + }, + BigNum { + limbs: [0x28fb6cae51baff7ef262ffa8f8c918, 0x611dcedcb15b720543223d96f0ac8d, 0x0007aa], + }, + BigNum { + limbs: [0x9486bb67912a2b440dab45cd1fac5b, 0x03d7743e9a0675583bdb136e9f86e1, 0x001a9d], + }, + BigNum { + limbs: [0x291d47986d31d3bbf254b932e053a6, 0xa37bb55ee341bde19c2cf633387e72, 0x005950], + }, + BigNum { + limbs: [0x6fb582ac74db12571ba2fccf28601b, 0xfa8d52f970ba51420be43501370b16, 0x001996], + }, + BigNum { + limbs: [0x4dee80538980eca8e45d0230d79fe6, 0xacc5d6a40c8de1f7cc23d4a0a0fa3d, 0x005a56], + }, + BigNum { + limbs: [0x8a65bc0f8e4d1ecdd815ee4d942bee, 0xa05ea5c70ef50d10f88231dde2f6e1, 0x003336], + }, + BigNum { + limbs: [0x333e46f0700ee03227ea10b26bd413, 0x06f483d66e532628df85d7c3f50e72, 0x0040b7], + }, + BigNum { + limbs: [0x56ab6223eff0406e175e44c490cbc0, 0x7a32e902f9e85187145dfaed820595, 0x0059dc], + }, + BigNum { + limbs: [0x66f8a0dc0e6bbe91e8a1ba3b6f3441, 0x2d20409a835fe1b2c3aa0eb455ffbe, 0x001a11], + }, + BigNum { + limbs: [0x4492b6f43bb51eca7dadda50f555e4, 0x9040823a88e7b6a42eb341ff879cb0, 0x006025], + }, + BigNum { + limbs: [0x79114c0bc2a6e035825224af0aaa1d, 0x1712a762f4607c95a954c7a25068a3, 0x0013c8], + }, + BigNum { + limbs: [0xc85f7efbd6188bb08956f964517062, 0x2b7d27b4c23e09768a7087f0cc2629, 0x001356], + }, + BigNum { + limbs: [0xf54484042843734f76a9059bae8f9f, 0x7bd601e8bb0a29c34d9781b10bdf29, 0x006097], + }, + BigNum { + limbs: [0xae4a21d39a23bee9dc91a650a90e49, 0x59d76ca02af7f2f3e98766f8c9185c, 0x0016c3], + }, + BigNum { + limbs: [0x0f59e12c64384016236e58af56f1b8, 0x4d7bbcfd52504045ee80a2a90eecf7, 0x005d2a], + }, + BigNum { + limbs: [0xc708b8b84ee699a565af7a806913be, 0x169d8ee087328d16baf2bdd5e94641, 0x002db7], + }, + BigNum { + limbs: [0xf69b4a47af75655a9a50847f96ec43, 0x90b59abcf615a6231d154bcbeebf11, 0x004636], + }, + BigNum { + limbs: [0xfb135ff413a356d5f57c79b59b2332, 0x73726e9409979c7943d6a33bc39345, 0x0061f2], + }, + BigNum { + limbs: [0xc290a30beab8a82a0a83854a64dccf, 0x33e0bb0973b096c09431666614720d, 0x0011fb], + }, + BigNum { + limbs: [0x71082d2903a1ac633d3e92c7ca8ccf, 0x59c69ed3df9941205e1bb9264c6a7c, 0x003c9f], + }, + BigNum { + limbs: [0x4c9bd5d6faba529cc2c16c38357332, 0x4d8c8ac99daef21979ec507b8b9ad7, 0x00374e], + }, + BigNum { + limbs: [0x409954448fd0a2dbcc4af4074489e8, 0xe4668304bec207238a67fd3278fde6, 0x001bce], + }, + BigNum { + limbs: [0x7d0aaebb6e8b5c2433b50af8bb7619, 0xc2eca698be862c164da00c6f5f076d, 0x00581e], + }, + BigNum { + limbs: [0x3c9d94a870e33f9df832cfdf2062ef, 0xb766f5943eadc0dcf3788fe23b2f53, 0x001325], + }, + BigNum { + limbs: [0x81066e578d78bf6207cd2f20df9d12, 0xefec34093e9a725ce48f79bf9cd600, 0x0060c7], + }, + BigNum { + limbs: [0x0865a899e8deff4935bd2f817f694b, 0x4098e2e9f12e6b368121ac0cf4ad0a, 0x004f9b], + }, + BigNum { + limbs: [0xb53e5a66157cffb6ca42cf7e8096b6, 0x66ba46b38c19c80356e65d94e35849, 0x002452], + }, + BigNum { + limbs: [0x505ce32828420562b851e3d2a34df5, 0x0aa154b7afb7604ccbce3186331764, 0x00663d], + }, + BigNum { + limbs: [0x6d471fd7d619f99d47ae1b2d5cb20c, 0x9cb1d4e5cd90d2ed0c39d81ba4edef, 0x000db0], + }, + BigNum { + limbs: [0x39e2b6fbd943d0adc24eba36b7578e, 0x29432977ae6a072570e877993c3d74, 0x005a06], + }, + BigNum { + limbs: [0x83c14c0425182e523db144c948a873, 0x7e100025cede2c14671f92089bc7df, 0x0019e7], + }, + BigNum { + limbs: [0xcc59c903893ca8829235424bc52016, 0x03442f2fb2879a8a9d78c4fed2b2ba, 0x004d35], + }, + BigNum { + limbs: [0xf14a39fc751f567d6dcabcb43adfeb, 0xa40efa6dcac098af3a8f44a3055298, 0x0026b8], + }, + BigNum { + limbs: [0x8469e061a1c6905718b817f3ccad48, 0x97adfcf78a922bf7a6f6d02f061235, 0x005335], + }, + BigNum { + limbs: [0x393a229e5c956ea8e747e70c3352b9, 0x0fa52ca5f2b6074231113972d1f31e, 0x0020b8], + }, + BigNum { + limbs: [0x275f891994324c998731ee0c78437a, 0x57052117e1e151ea52ef08f1e06c38, 0x004ba3], + }, + BigNum { + limbs: [0x964479e66a29b26678ce10f387bc87, 0x504e08859b66e14f851900aff7991b, 0x00284a], + }, + BigNum { + limbs: [0xdcd43dec9acd7108993b54226b7f93, 0x3f58561023a7fa481d537345cf6530, 0x004208], + }, + BigNum { + limbs: [0xe0cfc513638e8df766c4aadd94806e, 0x67fad38d59a038f1bab4965c08a022, 0x0031e5], + }, + BigNum { + limbs: [0xb309ae850664dec3e268216bdc4a30, 0x6d8cebced82bc53c32396daedbf90a, 0x000c11], + }, + BigNum { + limbs: [0x0a9a547af7f7203c1d97dd9423b5d1, 0x39c63dcea51c6dfda5ce9bf2fc0c49, 0x0067dc], + }, + BigNum { + limbs: [0x10ed5bae398c9c164881d4baa8a72e, 0x37284ec1415dde48a52a93151b352e, 0x004432], + }, + BigNum { + limbs: [0xacb6a751c4cf62e9b77e2a455758d3, 0x702adadc3bea54f132dd768cbcd025, 0x002fbb], + }, + BigNum { + limbs: [0x7fcad29e98164375352d72a0c9539a, 0xe61a3a2a9b39fcf3ec5eda0ddb53a0, 0x0042a2], + }, + BigNum { + limbs: [0x3dd930616645bb8acad28c5f36ac67, 0xc138ef72e20e3645eba92f93fcb1b3, 0x00314a], + }, + BigNum { + limbs: [0x72c833e4cf3499ecbf5d6f01ea2fe8, 0xdb96249a23e969ac30e42135fbc427, 0x00485a], + }, + BigNum { + limbs: [0x4adbcf1b2f27651340a28ffe15d019, 0xcbbd0503595ec98da723e86bdc412c, 0x002b92], + }, + BigNum { + limbs: [0xf67b913ee947b92fef56114b49c75d, 0x15ee4db709aa6e492ff0b0d05658b6, 0x0002b3], + }, + BigNum { + limbs: [0xc72871c1151445d010a9edb4b638a4, 0x9164dbe6739dc4f0a81758d181ac9c, 0x00713a], + }, + BigNum { + limbs: [0x576cd5a085170dfba96832adfa9266, 0x0f08c01d85df59b31745ff67db9e8b, 0x004e34], + }, + BigNum { + limbs: [0x66372d5f7944f1045697cc52056d9b, 0x984a697ff768d986c0c20a39fc66c8, 0x0025b9], + }, + BigNum { + limbs: [0x0bf5a0bea3c2ee335ab15ecceb6a2d, 0xf883ceaa889c7f2b1554800870c74e, 0x005daf], + }, + BigNum { + limbs: [0xb1ae62415a9910cca54ea0331495d4, 0xaecf5af2f4abb40ec2b38999673e05, 0x00163d], + }, + BigNum { + limbs: [0xce26afb69019f7ee3b38a3813633f1, 0xacd7204034884021f50f21b39e1d96, 0x006743], + }, + BigNum { + limbs: [0xef7d53496e420711c4c75b7ec9cc10, 0xfa7c095d48bff317e2f8e7ee39e7bc, 0x000ca9], + }, + BigNum { + limbs: [0xa0eb428f0d8dccd165b2490ec7254e, 0x4dd24ebf1658766f71f92679eccdd9, 0x000959], + }, + BigNum { + limbs: [0x1cb8c070f0ce322e9a4db5f138dab3, 0x5980dade66efbcca660ee327eb377a, 0x006a94], + }, + BigNum { + limbs: [0x8df3051d69e220022193b333c3b855, 0x287007cdc98e2e1a54f5ed6dac0e6e, 0x003683], + }, + BigNum { + limbs: [0x2fb0fde29479defdde6c4bcc3c47ac, 0x7ee321cfb3ba051f83121c342bf6e5, 0x003d6a], + }, + BigNum { + limbs: [0xafcb31434545d82efcfdaf4e265ab7, 0xb48988b9dbae9a54b1f2bebcea8bca, 0x002fb2], + }, + BigNum { + limbs: [0x0dd8d1bcb91626d103024fb1d9a54a, 0xf2c9a0e3a19998e526154ae4ed7989, 0x00443a], + }, + BigNum { + limbs: [0x730e303c173e1c090bcdd715521bb1, 0x7940ac524648faaf9f04b421b462f2, 0x0046aa], + }, + BigNum { + limbs: [0x4a95d2c3e71de2f6f43227eaade450, 0x2e127d4b36ff388a3903558023a261, 0x002d43], + }, + BigNum { + limbs: [0xa69d8f42e2c25b26dd05e4c4aec099, 0x5a6d7f643b5a2dee35b6cf12739eaf, 0x003dc4], + }, + BigNum { + limbs: [0x170673bd1b99a3d922fa1a3b513f68, 0x4ce5aa3941ee054ba2513a8f6466a4, 0x003629], + }, + BigNum { + limbs: [0x3d29335383e69a148277eef8c0a297, 0x64192e295d851bd07fc9fc34abead9, 0x00328f], + }, + BigNum { + limbs: [0x807acfac7a7564eb7d8810073f5d6a, 0x4339fb741fc31769583e0d6d2c1a7a, 0x00415e], + }, + BigNum { + limbs: [0x2c84f3154125602cabadec2fe322b8, 0xda59a33dcbf232a732ae1a3b0aef75, 0x002e95], + }, + BigNum { + limbs: [0x911f0feabd369ed3545212d01cdd49, 0xccf9865fb1560092a559ef66cd15de, 0x004557], + }, + BigNum { + limbs: [0x7570b00fca5c9a520c8c4d748fb509, 0x55665267f0974b35861cb1da153a8b, 0x003d06], + }, + BigNum { + limbs: [0x483352f033ff64adf373b18b704af8, 0x51ecd7358cb0e80451eb57c7c2cac8, 0x0036e7], + }, + BigNum { + limbs: [0x330977b7a8bfe99ca730e689c0bf9e, 0x7d2fce8520d1f5109fa0d7553d937a, 0x0000aa], + }, + BigNum { + limbs: [0x8a9a8b48559c156358cf18763f4063, 0x2a235b185c763e293867324c9a71d9, 0x007343], + }, + BigNum { + limbs: [0x4628b567af1bb4e3d5dbe0d2f73e41, 0xb74a12568801be1e72f2066186fa64, 0x006eca], + }, + BigNum { + limbs: [0x777b4d984f404a1c2a241e2d08c1c0, 0xf0091746f546751b65160340510aef, 0x000522], + }, + BigNum { + limbs: [0x5f56946340fdfc3b2bcdccf1ec7b16, 0x9e7e1c0691a3bae4d7a5261114f26f, 0x0055e2], + }, + BigNum { + limbs: [0x5e4d6e9cbd5e02c4d432320e1384eb, 0x08d50d96eba478550062e390c312e4, 0x001e0b], + }, + BigNum { + limbs: [0x01cd8bef1b22603e16064aa9a77770, 0x214dfb1c37d97fb60b67a741a4eee4, 0x006635], + }, + BigNum { + limbs: [0xbbd67710e3399ec1e9f9b456588891, 0x86052e81456eb383cca0626033166f, 0x000db8], + }, + BigNum { + limbs: [0xab3ea313c630b6754ceec2fde25881, 0x29cbca5aa4231b2b2fbdb88c0832f1, 0x002043], + }, + BigNum { + limbs: [0x12655fec382b488ab3113c021da780, 0x7d875f42d925180ea84a5115cfd262, 0x0053aa], + }, + BigNum { + limbs: [0x54e5045f96bdb5b46b6df596ba6ecf, 0xd3064ba6d18615e83527ce053b131c, 0x0055e9], + }, + BigNum { + limbs: [0x68befea0679e494b94920969459132, 0xd44cddf6abc21d51a2e03b9c9cf237, 0x001e03], + }, + BigNum { + limbs: [0x54642678ea64b7408a86452d1142b4, 0x14a479d7e1869cfafd436d7b412b06, 0x005c62], + }, + BigNum { + limbs: [0x693fdc8713f747bf7579b9d2eebd4d, 0x92aeafc59bc1963edac49c2696da4d, 0x00178b], + }, + BigNum { + limbs: [0x771d65b2ee56d3198a034b1e705c0e, 0x117113c5d5a3e04369454396c3893c, 0x00255c], + }, + BigNum { + limbs: [0x46869d4d10052be675fcb3e18fa3f3, 0x95e215d7a7a452f66ec2c60b147c17, 0x004e91], + }, + BigNum { + limbs: [0xc93f37bda7b84b0c06f42c4fa19fd3, 0xbb72051a32b8635dba604a48d7ba10, 0x003d0b], + }, + BigNum { + limbs: [0xf464cb4256a3b3f3f90bd2b05e602e, 0xebe124834a8fcfdc1da7bf59004b42, 0x0036e1], + }, + BigNum { + limbs: [0x7d52a475e8ce1152a4c44c49a49f1e, 0x1bd32e1843bc1a3ef55558b56d6d42, 0x006dee], + }, + BigNum { + limbs: [0x40515e8a158dedad5b3bb2b65b60e3, 0x8b7ffb85398c18fae2b2b0ec6a9811, 0x0005ff], + }, + BigNum { + limbs: [0x4ef4c6bf3fe0c6c7ea608db8cd652c, 0x7ca6fc96f67ff5389b96856be8b140, 0x001df5], + }, + BigNum { + limbs: [0x6eaf3c40be7b3838159f7147329ad5, 0x2aac2d0686c83e013c718435ef5413, 0x0055f8], + }, + BigNum { + limbs: [0x38cc4f07468cebd78b1ef5748164e7, 0x56c04012bb93b8a0671498f387398d, 0x005e68], + }, + BigNum { + limbs: [0x84d7b3f8b7cf132874e1098b7e9b1a, 0x5092e98ac1b47a9970f370ae50cbc6, 0x001585], + }, + BigNum { + limbs: [0x6041cee0c4bdac8586e7bf3217bc38, 0x75545a9dcb2faf33b868f0e27d4ed6, 0x000a79], + }, + BigNum { + limbs: [0x5d62341f399e527a79183fcde843c9, 0x31feceffb21884061f9f18bf5ab67d, 0x006974], + }, + BigNum { + limbs: [0x8111d9b58068eda22cb0c0043581b8, 0x5f69535823b4eea87dbd8b3e7293c0, 0x004118], + }, + BigNum { + limbs: [0x3c92294a7df3115dd34f3efbca7e49, 0x47e9d645599344915a4a7e63657193, 0x0032d5], + }, + BigNum { + limbs: [0x01fb897d05b8538dfcd4912667f55f, 0x2898a7c259a810a20368471f6635e8, 0x0064e3], + }, + BigNum { + limbs: [0xbba87982f8a3ab72032b6dd9980aa2, 0x7eba81db23a02297d49fc28271cf6b, 0x000f0a], + }, + BigNum { + limbs: [0x6cbfc87f549eb20f15758baad3fcf4, 0x7eef82a73dc4782fd931be0cba8ab0, 0x0018e1], + }, + BigNum { + limbs: [0x50e43a80a9bd4cf0ea8a73552c030d, 0x2863a6f63f83bb09fed64b951d7aa3, 0x005b0c], + }, + BigNum { + limbs: [0x04a2294bb265301622dd5a6889a8e8, 0x0e0589dd793aa51bfee012ab18ba91, 0x00362f], + }, + BigNum { + limbs: [0xb901d9b44bf6cee9dd22a497765719, 0x994d9fc0040d8e1dd927f6f6bf4ac2, 0x003dbe], + }, + BigNum { + limbs: [0x1b8dd0e729d15d3f10f3a9abb257e1, 0x83b64fd60550e6c6e2fafbc3c935b1, 0x003718], + }, + BigNum { + limbs: [0xa2163218d48aa1c0ef0c55544da820, 0x239cd9c777f74c72f50d0dde0ecfa2, 0x003cd5], + }, + BigNum { + limbs: [0xc59162052451257675b5beeb6153ca, 0x7850ce28f03eea18ac2f59bed4eb36, 0x004405], + }, + BigNum { + limbs: [0xf812a0fada0ad9898a4a40149eac37, 0x2f025b748d0949212bd8afe3031a1c, 0x002fe8], + }, + BigNum { + limbs: [0x80f5ffdc6ac2e316a9e3e795d08887, 0xba2e026f2459a189d7e4af45dab593, 0x000688], + }, + BigNum { + limbs: [0x3cae032393991be9561c176a2f777a, 0xed25272e58ee91b000235a5bfd4fc0, 0x006d64], + }, + BigNum { + limbs: [0x78af6ba70b7705f1af8f454525fd66, 0xb1110b25238c7d7128741250354861, 0x004c33], + }, + BigNum { + limbs: [0x44f49758f2e4f90e5070b9bada029b, 0xf6421e7859bbb5c8af93f751a2bcf2, 0x0027b9], + }, + BigNum { + limbs: [0x3ec884963a020ab3e6eed5afa1109b, 0xced439e3c7897f5870bc08c4081661, 0x005db4], + }, + BigNum { + limbs: [0x7edb7e69c459f44c191129505eef66, 0xd87eefb9b5beb3e1674c00ddcfeef2, 0x001638], + }, + BigNum { + limbs: [0xffa1a105df6b8a7429c1fa7a88c247, 0xe1cbced44b4c46145a561c41e22acf, 0x000701], + }, + BigNum { + limbs: [0xbe0261fa1ef0748bd63e0485773dba, 0xc5875ac931fbed257db1ed5ff5da83, 0x006ceb], + }, + BigNum { + limbs: [0x72266b93838c16cd4b696e7ea423f1, 0x1336b5ca226c34c543b8647ce9de4c, 0x000c72], + }, + BigNum { + limbs: [0x4b7d976c7acfe832b49690815bdc10, 0x941c73d35adbfe74944fa524ee2707, 0x00677b], + }, + BigNum { + limbs: [0x6a4f579172314a0ff8423daf2fdb50, 0xfcd83aa5a469524e3a763bb50b0994, 0x0054c0], + }, + BigNum { + limbs: [0x5354ab6e8c2ab4f007bdc150d024b1, 0xaa7aeef7d8dee0eb9d91cdecccfbbf, 0x001f2c], + }, + BigNum { + limbs: [0x2feb30d6711c70e95f38660e9d1536, 0xd7d20dac46ed6eae360ede81eba8db, 0x000832], + }, + BigNum { + limbs: [0x8db8d2298d3f8e16a0c798f162eacb, 0xcf811bf1365ac48ba1f92b1fec5c78, 0x006bba], + }, + BigNum { + limbs: [0x0e24ef2f570c8a24438957b3e25619, 0x0e58dcdd8ce7f82295c732d111a2b2, 0x001a66], + }, + BigNum { + limbs: [0xaf7f13d0a74f74dbbc76a74c1da9e8, 0x98fa4cbff0603b174240d6d0c662a1, 0x005987], + }, + BigNum { + limbs: [0xa33e0d6b4dc2d87ee857bf1f253512, 0x8b55856bf49320c8b3bf4746e7abf6, 0x004877], + }, + BigNum { + limbs: [0x1a65f594b099268117a83fe0dacaef, 0x1bfda43188b512712448c25af0595d, 0x002b76], + }, + BigNum { + limbs: [0x1764ae9a77652c25c83bb50749f0af, 0x7bc7ac9a877903f012dba811a16818, 0x005e0b], + }, + BigNum { + limbs: [0xa63f546586f6d2da37c449f8b60f52, 0x2b8b7d02f5cf2f49c52c6190369d3b, 0x0015e2], + }, + BigNum { + limbs: [0xca8e5c4d2dc5ffd2878366fcec15ba, 0x702dd52769aebdb6bf288d790d89bd, 0x005d19], + }, + BigNum { + limbs: [0xf315a6b2d095ff2d787c980313ea47, 0x372554761399758318df7c28ca7b95, 0x0016d4], + }, + BigNum { + limbs: [0x3d7e9803ec74e17a030cc2de5db52b, 0xdbf168716b60e5789556beff8edeb6, 0x001d12], + }, + BigNum { + limbs: [0x80256afc11e71d85fcf33c21a24ad6, 0xcb61c12c11e74dc142b14aa249269d, 0x0056da], + }, + BigNum { + limbs: [0x7d166d26d7d13fef678c866ccd32d7, 0x1642c7524b471810c6122bee51ba89, 0x00725d], + }, + BigNum { + limbs: [0x408d95d9268abf109873789332cd2a, 0x9110624b32011b2911f5ddb3864aca, 0x000190], + }, + BigNum { + limbs: [0x03788dd25be1b072994949fe8dda46, 0x315227033bb160f1e69f8f0320b088, 0x00622c], + }, + BigNum { + limbs: [0xba2b752da27a4e8d66b6b5017225bb, 0x7601029a4196d247f1687a9eb754cb, 0x0011c1], + }, + BigNum { + limbs: [0x785fd8b3542a38a4a7a41d55234864, 0x2b04f3a711b74789f746a17afd9bde, 0x00241f], + }, + BigNum { + limbs: [0x45442a4caa31c65b585be1aadcb79d, 0x7c4e35f66b90ebafe0c16826da6975, 0x004fce], + }, + BigNum { + limbs: [0xbff88c0b7e4246f003cd6e73efb611, 0x0fdde70e992d0cc516e3bb219c82aa, 0x00146d], + }, + BigNum { + limbs: [0xfdab76f48019b80ffc32908c1049f0, 0x9775428ee41b2674c1244e803b82a8, 0x005f80], + }, + BigNum { + limbs: [0x40e7eb01aad13b85caa34fd9b2b6ce, 0xb1d9346b1f74337b8c94b4e3a208e5, 0x007275], + }, + BigNum { + limbs: [0x7cbc17fe538ac37a355caf264d4933, 0xf579f5325dd3ffbe4b7354be35fc6e, 0x000177], + }, + BigNum { + limbs: [0x679941d7e3344ac1f99b485bb67d21, 0xd9e4727786c36067482e2d9445f9ef, 0x005aef], + }, + BigNum { + limbs: [0x560ac1281b27b43e0664b6a44982e0, 0xcd6eb725f684d2d28fd9dc0d920b64, 0x0018fd], + }, + BigNum { + limbs: [0xda7cb26fe41c7fe6b19f0b5eadf9cb, 0x1c67b10780e18ea3e9254dbb27ead7, 0x001c02], + }, + BigNum { + limbs: [0xe32750901a3f7f194e60f3a1520636, 0x8aeb7895fc66a495eee2bbe6b01a7b, 0x0057eb], + }, + BigNum { + limbs: [0xafd9f0df88a27eefe8ef07b5048efa, 0x742370737a124164b50a572c9c65ee, 0x000ad7], + }, + BigNum { + limbs: [0x0dca122075b980101710f74afb7107, 0x332fb92a0335f1d522fdb2753b9f65, 0x006916], + }, + BigNum { + limbs: [0xde4d06174139246cfaf4c817c13fe6, 0x0e1ec7a28bb857f5f1a3b50f2b7f30, 0x0000c5], + }, + BigNum { + limbs: [0xdf56fce8bd22da93050b36e83ec01b, 0x993461faf18fdb43e6645492ac8622, 0x007328], + }, + BigNum { + limbs: [0x42551c91b1af3382fe7994226a7881, 0x30fb21510ba3cb52d65ec3b820f174, 0x005b33], + }, + BigNum { + limbs: [0x7b4ee66e4caccb7d01866add958780, 0x7658084c71a467e701a945e9b713df, 0x0018ba], + }, + BigNum { + limbs: [0x97168a3a6000fe4541b8ff2ee0434e, 0x66525526a65439feec240d80689fd6, 0x000951], + }, + BigNum { + limbs: [0x268d78c59e5b00babe46ffd11fbcb3, 0x4100d476d6f3f93aebe3fc216f657d, 0x006a9c], + }, + BigNum { + limbs: [0xa07e9cbe5a10af2a5e7b785841a1da, 0xb67ad287bb0f9589c90d5aa47634ea, 0x00668d], + }, + BigNum { + limbs: [0x1d256641a44b4fd5a18486a7be5e27, 0xf0d85715c2389db00efaaefd61d069, 0x000d5f], + }, + BigNum { + limbs: [0x6c91b560c5b82c9b2ee1a0bf112931, 0xdc55e43f779e0eace99e48f3d3cad6, 0x00243a], + }, + BigNum { + limbs: [0x51124d9f38a3d264d11e5e40eed6d0, 0xcafd455e05aa248cee69c0ae043a7d, 0x004fb2], + }, + BigNum { + limbs: [0x424f00b1a2b32fa0eaaaa3583a6b80, 0x91a1889c6ab2045e7a34773491a611, 0x003362], + }, + BigNum { + limbs: [0x7b55024e5ba8cf5f15555ba7c59481, 0x15b1a10112962edb5dd3926d465f42, 0x00408b], + }, + BigNum { + limbs: [0x0c078154d7c539a4c94125ad9dc176, 0x0931b15c62562ce4ba2c4bf31f353e, 0x006905], + }, + BigNum { + limbs: [0xb19c81ab2696c55b36bed952623e8b, 0x9e2178411af206551ddbbdaeb8d015, 0x000ae8], + }, + BigNum { + limbs: [0x9ad324193961627372e26d5720949f, 0x2ca6312ad70d5e3ab4ed8e1c3483aa, 0x0004a4], + }, + BigNum { + limbs: [0x22d0dee6c4fa9c8c8d1d91a8df6b62, 0x7aacf872a63ad4ff231a7b85a381a9, 0x006f49], + }, + BigNum { + limbs: [0xdf8723cf6834a9b16c92903c30681c, 0x7af602a41b0e4a7055b0fa4b32af44, 0x002a33], + }, + BigNum { + limbs: [0xde1cdf309627554e936d6ec3cf97e5, 0x2c5d26f96239e8c982570f56a5560e, 0x0049ba], + }, + BigNum { + limbs: [0xa005008f5fa2fe6cd888c85ca05ae9, 0xeeb1a28cdf1a91ecc533285f28b4ad, 0x001b61], + }, + BigNum { + limbs: [0x1d9f02709eb90093277736a35fa518, 0xb8a187109e2da14d12d4e142af50a6, 0x00588b], + }, + BigNum { + limbs: [0xec083a342b6152dc6c5431b7a01194, 0x444efe927bc8a141881064cd54d304, 0x002aaf], + }, + BigNum { + limbs: [0xd19bc8cbd2faac2393abcd485fee6d, 0x63042b0b017f91f84ff7a4d483324e, 0x00493e], + }, + BigNum { + limbs: [0xbf1d8539e5c50b799bd1773c3aadf2, 0xd6eec90f1e192c0cc5b558b3509c77, 0x00455e], + }, + BigNum { + limbs: [0xfe867dc61896f386642e87c3c5520f, 0xd064608e5f2f072d1252b0ee8768db, 0x002e8e], + }, + BigNum { + limbs: [0x4148b024d3ffa61cfd232fb7ac2d01, 0x8edaee2eeaed1ac42c62e56cb955a3, 0x0058ad], + }, + BigNum { + limbs: [0x7c5b52db2a5c58e302dccf4853d300, 0x18783b6e925b1875aba524351eafb0, 0x001b40], + }, + BigNum { + limbs: [0x8bf3cd9093c0a2b6e7d38c824464d3, 0x5f24ab69299e82782d7daff3118923, 0x00223a], + }, + BigNum { + limbs: [0x31b0356f6a9b5c49182c727dbb9b2e, 0x482e7e3453a9b0c1aa8a59aec67c30, 0x0051b3], + }, + BigNum { + limbs: [0xd0cb7ff2325177578545b4e64baae6, 0x86f9eb22d5720a288c1ac768fd31db, 0x00344b], + }, + BigNum { + limbs: [0xecd8830dcc0a87a87aba4a19b4551b, 0x20593e7aa7d629114bed4238dad377, 0x003fa2], + }, + BigNum { + limbs: [0x49071f297def3c20da606ff4a3ba2b, 0x096ad9987ad9cbf93d062b4fda502a, 0x0072bf], + }, + BigNum { + limbs: [0x749ce3d6806cc2df259f8f0b5c45d6, 0x9de85005026e67409b01de51fdb529, 0x00012e], + }, + BigNum { + limbs: [0x9d3446b5219ed92c78c12b5913ffa2, 0x02082ceecbc03f01ab9eac85850baf, 0x0049e6], + }, + BigNum { + limbs: [0x206fbc4adcbd25d3873ed3a6ec005f, 0xa54afcaeb187f4382c695d1c52f9a4, 0x002a07], + }, + BigNum { + limbs: [0xb7b50e5693aeb64287ce1144fcf019, 0x4f3eb4931089c5be3aa28cfc810120, 0x00352c], + }, + BigNum { + limbs: [0x05eef4a96aad48bd7831edbb030fe8, 0x5814750a6cbe6d7b9d657ca5570433, 0x003ec1], + }, + BigNum { + limbs: [0x30d9ac186fc5451f5753e3ccc4922e, 0x33f624c17d074b024c21cfa2302540, 0x0041ae], + }, + BigNum { + limbs: [0x8cca56e78e96b9e0a8ac1b333b6dd3, 0x735d04dc0040e8378be639ffa7e013, 0x00323f], + }, + BigNum { + limbs: [0x4de56daf67ef102318f1f6844036ac, 0x01b7108f6c67604297e1df5b7fe9fe, 0x007097], + }, + BigNum { + limbs: [0x6fbe9550966ceedce70e087bbfc955, 0xa59c190e10e0d2f740262a46581b55, 0x000356], + }, + BigNum { + limbs: [0xdc15bbb51c14b8bde69ad1be866e28, 0x4d702f536f1aef56d22dab86198a12, 0x005741], + }, + BigNum { + limbs: [0xe18e474ae247464219652d417991d9, 0x59e2fa4a0e2d43e305da5e1bbe7b40, 0x001cac], + }, + BigNum { + limbs: [0x148b46fc8a9536b994f7e88da69099, 0xc54dedb0dd5c00f2b6fdeb2434990d, 0x0054a9], + }, + BigNum { + limbs: [0xa918bc0373c6c8466b081672596f68, 0xe2053bec9fec3247210a1e7da36c46, 0x001f43], + }, + BigNum { + limbs: [0xe0344c49d79b66f214cc49a9ca287b, 0x7bd852e497f37956c16f3a78ae28ee, 0x0051ec], + }, + BigNum { + limbs: [0xdd6fb6b626c0980deb33b55635d786, 0x2b7ad6b8e554b9e31698cf2929dc64, 0x002201], + }, + BigNum { + limbs: [0x29e9208281d2988e92a08175236817, 0x8c4fc8876304b7701b97622a206b2e, 0x000f79], + }, + BigNum { + limbs: [0x93bae27d7c8966716d5f7d8adc97ea, 0x1b0361161a437bc9bc70a777b79a25, 0x006474], + }, + BigNum { + limbs: [0x2d67a18dc838277b51fa789fe811c1, 0x6d59e26f95d8df3b80de686838f4c0, 0x00420a], + }, + BigNum { + limbs: [0x903c61723623d784ae05866017ee40, 0x39f9472de76f53fe5729a1399f1093, 0x0031e3], + }, + BigNum { + limbs: [0x98ce89ad3c4462f52172b7909c822f, 0x0f6f20aebd433bab579958add5d563, 0x000238], + }, + BigNum { + limbs: [0x24d57952c2179c0ade8d476f637dd2, 0x97e408eec004f78e806eb0f4022ff0, 0x0071b5], + }, + BigNum { + limbs: [0xad8bd407c8c41c02e2f94cd781d69e, 0xec60d8a45e9d074f9aa0ec1140c136, 0x0017c1], + }, + BigNum { + limbs: [0x10182ef83597e2fd1d06b2287e2963, 0xbaf250f91eab2bea3d671d9097441d, 0x005c2b], + }, + BigNum { + limbs: [0x0d246202280193fea7c33496a345f2, 0xbad21bb26cbe0156dd6f2d56b9c192, 0x0059a2], + }, + BigNum { + limbs: [0xb07fa0fdd65a6b01583cca695cba0f, 0xec810deb108a31e2fa98dc4b1e43c1, 0x001a4a], + }, + BigNum { + limbs: [0xb9bbd9b0a3590b2ee4c0317b41459b, 0x8c1a3548e372b5c82a603c67a3a3ba, 0x0016fd], + }, + BigNum { + limbs: [0x03e8294f5b02f3d11b3fcd84beba66, 0x1b38f45499d57d71ada7cd3a346199, 0x005cf0], + }, + BigNum { + limbs: [0xc58a0b042cd4dc35d1ae71abd0a54d, 0x72419d80770cd6be007959cfa1c61b, 0x001793], + }, + BigNum { + limbs: [0xf819f7fbd18722ca2e518d542f5ab4, 0x35118c1d063b5c7bd78eafd2363f37, 0x005c5a], + }, + BigNum { + limbs: [0x712f65dddcac5339a8f2d056a4027d, 0x8447f4db2f2599713674356834f476, 0x0059ac], + }, + BigNum { + limbs: [0x4c749d2221afabc6570d2ea95bfd84, 0x230b34c24e2299c8a193d439a310dd, 0x001a41], + }, + BigNum { + limbs: [0x620b99aa201e9b7554cb01f596606f, 0x550e339064cc77fc010ff1bb87e048, 0x0000de], + }, + BigNum { + limbs: [0x5b986955de3d638aab34fd0a699f92, 0x5244f60d187bbb3dd6f817e650250b, 0x00730f], + }, + BigNum { + limbs: [0x7feef21aa1455b1985e5010d1e28f9, 0xf7d7a6997c064a244131970ee26e59, 0x005cf3], + }, + BigNum { + limbs: [0x3db510e55d16a3e67a1afdf2e1d708, 0xaf7b83040141e91596d67292f596fa, 0x0016f9], + }, + BigNum { + limbs: [0xef0eef02e9618bbf1b369c0a8445b6, 0x330063d404e1d74a7534d0a5cfbcaf, 0x006be4], + }, + BigNum { + limbs: [0xce9513fd14fa7340e4c962f57bba4b, 0x7452c5c978665bef62d338fc0848a3, 0x000809], + }, + BigNum { + limbs: [0x42f05b2dd0efa96d4b3d6d88b9ec49, 0x2dcdcaf325db8a076a0804aaf03d6b, 0x005a7e], + }, + BigNum { + limbs: [0x7ab3a7d22d6c5592b4c291774613b8, 0x79855eaa576ca9326e0004f6e7c7e8, 0x00196f], + }, + BigNum { + limbs: [0x278442906cdcb997c7058ee0f32403, 0x15d0bc7ed9cb8c826031662df9e760, 0x006c7a], + }, + BigNum { + limbs: [0x961fc06f917f456838fa701f0cdbfe, 0x91826d1ea37ca6b777d6a373de1df3, 0x000773], + }, + BigNum { + limbs: [0x81b9b0030fff9b9dc2b95bda888cc3, 0x66c29c0c4d935f8efca0709e9fdc07, 0x004f0a], + }, + BigNum { + limbs: [0x3bea52fcee5c63623d46a32577733e, 0x40908d912fb4d3aadb67990338294c, 0x0024e3], + }, + BigNum { + limbs: [0xb13e62a6404a74daf6c1cc2b79b805, 0x1db2c4fc40430e536c4bf821b25948, 0x002e8d], + }, + BigNum { + limbs: [0x0c65a059be118a25093e32d48647fc, 0x89a064a13d0524e66bbc118025ac0b, 0x004560], + }, + BigNum { + limbs: [0x4ad0183cb4d23e3b9f40dc39226ef2, 0xbb8a5f91996cc7e207d405cec60f24, 0x004c63], + }, + BigNum { + limbs: [0x72d3eac34989c0c460bf22c6dd910f, 0xebc8ca0be3db6b57d03403d311f62f, 0x002789], + }, + BigNum { + limbs: [0x1d4b203d557fd3d0bd794485b1cd59, 0xff0465d7945d6b0fd286dc1624d8de, 0x001a8d], + }, + BigNum { + limbs: [0xa058e2c2a8dc2b2f4286ba7a4e32a8, 0xa84ec3c5e8eac82a05812d8bb32c75, 0x00595f], + }, + BigNum { + limbs: [0x7f4e7f70ec86ac05e2e6cb0db28404, 0x71b2bcbcebb0e07032ac4dd9f48655, 0x00222d], + }, + BigNum { + limbs: [0x3e55838f11d552fa1d1933f24d7bfd, 0x35a06ce0919752c9a55bbbc7e37efe, 0x0051c0], + }, + BigNum { + limbs: [0x31d6a3b689584dd2f0f5e5e994ff3a, 0x98eed454988b6dee792e47fe9ebe96, 0x003268], + }, + BigNum { + limbs: [0x8bcd5f497503b12d0f0a19166b00c7, 0x0e645548e4bcc54b5ed9c1a33946bd, 0x004185], + }, + BigNum { + limbs: [0xd1a69ef390c21d4a865bf20d7fe4ff, 0x7ca7fee6f701be6bd1e602f93f1e7a, 0x000a60], + }, + BigNum { + limbs: [0xebfd640c6d99e1b579a40cf2801b02, 0x2aab2ab6864674ce062206a898e6d8, 0x00698d], + }, + BigNum { + limbs: [0x62a8e248a5873997ef4c4862dac48b, 0x5edd0c55c21a756db007d73ddfd82b, 0x000083], + }, + BigNum { + limbs: [0x5afb20b758d4c56810b3b69d253b76, 0x48761d47bb2dbdcc28003263f82d28, 0x00736a], + }, + BigNum { + limbs: [0xfbf6b6977f335ccc7ee15d01f39a0d, 0x40eb8f3ff496463dea24c6c2f0113d, 0x005839], + }, + BigNum { + limbs: [0xc1ad4c687f28a233811ea1fe0c65f4, 0x66679a5d88b1ecfbede342dee7f415, 0x001bb4], + }, + BigNum { + limbs: [0xa998918baa4ee01f8dc38c14a70a7d, 0x9a0c8d46e5c1431b68c23ab353eb5a, 0x00529a], + }, + BigNum { + limbs: [0x140b7174540d1ee0723c72eb58f584, 0x0d469c569786f01e6f45ceee8419f9, 0x002153], + }, + BigNum { + limbs: [0xf5f8fb1cfd35bf416d25664132e681, 0xacd15cff4a085d468a777ba29478a8, 0x0063a1], + }, + BigNum { + limbs: [0xc7ab07e301263fbe92da98becd1980, 0xfa81cc9e333fd5f34d908dff438caa, 0x00104b], + }, + BigNum { + limbs: [0xa148a069f07e83085c098a064e640d, 0x1d433b70d20df332844e948cea8ef0, 0x0059bd], + }, + BigNum { + limbs: [0x1c5b62960ddd7bf7a3f674f9b19bf4, 0x8a0fee2cab3a400753b97514ed7663, 0x001a30], + }, + BigNum { + limbs: [0x323eed0b7541f7626cf66312dc75d4, 0xf0cfc53f02ad2cff5e64aca06bfdc0, 0x000521], + }, + BigNum { + limbs: [0x8b6515f4891a079d93099bed238a2d, 0xb683645e7a9b063a79a35d016c0793, 0x006ecb], + }, + BigNum { + limbs: [0x6d33f723b2c096edd01d1e9965d339, 0xe5c62447e6c5b903259bd01c07a223, 0x007091], + }, + BigNum { + limbs: [0x50700bdc4b9b68122fe2e0669a2cc8, 0xc18d055596827a36b26c3985d06330, 0x00035b], + }, + BigNum { + limbs: [0xced4862f3112b54a33b4ca4fa500d5, 0xe64e6e329643ccb9d7408ba4ad4f77, 0x0046d5], + }, + BigNum { + limbs: [0xeecf7cd0cd4949b5cc4b34b05aff2c, 0xc104bb6ae704668000c77dfd2ab5db, 0x002d17], + }, + BigNum { + limbs: [0xa7edc3eeb1ea0f3cd3d2e1c03a844c, 0xc7495e0793b32f9ded387ed31cf4f1, 0x001257], + }, + BigNum { + limbs: [0x15b63f114c71efc32c2d1d3fc57bb5, 0xe009cb95e995039beacf8acebb1062, 0x006195], + }, + BigNum { + limbs: [0xca9f6f63c7ee570593110cdd147867, 0x0c5a1acc4e039943b8c1f1c32bb124, 0x006d19], + }, + BigNum { + limbs: [0xf304939c366da7fa6ceef222eb879a, 0x9af90ed12f4499f61f4617deac542e, 0x0006d4], + }, + BigNum { + limbs: [0xa3138bbc3a874b460e884790b8c345, 0x8a70e4c6426c457a1f0b6f25f22f8b, 0x0049a9], + }, + BigNum { + limbs: [0x1a907743c3d4b3b9f177b76f473cbc, 0x1ce244d73adbedbfb8fc9a7be5d5c8, 0x002a44], + }, + BigNum { + limbs: [0x1169992c0dfff849ad9eda3ab2596b, 0xed13f5196adafec2c1e6f695673957, 0x006c32], + }, + BigNum { + limbs: [0xac3a69d3f05c06b6526124c54da696, 0xba3f3484126d34771621130c70cbfc, 0x0007ba], + }, + BigNum { + limbs: [0x55a2ee5f896a4409af8f18266456c5, 0xac223b8b00a756b079736230d8d1e0, 0x005356], + }, + BigNum { + limbs: [0x680114a074f1baf65070e6d99ba93c, 0xfb30ee127ca0dc895e94a770ff3373, 0x002096], + }, + BigNum { + limbs: [0x2b4bfeb55dfba683a202b9605bdc7f, 0xcd834da0dfe13d24b851b6e0e2940a, 0x005b37], + }, + BigNum { + limbs: [0x9258044aa060587c5dfd459fa42382, 0xd9cfdbfc9d66f6151fb652c0f57149, 0x0018b5], + }, + BigNum { + limbs: [0x95ffdf3831c932ebf8ff080a52e66f, 0x9145a9d644ccae7ba896e4494d8bb6, 0x00364c], + }, + BigNum { + limbs: [0x27a423c7cc92cc140700f6f5ad1992, 0x160d7fc7387b84be2f7125588a799d, 0x003da1], + }, + BigNum { + limbs: [0x548acb6d790da51557c2f3467bd1ca, 0x515b1711e6667471e199a39130b996, 0x0006b9], + }, + BigNum { + limbs: [0x69193792854e59eaa83d0bb9842e37, 0x55f8128b96e1bec7f66e6610a74bbd, 0x006d34], + }, + BigNum { + limbs: [0x0352b62f3f203eb38d064ea8444127, 0xfa03ad3c8255023718eed874887b51, 0x005aee], + }, + BigNum { + limbs: [0xba514cd0bf3bc04c72f9b057bbbeda, 0xad4f7c60faf33102bf19312d4f8a02, 0x0018fe], + }, + BigNum { + limbs: [0x6d63f8b28503442b436d7a469e3045, 0xd3a13151f5da0c095cf1e33152987a, 0x004c75], + }, + BigNum { + limbs: [0x50400a4d7958bad4bc9284b961cfbc, 0xd3b1f84b876e27307b162670856cd9, 0x002777], + }, + BigNum { + limbs: [0x62f6b763e08ab37846d9e1c754b5dc, 0x4af774526aa008078f5f1149b3a08b, 0x00327c], + }, + BigNum { + limbs: [0x5aad4b9c1dd14b87b9261d38ab4a25, 0x5c5bb54b12a82b3248a8f8582464c8, 0x004171], + }, + BigNum { + limbs: [0xe5fdb63351c0ec536a984065c92adf, 0xe30b5b7bc5bd438d2dbf46dd5590f9, 0x000898], + }, + BigNum { + limbs: [0xd7a64cccac9b12ac9567be9a36d522, 0xc447ce21b78aefacaa48c2c4827459, 0x006b54], + }, + BigNum { + limbs: [0x2db53007db7808cb26d9489265bf28, 0x370156cdae5227f2d34b0ee0bab27b, 0x006103], + }, + BigNum { + limbs: [0x8feed2f822e3f634d926b66d9a40d9, 0x7051d2cfcef60b4704bcfac11d52d8, 0x0012ea], + }, + BigNum { + limbs: [0xe92a5ff656e571e252f6a3681e0665, 0x48279a4d32928213bbd737bf0e62fa, 0x0067b7], + }, + BigNum { + limbs: [0xd479a309a7768d1dad095b97e1f99c, 0x5f2b8f504ab5b1261c30d1e2c9a258, 0x000c36], + }, + BigNum { + limbs: [0x4a3619fc303084522303685af9251f, 0xec39741c1ee0841ec896cf8d6b71cc, 0x003f80], + }, + BigNum { + limbs: [0x736de903ce2b7aaddcfc96a506dae2, 0xbb19b5815e67af1b0f713a146c9387, 0x00346c], + }, + BigNum { + limbs: [0x09b29d2aaa46f58fde839c9b10f95a, 0xf481668a98cc916653ef8ee10c3160, 0x000b47], + }, + BigNum { + limbs: [0xb3f165d554150970217c6264ef06a7, 0xb2d1c312e47ba1d384187ac0cbd3f3, 0x0068a5], + }, + BigNum { + limbs: [0x8d4f7d4f608b27831af13e1a684e43, 0xeabd406c3a9d1aaa8bc17630875b9a, 0x002669], + }, + BigNum { + limbs: [0x305485b09dd0d77ce50ec0e597b1be, 0xbc95e93142ab188f4c46937150a9b9, 0x004d83], + }, + BigNum { + limbs: [0x5f59426e561ac3a0d046361160c87d, 0xf67c9a365f924184a3278cbac76cf6, 0x001e28], + }, + BigNum { + limbs: [0x5e4ac091a8413b5f2fb9c8ee9f3784, 0xb0d68f671db5f1b534e07ce710985d, 0x0055c4], + }, + BigNum { + limbs: [0xb504c88bc20bd7cd2b2f4c41dff3cb, 0x1dab874c3d6a7726f871b0da235e08, 0x00698f], + }, + BigNum { + limbs: [0x089f3a743c502732d4d0b2be200c36, 0x89a7a2513fddbc12df9658c7b4a74b, 0x000a5e], + }, + BigNum { + limbs: [0x5f34977fa341337055b514a4510f6a, 0x373ad66cee9842076ef74d0b719d55, 0x005dd7], + }, + BigNum { + limbs: [0x5e6f6b805b1acb8faa4aea5baef097, 0x701853308eaff1326910bc966667fe, 0x001616], + }, + BigNum { + limbs: [0x6c461ae56f072df424341daddcab5d, 0x0d96bee11ebb5204f44088385855a8, 0x004aa1], + }, + BigNum { + limbs: [0x515de81a8f54d10bdbcbe1522354a4, 0x99bc6abc5e8ce134e3c781697fafab, 0x00294c], + }, + BigNum { + limbs: [0x0e8aaa2c0adab646add4de51661716, 0x17a81ec992dbd332c8edcb31b9c532, 0x006f8c], + }, + BigNum { + limbs: [0xaf1958d3f38148b9522b20ae99e8eb, 0x8fab0ad3ea6c60070f1a3e701e4021, 0x000461], + }, + BigNum { + limbs: [0x966df282c99da1552407971d6a01b3, 0xc4a1e86297dd1f72eaf592b1a5e37c, 0x001064], + }, + BigNum { + limbs: [0x2736107d34be5daadbf867e295fe4e, 0xe2b1413ae56b13c6ed1276f03221d7, 0x006388], + }, + BigNum { + limbs: [0xdf55fe0e814040452ccd3a84afddff, 0xc0bccf122cf17f89e05099b9346eb4, 0x004fc3], + }, + BigNum { + limbs: [0xde4e04f17d1bbebad332c47b502202, 0xe6965a8b5056b3aff7b76fe8a3969e, 0x002429], + }, + BigNum { + limbs: [0x9025299f9d89f8b0a40e557f4b46ae, 0xb7cf8d35960d07e1837d2ec951dce4, 0x000c0e], + }, + BigNum { + limbs: [0x2d7ed96060d2064f5bf1a980b4b953, 0xef839c67e73b2b58548adad886286f, 0x0067de], + }, + BigNum { + limbs: [0x627ca6b51d001a6f9d0064fac7137d, 0xba9652521c23efdb2f0828054b7fb3, 0x006f56], + }, + BigNum { + limbs: [0x5b275c4ae15be49062ff9a0538ec84, 0xecbcd74b6124435ea8ffe19c8c85a0, 0x000496], + }, + BigNum { + limbs: [0x57c9facced7b915f66134727f54889, 0xc12d8a6f82133cf6cd1d9efc7c146e, 0x006c0e], + }, + BigNum { + limbs: [0x65da083310e06da099ecb7d80ab778, 0xe6259f2dfb34f6430aea6aa55bf0e5, 0x0007de], + }, + BigNum { + limbs: [0x339834601eaf9df9b5ad7e3464f5a5, 0x51053381165e056f4fd9e2e5174451, 0x00510f], + }, + BigNum { + limbs: [0x8a0bce9fdfac61064a5280cb9b0a5c, 0x564df61c66ea2dca882e26bcc0c102, 0x0022de], + }, + BigNum { + limbs: [0xea1b243740a635ed1c6473b3e31cf7, 0x6e5ee340acc503a56cc8813aa331a6, 0x0022c3], + }, + BigNum { + limbs: [0xd388dec8bdb5c912e39b8b4c1ce30a, 0x38f4465cd0832f946b3f886734d3ac, 0x00512a], + }, + BigNum { + limbs: [0xa5a037f31901964ec74d66ce5ce51d, 0xd1a16317e2eef74564930e6096c055, 0x006852], + }, + BigNum { + limbs: [0x1803cb0ce55a68b138b29831a31ae4, 0xd5b1c6859a593bf47374fb414144fe, 0x000b9a], + }, + BigNum { + limbs: [0x5b9ca898999be0e41960cc8f7cf554, 0x10c103e349beeebdfa4d46a48617eb, 0x001be6], + }, + BigNum { + limbs: [0x62075a6764c01e1be69f3270830aad, 0x969225ba3389447bddbac2fd51ed68, 0x005807], + }, + BigNum { + limbs: [0xc9e646f0bc30f46b1ac0499b422b78, 0x36685571ebe59efaac6d4efab2f7a2, 0x00178c], + }, + BigNum { + limbs: [0xf3bdbc0f422b0a94e53fb564bdd489, 0x70ead42b9162943f2b9abaa7250db0, 0x005c61], + }, + BigNum { + limbs: [0x468edeb6787ad5963a9c566e8bd6b5, 0x92e90312698626747ffd80262ac35f, 0x003dfd], + }, + BigNum { + limbs: [0x7715244985e12969c563a89174294c, 0x146a268b13c20cc5580a897bad41f4, 0x0035f0], + }, + BigNum { + limbs: [0xa1f0d04b158d7aa271966e405dcffd, 0xeac8ef44b61d5e3ddfac65da256f88, 0x00378f], + }, + BigNum { + limbs: [0x1bb332b4e8ce845d8e6990bfa23004, 0xbc8a3a58c72ad4fbf85ba3c7b295cb, 0x003c5d], + }, + BigNum { + limbs: [0x719dedc145d3ee4580dba9fc46a574, 0x8c3a3826d76773a54de6e95a9de480, 0x00102b], + }, + BigNum { + limbs: [0x4c06153eb88810ba7f245503b95a8d, 0x1b18f176a5e0bf948a2120473a20d3, 0x0063c2], + }, + BigNum { + limbs: [0x6d85a7faf7c62885336974811c697a, 0xbda65519ec38a6266415c4d6ced228, 0x003b35], + }, + BigNum { + limbs: [0x501e5b050695d67acc968a7ee39687, 0xe9acd483910f8d1373f244cb09332b, 0x0038b7], + }, + BigNum { + limbs: [0x510ebfb4543a3efb350dbef02a116e, 0xa56e80f82b2df675522e37ad4eca1c, 0x001907], + }, + BigNum { + limbs: [0x6c95434baa21c004caf2400fd5ee93, 0x01e4a8a5521a3cc485d9d1f4893b37, 0x005ae6], + }, + BigNum { + limbs: [0x1102eb66f6fce55e501a6aa6138595, 0x8e203415456536060cc57d5ad557ea, 0x006d3d], + }, + BigNum { + limbs: [0xaca11799075f19a1afe59459ec7a6c, 0x1932f58837e2fd33cb428c4702ad69, 0x0006b0], + }, + BigNum { + limbs: [0x7dea6029017fdc9dac7b409d585d19, 0xc0e6aaf7c2d906dbeaab1ad525575d, 0x00634f], + }, + BigNum { + limbs: [0x3fb9a2d6fcdc22625384be62a7a2e8, 0xe66c7ea5ba6f2c5ded5ceeccb2adf6, 0x00109d], + }, + BigNum { + limbs: [0x3764a3ff5f912e67cf9ca3e9f5b1b1, 0xbee4fcf836297cc088f970ebac3ad3, 0x005f20], + }, + BigNum { + limbs: [0x863f5f009ecad09830635b160a4e50, 0xe86e2ca5471eb6794f0e98b62bca80, 0x0014cc], + }, + BigNum { + limbs: [0x738f0e49608f7fec3894fdbbc5e597, 0x6831b2c665dce522dc0df640392d0a, 0x002e91], + }, + BigNum { + limbs: [0x4a14f4b69dcc7f13c76b01443a1a6a, 0x3f2176d7176b4e16fbfa13619ed849, 0x00455c], + }, + BigNum { + limbs: [0xb1cebef9a7dbaf187a081bc020c9e9, 0x49dce1168ed72eb22d78a01a149188, 0x0048c6], + }, + BigNum { + limbs: [0x0bd5440656804fe785f7e33fdf3618, 0x5d764886ee710487aa8f6987c373cb, 0x002b27], + }, + BigNum { + limbs: [0x786c05f26d2d14072fff623d593acc, 0x4567920d7fbdd5ad1e34af8ba8297e, 0x004b0f], + }, + BigNum { + limbs: [0x4537fd0d912eeaf8d0009cc2a6c535, 0x61eb978ffd8a5d8cb9d35a162fdbd5, 0x0028de], + }, + BigNum { + limbs: [0xa08916e4882ed38e69d125b2613b98, 0x2412402056b9c587252e3f738f0291, 0x00154d], + }, + BigNum { + limbs: [0x1d1aec1b762d2b71962ed94d9ec469, 0x8340e97d268e6db2b2d9ca2e4902c2, 0x005ea0], + }, + BigNum { + limbs: [0xa44a292b2e5b2982758592725b5677, 0x3df3d2c48682ef7088ae62b6a01241, 0x004c5f], + }, + BigNum { + limbs: [0x1959d9d4d000d57d8a7a6c8da4a98a, 0x695f56d8f6c543c94f59a6eb37f312, 0x00278e], + }, + BigNum { + limbs: [0x3dc049317117871848f2442fea2cc8, 0x6e34562bbc52e204d5dce884424849, 0x002cb0], + }, + BigNum { + limbs: [0x7fe3b9ce8d4477e7b70dbad015d339, 0x391ed371c0f55135022b211d95bd0a, 0x00473d], + }, + BigNum { + limbs: [0xd2201ed10a653f0612b0fb6cc1107c, 0xcba74f737371896fb6a2fbba8ee922, 0x006c1b], + }, + BigNum { + limbs: [0xeb83e42ef3f6bff9ed4f03933eef85, 0xdbabda2a09d6a9ca21650de7491c30, 0x0007d1], + }, + BigNum { + limbs: [0xdf8a6e25303f2fd0c13b83274f45b0, 0xbb2eb5bc528c11781b3e716a0f505e, 0x002bdd], + }, + BigNum { + limbs: [0xde1994dace1ccf2f3ec47bd8b0ba51, 0xec2473e12abc21c1bcc99837c8b4f4, 0x00480f], + }, + BigNum { + limbs: [0xd22b0908293b435d970e0b0666e0d8, 0x0683301968fdb44d3b688f8492460a, 0x005b03], + }, + BigNum { + limbs: [0xeb78f9f7d520bba268f1f3f9991f29, 0xa0cff984144a7eec9c9f7a1d45bf48, 0x0018ea], + }, + BigNum { + limbs: [0xc5922e39ae0bf92ae6e2c121bfc3c3, 0x9e36de006c054af1a2d79a24d27ae1, 0x007000], + }, + BigNum { + limbs: [0xf811d4c6505005d5191d3dde403c3e, 0x091c4b9d1142e84835306f7d058a71, 0x0003ed], + }, + BigNum { + limbs: [0xe63a729649cca628f1221a8298a060, 0xe2fcb84cd789855a08d1b96d6c46b4, 0x001272], + }, + BigNum { + limbs: [0xd7699069b48f58d70edde47d675fa1, 0xc4567150a5beaddfcf3650346bbe9e, 0x00617a], + }, + BigNum { + limbs: [0x5fe456e0de774541fed1c1f077470a, 0xef9cfd0d5b9c3c011284ce2c0a5ae6, 0x0058ea], + }, + BigNum { + limbs: [0x5dbfac1f1fe4b9be012e3d0f88b8f7, 0xb7b62c9021abf738c5833b75cdaa6d, 0x001b02], + }, + BigNum { + limbs: [0x4e7bab3c93dde164936d794ecac754, 0x8efcbc9ffba397e292677efe6e684b, 0x00192d], + }, + BigNum { + limbs: [0x6f2857c36a7e1d9b6c9285b13538ad, 0x18566cfd81a49b5745a08aa3699d08, 0x005ac0], + }, + BigNum { + limbs: [0xf39aabdcbb7d0745a8d91e955983d1, 0xed933c287503e05891c9ff9c3987d4, 0x00075d], + }, + BigNum { + limbs: [0xca09572342def7ba5726e06aa67c30, 0xb9bfed75084452e1463e0a059e7d7e, 0x006c8f], + }, + BigNum { + limbs: [0x04d8e25880e9cee1d977e545af710b, 0x5fb6453833c4c973f8fca82606c27d, 0x00527d], + }, + BigNum { + limbs: [0xb8cb20a77d72301e268819ba508ef6, 0x479ce465498369c5df0b617bd142d6, 0x002170], + }, + BigNum { + limbs: [0x9741e455322d312856121a533306a0, 0xd41c2b82dcc6b2dd9a95731e9ccfab, 0x005d63], + }, + BigNum { + limbs: [0x26621eaacc2ecdd7a9ede4acccf961, 0xd336fe1aa081805c3d7296833b35a8, 0x001689], + }, + BigNum { + limbs: [0x9d89aade182224f825d2b60a32f87a, 0x4aec85b8f956e027a83558a1fa00b9, 0x001df4], + }, + BigNum { + limbs: [0x201a5821e639da07da2d48f5cd0787, 0x5c66a3e483f153122fd2b0ffde049a, 0x0055f9], + }, + BigNum { + limbs: [0x2d7dae9287cd043df47cf236da17e9, 0xf534d4599079c579b994cbef0c2ce9, 0x001306], + }, + BigNum { + limbs: [0x9026546d768efac20b830cc925e818, 0xb21e5543ecce6dc01e733db2cbd86a, 0x0060e6], + }, + BigNum { + limbs: [0xcbb1bd356f80cdcf2c53214fca9316, 0xe397c114f8f36fa873d6002f921fda, 0x003495], + }, + BigNum { + limbs: [0xf1f245ca8edb3130d3acddb0356ceb, 0xc3bb68888454c3916432097245e578, 0x003f57], + }, + BigNum { + limbs: [0x62629752f7b4ac743e6cd3f2d8b5e4, 0xb727404262a9c24956b7927d30eacb, 0x001874], + }, + BigNum { + limbs: [0x5b416bad06a7528bc1932b0d274a1d, 0xf02be95b1a9e70f081507724a71a88, 0x005b78], + }, + BigNum { + limbs: [0x0cfc2a8e76963e1cfb5b8201d3c611, 0xdbab8b1811260a0955d20478e94671, 0x0038a2], + }, + BigNum { + limbs: [0xb0a7d87187c5c0e304a47cfe2c39f0, 0xcba79e856c22293082360528eebee2, 0x003b4a], + }, + BigNum { + limbs: [0x501d116ae74916c40d56452b59c640, 0x823696c820865acd8b4a64b679a2e3, 0x0032e8], + }, + BigNum { + limbs: [0x6d86f1951712e83bf2a9b9d4a639c1, 0x251c92d55cc1d86c4cbda4eb5e6270, 0x004105], + }, + BigNum { + limbs: [0x9d714edf2c5d73e9fd3487793e0a1e, 0x777daecfbc8bf776f0b322161a54eb, 0x000c02], + }, + BigNum { + limbs: [0x2032b420d1fe8b1602cb7786c1f5e3, 0x2fd57acdc0bc3bc2e754e78bbdb068, 0x0067eb], + }, + BigNum { + limbs: [0xa019a046396b882f67888351b3aed0, 0x4490a807026fab8427037d4aaef513, 0x0000df], + }, + BigNum { + limbs: [0x1d8a62b9c4f076d098777bae4c5131, 0x62c281967ad887b5b1048c57291040, 0x00730e], + }, + BigNum { + limbs: [0xb7da58c5251abce7c952e4bd7af7d4, 0x42944aa32bee278a8c2e3d1fd8e115, 0x005e85], + }, + BigNum { + limbs: [0x05c9aa3ad941421836ad1a4285082d, 0x64bedefa515a0baf4bd9cc81ff243e, 0x001568], + }, + BigNum { + limbs: [0xb169206b7f3154077d390dd7d05b42, 0x0a68359a3f51e5084aaf8797a96f5e, 0x004197], + }, + BigNum { + limbs: [0x0c3ae2947f2aaaf882c6f1282fa4bf, 0x9ceaf4033df64e318d58820a2e95f5, 0x003256], + }, + BigNum { + limbs: [0x3c05a40dd7360af2be473f9f510696, 0x85d44e308ee97c96515b1b38427a7c, 0x004f02], + }, + BigNum { + limbs: [0x819e5ef22725f40d41b8bf60aef96b, 0x217edb6cee5eb6a386acee69958ad7, 0x0024eb], + }, + BigNum { + limbs: [0xc01d3617a563363c520c2b1a297a42, 0x1b34b95dfdc7a5455416cfcec9c93f, 0x0057d1], + }, + BigNum { + limbs: [0xfd86cce858f8c8c3adf3d3e5d685bf, 0x8c1e703f7f808df483f139d30e3c13, 0x001c1c], + }, + BigNum { + limbs: [0xd04289be4d5845428c9fe880b696f2, 0xefc99d37fe721eb3867a7d42417bfd, 0x003337], + }, + BigNum { + limbs: [0xed617941b103b9bd7360167f49690f, 0xb7898c657ed61486518d8c5f968955, 0x0040b5], + }, + BigNum { + limbs: [0x471747bfef212bcdcd38d6f117f52f, 0x873a1f951adfb6548e4a26c46cf637, 0x00260e], + }, + BigNum { + limbs: [0x768cbb400f3ad33232c7280ee80ad2, 0x20190a0862687ce549bde2dd6b0f1c, 0x004ddf], + }, + BigNum { + limbs: [0x1bd60176f653694582bcb64c16195c, 0xf7a2a21cae9a8382c4cf78190afc04, 0x0045c6], + }, + BigNum { + limbs: [0xa1ce0189080895ba7d4348b3e9e6a5, 0xafb08780ceadafb713389188cd094f, 0x002e26], + }, + BigNum { + limbs: [0x12d6dbc4da70eb9281ca5182004249, 0x6ee71fba800af7b5bc01b47b0c0cc1, 0x00524f], + }, + BigNum { + limbs: [0xaacd273b23eb136d7e35ad7dffbdb8, 0x386c09e2fd3d3b841c065526cbf892, 0x00219e], + }, + BigNum { + limbs: [0xdd88120258390fcf4a24368337be6a, 0xbc58cb5eb5c44cc9ff4bf19abce5bb, 0x0030e1], + }, + BigNum { + limbs: [0xe01bf0fda622ef30b5dbc87cc84197, 0xeafa5e3ec783e66fd8bc18071b1f97, 0x00430b], + }, + BigNum { + limbs: [0xa959dcb76fe5390c0871ffc19b100f, 0xce8ba2c48aa4894506e8611524fe2a, 0x002f73], + }, + BigNum { + limbs: [0x144a26488e76c5f3f78dff3e64eff2, 0xd8c786d8f2a3a9f4d11fa88cb30729, 0x004479], + }, + BigNum { + limbs: [0x73882ea6ce7aa9e15b2a94a295c9ad, 0x7fb3c3230d556d15603c30cffb92d1, 0x003d74], + }, + BigNum { + limbs: [0x4a1bd4592fe1551ea4d56a5d6a3654, 0x279f667a6ff2c62477cbd8d1dc7282, 0x003679], + }, + BigNum { + limbs: [0xf7ba1663b31d0376fd4001b4f824c8, 0x46853ef9fa574485c4aa168e870ab3, 0x006fbe], + }, + BigNum { + limbs: [0xc5e9ec9c4b3efb8902bffd4b07db39, 0x60cdeaa382f0eeb4135df31350fa9f, 0x00042f], + }, + BigNum { + limbs: [0x0119a77a9a472b1f0256b78db57e18, 0xf68db38f4a7b27a0943532cbc2db68, 0x00474c], + }, + BigNum { + limbs: [0xbc8a5b856414d3e0fda947724a81e9, 0xb0c5760e32cd0b9943d2d6d61529eb, 0x002ca0], + }, + BigNum { + limbs: [0x1592642caef3e5a869ecf2cc0d850a, 0xd792bef1368d6e952e48357708336a, 0x004164], + }, + BigNum { + limbs: [0xa8119ed34f68195796130c33f27af7, 0xcfc06aac46bac4a4a9bfd42acfd1e9, 0x003288], + }, + BigNum { + limbs: [0xea563e74aa3185e99ab4b0ce6c0c7c, 0xcb7ba7a1102bab1c2cbe2844a0ddd5, 0x00098b], + }, + BigNum { + limbs: [0xd34dc48b542a7916654b4e3193f385, 0xdbd781fc6d1c881dab49e15d37277d, 0x006a61], + }, + BigNum { + limbs: [0x437f9626fc085e3c28d666a5c2d854, 0xb5c3debf77a18f4de02c0f776af3ea, 0x00325d], + }, + BigNum { + limbs: [0x7a246cd90253a0c3d729985a3d27ad, 0xf18f4ade05a6a3ebf7dbfa2a6d1169, 0x00418f], + }, + BigNum { + limbs: [0x042bde9573c4ad1ff95ac74f4dd55e, 0xf518291d3e252d00a5be2412a997b6, 0x0050c8], + }, + BigNum { + limbs: [0xb978246a8a9751e006a537b0b22aa3, 0xb23b00803f2306393249e58f2e6d9d, 0x002324], + }, + BigNum { + limbs: [0xd42ce812d4161a128568bfed36d2d6, 0x61d6a24bc012a01a09222bf9650bd9, 0x006524], + }, + BigNum { + limbs: [0xe9771aed2a45e4ed7a973f12c92d2b, 0x457c8751bd35931fcee5dda872f979, 0x000ec9], + }, + BigNum { + limbs: [0x4eea3f60d8ba48352b5233bf7ba901, 0x9a5b87438c07220bc79e6b495d459f, 0x003304], + }, + BigNum { + limbs: [0x6eb9c39f25a1b6cad4adcb40845700, 0x0cf7a259f141112e10699e587abfb4, 0x0040e9], + }, + BigNum { + limbs: [0x67db8f3cd65da7c8f54ccb3906df6e, 0x385ab3740f1d0a08b8806bf140116a, 0x003ff0], + }, + BigNum { + limbs: [0x55c873c327fe57370ab333c6f92093, 0x6ef876296e2b29311f879db097f3e9, 0x0033fd], + }, + BigNum { + limbs: [0x10f133fcb8fede5de6afb9568b79d7, 0x555d2abe285e02fca0c6b9bfafb5fd, 0x00149f], + }, + BigNum { + limbs: [0xacb2cf03455d20a2195045a974862a, 0x51f5fedf54ea303d37414fe2284f56, 0x005f4e], + }, + BigNum { + limbs: [0xb769a52be75f80a78adc4c393f40fb, 0x8cf482eda4eaeba7fb8a7fa58fc5d9, 0x0007f3], + }, + BigNum { + limbs: [0x063a5dd416fc7e587523b2c6c0bf06, 0x1a5ea6afd85d4791dc7d89fc483f7a, 0x006bfa], + }, + BigNum { + limbs: [0x1d3d048e2bae51fb8bf031847f0368, 0x7d0f0c1d7fa06092d03a32cfcbe1a7, 0x004b4f], + }, + BigNum { + limbs: [0xa066fe71d2adad04740fcd7b80fc99, 0x2a441d7ffda7d2a707cdd6d20c23ac, 0x00289e], + }, + BigNum { + limbs: [0xcfc07ba26779319d6862e69abec349, 0x7fd1ffada9fb7ce80043e235fce4b6, 0x0027a5], + }, + BigNum { + limbs: [0xede3875d96e2cd62979d1865413cb8, 0x278129efd34cb651d7c4276bdb209c, 0x004c48], + }, + BigNum { + limbs: [0x2b9280b02b0f38389490a19470e8d1, 0x662f4b3bf7dd4a6b4b7925d178b97c, 0x00006c], + }, + BigNum { + limbs: [0x9211824fd34cc6c76b6f5d6b8f1730, 0x4123de61856ae8ce8c8ee3d05f4bd7, 0x007381], + }, + BigNum { + limbs: [0x626ce47a1970433653bbc394e0194f, 0x0ed3d812e1900c2d1e5df0ba7ba08d, 0x001b07], + }, + BigNum { + limbs: [0x5b371e85e4ebbbc9ac443b6b1fe6b2, 0x987f518a9bb8270cb9aa18e75c64c6, 0x0058e6], + }, + BigNum { + limbs: [0xbf59d5e64bbfa343aac380bd084cf0, 0xe70b5e0ee5d8a20cb37113cdf8a9af, 0x00534e], + }, + BigNum { + limbs: [0xfe4a2d19b29c5bbc553c7e42f7b311, 0xc047cb8e976f912d2496f5d3df5ba3, 0x00209e], + }, + BigNum { + limbs: [0x597b23df05312f8c2af61a8141cd2a, 0x0fd36013a65e8edf76cab18f8a37c7, 0x0008f6], + }, + BigNum { + limbs: [0x6428df20f92acf73d509e47ebe32d7, 0x977fc989d6e9a45a613d58124dcd8c, 0x006af7], + }, + BigNum { + limbs: [0x18d8297cc221bdb5e7ec7507841320, 0x300ff31bf898416efa2f23e851d93e, 0x00315f], + }, + BigNum { + limbs: [0xa4cbd9833c3a414a181389f87bece1, 0x7743368184aff1caddd8e5b9862c15, 0x00428e], + }, + BigNum { + limbs: [0xb9cfa13c9e7075a60c85450b7b2f47, 0x6723c0c73b43c6b58ce353a65ae24f, 0x000185], + }, + BigNum { + limbs: [0x03d461c35feb8959f37ab9f484d0ba, 0x402f68d642046c844b24b5fb7d2304, 0x007268], + }, + BigNum { + limbs: [0x4aa8865b38d3fe56375852f503eab6, 0x0a59d3076a69a11bab9cdb76c9aa34, 0x002e1d], + }, + BigNum { + limbs: [0x72fb7ca4c58800a9c8a7ac0afc154b, 0x9cf9569612de921e2c6b2e2b0e5b1f, 0x0045d0], + }, + BigNum { + limbs: [0x2f158931e7234f34277686b037a511, 0x36a53627e337d86327fa50db777aaf, 0x003bff], + }, + BigNum { + limbs: [0x8e8e79ce1738afcbd889784fc85af0, 0x70adf3759a105ad6b00db8c6608aa4, 0x0037ee], + }, + BigNum { + limbs: [0x5b11f7e8d7950307379aa242bef13a, 0x854d6e4b49d1a48d5cc9eb4b326da6, 0x003cd9], + }, + BigNum { + limbs: [0x62920b1726c6fbf8c8655cbd410ec7, 0x2205bb5233768eac7b3e1e56a597ad, 0x003714], + }, + BigNum { + limbs: [0x74c9b15c2f6c8157b9d269efd0d9fd, 0x43d2741d83a4ffa6a4d8853dc711ed, 0x00349a], + }, + BigNum { + limbs: [0x48da51a3ceef7da8462d95102f2604, 0x6380b57ff9a33393332f846410f366, 0x003f53], + }, + BigNum { + limbs: [0x922dc33e3981ed211c46be69369843, 0x792481d33f84533665b7ea0775febc, 0x004a34], + }, + BigNum { + limbs: [0x2b763fc1c4da11dee3b94096c967be, 0x2e2ea7ca3dc3e00372501f9a620697, 0x0029b9], + }, + BigNum { + limbs: [0x6fa92e866fdb2fb08e0577296c2a24, 0xadb60d8a7bf7640ac08abd3c0874ce, 0x00699a], + }, + BigNum { + limbs: [0x4dfad4798e80cf4f71fa87d693d5dd, 0xf99d1c130150cf2f177d4c65cf9085, 0x000a52], + }, + BigNum { + limbs: [0x10bc93086722d6faa75e2409644896, 0x0d36010c2912e9b9971968377e8f23, 0x0045cc], + }, + BigNum { + limbs: [0xace76ff79739280558a1daf69bb76b, 0x9a1d28915435498040eea16a597630, 0x002e21], + }, + BigNum { + limbs: [0x12974aa30cb0dbc3ad07b8488f216a, 0x599a73b32821076027ac452fa314e7, 0x0027f8], + }, + BigNum { + limbs: [0xab0cb85cf1ab233c52f846b770de97, 0x4db8b5ea55272bd9b05bc47234f06c, 0x004bf5], + }, + BigNum { + limbs: [0x07c23f803514299fe2121c20b86988, 0xb000d89ab17c3ca13436f849d0c5b7, 0x0052a3], + }, + BigNum { + limbs: [0xb5e1c37fc947d5601dede2df479679, 0xf7525102cbcbf698a3d11158073f9c, 0x002149], + }, + BigNum { + limbs: [0x54efb0bc8d997ff0498fbd3aed65cf, 0xb926e96be027edd2c44927ecd41b3a, 0x0021f9], + }, + BigNum { + limbs: [0x68b4524370c27f0fb67041c5129a32, 0xee2c40319d20456713bee1b503ea19, 0x0051f3], + }, + BigNum { + limbs: [0xc33eff3b2e005d15c92e1aac022f7a, 0x03f06c32134406419d72de2d04da5c, 0x0038dd], + }, + BigNum { + limbs: [0xfa6503c4d05ba1ea36d1e453fdd087, 0xa362bd6b6a042cf83a952b74d32af6, 0x003b10], + }, + BigNum { + limbs: [0x35e832d903d52910fc77c70f6789eb, 0x025cc14be0ad31420245361de9b12f, 0x00575f], + }, + BigNum { + limbs: [0x87bbd026fa86d5ef038837f0987616, 0xa4f668519c9b01f7d5c2d383ee5424, 0x001c8e], + }, + BigNum { + limbs: [0xb7ab8507f3920122be1a8aba702c85, 0x25e3c9a4ab06a671d938712e096896, 0x0058b6], + }, + BigNum { + limbs: [0x05f87df80ac9fddd41e574458fd37c, 0x816f5ff8d2418cc7fecf9873ce9cbd, 0x001b37], + }, + BigNum { + limbs: [0x69be7aef4c8d1ef94c14f22139573f, 0x6f3cc7d42821defa95e48ec5f0df7f, 0x004e12], + }, + BigNum { + limbs: [0x53e58810b1cee006b3eb0cdec6a8c2, 0x381661c95526543f42237adbe725d4, 0x0025db], + }, + BigNum { + limbs: [0x743ad6e2d471f5c5266f7287443e47, 0x5f70d71d12f4ac20bd03516e01a536, 0x002adc], + }, + BigNum { + limbs: [0x49692c1d29ea093ad9908c78bbc1ba, 0x47e252806a5387191b04b833d6601d, 0x004911], + }, + BigNum { + limbs: [0x2c25c55d44a0cda2c7312172f024d5, 0x856c0c995405fcbdc0f7c531d5529a, 0x004d16], + }, + BigNum { + limbs: [0x917e3da2b9bb315d38cedd8d0fdb2c, 0x21e71d042942367c1710447002b2b9, 0x0026d7], + }, + BigNum { + limbs: [0x223e998d178fb680440e833ea39b55, 0x42b69828825b5da8aa10fae01e8c0c, 0x00181c], + }, + BigNum { + limbs: [0x9b656972e6cc487fbbf17bc15c64ac, 0x649c9174faecd5912df70ec1b97947, 0x005bd1], + }, + BigNum { + limbs: [0x10989d7476cf2bc1bf28a8007ab548, 0xeb7d5ee5004ffc6c81de8478b8e220, 0x002099], + }, + BigNum { + limbs: [0xad0b658b878cd33e40d756ff854ab9, 0xbbd5cab87cf836cd562985291f2333, 0x005353], + }, + BigNum { + limbs: [0x96d79f8a3e8e0b93b28aebc303f074, 0xc9102a942d517007277851e8aec9ea, 0x0024db], + }, + BigNum { + limbs: [0x26cc6375bfcdf36c4d75133cfc0f8d, 0xde42ff094ff6c332b08fb7b9293b69, 0x004f11], + }, + BigNum { + limbs: [0x472415b0f60defaa8f3f7b31a9d713, 0x5bb263c0e75edaf8ea26346303cc91, 0x00406e], + }, + BigNum { + limbs: [0x767fed4f084e0f5570c083ce5628ee, 0x4ba0c5dc95e95840ede1d53ed438c2, 0x00337f], + }, + BigNum { + limbs: [0x22c16ba307dd3aa0d0db6053a9a3e0, 0xe0b7bf8e8c0fd7bcbd2b9d03b8b2db, 0x000042], + }, + BigNum { + limbs: [0x9ae2975cf67ec45f2f249eac565c21, 0xc69b6a0ef1385b7d1adc6c9e1f5278, 0x0073aa], + }, + BigNum { + limbs: [0xd8f9f506885a4f1784febbb03b452f, 0xd0cbdf62af6ec9809d68741ff12a30, 0x000d36], + }, + BigNum { + limbs: [0xe4aa0df97601afe87b01434fc4bad2, 0xd6874a3acdd969b93a9f9581e6db22, 0x0066b6], + }, + BigNum { + limbs: [0x657d647e701c3bc1294eb7f2f2f66d, 0x076752b9400f5ae617b0fcc5dbf9ca, 0x002887], + }, + BigNum { + limbs: [0x58269e818e3fc33ed6b1470d0d0994, 0x9febd6e43d38d853c0570cdbfc0b89, 0x004b66], + }, + BigNum { + limbs: [0xf3dc40acfe2b7256cfcec9c01c3ffe, 0xdab0be5128d795d19d03d8fd323cf7, 0x0068f0], + }, + BigNum { + limbs: [0xc9c7c25300308ca93031353fe3c003, 0xcca26b4c54709d683b0430a4a5c85b, 0x000afc], + }, + BigNum { + limbs: [0x39c74778c695afde09673bab61e898, 0xdf77f041dc9735c1728a223969d1ee, 0x0013c8], + }, + BigNum { + limbs: [0x83dcbb8737c64f21f698c3549e1769, 0xc7db395ba0b0fd78657de7686e3365, 0x006024], + }, + BigNum { + limbs: [0x16c96bf3f6890a98d0402a397d3074, 0xa203d88e626925ff7d17d595046f32, 0x0057df], + }, + BigNum { + limbs: [0xa6da970c07d2f4672fbfd4c682cf8d, 0x054f510f1adf0d3a5af0340cd39621, 0x001c0e], + }, + BigNum { + limbs: [0xd286c9c7b2f3fd967bc7d5bce1a804, 0xdd564bbe5d15ce91a6d6efc2c7ca96, 0x007073], + }, + BigNum { + limbs: [0xeb1d39384b680169843829431e57fd, 0xc9fcdddf203264a8313119df103abc, 0x000379], + }, + BigNum { + limbs: [0xe540b9c586fcea58550848d0259347, 0xba723ff8c505df9d9a8301247105a2, 0x00046c], + }, + BigNum { + limbs: [0xd863493a775f14a7aaf7b62fda6cba, 0xece0e9a4b842539c3d85087d66ffb0, 0x006f80], + }, + BigNum { + limbs: [0x97ac9b42b5bc323c3e9892b876b461, 0xd6151fc5ce2e0c824958cba91b6f97, 0x001128], + }, + BigNum { + limbs: [0x25f767bd489fccc3c1676c47894ba0, 0xd13e09d7af1a26b78eaf3df8bc95bc, 0x0062c4], + }, + BigNum { + limbs: [0xe306b538773eb4b850d2a3eabf958f, 0x7355217fce074c0bb60b247d0d6499, 0x0033dc], + }, + BigNum { + limbs: [0xda9d4dc7871d4a47af2d5b15406a72, 0x33fe081daf40e72e21fce524caa0b9, 0x004011], + }, + BigNum { + limbs: [0xd5081bd50bfe8c49ab063c9866233a, 0x8d40c2ef982f0174fd293ff31fa487, 0x00546f], + }, + BigNum { + limbs: [0xe89be72af25d72b654f9c26799dcc7, 0x1a1266ade51931c4dadec9aeb860cb, 0x001f7e], + }, + BigNum { + limbs: [0xd4dd6fb2dd1c1cec4a327b5d6681f3, 0x978bf9dde4f2a890bb7866fb5680a5, 0x00421a], + }, + BigNum { + limbs: [0xe8c6934d213fe213b5cd83a2997e0e, 0x0fc72fbf98558aa91c8fa2a68184ad, 0x0031d3], + }, + BigNum { + limbs: [0x46e6e574bb0264650613937dec903a, 0xc4fdd5553c2b935c9c3ce1c6e9f013, 0x0004e9], + }, + BigNum { + limbs: [0x76bd1d8b43599a9af9ec6b82136fc7, 0xe2555448411c9fdd3bcb27daee1540, 0x006f03], + }, + BigNum { + limbs: [0x967c6423a55ee21c6f641f5ca11dfc, 0x2962daeacf09aac3e29a57a5f0d8ef, 0x0000f1], + }, + BigNum { + limbs: [0x27279edc58fd1ce3909bdfa35ee205, 0x7df04eb2ae3e8875f56db1fbe72c64, 0x0072fc], + }, + BigNum { + limbs: [0xa48d852fc35b7c3556faf3eba03702, 0x7d9f742f652cb5537e7ab5699d8e10, 0x000a28], + }, + BigNum { + limbs: [0x19167dd03b0082caa9050b145fc8ff, 0x29b3b56e181b7de6598d54383a7743, 0x0069c5], + }, + BigNum { + limbs: [0x4ece6e79d374f7694d7d44aa42aaf2, 0x25830d537d2afc0117e00180409d8d, 0x005c98], + }, + BigNum { + limbs: [0x6ed594862ae70796b282ba55bd550f, 0x81d01c4a001d3738c02808219767c6, 0x001755], + }, + BigNum { + limbs: [0xb02312ec12eeec6e8f66fbf9b79cc1, 0xb52abbca218662fa4f9250a0361b14, 0x002c94], + }, + BigNum { + limbs: [0x0d80f013eb6d129170990306486340, 0xf2286dd35bc1d03f8875b901a1ea3f, 0x004758], + }, + BigNum { + limbs: [0x06b58844f30ad2b5006d3e54988604, 0x08e682580ff68a3ffa39d11f260543, 0x0051cb], + }, + BigNum { + limbs: [0xb6ee7abb0b512c4aff92c0ab6779fd, 0x9e6ca7456d51a8f9ddce3882b20010, 0x002222], + }, + BigNum { + limbs: [0x07e8ac00ccd608596a75b117ddfba0, 0x1c78170c4872ed5d290fa2d313f10c, 0x0021a0], + }, + BigNum { + limbs: [0xb5bb56ff3185f6a6958a4de8220461, 0x8adb129134d545dcaef866cec41447, 0x00524d], + }, + BigNum { + limbs: [0x309873a10967a45beb4be6840f3104, 0xdee51318c6e47085da8a68d064ea95, 0x005b93], + }, + BigNum { + limbs: [0x8d0b8f5ef4f45aa414b4187bf0cefd, 0xc86e1684b663c2b3fd7da0d1731abe, 0x001859], + }, + BigNum { + limbs: [0x6bccfd4eb9f5f9bac25779bd028d08, 0x4c188b40510d4553ed07dd76774c14, 0x00204e], + }, + BigNum { + limbs: [0x51d705b1446605453da88542fd72f9, 0x5b3a9e5d2c3aede5eb002c2b60b93f, 0x00539f], + }, + BigNum { + limbs: [0x9cde21536c74fac14aa34c68accbfa, 0xacabe5adc2561160383ee23ed3ba6d, 0x0017a9], + }, + BigNum { + limbs: [0x20c5e1ac91e7043eb55cb297533407, 0xfaa743efbaf221d99fc92763044ae6, 0x005c43], + }, + BigNum { + limbs: [0x0e05ddcf13a22fbd9b29beb5d8cc55, 0x7f61fc62e2a94bc3a5672aa39e4215, 0x000c58], + }, + BigNum { + limbs: [0xaf9e2530eab9cf4264d6404a2733ac, 0x27f12d3a9a9ee77632a0defe39c33e, 0x006795], + }, + BigNum { + limbs: [0x375b2142604d30f4d7712a9f7e571c, 0xcab5043cc4f48ad290c1186b578186, 0x005b3c], + }, + BigNum { + limbs: [0x8648e1bd9e0ece0b288ed46081a8e5, 0xdc9e2560b853a8674746f1368083cd, 0x0018b0], + }, + BigNum { + limbs: [0x0d311f3cdb74b04dc26f175eaf57e2, 0x9930e7bfc55513a31b5c3e627cc654, 0x00000d], + }, + BigNum { + limbs: [0xb072e3c322e74eb23d90e7a150a81f, 0x0e2241ddb7f31f96bcabcb3f5b3eff, 0x0073e0], + }, + BigNum { + limbs: [0x0a9c3e533dc34f63482f5e6ac7f5ee, 0x67bf56026f1264f3c71a7fc4285c1b, 0x001ef8], + }, + BigNum { + limbs: [0xb307c4acc098af9cb7d0a095380a13, 0x3f93d39b0e35ce4610ed89ddafa938, 0x0054f5], + }, + BigNum { + limbs: [0xf4363b42e95eb239d9acde14fb20e2, 0xa43cfc49003d2e82c238e01af647d6, 0x0034fe], + }, + BigNum { + limbs: [0xc96dc7bd14fd4cc6265320eb04df1f, 0x03162d547d0b04b715cf2986e1bd7c, 0x003eef], + }, + BigNum { + limbs: [0x537def6e0f30f92345e2553f15b27d, 0x399fdefa8ddc87f3c352e16c5500fb, 0x005ae6], + }, + BigNum { + limbs: [0x6a261391ef2b05dcba1da9c0ea4d84, 0x6db34aa2ef6bab4614b52835830458, 0x001907], + }, + BigNum { + limbs: [0x2f5049b1d0e187821f241ffda547a5, 0x8f3a988966e051b31982d33b68de07, 0x000c4e], + }, + BigNum { + limbs: [0x8e53b94e2d7a777de0dbdf025ab85c, 0x181891141667e186be8536666f274c, 0x00679f], + }, + BigNum { + limbs: [0x0f2fa24cca7e118a23f8184f67be53, 0x33bf9e5c6e898b6d5abad78fbbc311, 0x005a94], + }, + BigNum { + limbs: [0xae7460b333dded75dc07e6b09841ae, 0x73938b410ebea7cc7d4d32121c4242, 0x001959], + }, + BigNum { + limbs: [0x58b769fd60bae85dd0ba3600c21ea9, 0xcba700d5638da68d1e587fd67f193c, 0x00442a], + }, + BigNum { + limbs: [0x64ec99029da116a22f45c8ff3de158, 0xdbac28c819ba8cacb9af89cb58ec17, 0x002fc2], + }, + BigNum { + limbs: [0x49a4ab02e82f769ee500f647f7d43b, 0xb7446f10658c06ede0897762f302e9, 0x003cc1], + }, + BigNum { + limbs: [0x73ff57fd162c88611aff08b8082bc6, 0xf00eba8d17bc2c4bf77e923ee5026a, 0x00372b], + }, + BigNum { + limbs: [0x511800ae1cf2a898a5dc3fa6a50014, 0x687779a20ce0b1eeadb86ec0a240a1, 0x000f9d], + }, + BigNum { + limbs: [0x6c8c0251e16956675a23bf595affed, 0x3edbaffb7067814b2a4f9ae135c4b2, 0x006450], + }, + BigNum { + limbs: [0xa29e201b732f6dad4c4a46f5409741, 0xb39452ab3a4709599704eba189b706, 0x0017f3], + }, + BigNum { + limbs: [0x1b05e2e48b2c9152b3b5b80abf68c0, 0xf3bed6f2430129e041031e004e4e4d, 0x005bf9], + }, + BigNum { + limbs: [0x8c90ec812879e1589db18082632470, 0x0d64d5746e14f108e29cdc4cf25ab0, 0x000bd7], + }, + BigNum { + limbs: [0x3113167ed5e21da7624e7e7d9cdb91, 0x99ee54290f334230f56b2d54e5aaa3, 0x006816], + }, + BigNum { + limbs: [0xe820d586118b4a5213a84b62a68904, 0x52bba176b0cf4add1ac0d9aa0cc9d8, 0x0046e3], + }, + BigNum { + limbs: [0xd5832d79ecd0b4adec57b39d5976fd, 0x54978826cc78e85cbd472ff7cb3b7a, 0x002d0a], + }, + BigNum { + limbs: [0x285991341c908ed897ab600af26a9f, 0x4729896b3e93c2aeac62b2b1175d52, 0x006743], + }, + BigNum { + limbs: [0x954a71cbe1cb702768549ef50d9562, 0x6029a0323eb4708b2ba556f0c0a801, 0x000caa], + }, + BigNum { + limbs: [0xee64f977b0bc8213b864a44525e8e4, 0x576fae62c2747e9d59a9016efb44e8, 0x001b4d], + }, + BigNum { + limbs: [0xcf3f09884d9f7cec479b5abada171d, 0x4fe37b3abad3b49c7e5f0832dcc06a, 0x0058a0], + }, + BigNum { + limbs: [0xbb530e72b7bfc3855fca21c045e849, 0x249e0bfc4d51cc64d8b824c354c377, 0x0023d3], + }, + BigNum { + limbs: [0x0250f48d469c3b7aa035dd3fba17b8, 0x82b51da12ff666d4ff4fe4de8341dc, 0x00501a], + }, + BigNum { + limbs: [0x82849fa29e943275fe4524a3df9914, 0x4787c92fb6003ec786b72669f55ce5, 0x00043f], + }, + BigNum { + limbs: [0x3b1f635d5fc7cc8a01bada5c2066ed, 0x5fcb606dc747f4725150e337e2a86e, 0x006fae], + }, + BigNum { + limbs: [0x6b6f86bf14aefcc2338ad83cdfa657, 0xb53f58ce81940a859ee7dfedce98f1, 0x005c9d], + }, + BigNum { + limbs: [0x52347c40e9ad023dcc7526c32059aa, 0xf213d0cefbb428b4392029b4096c62, 0x00174f], + }, + BigNum { + limbs: [0xdcf47128786d2189831ce42c6138b3, 0x498eb85e702360db58e449ef2a892a, 0x0003f6], + }, + BigNum { + limbs: [0xe0af91d785eedd767ce31ad39ec74e, 0x5dc4713f0d24d25e7f23bfb2ad7c28, 0x006ff7], + }, + BigNum { + limbs: [0xf89acd6211e66705b59d4d67e78267, 0x51a561f4691450c8d1e120be501af7, 0x003dde], + }, + BigNum { + limbs: [0xc509359dec7597fa4a62b198187d9a, 0x55adc7a91433e2710626e8e387ea5b, 0x00360f], + }, + BigNum { + limbs: [0x5c622bba78e96e62ad6e618cd63fc9, 0xe604e2122797b4fc5b308c0f64c4b1, 0x006f1b], + }, + BigNum { + limbs: [0x6141d7458572909d52919d7329c038, 0xc14e478b55b07e3d7cd77d927340a2, 0x0004d1], + }, + BigNum { + limbs: [0x7e9861925f3c85728b638faa490c47, 0x8f85d4bb9c9568fd174cc19863a83f, 0x001590], + }, + BigNum { + limbs: [0x3f0ba16d9f1f798d749c6f55b6f3ba, 0x17cd54e1e0b2ca3cc0bb4809745d14, 0x005e5d], + }, + BigNum { + limbs: [0x5cc1b32b2a1950ab93f25b2906d21a, 0x69a09d5aa6587cf3f6638899a0097e, 0x00671e], + }, + BigNum { + limbs: [0x60e24fd4d442ae546c0da3d6f92de7, 0x3db28c42d6efb645e1a4810837fbd5, 0x000ccf], + }, + BigNum { + limbs: [0xc8f5dd633013028cfda586295ea84b, 0x7cce960c7027f14b86bb7c12055e83, 0x003da0], + }, + BigNum { + limbs: [0xf4ae259cce48fc73025a78d6a157b6, 0x2a8493910d2041ee514c8d8fd2a6cf, 0x00364d], + }, + BigNum { + limbs: [0x71d0d9c1e612bd99b980c752953536, 0x26c472d9a268f3d2329d2bd130b8e7, 0x005126], + }, + BigNum { + limbs: [0x4bd3293e18494166467f37ad6acacb, 0x808eb6c3dadf3f67a56addd0a74c6c, 0x0022c7], + }, + BigNum { + limbs: [0x735dfec23461fb447108a871678206, 0x593fb2d1e4796f84312c4cd1ae75c2, 0x000d82], + }, + BigNum { + limbs: [0x4a46043dc9fa03bb8ef7568e987dfb, 0x4e1376cb98cec3b5a6dbbcd0298f91, 0x00666b], + }, + BigNum { + limbs: [0x29130b18a08ed66bb7b793ab94d67d, 0xd9b87eff068a96987520a4a84e5315, 0x006d86], + }, + BigNum { + limbs: [0x9490f7e75dcd289448486b546b2984, 0xcd9aaa9e76bd9ca162e764f989b23e, 0x000666], + }, + BigNum { + limbs: [0xefd6b0570bf109d58a5af42d010ff9, 0xb09858f43cef3ed6d55a6350721d79, 0x002f27], + }, + BigNum { + limbs: [0xcdcd52a8f26af52a75a50ad2fef008, 0xf6bad0a94058f46302ada65165e7d9, 0x0044c5], + }, + BigNum { + limbs: [0x977360b30175c52dbb2cf227158434, 0x2fe0ca12c0b44b70ca6708f3104867, 0x002318], + }, + BigNum { + limbs: [0x2630a24cfce639d244d30cd8ea7bcd, 0x77725f8abc93e7c90da100aec7bcec, 0x0050d5], + }, + BigNum { + limbs: [0x835c9ca817ed357b3354fe4df74d21, 0xa535477e1384fba967880c356fda5d, 0x006d52], + }, + BigNum { + limbs: [0x3a476657e66ec984ccab00b208b2e0, 0x021de21f69c33790707ffd6c682af6, 0x00069b], + }, + BigNum { + limbs: [0x62f50c1fa01a6ebf12d1967f5228c6, 0xcccb86887bc1090ea1eafe6cd3d6f0, 0x0021c7], + }, + BigNum { + limbs: [0x5aaef6e05e419040ed2e6880add73b, 0xda87a31501872a2b361d0b35042e63, 0x005225], + }, + BigNum { + limbs: [0x783e184f0f10da4ad463040bfa6b96, 0x89d9a062ba8ff6e0797726f231b176, 0x004b12], + }, + BigNum { + limbs: [0x4565eab0ef4b24b52b9cfaf405946b, 0x1d79893ac2b83c595e90e2afa653dd, 0x0028db], + }, + BigNum { + limbs: [0x7fcbf22df21291ca782131084255da, 0xb49750ddb83253aa8f5c166504001b, 0x002164], + }, + BigNum { + limbs: [0x3dd810d20c496d3587decdf7bdaa27, 0xf2bbd8bfc515df8f48abf33cd40538, 0x005288], + }, + BigNum { + limbs: [0xeea8827f4e9ec602b926b27753b127, 0xfbbd7f20c3ced966ea577b468e20b9, 0x004f0e], + }, + BigNum { + limbs: [0xcefb8080afbd38fd46d94c88ac4eda, 0xab95aa7cb97959d2edb08e5b49e499, 0x0024de], + }, + BigNum { + limbs: [0xa933db67c24c70716d094756b66d63, 0x1aa615b346f8ebad67ddc10c732ae8, 0x0004d2], + }, + BigNum { + limbs: [0x147027983c0f8e8e92f6b7a949929e, 0x8cad13ea364f478c702a489564da6b, 0x006f1b], + }, + BigNum { + limbs: [0xf79311d4603ebe660cb35a9fa42972, 0xdb65a3240463f4216b3d286b5f60ee, 0x000b7b], + }, + BigNum { + limbs: [0xc610f12b9e1d4099f34ca4605bd68f, 0xcbed867978e43f186ccae13678a464, 0x006871], + }, + BigNum { + limbs: [0xafc701df2ef92f02a3555fc5ee25f7, 0x471ca69edd738a2bb3e93d180d6310, 0x004751], + }, + BigNum { + limbs: [0x0ddd0120cf62cffd5caa9f3a11da0a, 0x603682fe9fd4a90e241ecc89caa243, 0x002c9c], + }, + BigNum { + limbs: [0x83b10a7188a75be4d08b3a9bd95dc2, 0xc0e837c5ea1d5fd7929a9439bb000a, 0x0012c1], + }, + BigNum { + limbs: [0x39f2f88e75b4a31b2f74c46426a23f, 0xe66af1d7932ad362456d75681d0549, 0x00612b], + }, + BigNum { + limbs: [0x40d6987940175aa503ad6c44bc5ff8, 0xb1e6bfb9702607fd3c97042f2373a4, 0x005a03], + }, + BigNum { + limbs: [0x7ccd6a86be44a45afc5292bb43a009, 0xf56c69e40d222b3c9b710572b491af, 0x0019e9], + }, + BigNum { + limbs: [0x9c55f6ffe871ea5ddbbc4e9b6615b8, 0x0415d906203d93cbbee466fd232897, 0x00005c], + }, + BigNum { + limbs: [0x214e0c0015ea14a22443b06499ea49, 0xa33d50975d0a9f6e1923a2a4b4dcbc, 0x007391], + }, + BigNum { + limbs: [0xd30122c843684408d2342a11db2c67, 0xe20c7f6c968c5058ca294459777599, 0x002c14], + }, + BigNum { + limbs: [0xeaa2e037baf3baf72dcbd4ee24d39a, 0xc546aa30e6bbe2e10ddec548608fb9, 0x0047d8], + }, + BigNum { + limbs: [0xcf9853c5492f70dbe2b6ae6a65e380, 0x4b4b630bd746efffb256ee28750441, 0x000c94], + }, + BigNum { + limbs: [0xee0baf3ab52c8e241d4950959a1c81, 0x5c07c691a601433a25b11b79630111, 0x006759], + }, + BigNum { + limbs: [0xa240a2a069113c159a067743cae6c5, 0xeb7f91a0d0a7f1d0c3c19d09cf9306, 0x00585a], + }, + BigNum { + limbs: [0x1b63605f954ac2ea65f987bc35193c, 0xbbd397fcaca0416914466c9808724d, 0x001b92], + }, + BigNum { + limbs: [0xc301f4f32087447899594a115b42ec, 0xa53a04150fa19233a27cfafd0e6ca8, 0x002e4c], + }, + BigNum { + limbs: [0xfaa20e0cddd4ba8766a6b4eea4bd15, 0x021925886da6a106358b0ea4c998aa, 0x0045a1], + }, + BigNum { + limbs: [0xb12fefba555a4c968b0decdd5c8bff, 0xbdc683722a25b401681bc0a21dae2e, 0x001c50], + }, + BigNum { + limbs: [0x0c741345a901b26974f21222a37402, 0xe98ca62b53227f386fec48ffba5725, 0x00579c], + }, + BigNum { + limbs: [0xefb15e20ddffa892cbd498b8ae4748, 0x2ca691fde3753d113105a6f6224cab, 0x0037a8], + }, + BigNum { + limbs: [0xcdf2a4df205c566d342b664751b8b9, 0x7aac979f99d2f628a70262abb5b8a7, 0x003c45], + }, + BigNum { + limbs: [0xde6c81def05707ddd48b53c0632b7f, 0xb79237478ed134868d055a78d4d127, 0x006482], + }, + BigNum { + limbs: [0xdf3781210e04f7222b74ab3f9cd482, 0xefc0f255ee76feb34b02af2903342b, 0x000f6a], + }, + BigNum { + limbs: [0x905e68e892d76597534a53351aeb21, 0xc2b7e09e88cf54c6bcf61242906281, 0x001c1b], + }, + BigNum { + limbs: [0x2d459a176b849968acb5abcae514e0, 0xe49b48fef478de731b11f75f47a2d2, 0x0057d1], + }, + BigNum { + limbs: [0x3059b2dacb997091e05fa34880ee67, 0xb79d4996ad5169ae844074894dab48, 0x002374], + }, + BigNum { + limbs: [0x8d4a502532c28e6e1fa05bb77f119a, 0xefb5e006cff6c98b53c795188a5a0b, 0x005078], + }, + BigNum { + limbs: [0x81a6284dfcdcdb79aca024dfa3bea6, 0x4cf83a91c028b44b584b898ea2487e, 0x0032af], + }, + BigNum { + limbs: [0x3bfddab2017f2386535fda205c415b, 0x5a5aef0bbd1f7eee7fbc801335bcd5, 0x00413e], + }, + BigNum { + limbs: [0xe255d810db7c7ba57428937e370687, 0x2e7f20b138794741d7afe1d1739af4, 0x004cf7], + }, + BigNum { + limbs: [0xdb4e2aef22df835a8bd76b81c8f97a, 0x78d408ec44ceebf8005827d0646a5e, 0x0026f6], + }, + BigNum { + limbs: [0x2a36904e65334d504798a56d84b81b, 0x4e6452d677424619a91495c55a387a, 0x001963], + }, + BigNum { + limbs: [0x936d72b19928b1afb86759927b47e6, 0x58eed6c70605ed202ef373dc7dccd9, 0x005a8a], + }, + BigNum { + limbs: [0x892679c5bf83b3bedbfaac558c8d18, 0xe9ac49520d3dc9997bf03a451a6630, 0x003754], + }, + BigNum { + limbs: [0x347d893a3ed84b41240552aa7372e9, 0xbda6e04b700a69a05c17cf5cbd9f23, 0x003c98], + }, + BigNum { + limbs: [0xf254f66ae5ee531c14292bf0255fd5, 0x1effcfc73d5c86252263d4232859d9, 0x00526e], + }, + BigNum { + limbs: [0xcb4f0c95186dabe3ebd6d30fdaa02c, 0x885359d63febad14b5a4357eafab79, 0x00217f], + }, + BigNum { + limbs: [0xe17e99d8256761f9a5ad12c1f3853f, 0x36423bc3f0fae23f188a9a547b7d01, 0x006a6d], + }, + BigNum { + limbs: [0xdc256927d8f49d065a52ec3e0c7ac2, 0x7110edd98c4d50fabf7d6f4d5c8851, 0x000980], + }, + BigNum { + limbs: [0x306689091abed321eed5418571ac33, 0x92d95a4ef11d7cddd189d0ec4d20a0, 0x000e3d], + }, + BigNum { + limbs: [0x8d3d79f6e39d2bde112abd7a8e53ce, 0x1479cf4e8c2ab65c067e38b58ae4b3, 0x0065b0], + }, + BigNum { + limbs: [0x3d1d54f8f2982de43fdb36bf47bcc3, 0xba63f2b18adc6f2e9e0b45136d4f1c, 0x006efb], + }, + BigNum { + limbs: [0x8086ae070bc3d11bc024c840b8433e, 0xecef36ebf26bc40b39fcc48e6ab637, 0x0004f1], + }, + BigNum { + limbs: [0x902f381368c0b10a873d6c9d82cbdd, 0x7b0015a2d0fe32712683cabe07344f, 0x0050ee], + }, + BigNum { + limbs: [0x2d74caec959b4df578c292627d3424, 0x2c5313faac4a00c8b1843ee3d0d104, 0x0022ff], + }, + BigNum { + limbs: [0xee61519e282a1877ab619f936cb9e1, 0xf2c40c622d5c14a79f3664b930f42d, 0x002e62], + }, + BigNum { + limbs: [0xcf42b161d631e688549e5f6c934620, 0xb48f1d3b4fec1e9238d1a4e8a71125, 0x00458a], + }, + BigNum { + limbs: [0xc4dccaecd1fbf5e4f8b0b094a83cb3, 0xa8ec3ef066195ec440a4e3fd2ea14c, 0x000539], + }, + BigNum { + limbs: [0xf8c738132c60091b074f4e6b57c34e, 0xfe66eaad172ed475976325a4a96406, 0x006eb3], + }, + BigNum { + limbs: [0xea27b86283f69cf28211eacc0710ff, 0x0a61fb4687169578008f160eb02032, 0x0016a8], + }, + BigNum { + limbs: [0xd37c4a9d7a65620d7dee1433f8ef02, 0x9cf12e56f6319dc1d778f39327e520, 0x005d45], + }, + BigNum { + limbs: [0x53ec9a4a2ac078308183f53cba4097, 0x9444ba3d2df9d017f9d3a6beb55f1f, 0x004fb9], + }, + BigNum { + limbs: [0x69b768b5d39b86cf7e7c09c345bf6a, 0x130e6f604f4e6321de3462e322a634, 0x002434], + }, + BigNum { + limbs: [0xd20df595f39f2afdc2fcf153ad903c, 0x2ece77c82d2c0c03b16ef100307a6e, 0x000d33], + }, + BigNum { + limbs: [0xeb960d6a0abcd4023d030dac526fc5, 0x7884b1d5501c2736269918a1a78ae4, 0x0066ba], + }, + BigNum { + limbs: [0x0ac6a330a41421f54ee691e0643777, 0x4f96d2ac9b3923c8d9e9259802f7d7, 0x002194], + }, + BigNum { + limbs: [0xb2dd5fcf5a47dd0ab1196d1f9bc88a, 0x57bc56f0e20f0f70fe1ee409d50d7c, 0x005259], + }, + BigNum { + limbs: [0x0e3d52802ba363eb2b24461b367723, 0x0dba5e260f57ac9e3e8ba3ed80a750, 0x006e68], + }, + BigNum { + limbs: [0xaf66b07fd2b89b14d4dbb8e4c988de, 0x9998cb776df0869b997c65b4575e03, 0x000585], + }, + BigNum { + limbs: [0xc786c39e8d76c168070ff63089758b, 0x4bf2fd4556aba449afd09e0b523b9a, 0x0047cd], + }, + BigNum { + limbs: [0xf61d3f6170e53d97f8f008cf768a76, 0x5b602c58269c8ef028376b9685c9b8, 0x002c20], + }, + BigNum { + limbs: [0x5b740bab2ae626b3a288e56cbe6ba2, 0x2ec9ee1056d93f5bdf1610b8e02c02, 0x0061be], + }, + BigNum { + limbs: [0x622ff754d375d84c5d77199341945f, 0x78893b8d266ef3ddf8f1f8e8f7d951, 0x00122f], + }, + BigNum { + limbs: [0xb2b4506b58821b9782d98e09dd2095, 0x1180e4201fdd09faded963276eda9c, 0x001717], + }, + BigNum { + limbs: [0x0aefb294a5d9e3687d2670f622df6c, 0x95d2457d5d6b293ef92ea67a692ab7, 0x005cd6], + }, + BigNum { + limbs: [0x59d09e36445b2c8d76f7be4ffbdf0c, 0x7d907dfec3418f3e53c99a199f8fa5, 0x005deb], + }, + BigNum { + limbs: [0x63d364c9ba00d272890840b00420f5, 0x29c2ab9eba06a3fb843e6f883875ae, 0x001602], + }, + BigNum { + limbs: [0x5abe13ab2a152efe228225b0b37c11, 0x78ed18c25162b9575235ed65ee9b01, 0x005681], + }, + BigNum { + limbs: [0x62e5ef54d446d001dd7dd94f4c83f0, 0x2e6610db2be579e285d21c3be96a52, 0x001d6c], + }, + BigNum { + limbs: [0xd8c7e12991d3593a7478c980a80dcd, 0xb7a1c70a28635fea4420d98de0ddff, 0x00077f], + }, + BigNum { + limbs: [0xe4dc21d66c88a5c58b87357f57f234, 0xefb1629354e4d34f93e73013f72753, 0x006c6d], + }, + BigNum { + limbs: [0xbe7f08f42eb31a40103db7fbe67596, 0x76187ee6c6269fbef78669ab90d7d8, 0x005cb3], + }, + BigNum { + limbs: [0xff24fa0bcfa8e4bfefc24704198a6b, 0x313aaab6b721937ae0819ff6472d7a, 0x00173a], + }, + BigNum { + limbs: [0x1234f45f84b51a2458759b86aa9b46, 0xbce4857298de5aa7436a8e41578bef, 0x001ade], + }, + BigNum { + limbs: [0xab6f0ea079a6e4dba78a63795564bb, 0xea6ea42ae469d892949d7b60807964, 0x00590e], + }, + BigNum { + limbs: [0xe8cb30c74f3496a5de0a8cb929b435, 0x7142c749358132565e4a3f276dddcf, 0x00263d], + }, + BigNum { + limbs: [0xd4d8d238af27685a21f57246d64bcc, 0x3610625447c700e379bdca7a6a2783, 0x004db0], + }, + BigNum { + limbs: [0xc06812fcc08500e1b3a80d3dc99e5a, 0xde2bae7c6bb687328292c58f0914fc, 0x000a7a], + }, + BigNum { + limbs: [0xfd3bf0033dd6fe1e4c57f1c23661a7, 0xc9277b211191ac0755754412cef056, 0x006972], + }, + BigNum { + limbs: [0xc8b17cc28f5b5914730aa651dc14c6, 0x0a2862c6b0aa7e00857f06f8f13093, 0x001dca], + }, + BigNum { + limbs: [0xf4f2863d6f00a5eb8cf558ae23eb3b, 0x9d2ac6d6cc9db539528902a8e6d4bf, 0x005623], + }, + BigNum { + limbs: [0x1230bc0e387e9558bd52e8fdf0f3fa, 0x0e85c8adf888bf4821c2f7e1d5e5bb, 0x003755], + }, + BigNum { + limbs: [0xab7346f1c5dd69a742ad16020f0c07, 0x98cd60ef84bf73f1b64511c0021f98, 0x003c98], + }, + BigNum { + limbs: [0xe24941616914e7ad110ef96d2c8b89, 0x2f2b1ea09b86b3e9ced3336c9ff439, 0x001bbc], + }, + BigNum { + limbs: [0xdb5ac19e95471752eef10592d37478, 0x78280afce1c17f500934d635381119, 0x005831], + }, + BigNum { + limbs: [0xb530ecbcf382bb730881f99cce2b05, 0x97b86edc1c02dfa201d28456bec63b, 0x00008a], + }, + BigNum { + limbs: [0x087316430ad9438cf77e056331d4fc, 0x0f9abac161455397d635854b193f18, 0x007363], + }, + BigNum { + limbs: [0xa7275730b5b11515f4e3caddb042a0, 0xf0a1a79dc567185006d5ff757c19fe, 0x0056c8], + }, + BigNum { + limbs: [0x167cabcf48aae9ea0b1c34224fbd61, 0xb6b181ffb7e11ae9d1320a2c5beb55, 0x001d24], + }, + BigNum { + limbs: [0x61b6a2481f0bc6f89b6e4cc3f8a8d9, 0xcbcfbfa6e1cac504800176c799853b, 0x005048], + }, + BigNum { + limbs: [0x5bed60b7df5038076491b23c075728, 0xdb8369f69b7d6e35580692da3e8018, 0x0023a4], + }, + BigNum { + limbs: [0x65dd758be92292d21af29fac91cf26, 0xf5feecd35328814b1382cf67a22cc2, 0x00503f], + }, + BigNum { + limbs: [0x57c68d7415396c2de50d5f536e30db, 0xb1543cca2a1fb1eec4853a3a35d891, 0x0023ad], + }, + BigNum { + limbs: [0x1f5a7f98a0d41d2fb01e7994ae9e07, 0x266275af949d1efef1ea963a619c6d, 0x007145], + }, + BigNum { + limbs: [0x9e4983675d87e1d04fe1856b5161fa, 0x80f0b3ede8ab143ae61d73677668e6, 0x0002a8], + }, + BigNum { + limbs: [0x8d78320cf0b1dc0bf6682a1f324c98, 0xd95c3d037697cca953c9a7d7135772, 0x004e04], + }, + BigNum { + limbs: [0x302bd0f30daa22f40997d4e0cdb369, 0xcdf6ec9a06b06690843e61cac4ade1, 0x0025e8], + }, + BigNum { + limbs: [0xab429c42218eea9d1a8d0cdf05b3f5, 0xba420ebae0ca2485088dcd0eedfd0f, 0x004571], + }, + BigNum { + limbs: [0x126166bddccd1462e572f220fa4c0c, 0xed111ae29c7e0eb4cf7a3c92ea0844, 0x002e7b], + }, + BigNum { + limbs: [0x8a07f9f945e0a8a970b4f3f6820606, 0xc78bdc342aafc2989b69d7031f283b, 0x003573], + }, + BigNum { + limbs: [0x339c0906b87b56568f4b0b097df9fb, 0xdfc74d69529870a13c9e329eb8dd18, 0x003e79], + }, + BigNum { + limbs: [0x17df56d813171c551a3d49cec26fff, 0xd46e142d366d1862d870c69ea23d3b, 0x0034df], + }, + BigNum { + limbs: [0xa5c4ac27eb44e2aae5c2b5313d9002, 0xd2e5157046db1ad6ff97430335c818, 0x003f0d], + }, + BigNum { + limbs: [0x71280f074d1440d341280e40f6ff69, 0x493dd2c18195b3d4f002ab14fce7d7, 0x003657], + }, + BigNum { + limbs: [0x4c7bf3f8b147be2cbed7f0bf090098, 0x5e1556dbfbb27f64e8055e8cdb1d7c, 0x003d96], + }, + BigNum { + limbs: [0x7d5dfa3a479c8e611337171217a856, 0x8a69cc191d70c9bffed16f4a90e9b9, 0x0023f6], + }, + BigNum { + limbs: [0x404608c5b6bf709eecc8e7ede857ab, 0x1ce95d845fd76979d9369a57471b9a, 0x004ff7], + }, + BigNum { + limbs: [0x2297d77e27dabdc088bdd905a55f21, 0xe5ba74ab8f7b7943135dbd04ce91ce, 0x000ec6], + }, + BigNum { + limbs: [0x9b0c2b81d681413f774225fa5aa0e0, 0xc198b4f1edccb9f6c4aa4c9d097385, 0x006526], + }, + BigNum { + limbs: [0x1780f66062d06efdbc5c8f8076051c, 0xff129029040c12f30d72abc32d1510, 0x002214], + }, + BigNum { + limbs: [0xa6230c9f9b8b900243a36f7f89fae5, 0xa8409974793c2046ca955ddeaaf043, 0x0051d8], + }, + BigNum { + limbs: [0xff74fc1738cfd4e640defe9c3d1988, 0x5f9a2cb148576539d6e7048fb70e71, 0x002be5], + }, + BigNum { + limbs: [0xbe2f06e8c58c2a19bf210063c2e679, 0x47b8fcec34f0ce000121051220f6e1, 0x004808], + }, + BigNum { + limbs: [0xfee0e9919be7eb242860ad1233361d, 0x51765816dd0870c5f64dfff44c0fe1, 0x005251], + }, + BigNum { + limbs: [0xbec3196e627413dbd79f51edccc9e4, 0x55dcd186a03fc273e1ba09ad8bf571, 0x00219c], + }, + BigNum { + limbs: [0x1d417ac2d72f8681deb3aea33c8449, 0xf5bec7ef45efbf9de97916504aabd2, 0x002801], + }, + BigNum { + limbs: [0xa062883d272c787e214c505cc37bb8, 0xb19461ae3758739bee8ef3518d5981, 0x004beb], + }, + BigNum { + limbs: [0xffd9cd43748cd07e797c34f167e1ae, 0xfb8721c1baed95f9167176d30171d8, 0x0032d0], + }, + BigNum { + limbs: [0xbdca35bc89cf2e818683ca0e981e53, 0xabcc07dbc25a9d40c19692ced6937a, 0x00411c], + }, + BigNum { + limbs: [0x46efcbd5cbd25bcdea20340e865edc, 0x5cf7ea7460e71bb5ebece92e50178a, 0x003bbb], + }, + BigNum { + limbs: [0x76b4372a3289a33215dfcaf179a125, 0x4a5b3f291c611783ec1b207387edc9, 0x003832], + }, + BigNum { + limbs: [0x1acd98fa4e19e15adb37a5ea82fe43, 0x64500bde4ae6b522fed010b950c90d, 0x0039b7], + }, + BigNum { + limbs: [0xa2d66a05b0421da524c859157d01be, 0x43031dbf32617e16d937f8e8873c46, 0x003a36], + }, + BigNum { + limbs: [0xf97bf1fe6c26fcec89f106fb90245c, 0xcc7b13e9ecf1b6504cd2a95cc231ba, 0x00707c], + }, + BigNum { + limbs: [0xc428110192350213760ef8046fdba5, 0xdad815b390567ce98b35604515d398, 0x000370], + }, + BigNum { + limbs: [0xb40031a396daed1d58d36d2887248a, 0xefd47eb0b490fb4b5fe309008ffb30, 0x0025d6], + }, + BigNum { + limbs: [0x09a3d15c678111e2a72c91d778db77, 0xb77eaaecc8b737ee782500a1480a23, 0x004e16], + }, + BigNum { + limbs: [0xb896192a36d9e94f4e49f4db97e1d9, 0x2ffe51ef6ac663a47e046c9d5d166c, 0x003fd0], + }, + BigNum { + limbs: [0x050de9d5c78215b0b1b60a24681e28, 0x7754d7ae1281cf955a039d047aeee7, 0x00341d], + }, + BigNum { + limbs: [0x3c79d13bd65d4193ca2d1bc7fd9263, 0x66ae43c4c3c56831575a9d83a15eb2, 0x003933], + }, + BigNum { + limbs: [0x812a31c427febd6c35d2e338026d9e, 0x40a4e5d8b982cb0880ad6c1e36a6a1, 0x003aba], + }, + BigNum { + limbs: [0x8534756de28ddf9c097282f8518c00, 0x2e85cd535086081a5545bd583161c8, 0x005fc4], + }, + BigNum { + limbs: [0x386f8d921bce1f63f68d7c07ae7401, 0x78cd5c4a2cc22b1f82c24c49a6a38b, 0x001429], + }, + BigNum { + limbs: [0x7ad52f8a5c627be96a0110191444de, 0xd5d6f7db3f4f0f669bb5886c3af4cb, 0x000753], + }, + BigNum { + limbs: [0x42ced375a1f9831695feeee6ebbb23, 0xd17c31c23df923d33c5281359d1088, 0x006c99], + }, + BigNum { + limbs: [0xfcbf4084f4f9b2c30b3c3647dd9723, 0x82a49d6b5c74782c1cd532b1b61313, 0x002b73], + }, + BigNum { + limbs: [0xc0e4c27b09624c3cf4c3c8b82268de, 0x24ae8c3220d3bb0dbb32d6f021f23f, 0x00487a], + }, + BigNum { + limbs: [0x5167b6e1c6e7094e396cf2c8808fc1, 0x2b3fd45a67f93cbcdfb94554c90356, 0x00403c], + }, + BigNum { + limbs: [0x6c3c4c1e3774f5b1c6930c377f7040, 0x7c135543154ef67cf84ec44d0f01fd, 0x0033b1], + }, + BigNum { + limbs: [0xaad9d1e07e8ad1c6704a19b8498e4c, 0x9a8e6f552967166e1d63d16fa4191b, 0x002cfc], + }, + BigNum { + limbs: [0x12ca311f7fd12d398fb5e547b671b5, 0x0cc4ba4853e11ccbbaa4383233ec38, 0x0046f1], + }, + BigNum { + limbs: [0xa6f095c3e393ea78bad60fe8295af1, 0x51570dd9c749cd846dedf76d82d68e, 0x0018f1], + }, + BigNum { + limbs: [0x16b36d3c1ac814874529ef17d6a510, 0x55fc1bc3b5fe65b56a1a1234552ec5, 0x005afc], + }, + BigNum { + limbs: [0xd4799a1030031151641d355ed74859, 0xa82ef937f7a8184e37dc8531cf3300, 0x005c33], + }, + BigNum { + limbs: [0xe92a68efce58edae9be2c9a128b7a8, 0xff24306585a01aeba02b847008d252, 0x0017b9], + }, + BigNum { + limbs: [0x9183dce28ef8014fe8d6d7c4afe0a9, 0xcfdf2f836149018debf684e68567f3, 0x002b70], + }, + BigNum { + limbs: [0x2c20261d6f63fdb01729273b501f58, 0xd773fa1a1bff31abec1184bb529d60, 0x00487c], + }, + BigNum { + limbs: [0x78921f813dbb183c71a7402ec2eed5, 0x4ad5a9709b098e4630618320a9220e, 0x0034ff], + }, + BigNum { + limbs: [0x4511e37ec0a0e6c38e58bed13d112c, 0x5c7d802ce23ea4f3a7a686812ee345, 0x003eee], + }, + BigNum { + limbs: [0xb104627af5b12aeb15f8b2e0dc45d1, 0xafb9f051dae05d758652dede4d953e, 0x005765], + }, + BigNum { + limbs: [0x0c9fa08508aad414ea074c1f23ba30, 0xf799394ba267d5c451b52ac38a7015, 0x001c87], + }, + BigNum { + limbs: [0x076c47c5c2c17969253d44de1e4d00, 0x18e25537e45a543a827b37d2ebc611, 0x000970], + }, + BigNum { + limbs: [0xb637bb3a3b9a8596dac2ba21e1b301, 0x8e70d46598eddeff558cd1ceec3f42, 0x006a7d], + }, + BigNum { + limbs: [0x1a77c155967b404f527ffbb148e55b, 0x124a85c2aa3222dad195f08db8c103, 0x004820], + }, + BigNum { + limbs: [0xa32c41aa67e0beb0ad80034eb71aa6, 0x9508a3dad316105f067219141f4450, 0x002bcd], + }, + BigNum { + limbs: [0x526ac238e5a0c5a70265e120dec41a, 0xb91dbc2c171b610f40689e8bdb7e85, 0x0054a2], + }, + BigNum { + limbs: [0x6b3940c718bb3958fd9a1ddf213be7, 0xee356d71662cd22a979f6b15fc86ce, 0x001f4a], + }, + BigNum { + limbs: [0xbc3f5982e5d13e52ac9853b184617d, 0xcfe5971c4e6c2818670f0f6e1efe30, 0x005db5], + }, + BigNum { + limbs: [0x0164a97d188ac0ad5367ab4e7b9e84, 0xd76d92812edc0b2170f8fa33b90723, 0x001637], + }, + BigNum { + limbs: [0xea190ee72171b5bf96906be310d83a, 0xb49f8ab5bb56e6d4fddaed19d920a7, 0x005edc], + }, + BigNum { + limbs: [0xd38af418dcea4940696f931cef27c7, 0xf2b39ee7c1f14c64da2d1c87fee4ab, 0x001510], + }, + BigNum { + limbs: [0x1ca7fc06a7652dce89d9caeca2788e, 0x41484cc523db20e2ed344c1f0d27dc, 0x006fb2], + }, + BigNum { + limbs: [0xa0fc06f956f6d131762634135d8773, 0x660adcd8596d1256ead3bd82cadd77, 0x00043b], + }, + BigNum { + limbs: [0x24ee69f08086a145b0c011142f943c, 0xbc8be1039af2e00b5ea72b0ce3cc51, 0x002f6b], + }, + BigNum { + limbs: [0x98b5990f7dd55dba4f3fedebd06bc5, 0xeac74899e255532e7960de94f43902, 0x004481], + }, + BigNum { + limbs: [0x4e43d7d4c8cc800c599e831e62b8d6, 0xfe6e13f0c70ec64b7d75ada9bc94dc, 0x0020c6], + }, + BigNum { + limbs: [0x6f602b2b358f7ef3a6617be19d472b, 0xa8e515acb6396cee5a925bf81b7077, 0x005326], + }, + BigNum { + limbs: [0xa4cf29a5781cc8b8f0b1427b5e42f8, 0x14f60f00b7cfd56abdc480f96f516e, 0x001acf], + }, + BigNum { + limbs: [0x18d4d95a863f36470f4ebc84a1bd09, 0x925d1a9cc5785dcf1a4388a868b3e5, 0x00591e], + }, + BigNum { + limbs: [0x860ca3e0b0c8cd0d2607b31e34bf62, 0x39b5bc3017ffbab6734e04debb058b, 0x0046b3], + }, + BigNum { + limbs: [0x37975f1f4d9331f2d9f84be1cb409f, 0x6d9d6d6d6548788364ba04c31cffc8, 0x002d3a], + }, + BigNum { + limbs: [0xaa0aa405432df6ef7fba47f56fb3d8, 0x3e710294f33c1a7756ed868ab15142, 0x005dc7], + }, + BigNum { + limbs: [0x13995efabb2e08108045b70a904c29, 0x68e227088a0c18c2811a831726b411, 0x001626], + }, + BigNum { + limbs: [0xe49f3bc59065cd5a9925b13969600f, 0x8418db7c8f6c07faa3df067d96a234, 0x0062b2], + }, + BigNum { + limbs: [0xd904c73a6df631a566da4dc6969ff2, 0x233a4e20eddc2b3f3429032441631e, 0x00113b], + }, + BigNum { + limbs: [0x08f69bb5a34d7a4d4166e5018414f8, 0x0bd90a98a833477c49bd9f429e3221, 0x006bd5], + }, + BigNum { + limbs: [0xb4ad674a5b0e84b2be9919fe7beb09, 0x9b7a1f04d514ebbd8e4a6a5f39d332, 0x000818], + }, + BigNum { + limbs: [0x858e55d4b05011c65654cc6e143494, 0x5f38c3c0928bc650a7b8aabc2c90b0, 0x00637a], + }, + BigNum { + limbs: [0x3815ad2b4e0bed39a9ab3291ebcb6d, 0x481a65dceabc6ce9304f5ee5ab74a3, 0x001073], + }, + BigNum { + limbs: [0x56451a0f2e97031e3ac422a3bebfce, 0x375f4d14b97ee1c87bd168b412c9dc, 0x0007ce], + }, + BigNum { + limbs: [0x675ee8f0cfc4fbe1c53bdc5c414033, 0x6ff3dc88c3c951715c36a0edc53b77, 0x006c1f], + }, + BigNum { + limbs: [0x203872ef16ad220269e1371ad9a322, 0x6fbb53c9f81b01ac67d632538bc740, 0x00731a], + }, + BigNum { + limbs: [0x9d6b9010e7aedcfd961ec7e5265cdf, 0x3797d5d3852d318d7031d74e4c3e13, 0x0000d3], + }, + BigNum { + limbs: [0x46ca8e879475036676bb13db1cfdd7, 0xb14784ed9323b84e3224c2e800f6bf, 0x0044df], + }, + BigNum { + limbs: [0x76d9747869e6fb998944eb24e3022a, 0xf60ba4afea247aeba5e346b9d70e94, 0x002f0d], + }, + BigNum { + limbs: [0x3f2f1cdac0bdd61490fae57a7c33a7, 0xe357b3f96e6d94c1b71405e3140b1f, 0x001189], + }, + BigNum { + limbs: [0x7e74e6253d9e28eb6f05198583cc5a, 0xc3fb75a40eda9e7820f403bec3fa34, 0x006263], + }, + BigNum { + limbs: [0x55ed36483309549cee4813c5113cae, 0x623b190ab7ecc0e1424947746063b4, 0x006bbf], + }, + BigNum { + limbs: [0x67b6ccb7cb52aa6311b7eb3aeec353, 0x45181092c55b725895bec22d77a19f, 0x00082e], + }, + BigNum { + limbs: [0x1b0f77f0d55ea106e039f68e5ab3dd, 0x860235a7434baffb53bd6eab1fa801, 0x003664], + }, + BigNum { + limbs: [0xa2948b0f28fd5df91fc60871a54c24, 0x2150f3f639fc833e844a9af6b85d52, 0x003d89], + }, + BigNum { + limbs: [0xe78026be2d5e7457717af258d76b50, 0xdacf4627bc5be4665ae77a4160334d, 0x000eeb], + }, + BigNum { + limbs: [0xd623dc41d0fd8aa88e850ca72894b1, 0xcc83e375c0ec4ed37d208f6077d205, 0x006501], + }, + BigNum { + limbs: [0x67bb8c3c1db6ea8505ca50e03d6419, 0x9cbef4cf3ede358ff43badf4f95a4a, 0x004340], + }, + BigNum { + limbs: [0x55e876c3e0a5147afa35ae1fc29be8, 0x0a9434ce3e69fda9e3cc5bacdeab09, 0x0030ad], + }, + BigNum { + limbs: [0x5f6b1fce35a767a42cef3b59936aca, 0x330034910c6106697712ede6bda93f, 0x006c0d], + }, + BigNum { + limbs: [0x5e38e331c8b4975bd310c3a66c9537, 0x7452f50c70e72cd060f51bbb1a5c14, 0x0007e0], + }, + BigNum { + limbs: [0x3a056f49df88978ecfab339e06cb5b, 0x2071f73b29bb76665151b4cb89bba9, 0x000d56], + }, + BigNum { + limbs: [0x839e93b61ed367713054cb61f934a6, 0x86e13262538cbcd386b654d64e49aa, 0x006697], + }, + BigNum { + limbs: [0xef2c4c46e3ffffcb692d0528f44414, 0xacccb9468e3c4282dc4972a3cca5fb, 0x0005ca], + }, + BigNum { + limbs: [0xce77b6b91a5bff3496d2f9d70bbbed, 0xfa867056ef0bf0b6fbbe96fe0b5f57, 0x006e22], + }, + BigNum { + limbs: [0x881eea9a94f19f18bb67ac498bb306, 0xdd3a18e8bc717109bb87546c7be526, 0x001055], + }, + BigNum { + limbs: [0x35851865696a5fe7449852b6744cfb, 0xca1910b4c0d6c2301c80b5355c202d, 0x006397], + }, + BigNum { + limbs: [0xa7f2c626b2e4def707a2d2027625b3, 0x9b9923940fc900b3afc1442ae9abaf, 0x006fa1], + }, + BigNum { + limbs: [0x15b13cd94b772008f85d2cfd89da4e, 0x0bba06096d7f32862846c576ee59a4, 0x00044c], + }, + BigNum { + limbs: [0x10558d9aa509ab0e5ae9a70d5d061a, 0xc356d0de01d48ff79d5e980fce6409, 0x004e6f], + }, + BigNum { + limbs: [0xad4e7565595253f1a51657f2a2f9e7, 0xe3fc58bf7b73a3423aa9719209a14a, 0x00257d], + }, + BigNum { + limbs: [0x23c188df7ce263b135c7a97914d377, 0x39349820411f5fc93aca2333a367b1, 0x0031d6], + }, + BigNum { + limbs: [0x99e27a2081799b4eca385586eb2c8a, 0x6e1e917d3c28d3709d3de66e349da2, 0x004217], + }, + BigNum { + limbs: [0x6246eaafa91200119436ea05caedb2, 0xfe0d05b931869a29e30166d46cc7b6, 0x004b5e], + }, + BigNum { + limbs: [0x5b5d18505549feee6bc914fa35124f, 0xa94623e44bc1990ff506a2cd6b3d9d, 0x00288e], + }, + BigNum { + limbs: [0x9d99175038716628f47d40e82d15bd, 0x093fd8cc8c196a702485b38d5808f4, 0x00713d], + }, + BigNum { + limbs: [0x200aebafc5ea98d70b82be17d2ea44, 0x9e1350d0f12ec8c9b38256147ffc5f, 0x0002b0], + }, + BigNum { + limbs: [0xeb780345d8d48e768d55926c7e753e, 0x99ddf792e5371ad4958bc9e7000449, 0x005664], + }, + BigNum { + limbs: [0xd22bffba2587708972aa6c93818ac3, 0x0d75320a98111865427c3fbad80109, 0x001d89], + }, + BigNum { + limbs: [0x252bfa132081f9d0568f04b84b2a00, 0x3359a03f722a55433db658105171ca, 0x00726e], + }, + BigNum { + limbs: [0x987808ecddda052fa970fa47b4d601, 0x73f9895e0b1dddf69a51b191869389, 0x00017f], + }, + BigNum { + limbs: [0x4430904a87ce25144f897786ee3fb6, 0x09193ddd55abe3de5d7d83eacc3d55, 0x002f75], + }, + BigNum { + limbs: [0x797372b5768dd9ebb076877911c04b, 0x9e39ebc0279c4f5b7a8a85b70bc7fe, 0x004478], + }, + BigNum { + limbs: [0xe4fb2dcb4d9f1a4a9ebdd727b87a2e, 0x2b3e89f62de6e60238fe7599d7ec10, 0x0062ab], + }, + BigNum { + limbs: [0xd8a8d534b0bce4b5614227d84785d3, 0x7c149fa74f614d379f099408001942, 0x001142], + }, + BigNum { + limbs: [0xd620293ae0ef1d9da284bedb2f43d0, 0x180a5114016f798c9348185b0382e2, 0x003b69], + }, + BigNum { + limbs: [0xe783d9c51d6ce1625d7b4024d0bc31, 0x8f48d8897bd8b9ad44bff146d48270, 0x003884], + }, + BigNum { + limbs: [0x6e4a6abf88d933719ae8985de5540a, 0x852ff0a7b43ffbb7a8b0d7b33af34c, 0x002eae], + }, + BigNum { + limbs: [0x4f5998407582cb8e651766a21aabf7, 0x222338f5c90837822f5731ee9d1207, 0x00453f], + }, + BigNum { + limbs: [0xcc886ec1f3ffe0d1b7b97da44a349a, 0x156b1645203e0188cbbb016cf2efe2, 0x006934], + }, + BigNum { + limbs: [0xf11b943e0a5c1e2e4846815bb5cb67, 0x91e813585d0a31b10c4d0834e51570, 0x000ab9], + }, + BigNum { + limbs: [0xa3311e69461863c932b24d441a3598, 0x4a6827f60d795efd1735c252faeb40, 0x0061aa], + }, + BigNum { + limbs: [0x1a72e496b8439b36cd4db1bbe5ca69, 0x5ceb01a76fced43cc0d2474edd1a13, 0x001243], + }, + BigNum { + limbs: [0x82345ac27d7e4868b67310ef09a9cb, 0x92f702edb6d0f2507c5f193db6176b, 0x00110f], + }, + BigNum { + limbs: [0x3b6fa83d80ddb697498cee10f65636, 0x145c26afc67740e95ba8f06421ede8, 0x0062de], + }, + BigNum { + limbs: [0xdb0f7c98858057112f96e2b0f9b3dd, 0x58e0c574d4f3d63057d2ac2decc1c8, 0x001a68], + }, + BigNum { + limbs: [0xe294866778dba7eed0691c4f064c24, 0x4e726428a8545d0980355d73eb438a, 0x005985], + }, + BigNum { + limbs: [0x8c7c2afe21b8d4c669d39e6258ef1e, 0x02a17e71df56bfb88204fb95d7509b, 0x001696], + }, + BigNum { + limbs: [0x3127d801dca32a39962c609da710e3, 0xa4b1ab2b9df1738156030e0c00b4b8, 0x005d57], + }, + BigNum { + limbs: [0x4b6eef836791e9f54098590590f97a, 0x18a877b7ab1d7cfa546e4bac4497c4, 0x002a75], + }, + BigNum { + limbs: [0x7235137c96ca150abf67a5fa6f0687, 0x8eaab1e5d22ab63f8399bdf5936d8f, 0x004978], + }, + BigNum { + limbs: [0xda57a2483dd819a0521ef18aeb112b, 0x741f3f8e164dd0c49746d9253f440e, 0x005928], + }, + BigNum { + limbs: [0xe34c60b7c083e55fade10d7514eed6, 0x3333ea0f66fa627540c1307c98c144, 0x001ac5], + }, + BigNum { + limbs: [0x6d9efa01c14d946eb5dc3197a8ef92, 0x93e8f9bde758fed2674d81d6135835, 0x001439], + }, + BigNum { + limbs: [0x500508fe3d0e6a914a23cd6857106f, 0x136a2fdf95ef346770ba87cbc4ad1e, 0x005fb4], + }, + BigNum { + limbs: [0x6b343de16bed11f7715c2b59ea6e61, 0x4bd44428726e555938660d5f1259af, 0x003451], + }, + BigNum { + limbs: [0x526fc51e926eed088ea3d3a61591a0, 0x5b7ee5750ad9dde09fa1fc42c5aba4, 0x003f9c], + }, + BigNum { + limbs: [0xd7adea656c88ebe1c73198fced09ec, 0x858f3343b72247e4ce45ae3b842b6b, 0x0004ba], + }, + BigNum { + limbs: [0xe5f6189a91d3131e38ce660312f615, 0x21c3f659c625eb5509c25b6653d9e7, 0x006f33], + }, + BigNum { + limbs: [0x4396812497c58b3d6e0eb2267582d7, 0x19f1fc6fe5a19f799a4ac31e134aad, 0x00342f], + }, + BigNum { + limbs: [0x7a0d81db669673c291f14cd98a7d2a, 0x8d612d2d97a693c03dbd4683c4baa6, 0x003fbe], + }, + BigNum { + limbs: [0x330ac33976577896e7cd165be118af, 0x513188184d1e47fe7c0925272dc385, 0x006c00], + }, + BigNum { + limbs: [0x8a993fc6880486691832e8a41ee752, 0x5621a1853029eb3b5bfee47aaa41ce, 0x0007ed], + }, + BigNum { + limbs: [0xb422e761321f21d09645fe30b61c23, 0x9970ea51b0e6b23e7b35ed24a1e5c7, 0x00395c], + }, + BigNum { + limbs: [0x09811b9ecc3cdd2f69ba00cf49e3de, 0x0de23f4bcc6180fb5cd21c7d361f8c, 0x003a91], + }, + BigNum { + limbs: [0x0b160cf2d6797490f41560b245b067, 0xffc2ee6b0313ed07699a98a0e39141, 0x004a5a], + }, + BigNum { + limbs: [0xb28df60d27e28a6f0bea9e4dba4f9a, 0xa7903b327a3446326e6d7100f47412, 0x002992], + }, + BigNum { + limbs: [0xaba6e2d7d140d91f7cc4829e8423a4, 0xb6b450e6f2baafc992e5de759fc13a, 0x002110], + }, + BigNum { + limbs: [0x11fd20282d1b25e0833b7c617bdc5d, 0xf09ed8b68a8d837045222b2c384419, 0x0052dc], + }, + BigNum { + limbs: [0xa01148af98688c508dd3077d60548f, 0x935af62d62298775e60c31411c7d36, 0x0013e9], + }, + BigNum { + limbs: [0x1d92ba5065f372af722cf7829fab72, 0x13f833701b1eabc3f1fbd860bb881d, 0x006004], + }, + BigNum { + limbs: [0xc7276b0e0087cc7eb1318aca4306de, 0x43d57eb232ec56fb40f6e0bf66906e, 0x004451], + }, + BigNum { + limbs: [0xf67c97f1fdd432814ece7435bcf923, 0x637daaeb4a5bdc3e971128e27174e4, 0x002f9c], + }, + BigNum { + limbs: [0xeba7f573b3b0edb038298303139ae1, 0xe4ce8328676baf6a10b22f3eda88c1, 0x001629], + }, + BigNum { + limbs: [0xd1fc0d8c4aab114fc7d67bfcec6520, 0xc284a67515dc83cfc755da62fd7c91, 0x005dc3], + }, + BigNum { + limbs: [0x9bcab0951254eec1d795605c9454e1, 0x4f1ed5f3daea6d94451f7d62139849, 0x0030d1], + }, + BigNum { + limbs: [0x21d9526aec07103e286a9ea36bab20, 0x583453a9a25dc5a592e88c3fc46d0a, 0x00431c], + }, + BigNum { + limbs: [0x015a142b676f214fde7e2d7a559fd3, 0x6fb6de21ab8a003f81fccd9c6817e5, 0x00083d], + }, + BigNum { + limbs: [0xbc49eed496ecddb02181d185aa602e, 0x379c4b7bd1be32fa560b3c056fed6e, 0x006bb0], + }, + BigNum { + limbs: [0xb05750b0757d9b1b525693c4fdf276, 0xa020a192f58550d8f5fae982ba3ffb, 0x006226], + }, + BigNum { + limbs: [0x0d4cb24f88de63e4ada96b3b020d8b, 0x0732880a87c2e260e20d201f1dc558, 0x0011c7], + }, + BigNum { + limbs: [0x9589c6d02e429124ca49ae2654cfed, 0x93b1dca7fd1456679d9af60081e614, 0x000055], + }, + BigNum { + limbs: [0x281a3c2fd0196ddb35b650d9ab3014, 0x13a14cf58033dcd23a6d13a1561f3f, 0x007398], + }, + BigNum { + limbs: [0xe5f85ddf3c1b5cb31a1acd9d26ce3c, 0x0c64c68dd203f81ab9316428dff763, 0x003505], + }, + BigNum { + limbs: [0xd7aba520c240a24ce5e53162d931c5, 0x9aee630fab443b1f1ed6a578f80def, 0x003ee8], + }, + BigNum { + limbs: [0xaa559c25a323066982caeaed4863fd, 0x51ff3b932efd9f1ca45610bea15005, 0x000405], + }, + BigNum { + limbs: [0x134e66da5b38f8967d351412b79c04, 0x5553ee0a4e4a941d33b1f8e336b54e, 0x006fe8], + }, + BigNum { + limbs: [0x7c55cac91b46847d77398fb0253409, 0x54aa601bd20e14bc524e83f5dfdf0a, 0x0018aa], + }, + BigNum { + limbs: [0x414e3836e3157a8288c66f4fdacbf8, 0x52a8c981ab3a1e7d85b985abf82649, 0x005b43], + }, + BigNum { + limbs: [0x72ebfd53689d24efb99d766acb5fd5, 0x53b4e3288a76fc3f7b8a3bd7c507c1, 0x0018af], + }, + BigNum { + limbs: [0x4ab805ac95beda104662889534a02c, 0x539e4674f2d136fa5c7dcdca12fd92, 0x005b3e], + }, + BigNum { + limbs: [0xfd1bdd35d3c9d1c6cbff4af2be3916, 0x1e437926a687585966d8d7855d16d5, 0x00274d], + }, + BigNum { + limbs: [0xc08825ca2a922d393400b40d41c6eb, 0x890fb076d6c0dae0712f321c7aee7d, 0x004ca0], + }, + BigNum { + limbs: [0xb77311aa5733c02e36541e5c44ddc4, 0xf70a9c158f6fb5fca7743791401f4b, 0x00649c], + }, + BigNum { + limbs: [0x0630f155a7283ed1c9abe0a3bb223d, 0xb0488d87edd87d3d3093d21097e608, 0x000f50], + }, + BigNum { + limbs: [0xbec17bd32d28f964b877880b7bd162, 0x1c8e1645a812d561eb297d716c3f6e, 0x004732], + }, + BigNum { + limbs: [0xfee2872cd133059b478876f4842e9f, 0x8ac51357d5355dd7ecde8c306bc5e4, 0x002cbb], + }, + BigNum { + limbs: [0x4b9abc640df6a92392180523c30faa, 0xccb911dcb1ae544edf064df058b8a6, 0x000b8b], + }, + BigNum { + limbs: [0x7209469bf06555dc6de7f9dc3cf057, 0xda9a17c0cb99deeaf901bbb17f4cad, 0x006861], + }, + BigNum { + limbs: [0x43fba07004bb352fb97ddcbb685b7e, 0xfb15e4fc1addd4df8ea0dd402af30b, 0x0016aa], + }, + BigNum { + limbs: [0x79a8628ff9a0c9d04682224497a483, 0xac3d44a1626a5e5a49672c61ad1248, 0x005d42], + }, + BigNum { + limbs: [0x56e2bbfada26463ad32c3398b4cb0a, 0xf0957745c50282acff8e98d64e22c9, 0x003095], + }, + BigNum { + limbs: [0x66c147052435b8c52cd3cb674b34f7, 0xb6bdb257b845b08cd87970cb89e28a, 0x004357], + }, + BigNum { + limbs: [0x31dfefa8056f0bb4ad409f0a9afc82, 0x9150327c8a8167c605fb4aa50a4642, 0x002e81], + }, + BigNum { + limbs: [0x8bc41357f8ecf34b52bf5ff565037f, 0x1602f720f2c6cb73d20cbefccdbf11, 0x00456c], + }, + BigNum { + limbs: [0xe90e9f0a64c08bc2c919362a37a2f5, 0x90bdf40839f0ea8ca59fb662da9e1f, 0x003872], + }, + BigNum { + limbs: [0xd49563f5999b733d36e6c8d5c85d0c, 0x16953595435748ad3268533efd6733, 0x003b7b], + }, + BigNum { + limbs: [0x071011023ca1f11813365f2e4dd33f, 0x63d9876c3af1054103abfd750fa7e3, 0x0073d8], + }, + BigNum { + limbs: [0xb693f1fdc1ba0de7ecc99fd1b22cc2, 0x4379a23142572df8d45c0c2cc85d70, 0x000015], + }, + BigNum { + limbs: [0x694ee83ae27a47bed39a0919fadbc3, 0x4a3b47df5caa2bdad7b86e55e1c1cc, 0x0030e6], + }, + BigNum { + limbs: [0x54551ac51be1b7412c65f5e605243e, 0x5d17e1be209e075f004f9b4bf64387, 0x004307], + }, + BigNum { + limbs: [0x5e55696d530d23c829d3b1ec72d08f, 0xc09602866dfdcaae5a41e711829dab, 0x003c1e], + }, + BigNum { + limbs: [0x5f4e9992ab4edb37d62c4d138d2f72, 0xe6bd27170f4a688b7dc622905567a8, 0x0037ce], + }, + BigNum { + limbs: [0x288cf2ea23bfefa96caf3ac3f8ba22, 0xb3275950a9f9c4441b6584b2104f8d, 0x00719f], + }, + BigNum { + limbs: [0x95171015da9c0f569350c43c0745df, 0xf42bd04cd34e6ef5bca284efc7b5c6, 0x00024d], + }, + BigNum { + limbs: [0x8bc3b8285c996dbad4d376d1513768, 0x7256e5b76cb3175f0352ab72b4f874, 0x005ebd], + }, + BigNum { + limbs: [0x31e04ad7a1c291452b2c882eaec899, 0x34fc43e610951bdad4b55e2f230cdf, 0x001530], + }, + BigNum { + limbs: [0x894a39cb116c525af67e8ae5be1bb2, 0x8c6cd36c4d58e020f6ea3ff00d743a, 0x00625d], + }, + BigNum { + limbs: [0x3459c934ecefaca50981741a41e44f, 0x1ae656312fef5318e11dc9b1ca9119, 0x001190], + }, + BigNum { + limbs: [0x25e1a5766d24382bb250f695030649, 0xd5ae6d99265b8f18e758585cbb43c1, 0x005977], + }, + BigNum { + limbs: [0x97c25d899137c6d44daf086afcf9b8, 0xd1a4bc0456eca420f0afb1451cc192, 0x001a75], + }, + BigNum { + limbs: [0x108a14b7c70a6ad26c4075ed336c51, 0x0b039e7a6793034fce3be69716022a, 0x0041dd], + }, + BigNum { + limbs: [0xad19ee483751942d93bf8912cc93b0, 0x9c4f8b2315b52fea09cc230ac20329, 0x003210], + }, + BigNum { + limbs: [0x73d08bc76ccf5ba34807979b0215f8, 0x672456cb0e4d663c27a5ae14f1c97c, 0x006b48], + }, + BigNum { + limbs: [0x49d37738918ca35cb7f86764fdea09, 0x402ed2d26efaccfdb0625b8ce63bd7, 0x0008a5], + }, + BigNum { + limbs: [0xb194d22c9353d04f23e87d934f1f96, 0xd299fff47a28674a00d694f09259c6, 0x006a55], + }, + BigNum { + limbs: [0x0c0f30d36b082eb0dc17816cb0e06b, 0xd4b929a9031fcbefd73174b145ab8d, 0x000997], + }, + BigNum { + limbs: [0xe60667a30dabcfb52e13c743b9975c, 0x9bbee3ad9bc81a5f72c6f875ee7602, 0x001460], + }, + BigNum { + limbs: [0xd79d9b5cf0b02f4ad1ec37bc4668a5, 0x0b9445efe18018da6541112be98f50, 0x005f8d], + }, + BigNum { + limbs: [0xab86dadb989e51f0cbebe282c25f67, 0x985bbe50fcdf18c268a03833d98497, 0x0007a0], + }, + BigNum { + limbs: [0x121d282465bdad0f34141c7d3da09a, 0x0ef76b4c80691a776f67d16dfe80bc, 0x006c4d], + }, + BigNum { + limbs: [0xda7702676dea396d79c4d11332d72d, 0x2e7430a3a2a093042049534a4e9515, 0x004eda], + }, + BigNum { + limbs: [0xe32d00989071c592863b2deccd28d4, 0x78def8f9daa7a035b7beb65789703d, 0x002513], + }, + BigNum { + limbs: [0x3fea587c4affedc04f2ce41153449c, 0x22a7edcf8fa76606557aaa616f7f58, 0x003eaa], + }, + BigNum { + limbs: [0x7db9aa83b35c113fb0d31aeeacbb65, 0x84ab3bcdeda0cd33828d5f406885fb, 0x003543], + }, + BigNum { + limbs: [0xd6197d6c736880f50cd1a8e4c2db19, 0x175965785290878d175aaf9256fc91, 0x003bdf], + }, + BigNum { + limbs: [0xe78a85938af37e0af32e561b3d24e8, 0x8ff9c4252ab7abacc0ad5a0f8108c1, 0x00380e], + }, + BigNum { + limbs: [0xd541ba86f98b53e4a9ecb7395b88da, 0xdd06325810ac9f0db723ad6706b7b6, 0x002288], + }, + BigNum { + limbs: [0xe862487904d0ab1b561347c6a47727, 0xca4cf7456c9b942c20e45c3ad14d9c, 0x005164], + }, + BigNum { + limbs: [0xea6811be9c622d4a838b5d59cd79e5, 0x1f1b5c49c83409f1ca610a08f16655, 0x006d03], + }, + BigNum { + limbs: [0xd33bf14161f9d1b57c74a1a632861c, 0x8837cd53b51429480da6ff98e69efd, 0x0006ea], + }, + BigNum { + limbs: [0x4e1e3ba38d57fa7de6ee5fb11c8691, 0xc39cc1085e035b0395f3cb50c20339, 0x000d8b], + }, + BigNum { + limbs: [0x6f85c75c7104048219119f4ee37970, 0xe3b668951f44d83642143e5116021a, 0x006661], + }, + BigNum { + limbs: [0x11bb5ed43415b6eaa3a247fac9045c, 0x8ce61b57c643fab4ad0b6127b0bdf5, 0x006200], + }, + BigNum { + limbs: [0xabe8a42bca4648155c5db70536fba5, 0x1a6d0e45b70438852afca87a27475e, 0x0011ed], + }, + BigNum { + limbs: [0x66edf951391e017027b8876a00b1dd, 0x16bac381fe479a73369f5b7b9fbd66, 0x00269e], + }, + BigNum { + limbs: [0x56b609aec53dfd8fd8477795ff4e24, 0x9098661b7f0098c6a168ae263847ed, 0x004d4f], + }, + BigNum { + limbs: [0x8d3bda72fe32ac556446a1e4c8b12c, 0xdecdc861cdd2ba3c1894e10b47bb26, 0x0070a1], + }, + BigNum { + limbs: [0x3068288d002952aa9bb95d1b374ed5, 0xc885613baf7578fdbf732896904a2d, 0x00034b], + }, + BigNum { + limbs: [0xc2aede9421fa9e20d9bfae30c1dd53, 0x261192cf65c5eb82149a7ac5fda4ff, 0x0041af], + }, + BigNum { + limbs: [0xfaf5246bdc6160df264050cf3e22ae, 0x814196ce178247b7c36d8edbda6053, 0x00323e], + }, + BigNum { + limbs: [0x39f3a6db6531cdca1cb78883b5501f, 0x26227262918465175978507ae3f87a, 0x00650f], + }, + BigNum { + limbs: [0x83b05c24992a3135e348767c4aafe2, 0x8130b73aebc3ce227e8fb926f40cd9, 0x000ede], + }, + BigNum { + limbs: [0xc37dd45f1728e7f0d65f4eb1657ebb, 0xcbf627e693d811320caaca8a58a05a, 0x005d7a], + }, + BigNum { + limbs: [0xfa262ea0e733170f29a0b04e9a8146, 0xdb5d01b6e9702207cb5d3f177f64f8, 0x001672], + }, + BigNum { + limbs: [0xf0213a7d775a248c5cb6eb5617be18, 0x3d8529f4a57d3684ca197cb9b2697e, 0x0032a6], + }, + BigNum { + limbs: [0xcd82c8828701da73a34913a9e841e9, 0x69cdffa8d7cafcb50dee8ce8259bd4, 0x004147], + }, + BigNum { + limbs: [0x28b34e361f477916846a9d93c59012, 0x68771297c5f5cab5e5b78e6a8640e0, 0x000bb8], + }, + BigNum { + limbs: [0x94f0b4c9df1485e97b95616c3a6fef, 0x3edc1705b7526883f2507b3751c473, 0x006835], + }, + BigNum { + limbs: [0x2fcc7b4c5132e44eade4f1a131233d, 0x24993436058950f7e263c54ee6a9b5, 0x0053e3], + }, + BigNum { + limbs: [0x8dd787b3ad291ab1521b0d5ecedcc4, 0x82b9f56777bee241f5a44452f15b9e, 0x00200a], + }, + BigNum { + limbs: [0xe3b4dbe22b4392311d3304db643695, 0x6c675105ced67e07f5abd08cc0fb81, 0x00118c], + }, + BigNum { + limbs: [0xd9ef271dd3186ccee2ccfa249bc96c, 0x3aebd897ae71b531e25c39151709d1, 0x006261], + }, + BigNum { + limbs: [0xf11efe066d096281a3dfb44cd7d165, 0x9692bcbb22f340a207f615ad60750f, 0x003157], + }, + BigNum { + limbs: [0xcc8504f991529c7e5c204ab3282e9c, 0x10c06ce25a54f297d011f3f4779043, 0x004296], + }, + BigNum { + limbs: [0xdcb69c52a4e2ed82c4a6de94c8bf96, 0xadb5b738776bd7f6723b1e2ff13929, 0x0005c6], + }, + BigNum { + limbs: [0xe0ed66ad5979117d3b59206b37406b, 0xf99d726505dc5b4365cceb71e6cc29, 0x006e26], + }, + BigNum { + limbs: [0xbdddcc8bf7cd9ed4857eba4432963c, 0xae7241f1a002af8f5d5d7f44857a7f, 0x001987], + }, + BigNum { + limbs: [0xffc63674068e602b7a8144bbcd69c5, 0xf8e0e7abdd4583aa7aaa8a5d528ad3, 0x005a65], + }, + BigNum { + limbs: [0x403fec5dd82b2b02f99d83bd109f22, 0xad7b8eb369ebc5844282de960e20ea, 0x004e19], + }, + BigNum { + limbs: [0x7d6416a22630d3fd06627b42ef60df, 0xf9d79aea135c6db595852b0bc9e469, 0x0025d3], + }, + BigNum { + limbs: [0x667871334f5a17c81450fbaf4bac63, 0x8c39463268f3eff98a4b7b39d85563, 0x0054d1], + }, + BigNum { + limbs: [0x572b91ccaf01e737ebaf0350b4539e, 0x1b19e36b145443404dbc8e67ffaff0, 0x001f1c], + }, + BigNum { + limbs: [0xe5f786d3627dca98b3217a2417eb91, 0x2b1650a62e0d01d8396db702f1cebe, 0x007322], + }, + BigNum { + limbs: [0xd7ac7c2c9bde34674cde84dbe81470, 0x7c3cd8f74f3b31619e9a529ee63694, 0x0000cb], + }, + BigNum { + limbs: [0x14442a81d5dacf112f0e1c1ea12f87, 0x8dc193c234980989fd6dc601cf00dc, 0x0039df], + }, + BigNum { + limbs: [0xa95fd87e28812feed0f1e2e15ed07a, 0x199195db48b029afda9a43a0090477, 0x003a0e], + }, + BigNum { + limbs: [0x921cee975fa0e584ce4ae1e892a3c5, 0xc62efbed2b5cecef70db4531b7f32d, 0x000c2f], + }, + BigNum { + limbs: [0x2b8714689ebb197b31b51d176d5c3c, 0xe1242db051eb464a672cc470201226, 0x0067bd], + }, + BigNum { + limbs: [0x80e62a591e130ddff868f0a741ce9b, 0x73617687ce3861a1cbdaf40353ac4d, 0x005d2b], + }, + BigNum { + limbs: [0x3cbdd8a6e048f12007970e58be3166, 0x33f1b315af0fd1980c2d159e845906, 0x0016c2], + }, + BigNum { + limbs: [0xbebbfef511cfe3de78900fcc779e4b, 0x5e5d2d844e5ab78ecd7e8bbf2f114f, 0x004cc8], + }, + BigNum { + limbs: [0xfee8040aec8c1b21876fef338861b6, 0x48f5fc192eed7bab0a897de2a8f403, 0x002725], + }, + BigNum { + limbs: [0xfb644fa915d933a7364690463b8c5a, 0x3da87aae9f28ef0fa6840d0fb03214, 0x0035f4], + }, + BigNum { + limbs: [0xc23fb356e882cb58c9b96eb9c473a7, 0x69aaaeeede1f442a3183fc9227d33e, 0x003df9], + }, + BigNum { + limbs: [0x291078c0516e965d1f8871ac8e55dd, 0xd8a29031fa3b19ae5ba085ac0ef4a6, 0x005a92], + }, + BigNum { + limbs: [0x94938a3faced68a2e0778d5371aa24, 0xceb0996b830d198b7c6783f5c910ad, 0x00195a], + }, + BigNum { + limbs: [0xbe569a3a31f165c75c815f425cadf6, 0x91d2ea1bb63a6725ce5bff1ee40056, 0x003c67], + }, + BigNum { + limbs: [0xff4d68c5cc6a9938a37e9fbda3520b, 0x15803f81c70dcc1409ac0a82f404fc, 0x003786], + }, + BigNum { + limbs: [0xd4e8f014ba143af233e178fcd9035e, 0x187a05e3c16ef03e7c1f872a7e3d16, 0x007309], + }, + BigNum { + limbs: [0xe8bb12eb4447c40dcc1e860326fca3, 0x8ed923b9bbd942fb5be8827759c83c, 0x0000e4], + }, + BigNum { + limbs: [0x72c83deac35889a527d24cb6033b6d, 0x8dae310a1c6ed27159d1f41e8ecf38, 0x002a77], + }, + BigNum { + limbs: [0x4adbc5153b03755ad82db249fcc494, 0x19a4f89360d960c87e36158349361b, 0x004976], + }, + BigNum { + limbs: [0xed383bd6c47164f0f4a28beafd4b05, 0xfe95f6cd1c5ae51f8b3c2f31b064ca, 0x004b19], + }, + BigNum { + limbs: [0xd06bc72939ea9a0f0b5d731502b4fc, 0xa8bd32d060ed4e1a4ccbda7027a088, 0x0028d3], + }, + BigNum { + limbs: [0xc2af4e8c17ec9b12d6d2603dee0fe2, 0xaffd6163c6457b489fed890fd8e5be, 0x0055b0], + }, + BigNum { + limbs: [0xfaf4b473e66f63ed292d9ec211f01f, 0xf755c839b702b7f1381a8091ff1f94, 0x001e3c], + }, + BigNum { + limbs: [0x9902e6b674cd83c44a9dee0b94bba2, 0xe168decf4b8ed4289398be82882966, 0x001896], + }, + BigNum { + limbs: [0x24a11c49898e7b3bb56210f46b445f, 0xc5ea4ace31b95f11446f4b1f4fdbed, 0x005b56], + }, + BigNum { + limbs: [0x4e45ae2b0e3452a4529d1d508d95fc, 0x7722bad2894e16b2203d6eb58db41f, 0x0033f1], + }, + BigNum { + limbs: [0x6f5e54d4f027ac5bad62e1af726a05, 0x30306ecaf3fa1c87b7ca9aec4a5134, 0x003ffc], + }, + BigNum { + limbs: [0x37da9fd247b74cb41071ef7f2aea85, 0x217231241ba8cb044aeeeef2e88ea4, 0x003467], + }, + BigNum { + limbs: [0x85c9632db6a4b24bef8e0f80d5157c, 0x85e0f879619f68358d191aaeef76af, 0x003f86], + }, + BigNum { + limbs: [0x3f627cef182bf8f6139aa4696affcb, 0x10ac5d53a149416469b17618f6a047, 0x005364], + }, + BigNum { + limbs: [0x7e418610e6300609ec655a96950036, 0x96a6cc49dbfef1d56e569388e1650c, 0x002089], + }, + BigNum { + limbs: [0x7e981b72650bfeff3159bca6f143eb, 0xfc526f7aaa2242fa324ea12a7d5c51, 0x0011d4], + }, + BigNum { + limbs: [0x3f0be78d99500000cea642590ebc16, 0xab00ba22d325f03fa5b968775aa902, 0x006218], + }, + BigNum { + limbs: [0xd355e9996feaa77dfbd1f922488ad7, 0xb0058ff22890469a4cefef1ddd319e, 0x005848], + }, + BigNum { + limbs: [0xea4e19668e715782042e05ddb7752a, 0xf74d99ab54b7ec9f8b181a83fad3b4, 0x001ba4], + }, + BigNum { + limbs: [0x71709889e0167d409fadc1390c215b, 0x74aa326c7001fa831c8ac096dad4f9, 0x00693f], + }, + BigNum { + limbs: [0x4c336a761e4581bf60523dc6f3dea6, 0x32a8f7310d4638b6bb7d490afd305a, 0x000aae], + }, + BigNum { + limbs: [0x7f3c55e68a9ebe67f8591eaace97e5, 0x36a927134e53d5de7528fa90299f94, 0x000767], + }, + BigNum { + limbs: [0x3e67ad1973bd409807a6e05531681c, 0x70aa028a2ef45d5b62df0f11ae65bf, 0x006c86], + }, + BigNum { + limbs: [0xd68c4e218d617df86a5774c5ddad45, 0x3791051adf2dcf04d9abd55a75fca8, 0x00056b], + }, + BigNum { + limbs: [0xe717b4de70fa810795a88a3a2252bc, 0x6fc224829e1a6434fe5c34476208aa, 0x006e82], + }, + BigNum { + limbs: [0x7b2013f325133a921b388995bea7fd, 0x97cf9f1de049dea2d37f97aa42f19b, 0x001305], + }, + BigNum { + limbs: [0x4283ef0cd948c46de4c7756a415804, 0x0f838a7f9cfe5497048871f79513b8, 0x0060e8], + }, + BigNum { + limbs: [0x8ab8dd1277fe748ac4ce96c05922c8, 0x10e56eefef4251ebd9d921306ed45a, 0x005d42], + }, + BigNum { + limbs: [0x32eb25ed865d8a753b31683fa6dd39, 0x966dbaad8e05e14dfe2ee8716930f9, 0x0016ab], + }, + BigNum { + limbs: [0x0a4f7342f02550b7dd369ee24a4b2c, 0xfee53953c53b0cfcf5e4fb20e3fa23, 0x0006c4], + }, + BigNum { + limbs: [0xb3548fbd0e36ae4822c9601db5b4d5, 0xa86df049b80d263ce2230e80f40b30, 0x006d28], + }, + BigNum { + limbs: [0x7d50a297e01b9f76128ae4a4ec03cc, 0x48ee592217168094228f05f9a5f7b1, 0x0003cd], + }, + BigNum { + limbs: [0x405360681e405f89ed751a5b13fc35, 0x5e64d07b6631b2a5b57903a8320da2, 0x007020], + }, + BigNum { + limbs: [0x15ef3ee3ffc51b88fd3eb853540a9b, 0x0703b0d3a24c6f57d8c0bf34a21c9a, 0x001d2d], + }, + BigNum { + limbs: [0xa7b4c41bfe96e37702c146acabf566, 0xa04f78c9dafbc3e1ff474a6d35e8b9, 0x0056c0], + }, + BigNum { + limbs: [0xa0e87e3224359144dd54d2b5c75587, 0x4ac46b49ad06003051d8ebe9cfeefb, 0x003126], + }, + BigNum { + limbs: [0x1cbb84cdda266dbb22ab2c4a38aa7a, 0x5c8ebe53d0423309862f1db8081658, 0x0042c7], + }, + BigNum { + limbs: [0x8b986d29b33eb5f0def2eff45786de, 0xc59e71fd63b2bf1d7ff3348ecd758b, 0x0040be], + }, + BigNum { + limbs: [0x320b95d64b1d490f210d0f0ba87923, 0xe1b4b7a01995741c5814d5130a8fc8, 0x00332e], + }, + BigNum { + limbs: [0x99b19c7bca6174d7162d9719890f64, 0x9b45fa34b0b61f0b2d8c094d642020, 0x003b30], + }, + BigNum { + limbs: [0x23f2668433fa8a28e9d267e676f09d, 0x0c0d2f68cc92142eaa7c005473e533, 0x0038bd], + }, + BigNum { + limbs: [0xd107902335e8b13bda35e579e11aaf, 0x059e6e34b922e5757ecbd6781b5e62, 0x002ec2], + }, + BigNum { + limbs: [0xec9c72dcc8734dc425ca19861ee552, 0xa1b4bb68c4254dc4593c3329bca6f0, 0x00452b], + }, + BigNum { + limbs: [0x9e3c15394e6e1b208b52545e33565a, 0x494ae6fc135c86b8d15bf3d84bec66, 0x00191b], + }, + BigNum { + limbs: [0x1f67edc6afede3df74adaaa1cca9a7, 0x5e0842a169ebac8106ac15c98c18ed, 0x005ad2], + }, + BigNum { + limbs: [0x7d4b44384d28349ae50103d6566c65, 0x9d381a6230d31aa9d7cb35b628a6c7, 0x0057ad], + }, + BigNum { + limbs: [0x4058bec7b133ca651afefb29a9939c, 0x0a1b0f3b4c751890003cd3ebaf5e8c, 0x001c40], + }, + BigNum { + limbs: [0x86f87457e8d83a3e453abe1c7e3711, 0x8ca8ab8a88de4e6c5a7b26d84725a4, 0x005162], + }, + BigNum { + limbs: [0x36ab8ea81583c4c1bac540e381c8f0, 0x1aaa7e12f469e4cd7d8ce2c990dfaf, 0x00228b], + }, + BigNum { + limbs: [0xf1a3f8ee19dbd5ae0de328241583d7, 0xf540ec8a19daeeda67854d1fd03c74, 0x00330b], + }, + BigNum { + limbs: [0xcc000a11e4802951f21cd6dbea7c2a, 0xb2123d13636d445f7082bc8207c8de, 0x0040e1], + }, + BigNum { + limbs: [0x7f4a71e8149069d29f8a66433e17c6, 0x9b28721e8abbc3e8f9d6b214dd6309, 0x001c12], + }, + BigNum { + limbs: [0x3e599117e9cb952d607598bcc1e83b, 0x0c2ab77ef28c6f50de31578cfaa24a, 0x0057db], + }, + BigNum { + limbs: [0xa60a12a7fafe3326945a8982257a8c, 0x56b1edc476b1082be230899d88c0b8, 0x002d3f], + }, + BigNum { + limbs: [0x1799f058035dcbd96ba5757dda8575, 0x50a13bd906972b0df5d780044f449b, 0x0046ae], + }, + BigNum { + limbs: [0xeb5269e06340da74ad6f23b8331b7d, 0x812e1d221ea3c3d27fdf06de69822a, 0x00081d], + }, + BigNum { + limbs: [0xd251991f9b1b248b5290db47cce484, 0x26250c7b5ea46f67582902c36e8328, 0x006bd0], + }, + BigNum { + limbs: [0x5d72906ae5974656402311a3c88c0d, 0x20bdebb8c529b77a75fbc3e63a6bd7, 0x0060c5], + }, + BigNum { + limbs: [0x6031729518c4b8a9bfdced5c3773f4, 0x86953de4b81e7bbf620c45bb9d997c, 0x001328], + }, + BigNum { + limbs: [0x8ae0d36eaa8ceeb0ec520770f54dd3, 0x051ba804583083d632fb1caac7277b, 0x005e0e], + }, + BigNum { + limbs: [0x32c32f9153cf104f13adf78f0ab22e, 0xa23781992517af63a50cecf710ddd8, 0x0015df], + }, + BigNum { + limbs: [0x70ca1a6b232d5316951ae5ab0e6a4c, 0x0e9a156bfcdfe7a10eedb8e7072c92, 0x000599], + }, + BigNum { + limbs: [0x4cd9e894db2eabe96ae51954f195b5, 0x98b9143180684b98c91a50bad0d8c1, 0x006e54], + }, + BigNum { + limbs: [0x0f8c6a786fe9e866941a14b23a4155, 0x871fec91df9e50d66999b7f71ecb85, 0x00260d], + }, + BigNum { + limbs: [0xae1798878e7216996be5ea4dc5beac, 0x20333d0b9da9e2636e6e51aab939ce, 0x004de0], + }, + BigNum { + limbs: [0x728f805725223905648a06d5bf4779, 0x9f15f40745862c463c0f6c15f45234, 0x000eac], + }, + BigNum { + limbs: [0x4b1482a8d939c5fa9b75f82a40b888, 0x083d359637c206f39bf89d8be3b31f, 0x006541], + }, + BigNum { + limbs: [0xb10938a76e2590378e47a78cb232a2, 0x99c93e92dfca58c7a298d7828572ca, 0x000550], + }, + BigNum { + limbs: [0x0c9aca5890366ec871b857734dcd5f, 0x0d89eb0a9d7dda72356f321f529289, 0x006e9d], + }, + BigNum { + limbs: [0xe83b231555ac35ead6a82181c19293, 0xa2397a7ac4814435fb53a4ff017529, 0x001f23], + }, + BigNum { + limbs: [0xd568dfeaa8afc9152957dd7e3e6d6e, 0x0519af22b8c6ef03dcb464a2d69029, 0x0054ca], + }, + BigNum { + limbs: [0x6f49efba092206bec4af45a3dd836a, 0x8a349d98ba5804e0a5947115d93a2f, 0x005569], + }, + BigNum { + limbs: [0x4e5a1345f539f8413b50b95c227c97, 0x1d1e8c04c2f02e593273988bfecb24, 0x001e84], + }, + BigNum { + limbs: [0x1b702ad51911966e554ba438256c09, 0x4d7122d117efeb680de72cff169011, 0x006daa], + }, + BigNum { + limbs: [0xa233d82ae54a6891aab45ac7da93f8, 0x59e206cc655847d1ca20dca2c17542, 0x000643], + }, + BigNum { + limbs: [0x3bc1e33db1fabde67e9726e2110a9f, 0x5bf26247526e599fab5a4a1e19cff4, 0x0047a4], + }, + BigNum { + limbs: [0x81e21fc24c6141198168d81deef562, 0x4b60c7562ad9d99a2cadbf83be355f, 0x002c49], + }, + BigNum { + limbs: [0x92dc9c9ab9a192a42416165d386af9, 0x2e6ad1aa805d875c182d7bfe77cc17, 0x0035b9], + }, + BigNum { + limbs: [0x2ac7666544ba6c5bdbe9e8a2c79508, 0x78e857f2fceaabddbfda8da360393c, 0x003e34], + }, + BigNum { + limbs: [0xdbf9d401389e118356c2dfd4542a7e, 0x1beb3356e7eac8b5c49358e42cc261, 0x005d40], + }, + BigNum { + limbs: [0xe1aa2efec5bded7ca93d1f2babd583, 0x8b67f646955d6a841374b0bdab42f1, 0x0016ad], + }, + BigNum { + limbs: [0xde093f86dc82aee638c24bfb618f3f, 0xcc695696e15f33b6703722957141dc, 0x004b57], + }, + BigNum { + limbs: [0xdf9ac37921d95019c73db3049e70c2, 0xdae9d3069be8ff8367d0e70c66c376, 0x002895], + }, + BigNum { + limbs: [0x43cf43b8a4fea9a6910d41d80997d6, 0xb89955f3ac075693ab26c50bb8772e, 0x001b0a], + }, + BigNum { + limbs: [0x79d4bf47595d55596ef2bd27f6682b, 0xeeb9d3a9d140dca62ce144961f8e25, 0x0058e2], + }, + BigNum { + limbs: [0x6df74788bfddf547809a0593c52c29, 0x6e3537a8223b30a23b5534d53e7afc, 0x004be8], + }, + BigNum { + limbs: [0x4facbb773e7e09b87f65f96c3ad3d8, 0x391df1f55b0d02979cb2d4cc998a57, 0x002805], + }, + BigNum { + limbs: [0xecbebc0bb2bede8728abb983c104a2, 0xd259c48b91eaa8064226f6054683bc, 0x003083], + }, + BigNum { + limbs: [0xd0e546f44b9d2078d754457c3efb5f, 0xd4f96511eb5d8b3395e1139c918196, 0x004369], + }, + BigNum { + limbs: [0xd37ff2a87babb380c6c92288db9ca6, 0x72a1f9cd89124eb06d927e27a3fd9e, 0x007289], + }, + BigNum { + limbs: [0xea24105782b04b7f3936dc7724635b, 0x34b12fcff435e4896a758b7a3407b4, 0x000164], + }, + BigNum { + limbs: [0x3a7585c54ec264e3ee86325ff52f02, 0x34796ea0382b31d08ef46443e548e5, 0x000b97], + }, + BigNum { + limbs: [0x832e7d3aaf999a1c1179cca00ad0ff, 0x72d9bafd451d01694913a55df2bc6e, 0x006856], + }, + BigNum { + limbs: [0x83611805de11188d9fc12803667dbf, 0xd8489d9b1d2b7d981b5cc7400d058a, 0x00668c], + }, + BigNum { + limbs: [0x3a42eafa204ae672603ed6fc998242, 0xcf0a8c02601cb5a1bcab4261caffc9, 0x000d60], + }, + BigNum { + limbs: [0x6ace9eee636cfea106cdd2093221c4, 0x25a27aaf423e560d8375b9f57ddb5f, 0x004164], + }, + BigNum { + limbs: [0x52d564119aef005ef9322cf6cdde3d, 0x81b0aeee3b09dd2c54924fac5a29f4, 0x003289], + }, + BigNum { + limbs: [0x804da7679b1f2ab1d8a86c599c1125, 0x37ea83b297acb4d4cac9a82e460d7a, 0x000562], + }, + BigNum { + limbs: [0x3d565b98633cd44e275792a663eedc, 0x6f68a5eae59b7e650d3e617391f7d9, 0x006e8b], + }, + BigNum { + limbs: [0xac81ba0e9f27289accbc94269dcfed, 0xca7fe2354d973f2d66f302fd0a4109, 0x006288], + }, + BigNum { + limbs: [0x112248f15f34d66533436ad9623014, 0xdcd347682fb0f40c711506a4cdc44a, 0x001164], + }, + BigNum { + limbs: [0xaa925bcaf595931a976cec0c95430e, 0xf19446ee388087b66e87e6421ad7f4, 0x006e17], + }, + BigNum { + limbs: [0x1311a73508c66be5689312f36abcf3, 0xb5bee2af44c7ab836980235fbd2d5f, 0x0005d5], + }, + BigNum { + limbs: [0x7eebd047cbc2e51c5ec124a724f5d0, 0xf253594888ee9a00b7f8aae9ee446d, 0x0029f1], + }, + BigNum { + limbs: [0x3eb832b8329919e3a13eda58db0a31, 0xb4ffd054f4599939200f5eb7e9c0e6, 0x0049fb], + }, + BigNum { + limbs: [0xc3721ea6c79959350ce6a6828af90a, 0x65e4d3674be8111f4ebbffa0ac1554, 0x003f1a], + }, + BigNum { + limbs: [0xfa31e45936c2a5caf319587d7506f7, 0x416e56363160221a894c0a012beffe, 0x0034d3], + }, + BigNum { + limbs: [0xc955e365e603ea58bb2d6aa83247db, 0xdb61407a6cf482dcb6fbe1f248d57f, 0x006323], + }, + BigNum { + limbs: [0xf44e1f9a185814a744d29457cdb826, 0xcbf1e9231053b05d210c27af8f2fd3, 0x0010c9], + }, + BigNum { + limbs: [0x78a3d2d41320a58a91e7a363e4bf29, 0xf65a022ccf82e082eced9e4db37053, 0x004043], + }, + BigNum { + limbs: [0x4500302beb3b59756e185b9c1b40d8, 0xb0f92770adc552b6eb1a6b54249500, 0x0033a9], + }, + BigNum { + limbs: [0x51110b4d802457efc0e95192098448, 0x204ab0d2a8638e24584004aba6faa2, 0x001d4a], + }, + BigNum { + limbs: [0x6c92f7b27e37a7103f16ad6df67bb9, 0x870878cad4e4a5157fc804f6310ab1, 0x0056a3], + }, + BigNum { + limbs: [0xa76cbd7137e6f47e6e58015540096f, 0x17e3d47a499280db319a950d9b3877, 0x0024f7], + }, + BigNum { + limbs: [0x1637458ec6750a8191a7fdaabff692, 0x8f6f552333b5b25ea66d74943cccdc, 0x004ef6], + }, + BigNum { + limbs: [0x46cc3132ae68b8a5f2cc3b6ce6684c, 0xaeefe26d6d67ed111551f5aecd91b5, 0x006694], + }, + BigNum { + limbs: [0x76d7d1cd4ff3465a0d33c3931997b5, 0xf86347300fe04628c2b613f30a739e, 0x000d58], + }, + BigNum { + limbs: [0x356ebb9037c6036cf0c644e1105fba, 0xe6ce8ff225aa86da51c04c9130a03f, 0x005271], + }, + BigNum { + limbs: [0x8835476fc695fb930f39ba1eefa047, 0xc08499ab579dac5f8647bd10a76514, 0x00217b], + }, + BigNum { + limbs: [0x71972107f75956b53875e0be421d2a, 0xbd4090207fe16c1f9ade683c154e89, 0x0071bc], + }, + BigNum { + limbs: [0x4c0ce1f80702a84ac78a1e41bde2d7, 0xea12997cfd66c71a3d29a165c2b6ca, 0x000230], + }, + BigNum { + limbs: [0x62cc3eb2ba6bc6f7b5e5dc5beed42f, 0x4302c5125319ab5b6b747430015857, 0x0067d1], + }, + BigNum { + limbs: [0x5ad7c44d43f038084a1a22a4112bd2, 0x6450648b2a2e87de6c939571d6acfc, 0x000c1c], + }, + BigNum { + limbs: [0x4ded5e86515588409b42a1c622af82, 0xc18924c9ff6195534d6b669470a21f, 0x006db9], + }, + BigNum { + limbs: [0x6fb6a479ad0676bf64bd5d39dd507f, 0xe5ca04d37de69de68a9ca30d676334, 0x000633], + }, + BigNum { + limbs: [0xf940aaef199513b2942e1e96335b6e, 0x9fb0976b417260510ce0bd3d0820c3, 0x004908], + }, + BigNum { + limbs: [0xc4635810e4c6eb4d6bd1e069cca493, 0x07a292323bd5d2e8cb274c64cfe48f, 0x002ae5], + }, + BigNum { + limbs: [0x99f96384bc107506288c5822ce5a85, 0x472aaaaaf10a84bbb7015543f86105, 0x0031a4], + }, + BigNum { + limbs: [0x23aa9f7b424b89f9d773a6dd31a57c, 0x60287ef28c3dae7e2106b45ddfa44e, 0x004249], + }, + BigNum { + limbs: [0x380fc7606ef68763087e889370beba, 0xa48e895f4d79a04b607cacfddcb934, 0x0058be], + }, + BigNum { + limbs: [0x85943b9f8f65779cf781766c8f4147, 0x02c4a03e2fce92ee778b5ca3fb4c1f, 0x001b2f], + }, + BigNum { + limbs: [0x0d0e018ef12219eb96289ab55ac431, 0x583bb90996d418302d24d1f9482095, 0x0033d6], + }, + BigNum { + limbs: [0xb09601710d39e51469d7644aa53bd0, 0x4f177093e6741b09aae337a88fe4be, 0x004017], + }, + BigNum { + limbs: [0x720ee1ef0d377d0671c39b05d1219c, 0x0e3c672a9e17fe930bc21be24ae73d, 0x002bb2], + }, + BigNum { + limbs: [0x4b952110f12481f98e3c63fa2ede65, 0x9916c272df3034a6cc45edbf8d1e16, 0x00483b], + }, + BigNum { + limbs: [0x8f937d589f241863fb1675b6ea931b, 0x1c2179e9ba67fb96c016aa69f8fe7b, 0x0010f3], + }, + BigNum { + limbs: [0x2e1085a75f37e69c04e98949156ce6, 0x8b31afb3c2e037a317f15f37df06d8, 0x0062fa], + }, + BigNum { + limbs: [0x56e00d5f1e00882902252fc85dc59c, 0x3e901ee55f3ead151e1a9ffea6d1e0, 0x0020d7], + }, + BigNum { + limbs: [0x66c3f5a0e05b76d6fddacf37a23a65, 0x68c30ab81e098624b9ed69a3313373, 0x005316], + }, + BigNum { + limbs: [0xbc23b54455eb4351ac2ebbbbf58f0f, 0x9056fb6c09d687252eb8459705938c, 0x001765], + }, + BigNum { + limbs: [0x01804dbba870bbae53d143440a70f2, 0x16fc2e317371ac14a94fc40ad271c7, 0x005c88], + }, + BigNum { + limbs: [0x93c6b06754a128dff1056cfd5ec865, 0xf74df5e016d7a53f6b08885f52e784, 0x005e2a], + }, + BigNum { + limbs: [0x29dd5298a9bad6200efa9202a1379c, 0xb00533bd66708dfa6cff8142851dcf, 0x0015c2], + }, + BigNum { + limbs: [0x41d2f6c7f8a9395717a8e61423c05b, 0x3d0053a77263e322f86bf6d0dc3924, 0x0048ae], + }, + BigNum { + limbs: [0x7bd10c3805b2c5a8e85718ebdc3fa6, 0x6a52d5f60ae45016df9c12d0fbcc2f, 0x002b3f], + }, + BigNum { + limbs: [0x709eafc06c4ff19ad80a4b7b416ac5, 0x298eec226cfaea1765007c50fae425, 0x0031fc], + }, + BigNum { + limbs: [0x4d05533f920c0d6527f5b384be953c, 0x7dc43d7b104d492273078d50dd212e, 0x0041f1], + }, + BigNum { + limbs: [0x69099c2b782691822141c76792a203, 0x0bdedfe0d19fff137b4c5c01b22f1a, 0x003789], + }, + BigNum { + limbs: [0x549a66d486356d7ddebe37986d5dfe, 0x9b7449bcaba834265cbbada025d639, 0x003c64], + }, + BigNum { + limbs: [0x09b329fa1577ff554c99286208dfee, 0x6776f189910ff3a606914c38247b25, 0x005a7f], + }, + BigNum { + limbs: [0xb3f0d905e8e3ffaab366d69df72013, 0x3fdc3813ec383f93d176bd69b38a2e, 0x00196e], + }, + BigNum { + limbs: [0x24accfa767b8cf3d2cac8d90592e9c, 0xb0bff695f8bb1988ea48d61b0adbd7, 0x002e0c], + }, + BigNum { + limbs: [0x98f7335896a32fc2d353716fa6d165, 0xf6933307848d19b0edbf3386cd297c, 0x0045e0], + }, + BigNum { + limbs: [0x1c7ac41146f49ac18f962c2f958a43, 0x307fb2724e316afbbe1c20bf199667, 0x0065d9], + }, + BigNum { + limbs: [0xa1293eeeb767643e7069d2d06a75be, 0x76d3772b2f16c83e19ebe8e2be6eec, 0x000e14], + }, + BigNum { + limbs: [0xcd5e72e6bcb06297c78f3489f706ea, 0x1ed60f08ce06aadbb17ef22557b500, 0x005a6f], + }, + BigNum { + limbs: [0xf045901941ab9c683870ca7608f917, 0x887d1a94af41885e2689177c805052, 0x00197e], + }, + BigNum { + limbs: [0xe6b7a3bfecde634244d4514c7912ad, 0x0cb7e84409d6c970aa662616e8b847, 0x0037f5], + }, + BigNum { + limbs: [0xd6ec5f40117d9bbdbb2badb386ed54, 0x9a9b4159737169c92da1e38aef4d0b, 0x003bf8], + }, + BigNum { + limbs: [0x209b1c1b82cb497c47ca08d92d3855, 0x585dfc3bb27bf4ec94f6914ed44415, 0x000f94], + }, + BigNum { + limbs: [0x9d08e6e47b90b583b835f626d2c7ac, 0x4ef52d61cacc3e4d4311785303c13e, 0x006459], + }, + BigNum { + limbs: [0x0c3761f18348336e42f959081acdf7, 0xc7e6d1ada8b1413bf7a2546e4b2a2c, 0x0025f0], + }, + BigNum { + limbs: [0xb16ca10e7b13cb91bd06a5f7e5320a, 0xdf6c57efd496f1fde065b5338cdb27, 0x004dfc], + }, + BigNum { + limbs: [0xbd040be90c1f098bdfa8f11646bfd6, 0x43d46fcb1be37348df13ad0c2a5b55, 0x0010e9], + }, + BigNum { + limbs: [0x009ff716f23cf57420570de9b9402b, 0x637eb9d26164bff0f8f45c95ada9fe, 0x006304], + }, + BigNum { + limbs: [0x1d9aa77779df363215065a4e6c2abd, 0xc6a057415d04ff53233bd8fbdd0586, 0x004fa4], + }, + BigNum { + limbs: [0xa0095b88847cc8cdeaf9a4b193d544, 0xe0b2d25c204333e6b4cc30a5faffcd, 0x002448], + }, + BigNum { + limbs: [0x9cb31f0b9200b0648ac18a60c7b419, 0xedbddad8c9ed9ccc28ba8ce12efb12, 0x001deb], + }, + BigNum { + limbs: [0x20f0e3f46c5b4e9b753e749f384be8, 0xb9954ec4b35a966daf4d7cc0a90a41, 0x005601], + }, + BigNum { + limbs: [0x2e713efdc506192c3fd2500d74ed6a, 0xf5c94a9135d4738d8393fd1f618fcf, 0x005a3e], + }, + BigNum { + limbs: [0x8f32c4023955e5d3c02daef28b1297, 0xb189df0c4773bfac54740c82767584, 0x0019ae], + }, + BigNum { + limbs: [0x019f2521aea11163fdb1347e6d3c9b, 0xa3738160674ee6d82b9f88354b2359, 0x0015f0], + }, + BigNum { + limbs: [0xbc04ddde4fbaed9c024eca8192c366, 0x03dfa83d15f94c61ac68816c8ce1fa, 0x005dfd], + }, + BigNum { + limbs: [0x92fda99d579539f60c1d8e32539eed, 0x186ff76aea8fd621c79e7166b7c3ef, 0x004354], + }, + BigNum { + limbs: [0x2aa65962a6c6c509f3e270cdac6114, 0x8ee3323292b85d181069983b204164, 0x003099], + }, + BigNum { + limbs: [0x4724fc91e126a038f88846a27a42f1, 0x67d8299d6a032639726942cb41b3ab, 0x006903], + }, + BigNum { + limbs: [0x767f066e1d355ec70777b85d85bd10, 0x3f7b000013450d00659ec6d69651a8, 0x000aea], + }, + BigNum { + limbs: [0x36b2bbef5d95fb7d47e495b596c9e9, 0x7f053989ebbecb783501b9ec0fc922, 0x0073b2], + }, + BigNum { + limbs: [0x86f14710a0c60382b81b694a693618, 0x284df013918967c1a3064fb5c83c31, 0x00003b], + }, + BigNum { + limbs: [0xb23ca83d927621d3100b451544eeb2, 0xab0cf321b5b87b7be0e951d31d980f, 0x0001eb], + }, + BigNum { + limbs: [0x0b675ac26be5dd2ceff4b9eabb114f, 0xfc46367bc78fb7bdf71eb7ceba6d44, 0x007201], + }, + BigNum { + limbs: [0x55d00501e227d8804bf625d398d145, 0x32372fc6312f124acc1f42547e59ea, 0x005032], + }, + BigNum { + limbs: [0x67d3fdfe1c34267fb409d92c672ebc, 0x751bf9d74c1920ef0be8c74d59ab69, 0x0023bb], + }, + BigNum { + limbs: [0x179e352fd65140abe985536de528a4, 0xcebd48220fe6df7882f59ab9abc5a7, 0x000597], + }, + BigNum { + limbs: [0xa605cdd0280abe54167aab921ad75d, 0xd895e17b6d6153c155126ee82c3fac, 0x006e55], + }, + BigNum { + limbs: [0x6468c1fc0bd98bc3f6e8b28be3db63, 0x7ef3b4556ef6d679aecad160dc2576, 0x00313f], + }, + BigNum { + limbs: [0x593b4103f282733c09174c741c249e, 0x285f75480e515cc0293d3840fbdfdd, 0x0042ae], + }, + BigNum { + limbs: [0x13470f1ab3da1ef5d61e450be78a51, 0x2f1becd5cc2934506a82aac78647b9, 0x000c05], + }, + BigNum { + limbs: [0xaa5cf3e54a81e00a29e1b9f41875b0, 0x78373cc7b11efee96d855eda51bd9a, 0x0067e8], + }, + BigNum { + limbs: [0x661c5aa57383f79b12c70a99339b94, 0x46dd8726ce03b8415b884acecaf444, 0x001319], + }, + BigNum { + limbs: [0x5787a85a8ad80764ed38f466cc646d, 0x6075a276af447af87c7fbed30d110f, 0x0060d4], + }, + BigNum { + limbs: [0xce5f9885b2f745bfa666b56d5a311a, 0x2668128e4a2bc83ba98b6857538716, 0x000a71], + }, + BigNum { + limbs: [0xef446a7a4b64b94059994992a5cee7, 0x80eb170f331c6afe2e7ca14a847e3c, 0x00697c], + }, + BigNum { + limbs: [0x6aed1a564c146832d3560d5be17df8, 0x52d64d9b5c2fa87d62e7251e9f9727, 0x006b68], + }, + BigNum { + limbs: [0x52b6e8a9b24796cd2ca9f1a41e8209, 0x547cdc0221188abc7520e483386e2c, 0x000885], + }, + BigNum { + limbs: [0xd812068ac8f3657b45e33be2652de0, 0x309990b78e6f19be2ed4aae8454f92, 0x00411b], + }, + BigNum { + limbs: [0xe591fc7535689984ba1cc31d9ad221, 0x76b998e5eed9197ba9335eb992b5c0, 0x0032d2], + }, + BigNum { + limbs: [0xbd51462129070533c31b718832f5e8, 0x19426e03b06186e1de604ed007c9b0, 0x006903], + }, + BigNum { + limbs: [0x0052bcded554f9cc3ce48d77cd0a19, 0x8e10bb99cce6ac57f9a7bad1d03ba3, 0x000aea], + }, + BigNum { + limbs: [0x55d8768e908ff925fd2d98cb6dbbee, 0x8db0c855debd836ab3062d9fa9d8d9, 0x00547a], + }, + BigNum { + limbs: [0x67cb8c716dcc05da02d26634924413, 0x19a261479e8aafcf2501dc022e2c7a, 0x001f73], + }, + BigNum { + limbs: [0x8e0ba527eca417365149025f015d1e, 0xc3152df73f24a32669617e74f15ae1, 0x0070fc], + }, + BigNum { + limbs: [0x2f985dd811b7e7c9aeb6fca0fea2e3, 0xe43dfba63e2390136ea68b2ce6aa72, 0x0002f0], + }, + BigNum { + limbs: [0x8275c394add2deae53a0e275fd0cf4, 0x7b2aeb5230fa2c195afbea2192bd19, 0x00702f], + }, + BigNum { + limbs: [0x3b2e3f6b50892051ac5f1c8a02f30d, 0x2c283e4b4c4e07207d0c1f8045483a, 0x0003be], + }, + BigNum { + limbs: [0xb3c3d1d51852439775462cfb15928e, 0x5b03ee8a9e0c240a6ba7523bd51940, 0x00068f], + }, + BigNum { + limbs: [0x09e0312ae609bb688ab9d204ea6d73, 0x4c4f3b12df3c0f2f6c60b76602ec13, 0x006d5e], + }, + BigNum { + limbs: [0x2b5f0db0dd8f62428bf3d065323436, 0x3195598a28d8092bd18a7ee24d2161, 0x0001e3], + }, + BigNum { + limbs: [0x9244f54f20cc9cbd740c2e9acdcbcb, 0x75bdd01354702a0e067d8abf8ae3f2, 0x00720a], + }, + BigNum { + limbs: [0x9df86f28195171f1fe341312f98924, 0x54eb6b36c54b9602ae7a61023ae791, 0x0031b3], + }, + BigNum { + limbs: [0x1fab93d7e50a8d0e01cbebed0676dd, 0x5267be66b7fc9d37298da89f9d1dc2, 0x00423a], + }, + BigNum { + limbs: [0x32e14ea5c65fd882f06ddfe57fb749, 0xa4854293013e6b346b4a4b01e810da, 0x00109a], + }, + BigNum { + limbs: [0x8ac2b45a37fc267d0f921f1a8048b8, 0x02cde70a7c09c8056cbdbe9feff479, 0x006353], + }, + BigNum { + limbs: [0x423c71ad2b0dfa572131cee36007fa, 0x33b9c1df4ffd1b118bfbe33bd251a0, 0x001467], + }, + BigNum { + limbs: [0x7b679152d34e04a8dece301c9ff807, 0x739967be2d4b18284c0c266605b3b3, 0x005f86], + }, + BigNum { + limbs: [0x4312ad66d4b7e90d2b6da17aab81c3, 0xe4da640bbaac82fcb1b1e258caf7f7, 0x00218a], + }, + BigNum { + limbs: [0x7a91559929a415f2d4925d85547e3e, 0xc278c591c29bb03d265627490d0d5c, 0x005262], + }, + BigNum { + limbs: [0x7b3c07432c4bb846d7751759b82258, 0xbcb86c65c99f9735bdebf5628898ac, 0x00653a], + }, + BigNum { + limbs: [0x4267fbbcd21046b9288ae7a647dda9, 0xea9abd37b3a89c041a1c143f4f6ca7, 0x000eb2], + }, + BigNum { + limbs: [0x9ce7c297ab8d54db615b721e6888d5, 0x889f6574f553a2a6da1423fa9a8a78, 0x002313], + }, + BigNum { + limbs: [0x20bc406852ceaa249ea48ce197772c, 0x1eb3c42887f49092fdf3e5a73d7adb, 0x0050da], + }, + BigNum { + limbs: [0x73546ee70933efffe30ef5a9528edd, 0x0e58e6c6cf02feb911dc3dad3a3bad, 0x0054bc], + }, + BigNum { + limbs: [0x4a4f9418f5280f001cf10956ad7124, 0x98fa42d6ae453480c62bcbf49dc9a6, 0x001f31], + }, + BigNum { + limbs: [0x4b743731d6de69caf95626573b849e, 0x7b4eac93969def71980219544f4fd8, 0x0017e4], + }, + BigNum { + limbs: [0x722fcbce277d953506a9d8a8c47b63, 0x2c047d09e6aa43c84005f04d88b57b, 0x005c09], + }, + BigNum { + limbs: [0x76809182ba32c095d44706ae689c0c, 0xa9f46ae7f49b8041bad9d23de711f3, 0x0070d4], + }, + BigNum { + limbs: [0x4723717d44293e6a2bb8f8519763f5, 0xfd5ebeb588acb2f81d2e3763f0f360, 0x000318], + }, + BigNum { + limbs: [0x4311151b41f2e4a8b188dd1a6a4bf6, 0x66fd2e6a621ba27d46e4e6ebaaab28, 0x002920], + }, + BigNum { + limbs: [0x7a92ede4bc691a574e7721e595b40b, 0x4055fb331b2c90bc912322b62d5a2b, 0x004acd], + }, + BigNum { + limbs: [0x5cb240f458a0411af937dd7884b5bd, 0x5c392742ebcb8eda0f11c5920ab794, 0x004c46], + }, + BigNum { + limbs: [0x60f1c20ba5bbbde506c821877b4a44, 0x4b1a025a917ca45fc8f6440fcd4dbf, 0x0027a7], + }, + BigNum { + limbs: [0x6b26bf3a5b9cedc4de75f89a010b97, 0x7787223bc8fc5a52f2e3933f823d47, 0x006a5b], + }, + BigNum { + limbs: [0x527d43c5a2bf113b218a0665fef46a, 0x2fcc0761b44bd8e6e524766255c80c, 0x000992], + }, + BigNum { + limbs: [0x906daf54262b5a6d913c8a21d61a14, 0xfd20ce3f8b5ded02bf205d2103eac1, 0x00646e], + }, + BigNum { + limbs: [0x2d3653abd830a4926ec374de29e5ed, 0xaa325b5df1ea463718e7ac80d41a92, 0x000f7e], + }, + BigNum { + limbs: [0xd3fa076900a2701dc2e8ce1a0001e5, 0x8a061c5504e40c9c6d744ce76f9570, 0x004bae], + }, + BigNum { + limbs: [0xe9a9fb96fdb98ee23d1730e5fffe1c, 0x1d4d0d487864269d6a93bcba686fe2, 0x00283f], + }, + BigNum { + limbs: [0x841ffb42a9153d71f0aca0022c86e0, 0x0b4a3128782aad8b75eeb88658b3d3, 0x002b1f], + }, + BigNum { + limbs: [0x398407bd5546c18e0f535efdd37921, 0x9c08f875051d85ae6219511b7f5180, 0x0048ce], + }, + BigNum { + limbs: [0x328f11d9cdf877394e8363ac674b29, 0xfea00f8d24bf97d28a6cca10529e21, 0x004b21], + }, + BigNum { + limbs: [0x8b14f126306387c6b17c9b5398b4d8, 0xa8b31a1058889b674d9b3f91856732, 0x0028cb], + }, + BigNum { + limbs: [0x535ba390e22a934f2887da7a4613ac, 0x146fc82c471d6006a526adeef61511, 0x005d2c], + }, + BigNum { + limbs: [0x6a485f6f1c316bb0d7782485b9ec55, 0x92e36171362ad33332e15bb2e1f042, 0x0016c1], + }, + BigNum { + limbs: [0xe632049f8464426c8b9b2bf815aad7, 0x48ccf85251fc944d705267aef07995, 0x002fe5], + }, + BigNum { + limbs: [0xd771fe6079f7bc937464d307ea552a, 0x5e86314b2b4b9eec67b5a1f2e78bbd, 0x004408], + }, + BigNum { + limbs: [0xe3f58397fa59ca7ee8c97459708936, 0x49b450f7e1001fbfe1fc8d8a0d5fe7, 0x007294], + }, + BigNum { + limbs: [0xd9ae7f680402348117368aa68f76cb, 0x5d9ed8a59c481379f60b7c17caa56b, 0x000159], + }, + BigNum { + limbs: [0x9de328231391765bc4f547e17fae04, 0x7ae3db865ba7714dcc8e32350736c2, 0x002d93], + }, + BigNum { + limbs: [0x1fc0dadceaca88a43b0ab71e8051fd, 0x2c6f4e1721a0c1ec0b79d76cd0ce91, 0x00465a], + }, + BigNum { + limbs: [0x99e982481eb187c638ab874c146c0a, 0x850021892f6b10f3be96e9d4669892, 0x001b04], + }, + BigNum { + limbs: [0x23ba80b7dfaa7739c75477b3eb93f7, 0x225308144ddd224619711fcd716cc1, 0x0058e9], + }, + BigNum { + limbs: [0x22968828352a6e3f4bf52554d38e6f, 0xf1c7a7718e251607c0636d7990d68f, 0x00262a], + }, + BigNum { + limbs: [0x9b0d7ad7c93190c0b40ad9ab2c7192, 0xb58b822bef231d3217a49c28472ec4, 0x004dc2], + }, + BigNum { + limbs: [0x19d4b2a482d2fbc23c6ee8ac5a4aaf, 0xc9aafb60bcbac15b96d0a2f553f4e4, 0x002d95], + }, + BigNum { + limbs: [0xa3cf505b7b89033dc3911653a5b552, 0xdda82e3cc08d71de413766ac84106f, 0x004657], + }, + BigNum { + limbs: [0x9ac76eb653b8077d5feb370589ddcd, 0x1cea5e2d9df0734149137047b1786e, 0x003b8c], + }, + BigNum { + limbs: [0x22dc9449aaa3f782a014c7fa762234, 0x8a68cb6fdf57bff88ef4995a268ce5, 0x003861], + }, + BigNum { + limbs: [0x6ea99bee92c793b2126ee2e55d5b7b, 0x532503b950c74c9db999b77bc95b13, 0x006efd], + }, + BigNum { + limbs: [0x4efa67116b946b4ded911c1aa2a486, 0x542e25e42c80e69c1e6e52260eaa40, 0x0004f0], + }, + BigNum { + limbs: [0x4abd405dd655c9caba576e317c51c0, 0x5b7f47d7e3dde00b481b539b58b533, 0x006e5f], + }, + BigNum { + limbs: [0x72e6c2a22806353545a890ce83ae41, 0x4bd3e1c5996a532e8fecb6067f5020, 0x00058e], + }, + BigNum { + limbs: [0x231f19c71e8773da6453c4f956b91c, 0x019aedcb1f56b52853da3777fcc872, 0x000eaf], + }, + BigNum { + limbs: [0x9a84e938dfd48b259bac3a06a946e5, 0xa5b83bd25df17e11842dd229db3ce1, 0x00653e], + }, + BigNum { + limbs: [0x19668a6e56d866fa44b2cf5ea9ce3e, 0x3a4b78ab5c819959f3c1dbce24dcb2, 0x00567a], + }, + BigNum { + limbs: [0xa43d7891a7839805bb4d2fa15631c3, 0x6d07b0f220c699dfe4462dd3b328a1, 0x001d73], + }, + BigNum { + limbs: [0x8fc3ecb74d2370818a195b4030b82d, 0xda607fd657b1ecc589fe94d902934c, 0x002c8e], + }, + BigNum { + limbs: [0x2de01648b1388e7e75e6a3bfcf47d4, 0xccf2a9c7259646744e0974c8d57207, 0x00475e], + }, + BigNum { + limbs: [0x8586ae1f584b84c709f7cddb49aefe, 0x9d29782d7022884ec5a8cd2669f7cc, 0x0019fa], + }, + BigNum { + limbs: [0x381d54e0a6107a38f6083124b65103, 0x0a29b1700d25aaeb125f3c7b6e0d87, 0x0059f3], + }, + BigNum { + limbs: [0x97551d7eb479316903092c74d1b363, 0xc0dfcf0eae86c2b3ee68881b3131e8, 0x004b0e], + }, + BigNum { + limbs: [0x264ee58149e2cd96fcf6d28b2e4c9e, 0xe6735a8ecec17085e99f8186a6d36b, 0x0028de], + }, + BigNum { + limbs: [0x8f79025062832db2e14ff671c966ca, 0x39d976a5cc746815ff2c5df25e4c4b, 0x00500c], + }, + BigNum { + limbs: [0x2e2b00af9bd8d14d1eb0088e369937, 0x6d79b2f7b0d3cb23d8dbabaf79b908, 0x0023e1], + }, + BigNum { + limbs: [0x9d16dab72c6ea893501f19a2ae9b40, 0x9285f4b67ba0714fb14e35f116982e, 0x003c74], + }, + BigNum { + limbs: [0x208d2848d1ed566cafe0e55d5164c1, 0x14cd34e701a7c1ea26b9d3b0c16d25, 0x003779], + }, + BigNum { + limbs: [0x376a86c53fbaa0e7b0f84cf1693a6c, 0xd3d2ca0f2c04501eff841f6ad00440, 0x005f25], + }, + BigNum { + limbs: [0x86397c3abea15e184f07b20e96c595, 0xd3805f8e5143e31ad883ea37080113, 0x0014c7], + }, + BigNum { + limbs: [0xcfc741b88a6d90351e7a72117b4660, 0xbefa63943b3c9fb623bd7d8f468827, 0x00235e], + }, + BigNum { + limbs: [0xeddcc14773ee6ecae1858cee84b9a1, 0xe858c609420b9383b44a8c12917d2b, 0x00508e], + }, + BigNum { + limbs: [0x73d6ebd3f2d04ebd818c79e9b418c3, 0xa89d6917cf356fb52776257e47f6bd, 0x006d9c], + }, + BigNum { + limbs: [0x49cd172c0b8bb0427e7385164be73e, 0xfeb5c085ae12c384b091e423900e96, 0x000650], + }, + BigNum { + limbs: [0xcbed26a10189725865f49cae84c1f0, 0x51abf2ff1a7ac214f8af079281e8c2, 0x001c89], + }, + BigNum { + limbs: [0xf1b6dc5efcd28ca79a0b62517b3e11, 0x55a7369e62cd7124df59020f561c90, 0x005764], + }, + BigNum { + limbs: [0x5c2a2517ea29380d784d83532d58a4, 0xe5bdc2f376ef3fbfaf7cf36c98f23c, 0x002acb], + }, + BigNum { + limbs: [0x6179dde81432c6f287b27bacd2a75d, 0xc19566aa0658f37a288b16353f1317, 0x004921], + }, + BigNum { + limbs: [0x0c396a9fa67ea67e2a604403076877, 0xa9395cb8d476fab39024f46a4961d9, 0x003334], + }, + BigNum { + limbs: [0xb16a986057dd5881d59fbafcf8978a, 0xfe19cce4a8d1388647e315378ea37a, 0x0040b8], + }, + BigNum { + limbs: [0x659be0bb7e781e96ab11c20e5ad151, 0xbf9e4612a7a04b853daeb5686a7f1f, 0x005f0e], + }, + BigNum { + limbs: [0x580822447fe3e06954ee3cf1a52eb0, 0xe7b4e38ad5a7e7b49a5954396d8634, 0x0014de], + }, + BigNum { + limbs: [0x34af14b61e0abe74a1f6718c130477, 0x7a8bca252472eb674a1a620890d7a5, 0x004352], + }, + BigNum { + limbs: [0x88f4ee49e051408b5e098d73ecfb8a, 0x2cc75f7858d547d28deda799472dae, 0x00309b], + }, + BigNum { + limbs: [0x986d4f948654a8ddccfd2991cb1cc7, 0x529d1d76d858cc6ba0596eae27c4e4, 0x003b18], + }, + BigNum { + limbs: [0x2536b36b780756223302d56e34e33a, 0x54b60c26a4ef66ce37ae9af3b0406f, 0x0038d5], + }, + BigNum { + limbs: [0x9da80dc7ef9f0f200b5775cb7c7f34, 0xada04d5e74819262a96d0a5549b5f1, 0x000679], + }, + BigNum { + limbs: [0x1ffbf5380ebcefdff4a889348380cd, 0xf9b2dc3f08c6a0d72e9aff4c8e4f62, 0x006d73], + }, + BigNum { + limbs: [0x8076a04042fa6a4ae23d4887732cc7, 0x84efe7a91e54c20ba6c40efc806c85, 0x005327], + }, + BigNum { + limbs: [0x3d2d62bfbb6194b51dc2b6788cd33a, 0x226341f45ef3712e3143faa55798ce, 0x0020c6], + }, + BigNum { + limbs: [0xad338dc96b53f06d9bd93caef95435, 0x46d16b0ded487a772571e97d5605ea, 0x004ac4], + }, + BigNum { + limbs: [0x1070753693080e926426c25106abcc, 0x6081be8f8fffb8c2b296202481ff69, 0x002929], + }, + BigNum { + limbs: [0x640ded94a2153f4f3cf1b82d878f30, 0x620c501b6d5b34b1fe426ba069ee6f, 0x000904], + }, + BigNum { + limbs: [0x5996156b5c46bfb0c30e46d27870d1, 0x4546d9820fecfe87d9c59e016e16e4, 0x006ae9], + }, + BigNum { + limbs: [0x3fcc8fbece3ff36832c0e6cf2383d0, 0xb5ed3c6c5168d7a5b570137a2c4e8f, 0x0030a3], + }, + BigNum { + limbs: [0x7dd77341301c0b97cd3f1830dc7c31, 0xf165ed312bdf5b942297f627abb6c4, 0x004349], + }, + BigNum { + limbs: [0x950b898168358f10a2ea8dd9532d0b, 0x3fa6331dc12669b74e8a5f93d55dda, 0x0043a1], + }, + BigNum { + limbs: [0x2898797e96266fef5d157126acd2f6, 0x67acf67fbc21c982897daa0e02a779, 0x00304c], + }, + BigNum { + limbs: [0x87dd867c2846dfcc3b7f324100ce0b, 0xdd9346337dff0ec770162a016a73c0, 0x000934], + }, + BigNum { + limbs: [0x35c67c83d6151f33c480ccbeff31f6, 0xc9bfe369ff49247267f1dfa06d9193, 0x006ab8], + }, + BigNum { + limbs: [0xea948838d3a59e714fe5f9a319f08b, 0xd9b9e9bc0a45bca442260d0f5cc781, 0x0019ff], + }, + BigNum { + limbs: [0xd30f7ac72ab6608eb01a055ce60f76, 0xcd993fe17302769595e1fc927b3dd1, 0x0059ed], + }, + BigNum { + limbs: [0x42eaa33c21a6c3f8e855b7ca48e223, 0x2a883802cf8d5e7aadc120761b2157, 0x001430], + }, + BigNum { + limbs: [0x7ab95fc3dcb53b0717aa4735b71dde, 0x7ccaf19aadbad4bf2a46e92bbce3fc, 0x005fbd], + }, + BigNum { + limbs: [0xea26e3e861e9a6f03205e4801f0670, 0x521b43809c6f413f091a0442fe3b0a, 0x0057e2], + }, + BigNum { + limbs: [0xd37d1f179c72580fcdfa1a7fe0f991, 0x5537e61ce0d8f1faceee055ed9ca48, 0x001c0b], + }, + BigNum { + limbs: [0x888aca5f2cf18937eb9c08a6bad0a5, 0xb368c1bd3ec3d9a4667dbe97b7466b, 0x006c24], + }, + BigNum { + limbs: [0x351938a0d16a75c81463f659452f5c, 0xf3ea67e03e845995718a4b0a20bee8, 0x0007c8], + }, + BigNum { + limbs: [0xca463738abfdcceae6f7f2c97f6ddc, 0x37a8bdb046c980f6c206144132a757, 0x0053ca], + }, + BigNum { + limbs: [0xf35dcbc7525e321519080c36809225, 0x6faa6bed367eb2431601f560a55dfb, 0x002023], + }, + BigNum { + limbs: [0x33e248bb1c34f3d3daea56ba7f16a9, 0xf0818c66f93206930810c8ebd7cf6f, 0x002c56], + }, + BigNum { + limbs: [0x89c1ba44e2270b2c2515a84580e958, 0xb6d19d3684162ca6cff740b60035e4, 0x004796], + }, + BigNum { + limbs: [0xfa342f2e54d35b3efaf03e1f4c23a5, 0x4ed170bf21bac2867ad9bd62474fc4, 0x00426e], + }, + BigNum { + limbs: [0xc36fd3d1a988a3c1050fc0e0b3dc5c, 0x5881b8de5b8d70b35d2e4c3f90b58e, 0x00317f], + }, + BigNum { + limbs: [0xee7464cc2693acc7f2b0c7f97d0157, 0xcd54ee73a12d5a25364bab696dd707, 0x0044f2], + }, + BigNum { + limbs: [0xcf2f9e33d7c852380d4f370682feaa, 0xd9fe3b29dc1ad914a1bc5e386a2e4b, 0x002efa], + }, + BigNum { + limbs: [0x09bb3a7eed94b5ee1cb6e72b82c6d1, 0x2cf9a0599655f39dd358a82382f466, 0x002a3b], + }, + BigNum { + limbs: [0xb3e8c88110c74911e34917d47d3930, 0x7a598943e6f23f9c04af617e5510ed, 0x0049b2], + }, + BigNum { + limbs: [0xded1798f001c83984bae2ba9e576ec, 0x56ee3af2ac38ca85bda4670d2c2307, 0x000975], + }, + BigNum { + limbs: [0xded28970fe3f7b67b451d3561a8915, 0x5064eeaad10f68b41a63a294abe24b, 0x006a78], + }, + BigNum { + limbs: [0x4dc75cbe09f501a0b24ec3dca1f2ce, 0x3112ac902e13ee36737d3869b66204, 0x0031e6], + }, + BigNum { + limbs: [0x6fdca641f466fd5f4db13b235e0d33, 0x76407d0d4f344503648ad13821a34f, 0x004207], + }, + BigNum { + limbs: [0x156add501a1c6937b11e308bf0abc8, 0x363da95355ccf81be9d7b571ce05b1, 0x003e29], + }, + BigNum { + limbs: [0xa83925afe43f95c84ee1ce740f5439, 0x7115804a277b3b1dee30543009ffa2, 0x0035c4], + }, + BigNum { + limbs: [0xb50c83fd1f5c0dcd6dcd1e8a6d2938, 0x647da03f2b3cd52856ab58c24f30f6, 0x0025ad], + }, + BigNum { + limbs: [0x08977f02defff1329232e07592d6c9, 0x42d5895e520b5e11815cb0df88d45d, 0x004e40], + }, + BigNum { + limbs: [0xa73479f853c1eb8d14b4edec527670, 0x6dce2e5ec6630aa522414c846da37a, 0x001450], + }, + BigNum { + limbs: [0x166f8907aa9a1372eb4b1113ad8991, 0x3984fb3eb6e52894b5c6bd1d6a61d9, 0x005f9d], + }, + BigNum { + limbs: [0xd15d8f0976f55e06f8ee5e9777964d, 0x95ea54b09d10987f4e2ce1b79388c1, 0x00413d], + }, + BigNum { + limbs: [0xec4673f68766a0f90711a0688869b4, 0x1168d4ece0379aba89db27ea447c91, 0x0032b0], + }, + BigNum { + limbs: [0xb6afda9637ccb788a3d4bd18e66da6, 0x518219806ce2d8c3dd1ccbc1b529ec, 0x005581], + }, + BigNum { + limbs: [0x06f42869c68f47775c2b41e719925b, 0x55d1101d10655a75faeb3de022db67, 0x001e6c], + }, + BigNum { + limbs: [0x991b24aa25db0e40861b826cace87f, 0x5ee79ca9436b6c1feffb1c216f70a6, 0x007149], + }, + BigNum { + limbs: [0x2488de55d880f0bf79e47c93531782, 0x486b8cf439dcc719e80ced806894ad, 0x0002a4], + }, + BigNum { + limbs: [0xfb90de5161d3aa0e4f9e5a6854836c, 0x7730aabeaf2707d3acaf7b7234937b, 0x000453], + }, + BigNum { + limbs: [0xc21324ae9c8854f1b061a497ab7c95, 0x30227edece212b662b588e2fa371d7, 0x006f9a], + }, + BigNum { + limbs: [0x514cd4e04272c008e2fb108e12e22a, 0x80e1938cd09c9a3ae5427d8e18cb54, 0x000fe6], + }, + BigNum { + limbs: [0x6c572e1fbbe93ef71d04ee71ed1dd7, 0x26719610acab98fef2c58c13bf39ff, 0x006407], + }, + BigNum { + limbs: [0xad623bf3402bd57a9634b25637c216, 0x449c6a67b9ed93981376c9cd141418, 0x003869], + }, + BigNum { + limbs: [0x1041c70cbe30298569cb4ca9c83deb, 0x62b6bf35c35a9fa1c4913fd4c3f13b, 0x003b84], + }, + BigNum { + limbs: [0xc2dfa82313ad493a3e1a7aa260077d, 0xbce2aa1625f8acb62f7f17837a2577, 0x001c25], + }, + BigNum { + limbs: [0xfac45adceaaeb5c5c1e5845d9ff884, 0xea707f87574f8683a888f21e5ddfdb, 0x0057c7], + }, + BigNum { + limbs: [0x1db465016aecf09e6f74084c8e85a6, 0xf3dd5bee9b24bd298bcb9b46025a18, 0x006cbe], + }, + BigNum { + limbs: [0x9fef9dfe936f0e61908bf6b3717a5b, 0xb375cdaee22376104c3c6e5bd5ab3b, 0x00072e], + }, + BigNum { + limbs: [0x07ba425b194f3be868c32a5b94f4e5, 0x27101520c4b2e11d3393b8d009aa2c, 0x000eba], + }, + BigNum { + limbs: [0xb5e9c0a4e50cc317973cd4a46b0b1c, 0x8043147cb895521ca47450d1ce5b27, 0x006533], + }, + BigNum { + limbs: [0xe5eebb2c61bfc76d8878e6c92c1964, 0x3ea3f96c0440f88cd53e4cee2d698d, 0x00507c], + }, + BigNum { + limbs: [0xd7b547d39c9c379277871836d3e69d, 0x68af303179073aad02c9bcb3aa9bc5, 0x002371], + }, + BigNum { + limbs: [0xcaef2e1b379cbd65f21f6521b5ffe3, 0xb92efbacec2085f75cd0394e7e1493, 0x004c10], + }, + BigNum { + limbs: [0xf2b4d4e4c6bf419a0de099de4a001e, 0xee242df09127ad427b37d05359f0bf, 0x0027dc], + }, + BigNum { + limbs: [0x5a90d8902f34ee2ffffbac2e990b32, 0x85e3496a299b1a2b4aad24d743792b, 0x0042ce], + }, + BigNum { + limbs: [0x63132a6fcf2710d0000452d166f4cf, 0x216fe03353ad190e8d5ae4ca948c28, 0x00311f], + }, + BigNum { + limbs: [0xb5b47bb725cda97ed4be029bd47ddd, 0x6e0bba848829e2af1b87209c0c0556, 0x0072af], + }, + BigNum { + limbs: [0x07ef8748d88e55812b41fc642b8224, 0x39476f18f51e508abc80e905cbfffd, 0x00013e], + }, + BigNum { + limbs: [0x2bafd544a199a3fe213ce3f40c2fa1, 0x01cdf2ff819eb174b778fe8e29f421, 0x00158b], + }, + BigNum { + limbs: [0x91f42dbb5cc25b01dec31b0bf3d060, 0xa585369dfba981c5208f0b13ae1132, 0x005e62], + }, + BigNum { + limbs: [0xe7f96676286b47c433afe4d106b43d, 0x310d4f00fee0175ca29996af2afe4e, 0x004b52], + }, + BigNum { + limbs: [0xd5aa9c89d5f0b73bcc501a2ef94bc4, 0x7645da9c7e681bdd356e72f2ad0704, 0x00289b], + }, + BigNum { + limbs: [0xca2c4fd11289ccc9f8090ae9106aaf, 0x72623392274a8b3b1472c4aac7b30c, 0x00586f], + }, + BigNum { + limbs: [0xf377b32eebd2323607f6f416ef9552, 0x34f0f60b55fda7fec39544f7105246, 0x001b7e], + }, + BigNum { + limbs: [0xddcb3aae11b4f6a83569dad6cd41e9, 0xa2a0e40b14ad3ac082ec036858c652, 0x0042cb], + }, + BigNum { + limbs: [0xdfd8c851eca70857ca96242932be18, 0x04b24592689af879551c06397f3f00, 0x003122], + }, + BigNum { + limbs: [0xa633eb2bd252b8f338d1145bbf0bd5, 0x83fc39549f77c4b5af9e6def1f5a2e, 0x006953], + }, + BigNum { + limbs: [0x177017d42c09460cc72eeaa440f42c, 0x2356f048ddd06e8428699bb2b8ab25, 0x000a9a], + }, + BigNum { + limbs: [0xcd97301b698d332256b524d8b89e8b, 0x754e6966f69b3071acf3d7805a5c41, 0x004f5b], + }, + BigNum { + limbs: [0xf00cd2e494cecbdda94ada27476176, 0x3204c03686ad02c82b1432217da911, 0x002492], + }, + BigNum { + limbs: [0x85f998168289ca7f2423392adae5b9, 0xd7a8d381273c1b290213873ae175d7, 0x004fd7], + }, + BigNum { + limbs: [0x37aa6ae97bd23480dbdcc5d5251a48, 0xcfaa561c560c1810d5f48266f68f7c, 0x002415], + }, + BigNum { + limbs: [0x461c33c1a0f0b758be078a66b064a1, 0xe1a1f2cc7087dc66f4b808f364646b, 0x0037f4], + }, + BigNum { + limbs: [0x7787cf3e5d6b47a741f874994f9b60, 0xc5b136d10cc056d2e35000ae73a0e8, 0x003bf8], + }, + BigNum { + limbs: [0x10344b217e61bd034fe540f385a129, 0x7149c0f9efc012a497e72294fe0d1b, 0x000151], + }, + BigNum { + limbs: [0xad6fb7de7ffa41fcb01abe0c7a5ed8, 0x360968a38d8820954020e70cd9f838, 0x00729c], + }, + BigNum { + limbs: [0xaa12dad03920b780c10f21710ecb97, 0x2c08ab0d493cb63fc62f04e5adaf87, 0x0038b5], + }, + BigNum { + limbs: [0x1391282fc53b477f3ef0dd8ef1346a, 0x7b4a7e90340b7cfa11d904bc2a55cc, 0x003b38], + }, + BigNum { + limbs: [0xc9785e4b1a161953a535350d483019, 0x62ff5bf8d281fb472b23db94f42d8e, 0x00420b], + }, + BigNum { + limbs: [0xf42ba4b4e445e5ac5acac9f2b7cfe8, 0x4453cda4aac637f2ace42e0ce3d7c4, 0x0031e2], + }, + BigNum { + limbs: [0xf91bc8feb9b112808f505c45cb015c, 0x917dc58e99c00d615843aba8be67e6, 0x00109e], + }, + BigNum { + limbs: [0xc4883a0144aaec7f70afa2ba34fea5, 0x15d5640ee38825d87fc45df9199d6c, 0x00634f], + }, + BigNum { + limbs: [0xa0b2c8a4a7bc2e69a5eae3e0a37475, 0x723faf835210730c75680995aa200f, 0x006fb5], + }, + BigNum { + limbs: [0x1cf13a5b569fd0965a151b1f5c8b8c, 0x35137a1a2b37c02d62a0000c2de544, 0x000438], + }, + BigNum { + limbs: [0x5cf9ee56a0d33e35042724c5b436bb, 0xc0eebcb1f4772ef461072f445e70e7, 0x00080e], + }, + BigNum { + limbs: [0x60aa14a95d88c0cafbd8da3a4bc946, 0xe6646ceb88d104457700da5d79946c, 0x006bde], + }, + BigNum { + limbs: [0xe4ef4d5372d2492e81ced8221f9f8a, 0x1efd37f7f7e0769798bf3a5553980d, 0x0060b7], + }, + BigNum { + limbs: [0xd8b4b5ac8b89b5d17e3126dde06077, 0x8855f1a58567bca23f48cf4c846d45, 0x001336], + }, + BigNum { + limbs: [0xc6252dbf1b326892f4d9b3220826cd, 0xfeab6ca661472557041d93d5177942, 0x0013b1], + }, + BigNum { + limbs: [0xf77ed540e329966d0b264bddf7d934, 0xa8a7bcf71c010de2d3ea75ccc08c10, 0x00603b], + }, + BigNum { + limbs: [0x9b851d08727d4269878537a09ab251, 0xe2b20f3384ec13ab948f2be0c4358d, 0x005366], + }, + BigNum { + limbs: [0x221ee5f78bdebc96787ac75f654db0, 0xc4a11a69f85c1f8e4378ddc113cfc6, 0x002086], + }, + BigNum { + limbs: [0x97fa6b553424bce61ba1af6202359a, 0x62790c9ec5709483ded871817d0f54, 0x0027cf], + }, + BigNum { + limbs: [0x25a997aaca374219e45e4f9dfdca67, 0x44da1cfeb7d79eb5f92f98205af5ff, 0x004c1e], + }, + BigNum { + limbs: [0xc62920e6caa9f8f2292b77ec6944b7, 0x17e308d1480c85fddad45ca496fc0c, 0x006ddc], + }, + BigNum { + limbs: [0xf77ae21933b2060dd6d4871396bb4a, 0x8f7020cc353bad3bfd33acfd410946, 0x000611], + }, + BigNum { + limbs: [0xcc6493ffad656f51eae331d45e4567, 0x9478a2d01333d6a928516c6c492af2, 0x0048b3], + }, + BigNum { + limbs: [0xf13f6f0050f68fae151ccd2ba1ba9a, 0x12da86cd6a145c90afb69d358eda60, 0x002b3a], + }, + BigNum { + limbs: [0xa4b9a7d9b44f7d6609134c8fd05714, 0xef733c2089cf6b37fc2d2bce9a49f6, 0x006304], + }, + BigNum { + limbs: [0x18ea5b264a0c8199f6ecb2702fa8ed, 0xb7dfed7cf378c801dbdaddd33dbb5d, 0x0010e8], + }, + BigNum { + limbs: [0x01287aa8e28eee99c2146c444e519a, 0xaa852cf69d9898ecff7fc2e04b67ab, 0x0025ea], + }, + BigNum { + limbs: [0xbc7b88571bcd10663deb92bbb1ae67, 0xfccdfca6dfaf9a4cd88846c18c9da8, 0x004e02], + }, + BigNum { + limbs: [0x6c05295b5fb41cb8d6b4ecef99c9e8, 0x71a09ca75e9ecf0144808af6112ecb, 0x001783], + }, + BigNum { + limbs: [0x519ed9a49ea7e247294b1210663619, 0x35b28cf61ea9643893877eabc6d688, 0x005c6a], + }, + BigNum { + limbs: [0x0dab4c4a2a63ad2369ef864781d95e, 0x2f7c6017a94f9b01da56279eb5d9e5, 0x003cd1], + }, + BigNum { + limbs: [0xaff8b6b5d3f851dc961078b87e26a3, 0x77d6c985d3f89837fdb1e203222b6e, 0x00371c], + }, + BigNum { + limbs: [0xfbbf05605e22049088086fe345cf99, 0x9962d49e98f824a86f10b7e39f2849, 0x004955], + }, + BigNum { + limbs: [0xc1e4fd9fa039fa6f77f78f1cba3068, 0x0df054fee4500e9168f751be38dd09, 0x002a98], + }, + BigNum { + limbs: [0x6ea85e98587c4a13068409bc82e244, 0x73eb7bcba57289a774bf888a996f9c, 0x0052c7], + }, + BigNum { + limbs: [0x4efba467a5dfb4ecf97bf5437d1dbd, 0x3367add1d7d5a992634881173e95b7, 0x002126], + }, + BigNum { + limbs: [0x15a25c56a25116ef4661cf681ac890, 0x122395c63dc1d8108a1f42d3561429, 0x000157], + }, + BigNum { + limbs: [0xa801a6a95c0ae810b99e2f97e53771, 0x952f93d73f865b294de8c6ce81f12a, 0x007296], + }, + BigNum { + limbs: [0xfa85c091fab993f2d6a61c264bba11, 0xc9de3a5deb69cc970bd5f2e6c815a4, 0x005469], + }, + BigNum { + limbs: [0xc31e426e03a26b0d2959e2d9b445f0, 0xdd74ef3f91de66a2cc3216bb0fefae, 0x001f83], + }, + BigNum { + limbs: [0x9cf7f79590474d5947ce0ad319cdc7, 0xe9425e38ffcc78b5a5b93d41590f4b, 0x0054d9], + }, + BigNum { + limbs: [0x20ac0b6a6e14b1a6b831f42ce6323a, 0xbe10cb647d7bba84324ecc607ef608, 0x001f13], + }, + BigNum { + limbs: [0x059903e0524868e55b60810a7f877b, 0xe6dafe0adda151ded54695836adc05, 0x006bea], + }, + BigNum { + limbs: [0xb80aff1fac13961aa49f7df5807886, 0xc0782b929fa6e15b02c1741e6d294e, 0x000802], + }, + BigNum { + limbs: [0xe617879a72d893b66d13df0b850d61, 0x14ed7cb17771b59db72419438d24fd, 0x002e07], + }, + BigNum { + limbs: [0xd78c7b658b836b4992ec1ff47af2a0, 0x9265acec05d67d9c20e3f05e4ae055, 0x0045e6], + }, + BigNum { + limbs: [0xe4824fbac5f8e7a21ac44df3477076, 0x4574e3442ee136aebb2396bd4f09d5, 0x0062b3], + }, + BigNum { + limbs: [0xd921b3453863175de53bb10cb88f8b, 0x61de46594e66fc8b1ce472e488fb7d, 0x00113a], + }, + BigNum { + limbs: [0xb8ecee197d9af0e3712b897f88b4d1, 0x00c45b561179be483f87c82a93f63f, 0x001a16], + }, + BigNum { + limbs: [0x04b714e680c10e1c8ed47580774b30, 0xa68ece476bce74f198804177440f14, 0x0059d7], + }, + BigNum { + limbs: [0x94ef84e6b7b995a1041f9488f68dae, 0x2ec1fc6138bd21f6d173aa046fe4ca, 0x0026c6], + }, + BigNum { + limbs: [0x28b47e1946a2695efbe06a77097253, 0x78912d3c448b114306945f9d682089, 0x004d27], + }, + BigNum { + limbs: [0x6d56a1d006b6372fac4dd82e55e945, 0x85187afb65a3c87c53ce3f7a76569b, 0x004129], + }, + BigNum { + limbs: [0x504d612ff7a5c7d053b226d1aa16bc, 0x223aaea217a46abd8439ca2761aeb8, 0x0032c4], + }, + BigNum { + limbs: [0x63ef45ad4908e6f172f93272aef9c6, 0xa5933f9d639627bceabba9c13bcb9a, 0x0011b5], + }, + BigNum { + limbs: [0x59b4bd52b553180e8d06cc8d51063b, 0x01bfea0019b20b7ced4c5fe09c39b9, 0x006238], + }, + BigNum { + limbs: [0x435d45df81fc513e24cf88d26d14bd, 0x4e82e0a4d4c5a66c4465ffe15f6be2, 0x00628f], + }, + BigNum { + limbs: [0x7a46bd207c5fadc1db30762d92eb44, 0x58d048f8a8828ccd93a209c0789971, 0x00115e], + }, + BigNum { + limbs: [0x5755762ed0dc2e1fda0410c4e4d674, 0x48feadc8d91349f2892deb1068f424, 0x0025ff], + }, + BigNum { + limbs: [0x664e8cd12d7fd0e025fbee3b1b298d, 0x5e547bd4a434e9474eda1e916f112f, 0x004dee], + }, + BigNum { + limbs: [0x976a04577e50444bc5e118fb425b35, 0xe8512409c3857773b21c8454d0d6c7, 0x001273], + }, + BigNum { + limbs: [0x2639fea8800bbab43a1ee604bda4cc, 0xbf020593b9c2bbc625eb854d072e8c, 0x006179], + }, + BigNum { + limbs: [0x4fb65d28974f6792018eab205ac3e1, 0x8d26543a3a60f8147ec78eec0ecf24, 0x006da6], + }, + BigNum { + limbs: [0x6deda5d7670c976dfe7153dfa53c20, 0x1a2cd56342e73b2559407ab5c9362f, 0x000647], + }, + BigNum { + limbs: [0x98fe6b6879e3c225a29005376888d7, 0x028e0bf569fd1c2b22c48fbf68ae2d, 0x000ebb], + }, + BigNum { + limbs: [0x24a5979784783cda5d6ff9c897772a, 0xa4c51da8134b170eb54379e26f5726, 0x006532], + }, + BigNum { + limbs: [0x5c491d95facfe2393b548d4204a51f, 0xc40edecaced7de301cf8986c431565, 0x0020c0], + }, + BigNum { + limbs: [0x615ae56a038c1cc6c4ab71bdfb5ae2, 0xe3444ad2ae705509bb0f713594efee, 0x00532c], + }, + BigNum { + limbs: [0xad139cafdaa772d6e616c9c1421c9e, 0x0a3d1e68f810578306d723b212c53f, 0x00348b], + }, + BigNum { + limbs: [0x1090665023b48c2919e9353ebde363, 0x9d160b348537dbb6d130e5efc54014, 0x003f62], + }, + BigNum { + limbs: [0x700a79da2ac3c6085f76ac583f79a0, 0x140bc42b07da6b95d0e40b88b4ff01, 0x002e99], + }, + BigNum { + limbs: [0x4d998925d39838f7a08952a7c08661, 0x93476572756dc7a40723fe19230652, 0x004554], + }, + BigNum { + limbs: [0x81818041738bf1e847f9433776feb1, 0x0ebca8a36a05a5b6c8dde49bad804f, 0x00290a], + }, + BigNum { + limbs: [0x3c2282be8ad00d17b806bbc8890150, 0x989680fa13428d830f2a25062a8504, 0x004ae3], + }, + BigNum { + limbs: [0x309e790e65064e32306af340c1db2d, 0x686764a69972d87fb06401dd4ca805, 0x000bd0], + }, + BigNum { + limbs: [0x8d0589f19955b0cdcf950bbf3e24d4, 0x3eebc4f6e3d55aba27a407c48b5d4e, 0x00681d], + }, + BigNum { + limbs: [0xde5b52cfa56e5ef9702d02ce6b3081, 0xdded4361edc32293b4da09077a31d3, 0x001395], + }, + BigNum { + limbs: [0xdf48b03058eda0068fd2fc3194cf80, 0xc965e63b8f8510a6232e009a5dd37f, 0x006057], + }, + BigNum { + limbs: [0x3a7a3a30e164ebf89184cfc722bd9f, 0x110afa3cec1ecf530b2c40345efea5, 0x000c0f], + }, + BigNum { + limbs: [0x8329c8cf1cf713076e7b2f38dd4262, 0x96482f60912963e6ccdbc96d7906ae, 0x0067de], + }, + BigNum { + limbs: [0x82c7aa2f50c6718c98f99408577a27, 0x59b976e328f1826addffd2285db4e5, 0x002059], + }, + BigNum { + limbs: [0x3adc58d0ad958d7367066af7a885da, 0x4d99b2ba5456b0cefa0837797a506e, 0x005394], + }, + BigNum { + limbs: [0x8fd7eef9244cb298fb4636446409e3, 0x01c7ef28e18206ab7288252332b360, 0x004783], + }, + BigNum { + limbs: [0x2dcc1406da0f4c6704b9c8bb9bf61e, 0xa58b3a749bc62c8e657fe47ea551f3, 0x002c6a], + }, + BigNum { + limbs: [0x32aeceebd86026c4febf0b91c6806d, 0xa560942c6498c9107c1635743781d4, 0x0012a7], + }, + BigNum { + limbs: [0x8af5341425fbd83b0140f36e397f94, 0x01f2957118af6a295bf1d42da0837f, 0x006146], + }, + BigNum { + limbs: [0x1d7f2bc75be4ac1b670bcfcf1f849a, 0x509f02a10d5b316a6fe11176b0f9a8, 0x003c30], + }, + BigNum { + limbs: [0xa024d738a27752e498f42f30e07b67, 0x56b426fc6fed01cf6826f82b270bab, 0x0037bd], + }, + BigNum { + limbs: [0xafa9321aff17c9004c5e11eb9505f9, 0x07f5cae1a195084571c7ab7696e4c1, 0x002e99], + }, + BigNum { + limbs: [0x0dfad0e4ff4435ffb3a1ed146afa08, 0x9f5d5ebbdbb32af466405e2b412092, 0x004554], + }, + BigNum { + limbs: [0x292d24283ac6fa129eee3f986b8455, 0x05c46d5e39f3855c0d1a0fb582e60a, 0x003852], + }, + BigNum { + limbs: [0x9476ded7c39504ed6111bf67947bac, 0xa18ebc3f4354adddcaedf9ec551f49, 0x003b9b], + }, + BigNum { + limbs: [0xff6d043f13d90de781a5b5ae382857, 0xc1f34621fa6d9a2287d5f9220e2fb7, 0x003caa], + }, + BigNum { + limbs: [0xbe36fec0ea82f1187e5a4951c7d7aa, 0xe55fe37b82da99175032107fc9d59b, 0x003742], + }, + BigNum { + limbs: [0x36a4cdd6c52bf66dea2db07aecfb2c, 0xb07666086a21dc850dde1ba420a978, 0x00081f], + }, + BigNum { + limbs: [0x86ff35293930089215d24e851304d5, 0xf6dcc395132656b4ca29edfdb75bdb, 0x006bcd], + }, + BigNum { + limbs: [0xcff89970e84a2fd43576dcf6601f6a, 0x95fd98daca15ee47fe04bc7132137e, 0x0020d0], + }, + BigNum { + limbs: [0xedab698f1611cf2bca8922099fe097, 0x115590c2b33244f1da034d30a5f1d4, 0x00531d], + }, + BigNum { + limbs: [0x4bf510cf7c7c8c9e768704f04e2b80, 0x2d1b75a1ffc63094c7611bdd129b82, 0x002527], + }, + BigNum { + limbs: [0x71aef23081df72618978fa0fb1d481, 0x7a37b3fb7d8202a510a6edc4c569d1, 0x004ec6], + }, + BigNum { + limbs: [0xc766da81eb5f3a10cba8cca132a4af, 0x9895da559f7bcc1f97abceafe390c3, 0x002aef], + }, + BigNum { + limbs: [0xf63d287e12fcc4ef3457325ecd5b52, 0x0ebd4f47ddcc671a405c3af1f4748f, 0x0048fe], + }, + BigNum { + limbs: [0x77ccfd0e68f45d81c3ad1e35f68aa0, 0x04249a2841514c8df7a0b2153271d0, 0x007214], + }, + BigNum { + limbs: [0x45d705f19567a17e3c52e0ca097561, 0xa32e8f753bf6e6abe067578ca59383, 0x0001d9], + }, + BigNum { + limbs: [0xe42b3486654278312cda878efea016, 0x69b4cb4cf4fafbed3003ef8c3a813e, 0x001cc7], + }, + BigNum { + limbs: [0xd978ce79991986ced3257771015feb, 0x3d9e5e50884d374ca8041a159d8414, 0x005726], + }, + BigNum { + limbs: [0xdc08ba88d180d93188d4192bcfb84d, 0xa6db496e5b977354760383a269ab6e, 0x001e05], + }, + BigNum { + limbs: [0xe19b48772cdb25ce772be5d43047b4, 0x0077e02f21b0bfe5620485ff6e59e4, 0x0055e8], + }, + BigNum { + limbs: [0x9617aa98504fbcdf57909bea0a2da4, 0x5272602dee9b726a2311ddae84a49a, 0x005643], + }, + BigNum { + limbs: [0x278c5867ae0c4220a86f6315f5d25d, 0x54e0c96f8eacc0cfb4f62bf35360b9, 0x001daa], + }, + BigNum { + limbs: [0x74a072f75e1eafc6b7ae4cbe9918df, 0x0ca1fa1ca2ce7bd130433636e1f719, 0x003963], + }, + BigNum { + limbs: [0x49039008a03d4f394851b24166e722, 0x9ab12f80da79b768a7c4d36af60e3a, 0x003a8a], + }, + BigNum { + limbs: [0x0e4544b75517c16711866509b0117e, 0x8e613f107412f75f355eb5219f4d29, 0x005860], + }, + BigNum { + limbs: [0xaf5ebe48a9443d98ee7999f64fee83, 0x18f1ea8d09353bdaa2a9548038b82a, 0x001b8d], + }, + BigNum { + limbs: [0x6b2362c6e3206af330c75237fd3287, 0xcf9dbeeb7a113d432c185eaed41723, 0x003918], + }, + BigNum { + limbs: [0x5280a0391b3b940ccf38acc802cd7a, 0xd7b56ab20336f5f6abefaaf303ee30, 0x003ad4], + }, + BigNum { + limbs: [0xfe6141c56e87705d1a4de431b14902, 0xb6f79972f279436a9109526def19bc, 0x000611], + }, + BigNum { + limbs: [0xbf42c13a8fd48ea2e5b21ace4eb6ff, 0xf05b902a8aceefcf46feb733e8eb96, 0x006ddb], + }, + BigNum { + limbs: [0x771ac41ed853a25780bbfe03ec55d5, 0xa563d5b51c810b94291b65dd88b855, 0x000bf6], + }, + BigNum { + limbs: [0x46893ee126085ca87f4400fc13aa2c, 0x01ef53e860c727a5aeeca3c44f4cfe, 0x0067f7], + }, + BigNum { + limbs: [0x3ef3285a12e45cc86a0ebf672f9539, 0x73a1f676d8115d3e5f439eda2e7ab2, 0x001b27], + }, + BigNum { + limbs: [0x7eb0daa5eb77a23795f13f98d06ac8, 0x33b13326a536d5fb78c46ac7a98aa1, 0x0058c6], + }, + BigNum { + limbs: [0x078bb4a345264200b56e295c87eb31, 0x8d23be8445a567589623fdf89c7c4c, 0x002c63], + }, + BigNum { + limbs: [0xb6184e5cb935bcff4a91d5a37814d0, 0x1a2f6b1937a2cbe141e40ba93b8907, 0x00478a], + }, + BigNum { + limbs: [0xc428f8a2654518b52166440df9b688, 0x3d89e044cc6c8191cc5fd4eb468731, 0x002ec4], + }, + BigNum { + limbs: [0xf97b0a5d9916e64ade99baf2064979, 0x69c94958b0dbb1a80ba834b6917e21, 0x004529], + }, + BigNum { + limbs: [0x356a0242c49b8fb3212df6a0e2db64, 0x410905166866b24236a3c7e932fe37, 0x004cde], + }, + BigNum { + limbs: [0x883a00bd39c06f4cded2085f1d249d, 0x664a248714e180f7a16441b8a5071c, 0x00270f], + }, + BigNum { + limbs: [0x4a92da52332af0b26f1f6b19b802a2, 0x903bb1db99afcd62607b6d2f5a7aed, 0x005ee5], + }, + BigNum { + limbs: [0x731128adcb310e4d90e093e647fd5f, 0x171777c1e39865d7778c9c727d8a66, 0x001508], + }, + BigNum { + limbs: [0x34b261df65292e9ebf6443bba0f2ed, 0x19bd16418157f24ce6e76cd2d04b7e, 0x0060b4], + }, + BigNum { + limbs: [0x88f1a1209932d061409bbb445f0d14, 0x8d96135bfbf040ecf1209ccf07b9d5, 0x001339], + }, + BigNum { + limbs: [0x3654f0611097c6b6a28c1f1914c201, 0x62bf4cb52ef4097fce3915c694a5c5, 0x004e30], + }, + BigNum { + limbs: [0x874f129eedc438495d73dfe6eb3e00, 0x4493dce84e5429ba09cef3db435f8e, 0x0025bd], + }, + BigNum { + limbs: [0xa053141f7d3d7cf9065e7bcadcfc19, 0xb655d0e63d59e74dac8f8f64831f8c, 0x006be1], + }, + BigNum { + limbs: [0x1d50eee0811e8206f9a183352303e8, 0xf0fd58b73fee4bec2b787a3d54e5c7, 0x00080b], + }, + BigNum { + limbs: [0x1211542079c63a04b57a388ce6c261, 0x7bac5f90a18bb38f7e83bd6db07800, 0x00699e], + }, + BigNum { + limbs: [0xab92aedf8495c4fb4a85c673193da0, 0x2ba6ca0cdbbc7faa59844c34278d53, 0x000a4f], + }, + BigNum { + limbs: [0x0ee0c64f8b7ac1ff7ba2024a37b7bb, 0x93e4697b1d9ce0c431b6db18076ff9, 0x000834], + }, + BigNum { + limbs: [0xaec33cb072e13d00845dfcb5c84846, 0x136ec0225fab5275a6512e89d0955a, 0x006bb9], + }, + BigNum { + limbs: [0x01fa182468ba7c595e445abe442dca, 0x879144d0fcd2fcc9670838442647e3, 0x0051e8], + }, + BigNum { + limbs: [0xbba9eadb95a182a6a1bba441bbd237, 0x1fc1e4cc8075367070ffd15db1bd70, 0x002205], + }, + BigNum { + limbs: [0x9afd4618c5e1bc80afccf22a6f8a52, 0x1540ac49fb06bbc6c6b9a9fc918afb, 0x005101], + }, + BigNum { + limbs: [0x22a6bce7387a427f50330cd59075af, 0x92127d5382417773114e5fa5467a58, 0x0022ec], + }, + BigNum { + limbs: [0x1ee525b1ec67d1c5c9581135a7ab68, 0x30ea2e1c440d8b23d1f54cdf1fae7b, 0x00349e], + }, + BigNum { + limbs: [0x9ebedd4e11f42d3a36a7edca585499, 0x7668fb81393aa8160612bcc2b856d8, 0x003f4f], + }, + BigNum { + limbs: [0xae2ac8e1522fb525497b14298a9c76, 0x29bc131a89602fe31e0bda03eafb9b, 0x005ebe], + }, + BigNum { + limbs: [0x0f793a1eac2c49dab684ead675638b, 0x7d971682f3e80356b9fc2f9ded09b8, 0x00152f], + }, + BigNum { + limbs: [0x5b2f702a43d37b7ab8dac27f3e254c, 0x42d5471bc24662632562d7c80a5369, 0x0064a9], + }, + BigNum { + limbs: [0x627492d5ba88838547253c80c1dab5, 0x647de281bb01d0d6b2a531d9cdb1ea, 0x000f44], + }, + BigNum { + limbs: [0x77c91e81814f8b58eef8ea01b32225, 0xbbcf1c263cfc2d486a35143271ee7d, 0x003ea3], + }, + BigNum { + limbs: [0x45dae47e7d0c73a7110714fe4cdddc, 0xeb840d77404c05f16dd2f56f6616d6, 0x003549], + }, + BigNum { + limbs: [0x7e33d54601da6d389208e6356979ab, 0xc09b9fa4dfb218819428c8056d1d39, 0x0028c1], + }, + BigNum { + limbs: [0x3f702db9fc8191c76df718ca968656, 0xe6b789f89d961ab843df419c6ae81a, 0x004b2b], + }, + BigNum { + limbs: [0xa5905736c46ea4c5475b119e356265, 0xd098fc0f8207b6faf0e0d74f7a1025, 0x00690b], + }, + BigNum { + limbs: [0x1813abc939ed5a3ab8a4ed61ca9d9c, 0xd6ba2d8dfb407c3ee72732525df52e, 0x000ae1], + }, + BigNum { + limbs: [0xc3720c7bf19f0c42aa886429513423, 0xef4adbfcd69d77f7f625dacb9ddb3b, 0x0045eb], + }, + BigNum { + limbs: [0xfa31f6840cbcf2bd55779ad6aecbde, 0xb8084da0a6aabb41e1e22ed63a2a17, 0x002e01], + }, + BigNum { + limbs: [0xd1b9212b65bf214e921640c47a0a45, 0xd6554ec4fbad86e639ebf267f538dd, 0x00278f], + }, + BigNum { + limbs: [0xebeae1d4989cddb16de9be3b85f5bc, 0xd0fddad8819aac539e1c1739e2cc75, 0x004c5d], + }, + BigNum { + limbs: [0x0c31c44ac745f527c512ff22e85c3a, 0x2e4cd97518258238f206e24c0b1c2b, 0x002cbc], + }, + BigNum { + limbs: [0xb1723eb5371609d83aecffdd17a3c7, 0x790650286522b100e6012755cce928, 0x004731], + }, + BigNum { + limbs: [0x9989268429206117d51008e47afac8, 0x2c5a3a4f9c6aeb6b7a036c657da412, 0x001856], + }, + BigNum { + limbs: [0x241adc7bd53b9de82aeff61b850539, 0x7af8ef4de0dd47ce5e049d3c5a6141, 0x005b97], + }, + BigNum { + limbs: [0x3c1bffa488ae4c91a9d99c561db4f3, 0x5df95918a808d3a4931256f1413ddf, 0x002162], + }, + BigNum { + limbs: [0x8188035b75adb26e562662a9e24b0e, 0x4959d084d53f5f9544f5b2b096c774, 0x00528b], + }, + BigNum { + limbs: [0xfb570516b5e5cefc96ef08c768f7bb, 0x202424aab720e62747593b3d0256dd, 0x004ae0], + }, + BigNum { + limbs: [0xc24cfde9487630036910f638970846, 0x872f04f2c6274d1290aece64d5ae75, 0x00290d], + }, + BigNum { + limbs: [0x6d477b956af945571da68e63a7c767, 0xa9008ab58c52c373a0f84872096ba6, 0x005eed], + }, + BigNum { + limbs: [0x505c876a9362b9a8e259709c58389a, 0xfe529ee7f0f56fc6370fc12fce99ad, 0x0014ff], + }, + BigNum { + limbs: [0xc5dd2ae9e83d223d69281ae1af9955, 0x35a347e2e5a7d5bf621e6cdc1ff837, 0x00668d], + }, + BigNum { + limbs: [0xf7c6d816161edcc296d7e41e5066ac, 0x71afe1ba97a05d7a75e99cc5b80d1b, 0x000d60], + }, + BigNum { + limbs: [0xba0324468f865128736875d438f2d6, 0x73380eda1d3ba312905b71fb212d57, 0x001dae], + }, + BigNum { + limbs: [0x03a0deb96ed5add78c97892bc70d2b, 0x341b1ac3600c902747ac97a6b6d7fc, 0x00563f], + }, + BigNum { + limbs: [0x5e326a7b6d1553fd517bb125e87aa6, 0xbdab877991b02c465a03f89c87977d, 0x000c40], + }, + BigNum { + limbs: [0x5f7198849146ab02ae844dda17855b, 0xe9a7a223eb9806f37e041105506dd6, 0x0067ac], + }, + BigNum { + limbs: [0x5b47aa7fc702df407a3035875afd49, 0xa961d2308993234e4002f9a199a5c3, 0x004f00], + }, + BigNum { + limbs: [0x625c588037591fbf85cfc978a502b8, 0xfdf1576cf3b50feb980510003e5f90, 0x0024ec], + }, + BigNum { + limbs: [0xfb9dc693cfbdcbd6d7b660f42ebdf7, 0xe8ad2baf59d5de4ac442c8ffc9599c, 0x004111], + }, + BigNum { + limbs: [0xc2063c6c2e9e332928499e0bd1420a, 0xbea5fdee237254ef13c540a20eabb6, 0x0032db], + }, + BigNum { + limbs: [0x14d71f3d115d480b10922f5983b2e8, 0x80c524bd040ea27554f6cda2dd8143, 0x0046bf], + }, + BigNum { + limbs: [0xa8cce3c2ecfeb6f4ef6dcfa67c4d19, 0x268e04e0793990c483113bfefa8410, 0x002d2e], + }, + BigNum { + limbs: [0x8a4ccd5a8ffdaea479ce0adf737d2c, 0x281fc9738b6acf6a3c9e3de03c4b9f, 0x0057b4], + }, + BigNum { + limbs: [0x335735a56e5e505b8631f4208c82d5, 0x7f336029f1dd63cf9b69cbc19bb9b4, 0x001c39], + }, + BigNum { + limbs: [0xfa9da9aea7b7a807f3949ff7497ac4, 0x94e273230bc82fa52c43468bc2cb46, 0x0067d1], + }, + BigNum { + limbs: [0xc306595156a456f80c6b5f08b6853d, 0x1270b67a71800394abc4c316153a0c, 0x000c1c], + }, + BigNum { + limbs: [0xf90efcf7889498c0fa84462b5be3f9, 0x506cf5b4ad5c5dfa071dbcb2f776a7, 0x004583], + }, + BigNum { + limbs: [0xc495060875c7663f057bb8d4a41c08, 0x56e633e8cfebd53fd0ea4ceee08eab, 0x002e6a], + }, + BigNum { + limbs: [0x4bd6bd4ae9ab1cba6dbc0d400aabca, 0x020cfd306c1de084a51cd4d6f9f64b, 0x00678e], + }, + BigNum { + limbs: [0x71cd45b514b0e2459243f1bff55437, 0xa5462c6d112a52b532eb34cade0f08, 0x000c5f], + }, + BigNum { + limbs: [0xadc30be0afecd9400809b932c038e7, 0x6d07fcafce4a9a767be86caf30f381, 0x0063a0], + }, + BigNum { + limbs: [0x0fe0f71f4e6f25bff7f645cd3fc71a, 0x3a4b2cedaefd98c35c1f9cf2a711d2, 0x00104d], + }, + BigNum { + limbs: [0xfe8d47e5eb3bac52f1982243ace47a, 0xd6124eee8fcbbcf665d106968cdd39, 0x0039da], + }, + BigNum { + limbs: [0xbf16bb1a132052ad0e67dcbc531b87, 0xd140daaeed7c76437237030b4b2819, 0x003a12], + }, + BigNum { + limbs: [0x8b5ce291f218c9dd74958e6cca1c43, 0x7e5763a2583ce605c2850effefc8c8, 0x00144b], + }, + BigNum { + limbs: [0x3247206e0c4335228b6a709335e3be, 0x28fbc5fb250b4d341582faa1e83c8b, 0x005fa2], + }, + BigNum { + limbs: [0x2e5e696f842cffe144608f74eaac1b, 0x8fb393a3ab78c209cb769b65fa1ebe, 0x0030f6], + }, + BigNum { + limbs: [0x8f4599907a2eff1ebb9f6f8b1553e6, 0x179f95f9d1cf71300c916e3bdde695, 0x0042f7], + }, + BigNum { + limbs: [0xa5b8d3dda353e8a443e6dbbea71c3d, 0x4da2acaeebdd573de9e05c005ca05c, 0x003e26], + }, + BigNum { + limbs: [0x17eb2f225b08165bbc19234158e3c4, 0x59b07cee916adbfbee27ada17b64f7, 0x0035c7], + }, + BigNum { + limbs: [0x78b65b0a65311a96bd8776dcb3a3de, 0x40eea7b1a760a3c8fb7b4ca1b1ceb3, 0x000c7f], + }, + BigNum { + limbs: [0x44eda7f5992ae469427888234c5c23, 0x666481ebd5e78f70dc8cbd002636a0, 0x00676e], + }, + BigNum { + limbs: [0xdc89a891d9f52411e9aa243ff64fb7, 0xf8687719af42f436be5744d2fd476f, 0x0005fd], + }, + BigNum { + limbs: [0xe11a5a6e2466daee1655dac009b04a, 0xaeeab283ce053f0319b0c4cedabde3, 0x006def], + }, + BigNum { + limbs: [0xa76a4d12a65a59e004a8616ad310f0, 0xdcd7f3e6f15ec6c4f5b601e21ff0d9, 0x0016c4], + }, + BigNum { + limbs: [0x1639b5ed5801a51ffb579d952cef11, 0xca7b35b68be96c74e25207bfb8147a, 0x005d28], + }, + BigNum { + limbs: [0x0467bb084c964790407b4446e144b0, 0x40ff209302f1e88adcdbbfcc7732aa, 0x004269], + }, + BigNum { + limbs: [0xb93c47f7b1c5b76fbf84bab91ebb51, 0x6654090a7a564aaefb2c49d560d2a9, 0x003184], + }, + BigNum { + limbs: [0x7f89984e1f494bd58aa66bb4834fd9, 0xf85ceb431b3e231aa97f1b81adbf24, 0x000a1c], + }, + BigNum { + limbs: [0x3e1a6ab1df12b32a7559934b7cb028, 0xaef63e5a620a101f2e88ee202a462f, 0x0069d0], + }, + BigNum { + limbs: [0x6e71b10378df567095602a91bfeb57, 0x333f31a2b277845fe7e2ace6ee7a68, 0x0068bf], + }, + BigNum { + limbs: [0x4f3251fc857ca88f6a9fd46e4014aa, 0x7413f7facad0aed9f0255cbae98aeb, 0x000b2e], + }, + BigNum { + limbs: [0x72e12d4ef7b1bc1d048d5e4c8f92d5, 0x1919c9e42d245edfec475cd95fd90c, 0x0006dd], + }, + BigNum { + limbs: [0x4ac2d5b106aa42e2fb72a0b3706d2c, 0x8e395fb95023d459ebc0acc8782c47, 0x006d10], + }, + BigNum { + limbs: [0xa6caeec0019cce89f8a28c04b02908, 0x4254d49cb10f9468da4449c73ffa3f, 0x002507], + }, + BigNum { + limbs: [0x16d9143ffcbf3076075d72fb4fd6f9, 0x64fe5500cc389ed0fdc3bfda980b14, 0x004ee6], + }, + BigNum { + limbs: [0x7678b48bb1db8fb4bd8e160157197c, 0x9af535ae0e253b310b396831542a11, 0x004279], + }, + BigNum { + limbs: [0x472b4e744c806f4b4271e8fea8e685, 0x0c5df3ef6f22f808cccea17083db42, 0x003174], + }, + BigNum { + limbs: [0xc281a93aef62e96137a691be2497f9, 0xd3cb28a3b5a16588627f08e73b1b20, 0x004bab], + }, + BigNum { + limbs: [0xfb2259c50ef9159ec8596d41db6808, 0xd38800f9c7a6cdb1758900ba9cea32, 0x002841], + }, + BigNum { + limbs: [0xf4c10059af274ee2cc0434baf3e2fb, 0xd18546fdbca8764eb4562d580122db, 0x001aec], + }, + BigNum { + limbs: [0xc8e302a64f34b01d33fbca450c1d06, 0xd5cde29fc09fbceb23b1dc49d6e277, 0x005900], + }, + BigNum { + limbs: [0x2d6fb35a5cecb4467864c0e822f4f6, 0x40d594cfa384a9b31eb7a0574d1a1c, 0x001a4b], + }, + BigNum { + limbs: [0x90344fa5a16f4ab9879b3e17dd0b0b, 0x667d94cdd9c38986b950694a8aeb37, 0x0059a2], + }, + BigNum { + limbs: [0x0048cde3a189929b8c6581b7a57bb6, 0xc9c6a859b493283d27539aa3079e7e, 0x001a9f], + }, + BigNum { + limbs: [0xbd5b351c5cd26c64739a7d485a844b, 0xdd8c8143c8b50afcb0b46efed066d5, 0x00594d], + }, + BigNum { + limbs: [0x901f632ec9e7867e4f0728f664f220, 0x29d3d7d78713ff0e7a5f644cc3151a, 0x00256e], + }, + BigNum { + limbs: [0x2d849fd134747881b0f8d6099b0de1, 0x7d7f51c5f634342b5da8a55514f039, 0x004e7f], + }, + BigNum { + limbs: [0x8f4de46dd12913aa9ae8a21f3d3b2a, 0xc598ec5b2425c7cd9306078735756a, 0x006528], + }, + BigNum { + limbs: [0x2e561e922d32eb5565175ce0c2c4d7, 0xe1ba3d4259226b6c4502021aa28fe9, 0x000ec4], + }, + BigNum { + limbs: [0x13ba7565944c5b1543c85450272199, 0xf3850c2463a95f9cce23d45411857f, 0x00207f], + }, + BigNum { + limbs: [0xa9e98d9a6a0fa3eabc37aaafd8de68, 0xb3ce1d79199ed39d09e4354dc67fd4, 0x00536d], + }, + BigNum { + limbs: [0x46eb57ea4ac470f442b205efee0514, 0x43f88c427dfaf9484c246f79adca12, 0x00333c], + }, + BigNum { + limbs: [0x76b8ab15b3978e0bbd4df91011faed, 0x635a9d5aff4d39f18be39a282a3b41, 0x0040b1], + }, + BigNum { + limbs: [0xd2b436f50932afdcd4eae782b30688, 0x64dd8e54b387f9512866d3f7d41f14, 0x000837], + }, + BigNum { + limbs: [0xeaefcc0af5294f232b15177d4cf979, 0x42759b48c9c039e8afa135aa03e63e, 0x006bb6], + }, + BigNum { + limbs: [0x99d9214c68d624dc714980be571087, 0x9f73e4a877e46ea11c8dfdfe84358b, 0x001f19], + }, + BigNum { + limbs: [0x23cae1b39585da238eb67e41a8ef7a, 0x07df44f50563c498bb7a0ba353cfc8, 0x0054d4], + }, + BigNum { + limbs: [0x399fcbaaa521a98ea8afae00d170ae, 0x373c48aa371fc73ef01e4237d0cd62, 0x004d0a], + }, + BigNum { + limbs: [0x84043755593a5571575050ff2e8f53, 0x7016e0f346286bfae7e9c76a0737f1, 0x0026e3], + }, + BigNum { + limbs: [0x500eb02ee2d9b63e9fe4a0fd9609b0, 0x23d941e9787714e54cb0055d4e79e0, 0x0034ae], + }, + BigNum { + limbs: [0x6d9552d11b8248c1601b5e0269f651, 0x8379e7b404d11e548b580444898b73, 0x003f3f], + }, + BigNum { + limbs: [0x352480fa0142bbab3354b95ae621bc, 0x5126bd58cd82930f5e8f92bf19b8f0, 0x000cc6], + }, + BigNum { + limbs: [0x887f8205fd194354ccab45a519de45, 0x562c6c44afc5a02a797876e2be4c63, 0x006727], + }, + BigNum { + limbs: [0x62ded52fd700885ee20c0dd1b4a838, 0x1c067801129b35ed2aecb3a3c45a67, 0x00368a], + }, + BigNum { + limbs: [0x5ac52dd0275b76a11df3f12e4b57c9, 0x8b4cb19c6aacfd4cad1b55fe13aaec, 0x003d63], + }, + BigNum { + limbs: [0x66e7055dd8b9a9362010e8b6f2fca0, 0xb1192af8a686ae9351a4b09f45cf52, 0x006626], + }, + BigNum { + limbs: [0x56bcfda225a255c9dfef16490d0361, 0xf639fea4d6c184a686635902923601, 0x000dc6], + }, + BigNum { + limbs: [0x829fa9756239065149e6b135daad43, 0x1d92c648e00ac9797442364e2a520c, 0x0042df], + }, + BigNum { + limbs: [0x3b04598a9c22f8aeb6194dca2552be, 0x89c063549d3d69c063c5d353adb347, 0x00310e], + }, + BigNum { + limbs: [0x039c93ab01de8dc45d6a0ee42c235e, 0xe9a05d32ae0c342f0b767f189f73b8, 0x005802], + }, + BigNum { + limbs: [0xba076f54fc7d713ba295f01bd3dca3, 0xbdb2cc6acf3bff0acc918a8938919b, 0x001bea], + }, + BigNum { + limbs: [0x607690dcfab6e9e6e915abaf97bc2d, 0x7a3834c2b60b8fa3fe5f9b3c8ae049, 0x000023], + }, + BigNum { + limbs: [0x5d2d722303a5151916ea53506843d4, 0x2d1af4dac73ca395d9a86e654d250a, 0x0073ca], + }, + BigNum { + limbs: [0xf7e8d06558cc09c2361a9ef0904d55, 0xcd45c3e35c09548b704bd2ae612416, 0x003a9d], + }, + BigNum { + limbs: [0xc5bb329aa58ff53dc9e5600f6fb2ac, 0xda0d65ba213edeae67bc36f376e13c, 0x00394f], + }, + BigNum { + limbs: [0x366ec9858bbf6c69998015cfb618f9, 0x55e541519389f820338273189ec513, 0x0070c9], + }, + BigNum { + limbs: [0x8735397a729c9296667fe93049e708, 0x516de84be9be3b19a4859689394040, 0x000324], + }, + BigNum { + limbs: [0x991a8549b179952dfc1c048b1eebba, 0x4c4e68daaf27eca0d4a90b42cef9db, 0x002fd7], + }, + BigNum { + limbs: [0x24897db64ce269d203e3fa74e11447, 0x5b04c0c2ce204699035efe5f090b78, 0x004416], + }, + BigNum { + limbs: [0xaa6d581ed2c4bd1bfec4e31db595da, 0x7d5b0ed096e4303bd342e46dae0b30, 0x000674], + }, + BigNum { + limbs: [0x1336aae12b9741e4013b1be24a6a27, 0x29f81acce66402fe04c5253429fa23, 0x006d79], + }, + BigNum { + limbs: [0x81e1b366348d59d5008b415742cf2c, 0x1de08c44b05c5f9615ada1567cea0f, 0x001a24], + }, + BigNum { + limbs: [0x3bc24f99c9cea52aff74bda8bd30d5, 0x89729d58ccebd3a3c25a684b5b1b44, 0x0059c9], + }, + BigNum { + limbs: [0xe75b2f9b862e777f2812860a5e7bf6, 0x603dcb33a8f035c2af174b0de333ac, 0x002fce], + }, + BigNum { + limbs: [0xd648d364782d8780d7ed78f5a1840b, 0x47155e69d457fd7728f0be93f4d1a6, 0x00441f], + }, + BigNum { + limbs: [0x192102577134b3fe804b693688c917, 0x152542076b192914da850aa8c1ca1b, 0x003d77], + }, + BigNum { + limbs: [0xa48300a88d274b017fb495c97736ea, 0x922de796122f0a24fd82fef9163b38, 0x003676], + }, + BigNum { + limbs: [0xf4bccd99cb9046c44608878e56b18d, 0xe4da84bd62fbae9aa110d4844095c6, 0x001266], + }, + BigNum { + limbs: [0xc8e7356632cbb83bb9f77771a94e74, 0xc278a4e01a4c849f36f7351d976f8c, 0x006186], + }, + BigNum { + limbs: [0x311fa027a0f568823cb99f2c17bdcd, 0xf7cf11927e6353a2ae829e2dd36e96, 0x0072d2], + }, + BigNum { + limbs: [0x8c8462d85d66967dc3465fd3e84234, 0xaf84180afee4df9729856b740496bd, 0x00011a], + }, + BigNum { + limbs: [0x5c255fec426d8cdc8023c433014b7a, 0x1125fb8d170db8f63036640b7cfca4, 0x005ec0], + }, + BigNum { + limbs: [0x617ea313bbee72237fdc3accfeb487, 0x962d2e10663a7a43a7d1a5965b08af, 0x00152d], + }, + BigNum { + limbs: [0x234cc83e129d05cac696b0e5c3fcac, 0xfeb419a46ea5fcd501b9c2cf437010, 0x001c0a], + }, + BigNum { + limbs: [0x9a573ac1ebbef93539694e1a3c0355, 0xa89f0ff90ea23664d64e46d2949543, 0x0057e2], + }, + BigNum { + limbs: [0xe716e0f033f72b72498848fbc00998, 0xd0588d6029adaf665203abefaf0457, 0x001323], + }, + BigNum { + limbs: [0xd68d220fca64d38db677b6043ff669, 0xd6fa9c3d539a83d386045db22900fb, 0x0060c9], + }, + BigNum { + limbs: [0xa69c5cb7b5339c8b28202568c1191a, 0x7473aec107d89fd3fc0a318afa7228, 0x0010f4], + }, + BigNum { + limbs: [0x1707a64849286274d7dfd9973ee6e7, 0x32df7adc756f9365dbfdd816dd932b, 0x0062f9], + }, + BigNum { + limbs: [0x181f2d5d9e2a131245b9b503b948f7, 0x10fc1f1f45c512e78cf448f8beafff, 0x004bab], + }, + BigNum { + limbs: [0xa584d5a26031ebedba4649fc46b70a, 0x96570a7e378320524b13c0a9195554, 0x002842], + }, + BigNum { + limbs: [0x899c749fdaf665bc1548facb7b03c5, 0xc7d005315cea488effc435dd9245f1, 0x0047e6], + }, + BigNum { + limbs: [0x34078e6023659943eab7043484fc3c, 0xdf83246c205deaaad843d3c445bf62, 0x002c06], + }, + BigNum { + limbs: [0x980680010107783cd0d52868bd62f1, 0xff4f2394b51c1d27378dd579388bb1, 0x001b6d], + }, + BigNum { + limbs: [0x259d82fefd5486c32f2ad697429d10, 0xa8040608c82c1612a07a34289f79a2, 0x00587f], + }, + BigNum { + limbs: [0x0fda5051a37d3acd0cf163f403c594, 0x25d07b49a277db8a3197f6667f0a7c, 0x000aa3], + }, + BigNum { + limbs: [0xadc9b2ae5adec432f30e9b0bfc3a6d, 0x8182ae53dad057afa670133b58fad7, 0x00694a], + }, + BigNum { + limbs: [0xc4daee200c52605c067d108a5ba95a, 0x92c2bf28e2003a96940c094299dc62, 0x002976], + }, + BigNum { + limbs: [0xf8c914dff2099ea3f982ee75a456a7, 0x14906a749b47f8a343fc005f3e28f0, 0x004a77], + }, + BigNum { + limbs: [0xde75070be93e05f8f3ba3d42f36d2c, 0xd5e4479c8df0ecb3f50fb0f21337d1, 0x002414], + }, + BigNum { + limbs: [0xdf2efbf4151df9070c45c1bd0c92d5, 0xd16ee200ef574685e2f858afc4cd81, 0x004fd8], + }, + BigNum { + limbs: [0xf7bca4242070fcbc79729bfc181d87, 0xb15ea032d2eb3432303860656bc2eb, 0x004e23], + }, + BigNum { + limbs: [0xc5e75edbddeb0243868d6303e7e27a, 0xf5f4896aaa5cff07a7cfa93c6c4267, 0x0025c9], + }, + BigNum { + limbs: [0x5ef5e86046408143a898fb31c9c4ee, 0x91addd75800726e4c08df8991f67a0, 0x0056bd], + }, + BigNum { + limbs: [0x5eae1a9fb81b7dbc576703ce363b13, 0x15a54c27fd410c55177a1108b89db3, 0x001d30], + }, + BigNum { + limbs: [0x6e588415ecaa66b136effd3f67e4f0, 0xd8fd7bb9852f096506fcb28d9b7cf6, 0x0038ce], + }, + BigNum { + limbs: [0x4f4b7eea11b1984ec91001c0981b11, 0xce55ade3f81929d4d10b57143c885d, 0x003b1e], + }, + BigNum { + limbs: [0x8f36cb9e84d1b1630642f16c936994, 0xe75a382cbf2e02f0663c969124c698, 0x0067dc], + }, + BigNum { + limbs: [0x2e6d3761798a4d9cf9bd0d936c966d, 0xbff8f170be1a304971cb7310b33ebb, 0x000c10], + }, + BigNum { + limbs: [0xc391a44d095efb7975e7721deb1be9, 0xd069b7229003170842e6e017c538ea, 0x001403], + }, + BigNum { + limbs: [0xfa125eb2f4fd03868a188ce214e418, 0xd6e9727aed451c319521298a12cc68, 0x005fe9], + }, + BigNum { + limbs: [0x51d7689baf0f40f6c18c8d1ea26560, 0xb6ddd5775cb0f1982c73f8102e9d6d, 0x001b19], + }, + BigNum { + limbs: [0x6bcc9a644f4cbe093e7371e15d9aa1, 0xf0755426209741a1ab941191a967e6, 0x0058d3], + }, + BigNum { + limbs: [0xb10ea7a313f73e11fa377f6160c3e7, 0xf76f040b0a89bed4581761f087904e, 0x00346e], + }, + BigNum { + limbs: [0x0c955b5cea64c0ee05c87f9e9f3c1a, 0xafe4259272be74657ff0a7b1507505, 0x003f7e], + }, + BigNum { + limbs: [0xd73d5d3d1ebf4c2b27692f9d97b929, 0xc253a232e71502e1414cf60bcb7626, 0x004dd4], + }, + BigNum { + limbs: [0xe666a5c2df9cb2d4d896cf626846d8, 0xe4ff876a9633305896bb13960c8f2c, 0x002618], + }, + BigNum { + limbs: [0x01ab792405734124e37d7512d665de, 0x4efd72d699b6ad23b531fa5e728f48, 0x00502a], + }, + BigNum { + limbs: [0xbbf889dbf8e8bddb1c8289ed299a23, 0x5855b6c6e391861622d60f4365760b, 0x0023c3], + }, + BigNum { + limbs: [0x04625fcd552eb47e4f18a74d8f0ffc, 0x74e27cad0a2c5df5679e2874a63c51, 0x001b14], + }, + BigNum { + limbs: [0xb941a332a92d4a81b0e757b270f005, 0x3270acf0731bd5447069e12d31c902, 0x0058d9], + }, + BigNum { + limbs: [0x128954af94fd14686873f8ebe729d3, 0xaf07783cd487ebc8683b74daafca98, 0x0067d2], + }, + BigNum { + limbs: [0xab1aae50695eea97978c061418d62e, 0xf84bb160a8c047716fcc94c7283abb, 0x000c1a], + }, + BigNum { + limbs: [0x39c3bd751f2997989a8b21cb4b1481, 0xb14019f2da1c4b94376b4bf82d9ec8, 0x001e87], + }, + BigNum { + limbs: [0x83e0458adf3267676574dd34b4eb80, 0xf6130faaa32be7a5a09cbda9aa668b, 0x005565], + }, + BigNum { + limbs: [0x224e8044fb9b302d358051fe142663, 0x7e5dd2080df78bfe971e712d186e0a, 0x0041ee], + }, + BigNum { + limbs: [0x9b5582bb02c0ced2ca7fad01ebd99e, 0x28f557956f50a73b40e99874bf9749, 0x0031ff], + }, + BigNum { + limbs: [0x266e7302d6261ee8604ef138481f67, 0x4af099edb3d6b0bba73275b4fd222d, 0x003fb0], + }, + BigNum { + limbs: [0x97358ffd2835e0179fb10dc7b7e09a, 0x5c628fafc971827e30d593ecdae326, 0x00343d], + }, + BigNum { + limbs: [0xcd04d4f26b49a51297254297f78ee1, 0x396fe69b76655402529839aa08e182, 0x0029a6], + }, + BigNum { + limbs: [0xf09f2e0d931259ed68dabc68087120, 0x6de3430206e2df37856fcff7cf23d0, 0x004a47], + }, + BigNum { + limbs: [0x9a0420135c1e74d004fced7127bbd0, 0xfdaea9b84859439bb05a2196d21ca9, 0x006730], + }, + BigNum { + limbs: [0x239fe2eca23d8a2ffb03118ed84431, 0xa9a47fe534eeef9e27ade80b05e8aa, 0x000cbc], + }, + BigNum { + limbs: [0x9389ca095aa500706ae67706c752d6, 0x240d9f9006949ad4f83cf67b6dbbbc, 0x00710a], + }, + BigNum { + limbs: [0x2a1a38f6a3b6fe8f951987f938ad2b, 0x83458a0d76b39864dfcb13266a4997, 0x0002e3], + }, + BigNum { + limbs: [0x3128560305c8ef5a2396bbf9697fb6, 0xccabef53799b1e88e1d0d1f0dc5dc7, 0x003bc4], + }, + BigNum { + limbs: [0x8c7bacfcf8930fa5dc69430696804b, 0xdaa73a4a03ad14b0f63737b0fba78c, 0x003828], + }, + BigNum { + limbs: [0x7bdee41758cacac6c8da15682a43ad, 0xa255a42715a228e1ce9a9398792771, 0x0061ed], + }, + BigNum { + limbs: [0x41c51ee8a59134393725e997d5bc54, 0x04fd857667a60a58096d76095edde2, 0x001200], + }, + BigNum { + limbs: [0x36460c54463cd8f3645a8d9dd0449e, 0xc5e63ebd7c87a1375287bdfc69b2e7, 0x005f7a], + }, + BigNum { + limbs: [0x875df6abb81f260c9ba571622fbb63, 0xe16ceae000c0920285804ba56e526c, 0x001472], + }, + BigNum { + limbs: [0xe527d3c618bd91111135e45e927581, 0x651a3c71c35b24f44b3cbdee5bb69e, 0x0034e9], + }, + BigNum { + limbs: [0xd87c2f39e59e6deeeeca1aa16d8a80, 0x4238ed2bb9ed0e458ccb4bb37c4eb4, 0x003f04], + }, + BigNum { + limbs: [0x14bad0bf6f6300650f9beee20b5515, 0xe269c37d4d8412f381403b89980ee9, 0x00217b], + }, + BigNum { + limbs: [0xa8e932408ef8fe9af064101df4aaec, 0xc4e966202fc4204656c7ce183ff66a, 0x005271], + }, + BigNum { + limbs: [0x762a4c86bee8123a5f306e81360e77, 0x7337cf2dbc5743ce881218684db954, 0x0009e9], + }, + BigNum { + limbs: [0x4779b6793f73ecc5a0cf907ec9f18a, 0x341b5a6fc0f0ef6b4ff5f1398a4bff, 0x006a04], + }, + BigNum { + limbs: [0x9937ed82cb4a9fc76cd46491730168, 0xdc87d269cdd4133553ee41427fca0f, 0x001f19], + }, + BigNum { + limbs: [0x246c157d33115f38932b9a6e8cfe99, 0xcacb5733af7420048419c85f583b44, 0x0054d3], + }, + BigNum { + limbs: [0x56d7ccb64bbb09a91f10acaa57449b, 0x3d85d572d287a73bb732faaf08a75a, 0x004c45], + }, + BigNum { + limbs: [0x66cc3649b2a0f556e0ef5255a8bb66, 0x69cd542aaac08bfe20d50ef2cf5df9, 0x0027a8], + }, + BigNum { + limbs: [0x6f93db2578f813a18e4c1292f11cf2, 0x1640b859af326965abb4bbaf508f24, 0x003059], + }, + BigNum { + limbs: [0x4e1027da8563eb5e71b3ec6d0ee30f, 0x91127143ce15c9d42c534df287762f, 0x004394], + }, + BigNum { + limbs: [0x60ca413c1470f069cd62c92c7d3417, 0x0c87494cf671479a275b158a6c0d06, 0x006c26], + }, + BigNum { + limbs: [0x5cd9c1c3e9eb0e96329d35d382cbea, 0x9acbe05086d6eb9fb0acf4176bf84d, 0x0007c7], + }, + BigNum { + limbs: [0xb124828724cb9e6154c10541689b3b, 0x28ea95e4e4c038654cd2bddea77d27, 0x005169], + }, + BigNum { + limbs: [0x0c7f8078d990609eab3ef9be9764c6, 0x7e6893b89887fad48b354bc330882c, 0x002284], + }, + BigNum { + limbs: [0xd65e0a886ccc459e92185783bbf588, 0xf9623fbe85bf577afaa3b0aa4366e4, 0x003525], + }, + BigNum { + limbs: [0xe745f877918fb9616de7a77c440a79, 0xadf0e9def788dbbedd6458f7949e6e, 0x003ec7], + }, + BigNum { + limbs: [0x39b33948d004277c7c788388618a21, 0xd5d37bc89361ba87d73f16df38f517, 0x00166f], + }, + BigNum { + limbs: [0x83f0c9b72e57d78383877b779e75e0, 0xd17fadd4e9e678b200c8f2c29f103c, 0x005d7d], + }, + BigNum { + limbs: [0x0184807cbb3ccd17563741f5395c61, 0x191d96a87bdcf9bfabd2f465302102, 0x002917], + }, + BigNum { + limbs: [0xbc1f8283431f31e8a9c8bd0ac6a3a0, 0x8e3592f5016b397a2c35153ca7e451, 0x004ad6], + }, + BigNum { + limbs: [0x70b480ff3c8ada180c9ea7df3e2e1c, 0xb24c47cd173318b38cd42c7775b82f, 0x006df1], + }, + BigNum { + limbs: [0x4cef8200c1d124e7f3615720c1d1e5, 0xf506e1d066151a864b33dd2a624d24, 0x0005fb], + }, + BigNum { + limbs: [0xe0618f7723728fadfafe11076f83fb, 0xb65b78377562265e0e278de1545148, 0x0033f7], + }, + BigNum { + limbs: [0xdd427388dae96f520501edf8907c06, 0xf0f7b16607e60cdbc9e07bc083b40a, 0x003ff5], + }, + BigNum { + limbs: [0xe5d866c41107068d880fd835f7e59c, 0xfd30fb91fe1846ee4785af0c016f5e, 0x000ff9], + }, + BigNum { + limbs: [0xd7cb9c3bed54f87277f026ca081a65, 0xaa222e0b7f2fec4b90825a95d695f4, 0x0063f3], + }, + BigNum { + limbs: [0xb426361576c9da4906585ea02264ed, 0x7eb308dc00235023c5a79a89d2bbdf, 0x0032a6], + }, + BigNum { + limbs: [0x097dccea879224b6f9a7a05fdd9b14, 0x28a020c17d24e31612606f18054974, 0x004147], + }, + BigNum { + limbs: [0xa8b71686c297c367949e884db344bf, 0xdc7f753c1d55d80c7e16600602f704, 0x00100d], + }, + BigNum { + limbs: [0x14ecec793bc43b986b6176b24cbb42, 0xcad3b4615ff25b2d59f1a99bd50e4f, 0x0063df], + }, + BigNum { + limbs: [0xc575ec1a329a5541f33ede3b9f9399, 0x7826ed24369781fc49d19b208571ff, 0x002b29], + }, + BigNum { + limbs: [0xf82e16e5cbc1a9be0cc120c4606c68, 0x2f2c3c7946b0b13d8e366e81529353, 0x0048c4], + }, + BigNum { + limbs: [0xd485c1f50cc769de0283afe1cb6584, 0x56553e601b81d52738de72cd45e191, 0x005dda], + }, + BigNum { + limbs: [0xe91e410af1949521fd7c4f1e349a7d, 0x50fdeb3d61c65e129f2996d49223c1, 0x001613], + }, + BigNum { + limbs: [0x1fe5a5c8cfa8db155697e920b8c870, 0x4ccf3a7b715b6346c4d279d010a3a4, 0x000160], + }, + BigNum { + limbs: [0x9dbe5d372eb323eaa96815df473791, 0x5a83ef220beccff313358fd1c761af, 0x00728d], + }, + BigNum { + limbs: [0x99795435ca67fef6cc5689c1f540e1, 0x2cd7cfa083667322f2be809c88ff9b, 0x001572], + }, + BigNum { + limbs: [0x242aaeca33f4000933a9753e0abf20, 0x7a7b59fcf9e1c016e54989054f05b8, 0x005e7b], + }, + BigNum { + limbs: [0xba3d2b430423bbd2fee202f8577732, 0x8b74a34e54522dfa0d10e94de8286c, 0x002fb5], + }, + BigNum { + limbs: [0x0366d7bcfa38432d011dfc07a888cf, 0x1bde864f28f6053fcaf72053efdce7, 0x004438], + }, + BigNum { + limbs: [0xdbc3b2b164561896ce8e2e452c03e9, 0x67d41c98b8fa9829526ed6eec7578b, 0x0043ec], + }, + BigNum { + limbs: [0xe1e0504e9a05e6693171d0bad3fc18, 0x3f7f0d04c44d9b10859932b310adc7, 0x003001], + }, + BigNum { + limbs: [0x3a3bcba4e33b5f6e7f2a73337c97eb, 0xb18d510dd282977c9c840d057bc4a8, 0x0012ad], + }, + BigNum { + limbs: [0x8368375b1b209f9180d58bcc836816, 0xf5c5d88faac59bbd3b83fc9c5c40ab, 0x00613f], + }, + BigNum { + limbs: [0x546f42d2f2136ab70c1a97d4a5a28b, 0x519305a6a34d00a54824fbd3c944df, 0x0032b8], + }, + BigNum { + limbs: [0x6934c02d0c489448f3e5672b5a5d76, 0x55c023f6d9fb32948fe30dce0ec074, 0x004135], + }, + BigNum { + limbs: [0x565938c72e8dc88dd6a6cbf1ff3e4a, 0xdbdc2c56cc7d4b28d83b2561c2568a, 0x002e17], + }, + BigNum { + limbs: [0x674aca38cfce36722959330e00c1b7, 0xcb76fd46b0cae810ffcce44015aec9, 0x0045d5], + }, + BigNum { + limbs: [0x77ba8dbe3dfb062809456c05e23c98, 0x14671281b8a4b1b3a9be35f3271afe, 0x001935], + }, + BigNum { + limbs: [0x45e97541c060f8d7f6ba92fa1dc369, 0x92ec171bc4a381862e49d3aeb0ea55, 0x005ab8], + }, + BigNum { + limbs: [0x1096f45046dd52a99f6a0d133d06aa, 0x861a7b23584626170d92377f7b5e79, 0x004ed7], + }, + BigNum { + limbs: [0xad0d0eafb77eac566095f1ecc2f957, 0x2138ae7a25020d22ca75d2225ca6da, 0x002516], + }, + BigNum { + limbs: [0xe1ab1e5b93f822d0b94eb237110d9f, 0x5fa125e49db89d2655af277ba7868c, 0x0069f2], + }, + BigNum { + limbs: [0xdbf8e4a46a63dc2f46b14cc8eef262, 0x47b203b8df8f96138258e226307ec6, 0x0009fb], + }, + BigNum { + limbs: [0x6db8fecb665fa64c727ae95a4f1504, 0x4de5de9d149d0992379cc3665e3b80, 0x006d5c], + }, + BigNum { + limbs: [0x4feb043497fc58b38d8515a5b0eafd, 0x596d4b0068ab29a7a06b463b79c9d3, 0x000691], + }, + BigNum { + limbs: [0x62eebd2d2d03301254d2facb9c65ec, 0x9789160e7b8c0fe7473fe43df5ffa2, 0x000707], + }, + BigNum { + limbs: [0x5ab545d2d158ceedab2d0434639a15, 0x0fca138f01bc235290c82563e205b1, 0x006ce6], + }, + BigNum { + limbs: [0x34fabfe22bf195070a40826b0a8a22, 0x496805d716afcfe47a545cdc549868, 0x0045de], + }, + BigNum { + limbs: [0x88a9431dd26a69f8f5bf7c94f575df, 0x5deb23c6669863555db3acc5836ceb, 0x002e0f], + }, + BigNum { + limbs: [0x8e36a4f207ed7934afa23e4d664fb9, 0xe13b38a0e39adb1535f05011c0f97d, 0x001f5f], + }, + BigNum { + limbs: [0x2f6d5e0df66e85cb505dc0b299b048, 0xc617f0fc99ad5824a217b990170bd6, 0x00548d], + }, + BigNum { + limbs: [0x0efba3add1439fcda6025fcec5f85e, 0x23e39e3bddb85c5f7c6f1f39bb4a43, 0x004172], + }, + BigNum { + limbs: [0xaea85f522d185f3259fd9f313a07a3, 0x836f8b619f8fd6da5b98ea681cbb10, 0x00327b], + }, + BigNum { + limbs: [0x50fd367a04217a99f8b35c4feecc72, 0x3aeef6d281f2894bb176dc6c03beb7, 0x0000fa], + }, + BigNum { + limbs: [0x6ca6cc85fa3a8466074ca2b011338f, 0x6c6432cafb55a9ee26912d35d4469c, 0x0072f3], + }, + BigNum { + limbs: [0x3abeed94b4f1634be87dab9013c5e6, 0x7c84cd1b601bec56a6760508dcf493, 0x002bd5], + }, + BigNum { + limbs: [0x82e5156b496a9bb41782536fec3a1b, 0x2ace5c821d2c46e331920498fb10c0, 0x004818], + }, + BigNum { + limbs: [0x8726c067a90bbe12024f89b257ee62, 0x2e08318aeeacb408378170769053cb, 0x006b7e], + }, + BigNum { + limbs: [0x367d4298555040edfdb0754da8119f, 0x794af8128e9b7f31a086992b47b188, 0x00086f], + }, + BigNum { + limbs: [0xd18fa289732f688a5ee031a9245ad3, 0xbc0e64c9d219a8d562efc8186a2d24, 0x002969], + }, + BigNum { + limbs: [0xec1460768b2c9675a11fcd56dba52e, 0xeb44c4d3ab2e8a64751841896dd82e, 0x004a83], + }, + BigNum { + limbs: [0x427c3d5132b42adb5bf0d17886f914, 0x1b7bf18b694222c41c5896457592c9, 0x0009bb], + }, + BigNum { + limbs: [0x7b27c5aecba7d424a40f2d877906ed, 0x8bd7381214061075bbaf735c62728a, 0x006a32], + }, + BigNum { + limbs: [0xf4a328d6df60c441d4d6f8a6035ba1, 0x0e4e224ed50ccd12172874ef649f75, 0x0015ff], + }, + BigNum { + limbs: [0xc900da291efb3abe2b290659fca460, 0x9905074ea83b6627c0df94b27365dd, 0x005dee], + }, + BigNum { + limbs: [0x32eadeb2eaebb63bfd3383d2361246, 0xc05b04c9044fc6c5f0964c53353c45, 0x004c30], + }, + BigNum { + limbs: [0x8ab9244d137048c402cc7b2dc9edbb, 0xe6f824d478f86c73e771bd4ea2c90e, 0x0027bc], + }, + BigNum { + limbs: [0xe64e1a0d2e560d6e1499e715bda543, 0x278c6eed86f45ec8092b13ec8a7ecd, 0x00484d], + }, + BigNum { + limbs: [0xd755e8f2d005f191eb6617ea425abe, 0x7fc6baaff653d471cedcf5b54d8685, 0x002ba0], + }, + BigNum { + limbs: [0xa2a69107b6a980b482447428fa23ee, 0x7561de37d95e60cd66c57736477daa, 0x001a2c], + }, + BigNum { + limbs: [0x1afd71f847b27e4b7dbb8ad705dc13, 0x31f14b65a3e9d26c7142926b9087a9, 0x0059c1], + }, + BigNum { + limbs: [0x34a8335508915c9da5d0cc12724318, 0x78fad28e89573fde62c6b46b658a0f, 0x00242c], + }, + BigNum { + limbs: [0x88fbcfaaf5caa2625a2f32ed8dbce9, 0x2e58570ef3f0f35b75415536727b44, 0x004fc1], + }, + BigNum { + limbs: [0xd771dbf6e9599e6ae672da7b46fa2c, 0x3a0e0347179ccc16de33046dedfd4f, 0x005276], + }, + BigNum { + limbs: [0xe632270915026095198d2484b905d5, 0x6d45265665ab6722f9d50533ea0803, 0x002177], + }, + BigNum { + limbs: [0x50f41a25187433d5401e0e3fd3cfc1, 0x51bd4c910d3fe33c91024f7a8e43e3, 0x006e98], + }, + BigNum { + limbs: [0x6cafe8dae5e7cb2abfe1f0c02c3040, 0x5595dd0c70084ffd4705ba2749c170, 0x000555], + }, + BigNum { + limbs: [0x693136244c47d39006fed3cdaa0066, 0xa274da64baa96fb21ab194d4741dbd, 0x00004a], + }, + BigNum { + limbs: [0x5472ccdbb2142b6ff9012b3255ff9b, 0x04de4f38c29ec387bd5674cd63e796, 0x0073a3], + }, + BigNum { + limbs: [0x960d51bf6ae6f4e4ab5ac48f2bd9a6, 0x11dd7971e55a4d99e7da903c25f117, 0x006584], + }, + BigNum { + limbs: [0x2796b14093750a1b54a53a70d4265b, 0x9575b02b97ede59ff02d7965b2143c, 0x000e69], + }, + BigNum { + limbs: [0x60c1d07e6eeefc87b5eac39c929ac3, 0xe6212869277b67c6ec8885a28cd25a, 0x005d5f], + }, + BigNum { + limbs: [0x5ce232818f6d02784a153b636d653e, 0xc132013455cccb72eb7f83ff4b32f9, 0x00168d], + }, + BigNum { + limbs: [0xddf56e2cd4099acf38136ebca02c29, 0xac21cd03c9f223c6493f18cca8f69b, 0x003a40], + }, + BigNum { + limbs: [0xdfae94d32a526430c7ec90435fd3d8, 0xfb315c99b3560f738ec8f0d52f0eb7, 0x0039ac], + }, + BigNum { + limbs: [0x02b232af695bcf227fe83d53c1ddee, 0x912d964c2baf45393450556cb92530, 0x006af1], + }, + BigNum { + limbs: [0xbaf1d05095002fdd8017c1ac3e2213, 0x162593515198ee00a3b7b4351ee023, 0x0008fc], + }, + BigNum { + limbs: [0xa642214f0552fce5dcbdb1a601c023, 0xc5389b8a77563adc60186611634372, 0x001ccb], + }, + BigNum { + limbs: [0x1761e1b0f909021a23424d59fe3fde, 0xe21a8e1305f1f85d77efa39074c1e1, 0x005721], + }, + BigNum { + limbs: [0x62c16e272104bf004be4bfd097d114, 0xef816bc349c995e8b12f9a81eaa16a, 0x003adb], + }, + BigNum { + limbs: [0x5ae294d8dd573fffb41b3f2f682eed, 0xb7d1bdda337e9d5126d86f1fed63e9, 0x003911], + }, + BigNum { + limbs: [0xe4c9e2213e75a9aea4435a94a73592, 0x7bacf43b42c5ad0303a3834b35fc71, 0x005f05], + }, + BigNum { + limbs: [0xd8da20debfe655515bbca46b58ca6f, 0x2ba635623a828636d4648656a208e1, 0x0014e8], + }, + BigNum { + limbs: [0xaea472d254c55dee3ac1bc2e985d0e, 0x481c5fd3e525670a5d517f05737bda, 0x005dc7], + }, + BigNum { + limbs: [0x0eff902da996a111c53e42d167a2f3, 0x5f36c9c99822cc2f7ab68a9c648979, 0x001626], + }, + BigNum { + limbs: [0x95714916b52a44a1d1b433c6d47388, 0xf72b124899b39b47aca9f79b77ff22, 0x000957], + }, + BigNum { + limbs: [0x2832b9e94931ba5e2e4bcb392b8c79, 0xb0281754e39497f22b5e1206600631, 0x006a95], + }, + BigNum { + limbs: [0x3dab9667fd8d6bc0b912fc6ebb6b4d, 0xa957470b3b35b9ebd8849e767d8f1a, 0x00723d], + }, + BigNum { + limbs: [0x7ff86c9800ce933f46ed02914494b4, 0xfdfbe2924212794dff836b2b5a7639, 0x0001af], + }, + BigNum { + limbs: [0x1a6dd107013e8f532cb2e6d8d5aba7, 0x5fb4f46a87242dcbdd1d919b4e16c6, 0x004c9c], + }, + BigNum { + limbs: [0xa33631f8fd1d6facd34d18272a545a, 0x479e3532f624056dfaea780689ee8d, 0x002751], + }, + BigNum { + limbs: [0xdefdd5e0a986ed1c437a27915897ce, 0x95170c6c7a701e40b397a45127173a, 0x0043fb], + }, + BigNum { + limbs: [0xdea62d1f54d511e3bc85d76ea76833, 0x123c1d3102d814f924706550b0ee18, 0x002ff2], + }, + BigNum { + limbs: [0xbba69476fa5eda3561bfd6c71847fd, 0xc0f1216b6c3e53e37f41765245dfb3, 0x003b35], + }, + BigNum { + limbs: [0x01fd6e8903fd24ca9e402838e7b804, 0xe66208321109df5658c6934f9225a0, 0x0038b7], + }, + BigNum { + limbs: [0x1e4f3c2848bde33792a0704d7f3d5c, 0xa41db4f4117fa6964523fbe0428afd, 0x0028ea], + }, + BigNum { + limbs: [0x9f54c6d7b59e1bc86d5f8eb280c2a5, 0x033574a96bc88ca392e40dc1957a56, 0x004b03], + }, + BigNum { + limbs: [0x499179728f96587b47364abb902a7f, 0x06969e493afaf1cae603a9624c7f48, 0x0026cb], + }, + BigNum { + limbs: [0x7412898d6ec5a684b8c9b4446fd582, 0xa0bc8b54424d416ef204603f8b860b, 0x004d22], + }, + BigNum { + limbs: [0x2eab334af1e1da6d7b0ac353e2e894, 0xc71899852062fc6ecc48d2fcc38796, 0x0034e7], + }, + BigNum { + limbs: [0x8ef8cfb50c7a249284f53bac1d176d, 0xe03a90185ce536cb0bbf36a5147dbd, 0x003f05], + }, + BigNum { + limbs: [0xbaaa75d37ac780d245d76b67f27d60, 0x6941c2658187de20aaf30c6e820a8f, 0x0009bf], + }, + BigNum { + limbs: [0x02f98d2c83947e2dba2893980d82a1, 0x3e116737fbc055192d14fd3355fac4, 0x006a2e], + }, + BigNum { + limbs: [0x4d58135e5084d45283c7e8f859236e, 0xd03359beb3ea94caca1076aabb329a, 0x002fc3], + }, + BigNum { + limbs: [0x704befa1add72aad7c381607a6dc93, 0xd71fcfdec95d9e6f0df792f71cd2b9, 0x004429], + }, + BigNum { + limbs: [0x10e5e09d4a435c9c77c878f2bb8464, 0xf72162824b43a150ed4182d6c5cc71, 0x0021a4], + }, + BigNum { + limbs: [0xacbe2262b418a2638837860d447b9d, 0xb031c71b320491e8eac686cb1238e2, 0x005248], + }, + BigNum { + limbs: [0xf51d82b4bab62433c15d109a2b1351, 0xc51b3151c9ef8fa6d009cc1e058c1f, 0x000714], + }, + BigNum { + limbs: [0xc886804b43a5dacc3ea2ee65d4ecb0, 0xe237f84bb358a39307fe3d83d27933, 0x006cd8], + }, + BigNum { + limbs: [0x34ef3e831e2ed58ba307e4e30ab1d4, 0x08d18af837ce39c12f6fd503a491da, 0x006d88], + }, + BigNum { + limbs: [0x88b4c47ce02d29745cf81a1cf54e2d, 0x9e819ea54579f978a898349e337379, 0x000665], + }, + BigNum { + limbs: [0x336da7150fc15dddd56ac9a7dc56c7, 0x7d5317cd6abce54817f7fd9bdce46e, 0x004011], + }, + BigNum { + limbs: [0x8a365beaee9aa1222a95355823a93a, 0x2a0011d0128b4df1c0100c05fb20e5, 0x0033dc], + }, + BigNum { + limbs: [0x6ec9d66ed0d05112d7c36272dfa403, 0xc5d21eec1555ed81ca1bbc982e7922, 0x001ec1], + }, + BigNum { + limbs: [0x4eda2c912d8baded283c9c8d205bfe, 0xe1810ab167f245b80dec4d09a98c31, 0x00552b], + }, + BigNum { + limbs: [0xfa8f9106dce56dec7ec96011f79a3c, 0x1ac2f79b05e28225f2afe1f417c2c5, 0x0052ee], + }, + BigNum { + limbs: [0xc31471f92176911381369eee0865c5, 0x8c9032027765b113e55827adc0428d, 0x0020ff], + }, + BigNum { + limbs: [0x088b2b3a9aec775d554ddf3121ab7d, 0xfa53f3c7787f73c5ee3d79f317d56d, 0x00357f], + }, + BigNum { + limbs: [0xb518d7c5636f87a2aab21fcede5484, 0xacff35d604c8bf73e9ca8faec02fe6, 0x003e6d], + }, + BigNum { + limbs: [0xab1d2a69326150035433bf5ab27518, 0x9450acd956d2d3e5beb3e22dd68c4c, 0x0011d9], + }, + BigNum { + limbs: [0x1286d896cbfaaefcabcc3fa54d8ae9, 0x13027cc426755f5419542774017907, 0x006214], + }, + BigNum { + limbs: [0xb422d75c3d666f868f9ace7f0c05ad, 0x08fa0da5731b7a4f6bf340fd338d21, 0x003186], + }, + BigNum { + limbs: [0x09812ba3c0f58f7970653080f3fa54, 0x9e591bf80a2cb8ea6c14c8a4a47832, 0x004267], + }, + BigNum { + limbs: [0xa13ca9ab7aec628d9e085dbcf627b3, 0x2ceae6375943e17d761d599629634f, 0x0061f7], + }, + BigNum { + limbs: [0x1c675954836f9c7261f7a14309d84e, 0x7a684366240451bc61eab00baea204, 0x0011f6], + }, + BigNum { + limbs: [0x5a435445e20ad1603533d63a46811e, 0x107acd46e6ead73902c051a4f47a89, 0x001099], + }, + BigNum { + limbs: [0x6360aeba1c512d9fcacc28c5b97ee3, 0x96d85c56965d5c00d547b7fce38aca, 0x006354], + }, + BigNum { + limbs: [0x0f556c7dd965c9e662abd652bab712, 0x2868b33df772d83728a650fec1696a, 0x0039ae], + }, + BigNum { + limbs: [0xae4e968224f635199d5428ad4548ef, 0x7eea765f85d55b02af61b8a3169be9, 0x003a3f], + }, + BigNum { + limbs: [0x095888daa8cfdbbb8cc4d2edbd46d3, 0xae4dd751366cffd24594deb8870dde, 0x0007e3], + }, + BigNum { + limbs: [0xb44b7a25558c2344733b2c1242b92e, 0xf905524c46db336792732ae950f775, 0x006c09], + }, + BigNum { + limbs: [0x5aeccb05e4e36060803fc8de4668e8, 0x193723dba47ad8cbb8d047f3a39b0c, 0x00414b], + }, + BigNum { + limbs: [0x62b737fa19789e9f7fc03621b99719, 0x8e1c05c1d8cd5a6e1f37c1ae346a47, 0x0032a2], + }, + BigNum { + limbs: [0x1853b4ee0a8f23056507ef2eaa6a09, 0x0a90ca49d553e549f2ee40567332ca, 0x002d21], + }, + BigNum { + limbs: [0xa5504e11f3ccdbfa9af80fd15595f8, 0x9cc25f53a7f44defe519c94b64d289, 0x0046cc], + }, + BigNum { + limbs: [0x2624f47a7cc3c3863217230f4471f9, 0xa98b3d9bb1a86d72e5e027b600ea16, 0x00382c], + }, + BigNum { + limbs: [0x977f0e8581983b79cde8dbf0bb8e08, 0xfdc7ec01cb9fc5c6f227e1ebd71b3d, 0x003bc0], + }, + BigNum { + limbs: [0x833c9a0c4b5810f5b4c6b50487ae1f, 0x21f3bb92f58d494135cedd7cc2a033, 0x001be4], + }, + BigNum { + limbs: [0x3a6768f3b303ee0a4b3949fb7851e2, 0x855f6e0a87bae9f8a2392c25156520, 0x005809], + }, + BigNum { + limbs: [0xf382d2cf899e1c66a46ab4699489c6, 0xcabaccd26113e0b7a9efc26faa9532, 0x002803], + }, + BigNum { + limbs: [0xca21303074bde2995b954a966b763b, 0xdc985ccb1c3452822e1847322d7020, 0x004be9], + }, + BigNum { + limbs: [0x6910d639aefe17754b6a53fddc4c94, 0x88cd7576b823f47dfc583fe631a439, 0x0021d0], + }, + BigNum { + limbs: [0x54932cc64f5de78ab495ab0223b36d, 0x1e85b426c5243ebbdbafc9bba6611a, 0x00521d], + }, + BigNum { + limbs: [0x0d613cc36bfa358f848821e4356469, 0x09516722769df28de6c16bb4bbee36, 0x002f2b], + }, + BigNum { + limbs: [0xb042c63c9261c9707b77dd1bca9b98, 0x9e01c27b06aa40abf1469ded1c171d, 0x0044c2], + }, + BigNum { + limbs: [0x75d2d8c194a702ae113bb568e33c3c, 0xfd9bbe2b455b567ce9424c694ca7ba, 0x00596e], + }, + BigNum { + limbs: [0x47d12a3e69b4fc51eec449971cc3c5, 0xa9b76b7237ecdcbceec5bd388b5d99, 0x001a7e], + }, + BigNum { + limbs: [0xd67644ecb1ec23b5e2c92f7207066f, 0x3669f0b510aff120489b258ca13d29, 0x000c90], + }, + BigNum { + limbs: [0xe72dbe134c6fdb4a1d36cf8df8f992, 0x70e938e86c9842198f6ce41536c829, 0x00675d], + }, + BigNum { + limbs: [0xc313287b50ee6ceb107d107792e331, 0xf5f496036dda75d6467e78880bd899, 0x001f92], + }, + BigNum { + limbs: [0xfa90da84ad6d9214ef82ee886d1cd0, 0xb15e939a0f6dbd6391899119cc2cb9, 0x00545a], + }, + BigNum { + limbs: [0x0bd4e6a7e888998588ec8712bbb533, 0xc466e9f46b9b99b02b0d0da9e471ba, 0x003367], + }, + BigNum { + limbs: [0xb1cf1c5815d3657a771377ed444ace, 0xe2ec3fa911ac9989acfafbf7f39399, 0x004085], + }, + BigNum { + limbs: [0x3be97480c55418f45dadfa7ab57531, 0xea964384940530c5e2bc37a1533ac3, 0x0066b4], + }, + BigNum { + limbs: [0x81ba8e7f3907e60ba25204854a8ad0, 0xbcbce618e9430273f54bd20084ca90, 0x000d38], + }, + BigNum { + limbs: [0xc2430643e8182d35323eec80747457, 0xfcbdae14d82de463155db41faca3da, 0x006021], + }, + BigNum { + limbs: [0xfb60fcbc1643d1cacdc1127f8b8baa, 0xaa957b88a51a4ed6c2aa55822b6178, 0x0013cb], + }, + BigNum { + limbs: [0xc7a2c8ab4cebe3229d28add06fa1a0, 0x36b466b8ceec2076b2987fe06886b8, 0x001769], + }, + BigNum { + limbs: [0xf6013a54b1701bdd62d7512f905e61, 0x709ec2e4ae5c12c3256f89c16f7e9a, 0x005c84], + }, + BigNum { + limbs: [0xd8a879169dd8991a08d5e4e2e01343, 0x192fb0cd079daf0f64a02464f057f6, 0x00679a], + }, + BigNum { + limbs: [0xe4fb89e9608365e5f72a1a1d1fecbe, 0x8e2378d075aa842a7367e53ce7ad5c, 0x000c53], + }, + BigNum { + limbs: [0xb5485481194aefa65b28ed517d4354, 0xde37523e64d4ddbaddb9f90e7d697a, 0x000019], + }, + BigNum { + limbs: [0x085bae7ee5110f59a4d711ae82bcad, 0xc91bd75f1873557efa4e10935a9bd9, 0x0073d3], + }, + BigNum { + limbs: [0x970eedd0930abc1f41e0a2ec24c764, 0x76aca5cbffa191b659acf68394e8b7, 0x006b2f], + }, + BigNum { + limbs: [0x2695152f6b5142e0be1f5c13db389d, 0x30a683d17da6a1837e5b131e431c9c, 0x0008be], + }, + BigNum { + limbs: [0xea426fe3382da5ccd6232e773a7be0, 0xbccf1d2163b24879f55520eec3096c, 0x005fc0], + }, + BigNum { + limbs: [0xd361931cc62e593329dcd088c58421, 0xea840c7c1995eabfe2b2e8b314fbe6, 0x00142c], + }, + BigNum { + limbs: [0x5ded1899239a88898b0554d218a61c, 0xd11ff6f7fa6cbcbe9301f686e86bf9, 0x0044c1], + }, + BigNum { + limbs: [0x5fb6ea66dac1767674faaa2de759e5, 0xd63332a582db767b4506131aef995a, 0x002f2b], + }, + BigNum { + limbs: [0x62a1c1fa6e32aa1b529e40de1d7c4d, 0x5788394251987c11e63de35442f626, 0x0054e6], + }, + BigNum { + limbs: [0x5b024105902954e4ad61be21e283b4, 0x4fcaf05b2bafb727f1ca264d950f2d, 0x001f07], + }, + BigNum { + limbs: [0x23483beb660aa3126c1c8e445a8a5b, 0x12a22a888026f6f5faa93431d39300, 0x005726], + }, + BigNum { + limbs: [0x9a5bc71498515bed93e370bba575a6, 0x94b0ff14fd213c43dd5ed570047253, 0x001cc7], + }, + BigNum { + limbs: [0xd34a8629e2a390579464a37d34c01f, 0xe95e089c5912926d173883e9142489, 0x006800], + }, + BigNum { + limbs: [0xea597cd61bb86ea86b9b5b82cb3fe2, 0xbdf521012435a0ccc0cf85b8c3e0c9, 0x000bec], + }, + BigNum { + limbs: [0x12f7a9a2ba4c6f2289841708c47e76, 0x8d51514e6d3ba1fb1ad2f91bea10fe, 0x006c5c], + }, + BigNum { + limbs: [0xaaac595d440f8fdd767be7f73b818b, 0x1a01d84f100c913ebd351085edf455, 0x000791], + }, + BigNum { + limbs: [0x1084d1e459c2644faaa91388ae574d, 0xed8c43ec33b5e17e82746da5a2b076, 0x0047d7], + }, + BigNum { + limbs: [0xad1f311ba4999ab05556eb7751a8b4, 0xb9c6e5b1499251bb55939bfc3554dd, 0x002c15], + }, + BigNum { + limbs: [0xf9870d09b49934594ef32abcf775b9, 0xd339e9bdd168c902e32bba607579dc, 0x00220b], + }, + BigNum { + limbs: [0xc41cf5f649c2caa6b10cd443088a48, 0xd4193fdfabdf6a36f4dc4f41628b76, 0x0051e1], + }, + BigNum { + limbs: [0xba5587cee31ba92218afc24fb3fb6d, 0x26f47becfa9260ab9a24e417ab6e2a, 0x00010c], + }, + BigNum { + limbs: [0x034e7b311b4055dde7503cb04c0494, 0x805eadb082b5d28e3de3258a2c9729, 0x0072e1], + }, + BigNum { + limbs: [0xb1101b4a6a67fce5fb1ba223a764f8, 0x59b150561c08ee82c31d8e145688a9, 0x001f99], + }, + BigNum { + limbs: [0x0c93e7b593f4021a04e45cdc589b09, 0x4da1d947613f44b714ea7b8d817caa, 0x005454], + }, + BigNum { + limbs: [0x33e7e7f45b14fb3783b2614bebb0c2, 0x6a09c6e30dc4df9d916b36a30c5404, 0x006136], + }, + BigNum { + limbs: [0x89bc1b0ba34703c87c4d9db4144f3f, 0x3d4962ba6f83539c469cd2fecbb14f, 0x0012b7], + }, + BigNum { + limbs: [0x3eb77e93fdfad62d5d0f5c33535fd6, 0x31fb8102066d8296d9a9c6a10e2512, 0x006457], + }, + BigNum { + limbs: [0x7eec846c006128d2a2f0a2ccaca02b, 0x7557a89b76dab0a2fe5e4300c9e041, 0x000f96], + }, + BigNum { + limbs: [0x8fd58359d39d07910b8b9b66684add, 0x7d8c49ec4fb7f6900d91db7be189f1, 0x005363], + }, + BigNum { + limbs: [0x2dce7fa62abef76ef474639997b524, 0x29c6dfb12d903ca9ca762e25f67b62, 0x00208a], + }, + BigNum { + limbs: [0x5b9ae4008d73829ab0eaa775faa012, 0x76e29080b50f1cd896a4b3705edc8a, 0x004256], + }, + BigNum { + limbs: [0x62091eff70e87c654f15578a055fef, 0x3070991cc8391661416356317928c9, 0x003197], + }, + BigNum { + limbs: [0x5415c7e32b57d8f14c6ea5a428c753, 0x2871d8bbf1938804b57eba0c7f48b2, 0x005ea3], + }, + BigNum { + limbs: [0x698e3b1cd304260eb391595bd738ae, 0x7ee150e18bb4ab3522894f9558bca1, 0x00154a], + }, + BigNum { + limbs: [0x454cc072521a80dee4982fe73f0476, 0xc15b4cc4b5699059b96ae5d8e22ca0, 0x002ec1], + }, + BigNum { + limbs: [0x7857428dac417e211b67cf18c0fb8b, 0xe5f7dcd8c7dea2e01e9d23c8f5d8b3, 0x00452b], + }, + BigNum { + limbs: [0x6a4174f9d391c3c1bc0e2e75444e71, 0xd2c2aeff4f7c1033a694607d9089ee, 0x00585f], + }, + BigNum { + limbs: [0x53628e062aca3b3e43f1d08abbb190, 0xd4907a9e2dcc23063173a924477b65, 0x001b8d], + }, + BigNum { + limbs: [0x077fb2af5f3968498cb1c004d751da, 0x9f9a7567a04fcef4eeac0deb62a9e2, 0x002f41], + }, + BigNum { + limbs: [0xb62450509f2296b6734e3efb28ae27, 0x07b8b435dcf86444e95bfbb6755b71, 0x0044ac], + }, + BigNum { + limbs: [0x7f4b22ee86c90c6e3bf01c498740f6, 0xc509aec45575756fdf33240b9eb8c2, 0x004322], + }, + BigNum { + limbs: [0x3e58e0117792f291c40fe2b678bf0b, 0xe2497ad927d2bdc9f8d4e596394c91, 0x0030ca], + }, + BigNum { + limbs: [0x62ff60cc15dea0c8e2dd3ed107d499, 0x0cdd9173bbfd3e8c95924f0548cbe5, 0x004c1c], + }, + BigNum { + limbs: [0x5aa4a233e87d5e371d22c02ef82b68, 0x9a759829c14af4ad4275ba9c8f396e, 0x0027d1], + }, + BigNum { + limbs: [0xc9f9aa166bf26bc0797107b1cb3124, 0x3826c895df7f4b00e4140110a4aed7, 0x001896], + }, + BigNum { + limbs: [0xf3aa58e99269933f868ef74e34cedd, 0x6f2c61079dc8e838f3f4089133567b, 0x005b57], + }, + BigNum { + limbs: [0x6b1f176bbbafe77f0e8114b6a0d047, 0xe6b5bd56753f2c848ff6620f2d19a0, 0x0021fa], + }, + BigNum { + limbs: [0x5284eb9442ac1780f17eea495f2fba, 0xc09d6c47080906b54811a792aaebb3, 0x0051f2], + }, + BigNum { + limbs: [0x24dfe0eff265eeb9f443beec8e4a98, 0xd12f488a4f008dde048d37f34632d0, 0x006ab6], + }, + BigNum { + limbs: [0x98c422100bf610460bbc401371b569, 0xd623e1132e47a55bd37ad1ae91d283, 0x000936], + }, + BigNum { + limbs: [0x89389d045ecd85912bd03df9174127, 0x5678784bdd314b69773fb25cf78088, 0x0009e9], + }, + BigNum { + limbs: [0x346b65fb9f8e796ed42fc106e8beda, 0x50dab151a016e7d060c85744e084cb, 0x006a04], + }, + BigNum { + limbs: [0xb2c43c2678b650937dff33b29a7067, 0x10012f49cbdbb0c057cfa5a042c808, 0x0032f6], + }, + BigNum { + limbs: [0x0adfc6d985a5ae6c8200cb4d658f9a, 0x9751fa53b16c827980386401953d4b, 0x0040f7], + }, + BigNum { + limbs: [0x89db099f5aa3d61cf9c8103c36f106, 0x04026adc48a1cb249422c0b1923c84, 0x00420f], + }, + BigNum { + limbs: [0x33c8f960a3b828e30637eec3c90efb, 0xa350bec134a6681543e548f045c8cf, 0x0031de], + }, + BigNum { + limbs: [0x131960517113c6aa3f1fa1135a9163, 0xb023314a82dbfe42fdcdc306e96f61, 0x006fbc], + }, + BigNum { + limbs: [0xaa8aa2ae8d483855c0e05deca56e9e, 0xf72ff852fa6c34f6da3a469aee95f2, 0x000430], + }, + BigNum { + limbs: [0xa8dfb2d95d08eebad594175ea0777d, 0xd15d1348757839ea78d5ebd557ac68, 0x000fa5], + }, + BigNum { + limbs: [0x14c45026a15310452a6be7a15f8884, 0xd5f6165507cff94f5f321dcc8058eb, 0x006447], + }, + BigNum { + limbs: [0xb49eae14ca61adfb5a74bbf196694f, 0x78e42eccf77a299af2a89d3d9a9503, 0x0004a5], + }, + BigNum { + limbs: [0x090554eb33fa5104a58b430e6996b2, 0x2e6efad085ce099ee55f6c643d7050, 0x006f48], + }, + BigNum { + limbs: [0xc57c7aae3c5d192fc39139d30accaa, 0x6a37e78478720ac2b9a3a71bc6dee6, 0x0052ff], + }, + BigNum { + limbs: [0xf8278851c1fee5d03c6ec52cf53357, 0x3d1b421904d628771e64628611266c, 0x0020ee], + }, + BigNum { + limbs: [0xbfe4d04bc3af5abd41931e6ad8fbc4, 0xb4226f2d37b4092596aa02af41df19, 0x0052df], + }, + BigNum { + limbs: [0xfdbf32b43aaca442be6ce09527043d, 0xf330ba7045942a14415e06f2962639, 0x00210d], + }, + BigNum { + limbs: [0x5d4c8253345fc0da9862bcfa4152a5, 0xb67b052567d36d907e855e18e24fe2, 0x001666], + }, + BigNum { + limbs: [0x605780acc9fc3e25679d4205bead5c, 0xf0d824781574c5a95982ab88f5b571, 0x005d86], + }, + BigNum { + limbs: [0x2a6b489ba9d4071dd477a1a8fb9943, 0x2f1ccbe3e2f477c805e7d68aa60033, 0x0057e3], + }, + BigNum { + limbs: [0x9338ba645487f7e22b885d570466be, 0x78365db99a53bb71d2203317320520, 0x001c0a], + }, + BigNum { + limbs: [0x1ab551c326a152b58257bb2e5d71db, 0xbc560f4a92e069085360a46e5262e7, 0x004bf9], + }, + BigNum { + limbs: [0xa2eeb13cd7baac4a7da843d1a28e26, 0xeafd1a52ea67ca3184a7653385a26c, 0x0027f3], + }, + BigNum { + limbs: [0x58997c0bcf1c7ec8ed5cac7b9d2bac, 0xb301523084ffbb94572c1757cd8070, 0x001998], + }, + BigNum { + limbs: [0x650a86f42f3f803712a3528462d455, 0xf451d76cf84877a580dbf24a0a84e3, 0x005a54], + }, + BigNum { + limbs: [0xbf85946a2dad3bd8b9c1884f38f043, 0x2e2d253894999a00ad991d57396878, 0x000645], + }, + BigNum { + limbs: [0xfe1e6e95d0aec327463e76b0c70fbe, 0x79260464e8ae99392a6eec4a9e9cda, 0x006da8], + }, + BigNum { + limbs: [0x79d0abcc6b92776cfd5fd90654dc47, 0x92b5ba1dbfdb4e6157ba4c1415819b, 0x001b33], + }, + BigNum { + limbs: [0x43d3573392c9879302a025f9ab23ba, 0x149d6f7fbd6ce4d8804dbd8dc283b8, 0x0058ba], + }, + BigNum { + limbs: [0x68d3d308f6af752367d21449c614fb, 0x7acb9966a71884d4224a351c246aaa, 0x001e8c], + }, + BigNum { + limbs: [0x54d02ff707ac89dc982deab639eb06, 0x2c879036d62fae65b5bdd485b39aa9, 0x005561], + }, + BigNum { + limbs: [0xd1347b378fbf96e206da11a5d36306, 0x0a11a0f704f4fc3e8acfe0f8245f0a, 0x00564c], + }, + BigNum { + limbs: [0xec6f87c86e9c681df925ed5a2c9cfb, 0x9d4188a6785336fb4d3828a9b3a648, 0x001da1], + }, + BigNum { + limbs: [0xad4b8238fb15a2cd5f7b9753dbc950, 0x8876214b5ea64b7394e9aacb5a271f, 0x002bb6], + }, + BigNum { + limbs: [0x105880c703465c32a08467ac2436b1, 0x1edd08521ea1e7c6431e5ed67dde34, 0x004837], + }, + BigNum { + limbs: [0x63fff9337fecd313c7c03ef17a2033, 0xabee7c028923cc0affedaf37b5bb4e, 0x001c39], + }, + BigNum { + limbs: [0x59a409cc7e6f2bec383fc00e85dfce, 0xfb64ad9af424672ed81a5a6a224a05, 0x0057b3], + }, + BigNum { + limbs: [0x91a1faeb4b36d5cc2201b834e74a04, 0x8f5b87d7a05090eb099e349e17639b, 0x00605b], + }, + BigNum { + limbs: [0x2c020814b3252933ddfe46cb18b5fd, 0x17f7a1c5dcf7a24ece69d503c0a1b8, 0x001392], + }, + BigNum { + limbs: [0xa2df4d8921e8aff1867882e0b9cae8, 0xcb41966a5661788743c7818f06051d, 0x0006f3], + }, + BigNum { + limbs: [0x1ac4b576dc734f0e79877c1f463519, 0xdc11933326e6bab294408812d20036, 0x006cf9], + }, + BigNum { + limbs: [0x5c5d4be5b92c7b5ab670793f534c85, 0x7f1658569f752082ae264b6ae7cc8d, 0x003a09], + }, + BigNum { + limbs: [0x6146b71a452f83a5498f85c0acb37c, 0x283cd146ddd312b729e1be36f038c6, 0x0039e4], + }, + BigNum { + limbs: [0x6736009fa130119f9a06a539dcc7bd, 0xf5a12bf093b927ab9acee22625ab94, 0x005351], + }, + BigNum { + limbs: [0x566e02605d2bed6065f959c6233844, 0xb1b1fdace98f0b8e3d39277bb259bf, 0x00209b], + }, + BigNum { + limbs: [0x24c2fd6a62162b6b37d19f83bb87e0, 0xac8524669b3262d47d6f3069a6b4a9, 0x002146], + }, + BigNum { + limbs: [0x98e105959c45d394c82e5f7c447821, 0xface0536e215d0655a98d9383150aa, 0x0052a6], + }, + BigNum { + limbs: [0xa24a9bd470cd67ca0a0220aec02fa4, 0x3ba7dfb14308007b0e472badec8d39, 0x0057e0], + }, + BigNum { + limbs: [0x1b59672b8d8e9735f5fdde513fd05d, 0x6bab49ec3a4032bec9c0ddf3eb781a, 0x001c0d], + }, + BigNum { + limbs: [0xbf80d6881dc2190c850dd65aaaaefa, 0x4708ac66bf63479ddf15c7b33589c3, 0x001bab], + }, + BigNum { + limbs: [0xfe232c77e099e5f37af228a5555107, 0x604a7d36bde4eb9bf8f241eea27b8f, 0x005842], + }, + BigNum { + limbs: [0xd6c764f82602a7228bc1c0e7e3fdf5, 0x4cef0ca52f27785009eb7e7ecdaa03, 0x000658], + }, + BigNum { + limbs: [0xe6dc9e07d85957dd743e3e181c020c, 0x5a641cf84e20bae9ce1c8b230a5b4f, 0x006d95], + }, + BigNum { + limbs: [0x74957c1d2728744430911d2ef02d6c, 0x00c1a3aeef45073c6cb1200432d367, 0x00688a], + }, + BigNum { + limbs: [0x490e86e2d7338abbcf6ee1d10fd295, 0xa69185ee8e032bfd6b56e99da531ec, 0x000b63], + }, + BigNum { + limbs: [0xb39fb2d51ad78d473ea412a309a77c, 0x9915614f3901e5434787eb246e5cea, 0x003d3d], + }, + BigNum { + limbs: [0x0a04502ae38471b8c15bec5cf65885, 0x0e3dc84e44464df690801e7d69a869, 0x0036b0], + }, + BigNum { + limbs: [0x7203a676aa3fae360419ba7b4a732f, 0x208bd4a64316c3de999d9c5ccf8954, 0x00200d], + }, + BigNum { + limbs: [0x4ba05c89541c50c9fbe64484b58cd2, 0x86c754f73a316f5b3e6a6d45087bff, 0x0053e0], + }, + BigNum { + limbs: [0xcb18f70b1666477b49fff1eb1daf38, 0x4e933af6252c6dc58e41cd427dbe5f, 0x00009c], + }, + BigNum { + limbs: [0xf28b0bf4e7f5b784b6000d14e250c9, 0x58bfeea7581bc57449c63c5f5a46f3, 0x007351], + }, + BigNum { + limbs: [0x4567cac5c777f44c56fb3866d3a809, 0xffb392002a5b378787829b9e0abd13, 0x0067b3], + }, + BigNum { + limbs: [0x783c383a36e40ab3a904c6992c57f8, 0xa79f979d52ecfbb250856e03cd4840, 0x000c39], + }, + BigNum { + limbs: [0xdca0ae49bc978f29ebf33886000c8a, 0xabc5b7c03be4cc772df2b06be7d8d7, 0x0053d7], + }, + BigNum { + limbs: [0xe10354b641c46fd6140cc679fff377, 0xfb8d71dd416366c2aa155935f02c7b, 0x002015], + }, + BigNum { + limbs: [0x940867fad3080cff61da335d218c69, 0x9d4a6f36bb328011781ae2eb8338e5, 0x00596a], + }, + BigNum { + limbs: [0x299b9b052b53f2009e25cba2de7398, 0x0a08ba66c215b3285fed26b654cc6e, 0x001a83], + }, + BigNum { + limbs: [0x542b67f83c49199e3ccb8dd576b0f5, 0xadb736656798954b937d9da775086a, 0x004a41], + }, + BigNum { + limbs: [0x69789b07c212e561c334712a894f0c, 0xf99bf33815af9dee448a6bfa62fce9, 0x0029ab], + }, + BigNum { + limbs: [0x76cfa8688aad937936281d725764c6, 0xda887f345f79f45562e9505e5e255d, 0x005b21], + }, + BigNum { + limbs: [0x46d45a9773ae6b86c9d7e18da89b3b, 0xcccaaa691dce3ee4751eb94379dff6, 0x0018cb], + }, + BigNum { + limbs: [0xeafd87bcdafda8cb6a70e04f526a21, 0x340846157bd5c13b498f50314635ca, 0x0029d8], + }, + BigNum { + limbs: [0xd2a67b43235e5634958f1eb0ad95e0, 0x734ae388017271fe8e78b97091cf88, 0x004a15], + }, + BigNum { + limbs: [0x1da259503de1389ec8f2d00aa19cc2, 0xbf6ff47ecf4640000ffa7ee6b74af1, 0x002250], + }, + BigNum { + limbs: [0xa001a9afc07ac661370d2ef55e633f, 0xe7e3351eae01f339c80d8abb20ba62, 0x00519c], + }, + BigNum { + limbs: [0x03dab19044e968a5e53cecd36dabb8, 0xfcab3ad741ebc624a6bf28c35e8472, 0x00592e], + }, + BigNum { + limbs: [0xb9c9516fb972965a1ac3122c925449, 0xaaa7eec63b5c6d153148e0de7980e1, 0x001abe], + }, + BigNum { + limbs: [0x9d5d562fb82e29d6e0934f96c7a283, 0x5287a19abf3c4b844ced5de375e7cb, 0x0009c6], + }, + BigNum { + limbs: [0x2046acd0462dd5291f6caf69385d7e, 0x54cb8802be0be7b58b1aabbe621d88, 0x006a27], + }, + BigNum { + limbs: [0x726517ced91929d4910b491b0f88ae, 0x5ec1c5949c07f55d7b47c3dbbb90a2, 0x0010c6], + }, + BigNum { + limbs: [0x4b3eeb312542d52b6ef4b5e4f07753, 0x48916408e1403ddc5cc045c61c74b1, 0x006327], + }, + BigNum { + limbs: [0x93ecc4fa926abf15507909d573d669, 0x2ddbb6673ea3ae29036141e291016e, 0x00394a], + }, + BigNum { + limbs: [0x29b73e056bf13feaaf86f52a8c2998, 0x797773363ea48510d4a6c7bf4703e5, 0x003aa3], + }, + BigNum { + limbs: [0xdb8c0f19e4d5789314520692a107bf, 0x559da0d834d894ef9b74b96b0020a5, 0x006d5b], + }, + BigNum { + limbs: [0xe217f3e61986866cebadf86d5ef842, 0x51b588c5486f9e4a3c935036d7e4ad, 0x000692], + }, + BigNum { + limbs: [0x4ce9d6b7ae56c76a7878b810d6b679, 0xd0cbecb1569285bfd4bf0aae06bd36, 0x004ed8], + }, + BigNum { + limbs: [0x70ba2c4850053795878746ef294988, 0xd6873cec26b5ad7a0348fef3d1481d, 0x002514], + }, + BigNum { + limbs: [0x9a7d5bdaf34775fa3f8e60a92902ec, 0x7e6ad59835800491be3e124c5646a5, 0x0052a2], + }, + BigNum { + limbs: [0x2326a7250b148905c0719e56d6fd15, 0x28e8540547c82ea819c9f75581beae, 0x00214b], + }, + BigNum { + limbs: [0x930a3974130cf21f0bf5b12e2ad57b, 0xa88d3bb843f1e59a0efbb9fbdaac29, 0x003f00], + }, + BigNum { + limbs: [0x2a99c98beb4f0ce0f40a4dd1d52a86, 0xfec5ede539564d9fc90c4fa5fd592a, 0x0034ec], + }, + BigNum { + limbs: [0x0ca2ec307a54e23de675002a1dc598, 0xeaab319d871b6f8272abdf5878899b, 0x001327], + }, + BigNum { + limbs: [0xb10116cf84071cc2198afed5e23a69, 0xbca7f7fff62cc3b7655c2a495f7bb8, 0x0060c5], + }, + BigNum { + limbs: [0x7b78bbf9fcf6ac1a8ce009481b06f4, 0xcd295c0ef9e69f7e9ea74befd40aec, 0x00681c], + }, + BigNum { + limbs: [0x422b4706016552e5731ff5b7e4f90d, 0xda29cd8e836193bb3960bdb203fa67, 0x000bd0], + }, + BigNum { + limbs: [0x684c6a14b706e6a4e458d205940a65, 0xb4baeca30de2fa564db1db4df55ad5, 0x00160f], + }, + BigNum { + limbs: [0x555798eb4755185b1ba72cfa6bf59c, 0xf2983cfa6f6538e38a562e53e2aa7e, 0x005ddd], + }, + BigNum { + limbs: [0x357125c09f65d2f6bc04f1ccc8a05b, 0x75ece38b6b216509c259b1a0a550a2, 0x002e7a], + }, + BigNum { + limbs: [0x8832dd3f5ef62c0943fb0d33375fa6, 0x316646121226ce3015ae580132b4b1, 0x004573], + }, + BigNum { + limbs: [0x21340434d0af3d0e2bce377d6c3748, 0x53137d74125bb90512b69f97c1abe0, 0x003162], + }, + BigNum { + limbs: [0x9c6ffecb2dacc1f1d431c78293c8b9, 0x543fac296aec7a34c5516a0a165973, 0x00428b], + }, + BigNum { + limbs: [0xb75ebf1fa6a848f2dcd7de352e7812, 0xfa066178e33c85eb74ae061ea0c95e, 0x005b88], + }, + BigNum { + limbs: [0x064543e057b3b60d232820cad187ef, 0xad4cc8249a0bad4e635a0383373bf5, 0x001864], + }, + BigNum { + limbs: [0x7841ddfd61aa748afd27280b1d26d5, 0xb5dc03165af6d7e53ad367a6de9eee, 0x004736], + }, + BigNum { + limbs: [0x456225029cb18a7502d8d6f4e2d92c, 0xf177268722515b549d34a1faf96665, 0x002cb6], + }, + BigNum { + limbs: [0xa3fca4c95e97ef62e4bc4334d24aa2, 0x970f33b7a49db81d211727eccfa32c, 0x00148a], + }, + BigNum { + limbs: [0x19a75e369fc40f9d1b43bbcb2db55f, 0x1043f5e5d8aa7b1cb6f0e1b5086227, 0x005f63], + }, + BigNum { + limbs: [0x1af71607b2c66dfea4a56081023372, 0xb346b11ea91175e3dbeb28007ad97d, 0x0036e2], + }, + BigNum { + limbs: [0xa2acecf84b9591015b5a9e7efdcc8f, 0xf40c787ed436bd55fc1ce1a15d2bd6, 0x003d0a], + }, + BigNum { + limbs: [0xd98e5d422c5d1b27ff824c52dca1d0, 0x28e8851cb172fab2b64503252a7def, 0x004e8f], + }, + BigNum { + limbs: [0xe415a5bdd1fee3d8007db2ad235e31, 0x7e6aa480cbd5388721c3067cad8763, 0x00255e], + }, + BigNum { + limbs: [0x47a42d475447363d44f03d6a565b97, 0xbe856f6bbf1c5d54f3a81142092b09, 0x005168], + }, + BigNum { + limbs: [0x75ffd5b8aa14c8c2bb0fc195a9a46a, 0xe8cdba31be2bd5e4e45ff85fceda4a, 0x002284], + }, + BigNum { + limbs: [0x31d674997b53dae2b092cec051cab3, 0x4c464e1891f0c3c830738958768167, 0x001f64], + }, + BigNum { + limbs: [0x8bcd8e668308241d4f6d303fae354e, 0x5b0cdb84eb576f71a79480496183ec, 0x005489], + }, + BigNum { + limbs: [0xa86a543b84b81418e39ed00f0fb9e9, 0x2c67e97367ce5c3e6671824479d465, 0x003d75], + }, + BigNum { + limbs: [0x1539aec479a3eae71c612ef0f04618, 0x7aeb402a1579d6fb7196875d5e30ee, 0x003678], + }, + BigNum { + limbs: [0x8378bf20f973c70da3b463586d4b7b, 0xcdaeaa9b7abf7cc0ce06072e27a588, 0x003aa6], + }, + BigNum { + limbs: [0x3a2b43df04e837f25c4b9ba792b486, 0xd9a47f020288b6790a020273b05fcb, 0x003946], + }, + BigNum { + limbs: [0x010585e07a712c0b6729335818e69a, 0x2bac15e611d6564ae36561f30c5d45, 0x00369d], + }, + BigNum { + limbs: [0xbc9e7d1f83ead2f498d6cba7e71967, 0x7ba713b76b71dceef4a2a7aecba80e, 0x003d50], + }, + BigNum { + limbs: [0xa526579d681c965a90ff08490bfddc, 0x09f9fa970046d8d2e1418a37800c8a, 0x0027ad], + }, + BigNum { + limbs: [0x187dab62963f68a56f00f6b6f40225, 0x9d592f067d015a66f6c67f6a57f8c9, 0x004c40], + }, + BigNum { + limbs: [0x203f88cbdc4471948cb801db257f24, 0xa39c71e06fdf474e1e622995bbb22e, 0x000088], + }, + BigNum { + limbs: [0x9d647a3422178d6b7347fd24da80dd, 0x03b6b7bd0d68ebebb9a5e00c1c5325, 0x007365], + }, + BigNum { + limbs: [0xd9640467b89b62bb3664bc5da730c0, 0xf25d387914b42e95a8ce3dab9495f8, 0x00070c], + }, + BigNum { + limbs: [0xe43ffe9845c09c44c99b42a258cf41, 0xb4f5f124689404a42f39cbf6436f5a, 0x006ce0], + }, + BigNum { + limbs: [0xcb1c4c78afeecd4318a4cc529de646, 0x8ab180b6121766d0fbf770c619f590, 0x006722], + }, + BigNum { + limbs: [0xf287b6874e6d31bce75b32ad6219bb, 0x1ca1a8e76b30cc68dc1098dbbe0fc2, 0x000ccb], + }, + BigNum { + limbs: [0xf232337ef6eba4549c3333d5cdae87, 0x1b7d643dcbb06052961d233134d2bd, 0x001131], + }, + BigNum { + limbs: [0xcb71cf8107705aab63cccb2a32517a, 0x8bd5c55fb197d2e741eae670a33295, 0x0062bc], + }, + BigNum { + limbs: [0xd2a6543bf0a923b8baa3c5f39511a9, 0xfaafbd50344cd931eb4e7d8227c6d9, 0x0033f1], + }, + BigNum { + limbs: [0xeafdaec40db2db47455c390c6aee58, 0xaca36c4d48fb5a07ecb98c1fb03e79, 0x003ffb], + }, + BigNum { + limbs: [0x1777ae6de43c3bcc3cf45503a26bf9, 0x4930044f66d8675907d64a5c2feb97, 0x005605], + }, + BigNum { + limbs: [0xa62c54921a1fc333c30ba9fc5d9408, 0x5e23254e166fcbe0d031bf45a819bc, 0x001de8], + }, + BigNum { + limbs: [0x7664eaa2d713a5c7b1b0deaf488dc0, 0xdecc5a66647f9784a0b1a526c1fc01, 0x00040b], + }, + BigNum { + limbs: [0x473f185d274859384e4f2050b77241, 0xc886cf3718c89bb53756647b160952, 0x006fe1], + }, + BigNum { + limbs: [0xadbc1a2c46fc2c8d7616ca9a1232dd, 0x417472eed79049a3167cfffc90e27f, 0x0057d6], + }, + BigNum { + limbs: [0x0fe7e8d3b75fd27289e93465edcd24, 0x65deb6aea5b7e996c18b09a54722d4, 0x001c17], + }, + BigNum { + limbs: [0xfa62bbbbd6b631a42d6916ba23404c, 0x404b2b3e80406629c6836b11a80e95, 0x001e1a], + }, + BigNum { + limbs: [0xc341474427a5cd5bd296e845dcbfb5, 0x6707fe5efd07cd1011849e902ff6bd, 0x0055d3], + }, + BigNum { + limbs: [0xd481d0bb6911548cb29e5f68cdc81a, 0xaaa3d798d21e94dadff55c6cbfdb7f, 0x00630e], + }, + BigNum { + limbs: [0xe9223244954aaa734d619f973237e7, 0xfcaf5204ab299e5ef812ad351829d3, 0x0010de], + }, + BigNum { + limbs: [0x030f7af2e756bfa10792d623ec078b, 0xaf53a7f8913c194caac36ab9b39ee1, 0x001fef], + }, + BigNum { + limbs: [0xba94880d17053f5ef86d28dc13f876, 0xf7ff81a4ec0c19ed2d449ee8246672, 0x0053fd], + }, + BigNum { + limbs: [0xca4d3655b7f65a7a73df2ecd0e2030, 0x7518b9fd3554c0f19a67641063833c, 0x004b1d], + }, + BigNum { + limbs: [0xf356ccaa4665a4858c20d032f1dfd1, 0x323a6fa047f372483da0a591748216, 0x0028d0], + }, + BigNum { + limbs: [0xd3049773ed303c881867a03315f5d3, 0x2b4acc7c704c4f38a455be37d321ba, 0x0048b5], + }, + BigNum { + limbs: [0xea9f6b8c112bc277e7985eccea0a2e, 0x7c085d210cfbe40133b24b6a04e398, 0x002b38], + }, + BigNum { + limbs: [0xc2d66725116e6c0e39c5c0deac938d, 0x7b09d8722543e50d1ed404838c3942, 0x003c85], + }, + BigNum { + limbs: [0xfacd9bdaeced92f1c63a3e21536c74, 0x2c49512b58044e2cb934051e4bcc10, 0x003768], + }, + BigNum { + limbs: [0xc4f44254bfe3f098c01ebb90ee775e, 0x6d9caec03381a9ee3c0868e70f5777, 0x0043bc], + }, + BigNum { + limbs: [0xf8afc0ab3e780e673fe1436f1188a3, 0x39b67add49c6894b9bffa0bac8addb, 0x003031], + }, + BigNum { + limbs: [0xfddd235c7a98ac608be7900aae3100, 0xa244819154424d60ebf9f5ac99f13f, 0x005cb7], + }, + BigNum { + limbs: [0xbfc6dfa383c3529f74186ef551cf01, 0x050ea80c2905e5d8ec0e13f53e1413, 0x001736], + }, + BigNum { + limbs: [0x4a0fd486334f79d808d5c0d3ae1f12, 0x9daab2457724a2a6708e58d280c315, 0x005ac9], + }, + BigNum { + limbs: [0x73942e79cb0c8527f72a3e2c51e0ef, 0x09a87758062390936779b0cf57423e, 0x001924], + }, + BigNum { + limbs: [0xea8c83047a0348092bc156145ae3be, 0x6498d3d08cd0b43f4591e262934f10, 0x001299], + }, + BigNum { + limbs: [0xd3177ffb8458b6f6d43ea8eba51c43, 0x42ba55ccf0777efa9276273f44b642, 0x006154], + }, + BigNum { + limbs: [0xc9e71e9ad981f3f9bee777f505a670, 0xa66cf5599656047e8cec0c7be22c07, 0x0015ed], + }, + BigNum { + limbs: [0xf3bce46524da0b064118870afa5991, 0x00e63443e6f22ebb4b1bfd25f5d94b, 0x005e00], + }, + BigNum { + limbs: [0xaa95c116471933d23a4a114812d636, 0x1521f33b59d5e1255a25981421ff14, 0x0052c0], + }, + BigNum { + limbs: [0x130e41e9b742cb2dc5b5edb7ed29cb, 0x92313662237252147de2718db6063f, 0x00212d], + }, + BigNum { + limbs: [0xd54a83f5ca1be3e25cfe9c39fa442b, 0xf39fdb8f4cc1ff72289a55de1ef66f, 0x003042], + }, + BigNum { + limbs: [0xe8597f0a34401b1da30162c605bbd6, 0xb3b34e0e308633c7af6db3c3b90ee3, 0x0043aa], + }, + BigNum { + limbs: [0x6df133f7321a25f20ce8d579e35cee, 0xa3f774f19f1ff7a8b04d2828931d48, 0x0018c6], + }, + BigNum { + limbs: [0x4fb2cf08cc41d90df31729861ca313, 0x035bb4abde283b9127bae17944e80b, 0x005b27], + }, + BigNum { + limbs: [0x0f9d3b81d8d23eded4a5f256a9c7fa, 0xe84cc460e97596051ddbd646a327cd, 0x00211d], + }, + BigNum { + limbs: [0xae06c77e2589c0212b5a0ca9563807, 0xbf06653c93d29d34ba2c335b34dd86, 0x0052cf], + }, + BigNum { + limbs: [0x6d32c4bc785ddf8f84dcc764345e6f, 0x440f93c3062bad415ce2d67286aaff, 0x005d3d], + }, + BigNum { + limbs: [0x50713e4385fe1f707b23379bcba192, 0x634395da771c85f87b25332f515a54, 0x0016b0], + }, + BigNum { + limbs: [0x65f7f950b8ea85342030e7ba39b3a6, 0x509b496b983f565de17858f422f2df, 0x002b01], + }, + BigNum { + limbs: [0x57ac09af457179cbdfcf1745c64c5b, 0x56b7e031e508dcdbf68fb0adb51274, 0x0048ec], + }, + BigNum { + limbs: [0x0cf136ceac4b7be81282d9762849c5, 0x475dcfa943c0ac10e91b6361e98f4d, 0x004e05], + }, + BigNum { + limbs: [0xb0b2cc3152108317ed7d2589d7b63c, 0x5ff559f439878728eeeca63fee7606, 0x0025e8], + }, + BigNum { + limbs: [0xf5a38f02d0d9e3f6e035ff20282882, 0x92eb3eb00addf10be3c3f4a15ce3d9, 0x004f48], + }, + BigNum { + limbs: [0xc80073fd2d821b091fc9ffdfd7d77f, 0x1467eaed726a422df44415007b2179, 0x0024a5], + }, + BigNum { + limbs: [0x15abe4dc2aec8fda060609b2b47d85, 0x138145182f544c8a68d80bcba67af2, 0x0069de], + }, + BigNum { + limbs: [0xa7f81e23d36f6f25f9f9f54d4b827c, 0x93d1e4854df3e6af6f2ffdd6318a61, 0x000a0f], + }, + BigNum { + limbs: [0x1876aef7cc205e21ae42d827deca30, 0x6f29f2073a63626669c7c06691d161, 0x0010c7], + }, + BigNum { + limbs: [0xa52d5408323ba0de51bd26d82135d1, 0x3829379642e4d0d36e40493b4633f2, 0x006326], + }, + BigNum { + limbs: [0xd8e98cba8c851f53dbcceebb1aec4c, 0x7da509b2c067c30ab0c323dcd93343, 0x005edb], + }, + BigNum { + limbs: [0xe4ba764571d6dfac24331044e513b5, 0x29ae1feabce0702f2744e5c4fed20f, 0x001512], + }, + BigNum { + limbs: [0x34466bd37b654e75fbe2738ef6ec21, 0xf7bdf6d2576613871ea55580a605e5, 0x002f9e], + }, + BigNum { + limbs: [0x895d972c82f6b08a041d8b710913e0, 0xaf9532cb25e21fb2b962b42131ff6e, 0x00444e], + }, + BigNum { + limbs: [0xe3d5c95963601cef87c9f995096338, 0x788108ad69a5b53f9e776978ee912d, 0x0022c0], + }, + BigNum { + limbs: [0xd9ce39a69afbe2107836056af69cc9, 0x2ed220f013a27dfa3990a028e97425, 0x00512d], + }, + BigNum { + limbs: [0xa52764195066cb368bf892d23cfbea, 0x4ffc4e3af3f346bc2d29fe6ef3b600, 0x0000a1], + }, + BigNum { + limbs: [0x187c9ee6adf533c974076c2dc30417, 0x5756db628954ec7daade0b32e44f53, 0x00734c], + }, + BigNum { + limbs: [0xe7644948035d564c122ce446b3b25c, 0xf7e46fad681a2e91cb91310e85e484, 0x003e4b], + }, + BigNum { + limbs: [0xd63fb9b7fafea8b3edd31ab94c4da5, 0xaf6eb9f0152e04a80c76d8935220ce, 0x0035a1], + }, + BigNum { + limbs: [0xf2d9bfd5140d699cc42e43382e70a4, 0x083148cb1058349ee0fb910de629c0, 0x001bdd], + }, + BigNum { + limbs: [0xcaca432aea4e95633bd1bbc7d18f5d, 0x9f21e0d26ceffe9af70c7893f1db92, 0x005810], + }, + BigNum { + limbs: [0xff8a227dfd1dec38fa67bcd4f84471, 0xbd7da7f332978a73656310ab4c6c08, 0x0066e4], + }, + BigNum { + limbs: [0xbe19e082013e12c70598422b07bb90, 0xe9d581aa4ab0a8c672a4f8f68b994a, 0x000d08], + }, + BigNum { + limbs: [0xdac5574c6b36285f26172cbdae7696, 0x467880c3870fe5f29a8023d2eb1261, 0x001a74], + }, + BigNum { + limbs: [0xe2deabb39325d6a0d9e8d24251896b, 0x60daa8d9f6384d473d87e5ceecf2f1, 0x005979], + }, + BigNum { + limbs: [0x092a39c6a48f459c533e348b6eff5f, 0x1db7d0376a78528b2ecd3ea8ae6c56, 0x0011e5], + }, + BigNum { + limbs: [0xb479c93959ccb963acc1ca749100a2, 0x899b596612cfe0aea93acaf92998fd, 0x006208], + }, + BigNum { + limbs: [0x209c683b1f1277f13eb4a91bb6a4f8, 0xdb28617d36ba715ec5ec903e27b135, 0x0051e8], + }, + BigNum { + limbs: [0x9d079ac4df49870ec14b55e4495b09, 0xcc2ac820468dc1db121b7963b0541e, 0x002204], + }, + BigNum { + limbs: [0x39d9bec3468ebe119a0380eb0bbdd4, 0xf5fcf2b2518e4d3d9ef4fd3ca74c1a, 0x00493d], + }, + BigNum { + limbs: [0x83ca443cb7cd40ee65fc7e14f4422d, 0xb15636eb2bb9e5fc39130c6530b939, 0x002aaf], + }, + BigNum { + limbs: [0xc036c97cdeccdb1309e8f8e477af4b, 0x633fec31a36e9a52920637cefbb3a0, 0x0053b9], + }, + BigNum { + limbs: [0xfd6d39831f8f23ecf617061b8850b6, 0x44133d6bd9d998e74601d1d2dc51b2, 0x002034], + }, + BigNum { + limbs: [0xb83acfc8e1fc9f12f727121ee0964a, 0x4d4c275307f975b7d7ce0cb29b36bc, 0x0017fa], + }, + BigNum { + limbs: [0x056933371c5f5fed08d8ece11f69b7, 0x5a07024a754ebd820039fcef3cce97, 0x005bf3], + }, + BigNum { + limbs: [0x59be7af6c293cfd283f3b304941cef, 0x20f7ffe182d1e66aa095c3e85fc919, 0x0072b6], + }, + BigNum { + limbs: [0x63e588093bc82f2d7c0c4bfb6be312, 0x865b29bbfa764ccf377245b9783c3a, 0x000137], + }, + BigNum { + limbs: [0x03249c8429f87e6844532496014769, 0xf040e1fdfca4b40f89ddd68b08bfde, 0x000116], + }, + BigNum { + limbs: [0xba7f667bd4638097bbacda69feb898, 0xb712479f80a37f2a4e2a3316cf4575, 0x0072d6], + }, + BigNum { + limbs: [0x9356da41aa6f8f02e7836bb3ab600d, 0x64c674e3478a1a81fdfbfaf9e23819, 0x00690f], + }, + BigNum { + limbs: [0x2a4d28be53ec6ffd187c934c549ff4, 0x428cb4ba35be18b7da0c0ea7f5cd3a, 0x000ade], + }, + BigNum { + limbs: [0xcf83fe0ae1e6a534ea9661ff26117d, 0xfe13068acf76d38555ddf2b6be9f66, 0x005e47], + }, + BigNum { + limbs: [0xee2004f51c7559cb15699d00d9ee84, 0xa9402312add15fb4822a16eb1965ec, 0x0015a5], + }, + BigNum { + limbs: [0xad1740d605853de7454aa702a3c258, 0x76c88e274f02c447c149769ccad950, 0x0000a0], + }, + BigNum { + limbs: [0x108cc229f8d6c118bab557fd5c3da9, 0x308a9b762e456ef216be93050d2c03, 0x00734d], + }, + BigNum { + limbs: [0xaec3d9a57ccd3297472f2054fecfd5, 0xb9661959f10d1a81eafd4497a5304a, 0x0054dd], + }, + BigNum { + limbs: [0x0ee0295a818ecc68b8d0deab01302c, 0xeded10438c3b18b7ed0ac50a32d509, 0x001f0f], + }, + BigNum { + limbs: [0xd7652e15e99c4fa549c326bd5ec839, 0x7e6d3b984ce333a79fcc2c033c1a9e, 0x0029e0], + }, + BigNum { + limbs: [0xe63ed4ea14bfaf5ab63cd842a137c8, 0x28e5ee053064ff92383bdd9e9beab4, 0x004a0d], + }, + BigNum { + limbs: [0x4c88ff93efa64a2f0a407c5295fb98, 0xfac010dea4409740b7a0a0fd537819, 0x005882], + }, + BigNum { + limbs: [0x711b036c0eb5b4d0f5bf82ad6a0469, 0xac9318bed9079bf9206768a4848d3a, 0x001b6a], + }, + BigNum { + limbs: [0x5e84d56af0f9ca4f7f8d52f0dc3992, 0x3119b933616cdbe1801187d7696ce6, 0x001772], + }, + BigNum { + limbs: [0x5f1f2d950d6234b08072ac0f23c66f, 0x7639706a1bdb575857f681ca6e986d, 0x005c7b], + }, + BigNum { + limbs: [0x1f60d0941e92cd6a0c566da29d6b4e, 0x36ed69e2548982af2ca67090f30a51, 0x0007ca], + }, + BigNum { + limbs: [0x9e43326bdfc93195f3a9915d6294b3, 0x7065bfbb28beb08aab619910e4fb02, 0x006c23], + }, + BigNum { + limbs: [0xe983b035dd777461db389f0c72ef67, 0xaaa63a9561e15c725eab59b885b4dc, 0x000a23], + }, + BigNum { + limbs: [0xd42052ca20e48a9e24c75ff38d109a, 0xfcacef081b66d6c7795cafe9525076, 0x0069c9], + }, + BigNum { + limbs: [0x1026bb7cc4a92cb1a5916f0c03c77e, 0x52872cea0502fba135f7b61b767f8b, 0x00673d], + }, + BigNum { + limbs: [0xad7d478339b2d24e5a6e8ff3fc3883, 0x54cbfcb378453798a21053866185c8, 0x000cb0], + }, + BigNum { + limbs: [0xcc96ca4f8ddbb2b42b0658a8edfb6b, 0x43de3052b6648a3783538c1c28ad2f, 0x005c9c], + }, + BigNum { + limbs: [0xf10d38b070804c4bd4f9a657120496, 0x6374f94ac6e3a90254b47d85af5823, 0x001751], + }, + BigNum { + limbs: [0xf152a3c0f1c231ff49725a1870375c, 0xf7d3c4edc935ffc2941254837a46d2, 0x006b82], + }, + BigNum { + limbs: [0xcc515f3f0c99cd00b68da4e78fc8a5, 0xaf7f64afb412337743f5b51e5dbe80, 0x00086a], + }, + BigNum { + limbs: [0x9f913cac2cc77977ee6e82bfd3a1f9, 0xad1a0314eff2961eaed1c485488a76, 0x00706e], + }, + BigNum { + limbs: [0x1e12c653d194858811917c402c5e08, 0xfa3926888d559d1b2936451c8f7add, 0x00037e], + }, + BigNum { + limbs: [0x2ae97a5238177d86f50a21463dd536, 0x89498b4a364c53f06d7099b29ccb04, 0x004723], + }, + BigNum { + limbs: [0x92ba88adc64481790af5ddb9c22acb, 0x1e099e5346fbdf496a976fef3b3a4f, 0x002cca], + }, + BigNum { + limbs: [0xb3b215b2a1cb8a7d5e2afb958221be, 0xa16e424912fc4b00c302811881c325, 0x0021e9], + }, + BigNum { + limbs: [0x09f1ed4d5c907482a1d5036a7dde43, 0x05e4e7546a4be8391505888956422e, 0x005204], + }, + BigNum { + limbs: [0x4e85ecd63f5c377a6298c0d8230e4f, 0x740ddd00e10d2b0611c4592c433219, 0x0062fa], + }, + BigNum { + limbs: [0x6f1e1629beffc7859d673e27dcf1b2, 0x33454c9c9c3b0833c643b07594d33a, 0x0010f3], + }, + BigNum { + limbs: [0xe9678b025e60f28b161ada6afe9538, 0xf7a59a09cbe80551530ffb9aa031dd, 0x0027b8], + }, + BigNum { + limbs: [0xd43c77fd9ffb0c74e9e52495016ac9, 0xafad8f93b1602de884f80e0737d375, 0x004c34], + }, + BigNum { + limbs: [0x7ff15c409eef5bc3a92ef2ca3fd8cc, 0xfb4c9980bb944a5586179e02d5dc88, 0x004869], + }, + BigNum { + limbs: [0x3db2a6bf5f6ca33c56d10c35c02735, 0xac06901cc1b3e8e451f06b9f0228cb, 0x002b83], + }, + BigNum { + limbs: [0x85709d15b42a3e0c14b9b4139f47cc, 0xb392702c989dd317c3b03bc4cc00cc, 0x006104], + }, + BigNum { + limbs: [0x383365ea4a31c0f3eb464aec60b835, 0xf3c0b970e4aa60221457cddd0c0487, 0x0012e8], + }, + BigNum { + limbs: [0xd0d4498d8b5ced307b71c0af325c62, 0x9d954e4bc32d2071129882629c2840, 0x00278e], + }, + BigNum { + limbs: [0xeccfb97272ff11cf848e3e50cda39f, 0x09bddb51ba1b12c8c56f873f3bdd12, 0x004c5f], + }, + BigNum { + limbs: [0x525b7e8ba1b24d98d86a7929758ccd, 0x15da7d5d01b023f671701bbd40ca3b, 0x006b5e], + }, + BigNum { + limbs: [0x6b4884745ca9b167279585d68a7334, 0x9178ac407b980f436697ede4973b18, 0x00088f], + }, + BigNum { + limbs: [0x908e545d34e2793c0867a94b248b6c, 0x7d213aed98fd4b3905264a3e4317e5, 0x006bcc], + }, + BigNum { + limbs: [0x2d15aea2c97985c3f79855b4db7495, 0x2a31eeafe44ae800d2e1bf6394ed6e, 0x000821], + }, + BigNum { + limbs: [0xc94cff0b73a8b9be2ad0a5f63874ba, 0xed38e13513aa7562ef27c3910418f9, 0x0056f9], + }, + BigNum { + limbs: [0xf45703f48ab34541d52f5909c78b47, 0xba1a4868699dbdd6e8e04610d3ec59, 0x001cf3], + }, + BigNum { + limbs: [0x36fe219d2f1ca32551d25163a57d86, 0xa592c8e79d78eb4ed97a2ea201b711, 0x002f18], + }, + BigNum { + limbs: [0x86a5e162cf3f5bdaae2dad9c5a827b, 0x01c060b5dfcf47eafe8ddaffd64e42, 0x0044d5], + }, + BigNum { + limbs: [0xa4784e5cefc9be2e1b980e4cafe433, 0x577770c381e5cbe1a229495b4b99c7, 0x0042db], + }, + BigNum { + limbs: [0x192bb4a30e9240d1e467f0b3501bce, 0x4fdbb8d9fb62675835dec0468c6b8c, 0x003112], + }, + BigNum { + limbs: [0xb3c2c92942824865084a31ecb924fa, 0x2a1ecf656d32a30763627a6886702e, 0x001c62], + }, + BigNum { + limbs: [0x09e139d6bbd9b69af7b5cd1346db07, 0x7d345a381015903274a58f39519525, 0x00578b], + }, + BigNum { + limbs: [0x3d902f03551049f127d7c393e202c0, 0xf9cfd3370d6c944417a9fc1f8cfeb5, 0x00056b], + }, + BigNum { + limbs: [0x8013d3fca94bb50ed8283b6c1dfd41, 0xad8356666fdb9ef5c05e0d824b069e, 0x006e81], + }, + BigNum { + limbs: [0x4ba5d295058ca307a2b4097373ef5a, 0x85b55ab26d8ac390432f293555e2ba, 0x001d20], + }, + BigNum { + limbs: [0x71fe306af8cf5bf85d4bf58c8c10a7, 0x219dceeb0fbd6fa994d8e06c822299, 0x0056cd], + }, + BigNum { + limbs: [0xc2c4351645ca60d00d8e28e597ebb9, 0x937f818d465e2b8a21cbde1084c7d2, 0x0019b8], + }, + BigNum { + limbs: [0xfadfcde9b8919e2ff271d61a681448, 0x13d3a81036ea07afb63c2b91533d80, 0x005a35], + }, + BigNum { + limbs: [0x449d265c117b30c24ac967f93d8b01, 0xb6bfa3edb16c0360158fd6702a37e9, 0x00141f], + }, + BigNum { + limbs: [0x7906dca3ece0ce3db5369706c27500, 0xf09385afcbdc2fd9c2783331adcd6a, 0x005fcd], + }, + BigNum { + limbs: [0x3651759b44053677b99f0eca393e84, 0xa01b180d7fc3a4c3b9f74a56ca0543, 0x00077b], + }, + BigNum { + limbs: [0x87528d64ba56c8884660f035c6c17d, 0x0738118ffd848e761e10bf4b0e0010, 0x006c72], + }, + BigNum { + limbs: [0x5c324df87197f007401cd383ea6433, 0x19ddb92d997b13b0e0ff9f159f428e, 0x006b23], + }, + BigNum { + limbs: [0x6171b5078cc40ef8bfe32b7c159bce, 0x8d75706fe3cd1f88f7086a8c38c2c5, 0x0008ca], + }, + BigNum { + limbs: [0xa3ed8c7d553c366294367b3eef0647, 0x6b11dbd832ff1fb4c9583417520f25, 0x0008b2], + }, + BigNum { + limbs: [0x19b67682a91fc89d6bc983c110f9ba, 0x3c414dc54a4913850eafd58a85f62e, 0x006b3b], + }, + BigNum { + limbs: [0x9f779c216532e9654dff9acfc27353, 0xbb20340e48cb13a9b86723f41d63bd, 0x002365], + }, + BigNum { + limbs: [0x1e2c66de9929159ab20064303d8cae, 0xec32f58f347d1f901fa0e5adbaa196, 0x005087], + }, + BigNum { + limbs: [0x4badbde5b349d3512f0d5b5d19ba24, 0x6365555433d7803a1a95d55fc37552, 0x004e56], + }, + BigNum { + limbs: [0x71f6451a4b122baed0f2a3a2e645dd, 0x43edd4494970b2ffbd723442149001, 0x002597], + }, + BigNum { + limbs: [0x0acf4a881882c49d95b848783baff6, 0x6ef4daa39a3398ecd2bc6003abf49e, 0x004b0e], + }, + BigNum { + limbs: [0xb2d4b877e5d93a626a47b687c4500b, 0x385e4ef9e3149a4d054ba99e2c10b5, 0x0028df], + }, + BigNum { + limbs: [0xff7db1e208ca5762d37d2f50142c1d, 0x1798ccc9781075e48186a0f936f2f9, 0x00655b], + }, + BigNum { + limbs: [0xbe26511df591a79d2c82cfafebd3e4, 0x8fba5cd40537bd55568168a8a11259, 0x000e92], + }, + BigNum { + limbs: [0xe4385aa59379304eb87f06f3052074, 0xb8a802a174ea379ba1457efc2e2881, 0x0011f9], + }, + BigNum { + limbs: [0xd96ba85a6ae2ceb14780f80cfadf8d, 0xeeab26fc085dfb9e36c28aa5a9dcd1, 0x0061f3], + }, + BigNum { + limbs: [0xec510028ee108633efbda071957818, 0x8ee91d8b9f540e171f160493e14fee, 0x0003a1], + }, + BigNum { + limbs: [0xd15302d7104b78cc10425e8e6a87e9, 0x186a0c11ddf42522b8f2050df6b564, 0x00704c], + }, + BigNum { + limbs: [0xa7bbb5ec527557ba4fa14e54bbedf6, 0x417cb0e82b9ffd191ef6acc3e59f9d, 0x000c5e], + }, + BigNum { + limbs: [0x15e84d13abe6a745b05eb0ab44120b, 0x65d678b551a83620b9115cddf265b6, 0x00678f], + }, + BigNum { + limbs: [0xc024153f96227a1683c9b2579ec673, 0x898d8eda40f85e2f7f8a626b1f2011, 0x0035fc], + }, + BigNum { + limbs: [0xfd7fedc0683984e97c364ca861398e, 0x1dc59ac33c4fd50a587da736b8e541, 0x003df1], + }, + BigNum { + limbs: [0xe952a25430c3b9c15e92b69fb876f2, 0x4d58a5b97c0d1ffa0fefe7651f7418, 0x004a57], + }, + BigNum { + limbs: [0xd45160abcd98453ea16d486047890f, 0x59fa83e4013b133fc818223cb8913a, 0x002996], + }, + BigNum { + limbs: [0xc16e47ee9344e623a5a02af7352846, 0x1570af1eaed89534129c442b9b50b0, 0x0039b2], + }, + BigNum { + limbs: [0xfc35bb116b1718dc5a5fd408cad7bb, 0x91e27a7ece6f9e05c56bc5763cb4a2, 0x003a3b], + }, + BigNum { + limbs: [0xc9ff6bc17ee0c0300dcd481613376a, 0xf4786d303126047688651a184c8190, 0x003750], + }, + BigNum { + limbs: [0xf3a4973e7f7b3ecff232b6e9ecc897, 0xb2dabc6d4c222ec34fa2ef898b83c2, 0x003c9c], + }, + BigNum { + limbs: [0xe47938602798ee2feabcab1eb5c580, 0x8bd6fa1e279cd00145595a25cf22fa, 0x000af4], + }, + BigNum { + limbs: [0xd92aca9fd6c310d0154353e14a3a81, 0x1b7c2f7f55ab633892aeaf7c08e258, 0x0068f9], + }, + BigNum { + limbs: [0x82450dbe073be8162efe65f1c2b990, 0xe506ed3420bd548b26494c5a621e78, 0x002335], + }, + BigNum { + limbs: [0x3b5ef541f72016e9d101990e3d4671, 0xc24c3c695c8adeaeb1bebd4775e6db, 0x0050b7], + }, + BigNum { + limbs: [0x1a903d8f52d2a90dff66838d9c7fbd, 0x8a08974d8c1bf1ec877e19a187e39b, 0x004c87], + }, + BigNum { + limbs: [0xa313c570ab8955f200997b72638044, 0x1d4a924ff12c414d5089f0005021b8, 0x002766], + }, + BigNum { + limbs: [0x96c3746709260726d987fa9e3bbed3, 0xa27be85055e8b203921cd6971c63e4, 0x004e25], + }, + BigNum { + limbs: [0x26e08e98f535f7d926780461c4412e, 0x04d7414d275f813645eb330abba16f, 0x0025c8], + }, + BigNum { + limbs: [0xbdee817f227e486819b9b9795c3e0f, 0x00154a61744cbb7789c88db15913ad, 0x000d03], + }, + BigNum { + limbs: [0xffb58180dbddb697e6464586a3c1f2, 0xa73ddf3c08fb77c24e3f7bf07ef1a5, 0x0066ea], + }, + BigNum { + limbs: [0x07a6e79adda5afa3109ba77f2518c7, 0x867bd40a744e3d649126de0af18e82, 0x0063ea], + }, + BigNum { + limbs: [0xb5fd1b6520b64f5cef645780dae73a, 0x20d7559308f9f5d546e12b96e676d1, 0x001003], + }, + BigNum { + limbs: [0x5b78d7ad57b0f38547116436757283, 0xfdd66062acb5a269327c0efa5e5c8c, 0x004514], + }, + BigNum { + limbs: [0x622b2b52a6ab0b7ab8ee9ac98a8d7e, 0xa97cc93ad09290d0a58bfaa779a8c7, 0x002ed8], + }, + BigNum { + limbs: [0xa56f61a006515a17be1566d99a7483, 0x4f501ad75aad02dac68288140c42da, 0x0043c5], + }, + BigNum { + limbs: [0x1834a15ff80aa4e841ea9826658b7e, 0x58030ec6229b305f1185818dcbc279, 0x003028], + }, + BigNum { + limbs: [0x065584e021791f1391419338a0badc, 0xe82a30c630237655b39804b4c4a0e3, 0x003951], + }, + BigNum { + limbs: [0xb74e7e1fdce2dfec6ebe6bc75f4525, 0xbf28f8d74d24bce4247004ed136470, 0x003a9b], + }, + BigNum { + limbs: [0xf92ae474cef12d5145aca500592c77, 0x9d1eaf1c0b155b90729187a8961bf7, 0x000c7c], + }, + BigNum { + limbs: [0xc4791e8b2f6ad1aeba5359ffa6d38a, 0x0a347a817232d7a9657681f941e95b, 0x006771], + }, + BigNum { + limbs: [0x97eb526090f342f807dc397d6d14ee, 0x13ef0677dcd750c7a1520e76702560, 0x00627c], + }, + BigNum { + limbs: [0x25b8b09f6d68bc07f823c58292eb13, 0x93642325a070e27236b5fb2b67dff3, 0x001171], + }, + BigNum { + limbs: [0x94ea7f998e3036d6bed2498a5d8638, 0x448b1d5cbea6dfc72166834e512278, 0x003922], + }, + BigNum { + limbs: [0x28b98366702bc829412db575a279c9, 0x62c80c40bea15372b6a1865386e2db, 0x003acb], + }, + BigNum { + limbs: [0xff614331a1c5ee416c0cec37d6d1e3, 0x358697a1948bdde939ccba7d1a0b56, 0x006912], + }, + BigNum { + limbs: [0xbe42bfce5c9610be93f312c8292e1e, 0x71cc91fbe8bc55509e3b4f24bdf9fc, 0x000adb], + }, + BigNum { + limbs: [0xf453443751352cd5ec27c20801dd0c, 0xe39b16faf7c46cc7ac221e46db195c, 0x005428], + }, + BigNum { + limbs: [0xc950bec8ad26d22a13d83cf7fe22f5, 0xc3b812a28583c6722be5eb5afcebf6, 0x001fc4], + }, + BigNum { + limbs: [0x55db26760dbddac00db50a8b455478, 0xd94bd5ed9311a8d9ff5e4d8aea5817, 0x001b03], + }, + BigNum { + limbs: [0x67c8dc89f09e243ff24af474baab89, 0xce0753afea368a5fd8a9bc16edad3c, 0x0058e9], + }, + BigNum { + limbs: [0x49b65c7d1fed03f5b384a538296000, 0x7c3942fa7cfd9aed68d099c5eb4e62, 0x006288], + }, + BigNum { + limbs: [0x73eda682de6efb0a4c7b59c7d6a001, 0x2b19e6a3004a984c6f376fdbecb6f1, 0x001165], + }, + BigNum { + limbs: [0x3a5b42deb5e4c1b66d42eea88ef658, 0xd75572234819e092ac4898119b265f, 0x0020b2], + }, + BigNum { + limbs: [0x8348c02148773d4992bd10577109a9, 0xcffdb77a352e52a72bbf71903cdef4, 0x00533a], + }, + BigNum { + limbs: [0x9789fe6f5e6d87ec21011e1910e3f6, 0xddfe267b290a0c6b6dbfa5a338e877, 0x0062a3], + }, + BigNum { + limbs: [0x261a04909fee7713defee0e6ef1c0b, 0xc9550322543e26ce6a4863fe9f1cdc, 0x001149], + }, + BigNum { + limbs: [0x4759df07c81cf588e130df905786d7, 0xe1eeb4fc8bcd8ed5ffac85a790ec7a, 0x000af2], + }, + BigNum { + limbs: [0x764a23f8363f09771ecf1f6fa8792a, 0xc56474a0f17aa463d85b83fa4718d9, 0x0068fa], + }, + BigNum { + limbs: [0x5186929cb753ce8a84298fd3ddf34c, 0xba25714e3e69008fab821a3ee08d64, 0x006086], + }, + BigNum { + limbs: [0x6c1d7063470830757bd66f2c220cb5, 0xed2db84f3edf32aa2c85ef62f777ef, 0x001366], + }, + BigNum { + limbs: [0xe7a0348b8faec254f0afb89d963fea, 0x64ab3a29297f3027fbcec0f933fe6b, 0x003eee], + }, + BigNum { + limbs: [0xd603ce746ead3cab0f50466269c017, 0x42a7ef7453c90311dc3948a8a406e7, 0x0034ff], + }, + BigNum { + limbs: [0x3b845b65ff13ce04b81c740d89cb54, 0xd4ceaa3502758601997f45fa4a4b00, 0x0049b8], + }, + BigNum { + limbs: [0x821fa799ff4830fb47e38af27634ad, 0xd2847f687ad2ad383e88c3a78dba53, 0x002a34], + }, + BigNum { + limbs: [0xe365db905d5bbf2f11ec355270b1d7, 0x6c686f4d606c07c39a15c300ab83e5, 0x004b5f], + }, + BigNum { + limbs: [0xda3e276fa1003fd0ee13c9ad8f4e2a, 0x3aeaba501cdc2b763df246a12c816d, 0x00288e], + }, + BigNum { + limbs: [0xe2d540a29e52cd9cab5805fc609431, 0xba317c9334f608b7a43373d7cd3962, 0x006450], + }, + BigNum { + limbs: [0xdacec25d6009316354a7f9039f6bd0, 0xed21ad0a48522a8233d495ca0acbf0, 0x000f9c], + }, + BigNum { + limbs: [0x2b493a84dfb36896b6a5c9464cd413, 0x24db15ec7c17375f6988a630da2245, 0x006eb6], + }, + BigNum { + limbs: [0x925ac87b1ea89669495a35b9b32bee, 0x827813b10130fbda6e7f6370fde30e, 0x000537], + }, + BigNum { + limbs: [0x9b4d224b0528c83d046a082716bcad, 0x86515fbcd4407b19ef363b2e531257, 0x002064], + }, + BigNum { + limbs: [0x2256e0b4f93336c2fb95f6d8e94354, 0x2101c9e0a907b81fe8d1ce7384f2fc, 0x005389], + }, + BigNum { + limbs: [0xeb12eb2761d20c77841793f2e1f3bd, 0xf7216cd9a914d05c53c86f28bcf1f1, 0x00683d], + }, + BigNum { + limbs: [0xd29117d89c89f2887be86b0d1e0c44, 0xb031bcc3d43362dd843f9a791b1361, 0x000baf], + }, + BigNum { + limbs: [0x8beb6ddae7129a65bf313b1012d3c3, 0x6543cac258cb9e754890fcc1363893, 0x003e2d], + }, + BigNum { + limbs: [0x31b895251749649a40cec3efed2c3e, 0x420f5edb247c94c48f770ce0a1ccc0, 0x0035c0], + }, + BigNum { + limbs: [0xedd3f0704fcd8f277505ba720effe1, 0xa8a8ede82d0fb1e20890ceda6f1723, 0x0043a3], + }, + BigNum { + limbs: [0xcfd0128fae8e6fd88afa448df10020, 0xfeaa3bb550388157cf773ac768ee2f, 0x003049], + }, + BigNum { + limbs: [0xd1ce9ac4ad54c9e879678fda473b16, 0xae4c1953da0602d3749c19fa0c5093, 0x0056cb], + }, + BigNum { + limbs: [0xebd5683b5107351786986f25b8c4eb, 0xf9071049a3423066636befa7cbb4bf, 0x001d21], + }, + BigNum { + limbs: [0xa589adcd54196cf6b1a5c2e3dca6d2, 0xfd08c1065f9bee4333f2689c749b27, 0x000dba], + }, + BigNum { + limbs: [0x181a5532aa4292094e5a3c1c23592f, 0xaa4a68971dac44f6a415a105636a2c, 0x006632], + }, + BigNum { + limbs: [0x2f8dfa512822d59b3f666708cf6ab9, 0xd0072ac754cfe2a8f07114efb1bbae, 0x002c53], + }, + BigNum { + limbs: [0x8e1608aed6392964c09997f7309548, 0xd74bfed628785090e796f4b22649a5, 0x004799], + }, + BigNum { + limbs: [0xc31a16ae503a1dbb4d3aef9624f018, 0xe6e12b03a3ac400f72460d090590de, 0x004c37], + }, + BigNum { + limbs: [0xfa89ec51ae21e144b2c50f69db0fe9, 0xc071fe99d99bf32a65c1fc98d27474, 0x0027b5], + }, + BigNum { + limbs: [0x8cd6fdc62b7832b8bc7c0276b4eb5c, 0x0c57398282e4d2ba7b1aeab16b3187, 0x004445], + }, + BigNum { + limbs: [0x30cd0539d2e3cc474383fc894b14a5, 0x9afbf01afa63607f5ced1ef06cd3cc, 0x002fa8], + }, + BigNum { + limbs: [0x56f9dc800d97f131c91d435c7c321f, 0xe64eb0a6f68528607cdf9e439ef7d2, 0x00469d], + }, + BigNum { + limbs: [0x66aa267ff0c40dce36e2bba383cde2, 0xc10478f686c30ad95b286b5e390d81, 0x002d4f], + }, + BigNum { + limbs: [0x4b10df195a1e62c5f3a1fed8434f96, 0x7b876a5c766a1e9f60b772f6f9d3e6, 0x000afd], + }, + BigNum { + limbs: [0x729323e6a43d9c3a0c5e0027bcb06b, 0x2bcbbf4106de149a775096aade316d, 0x0068f0], + }, + BigNum { + limbs: [0xfbd130f283c5b69e922efa201850aa, 0x6ccf34bf27600b6ce3857940d09152, 0x001f8c], + }, + BigNum { + limbs: [0xc1d2d20d7a9648616dd104dfe7af57, 0x3a83f4de55e827ccf4829061077400, 0x005461], + }, + BigNum { + limbs: [0xa6a757eea27f2fa9af23aa807c2be1, 0x059ee3a1b642e96a613abae5c1d9bc, 0x005306], + }, + BigNum { + limbs: [0x16fcab115bdccf5650dc547f83d420, 0xa1b445fbc70549cf76cd4ebc162b97, 0x0020e7], + }, + BigNum { + limbs: [0xec67bec93ed7b8fcc288eadc69885e, 0xb2024f06f16a517e48c887951e3cc8, 0x004547], + }, + BigNum { + limbs: [0xd13c4436bf8446033d7714239677a3, 0xf550da968bdde1bb8f3f820cb9c88a, 0x002ea5], + }, + BigNum { + limbs: [0x2257110db62c1989285663ad98ee1f, 0x5151c6756d96e98d0ff23a9eb5a0ae, 0x0020d4], + }, + BigNum { + limbs: [0x9b4cf1f2482fe576d7a99b526711e2, 0x560163280fb149acc815cf032264a5, 0x005319], + }, + BigNum { + limbs: [0x0edb74177d38a4ad4cd59e471baa4d, 0x9e2545372c7b28f86f4786ee953296, 0x006cfe], + }, + BigNum { + limbs: [0xaec88ee881235a52b32a60b8e455b4, 0x092de46650cd0a4168c082b342d2bd, 0x0006ef], + }, + BigNum { + limbs: [0x412dab573abf941818f477fd67a800, 0x9584c239f193a789079521925a487d, 0x00439b], + }, + BigNum { + limbs: [0x7c7657a8c39c6ae7e70b8702985801, 0x11ce67638bb48bb0d072e80f7dbcd6, 0x003052], + }, + BigNum { + limbs: [0x7f2231c95ebaaa709feba3bd78dc6b, 0xca0f0381c911ddb1b93891f3063039, 0x0057ce], + }, + BigNum { + limbs: [0x3e81d1369fa1548f60145b42872396, 0xdd44261bb43655881ecf77aed1d51a, 0x001c1e], + }, + BigNum { + limbs: [0xde10ef35c170a32825b20112cdd5e9, 0xcd1b39a42a351e4dedee0a80e57d26, 0x002bd5], + }, + BigNum { + limbs: [0xdf9313ca3ceb5bd7da4dfded322a18, 0xda37eff9531314ebea19ff20f2882c, 0x004817], + }, + BigNum { + limbs: [0xdd1684a82174337180d4984f1ebc40, 0x3177280da2870d25a01bec21dfa01e, 0x002abe], + }, + BigNum { + limbs: [0xe08d7e57dce7cb8e7f2b66b0e143c1, 0x75dc018fdac1261437ec1d7ff86534, 0x00492f], + }, + BigNum { + limbs: [0x3d7f2a56a5a89fc8a744a668a546f7, 0x302ac56ea9dfeb1198dd3db79ebe10, 0x000a71], + }, + BigNum { + limbs: [0x8024d8a958b35f3758bb58975ab90a, 0x7728642ed36848283f2acbea394743, 0x00697c], + }, + BigNum { + limbs: [0x052f439346a8b05b12288d994b4771, 0xb9bad3328e426f695c45a377ddfd7e, 0x00682e], + }, + BigNum { + limbs: [0xb874bf6cb7b34ea4edd77166b4b890, 0xed98566aef05c3d07bc26629fa07d5, 0x000bbe], + }, + BigNum { + limbs: [0xba62b0c4e030ef1f583b87d6ade6f9, 0x014d6c8e9858d2bbd398ad664ee592, 0x002257], + }, + BigNum { + limbs: [0x0341523b1e2b0fe0a7c47729521908, 0xa605bd0ee4ef607e046f5c3b891fc1, 0x005196], + }, + BigNum { + limbs: [0x21e6561a1920b10c72391c8a1cc159, 0x16faab48860710a81440947ef47c01, 0x0003e6], + }, + BigNum { + limbs: [0x9bbdace5e53b4df38dc6e275e33ea8, 0x90587e54f7412291c3c77522e38952, 0x007007], + }, + BigNum { + limbs: [0x8aa947145e5a1fec90dd2dde7b5bef, 0x1560147bf3b782cd30aa038c9c0d6a, 0x00520e], + }, + BigNum { + limbs: [0x32fabbeba001df136f22d12184a412, 0x91f315218990b06ca75e06153bf7e9, 0x0021df], + }, + BigNum { + limbs: [0x29f6779cbe3cee50df9925dcf2a32c, 0x5c422ae049929893a83fe0e4945804, 0x006de1], + }, + BigNum { + limbs: [0x93ad8b63401f10af2066d9230d5cd5, 0x4b10febd33b59aa62fc828bd43ad4f, 0x00060c], + }, + BigNum { + limbs: [0x1c29ca120a5e788da46467972393bf, 0x37a599bc3caad9f3d4cbc2d492945a, 0x006d29], + }, + BigNum { + limbs: [0xa17a38edf3fd86725b9b9768dc6c42, 0x6fad8fe1409d5946033c46cd4570f9, 0x0006c4], + }, + BigNum { + limbs: [0x8bdc93a30df3b872ba7cd748c22385, 0x0d6b5a03665f72c462365d4b3dd6b5, 0x0015a8], + }, + BigNum { + limbs: [0x31c76f5cf068468d458327b73ddc7c, 0x99e7cf9a16e8c07575d1ac569a2e9e, 0x005e45], + }, + BigNum { + limbs: [0x594d11234a23b7fd8eaaee8a4332e5, 0x6bbb0c03c90c1fc1bd3e89411619ec, 0x00539f], + }, + BigNum { + limbs: [0x6456f1dcb438470271551075bccd1c, 0x3b981d99b43c13781ac98060c1eb67, 0x00204e], + }, + BigNum { + limbs: [0xbe36f366cdac04fe33f22717ae9a38, 0x1bf270758c7cedda892c24b801fffa, 0x001fcf], + }, + BigNum { + limbs: [0xff6d0f9930affa01cc0dd7e85165c9, 0x8b60b927f0cb455f4edbe4e9d60558, 0x00541e], + }, + BigNum { + limbs: [0xa2bc16d1f444dd3d8631f87a66bd9b, 0xb86c4fe25686801afb3bb037c2a2a3, 0x006d81], + }, + BigNum { + limbs: [0x1ae7ec2e0a1721c279ce0685994266, 0xeee6d9bb26c1b31edccc596a1562b0, 0x00066b], + }, + BigNum { + limbs: [0x429fc4b615dc88fbaeb3bdb102cf18, 0x62c9a6820e51c2d5d0d5ef27c7e4d5, 0x003b8b], + }, + BigNum { + limbs: [0x7b043e49e87f7604514c414efd30e9, 0x4489831b6ef6706407321a7a10207e, 0x003862], + }, + BigNum { + limbs: [0xf771c7881bf39e9792c9e792201cec, 0xf49510f16df834c2564b0fa575d528, 0x000708], + }, + BigNum { + limbs: [0xc6323b77e26860686d36176ddfe315, 0xb2be18ac0f4ffe7781bcf9fc62302a, 0x006ce4], + }, + BigNum { + limbs: [0x032279af1aaeba30316f6a5cbe727c, 0xe71dd75bc2ecd64c8f0c367f618e97, 0x000c66], + }, + BigNum { + limbs: [0xba818950e3ad44cfce9094a3418d85, 0xc0355241ba5b5ced48fbd3227676bc, 0x006786], + }, + BigNum { + limbs: [0x95285f31f3aad9c2b862b5a29aa404, 0x4aebd7d15d91b9f6a3756239a7394f, 0x005c5c], + }, + BigNum { + limbs: [0x287ba3ce0ab1253d479d495d655bfd, 0x5c6751cc1fb679433492a76830cc04, 0x001791], + }, + BigNum { + limbs: [0x5e256b68b3e8a4cd3a2a932e00323d, 0x168e51f06071676c71539cd85de38c, 0x001e97], + }, + BigNum { + limbs: [0x5f7e97974a735a32c5d56bd1ffcdc4, 0x90c4d7ad1cd6cbcd66b46cc97a21c7, 0x005556], + }, + BigNum { + limbs: [0x87e437986d307d92538c02aa2f6e16, 0xb672f7fb05252c5e0d6a5b267af071, 0x006080], + }, + BigNum { + limbs: [0x35bfcb67912b816dac73fc55d091eb, 0xf0e031a2782306dbca9dae7b5d14e2, 0x00136c], + }, + BigNum { + limbs: [0x0c2482681b3eecc7d230d176d2502b, 0xd166744e9433dbc0ece48bd069c490, 0x005a31], + }, + BigNum { + limbs: [0xb17f8097e31d12382dcf2d892dafd6, 0xd5ecb54ee9145778eb237dd16e40c3, 0x0019bb], + }, + BigNum { + limbs: [0x86b8b99e949a02a08d6542914ee68a, 0x2a3b847f9576527c4feb08776b8971, 0x001129], + }, + BigNum { + limbs: [0x36eb496169c1fc5f729abc6eb11977, 0x7d17a51de7d1e0bd881d012a6c7be2, 0x0062c4], + }, + BigNum { + limbs: [0x4dcb7d01ac2baaa6a808ecba9ac50b, 0x596e3a73a678b5b2804924315b5201, 0x002545], + }, + BigNum { + limbs: [0x6fd885fe5230545957f71245653af6, 0x4de4ef29d6cf7d8757bee5707cb352, 0x004ea8], + }, + BigNum { + limbs: [0xac76cc4049dd79650254e725ec2473, 0x0e33010313dbc8d859f57cc1de01fe, 0x005030], + }, + BigNum { + limbs: [0x112d36bfb47e859afdab17da13db8e, 0x9920289a696c6a617e128cdffa0355, 0x0023bd], + }, + BigNum { + limbs: [0x998959ee6be9e2410139dd5d09fffd, 0xf17cbc4b985729a80acaddf2df26ce, 0x001503], + }, + BigNum { + limbs: [0x241aa91192721cbefec621a2f60004, 0xb5d66d51e4f10991cd3d2baef8de85, 0x005ee9], + }, + BigNum { + limbs: [0x71139ca7d67729c5bde460a2bdde47, 0x104a66cf8ad94927833498c5a6b856, 0x002bf7], + }, + BigNum { + limbs: [0x4c90665827e4d53a421b9e5d4221ba, 0x9708c2cdf26eea1254d370dc314cfd, 0x0047f6], + }, + BigNum { + limbs: [0x8b90011d36f27ab1f8b0fada34ec97, 0xa849a2a72f072104cea55f96f8dc55, 0x0036a4], + }, + BigNum { + limbs: [0x321401e2c769844e074f0425cb136a, 0xff0986f64e4112350962aa0adf28fe, 0x003d48], + }, + BigNum { + limbs: [0xefe96b3eb765c50b865660e5468565, 0xdc08604089a07e4077bf84d06c3ecf, 0x007390], + }, + BigNum { + limbs: [0xcdba97c146f639f479a99e1ab97a9c, 0xcb4ac95cf3a7b4f9604884d16bc683, 0x00005c], + }, + BigNum { + limbs: [0xdefcb7f945a2551e66a066094d7636, 0x02f3870607e14fa3bbdd211d8337d4, 0x004421], + }, + BigNum { + limbs: [0xdea74b06b8b9a9e1995f98f6b289cb, 0xa45fa2977566e3961c2ae88454cd7e, 0x002fcc], + }, + BigNum { + limbs: [0x5822b64e0b9b26373a682660761944, 0xa7eef5328e8818fe26781cf3ff9137, 0x001c36], + }, + BigNum { + limbs: [0x65814cb1f2c0d8c8c597d89f89e6bd, 0xff64346aeec01a3bb18fecadd8741c, 0x0057b6], + }, + BigNum { + limbs: [0xfb335a0dcf92b2fc5c7a8d9430e9cb, 0xa76183551e88d8097dcb514c5654dd, 0x005f25], + }, + BigNum { + limbs: [0xc270a8f22ec94c03a385716bcf1636, 0xfff1a6485ebf5b305a3cb85581b075, 0x0014c7], + }, + BigNum { + limbs: [0x31363172d494c26fb839a9faf8188e, 0x2c9f639a3a5ab566a93088cd7eb1c4, 0x006c1a], + }, + BigNum { + limbs: [0x8c6dd18d29c73c9047c6550507e773, 0x7ab3c60342ed7dd32ed780d459538f, 0x0007d3], + }, + BigNum { + limbs: [0xaa1c87567b5903e83915b2035faea7, 0x57b15ac7081ca9b60f8f2c9fb54863, 0x0048b0], + }, + BigNum { + limbs: [0x13877ba98302fb17c6ea4cfca0515a, 0x4fa1ced6752b8983c878dd0222bcf0, 0x002b3d], + }, + BigNum { + limbs: [0xafbb716bbc387cca1310530cc044fa, 0x5601643b2882d8a0074dfb20e2d164, 0x00211f], + }, + BigNum { + limbs: [0x0de8919442238235ecefabf33fbb07, 0x5151c56254c55a99d0ba0e80f533ef, 0x0052ce], + }, + BigNum { + limbs: [0x10e1a8f2f64bf41a2ef73c66cbb7c6, 0x8f02f37c8d2455ee9f580df9527030, 0x00173a], + }, + BigNum { + limbs: [0xacc25a0d08100ae5d108c29934483b, 0x18503620f023dd4b38affba8859523, 0x005cb3], + }, + BigNum { + limbs: [0xa6122f655c997c2d3f94e98ca49bbb, 0xde0653949e912e81c1c7698c577526, 0x00143d], + }, + BigNum { + limbs: [0x1791d39aa1c282d2c06b15735b6446, 0xc94cd608deb704b81640a01580902d, 0x005faf], + }, + BigNum { + limbs: [0x1124d405bf7aabdf8d55151ef4f9ec, 0xc3c3bed53d882ad9387c916f12854a, 0x002055], + }, + BigNum { + limbs: [0xac7f2efa3ee1532072aae9e10b0615, 0xe38f6ac83fc008609f8b7832c58009, 0x005397], + }, + BigNum { + limbs: [0x2c74299a10e7c95e09090a764f6390, 0xbfebc2782a92610f3e639653fe3c1c, 0x006efc], + }, + BigNum { + limbs: [0x912fd965ed7435a1f6f6f489b09c71, 0xe767672552b5d22a99a4734dd9c937, 0x0004f0], + }, + BigNum { + limbs: [0x886bbc04a47c4088112f52fe2c4432, 0x3dfdc5b94c147f938adf9e252d8003, 0x006eef], + }, + BigNum { + limbs: [0x353846fb59dfbe77eed0ac01d3bbcf, 0x695563e43133b3a64d286b7caa8550, 0x0004fe], + }, + BigNum { + limbs: [0xbd0f5c286ae03a2c5fd0ee29a61068, 0x4b0ce3eea8ca794fdc040507aba85a, 0x003012], + }, + BigNum { + limbs: [0x0094a6d7937bc4d3a02f10d659ef99, 0x5c4645aed47db9e9fc04049a2c5cf9, 0x0043db], + }, + BigNum { + limbs: [0x36b7edd690eb355bbdd1528660c72d, 0x4bd9de921697a1e738e2f329ab8e0b, 0x001152], + }, + BigNum { + limbs: [0x86ec15296d70c9a4422eac799f38d4, 0x5b794b0b66b091529f2516782c7748, 0x00629b], + }, + BigNum { + limbs: [0xd72ad65f46d726783ee4e9030b121d, 0x4f5a2a19f612bc5b54bb9d04899f77, 0x0032ec], + }, + BigNum { + limbs: [0xe6792ca0b784d887c11b15fcf4ede4, 0x57f8ff83873576de834c6c9d4e65db, 0x004101], + }, + BigNum { + limbs: [0xc38dc29ee64919bd5b0d2da1fdb04f, 0xadda3175e8ed6509386b35e64b9e42, 0x005508], + }, + BigNum { + limbs: [0xfa1640611812e542a4f2d15e024fb2, 0xf978f827945ace309f9cd3bb8c6710, 0x001ee4], + }, + BigNum { + limbs: [0x8e7c5ddb1443d706f0db8c7121f9f3, 0x81191b6befa46edbc381958375eb7d, 0x001666], + }, + BigNum { + limbs: [0x2f27a524ea1827f90f24728ede060e, 0x263a0e318da3c45e1486741e6219d6, 0x005d87], + }, + BigNum { + limbs: [0x362129fcf80f3a0c35fe1ecc54fea6, 0x7330eb7307e28a976c40c41df52101, 0x00446d], + }, + BigNum { + limbs: [0x8782d903064cc4f3ca01e033ab015b, 0x34223e2a7565a8a26bc74583e2e452, 0x002f80], + }, + BigNum { + limbs: [0x896469b6669563c15ccddff613e6c3, 0x5ad7346c2a74d501f59804e685491d, 0x0045ad], + }, + BigNum { + limbs: [0x343f994997c69b3ea3321f09ec193e, 0x4c7bf53152d35e37e27004bb52bc36, 0x002e40], + }, + BigNum { + limbs: [0x71eca35d5272bc11b2b030ee121117, 0xac36dbd7d8ed6f40d43527acf89d16, 0x004c3a], + }, + BigNum { + limbs: [0x4bb75fa2abe942ee4d4fce11edeeea, 0xfb1c4dc5a45ac3f903d2e1f4df683d, 0x0027b2], + }, + BigNum { + limbs: [0x02b20f5415c8edfd3888c1a912f735, 0x7dd6b49f8d01590557dbc7ff3a72c5, 0x007263], + }, + BigNum { + limbs: [0xbaf1f3abe8931102c7773d56ed08cc, 0x297c74fdf046da34802c41a29d928e, 0x00018a], + }, + BigNum { + limbs: [0x07af22564f84f8f83aecc92580b8aa, 0x5a42aef9c0269ffb74496a8aa8d45f, 0x004f6e], + }, + BigNum { + limbs: [0xb5f4e0a9aed70607c51335da7f4757, 0x4d107aa3bd21933e63be9f172f30f4, 0x00247f], + }, + BigNum { + limbs: [0x9c70269bbd114690350f4e3f8df6a5, 0x89e17d7aec42fb14952aba78db9462, 0x0017ca], + }, + BigNum { + limbs: [0x2133dc64414ab86fcaf0b0c072095c, 0x1d71ac229105382542dd4f28fc70f1, 0x005c23], + }, + BigNum { + limbs: [0x5984f698b67a4f84e0147535fc4cc7, 0x9fb480cf1962424ccc9781abb5d4bd, 0x005cc5], + }, + BigNum { + limbs: [0x641f0c6747e1af7b1feb89ca03b33a, 0x079ea8ce63e5f0ed0b7087f6223096, 0x001728], + }, + BigNum { + limbs: [0xcc3eb7bca53cba14e4436934073cf8, 0xa29cc0a9b176bab082cf14139ca439, 0x000be1], + }, + BigNum { + limbs: [0xf1654b43591f44eb1bbc95cbf8c309, 0x04b668f3cbd178895538f58e3b6119, 0x00680c], + }, + BigNum { + limbs: [0x577ec3fec64b94ffa0768034358069, 0x2f0427377bf2559ffc5a62719e22db, 0x001c74], + }, + BigNum { + limbs: [0x66253f0138106a005f897ecbca7f98, 0x784f02660155dd99dbada73039e278, 0x005779], + }, + BigNum { + limbs: [0x336422fb2484bea951fae8db934564, 0x8cfc63f4ce5809a7f4331ef665f6ff, 0x002060], + }, + BigNum { + limbs: [0x8a3fe004d9d74056ae0516246cba9d, 0x1a56c5a8aef02991e3d4eaab720e54, 0x00538d], + }, + BigNum { + limbs: [0x2fee58775d07250cdf6a3a35ecf57f, 0x5f739bcb6b817b150a3d799a20a549, 0x001e1e], + }, + BigNum { + limbs: [0x8db5aa88a154d9f32095c4ca130a82, 0x47df8dd211c6b824cdca9007b7600a, 0x0055cf], + }, + BigNum { + limbs: [0xacd165ded9ee4bee85bd9f44eadafc, 0x8c66cae96230cc8ca46d95273f8560, 0x0043aa], + }, + BigNum { + limbs: [0x10d29d21246db3117a425fbb152505, 0x1aec5eb41b1766ad339a747a987ff3, 0x003043], + }, + BigNum { + limbs: [0xa62701b792b4b927428087510b4690, 0x4dfbddaa0f7018a5f6c9d6ee753c3a, 0x000c3e], + }, + BigNum { + limbs: [0x177d01486ba745d8bd7f77aef4b971, 0x59574bf36dd81a93e13e32b362c919, 0x0067af], + }, + BigNum { + limbs: [0x2bb8a6efad1e27f723ac02bc953aad, 0x19512cc16fca078fe779deb9655e56, 0x0027db], + }, + BigNum { + limbs: [0x91eb5c10513dd708dc53fc436ac554, 0x8e01fcdc0d7e2ba9f08e2ae872a6fd, 0x004c12], + }, + BigNum { + limbs: [0x4b2cfa769fd7090da3400381fcc74e, 0x37ba404a0d987ba20ac46f869f0e03, 0x002a5f], + }, + BigNum { + limbs: [0x727708895e84f5f25cbffb7e0338b3, 0x6f98e9536fafb797cd439a1b38f750, 0x00498e], + }, + BigNum { + limbs: [0x4c63965a705ecf9e985c7e18ed3d94, 0x676f45ec4c4be580c83d05f64c7819, 0x00641b], + }, + BigNum { + limbs: [0x71406ca58dfd2f6167a380e712c26d, 0x3fe3e3b130fc4db90fcb03ab8b8d3a, 0x000fd2], + }, + BigNum { + limbs: [0x40a5a6bee95b75b0a24612e823d13d, 0xb243df1e9853a678f914d4d20ec0cd, 0x004d3d], + }, + BigNum { + limbs: [0x7cfe5c411500894f5db9ec17dc2ec4, 0xf50f4a7ee4f48cc0def334cfc94486, 0x0026af], + }, + BigNum { + limbs: [0xe486ab9c1d181d325a4c24c7ca7cc7, 0x380a113e0de0bb589129ecd866e89a, 0x0004e7], + }, + BigNum { + limbs: [0xd91d5763e143e1cda5b3da3835833a, 0x6f49185f6f6777e146de1cc9711cb8, 0x006f06], + }, + BigNum { + limbs: [0xdad8d7196fb3f65c1941863d1168cd, 0x90308f169ce69e837a858ba1f4dbec, 0x0014da], + }, + BigNum { + limbs: [0xe2cb2be68ea808a3e6be78c2ee9734, 0x17229a86e06194b65d827dffe32966, 0x005f13], + }, + BigNum { + limbs: [0x74bd923dc36a592cc0d7becb4f8876, 0x61262f282dcae92f7171df3b47edda, 0x005b1b], + }, + BigNum { + limbs: [0x48e670c23af1a5d33f284034b0778b, 0x462cfa754f7d4a0a66962a66901779, 0x0018d2], + }, + BigNum { + limbs: [0x6d7db0e788ca47358d0356fe5c9dd1, 0x3bf5a632c343afe3c67ccb9bc555d5, 0x004101], + }, + BigNum { + limbs: [0x502652187591b7ca72fca801a36230, 0x6b5d836aba048356118b3e0612af7e, 0x0032ec], + }, + BigNum { + limbs: [0x8478c058ba081aa9a5318b553b5055, 0x204b4d180e5fafaf710124fe64cc2f, 0x00303b], + }, + BigNum { + limbs: [0x392b42a74453e4565ace73aac4afac, 0x8707dc856ee8838a6706e4a3733924, 0x0043b2], + }, + BigNum { + limbs: [0xdedeaa3d44c908d6481057712b62db, 0xae5fdb8f2f3d6ddcbaedc9453e96d0, 0x001bb7], + }, + BigNum { + limbs: [0xdec558c2b992f629b7efa78ed49d26, 0xf8f34e0e4e0ac55d1d1a405c996e82, 0x005835], + }, + BigNum { + limbs: [0xc6be59ee6c4978fab7b69fb529b7e3, 0x6c09a50cc22023fa498ade54827584, 0x006aeb], + }, + BigNum { + limbs: [0xf6e5a9119212860548495f4ad6481e, 0x3b498490bb280f3f8e7d2b4d558fce, 0x000902], + }, + BigNum { + limbs: [0x8f864a71161064a192553890378d77, 0x17ee086c6e073fd463744dfe796c4c, 0x004698], + }, + BigNum { + limbs: [0x2e1db88ee84b9a5e6daac66fc8728a, 0x8f6521310f40f3657493bba35e9907, 0x002d55], + }, + BigNum { + limbs: [0x9a9969bef61c7030607eed4e106241, 0xd1f0e3ff52986368034091730c6b9d, 0x000b2c], + }, + BigNum { + limbs: [0x230a9941083f8ecf9f8111b1ef9dc0, 0xd562459e2aafcfd1d4c7782ecb99b6, 0x0068c0], + }, + BigNum { + limbs: [0x507e6d99ae9fb5cf3f5b54b4aec959, 0x04f0408c123beba4f8ff3b7a8c1be7, 0x00027f], + }, + BigNum { + limbs: [0x6d2595664fbc4930c0a4aa4b5136a8, 0xa262e9116b0c4794df08ce274be96c, 0x00716e], + }, + BigNum { + limbs: [0xd9ded9e5b846364876072015b5eb65, 0xf33c820d1972523c36cb307c474c66, 0x002c3d], + }, + BigNum { + limbs: [0xe3c5291a4615c8b789f8deea4a149c, 0xb416a79063d5e0fda13cd92590b8ec, 0x0047af], + }, + BigNum { + limbs: [0xeb1be306684058ab89474dafefa2eb, 0xad8e0aff72fddd5f394035f10efc55, 0x004171], + }, + BigNum { + limbs: [0xd2881ff9961ba65476b8b150105d16, 0xf9c51e9e0a4a55da9ec7d3b0c908fd, 0x00327b], + }, + BigNum { + limbs: [0x254f5541ef7930a331a41b73f7abaa, 0xc571ec70792379996efebe4f0acfa9, 0x002115], + }, + BigNum { + limbs: [0x9854adbe0ee2ce5cce5be38c085457, 0xe1e13d2d0424b9a069094b52cd35aa, 0x0052d7], + }, + BigNum { + limbs: [0xb41f6fa66c6185499dc9307637db4e, 0x33aa2adfa3d536b7641585985e553c, 0x000617], + }, + BigNum { + limbs: [0x0984935991fa79b66236ce89c824b3, 0x73a8febdd972fc8273f2840979b017, 0x006dd6], + }, + BigNum { + limbs: [0xf9ceeec6dcc80182ea775599840a35, 0xfeed9f0db0a00b8ee40fc17a7860b4, 0x00597c], + }, + BigNum { + limbs: [0xc3d514392193fd7d1588a9667bf5cc, 0xa8658a8fcca827aaf3f848275fa49e, 0x001a70], + }, + BigNum { + limbs: [0x7c3afc63865e0d5abea05493f97fa6, 0x8700c692c174b22a86412d8ed07cee, 0x0040a9], + }, + BigNum { + limbs: [0x4169069c77fdf1a5415faa6c06805b, 0x2052630abbd3810f51c6dc13078865, 0x003344], + }, + BigNum { + limbs: [0x6fce9cfc06ce536b61e1f83655b4f5, 0xd69266a9fcde925a42a6d3f34fed4c, 0x0040d7], + }, + BigNum { + limbs: [0x4dd56603f78dab949e1e06c9aa4b0c, 0xd0c0c2f38069a0df956135ae881807, 0x003315], + }, + BigNum { + limbs: [0x6da96883a873462ccc2c2cf47c63df, 0x9ad5a4f61993a52471a84bb496a6c3, 0x0007f6], + }, + BigNum { + limbs: [0x4ffa9a7c55e8b8d333d3d20b839c22, 0x0c7d84a763b48e15665fbded415e90, 0x006bf7], + }, + BigNum { + limbs: [0xcdadabd0b38af56c035d9eab203dbe, 0x7ca455960f91959b712aca7c881bfe, 0x0021b1], + }, + BigNum { + limbs: [0xeff6572f4ad10993fca26054dfc243, 0x2aaed4076db69d9e66dd3f254fe954, 0x00523c], + }, + BigNum { + limbs: [0xe00594924fb402d6cd14fd27e25700, 0x44261676fcc9f3bc3df6273fd94bd1, 0x003186], + }, + BigNum { + limbs: [0xdd9e6e6daea7fc2932eb01d81da901, 0x632d1326807e3f7d9a11e261feb981, 0x004267], + }, + BigNum { + limbs: [0x0ee7d30e12b23d1ab447818017f222, 0xc6b854445b5ea6798aa04ee79bdb41, 0x0068aa], + }, + BigNum { + limbs: [0xaebc2ff1eba9c1e54bb87d7fe80ddf, 0xe09ad55921e98cc04d67baba3c2a12, 0x000b42], + }, + BigNum { + limbs: [0xfea3e5c0c9365a897755321979df0f, 0x1526811d79ccb36c6e20369d140fc1, 0x00306c], + }, + BigNum { + limbs: [0xbf001d3f3525a47688aacce68620f2, 0x922ca880037b7fcd69e7d304c3f591, 0x004381], + }, + BigNum { + limbs: [0x749a7cd475fcba89e3a03ed602252d, 0x3d4724f28a112be91e58eee71d4355, 0x006a7a], + }, + BigNum { + limbs: [0x4909862b885f44761c5fc029fddad4, 0x6a0c04aaf3370750b9af1ababac1fe, 0x000973], + }, + BigNum { + limbs: [0x0f1173523113cd28d02344081ebd9c, 0x6aa34cdcd1600752f686c03aab1979, 0x0072a9], + }, + BigNum { + limbs: [0xae928fadcd4831d72fdcbaf7e14265, 0x3cafdcc0abe82be6e18149672cebda, 0x000144], + }, + BigNum { + limbs: [0x19809deb59fb23d7cd720d549ab2eb, 0x7b346cc7e5c436afd1adf36438b891, 0x001f2d], + }, + BigNum { + limbs: [0xa4236514a460db28328df1ab654d16, 0x2c1ebcd59783fc8a065a163d9f4cc2, 0x0054c0], + }, + BigNum { + limbs: [0x61c74f88aecaa3f8518c32a0f5203d, 0x2e03ec6552ab659ae7550d5fbfbdcb, 0x001264], + }, + BigNum { + limbs: [0x5bdcb3774f915b07ae73cc5f0adfc4, 0x794f3d382a9ccd9ef0b2fc42184788, 0x006189], + }, + BigNum { + limbs: [0x0f7509eb12bf7a12d6b6c03800e954, 0xd14a7eea8bf2615934146cd481131e, 0x006ced], + }, + BigNum { + limbs: [0xae2ef914eb9c84ed29493ec7ff16ad, 0xd608aab2f155d1e0a3f39ccd56f235, 0x0006ff], + }, + BigNum { + limbs: [0x5972f0c64c836900ff94c5632452fe, 0xb39695b0958edb6e036992fd59a041, 0x000050], + }, + BigNum { + limbs: [0x64311239b1d895ff006b399cdbad03, 0xf3bc93ece7b957cbd49e76a47e6512, 0x00739c], + }, + BigNum { + limbs: [0x82918a1275e4859be951ce740d7fdb, 0xba9bb0ed7d9163545d0bf99fcaa395, 0x0056d7], + }, + BigNum { + limbs: [0x3b1278ed8877796416ae308bf28026, 0xecb778afffb6cfe57afc10020d61be, 0x001d15], + }, + BigNum { + limbs: [0x1601a76229c1adfbecb0a04cff1fd5, 0x7a5cdde8aca2e66faae39b39c088f7, 0x00292f], + }, + BigNum { + limbs: [0xa7a25b9dd49a5104134f5eb300e02c, 0x2cf64bb4d0a54cca2d246e68177c5c, 0x004abe], + }, + BigNum { + limbs: [0xb612d30c081aabf34e05525f877021, 0x4bfe667932157f92916e86d96b6930, 0x004bf2], + }, + BigNum { + limbs: [0x07912ff3f641530cb1faaca0788fe0, 0x5b54c3244b32b3a7469982c86c9c23, 0x0027fb], + }, + BigNum { + limbs: [0xd5ea380ce32e6b2dd42bd931d880fa, 0xe427c36951f6d473cff7407c6dcfb4, 0x006e88], + }, + BigNum { + limbs: [0xe7b9caf31b2d93d22bd425ce277f07, 0xc32b66342b515ec60810c9256a359e, 0x000564], + }, + BigNum { + limbs: [0x0f84475022fe939470465bee013097, 0x58bad03c9dbd58155a83a8ea6c3390, 0x002cda], + }, + BigNum { + limbs: [0xae1fbbafdb5d6b6b8fb9a311fecf6a, 0x4e985960df8adb247d8460b76bd1c3, 0x004713], + }, + BigNum { + limbs: [0xa16ef813f31e5f83b68b581d21fd33, 0xd5284c1600d347aae07d7872a6391a, 0x005202], + }, + BigNum { + limbs: [0x1c350aec0b3d9f7c4974a6e2de02ce, 0xd22add877c74eb8ef78a912f31cc39, 0x0021ea], + }, + BigNum { + limbs: [0x48051e0746d4d27634d53c101b484f, 0x274c05b653d0979001b1a9c1802b67, 0x00425b], + }, + BigNum { + limbs: [0x759ee4f8b7872c89cb2ac2efe4b7b2, 0x800723e729779ba9d6565fe057d9ec, 0x003192], + }, + BigNum { + limbs: [0x8503100bf4f456b35f7bf5575c7b23, 0x45cdf7a9ba4cf1bf9c0b78cfea72b9, 0x006f01], + }, + BigNum { + limbs: [0x38a0f2f40967a84ca08409a8a384de, 0x618531f3c2fb417a3bfc90d1ed929a, 0x0004ec], + }, + BigNum { + limbs: [0xf49d1fef18fe446a96b2f8aba94ca5, 0x0381d5637adbe052493f508ebbd64e, 0x005062], + }, + BigNum { + limbs: [0xc906e310e55dba95694d065456b35c, 0xa3d1543a026c52e78ec8b9131c2f04, 0x00238b], + }, + BigNum { + limbs: [0xe70398715625d1fe45dab729efaea5, 0x48d147f9e07b866b74814bbc6fc20e, 0x00284b], + }, + BigNum { + limbs: [0xd6a06a8ea8362d01ba2547d610515c, 0x5e81e1a39cccacce6386bde5684344, 0x004ba2], + }, + BigNum { + limbs: [0x43e19212b8aa4df3a5ad5791a994d8, 0x540c98122505b6ecd0eb892cffb184, 0x000dd3], + }, + BigNum { + limbs: [0x79c270ed45b1b10c5a52a76e566b29, 0x5346918b58427c4d071c8074d853cf, 0x00661a], + }, + BigNum { + limbs: [0x6bc6576070693cb7d4f57ca8e234d2, 0x78031812872bf13558bc3f0560e2d7, 0x00695a], + }, + BigNum { + limbs: [0x51ddab9f8df2c2482b0a82571dcb2f, 0x2f50118af61c42047f4bca9c77227c, 0x000a93], + }, + BigNum { + limbs: [0xfe1703fe711c29b80e538fb0db8eac, 0xdb43a94f5b7bb38f39714deeb1ae8a, 0x0014bd], + }, + BigNum { + limbs: [0xbf8cff018d3fd547f1ac6f4f247155, 0xcc0f804e21cc7faa9e96bbb32656c8, 0x005f2f], + }, + BigNum { + limbs: [0x24660d2d313d631f591af96e8a7fee, 0xc197a37224f76ca24d962e9700475f, 0x00347c], + }, + BigNum { + limbs: [0x993df5d2cd1e9be0a6e50591758013, 0xe5bb862b5850c6978a71db0ad7bdf4, 0x003f70], + }, + BigNum { + limbs: [0x88d41415a9d2b7905e2d22cc47814f, 0x81307e7897487efc9679d3ae6717af, 0x0029a4], + }, + BigNum { + limbs: [0x34cfeeea5489476fa1d2dc33b87eb2, 0x2622ab24e5ffb43d418e35f370eda4, 0x004a49], + }, + BigNum { + limbs: [0xf108e4ee1b6fb6162787b451688c10, 0x962e55e3bd5fbe8f28ffbc2667540c, 0x000c3d], + }, + BigNum { + limbs: [0xcc9b1e11e2ec48e9d8784aae9773f1, 0x1124d3b9bfe874aaaf084d7b70b146, 0x0067b0], + }, + BigNum { + limbs: [0x206cf9748b83dd96d828215664721a, 0xe83969d643cbcec6ec3b08bdf75cb5, 0x006a6b], + }, + BigNum { + limbs: [0x9d37098b72d8216927d7dda99b8de7, 0xbf19bfc7397c6472ebcd00e3e0a89e, 0x000981], + }, + BigNum { + limbs: [0x44895d478fa9ddd1291c9619ff853a, 0x8c88d24405c2e8c071ee884d75d3a4, 0x004ef4], + }, + BigNum { + limbs: [0x791aa5b86eb2212ed6e368e6007ac7, 0x1aca575977854a79661981546231af, 0x0024f9], + }, + BigNum { + limbs: [0x5a424237cbda19892e38be9f062611, 0x11bc8052d3e3f0c732b4b9a2d2ebd0, 0x000a94], + }, + BigNum { + limbs: [0x6361c0c83281e576d1c74060f9d9f0, 0x9596a94aa9644272a5534fff051983, 0x006959], + }, + BigNum { + limbs: [0x7d89921705901e5de06a0b012d0243, 0x594fdeb2e307f3e1fb2deb76f3bb71, 0x006c45], + }, + BigNum { + limbs: [0x401a70e8f8cbe0a21f95f3fed2fdbe, 0x4e034aea9a403f57dcda1e2ae449e2, 0x0007a8], + }, + BigNum { + limbs: [0xa788bc6d17181423c79bd954755494, 0x0481d07a7e9f35032fbef532789ce5, 0x00611b], + }, + BigNum { + limbs: [0x161b4692e743eadc386425ab8aab6d, 0xa2d15922fea8fe36a849146f5f686e, 0x0012d2], + }, + BigNum { + limbs: [0x1653d1c1bc6e308ea22d6694856daa, 0xb4cc459331ab514ca0d0085bb39e9d, 0x005068], + }, + BigNum { + limbs: [0xa750313e41edce715dd2986b7a9257, 0xf286e40a4b9ce1ed373801462466b6, 0x002384], + }, + BigNum { + limbs: [0x054f3e075b729d81098d794dea5701, 0x6abf41700b9842a65fa559497c8810, 0x004f9d], + }, + BigNum { + limbs: [0xb854c4f8a2e9617ef67285b215a900, 0x3c93e82d71aff0937862b0585b7d43, 0x002450], + }, + BigNum { + limbs: [0x5057d57703f9a87e126235ecd43026, 0x74affe564b7a8b3844deac9ea56431, 0x001736], + }, + BigNum { + limbs: [0x6d4c2d88fa625681ed9dc9132bcfdb, 0x32a32b4731cda80193295d0332a122, 0x005cb7], + }, + BigNum { + limbs: [0xb47dbca9cae90afbe221bbe8b0070f, 0x1707ef01055ae713812af75c3ce340, 0x006e6d], + }, + BigNum { + limbs: [0x092646563372f4041dde43174ff8f2, 0x904b3a9c77ed4c2656dd12459b2213, 0x000580], + }, + BigNum { + limbs: [0x6f364ee6ca599e2a57e7c2e3829f5d, 0xbff09ddfad632d741d8ddfa5d583ef, 0x0061f4], + }, + BigNum { + limbs: [0x4e6db419340260d5a8183c1c7d60a4, 0xe7628bbdcfe505c5ba7a29fc028164, 0x0011f8], + }, + BigNum { + limbs: [0x0b303e3b187bfe2d29236b4aba2c30, 0x7d686e321ed7e2bf66e7d85fbbf104, 0x004f5a], + }, + BigNum { + limbs: [0xb273c4c4e5e000d2d6dc93b545d3d1, 0x29eabb6b5e70507a712031421c144f, 0x002493], + }, + BigNum { + limbs: [0x8af5568bee084eafc9284dc5c825b3, 0x1e8cce6557ae443ba5d28686f073a4, 0x001c5b], + }, + BigNum { + limbs: [0x32aeac741053b05036d7b13a37da4e, 0x88c65b382599eefe3235831ae791af, 0x005792], + }, + BigNum { + limbs: [0x7e09e82f1c3e9d4efb199435cf1951, 0x5d7839b1fcfcf9503d8f57a4d6614e, 0x003b14], + }, + BigNum { + limbs: [0x3f9a1ad0e21d61b104e66aca30e6b0, 0x49daefeb804b39e99a78b1fd01a405, 0x0038d9], + }, + BigNum { + limbs: [0x55d107b1c203eab17bd0bb5bad1182, 0x9c8b5342ec1d44944d3f7324eb7480, 0x001cb9], + }, + BigNum { + limbs: [0x67d2fb4e3c58144e842f43a452ee7f, 0x0ac7d65a912aeea58ac8967cec90d3, 0x005734], + }, + BigNum { + limbs: [0xcc98e5c7db5187d8c1d40bb10adc59, 0xc0675265fa2dfc519755c087a32876, 0x003c33], + }, + BigNum { + limbs: [0xf10b1d38230a77273e2bf34ef523a8, 0xe6ebd737831a36e840b2491a34dcdc, 0x0037b9], + }, + BigNum { + limbs: [0xc2ff3e383faedce4a93fcddb1211f4, 0x208ddf82338cb12eca28a2ee1691e3, 0x0035c4], + }, + BigNum { + limbs: [0xfaa4c4c7bead221b56c03124edee0d, 0x86c54a1b49bb820b0ddf66b3c1736f, 0x003e29], + }, + BigNum { + limbs: [0x770750a3295ce013845fe3e81af4a9, 0x5e069cf1ffd4b20beea0d3d2717cab, 0x0040d6], + }, + BigNum { + limbs: [0x469cb25cd4ff1eec7ba01b17e50b58, 0x494c8cab7d73812de96735cf6688a8, 0x003317], + }, + BigNum { + limbs: [0x4b6d768688f6163f7aef5a8d5a484b, 0xc4e0a34ac8817ca0911d55cb959127, 0x003367], + }, + BigNum { + limbs: [0x72368c797565e8c08510a472a5b7b6, 0xe2728652b4c6b69946eab3d642742c, 0x004085], + }, + BigNum { + limbs: [0x0454e65c549e730c28faecaf1e8d22, 0x56b81cdb2573eb5e4c7cc761dd4520, 0x005d92], + }, + BigNum { + limbs: [0xb94f1ca3a9bd8bf3d7051250e172df, 0x509b0cc257d447db8b8b423ffac033, 0x00165b], + }, + BigNum { + limbs: [0x51ee0472a016488c27b766a60882f9, 0x11507fe896a5498eb71d7559be4c99, 0x0052c2], + }, + BigNum { + limbs: [0x6bb5fe8d5e45b673d8489859f77d08, 0x9602a9b4e6a2e9ab20ea944819b8ba, 0x00212b], + }, + BigNum { + limbs: [0xc5bca14681745c76d754972b0417a7, 0x2f86c9d8d39011f0f8130ff3be0f88, 0x0018f0], + }, + BigNum { + limbs: [0xf7e761b97ce7a28928ab67d4fbe85a, 0x77cc5fc4a9b82148dff4f9ae19f5ca, 0x005afd], + }, + BigNum { + limbs: [0x638559361842718ac62a5b6e5ad517, 0x6fb41d42210a721065e2d58541d8ed, 0x004100], + }, + BigNum { + limbs: [0x5a1ea9c9e6198d7539d5a391a52aea, 0x379f0c5b5c3dc1297225341c962c66, 0x0032ed], + }, + BigNum { + limbs: [0x1950751921323a56171b04b937cdaf, 0x937ddeaca07bc012d70246b27dc065, 0x0024ee], + }, + BigNum { + limbs: [0xa4538de6dd29c4a9e8e4fa46c83252, 0x13d54af0dccc73270105c2ef5a44ee, 0x004eff], + }, + BigNum { + limbs: [0x2a319f1febe961d72e9ae3be101d4a, 0x9c3f07698480401ec4aa8199861df1, 0x004b05], + }, + BigNum { + limbs: [0x937263e012729d28d1651b41efe2b7, 0x0b142233f8c7f31b135d880851e762, 0x0028e8], + }, + BigNum { + limbs: [0x6741faefb9fa2d5aa8609bb6978a8a, 0x21978e244f9d146d95e0e0022b3e03, 0x001a07], + }, + BigNum { + limbs: [0x566208104461d1a5579f6349687577, 0x85bb9b792dab1ecc4227299facc750, 0x0059e6], + }, + BigNum { + limbs: [0x45ddc7c4867210129ed5dca288fdad, 0xda03c2eccc63b00e689f35ee7c4f17, 0x000145], + }, + BigNum { + limbs: [0x77c63b3b77e9eeed612a225d770254, 0xcd4f66b0b0e4832b6f68d3b35bb63c, 0x0072a7], + }, + BigNum { + limbs: [0xb74b780ee14bd5ffd348ed4368ea6b, 0xe856ea5ac03fc0e50bf8399e8a372b, 0x0030c0], + }, + BigNum { + limbs: [0x06588af11d1029002cb711bc971596, 0xbefc3f42bd087254cc0fd0034dce28, 0x00432c], + }, + BigNum { + limbs: [0xb180cc06183fdc238b0dcafb1476da, 0x9abcdc6fffbff88b8ccd41b6fe9072, 0x006dae], + }, + BigNum { + limbs: [0x0c2336f9e61c22dc74f23404eb8927, 0x0c964d2d7d883aae4b3ac7ead974e1, 0x00063f], + }, + BigNum { + limbs: [0xa0aa4b47b65a9aa9b9e943288d1377, 0x1a344d6f5983ebaddafe1ce61a3e55, 0x002139], + }, + BigNum { + limbs: [0x1cf9b7b8480164564616bbd772ec8a, 0x8d1edc2e23c4478bfd09ecbbbdc6fe, 0x0052b4], + }, + BigNum { + limbs: [0xda2c1965bb0e4df3f081d760a857c1, 0x717dde8a10fab09cc8a6d690d6d975, 0x002b2c], + }, + BigNum { + limbs: [0xe377e99a434db10c0f7e279f57a840, 0x35d54b136c4d829d0f613311012bdd, 0x0048c1], + }, + BigNum { + limbs: [0x4b18da6a0cb40d9f323ea3d74cb3ed, 0xd903bc2a828e0a910beaf7801c3c4a, 0x0068a3], + }, + BigNum { + limbs: [0x728b2895f1a7f160cdc15b28b34c14, 0xce4f6d72faba28a8cc1d1221bbc909, 0x000b49], + }, + BigNum { + limbs: [0xdbfda03b545ae6d8953347b71b2763, 0x4045701c2afdeb6b10d0ae8fdb6702, 0x004e58], + }, + BigNum { + limbs: [0xe1a662c4aa0118276accb748e4d89e, 0x670db981524a47cec7375b11fc9e50, 0x002595], + }, + BigNum { + limbs: [0x29f1a50e3889f85141aa86a2a5ecfe, 0xb7b08d8f15ade18c576cea199d2fa8, 0x000189], + }, + BigNum { + limbs: [0x93b25df1c5d206aebe55785d5a1303, 0xefa29c0e679a51ad809b1f883ad5ab, 0x007263], + }, + BigNum { + limbs: [0xb6ef0eb662097c3848f25bc12e55e5, 0x0f09621ec698c303dcd2525aa8e1d5, 0x00207c], + }, + BigNum { + limbs: [0x06b4f4499c5282c7b70da33ed1aa1c, 0x9849c77eb6af7035fb35b7472f237e, 0x005371], + }, + BigNum { + limbs: [0xfee96131f8a2c92461b61f8c172710, 0x3925f9b4c85b4d19a6dc30bd3cf9de, 0x0034d0], + }, + BigNum { + limbs: [0xbebaa1ce05b935db9e49df73e8d8f1, 0x6e2d2fe8b4ece620312bd8e49b0b74, 0x003f1d], + }, + BigNum { + limbs: [0x141e3d346407c47189304e56429ad5, 0xb91199af6c50c47d1bfcf63d8da28f, 0x0056f5], + }, + BigNum { + limbs: [0xa985c5cb9a543a8e76cfb0a9bd652c, 0xee418fee10f76ebcbc0b13644a62c4, 0x001cf7], + }, + BigNum { + limbs: [0x8bc773e8f76ec48f6d8cad9a860cd0, 0x8ac912456e1d8865c216fafad6f949, 0x004228], + }, + BigNum { + limbs: [0x31dc8f1706ed3a709273516579f331, 0x1c8a17580f2aaad415f10ea7010c0a, 0x0031c5], + }, + BigNum { + limbs: [0x0738e3b14d3321adc2f5fb7a0f9779, 0xe3491835bf37c77b9884e9951f09f5, 0x001285], + }, + BigNum { + limbs: [0xb66b1f4eb128dd523d0a0385f06888, 0xc40a1167be106bbe3f83200cb8fb5e, 0x006167], + }, + BigNum { + limbs: [0xede3c44914fead6b72120c1df2a4b7, 0xe8be4df796d59f6c51b91a1bb80965, 0x0057f2], + }, + BigNum { + limbs: [0xcfc03eb6e95d51948dedf2e20d5b4a, 0xbe94dba5e67293cd864eef861ffbed, 0x001bfa], + }, + BigNum { + limbs: [0x02db433ead26c61eff4e410f51f541, 0xac8c4cf028e96b55b53b85b3aaaf65, 0x004f11], + }, + BigNum { + limbs: [0xbac8bfc1513538e100b1bdf0ae0ac0, 0xfac6dcad545ec7e422cc83ee2d55ee, 0x0024db], + }, + BigNum { + limbs: [0xcdd406650e46c8d98b75fb7861f2ca, 0x7cbfb59eea4ac9eaecdc39624a74d6, 0x00337d], + }, + BigNum { + limbs: [0xefcffc9af0153626748a03879e0d37, 0x2a9373fe92fd694eeb2bd03f8d907c, 0x004070], + }, + BigNum { + limbs: [0xa5bc30f24fec3acc3d6f4f809b0a53, 0x6ed642e8c59a514c846d5f0e44976d, 0x002013], + }, + BigNum { + limbs: [0x17e7d20dae6fc433c290af7f64f5ae, 0x387ce6b4b7ade1ed539aaa93936de6, 0x0053da], + }, + BigNum { + limbs: [0xdeb7a80902a9c5efdf3ccfe8e53a24, 0x1a50f8bb8a7d92a4ae617d426c9358, 0x0070ba], + }, + BigNum { + limbs: [0xdeec5af6fbb2391020c32f171ac5dd, 0x8d0230e1f2caa09529a68c5f6b71fa, 0x000333], + }, + BigNum { + limbs: [0x682f007f22bb81fdd7ada825dfd8e9, 0xba432991de5065a9a51a6b3c1aee25, 0x003c87], + }, + BigNum { + limbs: [0x55750280dba07d02285256da202718, 0xed10000b9ef7cd9032ed9e65bd172e, 0x003765], + }, + BigNum { + limbs: [0xdc15430c03b1e93f800f008fb12ae6, 0xab089b07419bb6f14d619c69d89866, 0x00665b], + }, + BigNum { + limbs: [0xe18ebff3faaa15c07ff0fe704ed51b, 0xfc4a8e963bac7c488aa66d37ff6cec, 0x000d91], + }, + BigNum { + limbs: [0x9e920fb609ba358d5ceacfe1dffb42, 0x817f573e38be9b763b9e8a078d875c, 0x004094], + }, + BigNum { + limbs: [0x1f11f349f4a1c972a3152f1e2004bf, 0x25d3d25f448997c39c697f9a4a7df7, 0x003359], + }, + BigNum { + limbs: [0x5f4c56d978347b10decd73542a05fd, 0x12ef8c4b82539a2ef0ffba88222629, 0x005c58], + }, + BigNum { + limbs: [0x5e57ac26862783ef21328babd5fa04, 0x94639d51faf4990ae7084f19b5df2a, 0x001795], + }, + BigNum { + limbs: [0x1a0584cc517b2805c42dc5891560a9, 0x9d33e7931ce4ecbc30602b356bce70, 0x0016b0], + }, + BigNum { + limbs: [0xa39e7e33ace0d6fa3bd23976ea9f58, 0x0a1f420a6063467da7a7de6c6c36e3, 0x005d3d], + }, + BigNum { + limbs: [0x628e600a788e04ab750b85650ebd1b, 0x45839982795b2e6635a42125b2c691, 0x004faf], + }, + BigNum { + limbs: [0x5b15a2f585cdfa548af4799af142e6, 0x61cf901b03ed04d3a263e87c253ec2, 0x00243e], + }, + BigNum { + limbs: [0x5fd0a3184059075334c20cef94dd35, 0x069a3f7275ed6f16b28321f60d75c3, 0x001a8e], + }, + BigNum { + limbs: [0x5dd35fe7be02f7accb3df2106b22cc, 0xa0b8ea2b075ac4232584e7abca8f90, 0x00595f], + }, + BigNum { + limbs: [0x5321e5ff1832016c9ec31e57800535, 0x6fde6d9f8cf58100484127999969e6, 0x0058d2], + }, + BigNum { + limbs: [0x6a821d00e629fd93613ce0a87ffacc, 0x3774bbfdf052b2398fc6e2083e9b6d, 0x001b1b], + }, + BigNum { + limbs: [0x24e42aa8d5aec08ce356eec0b581c3, 0x96482f24fb2a6806482acecf123181, 0x004ad6], + }, + BigNum { + limbs: [0x98bfd85728ad3e731ca9103f4a7e3e, 0x110afa78821dcb338fdd3ad2c5d3d2, 0x002917], + }, + BigNum { + limbs: [0x346f499430ac3e8834e343be816ade, 0x1c7a1e79b28af076c80674fbea502b, 0x003324], + }, + BigNum { + limbs: [0x8934b96bcdafc077cb1cbb417e9523, 0x8ad90b23cabd42c3100194a5edb528, 0x0040c9], + }, + BigNum { + limbs: [0x57918f034022d6713037f8b64415e9, 0x19fd78f51a8800de167d51cdd33239, 0x0000b2], + }, + BigNum { + limbs: [0x661273fcbe39288ecfc80649bbea18, 0x8d55b0a862c0325bc18ab7d404d31a, 0x00733b], + }, + BigNum { + limbs: [0xf59be099efbbbf1e9ee7f422718376, 0x28cf3247eb4450669afedabf51d50f, 0x006d6b], + }, + BigNum { + limbs: [0xc80822660ea03fe161180add8e7c8b, 0x7e83f7559203e2d33d092ee2863043, 0x000682], + }, + BigNum { + limbs: [0x717496b394e228bde1fcdaa1e27c0c, 0xc92134ed8fe810bde4e31b054a62bd, 0x001f39], + }, + BigNum { + limbs: [0x4c2f6c4c6979d6421e03245e1d83f5, 0xde31f4afed60227bf324ee9c8da296, 0x0054b3], + }, + BigNum { + limbs: [0x7d09d03af59770f1d0fcc7934e784a, 0xe258d964b59394e25115d08b5a107a, 0x005651], + }, + BigNum { + limbs: [0x409a32c508c48e0e2f03376cb187b7, 0xc4fa5038c7b49e5786f239167df4d9, 0x001d9b], + }, + BigNum { + limbs: [0xaaeb71ec0f716e68b025c69346bf09, 0x88ac099cc542dbc85d2e72f3dee770, 0x0004ca], + }, + BigNum { + limbs: [0x12b89113eeea90974fda386cb940f8, 0x1ea72000b80557717ad996adf91de3, 0x006f23], + }, + BigNum { + limbs: [0x3f0ed736ba61d95846912ad0cd72e8, 0xa976934ab9259ff3085d4c741c88b3, 0x00184a], + }, + BigNum { + limbs: [0x7e952bc943fa25a7b96ed42f328d19, 0xfddc9652c4229346cfaabd2dbb7ca0, 0x005ba2], + }, + BigNum { + limbs: [0x62b291c828ec3ebaf26067815711fc, 0xbb8260b46d2c51e40cbf75a7ee58fd, 0x0062e0], + }, + BigNum { + limbs: [0x5af17137d56fc0450d9f977ea8ee05, 0xebd0c8e9101be155cb4893f9e9ac56, 0x00110c], + }, + BigNum { + limbs: [0xf1944f8062e2362fd7908ad327998c, 0xfae10609ac308c560763e9b339ee02, 0x005d20], + }, + BigNum { + limbs: [0xcc0fb37f9b79c8d0286f742cd86675, 0xac722393d117a6e3d0a41fee9e1750, 0x0016cc], + }, + BigNum { + limbs: [0x238124a0db2fb18fbde3dcc5b9f194, 0x2223c6d14ff1cf5fcb7416a05e18ff, 0x002605], + }, + BigNum { + limbs: [0x9a22de5f232c4d70421c223a460e6d, 0x852f62cc2d5663da0c93f30179ec54, 0x004de8], + }, + BigNum { + limbs: [0x2f181b14aed10ff6e67eefaeab0cff, 0xa75b010005d75274ac3b3a23333006, 0x004d09], + }, + BigNum { + limbs: [0x8e8be7eb4f8aef0919810f5154f302, 0xfff8289d7770e0c52bcccf7ea4d54d, 0x0026e3], + }, + BigNum { + limbs: [0x84f64a6ba25a938975fe3c072f5f5c, 0xbd52dee2d5f7a21bae96e51a32d19d, 0x005087], + }, + BigNum { + limbs: [0x38adb8945c016b768a01c2f8d0a0a5, 0xea004abaa750911e29712487a533b6, 0x002365], + }, + BigNum { + limbs: [0x2ae0e11e73c3f16ca52fc81438540d, 0x08c778383129c0429531c4dd5df66d, 0x001ebd], + }, + BigNum { + limbs: [0x92c321e18a980d935ad036ebc7abf4, 0x9e8bb1654c1e72f742d644c47a0ee6, 0x005530], + }, + BigNum { + limbs: [0xe7fa646df251b192383683e59ecc6a, 0xc7fe5a5827024c14c0e444da9cff88, 0x000ef4], + }, + BigNum { + limbs: [0xd5a99e920c0a4d6dc7c97b1a613397, 0xdf54cf455645e7251723c4c73b05ca, 0x0064f8], + }, + BigNum { + limbs: [0xeef0bcd91847d841253cc2a928d6be, 0x37718307eb1a9579e0bf9778e20bdc, 0x005a0c], + }, + BigNum { + limbs: [0xceb34626e61426bedac33c56d72943, 0x6fe1a695922d9dbff7487228f5f976, 0x0019e1], + }, + BigNum { + limbs: [0xa701b8e3a721e0fefce536fb906424, 0x78afcd6fbd8fcad332db11efc5f13f, 0x00420e], + }, + BigNum { + limbs: [0x16a24a1c573a1e01031ac8046f9bdd, 0x2ea35c2dbfb86866a52cf7b2121414, 0x0031df], + }, + BigNum { + limbs: [0x2703973a98577b707f616b8ee5bc69, 0x35a38c635602c55fbb5a72a5dee0a8, 0x002220], + }, + BigNum { + limbs: [0x96a06bc56604838f809e93711a4398, 0x71af9d3a27456dda1cad96fbf924ab, 0x0051cd], + }, + BigNum { + limbs: [0xd426ce3bc379cebaa02908f78226c1, 0x3b64fc8a8d3697b57a95d72f49a7ec, 0x006531], + }, + BigNum { + limbs: [0xe97d34c43ae230455fd6f6087dd940, 0x6bee2d12f0119b845d7232728e5d66, 0x000ebc], + }, + BigNum { + limbs: [0x1aee8a70a157bc3db5dce28b3ecf15, 0xa940ed13adc86207c5cca3e248bbea, 0x0066a7], + }, + BigNum { + limbs: [0xa2b5788f5d0442c24a231c74c130ec, 0xfe123c89cf7fd132123b65bf8f4969, 0x000d45], + }, + BigNum { + limbs: [0x8d825a7d11480cdc99619927e24871, 0x40afc2350d54fc80dd3fde8f89eaed, 0x0012b8], + }, + BigNum { + limbs: [0x3021a882ed13f223669e65d81db790, 0x66a367686ff336b8fac82b124e1a66, 0x006135], + }, + BigNum { + limbs: [0x6d89d1cf521a52f9730ea6ccca6aa9, 0x874736ffd05944b37a5bdf5fc29b8e, 0x00017a], + }, + BigNum { + limbs: [0x501a3130ac41ac068cf15833359558, 0x200bf29daceeee865dac2a421569c5, 0x007273], + }, + BigNum { + limbs: [0x2ebb72dd507ad3e370ae5c9d88c367, 0xcad2981271db38af49782c25cc6a83, 0x002982], + }, + BigNum { + limbs: [0x8ee89022ade12b1c8f51a262773c9a, 0xdc80918b0b6cfa8a8e8fdd7c0b9ad0, 0x004a6a], + }, + BigNum { + limbs: [0x40bb9966258c7e444ef5bf9f9eaf5d, 0x50d0cd0a9c9ad02239843d3a7238d0, 0x00238a], + }, + BigNum { + limbs: [0x7ce86999d8cf80bbb10a3f606150a4, 0x56825c92e0ad63179e83cc6765cc83, 0x005063], + }, + BigNum { + limbs: [0xd860053850eb383390d76bb3f42bd6, 0x4a15cbfaab68c4280ae7caa60cf1aa, 0x003f5e], + }, + BigNum { + limbs: [0xe543fdc7ad70c6cc6f28934c0bd42b, 0x5d3d5da2d1df6f11cd203efbcb13a8, 0x00348f], + }, + BigNum { + limbs: [0xaef4419c79da6004e08d670c53a44e, 0xf7bd11fb6ad2133b0600858128f29b, 0x0069fc], + }, + BigNum { + limbs: [0x0eafc16384819efb1f7297f3ac5bb3, 0xaf9617a212761ffed2078420af12b8, 0x0009f0], + }, + BigNum { + limbs: [0x7f907f020a14b917b055c5dfbd2d5c, 0xe05ec31861f5674bdaf8e72b8709a1, 0x006927], + }, + BigNum { + limbs: [0x3e1383fdf44745e84faa392042d2a5, 0xc6f466851b52cbedfd0f227650fbb2, 0x000ac5], + }, + BigNum { + limbs: [0xebc1bad8e840c2ad13f6bbb95ec8ec, 0xcb2b258381423a47594a3ac9ba80ed, 0x000ba4], + }, + BigNum { + limbs: [0xd1e24827161b3c52ec094346a13715, 0xdc280419fc05f8f27ebdced81d8465, 0x006848], + }, + BigNum { + limbs: [0x2b07db533eecf717c095e63014ae72, 0x14ee8e4ee0069beb9bd9e5a49c9517, 0x002bbf], + }, + BigNum { + limbs: [0x929c27acbf6f07e83f6a18cfeb518f, 0x92649b4e9d41974e3c2e23fd3b703c, 0x00482e], + }, + BigNum { + limbs: [0xfce3f1ae16e1352f27668740f423f4, 0x53b32e18eb883962e4267ad3b836c2, 0x000776], + }, + BigNum { + limbs: [0xc0c01151e77ac9d0d89977bf0bdc0d, 0x539ffb8491bff9d6f3e18ece1fce90, 0x006c77], + }, + BigNum { + limbs: [0x0cb139b40f4c25efde2d1e3d91bdd7, 0x607ce8d23ffed09655e7bf9bbb56a0, 0x002fac], + }, + BigNum { + limbs: [0xb0f2c94bef0fd91021d2e0c26e422a, 0x46d640cb3d4962a382204a061caeb3, 0x004441], + }, + BigNum { + limbs: [0x9056c4e381145f218592573596e4e9, 0x1da7c6d8816a814bffbf8d20cef142, 0x000e09], + }, + BigNum { + limbs: [0x2d4d3e1c7d479fde7a6da7ca691b18, 0x89ab62c4fbddb1edd8487c81091411, 0x0065e4], + }, + BigNum { + limbs: [0x85d191ac75223523bb85f2da7f3e51, 0xb26339d05091e20e765bc6522c3d49, 0x0023fb], + }, + BigNum { + limbs: [0x37d271538939c9dc447a0c2580c1b0, 0xf4efefcd2cb6512b61ac434fabc80a, 0x004ff1], + }, + BigNum { + limbs: [0x42dd56d39e955417d408cfe1efe0da, 0x6dd7b2cf3c059a45ee2eabefd88d8d, 0x001286], + }, + BigNum { + limbs: [0x7ac6ac2c5fc6aae82bf72f1e101f27, 0x397b76ce414298f3e9d95db1ff77c6, 0x006167], + }, + BigNum { + limbs: [0x8ff68b2704622d8db3b98e4423fc50, 0x8734ba95974fe0a610e2a9cc4f55cf, 0x0021c7], + }, + BigNum { + limbs: [0x2dad77d8f9f9d1724c4670bbdc03b1, 0x201e6f07e5f85293c7255fd588af84, 0x005226], + }, + BigNum { + limbs: [0x8beba55b423887eb9775afe0580eb6, 0xc6493ca6f7bafdd94ab18c03456354, 0x00021f], + }, + BigNum { + limbs: [0x31b85da4bc237714688a4f1fa7f14b, 0xe109ecf6858d35608d567d9e92a1ff, 0x0071cd], + }, + BigNum { + limbs: [0xddf65cfc1c7f198f6e446f0ba80111, 0xfc3367b27efadae203a5d04d12b33b, 0x00547e], + }, + BigNum { + limbs: [0xdfada603e1dce57091bb8ff457fef0, 0xab1fc1eafe4d5857d4623954c55217, 0x001f6e], + }, + BigNum { + limbs: [0xb2111259c0e6827b9f2d0dfbe1fda0, 0xea46adb91f8909429055d788c6ef35, 0x0045e8], + }, + BigNum { + limbs: [0x0b92f0a63d757c8460d2f1041e0261, 0xbd0c7be45dbf29f747b2321911161e, 0x002e04], + }, + BigNum { + limbs: [0xd451939d2efc7530d247f9f1b06a9d, 0x723488ddb269aa2a0bb898bac279da, 0x002e0f], + }, + BigNum { + limbs: [0xe9526f62cf5f89cf2db8050e4f9564, 0x351ea0bfcade890fcc4f70e7158b78, 0x0045de], + }, + BigNum { + limbs: [0xcdfd800f910da40d61b57cc139d00a, 0x6f4e20fb2f20f36c5be4373da4ad3e, 0x002436], + }, + BigNum { + limbs: [0xefa682f06d4e5af29e4a823ec62ff7, 0x380508a24e273fcd7c23d264335814, 0x004fb7], + }, + BigNum { + limbs: [0xad59732db132de9f70a3a4625a28a2, 0x30d35a07976b6f22eeb847e6a4c2c5, 0x000455], + }, + BigNum { + limbs: [0x104a8fd24d2920608f5c5a9da5d75f, 0x767fcf95e5dcc416e94fc1bb33428e, 0x006f98], + }, + BigNum { + limbs: [0xa83f0d64199428796ae7ed987e3031, 0x66c481043d84ce7b5b9a58967a125a, 0x006e11], + }, + BigNum { + limbs: [0x1564f59be4c7d6869518116781cfd0, 0x408ea8993fc364be7c6db10b5df2f9, 0x0005dc], + }, + BigNum { + limbs: [0xfeec51f753cc687c69d6ae5df2c7e5, 0x01672a864c45dae541d1fd7ab0cf3b, 0x00252a], + }, + BigNum { + limbs: [0xbeb7b108aa8f9683962950a20d381c, 0xa5ebff173102585496360c27273617, 0x004ec3], + }, + BigNum { + limbs: [0x3737709114df79354b1b9355e6a54e, 0x4098bda9ad6a6469757c2498b0fd99, 0x006a78], + }, + BigNum { + limbs: [0x866c926ee97c85cab4e46baa195ab3, 0x66ba6bf3cfddced0628be5092707ba, 0x000975], + }, + BigNum { + limbs: [0x51ed8769fd01bf945fda78a7f367d9, 0x753bf1d2a62039f1517d74049b890e, 0x004fe3], + }, + BigNum { + limbs: [0x6bb67b96015a3f6ba02586580c9828, 0x321737cad727f948868a959d3c7c45, 0x00240a], + }, + BigNum { + limbs: [0x3fe7cabd0b23e5bf705eba460abe55, 0x3151de041923e02a79c24740b9cac2, 0x0008cf], + }, + BigNum { + limbs: [0x7dbc3842f33819408fa144b9f541ac, 0x76014b996424530f5e45c2611e3a91, 0x006b1e], + }, + BigNum { + limbs: [0x66c55dea845e4933d0b97dedcbec39, 0xbe534af38fff28cbbe5b58d6539c1a, 0x002362], + }, + BigNum { + limbs: [0x56dea51579fdb5cc2f4681123413c8, 0xe8ffdea9ed490a6e19acb0cb846939, 0x00508a], + }, + BigNum { + limbs: [0xe74ce466f28a996afd86c991620276, 0x6a14aab731397177349c6cb97b7c51, 0x005ffd], + }, + BigNum { + limbs: [0xd6571e990bd165950279356e9dfd8b, 0x3d3e7ee64c0ec1c2a36b9ce85c8901, 0x0013f0], + }, + BigNum { + limbs: [0xfc885d40f73760387ca37368ee6036, 0xfdacb64f6dcef359c6db5d8d487fc5, 0x003810], + }, + BigNum { + limbs: [0xc11ba5bf07249ec7835c8b97119fcb, 0xa9a6734e0f793fe0112cac148f858d, 0x003bdc], + }, + BigNum { + limbs: [0xe66d78cb626cc03ccda280ddf7c676, 0xaa5aa0b483b385f66bd08a1d249b53, 0x006a97], + }, + BigNum { + limbs: [0xd7368a349bef3ec3325d7e2208398b, 0xfcf888e8f994ad436c377f84b369ff, 0x000955], + }, + BigNum { + limbs: [0xe73f7a50c5aaeb5db85ae6ebfcb38d, 0xbca65083b25f7ee89ab1508940ca94, 0x001c15], + }, + BigNum { + limbs: [0xd66488af38b113a247a51814034c74, 0xeaacd919cae8b4513d56b918973abe, 0x0057d7], + }, + BigNum { + limbs: [0x3041d38fa295c8677f529da0db3616, 0x61b3e4c04bcf4cc051000148d5479a, 0x006b8b], + }, + BigNum { + limbs: [0x8d622f705bc6369880ad615f24c9eb, 0x459f44dd3178e6798708085902bdb9, 0x000862], + }, + BigNum { + limbs: [0x36ba5d59a1fdb3918b8ff2657cb799, 0x73141aa50ce8e0448856303668e326, 0x001a6f], + }, + BigNum { + limbs: [0x86e9a5a65c5e4b6e74700c9a834868, 0x343f0ef8705f52f54fb1d96b6f222d, 0x00597e], + }, + BigNum { + limbs: [0x6ccba57529ef3a2e69b325f8c2d10e, 0x4d647a8586116f35f254c16ac4e2e8, 0x000d42], + }, + BigNum { + limbs: [0x50d85d8ad46cc4d1964cd9073d2ef3, 0x59eeaf17f736c403e5b3483713226b, 0x0066ab], + }, + BigNum { + limbs: [0xd6a430a0bc13faa1c38e986fed60b7, 0xce5eedbb83c74a15db11a3b554b5d3, 0x006858], + }, + BigNum { + limbs: [0xe6ffd25f4248045e3c716690129f4a, 0xd8f43be1f980e923fcf665ec834f7f, 0x000b94], + }, + BigNum { + limbs: [0xbb69b1e997262c5f8b75eb59322015, 0xada1e5d0b6bf2aca0bb3f1eaef08eb, 0x0038e8], + }, + BigNum { + limbs: [0x023a51166735d2a0748a13a6cddfec, 0xf9b143ccc689086fcc5417b6e8fc68, 0x003b04], + }, + BigNum { + limbs: [0xb9c653a69df49edefa7c37d09c36a2, 0xadf904b0681b511569231f5f35c687, 0x0049b2], + }, + BigNum { + limbs: [0x03ddaf59606760210583c72f63c95f, 0xf95a24ed152ce2246ee4ea42a23ecc, 0x002a3a], + }, + BigNum { + limbs: [0x544e0eef300ebb6922152d741da680, 0xf4657f7341d681f7a80461466d15fc, 0x00633f], + }, + BigNum { + limbs: [0x6955f410ce4d4396ddead18be25981, 0xb2edaa2a3b71b1423003a85b6aef57, 0x0010ad], + }, + BigNum { + limbs: [0x3cb7a69485ca0129ceb6ef8030b2de, 0x6468a2d46ee05d32b857f28457a44c, 0x00702f], + }, + BigNum { + limbs: [0x80ec5c6b7891fdd631490f7fcf4d23, 0x42ea86c90e67d6071fb0171d806107, 0x0003be], + }, + BigNum { + limbs: [0x690adce0d4559ad0bab5f02b35aea3, 0x8d7a680f4f615969a24f8e2106f81a, 0x005dc7], + }, + BigNum { + limbs: [0x5499261f2a06642f454a0ed4ca515e, 0x19d8c18e2de6d9d035b87b80d10d39, 0x001626], + }, + BigNum { + limbs: [0xbf6566f761bbaaa58ea51a15cb2a93, 0xa436bbf70ebc9a481043f60ec7964f, 0x0042fa], + }, + BigNum { + limbs: [0xfe3e9c089ca0545a715ae4ea34d56e, 0x031c6da66e8b98f1c7c41393106f03, 0x0030f3], + }, + BigNum { + limbs: [0x3c61e635e16ea6e68378ad80a7bb00, 0x1824c50aa16fccd46c8c0a5d9be527, 0x004d3d], + }, + BigNum { + limbs: [0x81421cca1ced58197c87517f584501, 0x8f2e6492dbd866656b7bff443c202c, 0x0026b0], + }, + BigNum { + limbs: [0x32055cd6e43a26efe507326576562d, 0x3a3febc19c74e00c852874294fe1a0, 0x006623], + }, + BigNum { + limbs: [0x8b9ea6291a21d8101af8cc9a89a9d4, 0x6d133ddbe0d3532d52df95788823b3, 0x000dca], + }, + BigNum { + limbs: [0x920cdabfd84a8600c41c7ed4c36731, 0xe4e20eda21e3bc795bd8f25ded6ef3, 0x000937], + }, + BigNum { + limbs: [0x2b972840261178ff3be3802b3c98d0, 0xc2711ac35b6476c07c2f1743ea9660, 0x006ab5], + }, + BigNum { + limbs: [0xca1d8869e45cb67ef2f5436db89ce5, 0x428cd15fec9829f4d52d022a11c056, 0x003d18], + }, + BigNum { + limbs: [0xf3867a9619ff48810d0abb9247631c, 0x64c6583d90b0094502db0777c644fc, 0x0036d5], + }, + BigNum { + limbs: [0xc512d0ba6e3f20da7810f90a14ed63, 0xe965ba4aab15753bb87fe847a6e84a, 0x001400], + }, + BigNum { + limbs: [0xf8913245901cde2587ef05f5eb129e, 0xbded6f52d232bdfe1f88215a311d08, 0x005fec], + }, + BigNum { + limbs: [0xb385262d0e06a7bf046f046933915c, 0x2fcbe3d8e169f25d115b2909df5fae, 0x0070a5], + }, + BigNum { + limbs: [0x0a1edcd2f0555740fb90fa96cc6ea5, 0x778745c49bde40dcc6ace097f8a5a5, 0x000348], + }, + BigNum { + limbs: [0x8d607f4ee699ae051d64216ef65230, 0xb7a8f24647997c6daa193db1745c67, 0x003466], + }, + BigNum { + limbs: [0x304383b117c250fae29bdd9109add1, 0xefaa375735aeb6cc2deecbf063a8ec, 0x003f86], + }, + BigNum { + limbs: [0xd5f7ce03dd2713a624911665fba78b, 0x63171cfd358f14986d8c2b99885009, 0x002862], + }, + BigNum { + limbs: [0xe7ac34fc2134eb59db6ee89a045876, 0x443c0ca047b91ea16a7bde084fb549, 0x004b8b], + }, + BigNum { + limbs: [0xfe70a1a000bdeededa81868d68b00a, 0xd7c52f795ab5a3cbe846b833307b38, 0x0063a9], + }, + BigNum { + limbs: [0xbf33615ffd9e1021257e7872974ff7, 0xcf8dfa2422928f6defc1516ea78a1a, 0x001043], + }, + BigNum { + limbs: [0xe211b10f8f4244573cc1221781e0bc, 0xa9ee4fed8c9defe5bf47c589849963, 0x0002ca], + }, + BigNum { + limbs: [0xdb9251f06f19baa8c33edce87e1f45, 0xfd64d9aff0aa435418c04418536bef, 0x007122], + }, + BigNum { + limbs: [0x377cbd2bf36fcc3ec268ec688da522, 0x1c5a67a005fe6aef4b6396adfc608c, 0x004310], + }, + BigNum { + limbs: [0x862745d40aec32c13d971297725adf, 0x8af8c1fd7749c84a8ca472f3dba4c7, 0x0030dd], + }, + BigNum { + limbs: [0x258de8ab7c6bf6492d72265c8bb286, 0x12dd6a762ba5433ae5253027a86d6c, 0x001e57], + }, + BigNum { + limbs: [0x98161a5481f008b6d28dd8a3744d7b, 0x9475bf2751a2effef2e2d97a2f97e7, 0x005596], + }, + BigNum { + limbs: [0xfc6245c2276cfe52b9e2e3d8e363f5, 0x8f91391224f82d1509ea7380eb432e, 0x006724], + }, + BigNum { + limbs: [0xc141bd3dd6ef00ad461d1b271c9c0c, 0x17c1f08b58500624ce1d9620ecc224, 0x000cc9], + }, + BigNum { + limbs: [0xab98917739772b3fcea5a50aafcbdb, 0x2bbc74577df8687bcc2850f602ddf5, 0x002b9d], + }, + BigNum { + limbs: [0x120b7188c4e4d3c0315a59f5503426, 0x7b96b545ff4fcabe0bdfb8abd5275e, 0x004850], + }, + BigNum { + limbs: [0x59749fab0ea4f5cad4d5192ef12ff5, 0xf00a1aaafd469e2d6961368dca2476, 0x002787], + }, + BigNum { + limbs: [0x642f6354efb709352b2ae5d10ed00c, 0xb7490ef28001950c6ea6d3140de0dd, 0x004c65], + }, + BigNum { + limbs: [0xc74b9514983765d71e1882e1dd7f28, 0x927973e027868355da437798fef908, 0x00730c], + }, + BigNum { + limbs: [0xf6586deb66249928e1e77c1e2280d9, 0x14d9b5bd55c1afe3fdc49208d90c4a, 0x0000e1], + }, + BigNum { + limbs: [0xe18a0dbf32e81b22ac28512f733ac0, 0x88e2477fbf79aba7460fd9c360ec14, 0x006684], + }, + BigNum { + limbs: [0xdc19f540cb73e3dd53d7add08cc541, 0x1e70e21dbdce879291f82fde77193e, 0x000d69], + }, + BigNum { + limbs: [0x67f6c836862ed38368bc3ff9fe041d, 0x3f6664ca78be793846d6244234b80d, 0x005e13], + }, + BigNum { + limbs: [0x55ad3ac9782d2b7c9743bf0601fbe4, 0x67ecc4d30489ba019131e55fa34d46, 0x0015da], + }, + BigNum { + limbs: [0x95610ecb9899c53b6ead007648781c, 0xf6f4afb976d236fa3357bfa851e961, 0x0022da], + }, + BigNum { + limbs: [0x2842f43465c239c49152fe89b787e5, 0xb05e79e40675fc3fa4b049f9861bf2, 0x005112], + }, + BigNum { + limbs: [0xaa1b5e34bb77878b236035fa24c486, 0x954412900ed54088745ec1f2c16631, 0x0050d0], + }, + BigNum { + limbs: [0x1388a4cb42e47774dc9fc905db3b7b, 0x120f170d6e72f2b163a947af169f22, 0x00231d], + }, + BigNum { + limbs: [0x8a241be93dc8974e02b11bd3a217c2, 0x84a58f018d4c9b113b0587c1e3580c, 0x005870], + }, + BigNum { + limbs: [0x337fe716c09367b1fd4ee32c5de83f, 0x22ad9a9beffb98289d0281dff4ad47, 0x001b7d], + }, + BigNum { + limbs: [0x8dba7176a3140438e61a2bdb947cfb, 0x7d36756abfa6e6de4760c9223ca35d, 0x006d9b], + }, + BigNum { + limbs: [0x2fe991895b47fac719e5d3246b8306, 0x2a1cb432bda14c5b90a7407f9b61f6, 0x000652], + }, + BigNum { + limbs: [0x7a93ae34c98803cc138ce5decb272f, 0x9d92ac58ff78ea09ac3f1bdf706976, 0x002877], + }, + BigNum { + limbs: [0x431054cb34d3fb33ec73192134d8d2, 0x09c07d447dcf49302bc8edc2679bdd, 0x004b76], + }, + BigNum { + limbs: [0xf0341a13b3565ad286345e7ac747d6, 0x7c023d791f0bdc6832ada0a4abdbb2, 0x001473], + }, + BigNum { + limbs: [0xcd6fe8ec4b05a42d79cba08538b82b, 0x2b50ec245e3c56d1a55a68fd2c29a0, 0x005f7a], + }, + BigNum { + limbs: [0x4c4fa5f5263d07bfb59bd6f3e3410f, 0x1ddc11c537cbfe3ed86585643677f4, 0x00641b], + }, + BigNum { + limbs: [0x71545d0ad81ef7404a64280c1cbef2, 0x897717d8457c34faffa2843da18d5f, 0x000fd2], + }, + BigNum { + limbs: [0x2144b16886b434df3737d784288d49, 0x98ef059d3185cc257d69e121cd84b3, 0x006755], + }, + BigNum { + limbs: [0x9c5f519777a7ca20c8c8277bd772b8, 0x0e6424004bc267145a9e28800a80a0, 0x000c98], + }, + BigNum { + limbs: [0xdad8f147195417f8e3b085a77afbf2, 0xd402f8d47177c758c7a4112d4a8bea, 0x003aff], + }, + BigNum { + limbs: [0xe2cb11b8e507e7071c4f795885040f, 0xd35030c90bd06be11063f8748d7968, 0x0038ed], + }, + BigNum { + limbs: [0x13b822085973279feb3060dee77336, 0xec04bf19f89eb75b9bf5262d598072, 0x002dd3], + }, + BigNum { + limbs: [0xa9ebe0f7a4e8d76014cf9e21188ccb, 0xbb4e6a8384a97bde3c12e3747e84e1, 0x004619], + }, + BigNum { + limbs: [0xce316d93c6b00bb50855547902c03e, 0x97ca4d2c7b6a0c1945109c1f1e9c3a, 0x006ce3], + }, + BigNum { + limbs: [0xef72956c37abf34af7aaaa86fd3fc3, 0x0f88dc7101de272092f76d82b96918, 0x00070a], + }, + BigNum { + limbs: [0x694267eeda9311b9bc81d1e5f516e1, 0x5846cd4336b188de7c8b11604d8ff0, 0x006fb0], + }, + BigNum { + limbs: [0x54619b1123c8ed46437e2d1a0ae920, 0x4f0c5c5a4696aa5b5b7cf8418a7563, 0x00043d], + }, + BigNum { + limbs: [0x24f213c919d43d562e491138e601de, 0xe28f29fa7cfa57c3839a0140d9f2bb, 0x0007dd], + }, + BigNum { + limbs: [0x98b1ef36e487c1a9d1b6edc719fe23, 0xc4c3ffa3004ddb76546e0860fe1298, 0x006c0f], + }, + BigNum { + limbs: [0x6b7e5ff4d425ec22ae86624a026d8f, 0xf1287fe086b18251211dc7db069146, 0x00583a], + }, + BigNum { + limbs: [0x5225a30b2a3612dd51799cb5fd9272, 0xb62aa9bcf696b0e8b6ea41c6d1740d, 0x001bb2], + }, + BigNum { + limbs: [0x80b253331456f274067e67d28a7bf9, 0xe5fb6401d35e8b476c3d92001ca186, 0x000d83], + }, + BigNum { + limbs: [0x3cf1afccea050c8bf981972d758408, 0xc157c59ba9e9a7f26bca77a1bb63cd, 0x006669], + }, + BigNum { + limbs: [0xd98dbcb16d6b2bc8c4f400030cd5c1, 0x16f7a347bb978b3074eb9fb6094903, 0x0047b1], + }, + BigNum { + limbs: [0xe416464e90f0d3373b0bfefcf32a40, 0x905b8655c1b0a809631c69ebcebc4f, 0x002c3c], + }, + BigNum { + limbs: [0xb330e761da3be1436d1d98942671d5, 0xa5e3e36a9bf331e93cc37de09f5274, 0x006d89], + }, + BigNum { + limbs: [0x0a731b9e24201dbc92e2666bd98e2c, 0x016f4632e15501509b448bc138b2df, 0x000664], + }, + BigNum { + limbs: [0x3fb3867287d861038cb90b5f9e2564, 0x2156aa8bb80679fa31d23cd3c210ae, 0x0014ef], + }, + BigNum { + limbs: [0x7df07c8d76839dfc7346f3a061da9d, 0x85fc7f11c541b93fa635ccce15f4a5, 0x005efe], + }, + BigNum { + limbs: [0x32317a2cdbea65c58c12f0eb455e6b, 0x4698b9e42244abdd2198bdf7fde562, 0x00244b], + }, + BigNum { + limbs: [0x8b7288d32271993a73ed0e14baa196, 0x60ba6fb95b03875cb66f4ba9da1ff1, 0x004fa2], + }, + BigNum { + limbs: [0x8ed195331b98672808faa3ccaafe7d, 0xa34e6b5142c7e48095cf2e1b9d09fa, 0x00138f], + }, + BigNum { + limbs: [0x2ed26dcce2c397d7f7055b33550184, 0x0404be4c3a804eb94238db863afb59, 0x00605e], + }, + BigNum { + limbs: [0x6ce50ce8631ddc37c974247e893e37, 0xbafc2e8182867d9f8711636eb28e84, 0x004348], + }, + BigNum { + limbs: [0x50bef6179b3e22c8368bda8176c1ca, 0xec56fb1bfac1b59a50f6a6332576cf, 0x0030a4], + }, + BigNum { + limbs: [0xdb3d1d363620c7059279cc46720e88, 0x4bc4b85d0584dfd6b5fa91067e76e4, 0x000d5b], + }, + BigNum { + limbs: [0xe266e5c9c83b37fa6d8632b98df179, 0x5b8e714077c35363220d789b598e6e, 0x006692], + }, + BigNum { + limbs: [0x6ad7cae3c87627c98f6b3a48df5a28, 0xd4863b46a956c8dcee098ed888b038, 0x0029fb], + }, + BigNum { + limbs: [0x52cc381c35e5d7367094c4b720a5d9, 0xd2ccee56d3f16a5ce9fe7ac94f551b, 0x0049f1], + }, + BigNum { + limbs: [0xc9b512172293bb81396ff313d3bb80, 0x1736abd6d04b4739c52b4fabaab4dd, 0x005da9], + }, + BigNum { + limbs: [0xf3eef0e8dbc8437ec6900bec2c4481, 0x901c7dc6acfcec0012dcb9f62d5075, 0x001644], + }, + BigNum { + limbs: [0x977a45ccd1f4913ff0793ba434977c, 0x8bcb0af58a52192a995975d7064454, 0x003af5], + }, + BigNum { + limbs: [0x2629bd332c676dc00f86c35bcb6885, 0x1b881ea7f2f61a0f3eae93cad1c0ff, 0x0038f8], + }, + BigNum { + limbs: [0xef2fb42e82a91c3aaf009278b4b454, 0xef630dea07dd87c170f9a2a01856a4, 0x00038b], + }, + BigNum { + limbs: [0xce744ed17bb2e2c550ff6c874b4bad, 0xb7f01bb3756aab78670e6701bfaeae, 0x007061], + }, + BigNum { + limbs: [0xc8e73f1fb0956aac66e8dafc81fe1e, 0x059efabd9ae1387d443ddded77add3, 0x00321c], + }, + BigNum { + limbs: [0xf4bcc3e04dc69453991724037e01e3, 0xa1b42edfe266fabc93ca2bb460577f, 0x0041d1], + }, + BigNum { + limbs: [0x3933c1beda8052e1a0aa54ab584031, 0xe11c874ac1ff523154d2355e4e4176, 0x000605], + }, + BigNum { + limbs: [0x8470414123dbac1e5f55aa54a7bfd0, 0xc636a252bb48e1088335d44389c3dd, 0x006de7], + }, + BigNum { + limbs: [0x434bad0898bac4640aa66581465d9a, 0xaf57ad62903dde30dfbc088a2d14cc, 0x002840], + }, + BigNum { + limbs: [0x7a5855f765a13a9bf559997eb9a267, 0xf7fb7c3aed0a5508f84c0117aaf087, 0x004bac], + }, + BigNum { + limbs: [0xa295c7dfe550262e424716d6fbaa2d, 0xd989cae69b749be1ba8e713c6bf63c, 0x000224], + }, + BigNum { + limbs: [0x1b0e3b20190bd8d1bdb8e8290455d4, 0xcdc95eb6e1d397581d7998656c0f17, 0x0071c8], + }, + BigNum { + limbs: [0x027b481a99f8d7f13eed8a7afc59cc, 0x1cc9790e8f2c1db924e35b38caf6b5, 0x00086c], + }, + BigNum { + limbs: [0xbb28bae56463270ec112748503a635, 0x8a89b08eee1c1580b324ae690d0e9e, 0x006b81], + }, + BigNum { + limbs: [0x2f35aea290ac55b604c24be38ed2f2, 0xaa61fc26cd5f4c7a8318ba28706e7c, 0x004bf1], + }, + BigNum { + limbs: [0x8e6e545d6dafa949fb3db31c712d0f, 0xfcf12d76afe8e6bf54ef4f796796d7, 0x0027fb], + }, + BigNum { + limbs: [0x44c8d9317399ddb4c3351d1f85a494, 0x5c08fdb7b5f58ca2789772dc1ee600, 0x00527c], + }, + BigNum { + limbs: [0x78db29ce8ac2214b3ccae1e07a5b6d, 0x4b4a2be5c752a6975f7096c5b91f53, 0x002171], + }, + BigNum { + limbs: [0xacd8c18fd788b79108eb0359f985a8, 0xa5fb219c39b3597fd7cdb7cb9ec359, 0x0020c5], + }, + BigNum { + limbs: [0x10cb417026d3476ef714fba6067a59, 0x015808014394d9ba003a51d63941fa, 0x005328], + }, + BigNum { + limbs: [0x336e8b0eaa01fdee91311271ee45a3, 0x6b1c12f87566ddd0bf944a8e6d750a, 0x003ee3], + }, + BigNum { + limbs: [0x8a3577f1545a01116eceec8e11ba5e, 0x3c3716a507e155691873bf136a9049, 0x00350a], + }, + BigNum { + limbs: [0x0e3a4a2c1307877112e3fc3d4ace71, 0x75e2c927a7c9d2046ce027a513df74, 0x001ada], + }, + BigNum { + limbs: [0xaf69b8d3eb54778eed1c02c2b53190, 0x31706075d57e61356b27e1fcc425df, 0x005913], + }, + BigNum { + limbs: [0x531d011069710c1aadbdf0d9becb26, 0xfe392258bd3c57b360a745e7386083, 0x005264], + }, + BigNum { + limbs: [0x6a8701ef94eaf2e552420e264134db, 0xa91a0744c00bdb867760c3ba9fa4d0, 0x002188], + }, + BigNum { + limbs: [0xe9187454698944ac775919154154c1, 0x8c85aab132d3f04ce0af0a60f99468, 0x001dba], + }, + BigNum { + limbs: [0xd48b8eab94d2ba5388a6e5eabeab40, 0x1acd7eec4a7442ecf758ff40de70ea, 0x005633], + }, + BigNum { + limbs: [0x6c1604b24820a3770340790d55dc4c, 0x70485191eb56fc775110f342bec6f3, 0x003e60], + }, + BigNum { + limbs: [0x518dfe4db63b5b88fcbf85f2aa23b5, 0x370ad80b91f136c286f7165f193e60, 0x00358d], + }, + BigNum { + limbs: [0xeafb428e38a30928c22245d72bb2a3, 0xce32f7e962fa2b3e31afd97e204be3, 0x004902], + }, + BigNum { + limbs: [0xd2a8c071c5b8f5d73dddb928d44d5e, 0xd92031b41a4e07fba6583023b7b96f, 0x002aea], + }, + BigNum { + limbs: [0x3a451584a96e0ef35f980490fcc053, 0xd4e5faca74e951f07361d72a49f4b1, 0x00173b], + }, + BigNum { + limbs: [0x835eed7b54edf00ca067fa6f033fae, 0xd26d2ed3085ee14964a632778e10a2, 0x005cb1], + }, + BigNum { + limbs: [0x2e15a71ff3bb6b1793eb9057fda39b, 0x6d1eafc21e45b97be27adfc8bad8f1, 0x00170c], + }, + BigNum { + limbs: [0x8f8e5be00aa093e86c146ea8025c66, 0x3a3479db5f0279bdf58d29d91d2c62, 0x005ce1], + }, + BigNum { + limbs: [0x91a01cb11e1d388fbbb51771aacdbc, 0x5543e381889b38beaaccd6ea72786b, 0x003dcd], + }, + BigNum { + limbs: [0x2c03e64ee03ec670444ae78e553245, 0x520f461bf4acfa7b2d3b32b7658ce8, 0x003620], + }, + BigNum { + limbs: [0x1b2c2bf57e2ffa8bff0d76e779efd8, 0x136e7973448a6e8452d09af6d4fe0b, 0x002579], + }, + BigNum { + limbs: [0xa277d70a802c047400f28818861029, 0x93e4b02a38bdc4b585376eab030748, 0x004e74], + }, + BigNum { + limbs: [0x965114af80d5f237b8489e744cdb6a, 0x34a8111b5e6c4c02091f65cedfc07a, 0x000798], + }, + BigNum { + limbs: [0x2752ee507d860cc847b7608bb32497, 0x72ab18821edbe737cee8a3d2f844d9, 0x006c55], + }, + BigNum { + limbs: [0xe7ccd1f49218bcde0a39b54757baf4, 0x55b1570da586ba40c31e363e1506aa, 0x006c6a], + }, + BigNum { + limbs: [0xd5d7310b6c434221f5c649b8a8450d, 0x51a1d28fd7c178f914e9d363c2fea8, 0x000783], + }, + BigNum { + limbs: [0xd75a4c1d0a47bc8a57f67a92771886, 0xf7e713a14f663701ec08b9515cc1d4, 0x00504d], + }, + BigNum { + limbs: [0xe649b6e2f4144275a809846d88e77b, 0xaf6c15fc2de1fc37ebff50507b437e, 0x00239f], + }, + BigNum { + limbs: [0x4a6f5157ee66feed092f02034b4427, 0x089313ebbb63ab112c6e47f651c56b, 0x004f80], + }, + BigNum { + limbs: [0x7334b1a80ff50012f6d0fcfcb4bbda, 0x9ec015b1c1e48828ab99c1ab863fe8, 0x00246d], + }, + BigNum { + limbs: [0x960a2dbf6b89282bb928b6c2bc3afc, 0x9de0cb3644273fde5012c262290cdd, 0x000f2b], + }, + BigNum { + limbs: [0x2799d54092d2d6d446d7483d43c505, 0x09725e673920f35b87f5473faef876, 0x0064c2], + }, + BigNum { + limbs: [0xd8f900e407b7f428bce7e30c66a081, 0xa99e4a437b505d95dfd1630242422e, 0x005a1e], + }, + BigNum { + limbs: [0xe4ab021bf6a40ad743181bf3995f80, 0xfdb4df5a01f7d5a3f836a69f95c324, 0x0019ce], + }, + BigNum { + limbs: [0x7d648cf9f44e1804ceeaa511f4fae9, 0x69d70232147b3a090bcaa59c776b2b, 0x0041e4], + }, + BigNum { + limbs: [0x403f76060a0de6fb311559ee0b0518, 0x3d7c276b68ccf930cc3d6405609a28, 0x003209], + }, + BigNum { + limbs: [0x25da2e047033fefbbcff900fcc827f, 0x02ebc6464d846f98cb09f9865d83d0, 0x004d59], + }, + BigNum { + limbs: [0x97c9d4fb8e28000443006ef0337d82, 0xa46763572fc3c3a10cfe101b7a8183, 0x002694], + }, + BigNum { + limbs: [0xee0ffdf718781e60b137ab482066e4, 0xbc8d78d3c3cc9173a7c9c3c994b807, 0x001459], + }, + BigNum { + limbs: [0xcf940508e5e3e09f4ec853b7df991d, 0xeac5b0c9b97ba1c6303e45d8434d4b, 0x005f93], + }, + BigNum { + limbs: [0x525bc3d1cd03ba13854305ef54b104, 0x6d82f16d68853bf7bb74b643ac07c9, 0x000956], + }, + BigNum { + limbs: [0x6b483f2e315844ec7abcf910ab4efd, 0x39d0383014c2f7421c93535e2bfd8a, 0x006a97], + }, + BigNum { + limbs: [0x5e2f10a51b5409e93521dc76f14b89, 0x6a17ed37cedbd2dff79cd54a6ea067, 0x000beb], + }, + BigNum { + limbs: [0x5f74f25ae307f516cade22890eb478, 0x3d3b3c65ae6c6059e06b34576964ec, 0x006802], + }, + BigNum { + limbs: [0x55735e16b82bb0a2073fb0e02a7667, 0x7f1df880e7c227e024663dc027bae4, 0x006a70], + }, + BigNum { + limbs: [0x6830a4e946304e5df8c04e1fd5899a, 0x2835311c95860b59b3a1cbe1b04a6f, 0x00097d], + }, + BigNum { + limbs: [0x3c367ca1d1ffe6e2ae57afb246966b, 0xe0e87f964513f8ddba3c5316c7ec75, 0x0013e7], + }, + BigNum { + limbs: [0x816d865e2c5c181d51a84f4db96996, 0xc66aaa0738343a5c1dcbb68b1018de, 0x006005], + }, + BigNum { + limbs: [0xb3e11681c510a6dd5a6a3e91095dc7, 0x32d749c30d1dc4895811317d780782, 0x004019], + }, + BigNum { + limbs: [0x09c2ec7e394b5822a595c06ef6a23a, 0x747bdfda702a6eb07ff6d8245ffdd1, 0x0033d4], + }, + BigNum { + limbs: [0xbd453fb132b4682cdfe9db0ff4374b, 0x9c9a35f12409aee55906ba0e6f2ed2, 0x003225], + }, + BigNum { + limbs: [0x005ec34ecba796d3201623f00bc8b6, 0x0ab8f3ac593e84547f014f9368d681, 0x0041c8], + }, + BigNum { + limbs: [0xc6f53956b47ef98c1e4633a1e79a90, 0xf8a65c0009dce5d7361d5906eb273a, 0x002444], + }, + BigNum { + limbs: [0xf6aec9a949dd0573e1b9cb5e186571, 0xaeaccd9d736b4d62a1eab09aecde18, 0x004fa8], + }, + BigNum { + limbs: [0x73a69a942f840ad1d45960e9d626dc, 0xfe77b2223aa587ca2ddd92f73d486e, 0x001875], + }, + BigNum { + limbs: [0x49fd686bced7f42e2ba69e1629d925, 0xa8db777b42a2ab6faa2a76aa9abce5, 0x005b77], + }, + BigNum { + limbs: [0x880501279a899bcee868ce8587a13b, 0x8f1b04bfd10c7250976724baad776d, 0x0018f1], + }, + BigNum { + limbs: [0x359f01d863d263311797307a785ec6, 0x183824ddac3bc0e940a0e4e72a8de6, 0x005afc], + }, + BigNum { + limbs: [0xb3d3b950311f02a824f0ba9a8f2963, 0x7cb97acb4245d1566d60c3a6ba5720, 0x0036d4], + }, + BigNum { + limbs: [0x09d049afcd3cfc57db0f446570d69e, 0x2a99aed23b0261e36aa745fb1dae33, 0x003d19], + }, + BigNum { + limbs: [0x8992a0b4aebe62c3176cafbba6ece2, 0x3e3e42733334ed43caff7cac4fa484, 0x005665], + }, + BigNum { + limbs: [0x3411624b4f9d9c3ce8934f4459131f, 0x6914e72a4a1345f60d088cf58860cf, 0x001d88], + }, + BigNum { + limbs: [0x3e333e731c6d86ea2f0310654c1c69, 0x45e320a61c7930dd4640b8259046fa, 0x0072e0], + }, + BigNum { + limbs: [0x7f70c48ce1ee7815d0fcee9ab3e398, 0x617008f760cf025c91c7517c47be59, 0x00010d], + }, + BigNum { + limbs: [0xb4fac3c927f6e90d16741ca2ea19f3, 0x2ea688ce95690fb3e7765ded195901, 0x005fc4], + }, + BigNum { + limbs: [0x08a93f36d66515f2e98be25d15e60e, 0x78aca0cee7df2385f091abb4beac52, 0x001429], + }, + BigNum { + limbs: [0x38250aebdfea19439e2c0f3fec014c, 0x0c68a0cd2567ed61c7c501f9cc757c, 0x005f62], + }, + BigNum { + limbs: [0x857ef8141e71e5bc61d3efc013feb5, 0x9aea88d057e045d8104307a80b8fd7, 0x00148b], + }, + BigNum { + limbs: [0x315044d26ab11b7f5d7bffe0b305c8, 0x73d2528c3d883247ea42471dd1c0ed, 0x006381], + }, + BigNum { + limbs: [0x8c53be2d93aae380a283ff1f4cfa39, 0x3380d7113fc000f1edc5c284064466, 0x00106c], + }, + BigNum { + limbs: [0x80ec4b796d3c1fa24716c0654b3fca, 0x7624f7423ea31f36512a3c42e181bd, 0x006902], + }, + BigNum { + limbs: [0x3cb7b786911fdf5db8e93e9ab4c037, 0x312e325b3ea5140386ddcd5ef68396, 0x000aeb], + }, + BigNum { + limbs: [0xd55c9043bd712ec2374a085a04cf77, 0x4dce95290db96dbc6e981c87cc0d39, 0x0039dd], + }, + BigNum { + limbs: [0xe84772bc40ead03dc8b5f6a5fb308a, 0x598494746f8ec57d696fed1a0bf819, 0x003a10], + }, + BigNum { + limbs: [0xbf7472dae4da3860bf9e6bf6e31812, 0xb2cbafa33fb884780e7c68542c3f12, 0x006bd1], + }, + BigNum { + limbs: [0xfe2f90251981c69f406193091ce7ef, 0xf48779fa3d8faec1c98ba14dabc640, 0x00081b], + }, + BigNum { + limbs: [0xdd1b58249906be9ff079ce58af3199, 0xcedb6916a28c6ca682e24066db3c86, 0x001c77], + }, + BigNum { + limbs: [0xe088aadb655540600f8630a750ce68, 0xd877c086dabbc6935525c93afcc8cc, 0x005775], + }, + BigNum { + limbs: [0xb2c473d5eff1b216b4e9b27e7dd10b, 0x04f3b5c0b97878d28972a2a650511c, 0x0052f6], + }, + BigNum { + limbs: [0x0adf8f2a0e6a4ce94b164c81822ef6, 0xa25f73dcc3cfba674e9566fb87b437, 0x0020f7], + }, + BigNum { + limbs: [0x8ad7d4ab3b17b51f1f8779e781781b, 0x9112fa9f6cf5817199711eebb68441, 0x00416b], + }, + BigNum { + limbs: [0x32cc2e54c34449e0e07885187e87e6, 0x16402efe1052b1c83e96eab6218112, 0x003282], + }, + BigNum { + limbs: [0x388900a081efcebb6ed1c6d5c49f1c, 0xb4fd14ec51aeca9da4521c768d51ec, 0x001d1d], + }, + BigNum { + limbs: [0x851b025f7c6c3044912e382a3b60e5, 0xf25614b12b99689c33b5ed2b4ab367, 0x0056cf], + }, + BigNum { + limbs: [0x7bc9af0716769144464acf1f36c0d2, 0xf594e8c1b0eaeb8fc60143a855ad12, 0x006cdf], + }, + BigNum { + limbs: [0x41da53f8e7e56dbbb9b52fe0c93f2f, 0xb1be40dbcc5d47aa1206c5f9825841, 0x00070d], + }, + BigNum { + limbs: [0x9c31869ce1406981ccf144abd15da6, 0x3ce0bc31b687d449f891cf11c7f71e, 0x0032a7], + }, + BigNum { + limbs: [0x21727c631d1b957e330eba542ea25b, 0x6a726d6bc6c05eefdf763a90100e35, 0x004146], + }, + BigNum { + limbs: [0x3287e1eea50550f6cff67feb0214a3, 0x2edb568a00aaae9ef31c7368529f7b, 0x001469], + }, + BigNum { + limbs: [0x8b1c21115956ae0930097f14fdeb5e, 0x7877d3137c9d849ae4eb96398565d8, 0x005f84], + }, + BigNum { + limbs: [0x1765e37219c59a01744eaf22f61cd5, 0xa5ee072d800a1ddf4a71f83fdd1ad2, 0x005ac1], + }, + BigNum { + limbs: [0xa63e1f8de49664fe8bb14fdd09e32c, 0x0165226ffd3e155a8d961161faea81, 0x00192c], + }, + BigNum { + limbs: [0x9cafd3f14593be08db6cfdab4f5cbc, 0x28b7d9ee0088d8fd5273b9e4c23a8a, 0x0057b4], + }, + BigNum { + limbs: [0x20f42f0eb8c840f724930154b0a345, 0x7e9b4faf7cbf5a3c85944fbd15cac9, 0x001c39], + }, + BigNum { + limbs: [0x1d9eb5efde33ed0116fc035b9ef1e4, 0xbde86d834a067c0302160fb86d4f84, 0x00151e], + }, + BigNum { + limbs: [0xa0054d10202811fee903fba4610e1d, 0xe96abc1a3341b736d5f1f9e96ab5cf, 0x005ece], + }, + BigNum { + limbs: [0x6855f02b9c14d37b254b4c16aecf49, 0xebabeb3d7ef48c4988b6f7e98663fa, 0x0034ca], + }, + BigNum { + limbs: [0x554e12d462472b84dab4b2e95130b8, 0xbba73e5ffe53a6f04f5111b851a159, 0x003f22], + }, + BigNum { + limbs: [0x018d3725a347a231aef389d1650159, 0xe15e3ad0ea849dd9032a8990ebcab4, 0x00055b], + }, + BigNum { + limbs: [0xbc16cbda5b145cce510c752e9afea8, 0xc5f4eecc92c39560d4dd8010ec3a9f, 0x006e91], + }, + BigNum { + limbs: [0x291cf291adb45adf4f59597e92099f, 0x5f789f1b1294ee932d062fe4dad38d, 0x0016a6], + }, + BigNum { + limbs: [0x9487106e50a7a420b0a6a5816df662, 0x47da8a826ab344a6ab01d9bcfd31c6, 0x005d47], + }, + BigNum { + limbs: [0x6c7c3031e114547e10569404305b4e, 0x0bfd1bdf8a97e9ebe9b3a7f47018b5, 0x005d66], + }, + BigNum { + limbs: [0x5127d2ce1d47aa81efa96afbcfa4b3, 0x9b560dbdf2b0494dee5461ad67ec9e, 0x001687], + }, + BigNum { + limbs: [0xd91b48dadb210c247b1a81979f35c0, 0x6ac519183e52453eabbc8a1e13a637, 0x0065d5], + }, + BigNum { + limbs: [0xe488ba25233af2db84e57d6860ca41, 0x3c8e10853ef5edfb2c4b7f83c45f1b, 0x000e18], + }, + BigNum { + limbs: [0xf9c0f86360276418f827bbe6225400, 0xde0c2c3ab91f997809bf4d6d1952fa, 0x0026db], + }, + BigNum { + limbs: [0xc3e30a9c9e349ae707d84319ddac01, 0xc946fd62c42899c1ce48bc34beb258, 0x004d11], + }, + BigNum { + limbs: [0x80d9b39a09327511be38f00fe0e15b, 0x0ed0b718d075007221b4e63392be47, 0x006b81], + }, + BigNum { + limbs: [0x3cca4f65f52989ee41c70ef01f1ea6, 0x98827284acd332c7b653236e45470c, 0x00086c], + }, + BigNum { + limbs: [0x37d5f8a16c4f0f051e1aa4af01a637, 0x04ef549725e3a992bf6d27f26ad9a0, 0x006706], + }, + BigNum { + limbs: [0x85ce0a5e920ceffae1e55a50fe59ca, 0xa263d506576489a7189ae1af6d2bb3, 0x000ce7], + }, + BigNum { + limbs: [0xd3148a4e36e3f07250f3cf33f08243, 0x11b3253731a2f1970b62d2eeb13eaf, 0x001c8e], + }, + BigNum { + limbs: [0xea8f78b1c7780e8daf0c2fcc0f7dbe, 0x95a004664ba541a2cca536b326c6a3, 0x00575f], + }, + BigNum { + limbs: [0xd921850e3e933c628e568582ec954a, 0x63d8ead24230b1313472e590e57dc9, 0x0010ec], + }, + BigNum { + limbs: [0xe4827df1bfc8c29d71a9797d136ab7, 0x437a3ecb3b178208a3952410f28789, 0x006301], + }, + BigNum { + limbs: [0xca58916c4689cf7045743933f004c4, 0x0c8b650b839487fbfdffef881252a8, 0x0025e5], + }, + BigNum { + limbs: [0xf34b7193b7d22f8fba8bc5cc0ffb3d, 0x9ac7c491f9b3ab3dda081a19c5b2aa, 0x004e08], + }, + BigNum { + limbs: [0x98a02aabd7ff53948a74e7d72a06cd, 0x3cd150debfd777dd0e7b4cd77e3590, 0x006129], + }, + BigNum { + limbs: [0x2503d854265cab6b758b1728d5f934, 0x6a81d8bebd70bb5cc98cbcca59cfc3, 0x0012c4], + }, + BigNum { + limbs: [0x8d3c5d8e2ae3c2772ae3260559361e, 0x29d913bae95cd300eb8ed538a67baf, 0x006233], + }, + BigNum { + limbs: [0x3067a571d3783c88d51cd8faa6c9e3, 0x7d7a15e293eb6038ec7934693189a4, 0x0011ba], + }, + BigNum { + limbs: [0x7cb9e132d2958e4a821d18d001905b, 0x4d1e9a0e31c08c8b929e83caa601f1, 0x0042c1], + }, + BigNum { + limbs: [0x40ea21cd2bc670b57de2e62ffe6fa6, 0x5a348f8f4b87a6ae456985d7320362, 0x00312c], + }, + BigNum { + limbs: [0xb6a6109f87dc09a945ddfd3194d6d4, 0x6a5b221a98193db17c13a115ad244a, 0x006b90], + }, + BigNum { + limbs: [0x06fdf260767ff556ba2201ce6b292d, 0x3cf80782e52ef5885bf4688c2ae109, 0x00085d], + }, + BigNum { + limbs: [0xb409a53b4e735b3e20998093f034d1, 0x4132904aebad93d405cac07f33f025, 0x002dcc], + }, + BigNum { + limbs: [0x099a5dc4afe8a3c1df667e6c0fcb30, 0x66209952919a9f65d23d4922a4152e, 0x004621], + }, + BigNum { + limbs: [0x347967c3bc6e57d128b5e565be28ca, 0xd7c469a307201e75fc005a4b76b707, 0x0040d8], + }, + BigNum { + limbs: [0x892a9b3c41eda72ed74a199a41d737, 0xcf8ebffa762814c3dc07af56614e4c, 0x003314], + }, + BigNum { + limbs: [0xe64499b0d7caec0b00709d16ad9a83, 0xb54c8d72e98d795445bdfc60240f61, 0x00365f], + }, + BigNum { + limbs: [0xd75f694f269112f4ff8f61e952657e, 0xf2069c2a93bab9e5924a0d41b3f5f1, 0x003d8d], + }, + BigNum { + limbs: [0xd7a3987f769bcdcca9e87f5a7f1839, 0x28c04a0ebb7cef135ae7b8e3362098, 0x000aaf], + }, + BigNum { + limbs: [0xe6006a8087c0313356177fa580e7c8, 0x7e92df8ec1cb44267d2050bea1e4ba, 0x00693e], + }, + BigNum { + limbs: [0x46526f56e933837b9a7281e045bece, 0xca3c7024fc860c906c9a837e1ef6c9, 0x0051c3], + }, + BigNum { + limbs: [0x775193a915287b84658d7d1fba4133, 0xdd16b97880c226a96b6d8623b90e8a, 0x002229], + }, + BigNum { + limbs: [0x7bf2539257c17e7aad249861212753, 0x694837b9391d085fa60b9f017e7069, 0x0036a0], + }, + BigNum { + limbs: [0x41b1af6da69a808552db669eded8ae, 0x3e0af1e4442b2ada31fc6aa05994ea, 0x003d4d], + }, + BigNum { + limbs: [0x08ab2a2ad21968eec3c5de94bad69d, 0xc186cf00b349406509fe76f63710de, 0x0054c8], + }, + BigNum { + limbs: [0xb4f8d8d52c4296113c3a206b452964, 0xe5cc5a9cc9fef2d4ce0992aba0f475, 0x001f24], + }, + BigNum { + limbs: [0x944f00370ccf4f13fb91c643fb2d66, 0x95a692611ba92c8972a756f96cb36c, 0x003bbe], + }, + BigNum { + limbs: [0x295502c8f18cafec046e38bc04d29b, 0x11ac973c619f06b06560b2a86b51e7, 0x00382f], + }, + BigNum { + limbs: [0x272c6068d63114246a617ab5b1d7c1, 0xc9ed81babb1d1bd763ca4d6bdfd295, 0x005026], + }, + BigNum { + limbs: [0x9677a297282aeadb959e844a4e2840, 0xdd65a7e2c22b1762743dbc35f832be, 0x0023c6], + }, + BigNum { + limbs: [0x951e797897dba86fdf5cf1dc0d5e2d, 0xeff498b8905fcb05b3a6dd0acdcfa0, 0x00328e], + }, + BigNum { + limbs: [0x288589876680569020a30d23f2a1d4, 0xb75e90e4ece8683424612c970a35b3, 0x00415e], + }, + BigNum { + limbs: [0x6c51f4dd49bc1edfaec8846128af8c, 0xec951e59e820a34667352ae9d5dc49, 0x00565e], + }, + BigNum { + limbs: [0x51520e22b49fe02051377a9ed75075, 0xbabe0b4395278ff370d2deb802290a, 0x001d8e], + }, + BigNum { + limbs: [0x564a7da1b902e56caf3d28aac9a3c4, 0xb58e63be683db556ce006a3e0689cf, 0x0032f3], + }, + BigNum { + limbs: [0x6759855e4559199350c2d655365c3d, 0xf1c4c5df150a7de30a079f63d17b84, 0x0040f9], + }, + BigNum { + limbs: [0xc813f4bdbc74d2b530d23b962f2a33, 0xdc158b69f2a11da67680a3c4d0af46, 0x004500], + }, + BigNum { + limbs: [0xf5900e4241e72c4acf2dc369d0d5ce, 0xcb3d9e338aa71593618765dd07560c, 0x002eec], + }, + BigNum { + limbs: [0x5b041f5f9708988f8dae3158baa4f0, 0xfeb5f831eb4b4062055dbcce3169b1, 0x00257e], + }, + BigNum { + limbs: [0x629fe3a0675366707251cda7455b11, 0xa89d316b91fcf2d7d2aa4cd3a69ba2, 0x004e6e], + }, + BigNum { + limbs: [0xd87eea1587a122a77fcdb6e01fc805, 0xddb0d6f819ff9a970fd511c11cc817, 0x005111], + }, + BigNum { + limbs: [0xe52518ea76badc588032481fe037fc, 0xc9a252a5634898a2c832f7e0bb3d3b, 0x0022db], + }, + BigNum { + limbs: [0xcbb32eecd136f3bd36b91fbcc4d9b6, 0x5004d39bdc27c60b52058c6a5d992c, 0x0036d5], + }, + BigNum { + limbs: [0xf1f0d4132d250b42c946df433b264b, 0x574e5601a1206d2e86027d377a6c26, 0x003d18], + }, + BigNum { + limbs: [0x31775507138bf4d55710af424be9d8, 0xced1d9e77067fa868a71c6f77de16d, 0x006ab5], + }, + BigNum { + limbs: [0x8c2cadf8ead00a2aa8ef4fbdb41629, 0xd8814fb60ce038b34d9642aa5a23e6, 0x000937], + }, + BigNum { + limbs: [0x22be3aea24e089a73c2d0794e42fd6, 0x2e20bfe4966c7b20ecd45027f90dba, 0x002641], + }, + BigNum { + limbs: [0x9ae5c815d97b7558c3d2f76b1bd02b, 0x793269b8e6dbb818eb33b979def799, 0x004dac], + }, + BigNum { + limbs: [0x44e9ca24af3f23db594c625e551d2f, 0xaa708ba0d9387fc2ea6188ea73aeba, 0x005797], + }, + BigNum { + limbs: [0x78ba38db4f1cdb24a6b39ca1aae2d2, 0xfce29dfca40fb376eda680b7645699, 0x001c55], + }, + BigNum { + limbs: [0x1a389fbb63a04a5f354e65971de4d9, 0x55f4c40d039d403ad68fd45a57b606, 0x00422e], + }, + BigNum { + limbs: [0xa36b63449abbb4a0cab19968e21b28, 0x515e659079aaf2ff01783547804f4d, 0x0031bf], + }, + BigNum { + limbs: [0xb6cdeb0f626ed00651b1676d885461, 0x33380951bff039cc3eca9b8f12386f, 0x0033f6], + }, + BigNum { + limbs: [0x06d617f09bed2ef9ae4e979277aba0, 0x741b204bbd57f96d993d6e12c5cce4, 0x003ff7], + }, + BigNum { + limbs: [0xda6ff3d514cd34f981d24464db09e3, 0x09b0db598773f7ce184aa37ed63aa3, 0x0007f7], + }, + BigNum { + limbs: [0xe3340f2ae98eca067e2dba9b24f61e, 0x9da24e43f5d43b6bbfbd662301caaf, 0x006bf6], + }, + BigNum { + limbs: [0xd1f0ef63638923521de4c4c32db9ab, 0xbf2f35a097b959e1e80e2b91530396, 0x0021cc], + }, + BigNum { + limbs: [0xebb3139c9ad2dbade21b3a3cd24656, 0xe823f3fce58ed957eff9de108501bc, 0x005220], + }, + BigNum { + limbs: [0xd4938d032e32e3680c16c5a25aa156, 0x3cf7027be69cc607157d64fd6ad8aa, 0x007110], + }, + BigNum { + limbs: [0xe91075fcd0291b97f3e9395da55eab, 0x6a5c272196ab6d32c28aa4a46d2ca8, 0x0002dd], + }, + BigNum { + limbs: [0x49f11bcd26167e652046ce1ccb0b04, 0x0ab5a536a2bc4ae3bc899b9f299d3d, 0x006f24], + }, + BigNum { + limbs: [0x73b2e732d845809adfb930e334f4fd, 0x9c9d8466da8be8561b7e6e02ae6816, 0x0004c9], + }, + BigNum { + limbs: [0x86d07b2a764c768bf2bded30b49e55, 0x35c886192d15cdecb2b5626ba1982a, 0x001d5e], + }, + BigNum { + limbs: [0x36d387d5880f88740d4211cf4b61ac, 0x718aa3845032654d2552a736366d29, 0x00568f], + }, + BigNum { + limbs: [0x741dccc9d3b837864148660c5ff769, 0x674a258c9a5f5df0c9cf432b619672, 0x0044a4], + }, + BigNum { + limbs: [0x498636362aa3c779beb798f3a00898, 0x40090410e2e8d5490e38c676766ee1, 0x002f49], + }, + BigNum { + limbs: [0xf349c07945e5e0edb443dca4bddafd, 0xb2d557f9bc8f70459aa181f5b2c711, 0x00091a], + }, + BigNum { + limbs: [0xca5a4286b8761e124bbc225b422504, 0xf47dd1a3c0b8c2f43d6687ac253e41, 0x006ad2], + }, + BigNum { + limbs: [0x00d055d2a9b0bc6d8a5054451ad0e3, 0x34fba2e3d54058c59b99b8084fe171, 0x007059], + }, + BigNum { + limbs: [0xbcd3ad2d54ab429275afaabae52f1e, 0x725786b9a807da743c6e51998823e2, 0x000394], + }, + BigNum { + limbs: [0xdf38bbada9907b5c19b4d0ea2cf552, 0xe3137f39dc7cc1b70fdd68b0c23c3a, 0x0064a0], + }, + BigNum { + limbs: [0xde6b475254cb83a3e64b2e15d30aaf, 0xc43faa63a0cb7182c82aa0f115c918, 0x000f4c], + }, + BigNum { + limbs: [0xf33e0433d82ab9c8eb3ce41f9b3865, 0x856912a85c660aad656ffeb6c2bf63, 0x006c1f], + }, + BigNum { + limbs: [0xca65fecc2631453714c31ae064c79c, 0x21ea16f520e2288c72980aeb1545ef, 0x0007ce], + }, + BigNum { + limbs: [0xa761ed7f56302d96809abbf18276db, 0xe1596b71f9bc589a263dde7e697951, 0x005505], + }, + BigNum { + limbs: [0x16421580a82bd1697f65430e7d8926, 0xc5f9be2b838bda9fb1ca2b236e8c02, 0x001ee7], + }, + BigNum { + limbs: [0x4999895b894e7b3bcce44cd25431fe, 0x099c42c3c3a0f3e1f8c910f610b39b, 0x00349e], + }, + BigNum { + limbs: [0x740a79a4750d83c4331bb22dabce03, 0x9db6e6d9b9a73f57df3ef8abc751b8, 0x003f4f], + }, + BigNum { + limbs: [0xef365d8f564d8665d97d20da8a4880, 0x019e35705d3df95a130822cd786187, 0x005d09], + }, + BigNum { + limbs: [0xce6da570a80e789a2682de2575b781, 0xa5b4f42d200a39dfc4ffe6d45fa3cb, 0x0016e4], + }, + BigNum { + limbs: [0xbc1a689171d2cf978fe23164f37571, 0xf0e9d4f0de132b3dd8b8c5ad4beab0, 0x0073cf], + }, + BigNum { + limbs: [0x01899a6e8c892f68701dcd9b0c8a90, 0xb66954ac9f3507fbff4f43f48c1aa3, 0x00001d], + }, + BigNum { + limbs: [0x3ffb8f77520ffff2a23b550a4ab2db, 0x0b24e9dfe12818744d82593f6f34d6, 0x0057cf], + }, + BigNum { + limbs: [0x7da87388ac4bff0d5dc4a9f5b54d26, 0x9c2e3fbd9c201ac58a85b06268d07d, 0x001c1e], + }, + BigNum { + limbs: [0x997826bfc8ad389e25e3fe6cef99eb, 0x78749cc708a949a477553bc2f4fc33, 0x000ab3], + }, + BigNum { + limbs: [0x242bdc4035aec661da1c0093106616, 0x2ede8cd6749ee99560b2cddee30920, 0x00693a], + }, + BigNum { + limbs: [0x586184211e1e67d4f1c280878dd156, 0xde92b22d5da44740e70657943af37e, 0x0059db], + }, + BigNum { + limbs: [0x65427edee03d972b0e3d7e78722eab, 0xc8c077701fa3ebf8f101b20d9d11d5, 0x001a11], + }, + BigNum { + limbs: [0xcda463a8d1c74bd10369bd08096f25, 0xee4c927ff242f2211ffa4190c7122f, 0x0005f6], + }, + BigNum { + limbs: [0xefff9f572c94b32efc9641f7f690dc, 0xb906971d8b054118b80dc81110f323, 0x006df6], + }, + BigNum { + limbs: [0x064b923b363ae2563bf5faa91ed24b, 0xba6d9970e394849ed4fd6170ed5c48, 0x0061b0], + }, + BigNum { + limbs: [0xb75870c4c8211ca9c40a0456e12db6, 0xece5902c99b3ae9b030aa830eaa90b, 0x00123c], + }, + BigNum { + limbs: [0xac287e54e95f83e124da9b67220f6a, 0x9a86ccaef3e24ca64c8224be01c20b, 0x005fe6], + }, + BigNum { + limbs: [0x117b84ab14fc7b1edb256398ddf097, 0x0ccc5cee8965e6938b85e4e3d64348, 0x001407], + }, + BigNum { + limbs: [0xbdc8bec4ca55090a1159e33226fddc, 0x01452a43350e9ccd0a8ad0d9ab6b1b, 0x004ded], + }, + BigNum { + limbs: [0xffdb443b3406f5f5eea61bcdd90225, 0xa60dff5a4839966ccd7d38c82c9a37, 0x002600], + }, + BigNum { + limbs: [0x5e1c54792bce639cc1766f87d12b83, 0xfc8a65c7f929a997bfdd4f35e3ed22, 0x003339], + }, + BigNum { + limbs: [0x5f87ae86d28d9b633e898f782ed47e, 0xaac8c3d5841e89a2182aba6bf41831, 0x0040b3], + }, + BigNum { + limbs: [0xa43adf717e6f5462df3334e6f50603, 0x78efac810f398ebea89d164fda7eb5, 0x00194a], + }, + BigNum { + limbs: [0x1969238e7fecaa9d20ccca190af9fe, 0x2e637d1c6e0ea47b2f6af351fd869e, 0x005aa3], + }, + BigNum { + limbs: [0xc24e588eeaf243b62ac02fe31ee32e, 0x8a30a21a1e10ea55f945e2ab111301, 0x004765], + }, + BigNum { + limbs: [0xfb55aa711369bb49d53fcf1ce11cd3, 0x1d2287835f3748e3dec226f6c6f251, 0x002c88], + }, + BigNum { + limbs: [0xc6c68d42f47a67560dced4fdd1fa58, 0x7540ddef6d67d1f5d35735e4bd5e3b, 0x002f01], + }, + BigNum { + limbs: [0xf6dd75bd09e197a9f2312a022e05a9, 0x32124bae0fe0614404b0d3bd1aa717, 0x0044ec], + }, + BigNum { + limbs: [0xca9e3b165ffd945b504b3bb34e64db, 0x5e2e8b0cfbfa61bd24d49a89618b24, 0x0012ad], + }, + BigNum { + limbs: [0xf305c7e99e5e6aa4afb4c34cb19b26, 0x49249e90814dd17cb3336f18767a2e, 0x006140], + }, + BigNum { + limbs: [0x96f2f1c97a5e1a3a3e804ffc87763e, 0xbb98eb7f7419a70793f2a8652ad8ed, 0x002c07], + }, + BigNum { + limbs: [0x26b1113683fde4c5c17faf037889c3, 0xebba3e1e092e8c324415613cad2c66, 0x0047e5], + }, + BigNum { + limbs: [0x140327f4c971e021cd8ea769a094a8, 0xaaff762d242c005f3353a3f16a497c, 0x002959], + }, + BigNum { + limbs: [0xa9a0db0b34ea1ede327157965f6b59, 0xfc53b370591c32daa4b465b06dbbd7, 0x004a93], + }, + BigNum { + limbs: [0x0f71e5bc71e446fdc1747a63ca7ac3, 0x9afc610afa905bd996a93f88b570c4, 0x002c32], + }, + BigNum { + limbs: [0xae321d438c77b8023e8b849c35853e, 0x0c56c89282b7d760415eca1922948f, 0x0047bb], + }, + BigNum { + limbs: [0xf4cfbb63e2c54e74aa45a97409d198, 0x989b5812a14b95b3455dc1fc4ccd45, 0x00472e], + }, + BigNum { + limbs: [0xc8d4479c1b96b08b55ba558bf62e69, 0x0eb7d18adbfc9d8692aa47a58b380d, 0x002cbf], + }, + BigNum { + limbs: [0x93cc71925057864dbe0415c94990ca, 0xc088a84a78536f2265c88b14e72ab3, 0x0036e4], + }, + BigNum { + limbs: [0x29d7916dae0478b241fbe936b66f37, 0xe6ca815304f4c417723f7e8cf0daa0, 0x003d08], + }, + BigNum { + limbs: [0x84298ae8c5a849168f04747c6dd5f6, 0xafa0841de6392d45266b5073cdd55a, 0x002780], + }, + BigNum { + limbs: [0x397a781738b3b5e970fb8a83922a0b, 0xf7b2a57f970f05f4b19cb92e0a2ff9, 0x004c6c], + }, + BigNum { + limbs: [0x3e0b597663520df89d77764e3c697d, 0x98e3d7cffb2883fe05d75d187fb448, 0x000e2d], + }, + BigNum { + limbs: [0x7f98a9899b09f107628888b1c39684, 0x0e6f51cd821faf3bd230ac8958510b, 0x0065c0], + }, + BigNum { + limbs: [0x19ce40ca252a482fa108ef1d9fd883, 0xa5be459b5d08fae658577ea875bd85, 0x0053b2], + }, + BigNum { + limbs: [0xa3d5c235d931b6d05ef70fe260277e, 0x0194e402203f38537fb08af96247ce, 0x00203b], + }, + BigNum { + limbs: [0x8e834b9d101cc30553818f08ec3792, 0x732ccb933eb66f82430836ca2cb22d, 0x002a8a], + }, + BigNum { + limbs: [0x2f20b762ee3f3bfaac7e6ff713c86f, 0x34265e0a3e91c3b794ffd2d7ab5326, 0x004963], + }, + BigNum { + limbs: [0x578c6d4d68ed7dca98bd685bd2aadb, 0xcf54a97840df560670b0af632fe115, 0x0002a8], + }, + BigNum { + limbs: [0x661795b2956e8135674296a42d5526, 0xd7fe80253c68dd3367575a3ea8243e, 0x007144], + }, + BigNum { + limbs: [0x34d2b570c678cbc0cb94250c958ba6, 0x1552c8b68e2f38b6e13590d0570de6, 0x0025a8], + }, + BigNum { + limbs: [0x88d14d8f37e3333f346bd9f36a745b, 0x920060e6ef18fa82f6d278d180f76d, 0x004e45], + }, + BigNum { + limbs: [0x1184a5a8c9d0c61c94431cded59c35, 0x120f1f2bdbbd7a988914f8099e95c1, 0x00607e], + }, + BigNum { + limbs: [0xac1f5d57348b38e36bbce2212a63cc, 0x95440a71a18ab8a14ef31198396f92, 0x00136f], + }, + BigNum { + limbs: [0xd6fefe5e71e4af3ce5516b5b587650, 0x34b9a353074fe5db498087c0b30bec, 0x002f22], + }, + BigNum { + limbs: [0xe6a504a18c774fc31aae93a4a789b1, 0x7299864a75f84d5e8e8781e124f966, 0x0044cb], + }, + BigNum { + limbs: [0x7afe2f33b2d29c01e3f791190a25d7, 0x177195db06ee6206cad3f8f8edd20f, 0x000ffe], + }, + BigNum { + limbs: [0x42a5d3cc4b8962fe1c086de6f5da2a, 0x8fe193c27659d1330d3410a8ea3344, 0x0063ef], + }, + BigNum { + limbs: [0x5406346f9e88c9af3e5868ce1e4fa4, 0xf3250b114352a07bbae29228324286, 0x0037a1], + }, + BigNum { + limbs: [0x699dce905fd33550c1a79631e1b05d, 0xb42e1e8c39f592be1d257779a5c2cd, 0x003c4b], + }, + BigNum { + limbs: [0x32052ccde9b4a9e6681bf64684319d, 0x21267ce32c4122aea787e30b9f31d8, 0x005561], + }, + BigNum { + limbs: [0x8b9ed63214a7551997e408b97bce64, 0x862cacba5107108b3080269638d37b, 0x001e8c], + }, + BigNum { + limbs: [0x7297ee3889650ac76cad1646b4761b, 0x3c8ebc9a02da5d2bc85bcb435da336, 0x00018a], + }, + BigNum { + limbs: [0x4b0c14c774f6f4389352e8b94b89e6, 0x6ac46d037a6dd60e0fac3e5e7a621d, 0x007263], + }, + BigNum { + limbs: [0x254665e6c64ce581eae2c4dce4c189, 0x28fa32bbdcdfe1800790e64116d4ae, 0x006d41], + }, + BigNum { + limbs: [0x985d9d19380f197e151d3a231b3e78, 0x7e58f6e1a06851b9d0772360c130a5, 0x0006ac], + }, + BigNum { + limbs: [0xf3441dca163541a496c81e00ff1276, 0xbde858c524939b5eade1d86f47824f, 0x00678d], + }, + BigNum { + limbs: [0xca5fe535e826bd5b6937e0ff00ed8b, 0xe96ad0d858b497db2a263132908303, 0x000c5f], + }, + BigNum { + limbs: [0xe51ebc10b57b63a5e9eab8152b4839, 0xee15d6617551bb90e37cb272360e41, 0x004f8c], + }, + BigNum { + limbs: [0xd88546ef48e09b5a161546ead4b7c8, 0xb93d533c07f677a8f48b572fa1f711, 0x002460], + }, + BigNum { + limbs: [0x22cebc18e0dfea53811fb238fd2814, 0x90a3cef9da73ce6a4f2099a0af14fb, 0x0021bb], + }, + BigNum { + limbs: [0x9ad546e71d7c14ac7ee04cc702d7ed, 0x16af5aa3a2d464cf88e7700128f058, 0x005232], + }, + BigNum { + limbs: [0xfa1af59c87e3c79575577ad3edf1cb, 0x27562b6a9a47cd994218dfd57859ef, 0x00061a], + }, + BigNum { + limbs: [0xc3890d637678376a8aa8842c120e36, 0x7ffcfe32e30065a095ef29cc5fab63, 0x006dd3], + }, + BigNum { + limbs: [0x82dfab906848c79c3c62b3f1e99da1, 0x28bbc7ee1bd43b6c686683ad41bf33, 0x0012d8], + }, + BigNum { + limbs: [0x3ac4576f96133763c39d4b0e166260, 0x7e9761af6173f7cd6fa185f4964620, 0x006115], + }, + BigNum { + limbs: [0x55abba30f4c41cd573721eba4465da, 0x1de7a6c125e8339bd6dd4c22a7b59c, 0x0014b0], + }, + BigNum { + limbs: [0x67f848cf0997e22a8c8de045bb9a27, 0x896b82dc575fff9e012abd7f304fb7, 0x005f3d], + }, + BigNum { + limbs: [0x2d52cdfd0b98891cc466c414f63fc0, 0x2c10967cc466405960131e7988212b, 0x00237a], + }, + BigNum { + limbs: [0x90513502f2c375e33b993aeb09c041, 0x7b429320b8e1f2e077f4eb284fe428, 0x005073], + }, + BigNum { + limbs: [0x1c1e85d06fe60186a9252bd472f5c3, 0xa8ec47f5c95bf245914235998e63d5, 0x003282], + }, + BigNum { + limbs: [0xa1857d2f8e75fd7956dad32b8d0a3e, 0xfe66e1a7b3ec40f446c5d40849a17e, 0x00416a], + }, + BigNum { + limbs: [0x020c89ecc0849375daa8809864b9c9, 0xcb5137860e4d96b953a9110b8bc722, 0x0047e3], + }, + BigNum { + limbs: [0xbb9779133dd76b8a25577e679b4638, 0xdc01f2176efa9c80845ef8964c3e31, 0x002c09], + }, + BigNum { + limbs: [0xdc61fcccb02913fc394ee9057469b2, 0x555589c733ab00def2f546ab11bdb3, 0x006841], + }, + BigNum { + limbs: [0xe14206334e32eb03c6b115fa8b964f, 0x51fd9fd6499d325ae512c2f6c6479f, 0x000bac], + }, + BigNum { + limbs: [0x726e23ee95bde2252d6661602d7435, 0x26d40fbaeeb2b594020b8675359421, 0x0060ae], + }, + BigNum { + limbs: [0x4b35df11689e1cdad2999d9fd28bcc, 0x807f19e28e957da5d5fc832ca27132, 0x00133f], + }, + BigNum { + limbs: [0x9a0662c6b842dae4bdeee08a005d23, 0x5a11d5a09148a256aa11611dc01ba3, 0x001d34], + }, + BigNum { + limbs: [0x239da0394619241b42111e75ffa2de, 0x4d4153fcebff90e32df6a88417e9b0, 0x0056b9], + }, + BigNum { + limbs: [0xac53ac97accee001ed731a05753b82, 0x2e90157bd61796b1028e1af5170f0b, 0x000a2c], + }, + BigNum { + limbs: [0x11505668518d1efe128ce4fa8ac47f, 0x78c31421a7309c88d579eeacc0f648, 0x0069c1], + }, + BigNum { + limbs: [0xb6f5ee2e46bfbbca14e7c13bdd9bf7, 0x1801a4e66be3bb20514a762a99af1c, 0x00441c], + }, + BigNum { + limbs: [0x06ae14d1b79c4335eb183dc422640a, 0x8f5184b71164781986bd93773e5637, 0x002fd1], + }, + BigNum { + limbs: [0x439ad148d806a7ccdf8183b63ed567, 0x8c89b8e828873394d984953e9c4dc3, 0x0010e4], + }, + BigNum { + limbs: [0x7a0931b726555733207e7b49c12a9a, 0x1ac970b554c0ffa4fe8374633bb790, 0x006309], + }, + BigNum { + limbs: [0x3e07bd495b317f1e77078e4a922207, 0x5c0d57961afe92b25ed1032a82f445, 0x0041c9], + }, + BigNum { + limbs: [0x7f9c45b6a32a7fe188f870b56dddfa, 0x4b45d2076249a0877937067755110e, 0x003224], + }, + BigNum { + limbs: [0x3ab0758cbe037ad272322f2e9b1d0f, 0xce3c4a3cd9a490a6c43e4346125662, 0x000ae3], + }, + BigNum { + limbs: [0x82f38d734058842d8dcdcfd164e2f2, 0xd916df60a3a3a29313c9c65bc5aef1, 0x006909], + }, + BigNum { + limbs: [0x466a99fb5f7bef1e6017af6230182b, 0x7eb0960434809577da230e2c88260c, 0x0003df], + }, + BigNum { + limbs: [0x773969049ee00fe19fe84f9dcfe7d6, 0x28a2939948c79dc1fde4fb754fdf47, 0x00700e], + }, + BigNum { + limbs: [0x6ed968e5c09240096c2d089156eaed, 0x5fefa464baa254d980d9d59b1f65bd, 0x005bb3], + }, + BigNum { + limbs: [0x4eca9a1a3dc9bef693d2f66ea91514, 0x47638538c2a5de60572e3406b89f96, 0x00183a], + }, + BigNum { + limbs: [0x999c758ec8080ab8e9e36ceea971b7, 0x146d0722977916eed0bc549904aba0, 0x002254], + }, + BigNum { + limbs: [0x24078d713653f447161c9211568e4a, 0x92e6227ae5cf1c4b074bb508d359b3, 0x005199], + }, + BigNum { + limbs: [0x4d72814a2d66d08895e916b75c0586, 0x130e3be6e721dff06413633821356e, 0x0023c2], + }, + BigNum { + limbs: [0x703181b5d0f52e776a16e848a3fa7b, 0x9444edb69626534973f4a669b6cfe5, 0x00502b], + }, + BigNum { + limbs: [0x4f3dcab708c5c68b54a44d5eb5f239, 0xafacdf20a18221d002ebd6d577c87d, 0x004b6e], + }, + BigNum { + limbs: [0x6e663848f5963874ab5bb1a14a0dc8, 0xf7a64a7cdbc61169d51c32cc603cd6, 0x00287e], + }, + BigNum { + limbs: [0x3cd85a008ad190414dbdcb15d0dac0, 0x18c3495bb2a9b4c1265d710a862f5f, 0x006749], + }, + BigNum { + limbs: [0x80cba8ff738a6ebeb24233ea2f2541, 0x8e8fe041ca9e7e78b1aa989751d5f4, 0x000ca4], + }, + BigNum { + limbs: [0xfc5bbb5fe6d85bf135c083512c9fe8, 0xfacd0f29438dc279c735326262a715, 0x00443c], + }, + BigNum { + limbs: [0xc14847a01783a30eca3f7baed36019, 0xac861a7439ba70c010d2d73f755e3d, 0x002fb0], + }, + BigNum { + limbs: [0xddd69a355f5807ccd7ce20289e7057, 0xc73dd7b7381292525534a336790988, 0x0021bd], + }, + BigNum { + limbs: [0xdfcd68ca9f03f7332831ded7618faa, 0xe01551e64535a0e782d3666b5efbca, 0x00522f], + }, + BigNum { + limbs: [0x2e72025de4a0c712a4159d38ee7edf, 0x93133a3a6b7193b0142074a447361e, 0x00210f], + }, + BigNum { + limbs: [0x8f3200a219bb37ed5bea61c7118122, 0x143fef6311d69f89c3e794fd90cf35, 0x0052de], + }, + BigNum { + limbs: [0x668bb61eabbf26efe8b7c5f4cdbb8a, 0x8055f6f56ceef2a6ba04234203090d, 0x005169], + }, + BigNum { + limbs: [0x57184ce1529cd8101748390b324477, 0x26fd32a8105940931e03e65fd4fc46, 0x002284], + }, + BigNum { + limbs: [0x151dff81d368d532dbe75201147c74, 0xf563dca47733442fccebb3b272904a, 0x0015aa], + }, + BigNum { + limbs: [0xa886037e2af329cd2418acfeeb838d, 0xb1ef4cf90614ef0a0b1c55ef657509, 0x005e42], + }, + BigNum { + limbs: [0x0a8dbfebab4f06748e13419b319c10, 0x1d7727add9dd135d2ad0956ba98d78, 0x00528e], + }, + BigNum { + limbs: [0xb3164314530cf88b71ecbd64ce63f1, 0x89dc01efa36b1fdcad3774362e77db, 0x00215f], + }, + BigNum { + limbs: [0x9f0e6768335b1d2b9a21f44b8839df, 0xcffa24a5ed86e22b586a2e37e5b16a, 0x0039b5], + }, + BigNum { + limbs: [0x1e959b97cb00e1d465de0ab477c622, 0xd75904f78fc1510e7f9ddb69f253e9, 0x003a37], + }, + BigNum { + limbs: [0xe12f618a02f52636e22842492675f1, 0x1578dddc06904031a5b1f1d0e35a2d, 0x00465a], + }, + BigNum { + limbs: [0xdc74a175fb66d8c91dd7bcb6d98a10, 0x91da4bc176b7f308325617d0f4ab25, 0x002d93], + }, + BigNum { + limbs: [0xfc7593aacae8f0048c998c718b18fa, 0xb132aace436810593938764cd2873c, 0x005e9f], + }, + BigNum { + limbs: [0xc12e6f5533730efb7366728e74e707, 0xf6207ecf39e022e09ecf9355057e16, 0x00154d], + }, + BigNum { + limbs: [0x855c98f03e4ec9bbc878488ea71ba8, 0x4f4d80e421236231f3707b9d46a099, 0x005765], + }, + BigNum { + limbs: [0x38476a0fc00d35443787b67158e459, 0x5805a8b95c24d107e4978e049164ba, 0x001c88], + }, + BigNum { + limbs: [0xa9e6457cbef76d1fccde66fc588d7d, 0x6964e2c2128178dec9a67d6bf69ab1, 0x004c6b], + }, + BigNum { + limbs: [0x13bdbd833f6491e033219803a77284, 0x3dee46db6ac6ba5b0e618c35e16aa2, 0x002782], + }, + BigNum { + limbs: [0x0ab900fdd04ba0c27a1a12d0f2c7b4, 0x958f86d2b38d13cebad18da8de97be, 0x004fe1], + }, + BigNum { + limbs: [0xb2eb02022e105e3d85e5ec2f0d384d, 0x11c3a2cac9bb1f6b1d367bf8f96d95, 0x00240c], + }, + BigNum { + limbs: [0xfec709676525a283ae887be3b065d2, 0x31dc646483ada7ec9b7504f5c08d9a, 0x004ea3], + }, + BigNum { + limbs: [0xbedcf99899365c7c5177831c4f9a2f, 0x7576c538f99a8b4d3c9304ac1777b8, 0x00254a], + }, + BigNum { + limbs: [0x6236400ce1a035463b81e35706dc93, 0x794174efafe9bbb1da00479695453e, 0x0008ab], + }, + BigNum { + limbs: [0x5b6dc2f31cbbc9b9c47e1ba8f9236e, 0x2e11b4adcd5e7787fe07c20b42c015, 0x006b42], + }, + BigNum { + limbs: [0xac3ff58faca4e3edadb1101621f8bf, 0x844c97b849b37e115e7879e5fe85de, 0x003d52], + }, + BigNum { + limbs: [0x11640d7051b71b12524eeee9de0742, 0x230691e53394b528798f8fbbd97f75, 0x00369b], + }, + BigNum { + limbs: [0x7c85bcff563e231e8623e352e51c35, 0xcdffedfad78d5fe87ca61ae9abc08f, 0x002b43], + }, + BigNum { + limbs: [0x411e4600a81ddbe179dc1bad1ae3cc, 0xd9533ba2a5bad3515b61eeb82c44c4, 0x0048a9], + }, + BigNum { + limbs: [0xa804027c23b9f95376802e91e05be8, 0xe9c4cef6cbefe6c9741d8956584aee, 0x001cdb], + }, + BigNum { + limbs: [0x15a00083daa205ac897fd06e1fa419, 0xbd8e5aa6b1584c7063ea804b7fba65, 0x005711], + }, + BigNum { + limbs: [0x0e0cd54bd4aa61826d2d37f94a447f, 0x63512d6507eff7e74e36ebb406ab4a, 0x0065c6], + }, + BigNum { + limbs: [0xaf972db429b19d7d92d2c706b5bb82, 0x4401fc3875583b5289d11dedd15a09, 0x000e27], + }, + BigNum { + limbs: [0x1d8f59d2e0d8f517d1f555defa4965, 0xce0a6cf41e04d1f37da3193dc2f7e1, 0x000e39], + }, + BigNum { + limbs: [0xa014a92d1d8309e82e0aa92105b69c, 0xd948bca95f4361465a64f064150d72, 0x0065b3], + }, + BigNum { + limbs: [0xe9debb01a73a7d2d2fd8f2b8879fa4, 0x9ddf450c9503f6d1e86fff13f87f5a, 0x0010af], + }, + BigNum { + limbs: [0xd3c547fe572181d2d0270c4778605d, 0x0973e490e8443c67ef980a8ddf85f8, 0x00633e], + }, + BigNum { + limbs: [0x82a869b076061adec6750f6279f487, 0xe06fd1d55ed610877582a2642dfdc9, 0x0052c8], + }, + BigNum { + limbs: [0x3afb994f8855e421398aef9d860b7a, 0xc6e357c81e7222b26285673daa078a, 0x002124], + }, + BigNum { + limbs: [0xcd0477f8b300e2e8072dcdffa22a4b, 0x0427dc1ed46b959d6213b9fb9ca34b, 0x006cfb], + }, + BigNum { + limbs: [0xf09f8b074b5b1c17f8d231005dd5b6, 0xa32b4d7ea8dc9d9c75f44fa63b6207, 0x0006f2], + }, + BigNum { + limbs: [0x6e9b05922fb4ca4db6496c5f476610, 0x7f60ea83e3914376d6422502433719, 0x004ee5], + }, + BigNum { + limbs: [0x4f08fd6dcea734b249b692a0b899f1, 0x27f23f1999b6efc301c5e49f94ce3a, 0x002508], + }, + BigNum { + limbs: [0xa62fc0089b634dbf2aac25d7d75fee, 0xdb944f0c588276cb7f8865b7d9ba3e, 0x0035ed], + }, + BigNum { + limbs: [0x177442f762f8b140d553d92828a013, 0xcbbeda9124c5bc6e587fa3e9fe4b15, 0x003dff], + }, + BigNum { + limbs: [0x98290aa8b6ad53f2043aa3f401dfdc, 0x09673fc03acedd09ac836e1ca7736a, 0x0053e1], + }, + BigNum { + limbs: [0x257af85747aeab0dfbc55b0bfe2025, 0x9debe9dd427956302b849b853091e9, 0x00200c], + }, + BigNum { + limbs: [0x647448c7b0afb7ec1c61775ab7abdd, 0x889ebec7d61b637217c82c971d9e4f, 0x005239], + }, + BigNum { + limbs: [0x592fba384dac4713e39e87a5485424, 0x1eb46ad5a72ccfc7c03fdd0aba6704, 0x0021b4], + }, + BigNum { + limbs: [0xfdccab18b6ef1df95145ce9d220f41, 0xae5fde2b4f5827052bda8626455524, 0x0033b2], + }, + BigNum { + limbs: [0xbfd757e7476ce106aeba3062ddf0c0, 0xf8f34b722df00c34ac2d837b92b02e, 0x00403a], + }, + BigNum { + limbs: [0x48364c6d02ded0006ae02ab74add69, 0x07e0704b0c97aead5c4e44e64375c3, 0x000c8d], + }, + BigNum { + limbs: [0x756db692fb7d2eff951fd448b52298, 0x9f72b95270b0848c7bb9c4bb948f90, 0x006760], + }, + BigNum { + limbs: [0x0fa82de7378c5647041bcb6bd46fcc, 0x5e373ec8ee1bbc8c8f5360d1f7b0e5, 0x00450a], + }, + BigNum { + limbs: [0xadfbd518c6cfa8b8fbe433942b9035, 0x491bead48f2c76ad48b4a8cfe0546e, 0x002ee3], + }, + BigNum { + limbs: [0xd7924989f5052ba483ec3b98206641, 0xa817449255ff6eb0398da5372b4151, 0x0008d0], + }, + BigNum { + limbs: [0xe611b9760956d35b7c13c367df99c0, 0xff3be50b2748c4899e7a646aacc401, 0x006b1c], + }, + BigNum { + limbs: [0xcaad5df72cd49bbe86414d32e186de, 0xdad728f81f15d7ed9ff23c94d4b3e1, 0x00493c], + }, + BigNum { + limbs: [0xf2f6a508d187634179beb1cd1e7923, 0xcc7c00a55e325b4c3815cd0d035171, 0x002ab0], + }, + BigNum { + limbs: [0x1247f31227b7d49e32a2c19d55f8d3, 0xded3eebc215ddeea461ee0cd7d94d6, 0x001f0e], + }, + BigNum { + limbs: [0xab5c0fedd6a42a61cd5d3d62aa072e, 0xc87f3ae15bea544f91e928d45a707d, 0x0054de], + }, + BigNum { + limbs: [0xdc89075d67ed7e317050f884ca576b, 0x281b92bda8a01a3a778c086ff4e1ad, 0x0001ed], + }, + BigNum { + limbs: [0xe11afba2966e80ce8faf067b35a896, 0x7f3796dfd4a818ff607c0131e323a5, 0x007200], + }, + BigNum { + limbs: [0xcdb87cb712877e0bf60e7c63c2437b, 0x4efb2363ab2f1ff78cb0023480e8f9, 0x001a6f], + }, + BigNum { + limbs: [0xefeb8648ebd480f409f1829c3dbc86, 0x58580639d21913424b58076d571c59, 0x00597e], + }, + BigNum { + limbs: [0xd45c8361c9f7297117194176b34fcd, 0xabbd11933f13d0bd028d2df1d8d2ea, 0x00657c], + }, + BigNum { + limbs: [0xe9477f9e3464d58ee8e6bd894cb034, 0xfb96180a3e34627cd57adbafff3268, 0x000e70], + }, + BigNum { + limbs: [0xf77a7bafa8af3673a70628281b1030, 0x37b660a6007a671cd104321d3da423, 0x00523d], + }, + BigNum { + limbs: [0xc629875055acc88c58f9d6d7e4efd1, 0x6f9cc8f77ccdcc1d0703d7849a612f, 0x0021b0], + }, + BigNum { + limbs: [0xa5adf88739a7bd9d7f8fd7d5e17d4c, 0xa451b990fd38ff18af03ba072d922e, 0x0030ed], + }, + BigNum { + limbs: [0x17f60a78c4b441628070272a1e82b5, 0x0301700c800f342129044f9aaa7325, 0x004300], + }, + BigNum { + limbs: [0xd55f49d6b5a1fa4a715cef814e4239, 0x8cd22f924921ab164cf3cbcd563e6d, 0x005b3b], + }, + BigNum { + limbs: [0xe844b92948ba04b58ea30f7eb1bdc8, 0x1a80fa0b342688238b143dd481c6e5, 0x0018b2], + }, + BigNum { + limbs: [0xaa756712f2bc015611aad4215f6c1d, 0x446d71965b3a8e20c5aa738a332574, 0x001a1a], + }, + BigNum { + limbs: [0x132e9bed0b9ffda9ee552adea093e4, 0x62e5b807220da519125d9617a4dfdf, 0x0059d3], + }, + BigNum { + limbs: [0xdf1a3727fd721d20a3252151ac98a0, 0x0d63de7126601d7386b1d14b886090, 0x001c40], + }, + BigNum { + limbs: [0xde89cbd800e9e1df5cdaddae536761, 0x99ef4b2c56e815c6515638564fa4c2, 0x0057ad], + }, + BigNum { + limbs: [0xfb22b17b1b8fce193fef7af0333d31, 0x8d54f1ac8eda45244257bc7eed74d0, 0x001373], + }, + BigNum { + limbs: [0xc2815184e2cc30e6c010840fccc2d0, 0x19fe37f0ee6dee1595b04d22ea9082, 0x00607a], + }, + BigNum { + limbs: [0xd94eb86ff1ed3c7833cda901f237d1, 0x6cac58e7d4d227ece7306d1ad0f73b, 0x003446], + }, + BigNum { + limbs: [0xe4554a900c6ec287cc3255fe0dc830, 0x3aa6d0b5a8760b4cf0d79c87070e17, 0x003fa7], + }, + BigNum { + limbs: [0x0a0b6dc3344e9740aa98279de1d272, 0x396f0bbba2006c10dffbc6e2ccfd1f, 0x0043ce], + }, + BigNum { + limbs: [0xb398953cca0d67bf5567d7621e2d8f, 0x6de41de1db47c728f80c42bf0b0834, 0x00301f], + }, + BigNum { + limbs: [0x2774aacbd8e5410e990b7ea6099539, 0x0ff19575c66a5d823a24eadcf44034, 0x00013a], + }, + BigNum { + limbs: [0x962f58342576bdf166f48059f66ac8, 0x97619427b6ddd5b79de31ec4e3c51f, 0x0072b3], + }, + BigNum { + limbs: [0x98cfc228cdac64c0f4b12f26fbee10, 0x608230bf89f522f30a822df80cebab, 0x006bbe], + }, + BigNum { + limbs: [0x24d440d730af9a3f0b4ecfd90411f1, 0x46d0f8ddf3531046cd85dba9cb19a8, 0x00082f], + }, + BigNum { + limbs: [0xfcae5ba09e0c9e7936dad504dd20d8, 0xd14ad990c5d94abc61794fedbb7b37, 0x0004fd], + }, + BigNum { + limbs: [0xc0f5a75f604f6086c92529fb22df29, 0xd608500cb76ee87d768eb9b41c8a1b, 0x006eef], + }, + BigNum { + limbs: [0x2dd2cd0d439bf99df86a7b583e6a7a, 0x334ff56b12c0fe4d544102494ce813, 0x000313], + }, + BigNum { + limbs: [0x8fd135f2bac00562079583a7c19587, 0x740334326a8734ec83c707588b1d40, 0x0070da], + }, + BigNum { + limbs: [0x012acc92ab4930bd516cd62ba82664, 0xc77d512a5bc54b53c2020e1531be45, 0x0008b1], + }, + BigNum { + limbs: [0xbc79366d5312ce42ae9328d457d99d, 0xdfd5d8732182e7e61605fb8ca6470e, 0x006b3b], + }, + BigNum { + limbs: [0xa0896f1080c1eee49d3bc9f665878a, 0x46f8c3bf1cc0a4b9f13d221641f726, 0x0029aa], + }, + BigNum { + limbs: [0x1d1a93ef7d9a101b62c435099a7877, 0x605a65de60878e7fe6cae78b960e2d, 0x004a43], + }, + BigNum { + limbs: [0x53929cdf5d53f68046a0338d19eb21, 0x4ecf71c935ff0ddb58cba88e385eb4, 0x00701c], + }, + BigNum { + limbs: [0x6a116620a108087fb95fcb72e614e0, 0x5883b7d44749255e7f3c61139fa69f, 0x0003d1], + }, + BigNum { + limbs: [0x4d116daf42538b08c8845e74a76e3c, 0x3df169bd66227d167a1aa89fd1bf92, 0x006073], + }, + BigNum { + limbs: [0x70929550bc0873f7377ba08b5891c5, 0x6961bfe01725b6235ded61020645c1, 0x00137a], + }, + BigNum { + limbs: [0x7ec84bcbd1676791088fac0c4f9032, 0x2f32a44ea3b5e5353491392eb969f1, 0x004928], + }, + BigNum { + limbs: [0x3edbb7342cf4976ef77052f3b06fcf, 0x7820854ed9924e04a376d0731e9b62, 0x002ac5], + }, + BigNum { + limbs: [0x9fefa0239bcb3e8a28db7c68591369, 0xab965ee2dd62dc7f696be9aa0ec978, 0x0028e0], + }, + BigNum { + limbs: [0x1db462dc6290c075d7248297a6ec98, 0xfbbccaba9fe556ba6e9c1ff7c93bdb, 0x004b0c], + }, + BigNum { + limbs: [0xb1df0d7f11055f353f8e344469d5db, 0xee2957ec3250ae111cfbdc4970ab0d, 0x006a85], + }, + BigNum { + limbs: [0x0bc4f580ed569fcac071cabb962a26, 0xb929d1b14af78528bb0c2d58675a46, 0x000967], + }, + BigNum { + limbs: [0xcaf14f19ed7d03a0f0d6fddf65ab78, 0x1d09b8983f31effc399a99a0f0774b, 0x001ce3], + }, + BigNum { + limbs: [0xf2b2b3e610defb5f0f2901209a5489, 0x8a4971053e16433d9e6d7000e78e07, 0x00570a], + }, + BigNum { + limbs: [0x0eb926614be1a588cdfcb063137ed0, 0xde7ab1959c4bc6a2ed06d37f167a03, 0x00407f], + }, + BigNum { + limbs: [0xaeeadc9eb27a597732034e9cec8131, 0xc8d87807e0fc6c96eb013622c18b50, 0x00336d], + }, + BigNum { + limbs: [0x7ea24c2e5ec8f8aa638667dde3590d, 0x5373bf1e91d9fef178082e44ecc0c7, 0x002ce4], + }, + BigNum { + limbs: [0x3f01b6d19f9306559c7997221ca6f4, 0x53df6a7eeb6e34485fffdb5ceb448c, 0x004709], + }, + BigNum { + limbs: [0x908be130f926723ad61f87d207308f, 0xd1772f77e6a8eea341e88434f19304, 0x004a4c], + }, + BigNum { + limbs: [0x2d1821cf05358cc529e0772df8cf72, 0xd5dbfa25969f4496961f856ce6724f, 0x0029a0], + }, + BigNum { + limbs: [0xe8222d4428fff63a9a7c5389c73e8f, 0x6f9d1eeb0abdf3bac4d64a36538a64, 0x007363], + }, + BigNum { + limbs: [0xd581d5bbd55c08c56583ab7638c172, 0x37b60ab2728a3f7f1331bf6b847aee, 0x00008a], + }, + BigNum { + limbs: [0x931b5f8b6cbdcc7974730b5c3ba924, 0x64469d1accc8fc62eef966d0253b7f, 0x003675], + }, + BigNum { + limbs: [0x2a88a374919e32868b8cf3a3c456dd, 0x430c8c82b07f36d6e90ea2d1b2c9d4, 0x003d78], + }, + BigNum { + limbs: [0x67e34e22abef508c9d7369401c9ce9, 0x6cd186a4d1bf23bfab53572bc8e62a, 0x007179], + }, + BigNum { + limbs: [0x55c0b4dd526cae73628c95bfe36318, 0x3a81a2f8ab890f7a2cb4b2760f1f29, 0x000274], + }, + BigNum { + limbs: [0x523efd9a4034293bcb639a86de8161, 0x70e5bd7314ec89710171d3095acded, 0x002dc3], + }, + BigNum { + limbs: [0x6b650565be27d5c4349c6479217ea0, 0x366d6c2a685ba9c8d69636987d3766, 0x00462a], + }, + BigNum { + limbs: [0xdc86cb3ee5aeda0dc44788191c6694, 0x85025f6fc6b635ee1289a4af9cc708, 0x000a03], + }, + BigNum { + limbs: [0xe11d37c118ad24f23bb876e6e3996d, 0x2250ca2db691fd4bc57e64f23b3e4a, 0x0069ea], + }, + BigNum { + limbs: [0xfb20b8ec99d14e44d969247a3b9ea0, 0x8d984cf2bbe3e84864fbbaf6ca1a19, 0x003a17], + }, + BigNum { + limbs: [0xc2834a13648ab0bb2696da85c46161, 0x19badcaac1644af1730c4eab0deb39, 0x0039d6], + }, + BigNum { + limbs: [0x3e4ce9b0b4d29e8ddb46c387d94289, 0x9c0f10c48a5ee2c04f5308e4117c29, 0x006e01], + }, + BigNum { + limbs: [0x7f57194f4989607224b93b7826bd78, 0x0b4418d8f2e9507988b500bdc6892a, 0x0005ec], + }, + BigNum { + limbs: [0x0843767d0372343f1f18f7ffc6877b, 0x6f733cc9941e4d1f292459f8fcb93b, 0x000f19], + }, + BigNum { + limbs: [0xb5608c82fae9cac0e0e70700397886, 0x37dfecd3e929e61aaee3afa8db4c18, 0x0064d4], + }, + BigNum { + limbs: [0x88b0025d0d21897a73822ebdcd10f4, 0xad7c3cd1771ded6b0d595d2df89be8, 0x00255b], + }, + BigNum { + limbs: [0x34f400a2f13a75858c7dd04232ef0d, 0xf9d6eccc062a45cecaaeac73df696b, 0x004e91], + }, + BigNum { + limbs: [0x33a0cc91de22b00210a61427617e32, 0xf107893997a09e1935feb8328692f2, 0x003e5f], + }, + BigNum { + limbs: [0x8a03366e20394efdef59ead89e81cf, 0xb64ba063e5a79520a209516f517261, 0x00358d], + }, + BigNum { + limbs: [0xaba4806747cbbb3ed3c6695778c414, 0x6b7fc7d64506fd4c8ab2f0d9a0c2ef, 0x001fd5], + }, + BigNum { + limbs: [0x11ff8298b69043c12c3995a8873bed, 0x3bd361c7384135ed4d5518c8374264, 0x005418], + }, + BigNum { + limbs: [0x9793cdc553268fdb8c8c9df25f113f, 0xc8b8a6bed3ce2e4295f13884893e82, 0x00569a], + }, + BigNum { + limbs: [0x2610353aab356f247373610da0eec2, 0xde9a82dea97a04f74216d11d4ec6d1, 0x001d52], + }, + BigNum { + limbs: [0x48c725f84f95c141afaf92fc44c150, 0x2ec90d8645b8541c402b6099de87a6, 0x006430], + }, + BigNum { + limbs: [0x74dcdd07aec63dbe50506c03bb3eb1, 0x788a1c17378fdf1d97dca907f97dad, 0x000fbd], + }, + BigNum { + limbs: [0x3d298b3fdcee949d23158904db414e, 0x5b2f0cdcb97b5ef4890c09efc1b9e8, 0x002c4a], + }, + BigNum { + limbs: [0x807a77c0216d6a62dcea75fb24beb3, 0x4c241cc0c3ccd4454efbffb2164b6b, 0x0047a3], + }, + BigNum { + limbs: [0x54bc8d5e005d10a64eed6a5818a4bf, 0x165bdc32edd97d8cc8889c8a298881, 0x005ab7], + }, + BigNum { + limbs: [0x68e775a1fdfeee59b11294a7e75b42, 0x90f74d6a8f6eb5ad0f7f6d17ae7cd2, 0x001936], + }, + BigNum { + limbs: [0x5d543983bbd49126324200928abe0a, 0x82d48a57fa1bf0d2b13a179c103085, 0x005e68], + }, + BigNum { + limbs: [0x604fc97c42876dd9cdbdfe6d7541f7, 0x247e9f45832c426726cdf205c7d4ce, 0x001585], + }, + BigNum { + limbs: [0x4959e25753f8727e4cddf5bbcf9e2e, 0x0e9ae069d4854261fc6d52cd9f472f, 0x001c9a], + }, + BigNum { + limbs: [0x744a20a8aa638c81b32209443061d3, 0x98b84933a8c2f0d7db9ab6d438be24, 0x005753], + }, + BigNum { + limbs: [0xfb52a4a4084049b64635a1fca37cd4, 0x97060617002b139d9e55125fd6a0da, 0x0006a1], + }, + BigNum { + limbs: [0xc2515e5bf61bb549b9ca5d035c832d, 0x104d23867d1d1f9c39b2f742016478, 0x006d4c], + }, + BigNum { + limbs: [0x46b757d37646ad5f6ed9d54ebc7dfd, 0x115e1973082b57191cb038744d3fda, 0x0059ad], + }, + BigNum { + limbs: [0x76ecab2c881551a0912629b1438204, 0x95f5102a751cdc20bb57d12d8ac579, 0x001a40], + }, + BigNum { + limbs: [0x3a3fdb27ce4620c9037884585beeed, 0x7ba852c1b35fd6ee452a97c16ac388, 0x004c29], + }, + BigNum { + limbs: [0x836427d83015de36fc877aa7a41114, 0x2baad6dbc9e85c4b92dd71e06d41cb, 0x0027c4], + }, + BigNum { + limbs: [0x5007e38c90bf5a1406a9e74470eb1c, 0x2d7256bac7644923c535f42197488e, 0x0059a7], + }, + BigNum { + limbs: [0x6d9c1f736d9ca4ebf95617bb8f14e5, 0x79e0d2e2b5e3ea1612d2158040bcc5, 0x001a46], + }, + BigNum { + limbs: [0x58596cd9180f6351eeda0bf1f9d15c, 0xdbac48ffd83b5b50fba542ee045f2d, 0x000cc1], + }, + BigNum { + limbs: [0x654a9626e64c9bae1125f30e062ea5, 0xcba6e09da50cd7e8dc62c6b3d3a626, 0x00672b], + }, + BigNum { + limbs: [0xda385259825e8ff7de74762844b59b, 0x8d1d32ee41ea7fa57c0bb07ba2861e, 0x004a07], + }, + BigNum { + limbs: [0xe36bb0a67bfd6f08218b88d7bb4a66, 0x1a35f6af3b5db3945bfc5926357f34, 0x0029e6], + }, + BigNum { + limbs: [0x663b19281ecf204a13c9090a5de344, 0x6cb1b8029d0f4ea7520a9e1f45fed2, 0x000264], + }, + BigNum { + limbs: [0x5768e9d7df8cdeb5ec36f5f5a21cbd, 0x3aa1719ae038e49285fd6b82920681, 0x007189], + }, + BigNum { + limbs: [0x424c5b7c97a6d27d1881b7fb2a11e6, 0x8b263946eb224cb0fea682711f56cf, 0x000526], + }, + BigNum { + limbs: [0x7b57a78366b52c82e77e4704d5ee1b, 0x1c2cf0569225e688d9618730b8ae84, 0x006ec7], + }, + BigNum { + limbs: [0xbf61c5f3d0832796c52d21fbc61f0f, 0xb379c9183ffc813bcf1073aceca325, 0x000ef4], + }, + BigNum { + limbs: [0xfe423d0c2dd8d7693ad2dd0439e0f2, 0xf3d960853d4bb1fe08f795f4eb622d, 0x0064f8], + }, + BigNum { + limbs: [0xe3a6cd55d29c43736afc498dd8c1d1, 0xa19828da9aab0564b5a8d1072ba42b, 0x00445e], + }, + BigNum { + limbs: [0xd9fd35aa2bbfbb8c9503b572273e30, 0x05bb00c2e29d2dd5225f389aac6127, 0x002f8f], + }, + BigNum { + limbs: [0xead8a0448ecebabcdf1235752b0ef3, 0xe8ee9237909732d4a06d7aa57eb71b, 0x006bcb], + }, + BigNum { + limbs: [0xd2cb62bb6f8d444320edc98ad4f10e, 0xbe649765ecb10065379a8efc594e37, 0x000821], + }, + BigNum { + limbs: [0x4119ad873614884d66efb4fed2279a, 0xd9900b7ae25a95dfadf106e3f002de, 0x005ae6], + }, + BigNum { + limbs: [0x7c8a5578c84776b299104a012dd867, 0xcdc31e229aed9d5a2a1702bde80275, 0x001906], + }, + BigNum { + limbs: [0xb4f7967f7e42a5fda4841718420054, 0x2f3fb51cf0a715d27b6251fc311c17, 0x0062fb], + }, + BigNum { + limbs: [0x08ac6c80801959025b7be7e7bdffad, 0x781374808ca11d675ca5b7a5a6e93c, 0x0010f2], + }, + BigNum { + limbs: [0x180e0e8b24f12309f239f760b82267, 0xba636d174692ad5a534045625d9514, 0x0058c3], + }, + BigNum { + limbs: [0xa595f474d96adbf60dc6079f47dd9a, 0xecefbc8636b585df84c7c43f7a703f, 0x001b29], + }, + BigNum { + limbs: [0xc7e8901137ff0153a93b55b4fea0eb, 0xc4a69476d9fc4bb6f34c1c58a0568e, 0x000e7c], + }, + BigNum { + limbs: [0xf5bb72eec65cfdac56c4a94b015f16, 0xe2ac9526a34be782e4bbed4937aec4, 0x006570], + }, + BigNum { + limbs: [0x72a5c3f51c283524eb6f79660ba729, 0x4cc8ec848f9932f96660e46b8b0362, 0x00548e], + }, + BigNum { + limbs: [0x4afe3f0ae233c9db14908599f458d8, 0x5a8a3d18edaf004071a725364d01f1, 0x001f5f], + }, + BigNum { + limbs: [0xb69e5da3889e1b2613fb0ba0d0c8b9, 0x48f2bdc1f969a35750fccdbd565adc, 0x0045f4], + }, + BigNum { + limbs: [0x0705a55c75bde3d9ec04f35f2f3748, 0x5e606bdb83de8fe2870b3be481aa77, 0x002df9], + }, + BigNum { + limbs: [0xeeae11e7bccf3f082cf84eeb77b539, 0xd3cae75d7dcbb02266098876489699, 0x006a92], + }, + BigNum { + limbs: [0xcef5f118418cbff7d307b014884ac8, 0xd388423fff7c831771fe812b8f6eb9, 0x00095a], + }, + BigNum { + limbs: [0x9edcfa443aea1905a885cb88412fc6, 0x71fcb801d5d5172aa6aa52827f4c0e, 0x00140c], + }, + BigNum { + limbs: [0x1ec708bbc371e5fa577a3377bed03b, 0x3556719ba7731c0f315db71f58b945, 0x005fe1], + }, + BigNum { + limbs: [0x2c95af5bc18faa930fa010bc171746, 0x7dc1d3176b166ae305e12c0d0f3845, 0x003659], + }, + BigNum { + limbs: [0x910e53a43ccc546cf05fee43e8e8bb, 0x299156861231c856d226dd94c8cd0e, 0x003d94], + }, + BigNum { + limbs: [0x85a508df2452feef976635fc779c0c, 0x54744d4336448dd7a2cb1fe4cabc60, 0x00509e], + }, + BigNum { + limbs: [0x37fefa20da0900106899c9038863f5, 0x52dedc5a4703a562353ce9bd0d48f3, 0x00234f], + }, + BigNum { + limbs: [0x2a457ac1b1515e66caf0bfe0dc71bd, 0xde54f97535615e9a245b3b982d893b, 0x007033], + }, + BigNum { + limbs: [0x935e883e4d0aa099350f3f1f238e44, 0xc8fe302847e6d49fb3acce09aa7c18, 0x0003b9], + }, + BigNum { + limbs: [0xe681ffa04fd14425cd201433440674, 0xde62396f17618541eba544010dc6e2, 0x0031d2], + }, + BigNum { + limbs: [0xd722035fae8abada32dfeaccbbf98d, 0xc8f0f02e65e6adf7ec62c5a0ca3e70, 0x00421a], + }, + BigNum { + limbs: [0x52dc972de8dd1ae0ef5504d0804371, 0xd7d00aa6d47ea06254fd521a05e75b, 0x0063c3], + }, + BigNum { + limbs: [0x6ac76bd2157ee41f10aafa2f7fbc90, 0xcf831ef6a8c992d7830ab787d21df8, 0x001029], + }, + BigNum { + limbs: [0x4804de0259a52492093ce6634374ea, 0x74a1cf96403463f289036f16b94858, 0x002037], + }, + BigNum { + limbs: [0x759f24fda4b6da6df6c3189cbc8b17, 0x32b15a073d13cf474f049a8b1ebcfb, 0x0053b6], + }, + BigNum { + limbs: [0x0b4a6523f47a1ff8e0b04c3b1af356, 0x83b623d916a3ad6c4c7ac3494271a8, 0x005a8d], + }, + BigNum { + limbs: [0xb2599ddc09e1df071f4fb2c4e50cab, 0x239d05c466a485cd8b8d46589593ab, 0x001960], + }, + BigNum { + limbs: [0x3acd5edbf5700358a7bfe4303c5b1e, 0xb52b913e7460fc8fc271fb692c97c4, 0x0021a2], + }, + BigNum { + limbs: [0x82d6a42408ebfba758401acfc3a4e3, 0xf227985f08e736aa15960e38ab6d8f, 0x00524a], + }, + BigNum { + limbs: [0x751f4f8dda18c726694b3c0708989b, 0x74e808084266d6dc71af08a18e5f03, 0x000d2f], + }, + BigNum { + limbs: [0x4884b372244337d996b4c2f8f76766, 0x326b21953ae15c5d6659010049a650, 0x0066be], + }, + BigNum { + limbs: [0x4d9b4898d2ec0030ad1815af2831cb, 0xb9b40807616a9227838f3a3ed300cf, 0x003d4c], + }, + BigNum { + limbs: [0x7008ba672b6ffecf52e7e950d7ce36, 0xed9f21961bdda1125478cf63050484, 0x0036a0], + }, + BigNum { + limbs: [0x5661caa9b88f7bc99c409c32cbe93c, 0x81febdfe94276a8aad8807a5d7050b, 0x006767], + }, + BigNum { + limbs: [0x6742385645cc833663bf62cd3416c5, 0x25546b9ee920c8af2a8001fc010048, 0x000c86], + }, + BigNum { + limbs: [0xe1b8db4b0c6ea3ab3dcd74abc0acc5, 0x518f26f7d15431ab14182ee5361144, 0x003309], + }, + BigNum { + limbs: [0xdbeb27b4f1ed5b54c2328a543f533c, 0x55c402a5abf4018ec3efdabca1f40e, 0x0040e4], + }, + BigNum { + limbs: [0xef2afdb60852031c3f34a887d3c3e1, 0xcb3506e60a81f0394c93a42b5b72e9, 0x00064c], + }, + BigNum { + limbs: [0xce790549f609fbe3c0cb56782c3c20, 0xdc1e22b772c643008b7465767c9269, 0x006da0], + }, + BigNum { + limbs: [0x8cdb76a42676ccb187cd4b5130698f, 0x41db3bd37280e077b68e7eab756cb8, 0x006959], + }, + BigNum { + limbs: [0x30c88c5bd7e5324e7832b3aecf9672, 0x6577edca0ac752c221798af662989b, 0x000a94], + }, + BigNum { + limbs: [0xb80be01829aa6e6b4e1dd7a6e41adf, 0x6de1daf8905fb9f70b105865f3b1cf, 0x004c84], + }, + BigNum { + limbs: [0x059822e7d4b19094b1e227591be522, 0x39714ea4ece87942ccf7b13be45384, 0x002769], + }, + BigNum { + limbs: [0xcad3633089749adf4e63d01af609aa, 0x0be46010a6b28fce2e90dce28a6db3, 0x003d3e], + }, + BigNum { + limbs: [0xf2d09fcf74e76420b19c2ee509f657, 0x9b6ec98cd695a36ba9772cbf4d979f, 0x0036af], + }, + BigNum { + limbs: [0x3fe56d15f19fd9d3a88f9769d85682, 0xa2628ede060eab8f2d5800a8be3b0f, 0x006281], + }, + BigNum { + limbs: [0x7dbe95ea0cbc252c5770679627a97f, 0x04f09abf773987aaaab008f919ca44, 0x00116c], + }, + BigNum { + limbs: [0x33b77d2d66205cd6436789acd58a6a, 0x0e51924a73f486c6d515c6dbbd56d8, 0x00661d], + }, + BigNum { + limbs: [0x89ec85d2983ba229bc9875532a7597, 0x990197530953ac7302f242c61aae7b, 0x000dd0], + }, + BigNum { + limbs: [0xbbd52b782f347dae0408970b4aab1a, 0x678caa916b48f296454a57be9a3dd2, 0x000554], + }, + BigNum { + limbs: [0x01ced787cf278151fbf767f4b554e7, 0x3fc67f0c11ff40a392bdb1e33dc781, 0x006e99], + }, + BigNum { + limbs: [0x7fe07d8d824b70a6b05f18a33c32b1, 0x4018a4fba9970315f7d6239cfdfbbe, 0x004ea9], + }, + BigNum { + limbs: [0x3dc385727c108e594fa0e65cc3cd50, 0x673a84a1d3b13023e031e604da0995, 0x002544], + }, + BigNum { + limbs: [0x50bf4dbafd02920d87e416425a1f5b, 0x43b8831183496fc9fedba1ca177ecf, 0x004c47], + }, + BigNum { + limbs: [0x6ce4b54501596cf2781be8bda5e0a6, 0x639aa68bf9fec36fd92c67d7c08684, 0x0027a6], + }, + BigNum { + limbs: [0x9c92782418d9a6f68d125f81344d2e, 0x3ae417d106a4752a779731a01e141a, 0x0005a4], + }, + BigNum { + limbs: [0x21118adbe582580972ed9f7ecbb2d3, 0x6c6f11cc76a3be0f6070d801b9f139, 0x006e49], + }, + BigNum { + limbs: [0xa9568098dc13297c139a093efa1190, 0x1f8538db87179f115b32fd34f9e257, 0x0044e7], + }, + BigNum { + limbs: [0x144d82672248d583ec65f5c105ee71, 0x87cdf0c1f63094287cd50c6cde22fc, 0x002f06], + }, + BigNum { + limbs: [0xdb59a295eea1fad891f7ce48c338da, 0x0bc19af45832cd3e67ec475459da28, 0x001a56], + }, + BigNum { + limbs: [0xe24a606a0fba04276e0830b73cc727, 0x9b918ea9251565fb701bc24d7e2b2a, 0x005997], + }, + BigNum { + limbs: [0x7cc816a910521c8f7f77012d9d64d2, 0xfd5789c0e146b081e9cf98bbfed9d6, 0x00483a], + }, + BigNum { + limbs: [0x40dbec56ee09e2708088fdd2629b2f, 0xa9fb9fdc9c0182b7ee3870e5d92b7d, 0x002bb2], + }, + BigNum { + limbs: [0xc356be3d0f029aa409d9ee00585213, 0xb147452598293eb810c81a72553cb7, 0x0025b3], + }, + BigNum { + limbs: [0xfa4d44c2ef59645bf62610ffa7adee, 0xf60be477e51ef481c73fef2f82c89b, 0x004e39], + }, + BigNum { + limbs: [0xb871097a9f0c6f53f1742ce989b5a2, 0xdd8280effb6326d76b58b9434f6ec5, 0x00686f], + }, + BigNum { + limbs: [0x0532f9855f4f8fac0e8bd216764a5f, 0xc9d0a8ad81e50c626caf505e88968e, 0x000b7d], + }, + BigNum { + limbs: [0x1a129e137f0039c2fcba24fbaa6740, 0xaf9519ca80d68d67bc688c2a21ffa8, 0x0046ea], + }, + BigNum { + limbs: [0xa39164ec7f5bc53d0345da045598c1, 0xf7be0fd2fc71a5d21b9f7d77b605ab, 0x002d02], + }, + BigNum { + limbs: [0x077dddb5761a734e2a017e4ffb6836, 0xe1e4f08eb7ec1e23d4338ba1fdbc33, 0x00099a], + }, + BigNum { + limbs: [0xb626254a88418bb1d5fe80b00497cb, 0xc56e390ec55c151603d47dffda4920, 0x006a52], + }, + BigNum { + limbs: [0xc00f384e56df5ab098af553e858ddc, 0x772639e0f2e0bdf93ce28c12b17e9a, 0x003d4d], + }, + BigNum { + limbs: [0xfd94cab1a77ca44f6750a9c17a7225, 0x302cefbc8a6775409b257d8f2686b8, 0x0036a0], + }, + BigNum { + limbs: [0xbbcd0457572ea4ba6f047a391e07cd, 0xdb9969605428e20283d330193c8c22, 0x00227d], + }, + BigNum { + limbs: [0x01d6fea8a72d5a4590fb84c6e1f834, 0xcbb9c03d291f51375434d9889b7931, 0x00516f], + }, + BigNum { + limbs: [0x3d78a715d35e675f5607600ebe8e85, 0x45bcd7037c97ac5bec5d064c7b2fa1, 0x0068c0], + }, + BigNum { + limbs: [0x802b5bea2afd97a0a9f89ef141717c, 0x6196529a00b086ddebab03555cd5b2, 0x000b2d], + }, + BigNum { + limbs: [0x5255f97b2f5f8a3aab39c40d504e47, 0x3931c4e8a3365aa19c692fd480ceff, 0x0022e9], + }, + BigNum { + limbs: [0x6b4e0984cefc74c554c63af2afb1ba, 0x6e2164b4da11d8983b9ed9cd573654, 0x005104], + }, + BigNum { + limbs: [0xe8628b87c4717f74298e4f1f6b05b8, 0x86ffd6389f469bbcecee7941985189, 0x006d89], + }, + BigNum { + limbs: [0xd541777839ea7f8bd671afe094fa49, 0x20535364de01977ceb1990603fb3c9, 0x000664], + }, + BigNum { + limbs: [0xc4b3dde8d99b1da59b819134b83579, 0x3f3b319dd1b9a8cc0754083d8a76de, 0x001476], + }, + BigNum { + limbs: [0xf8f0251724c0e15a647e6dcb47ca88, 0x6817f7ffab8e8a6dd0b401644d8e74, 0x005f77], + }, + BigNum { + limbs: [0x5e5d72ca14bf355b2c4072b03330aa, 0xfcb9bed9a1d0c039e6a24828a4d111, 0x0044cb], + }, + BigNum { + limbs: [0x5f469035e99cc9a4d3bf8c4fcccf57, 0xaa996ac3db7772fff165c179333442, 0x002f21], + }, + BigNum { + limbs: [0xa6b76707616830fca70889363d0810, 0x474a16a937608616f4669de6d37aa6, 0x004100], + }, + BigNum { + limbs: [0x16ec9bf89cf3ce0358f775c9c2f7f1, 0x600912f445e7ad22e3a16bbb048aad, 0x0032ed], + }, + BigNum { + limbs: [0x034ce5f2a0e16cc71a57258e59e205, 0x4a3b69d18144f376ca920c31a41df2, 0x005d4a], + }, + BigNum { + limbs: [0xba571d0d5d7a9238e5a8d971a61dfc, 0x5d17bfcbfc033fc30d75fd7033e761, 0x0016a3], + }, + BigNum { + limbs: [0x479c06b64c620e54913a5fad66493e, 0xe8eccb401e43ab35fb17c2ef06e1ff, 0x004f0e], + }, + BigNum { + limbs: [0x7607fc49b1f9f0ab6ec59f5299b6c3, 0xbe665e5d5f048803dcf046b2d12354, 0x0024de], + }, + BigNum { + limbs: [0x8301162f9b026bdf8f0a899f9ee419, 0x8d97e4ea5441615140b6e155e9ab76, 0x001aa6], + }, + BigNum { + limbs: [0x3aa2ecd06359932070f57560611be8, 0x19bb44b32906d1e89751284bee59dd, 0x005947], + }, + BigNum { + limbs: [0x9c1028848c11d02b0801fe4d03f4b3, 0xddace4e38717b5fc4d667f921f06b3, 0x001110], + }, + BigNum { + limbs: [0x2193da7b724a2ed4f7fe00b2fc0b4e, 0xc9a644b9f6307d3d8aa18a0fb8fea0, 0x0062dc], + }, + BigNum { + limbs: [0x3288fa993675c6b000ebfccd728a11, 0x3393fe4edec850a6b9493521aaddad, 0x006be2], + }, + BigNum { + limbs: [0x8b1b0866c7e6384fff1402328d75f0, 0x73bf2b4e9e7fe2931ebed4802d27a6, 0x00080b], + }, + BigNum { + limbs: [0x199a38673d1c784644f6e6d10cdb65, 0x5763a14834a7853a33904d076ea499, 0x0005fe], + }, + BigNum { + limbs: [0xa409ca98c13f86b9bb09182ef3249c, 0x4fef885548a0adffa477bc9a6960ba, 0x006def], + }, + BigNum { + limbs: [0x50d9ce6be8ab7e9afd17ae1c79b3cc, 0x6f3c81d65abe294532501559ab8009, 0x003e12], + }, + BigNum { + limbs: [0x6cca349415b0806502e850e3864c35, 0x3816a7c7228a09f4a5b7f4482c854a, 0x0035db], + }, + BigNum { + limbs: [0x2086a26309099ab289450a2c8c785c, 0x78639fbbfa1a19c8f6a5547ef0cb37, 0x005cae], + }, + BigNum { + limbs: [0x9d1d609cf552644d76baf4d37387a5, 0x2eef89e1832e1970e162b522e73a1c, 0x00173f], + }, + BigNum { + limbs: [0x726a6f11fd5d1e41a26186d0f7d95a, 0x480ded0b0a2522ed236d0d4ec5e8bf, 0x005b39], + }, + BigNum { + limbs: [0x4b3993ee00fee0be5d9e782f0826a7, 0x5f453c927323104cb49afc53121c94, 0x0018b4], + }, + BigNum { + limbs: [0xac9edb793129a56d2a3526d2c2e46a, 0x40f093ad57bc107ae64b724aae15f9, 0x006831], + }, + BigNum { + limbs: [0x11052786cd325992d5cad82d3d1b97, 0x666295f0258c22bef1bc975729ef5a, 0x000bbc], + }, + BigNum { + limbs: [0x6a7dd7ea6053089d718125b7898a67, 0xf96ecc6b5153abf178d66922bda5cb, 0x005b3c], + }, + BigNum { + limbs: [0x53262b159e08f6628e7ed94876759a, 0xade45d322bf487485f31a07f1a5f88, 0x0018b0], + }, + BigNum { + limbs: [0xa04848fde48575abf74fde099c325f, 0x7857f96a44b11675db3747d3d791a7, 0x003395], + }, + BigNum { + limbs: [0x1d5bba0219d6895408b020f663cda2, 0x2efb303338971cc3fcd0c1ce0073ac, 0x004058], + }, + BigNum { + limbs: [0x69b1ce32ce51fbe4282ad9e2553334, 0x6ea21fc2a195c87adc4b385e8304b6, 0x005bd0], + }, + BigNum { + limbs: [0x53f234cd300a031bd7d5251daacccd, 0x38b109dadbb26abefbbcd14355009d, 0x00181d], + }, + BigNum { + limbs: [0x5f6c03f0f179646b0b935e5c78f259, 0x287edbd07e2b04b4c968ebc0152690, 0x005995], + }, + BigNum { + limbs: [0x5e37ff0f0ce29a94f46ca0a3870da8, 0x7ed44dccff1d2e850e9f1de1c2dec3, 0x001a58], + }, + BigNum { + limbs: [0x5ed2cf19172e412e59452c2173c6ea, 0xb895c01840aecfda8e31c5ff001739, 0x005656], + }, + BigNum { + limbs: [0x5ed133e6e72dbdd1a6bad2de8c3917, 0xeebd69853c99635f49d643a2d7ee1a, 0x001d96], + }, + BigNum { + limbs: [0x9dcb7f92ea6a9b8d444a5beec3aaaf, 0x07e606bceb10c1d6263b3c797138ff, 0x00654d], + }, + BigNum { + limbs: [0x1fd8836d13f16372bbb5a3113c5552, 0x9f6d22e092377163b1cccd2866cc54, 0x000ea0], + }, + BigNum { + limbs: [0xb9b3a0749e60cb8768c9f875b63680, 0x291981e1a6ffd922ef4010fd623046, 0x003a9e], + }, + BigNum { + limbs: [0x03f0628b5ffb33789736068a49c981, 0x7e39a7bbd6485a16e8c7f8a475d50d, 0x00394f], + }, + BigNum { + limbs: [0xf2172bc7473892459629b66ba900be, 0xeb28f1112e24ae07a577ed5adb9833, 0x003ec2], + }, + BigNum { + limbs: [0xcb8cd738b7236cba69d6489456ff43, 0xbc2a388c4f23853232901c46fc6d1f, 0x00352a], + }, + BigNum { + limbs: [0x6c73629eb540ea3f9554aa5ac511e9, 0xba428345abaac34c773123acc36bcc, 0x004a8a], + }, + BigNum { + limbs: [0x5130a061491b14c06aab54a53aee18, 0xed10a657d19d6fed60d6e5f5149987, 0x002962], + }, + BigNum { + limbs: [0xd2b29f89691c73686d7450c33d5a33, 0x95c67b9ea2efa1729a4994ac329b4c, 0x0057b5], + }, + BigNum { + limbs: [0xeaf16376953f8b97928bae3cc2a5ce, 0x118cadfeda5891c73dbe74f5a56a06, 0x001c38], + }, + BigNum { + limbs: [0x0da05f62a2205a038764a74650d0c5, 0x264ed896f8869866cb67d02650f974, 0x00192c], + }, + BigNum { + limbs: [0xb003a39d5c3ba4fc789b57b9af2f3c, 0x8104510684c19ad30ca0397b870bdf, 0x005ac1], + }, + BigNum { + limbs: [0x07f2b8fe1b995c6f51caab160744d9, 0x45b7ef86f69047659707080c8273d8, 0x00724c], + }, + BigNum { + limbs: [0xb5b14a01e2c2a290ae3553e9f8bb28, 0x619b3a1686b7ebd44101019555917b, 0x0001a1], + }, + BigNum { + limbs: [0xe6a93079ee7cccc934e486ecc125c0, 0x355dce7eaf368f76379c2c28653e10, 0x002031], + }, + BigNum { + limbs: [0xd6fad2860fdf3236cb1b78133eda41, 0x71f55b1ece11a3c3a06bdd7972c742, 0x0053bc], + }, + BigNum { + limbs: [0xf79fc3d741bf226521696c6179297c, 0x9ae2c216552207600419c3f6115aeb, 0x0063bc], + }, + BigNum { + limbs: [0xc6043f28bc9cdc9ade96929e86d685, 0x0c70678728262bd9d3ee45abc6aa67, 0x001031], + }, + BigNum { + limbs: [0xc4ded9ffbba24056e5deedda27244b, 0x8f8601768ac3bbb9b61429944d0c24, 0x00213e], + }, + BigNum { + limbs: [0xf8c5290042b9bea91a211125d8dbb6, 0x17cd2826f284778021f3e00d8af92e, 0x0052af], + }, + BigNum { + limbs: [0xf518b492651ba347ad66c74d7bca64, 0x5064e14b100a32e73c0848a259cce0, 0x004409], + }, + BigNum { + limbs: [0xc88b4e6d99405bb8529937b284359d, 0x56ee48526d3e00529bffc0ff7e3872, 0x002fe4], + }, + BigNum { + limbs: [0x31564fda741ade70b774835f62ee3c, 0x1ce4194322964607884498bbcb8c71, 0x001e85], + }, + BigNum { + limbs: [0x8c4db3258a41208f488b7ba09d11c5, 0x8a6f105a5ab1ed324fc370e60c78e2, 0x005568], + }, + BigNum { + limbs: [0xddec933364680fd1c931b0f7188c6e, 0x2e92d9ce55819bcfd2af02a07aa006, 0x000456], + }, + BigNum { + limbs: [0xdfb76fcc99f3ef2e36ce4e08e77393, 0x78c04fcf27c6976a055907015d654c, 0x006f97], + }, + BigNum { + limbs: [0x960fc9c499955198e1e535f0666860, 0x5f24e19b3eee4df7efe5f71e0abf44, 0x0054a5], + }, + BigNum { + limbs: [0x2794393b64c6ad671e1ac90f9997a1, 0x482e48023e59e541e8221283cd460f, 0x001f48], + }, + BigNum { + limbs: [0x1bc63ba1f12ba86a96e7321bc04210, 0x5ec81887c4f43e877567664189754e, 0x0045df], + }, + BigNum { + limbs: [0xa1ddc75e0d3056956918cce43fbdf1, 0x488b1115b853f4b262a0a3604e9005, 0x002e0e], + }, + BigNum { + limbs: [0x7c81ae1d87699d225d35c86477d58b, 0x400e38958dc7f5783bcc2a7ca18b18, 0x004293], + }, + BigNum { + limbs: [0x412254e276f261dda2ca369b882a76, 0x6744f107ef803dc19c3bdf25367a3b, 0x00315a], + }, + BigNum { + limbs: [0x2611cec67dd54be518be27e7093f4e, 0x9743b4e0d46958698576f11c4a2e78, 0x0011ea], + }, + BigNum { + limbs: [0x979234398086b31ae741d718f6c0b3, 0x100f74bca8dedad0529118858dd6db, 0x006203], + }, + BigNum { + limbs: [0x0223751b720a0cf2dab1c8c4a189ff, 0xdcb7690555b9127b1606420ade2a86, 0x002ac9], + }, + BigNum { + limbs: [0xbb808de48c51f20d254e363b5e7602, 0xca9bc098278f20bec201c796f9dacd, 0x004923], + }, + BigNum { + limbs: [0xa5dd527cd71fb7976ac7f5f6c72a88, 0x6117fe37a234a60a47cec5cb1a85e6, 0x001f1c], + }, + BigNum { + limbs: [0x17c6b083273c47689538090938d579, 0x463b2b65db138d2f903943d6bd7f6d, 0x0054d1], + }, + BigNum { + limbs: [0x8b12057546a348bd571c059c104014, 0xb61776734f89d0fc55508e07bb7098, 0x00699c], + }, + BigNum { + limbs: [0x3291fd8ab7b8b642a8e3f963efbfed, 0xf13bb32a2dbe623d82b77b9a1c94bb, 0x000a50], + }, + BigNum { + limbs: [0x9e8b72db6f1e2653fd29142d3819a2, 0xd3f9439750aa38a37afc68b0fafae2, 0x0054a1], + }, + BigNum { + limbs: [0x1f1890248f3dd8ac02d6ead2c7e65f, 0xd359e6062c9dfa965d0ba0f0dd0a71, 0x001f4b], + }, + BigNum { + limbs: [0xd7c1a278ec608700a9be0299817ca4, 0x55532c1abbaf9ef11dfefbb02e5e62, 0x0007a0], + }, + BigNum { + limbs: [0xe5e2608711fb77ff5641fc667e835d, 0x51fffd82c1989448ba090df1a9a6f0, 0x006c4d], + }, + BigNum { + limbs: [0x1fd547be4b6ce2b275fb29418f4c5d, 0x428c158ed643f84e55b954bddacbef, 0x003076], + }, + BigNum { + limbs: [0x9dcebb41b2ef1c4d8a04d5be70b3a4, 0x64c7140ea7043aeb824eb4e3fd3964, 0x004377], + }, + BigNum { + limbs: [0xc86ad30700ce774a3b8d2e0f596020, 0xba2fd3948857eb766ca2207244f211, 0x006a3e], + }, + BigNum { + limbs: [0xf5392ff8fd8d87b5c472d0f0a69fe1, 0xed235608f4f047c36b65e92f931341, 0x0009ae], + }, + BigNum { + limbs: [0x855177336fb60fdca2ca5cd99ce3c3, 0xe0d6b37e59679e533b9248389fa8c1, 0x00324a], + }, + BigNum { + limbs: [0x38528bcc8ea5ef235d35a226631c3e, 0xc67c761f23e094e69c75c169385c92, 0x0041a2], + }, + BigNum { + limbs: [0xa947be6ae0adca67112eaf34e9f6be, 0x377e8099fa46465283e47a582918fe, 0x001b23], + }, + BigNum { + limbs: [0x145c44951dae3498eed14fcb160943, 0x6fd4a9038301ece754238f49aeec55, 0x0058ca], + }, + BigNum { + limbs: [0x1d79c870ba25b6c9e1715651f94edb, 0xe6471ba2107df5f9703e00bf2460a7, 0x002bbe], + }, + BigNum { + limbs: [0xa02a3a8f443648361e8ea8ae06b126, 0xc10c0dfb6cca3d4067ca08e2b3a4ac, 0x00482e], + }, + BigNum { + limbs: [0x180a97607b7b75ee0a9b7720fe18ea, 0x61caaccddcb331fc82977997ab4493, 0x003441], + }, + BigNum { + limbs: [0xa5996b9f82e08911f56487df01e717, 0x45887ccfa095013d5570900a2cc0c0, 0x003fac], + }, + BigNum { + limbs: [0x7a4cdd8c345f311415ae6f648ca4c4, 0x11970ddf05c3476edefa503afd9c0a, 0x0017ae], + }, + BigNum { + limbs: [0x43572573c9fccdebea518f9b735b3d, 0x95bc1bbe7784ebcaf90db966da6949, 0x005c3f], + }, + BigNum { + limbs: [0x2431336dffbd3ff302032d443d58d3, 0xda94c4d882d868bd470adc88c0ecd8, 0x0026c2], + }, + BigNum { + limbs: [0x9972cf91fe9ebf0cfdfcd1bbc2a72e, 0xccbe64c4fa6fca7c90fd2d1917187b, 0x004d2a], + }, + BigNum { + limbs: [0x8b73877a32f62bdfe96721a6cd7b3e, 0x0231915bdd4603e21d77f00f7c14ae, 0x004f5b], + }, + BigNum { + limbs: [0x32307b85cb65d3201698dd593284c3, 0xa5219841a0022f57ba9019925bf0a5, 0x002492], + }, + BigNum { + limbs: [0xe566e43fbfb3adcaa4621ab46a4d30, 0xe4c6b3243876efd27177d6ce56ad87, 0x00583a], + }, + BigNum { + limbs: [0xd83d1ec03ea851355b9de44b95b2d1, 0xc28c767944d14367669032d38157cb, 0x001bb2], + }, + BigNum { + limbs: [0x7e23dd40142c5f9422d2c34101124c, 0x9b8792f6512f934f79299c50142c3d, 0x0024ea], + }, + BigNum { + limbs: [0x3f8025bfea2f9f6bdd2d3bbefeedb5, 0x0bcb96a72c189fea5ede6d51c3d916, 0x004f03], + }, + BigNum { + limbs: [0xec9c0406a08f265cce2c30333b187f, 0x6ca4e92bd0ad946fec5826cc03719d, 0x000206], + }, + BigNum { + limbs: [0xd107fef95dccd8a331d3ceccc4e782, 0x3aae4071ac9a9ec9ebafe2d5d493b5, 0x0071e7], + }, + BigNum { + limbs: [0x7f3449b8bd93686beadab96405ae3a, 0x1ab61fc3015bf5412a443f8e57f148, 0x003965], + }, + BigNum { + limbs: [0x3e6fb94740c896941525459bfa51c7, 0x8c9d09da7bec3df8adc3ca1380140b, 0x003a88], + }, + BigNum { + limbs: [0xd9c57133e56dfad3ea280c5f782f2b, 0xead5a7d140e1e3fff1c4cd5cae127b, 0x0024c2], + }, + BigNum { + limbs: [0xe3de91cc18ee042c15d7f2a087d0d6, 0xbc7d81cc3c664f39e6433c4529f2d7, 0x004f2a], + }, + BigNum { + limbs: [0xa7fbcbd8c1ce86f75167878ef4c2b7, 0x118566730cb78c4efcd85ee6395889, 0x007110], + }, + BigNum { + limbs: [0x15a837273c8d7808ae9877710b3d4a, 0x95cdc32a7090a6eadb2faabb9eacca, 0x0002dd], + }, + BigNum { + limbs: [0x1ffcba3c12bc2b9ee90b3d11c2dd21, 0x102ef837861bde2c7551f9dff19445, 0x0006b7], + }, + BigNum { + limbs: [0x9da748c3eb9fd36116f4c1ee3d22e0, 0x97243165f72c550d62b60fc1e6710e, 0x006d36], + }, + BigNum { + limbs: [0xd017e31cf0cb08eef8f30684ce9026, 0x8d3c8185d7d529293c2d54cc37eba5, 0x00519e], + }, + BigNum { + limbs: [0xed8c1fe30d90f611070cf87b316fdb, 0x1a16a817a5730a109bdab4d5a019ad, 0x00224f], + }, + BigNum { + limbs: [0x7a986565c2a5d1c9be282a115f3af5, 0x9b7c85ec9ffed0759691f8350bcf77, 0x002dfe], + }, + BigNum { + limbs: [0x430b9d9a3bb62d3641d7d4eea0c50c, 0x0bd6a3b0dd4962c44176116ccc35dc, 0x0045ef], + }, + BigNum { + limbs: [0xa9e37a3c78a6f03c5e8cd07ac27967, 0xa77bf4482596c40e6ea7ec15f1e470, 0x006957], + }, + BigNum { + limbs: [0x13c088c385b50ec3a1732e853d869a, 0xffd7355557b16f2b69601d8be620e3, 0x000a95], + }, + BigNum { + limbs: [0xda1d1c2ae95f6ed46bc78329689a4e, 0xd3feed71abf08747974362d7998504, 0x005f55], + }, + BigNum { + limbs: [0xe386e6d514fc902b94387bd69765b3, 0xd3543c2bd157abf240c4a6ca3e804e, 0x001497], + }, + BigNum { + limbs: [0xdc7f318ce3896129a67c58c11af270, 0x33b32d96101f50bdf12f11ba2ba3f6, 0x004407], + }, + BigNum { + limbs: [0xe124d1731ad29dd65983a63ee50d91, 0x739ffc076d28e27be6d8f7e7ac615c, 0x002fe6], + }, + BigNum { + limbs: [0x277cbb3e7a777eeeb008d78b019434, 0xfbfe7fba4f67c98d9a4ba421a74a5e, 0x006892], + }, + BigNum { + limbs: [0x962747c183e480114ff72774fe6bcd, 0xab54a9e32de069ac3dbc658030baf5, 0x000b5a], + }, + BigNum { + limbs: [0x20997b1fdd66bd53ec18ed560e5c0c, 0x74a3e7e4ae661be49858d07f3e273d, 0x000bdf], + }, + BigNum { + limbs: [0x9d0a87e020f541ac13e711a9f1a3f5, 0x32af41b8cee217553faf392299de16, 0x00680e], + }, + BigNum { + limbs: [0xe792ae1b302effd0b0f21e5dd18de6, 0x1d8cfff841ef8c787035f36a072656, 0x0051d1], + }, + BigNum { + limbs: [0xd61154e4ce2cff2f4f0de0a22e721b, 0x89c629a53b58a6c167d21637d0defc, 0x00221c], + }, + BigNum { + limbs: [0x1a01cc28fefe11f643be94ebcf7272, 0x3a3286fa30c54b3fe9256008c92553, 0x00491c], + }, + BigNum { + limbs: [0xa3a236d6ff5ded09bc416a14308d8f, 0x6d20a2a34c82e7f9eee2a9990ee000, 0x002ad1], + }, + BigNum { + limbs: [0x3fdeea97c6fe196470728429de50e2, 0x0a1474f2943817443ffa79edc2405a, 0x003edc], + }, + BigNum { + limbs: [0x7dc51868375de59b8f8d7ad621af1f, 0x9d3eb4aae9101bf5980d8fb415c4f9, 0x003511], + }, + BigNum { + limbs: [0xeaa5fd91eb8ad60697528e66468f8b, 0xf542a4cb0e56a928854e7f46c10779, 0x0037ca], + }, + BigNum { + limbs: [0xd2fe056e12d128f968ad7099b97076, 0xb21084d26ef18a1152b98a5b16fdd9, 0x003c22], + }, + BigNum { + limbs: [0x13924feb1eeca0f1045bd496c219a4, 0x1bdcc7a762a7a1e2d45135ad7c1cf7, 0x000303], + }, + BigNum { + limbs: [0xaa11b314df6f5e0efba42a693de65d, 0x8b7661f61aa0915703b6d3f45be85c, 0x0070ea], + }, + BigNum { + limbs: [0x4daa4a99dbb5b03fbacc5e6dc71317, 0x8eb4ab2df85240fdd323261f47b06d, 0x002bbf], + }, + BigNum { + limbs: [0x6ff9b86622a64ec04533a09238ecea, 0x189e7e6f84f5f23c04e4e3829054e6, 0x00482e], + }, + BigNum { + limbs: [0x6af2a3df55476564cabfb80ccdf965, 0xa8bb5dc5e43d9aaa551e3cb295f125, 0x006bfb], + }, + BigNum { + limbs: [0x52b15f20a914999b354046f332069c, 0xfe97cbd7990a988f82e9ccef42142e, 0x0007f1], + }, + BigNum { + limbs: [0x57cb9f5410cdb13e4972bf66f482c6, 0x0a0c78d1f4e98c45d4e61e2afaf2e3, 0x006534], + }, + BigNum { + limbs: [0x65d863abed8e4dc1b68d3f990b7d3b, 0x9d46b0cb885ea6f40321eb76dd1270, 0x000eb9], + }, + BigNum { + limbs: [0x47df7ab3dcb27be44ecf3b78cfad97, 0x5daa7c9b91da67e2903db4b2328356, 0x000cb4], + }, + BigNum { + limbs: [0x75c4884c21a9831bb130c38730526a, 0x49a8ad01eb6dcb5747ca54efa581fd, 0x006739], + }, + BigNum { + limbs: [0x335495b3e381a61803b5a2380d0d30, 0xdc57672d00970d536c25c56fe7a60f, 0x0021d1], + }, + BigNum { + limbs: [0x8a4f6d4c1ada58e7fc4a5cc7f2f2d1, 0xcafbc2707cb125e66be24431f05f44, 0x00521b], + }, + BigNum { + limbs: [0xb619876811f53367d96ac4dec2a7c5, 0x205c599f30a57bf990ec45bb4a8b69, 0x003ef1], + }, + BigNum { + limbs: [0x078a7b97ec66cb9826953a213d583c, 0x86f6cffe4ca2b740471bc3e68d79ea, 0x0034fc], + }, + BigNum { + limbs: [0x41e2dc3cbcaa821d94f28bd2c67835, 0x1f70aeb2ebcd2b0325dad02c36de2e, 0x0014b9], + }, + BigNum { + limbs: [0x7bc126c341b17ce26b0d732d3987cc, 0x87e27aea917b0836b22d3975a12725, 0x005f34], + }, + BigNum { + limbs: [0x4afcc358f070656798b57cfe3321aa, 0xf69b92ab6fc454e75abe206844831d, 0x001654], + }, + BigNum { + limbs: [0x72a73fa70deb9998674a8201ccde57, 0xb0b796f20d83de527d49e939938236, 0x005d98], + }, + BigNum { + limbs: [0xb646d5a9ae7de4fb27d64d21924534, 0x29fc62fee1ef3730c5466a640457fe, 0x003c13], + }, + BigNum { + limbs: [0x075d2d564fde1a04d829b1de6dbacd, 0x7d56c69e9b58fc0912c19f3dd3ad55, 0x0037da], + }, + BigNum { + limbs: [0x89d821e1ae06b63c3d590cd42f742e, 0x63ad8b42d73f52437581fc31b4cb3b, 0x0045cb], + }, + BigNum { + limbs: [0x33cbe11e505548c3c2a6f22bd08bd3, 0x43a59e5aa608e0f662860d70233a18, 0x002e22], + }, + BigNum { + limbs: [0xd7c6c5de7c9c7598942eff1093543f, 0x475a4ded008f25944c39b09897e604, 0x006e29], + }, + BigNum { + limbs: [0xe5dd3d2181bf89676bd0ffef6cabc2, 0x5ff8dbb07cb90da58bce5909401f4e, 0x0005c4], + }, + BigNum { + limbs: [0xac5823be4c981f8af00971a8493ef2, 0x1d363d4b2f15805a9b50ec0d2d83c6, 0x003175], + }, + BigNum { + limbs: [0x114bdf41b1c3df750ff68d57b6c10f, 0x8a1cec524e32b2df3cb71d94aa818d, 0x004278], + }, + BigNum { + limbs: [0x9f60bd799619a78b235e378dc9fa7c, 0x81e948ae5bc5fe101b8c580f1b2242, 0x0067b0], + }, + BigNum { + limbs: [0x1e43458668425774dca1c772360585, 0x2569e0ef21823529bc7bb192bce311, 0x000c3d], + }, + BigNum { + limbs: [0xee8492ee3da22ff3e3e1962f75a6b8, 0x5dd7ff6f5999d3d22736d22e5d8107, 0x0073d3], + }, + BigNum { + limbs: [0xcf1f7011c0b9cf0c1c1e68d08a5949, 0x497b2a2e23ae5f67b0d137737a844b, 0x00001a], + }, + BigNum { + limbs: [0xcec740fed7840e6dbad9a23e72f81c, 0xb9a5d59ea6535f2fce20817a78d7c3, 0x004785], + }, + BigNum { + limbs: [0xeedcc20126d7f09245265cc18d07e5, 0xedad53fed6f4d40a09e788275f2d8f, 0x002c67], + }, + BigNum { + limbs: [0x069ac76165652518b66c7d8e84b7fb, 0x6824377d54128a64cca9517059cf6b, 0x0033f1], + }, + BigNum { + limbs: [0xb7093b9e98f6d9e7499381717b4806, 0x3f2ef2202935a8d50b5eb8317e35e8, 0x003ffc], + }, + BigNum { + limbs: [0x0ecd974f2a3b506efed909666fe227, 0x79afbe389bf399a8cb100ba938f0ea, 0x005eac], + }, + BigNum { + limbs: [0xaed66bb0d420ae910126f599901dda, 0x2da36b64e15499910cf7fdf89f1469, 0x001541], + }, + BigNum { + limbs: [0x010631e01cbc9f572cb84cf2c5ba09, 0x861b644b42c375aa55f89169d7ad93, 0x005b59], + }, + BigNum { + limbs: [0xbc9dd11fe19f5fa8d347b20d3a45f8, 0x2137c5523a84bd8f820f78380057c0, 0x001894], + }, + BigNum { + limbs: [0x036aeea430a057753ed7c94fb0eeb9, 0x421b969856edaeada54c5497aad2cf, 0x002aa4], + }, + BigNum { + limbs: [0xba39145bcdbba78ac12835b04f1148, 0x65379305265a848c32bbb50a2d3284, 0x004949], + }, + BigNum { + limbs: [0x27f1e0971010d57a3c81696a211fdf, 0xa91f129e2638b0ee8a91eb8b9e25cb, 0x0065f1], + }, + BigNum { + limbs: [0x95b22268ee4b2985c37e9595dee022, 0xfe3416ff570f824b4d761e1639df88, 0x000dfb], + }, + BigNum { + limbs: [0xb6b627c983a9d2e73458ac79b074ee, 0x26f9a1f2fb63a902b699f27a42bda3, 0x0066ae], + }, + BigNum { + limbs: [0x06eddb367ab22c18cba752864f8b13, 0x805987aa81e48a37216e17279547b0, 0x000d3f], + }, + BigNum { + limbs: [0x2345c5177d051a336503a91e97e5d7, 0xe82a9d82d223e607676361fe30e365, 0x002b64], + }, + BigNum { + limbs: [0x9a5e3de88156e4cc9afc55e1681a2a, 0xbf288c1aab244d3270a4a7a3a721ee, 0x004888], + }, + BigNum { + limbs: [0xb5d08955ff9e20e0480ab0fd9a31fa, 0x67c5369459aa472ce39066e706af49, 0x005bf5], + }, + BigNum { + limbs: [0x07d379a9febdde1fb7f54e0265ce07, 0x3f8df309239dec0cf477a2bad1560a, 0x0017f8], + }, + BigNum { + limbs: [0x21a614ccdb8d0356d6ec5ed1e118ad, 0x4cbaa9097311544f0b99685cfd7fc2, 0x003715], + }, + BigNum { + limbs: [0x9bfdee3322cefba92913a02e1ee754, 0x5a9880940a36deeacc6ea144da8591, 0x003cd8], + }, + BigNum { + limbs: [0x4004660ebbfc8136ef495f9fe8668d, 0xd2acd3b1314f047d8c5e8e943d7b0f, 0x00158c], + }, + BigNum { + limbs: [0x7d9f9cf1425f7dc910b69f60179974, 0xd4a655ec4bf92ebc4ba97b0d9a8a44, 0x005e60], + }, + BigNum { + limbs: [0xef7cb95c169e236f344925d273570b, 0xed4d89397e65a1e265fc1fb2d6cb41, 0x0039d6], + }, + BigNum { + limbs: [0xce2749a3e7bddb90cbb6d92d8ca8f6, 0xba05a063fee29157720be9ef013a11, 0x003a16], + }, + BigNum { + limbs: [0xbfd8fb21c9bc312aafa84a8f32c4c3, 0x725ed9887c0d76a737cfb9ec903271, 0x006fd9], + }, + BigNum { + limbs: [0xfdcb07de349fcdd55057b470cd3b3e, 0x34f45015013abc92a0384fb547d2e1, 0x000414], + }, + BigNum { + limbs: [0xac5555ad914c92614850e921b50b55, 0x888e1bc2c0f01f01546fd8631e66e8, 0x0027fc], + }, + BigNum { + limbs: [0x114ead526d0f6c9eb7af15de4af4ac, 0x1ec50ddabc5814388398313eb99e6b, 0x004bf1], + }, + BigNum { + limbs: [0x54fbc08c604c0bc827edff9f54ca63, 0xdddc6facd3a427840b4f6a4b3ffe3c, 0x0000cc], + }, + BigNum { + limbs: [0x68a842739e0ff337d811ff60ab359e, 0xc976b9f0a9a40bb5ccb89f56980717, 0x007320], + }, + BigNum { + limbs: [0xf4f876d5d1189994dd945218bdbbc2, 0xfb376ec72a786796c6567f5b161232, 0x005e8f], + }, + BigNum { + limbs: [0xc8ab8c2a2d43656b226bace742443f, 0xac1bbad652cfcba311b18a46c1f320, 0x00155d], + }, + BigNum { + limbs: [0x33fc05de37b96a5c092cddae2df4ca, 0x946abc676c5ed913df0b62773d4fbd, 0x000822], + }, + BigNum { + limbs: [0x89a7fd21c6a294a3f6d32151d20b37, 0x12e86d3610e95a25f8fca72a9ab596, 0x006bcb], + }, + BigNum { + limbs: [0x9d80b5ada11a750907a4e8b7d58e6a, 0x3c12226705777b23957d3889bcbf4d, 0x005b5e], + }, + BigNum { + limbs: [0x20234d525d4189f6f85b16482a7197, 0x6b41073677d0b816428ad1181b4606, 0x00188f], + }, + BigNum { + limbs: [0xdeb374606e7481ab9cb369c352cef9, 0x386f0661f1a7f25ded5a7525beba19, 0x0030c6], + }, + BigNum { + limbs: [0xdef08e9f8fe77d54634c953cad3108, 0x6ee4233b8ba040dbeaad947c194b39, 0x004327], + }, + BigNum { + limbs: [0x5b1a2164b6dd1896e6c704e507a68c, 0xa11049970467d95853e14bf970d3fc, 0x00736a], + }, + BigNum { + limbs: [0x6289e19b477ee6691938fa1af85975, 0x0642e00678e059e18426bda8673157, 0x000083], + }, + BigNum { + limbs: [0xa0c3b85cc1625c18889dbb4c8fc93f, 0x554ad434a3a77303d14549438829dd, 0x002db8], + }, + BigNum { + limbs: [0x1ce04aa33cf9a2e7776243b37036c2, 0x52085568d9a0c03606c2c05e4fdb76, 0x004635], + }, + BigNum { + limbs: [0x495a3f68e907e71bb3e6377c8ca828, 0x42dcd31ae38aaeeb020aab9a427042, 0x00136d], + }, + BigNum { + limbs: [0x7449c397155417e44c19c7837357d9, 0x6476568299bd844ed5fd5e07959511, 0x006080], + }, + BigNum { + limbs: [0x03fca33ae80a7fc83b37a3b9e12e68, 0x42747c135aee51c1f421f069545a96, 0x0016f8], + }, + BigNum { + limbs: [0xb9a75fc516517f37c4c85b461ed199, 0x64dead8a2259e177e3e6193883aabd, 0x005cf5], + }, + BigNum { + limbs: [0x2e14681c99205c3efbab2e58a9a902, 0xd98628e0476857354101f90fd89fc1, 0x002975], + }, + BigNum { + limbs: [0x8f8f9ae3653ba2c10454d0a75656ff, 0xcdcd00bd35dfdc0497061091ff6592, 0x004a77], + }, + BigNum { + limbs: [0x8b8205eb6bd64213c2c46305798d57, 0xc8a83119f25dcd4785621a77f02003, 0x0029a8], + }, + BigNum { + limbs: [0x3221fd149285bcec3d3b9bfa8672aa, 0xdeaaf8838aea65f252a5ef29e7e550, 0x004a44], + }, + BigNum { + limbs: [0x3a7975240c453467f53af052532623, 0x65af92d4f70159b29ee57bf65f7f96, 0x00622b], + }, + BigNum { + limbs: [0x832a8ddbf216ca980ac50eadacd9de, 0x41a396c88646d98739228dab7885bd, 0x0011c2], + }, + BigNum { + limbs: [0x63e200e9d8e2e5305f74f884460d5a, 0xf96b57d1fb5374dfde2f880fa03f19, 0x0023a8], + }, + BigNum { + limbs: [0x59c20216257919cfa08b067bb9f2a7, 0xade7d1cb81f4be59f9d8819237c63a, 0x005044], + }, + BigNum { + limbs: [0xe6f3a7aa7aa027d5ef58fc555a6545, 0xc3a26d8d2d0b63363c75ac7b61fa06, 0x001efe], + }, + BigNum { + limbs: [0xd6b05b5583bbd72a10a702aaa59abc, 0xe3b0bc10503cd0039b925d26760b4c, 0x0054ee], + }, + BigNum { + limbs: [0x8cc4e59271bc254675e44de9acb089, 0x90622d1b33952336df41aa60d8fd88, 0x002a16], + }, + BigNum { + limbs: [0x30df1d6d8c9fd9b98a1bb116534f78, 0x16f0fc8249b31002f8c65f40ff07cb, 0x0049d7], + }, + BigNum { + limbs: [0x5a4984bd3033326a314c573c060e79, 0x4308610110d950309e5d6881371a44, 0x00251f], + }, + BigNum { + limbs: [0x635a7e42ce28cc95ceb3a7c3f9f188, 0x644ac89c6c6ee30939aaa120a0eb0f, 0x004ece], + }, + BigNum { + limbs: [0x6261dae436c20e1ae655f9c67cb4ee, 0x22db31ab8d36fc199e379693433fef, 0x00590d], + }, + BigNum { + limbs: [0x5b42281bc799f0e519aa0539834b13, 0x8477f7f1f011372039d0730e94c564, 0x001ae0], + }, + BigNum { + limbs: [0x97df7b82540d7f520fa375ce78b879, 0xd257d52cc247f82e1823a6a0a604df, 0x0013e4], + }, + BigNum { + limbs: [0x25c4877daa4e7fadf05c8931874788, 0xd4fb5470bb003b0bbfe46301320074, 0x006008], + }, + BigNum { + limbs: [0x27e28d07b063a01ddcc828594b2606, 0x18800771dd7f441b5c5cba7e08c60a, 0x006e7a], + }, + BigNum { + limbs: [0x95c175f84df85ee22337d6a6b4d9fb, 0x8ed3222b9fc8ef1e7bab4f23cf3f49, 0x000573], + }, + BigNum { + limbs: [0x122a6bda001d781a1d628b12064a8f, 0xbef1ee380b4c3884583970d8ed1f28, 0x000d69], + }, + BigNum { + limbs: [0xab799725fe3e86e5e29d73edf9b572, 0xe8613b6571fbfab57fce98c8eae62b, 0x006683], + }, + BigNum { + limbs: [0x4109d826db2ff20301669f731697cb, 0xefe5327bd2b34713d04cbf2d404699, 0x005999], + }, + BigNum { + limbs: [0x7c9a2ad9232c0cfcfe995f8ce96836, 0xb76df721aa94ec2607bb4a7497beba, 0x001a53], + }, + BigNum { + limbs: [0x279b87d2e6b387fcf5fe3b045dd181, 0x1fd88f51bc49ee62c37382b0353690, 0x004f16], + }, + BigNum { + limbs: [0x96087b2d17a877030a01c3fba22e80, 0x877a9a4bc0fe44d7149486f1a2cec3, 0x0024d7], + }, + BigNum { + limbs: [0xb5d2af6411c8553712b61b70f50fdc, 0xfef871d9d6648a833323701f1e4282, 0x003dba], + }, + BigNum { + limbs: [0x07d1539bec93a9c8ed49e38f0af025, 0xa85ab7c3a6e3a8b6a4e49982b9c2d1, 0x003632], + }, + BigNum { + limbs: [0x15c80f017c9aa2a069d1dc9b7042bc, 0xa5269bf2095fdaa09ca8fc7421e5f7, 0x0019e0], + }, + BigNum { + limbs: [0xa7dbf3fe81c15c5f962e22648fbd45, 0x022c8dab73e858993b5f0d2db61f5c, 0x005a0d], + }, + BigNum { + limbs: [0x62db18feb3e506f88c9f388c0677df, 0x3b9eaedc5bb79b6f2492431540cb08, 0x005385], + }, + BigNum { + limbs: [0x5ac8ea014a76f8077360c673f98822, 0x6bb47ac1219097cab375c68c973a4b, 0x002068], + }, + BigNum { + limbs: [0x655490bf2eb5c842ba9cf6eeeeae9b, 0xd2474b10f54a9e3e5c6ba11db18f5c, 0x003d7f], + }, + BigNum { + limbs: [0x584f7240cfa636bd45630811115166, 0xd50bde8c87fd94fb7b9c68842675f7, 0x00366d], + }, + BigNum { + limbs: [0xdbd2559a884245d72951864d8fa8da, 0x1375b8c0af7b737efcd5f01ebdb95c, 0x001fb6], + }, + BigNum { + limbs: [0xe1d1ad657619b928d6ae78b2705727, 0x93dd70dccdccbfbadb3219831a4bf6, 0x005437], + }, + BigNum { + limbs: [0x5879432fea7a51222aedd803cfa5cb, 0x4886f803ad1dad27b4014dedfaed14, 0x001b15], + }, + BigNum { + limbs: [0x652abfd013e1adddd51226fc305a36, 0x5ecc3199d02a86122406bbb3dd183f, 0x0058d8], + }, + BigNum { + limbs: [0xc99defc2a29159bca5d0ce219b4711, 0x7214004ab09d69632374d00f8a2e91, 0x001737], + }, + BigNum { + limbs: [0xf406133d5bcaa5435a2f30de64b8f0, 0x353f2952ccaac9d6b49339924dd6c1, 0x005cb6], + }, + BigNum { + limbs: [0x4901bbd26428fd3608266993cc1060, 0xf73cd3a330df9a39086a6948da8562, 0x004f39], + }, + BigNum { + limbs: [0x74a2472d9a3301c9f7d9956c33efa1, 0xb01655fa4c689900cf9da058fd7ff1, 0x0024b3], + }, + BigNum { + limbs: [0x077d669930bd57b515ba906dbfc129, 0x63cbfdc3672250f2476c3902b234c3, 0x0025eb], + }, + BigNum { + limbs: [0xb6269c66cd9ea74aea456e92403ed8, 0x43872bda1625e247909bd09f25d090, 0x004e02], + }, + BigNum { + limbs: [0x63a3ef0a0dc0eda56e5338c1cb228f, 0x4dcd2085462924021dd09c3abc78e7, 0x003d7c], + }, + BigNum { + limbs: [0x5a0013f5f09b115a91acc63e34dd72, 0x59860918371f0f37ba376d671b8c6c, 0x003671], + }, + BigNum { + limbs: [0x17f78b09396083ed9be33e30f62aaa, 0xb650aa0b473d0bd9e6a77fb9d5d6ca, 0x007369], + }, + BigNum { + limbs: [0xa5ac77f6c4fb7b12641cc0cf09d557, 0xf1027f92360b275ff16089e8022e89, 0x000083], + }, + BigNum { + limbs: [0xb3ac610f977e33a5d11204dfbed99d, 0xbb4b42cf1f3a9b0feb4704453bb48b, 0x0046df], + }, + BigNum { + limbs: [0x09f7a1f066ddcb5a2eedfa20412664, 0xec07e6ce5e0d9829ecc1055c9c50c8, 0x002d0d], + }, + BigNum { + limbs: [0x55ad625c181f556065bcd7a01c30f2, 0x781a7c2239ae887a36503010401e36, 0x004f5b], + }, + BigNum { + limbs: [0x67f6a0a3e63ca99f9a43275fe3cf0f, 0x2f38ad7b4399aabfa1b7d99197e71d, 0x002492], + }, + BigNum { + limbs: [0x41edb4801671b387553452e7d61777, 0xd29ba4c63ee76548d5a502b249e7f1, 0x006dc9], + }, + BigNum { + limbs: [0x7bb64e7fe7ea4b78aacbac1829e88a, 0xd4b784d73e60cdf1026306ef8e1d62, 0x000623], + }, + BigNum { + limbs: [0xc3fa6b12b3b74ec8b70acd9cf0d865, 0x2c1755de706dc08e3aa03315ca7a63, 0x003b64], + }, + BigNum { + limbs: [0xf9a997ed4aa4b03748f531630f279c, 0x7b3bd3bf0cda72ab9d67d68c0d8aef, 0x003889], + }, + BigNum { + limbs: [0xef690241dfa3963ce8fa61277fed1a, 0x4b9f0b721eb1bf8908719fe1ec6949, 0x005e90], + }, + BigNum { + limbs: [0xce3b00be1eb868c317059dd88012e7, 0x5bb41e2b5e9673b0cf9669bfeb9c09, 0x00155d], + }, + BigNum { + limbs: [0xe791c9632c5ea306ce63b513ad4ce0, 0xe3baa6b4f02c0689adb2f9082fb65f, 0x004e36], + }, + BigNum { + limbs: [0xd612399cd1fd5bf9319c49ec52b321, 0xc39882e88d1c2cb02a551099a84ef3, 0x0025b6], + }, + BigNum { + limbs: [0x0cde3a17cbf71e5f622b1f50d9fdd2, 0x2cf1d0e1dadb041561a5e218abee3e, 0x002002], + }, + BigNum { + limbs: [0xb0c5c8e83264e0a09dd4dfaf26022f, 0x7a6158bba26d2f24766227892c1715, 0x0053eb], + }, + BigNum { + limbs: [0x537e43d8e58b2372f85bc98bc40e5a, 0xeaa7d4663a5035d056852237c9d923, 0x002481], + }, + BigNum { + limbs: [0x6a25bf2718d0db8d07a435743bf1a7, 0xbcab553742f7fd698182e76a0e2c30, 0x004f6b], + }, + BigNum { + limbs: [0x47b2f144954b140bbd1890bb6705e7, 0xff7adae82fa6558f5be8e50b86a696, 0x001707], + }, + BigNum { + limbs: [0x75f111bb6910eaf442e76e4498fa1a, 0xa7d84eb54da1ddaa7c1f2496515ebd, 0x005ce5], + }, + BigNum { + limbs: [0xe680f5dafc6153a131aa10fd632e00, 0x134c2edfd8640e2f577d0ff387b8a5, 0x005ff3], + }, + BigNum { + limbs: [0xd7230d2501faab5ece55ee029cd201, 0x9406fabda4e4250a808af9ae504cad, 0x0013fa], + }, + BigNum { + limbs: [0x52d122bd538957e4cb00352c21f113, 0x6b967a02c84b89d12a87006d579ea1, 0x0027d8], + }, + BigNum { + limbs: [0x6ad2e042aad2a71b34ffc9d3de0eee, 0x3bbcaf9ab4fca968ad8109348066b2, 0x004c15], + }, + BigNum { + limbs: [0x6069bbc672bcd63fc6e7f37a5b26a1, 0x12f82c0988ef81ca254da703f317b7, 0x002c4a], + }, + BigNum { + limbs: [0x5d3a47398b9f28c039180b85a4d960, 0x945afd93f458b16fb2ba629de4ed9c, 0x0047a3], + }, + BigNum { + limbs: [0x550d70148336689facaa64d3610ad5, 0x07745a6b893c3d980cdab38ca1760a, 0x0002f8], + }, + BigNum { + limbs: [0x689692eb7b25966053559a2c9ef52c, 0x9fdecf31f40bf5a1cb2d5615368f49, 0x0070f5], + }, + BigNum { + limbs: [0xca0410a1c9a10a62c107092a653563, 0x89b5205c01ad36eb0ad3b74e021dec, 0x002aa8], + }, + BigNum { + limbs: [0xf39ff25e34baf49d3ef8f5d59aca9e, 0x1d9e09417b9afc4ecd345253d5e766, 0x004945], + }, + BigNum { + limbs: [0x0607c9bc523c31742ddf5eef4d4eaa, 0x891e1db52597a9c0b4d6e6ac40094a, 0x00155d], + }, + BigNum { + limbs: [0xb79c3943ac1fcd8bd220a010b2b157, 0x1e350be857b08979233122f597fc09, 0x005e90], + }, + BigNum { + limbs: [0xdadda702f99ca6235747e7245ca8f3, 0x989c317709ce3761dca398879864ee, 0x0067f5], + }, + BigNum { + limbs: [0xe2c65bfd04bf58dca8b817dba3570e, 0x0eb6f8267379fbd7fb64711a3fa064, 0x000bf8], + }, + BigNum { + limbs: [0x26cb392f9cd37aa223717637b2a39a, 0x7bac12ba0cc14923b1de5d054ff5cd, 0x0008ac], + }, + BigNum { + limbs: [0x96d8c9d06188845ddc8e88c84d5c67, 0x2ba716e37086ea162629ac9c880f86, 0x006b41], + }, + BigNum { + limbs: [0xcc5d3b6c2f14c021e5adbdd7b45b67, 0xa957448e60fb4ed489c94adbeee64a, 0x004438], + }, + BigNum { + limbs: [0xf146c793cf473ede1a5241284ba49a, 0xfdfbe50f1c4ce4654e3ebec5e91f08, 0x002fb4], + }, + BigNum { + limbs: [0xbd422a206f6b6a21a0019cde8aa342, 0x4dfd3ba86f2050548384249ecf71c4, 0x00178c], + }, + BigNum { + limbs: [0x0061d8df8ef094de5ffe6221755cbf, 0x5955edf50e27e2e55483e50308938f, 0x005c61], + }, + BigNum { + limbs: [0xcc4b7382a961c6042cdc510b610c75, 0x371b67e5b1e369b3acd7001093f4a1, 0x00431e], + }, + BigNum { + limbs: [0xf1588f7d54fa38fbd323adf49ef38c, 0x7037c1b7cb64c9862b3109914410b1, 0x0030cf], + }, + BigNum { + limbs: [0x6fd201e8f5cc40a3afe5b2094fc128, 0xfe671be7bb3770be381d1d554a5b40, 0x0018bf], + }, + BigNum { + limbs: [0x4dd20117088fbe5c501a4cf6b03ed9, 0xa8ec0db5c210c27b9feaec4c8daa13, 0x005b2d], + }, + BigNum { + limbs: [0xf025db383b07030c5949b99fe0cf18, 0x293af972bc06e684d71edb9b48c8fb, 0x005514], + }, + BigNum { + limbs: [0xcd7e27c7c354fbf3a6b645601f30e9, 0x7e18302ac1414cb500e92e068f3c57, 0x001ed9], + }, + BigNum { + limbs: [0x3562ca05a2228a61650d680b8a6595, 0x9add509bfeb324c70882829c954881, 0x003f8f], + }, + BigNum { + limbs: [0x884138fa5c39749e9af296f4759a6c, 0x0c75d9017e950e72cf85870542bcd2, 0x00345e], + }, + BigNum { + limbs: [0x6b3c313aa95aee82f6451c0ffd9e4b, 0x6d8766a0943a502e6324c3508a3d5d, 0x001de8], + }, + BigNum { + limbs: [0x5267d1c55501107d09bae2f00261b6, 0x39cbc2fce90de30b74e346514dc7f6, 0x005605], + }, + BigNum { + limbs: [0x654ce80fe96082a1e43aaa7b821ea8, 0xf72b923064c0be698f7263e18fd0b9, 0x002cc7], + }, + BigNum { + limbs: [0x58571af014fb7c5e1bc554847de159, 0xb027976d188774d04895a5c048349a, 0x004725], + }, + BigNum { + limbs: [0x54ae98f2436032489a67c9866dd8ad, 0xe4d12bf37061256021f248c7908c5b, 0x005e75], + }, + BigNum { + limbs: [0x68f56a0dbafbccb765983579922754, 0xc281fdaa0ce70dd9b615c0da4778f8, 0x001577], + }, + BigNum { + limbs: [0x8497fcc49d0aa40b429d38e35259ba, 0x99a26cd1eb74403a1340a2d6a1bb64, 0x003475], + }, + BigNum { + limbs: [0x390c063b61515af4bd62c61cada647, 0x0db0bccb91d3f2ffc4c766cb3649ef, 0x003f78], + }, + BigNum { + limbs: [0x3be6ce0d94c6fa2af3b166edf32104, 0xdd86f64b2b584cdc6ccbf204e89982, 0x00386c], + }, + BigNum { + limbs: [0x81bd34f2699504d50c4e98120cdefd, 0xc9cc335251efe65d6b3c179cef6bd1, 0x003b80], + }, + BigNum { + limbs: [0xfe230845799344541d2d22e8741f95, 0xb81eac8a6b93f11de21f95fdc20639, 0x0019a3], + }, + BigNum { + limbs: [0xbf80faba84c8baabe2d2dc178be06c, 0xef347d1311b4421bf5e873a415ff19, 0x005a49], + }, + BigNum { + limbs: [0xfe8d642079b117e2b984147df9fa0c, 0x54602f81f7daddb4495985ce8faabc, 0x00268a], + }, + BigNum { + limbs: [0xbf169edf84aae71d467bea820605f5, 0x52f2fa1b856d55858eae83d3485a96, 0x004d63], + }, + BigNum { + limbs: [0xac10045770c08b8c60ff7cd1cb44b7, 0x548cbf1cc89059674f9cea35a7984c, 0x002455], + }, + BigNum { + limbs: [0x1193fea88d9b73739f00822e34bb4a, 0x52c66a80b4b7d9d2886b1f6c306d07, 0x004f98], + }, + BigNum { + limbs: [0x3682e1dd8e09eea1bf6608e5f02061, 0x4966d963f03feefe5024fc878e21d5, 0x007052], + }, + BigNum { + limbs: [0x872121227052105e4099f61a0fdfa0, 0x5dec50398d08443b87e30d1a49e37e, 0x00039b], + }, + BigNum { + limbs: [0x2e052cb748d5c0c04adf434b4e09ff, 0xf2bbe685dbe29aa1cac699a261938d, 0x00218a], + }, + BigNum { + limbs: [0x8f9ed648b5863e3fb520bbb4b1f602, 0xb4974317a16598980d416fff7671c6, 0x005262], + }, + BigNum { + limbs: [0x6d28a175fac82773be83cb00213581, 0x05a1a5d4698d5ee9e090bc999a0261, 0x002710], + }, + BigNum { + limbs: [0x507b618a0393d78c417c33ffdeca80, 0xa1b183c913bad44ff7774d083e02f2, 0x004cdd], + }, + BigNum { + limbs: [0xc71ad10f1cb57ed38797c866a2d324, 0x5a3fce4392a5b6641cef26ddbb1e10, 0x00543a], + }, + BigNum { + limbs: [0xf68931f0e1a6802c786836995d2cdd, 0x4d135b59eaa27cd5bb18e2c41ce742, 0x001fb3], + }, + BigNum { + limbs: [0x3b0e7eef22839ee457f3a8335b7c95, 0x7dc08530f7efe3a32515bfe9049360, 0x000a3e], + }, + BigNum { + limbs: [0x82958410dbd8601ba80c56cca4836c, 0x2992a46c85584f96b2f249b8d371f3, 0x0069af], + }, + BigNum { + limbs: [0x010d11ad78e67deb7dbe225750689c, 0xc1ce8fe57512b096e947760ffd71d2, 0x001478], + }, + BigNum { + limbs: [0xbc96f152857581148241dca8af9765, 0xe58499b8083582a2eec09391da9381, 0x005f74], + }, + BigNum { + limbs: [0x0d7b400461dcb7a69e3537d4ebbcf1, 0xf8671d4058336373dcdb72a544f8c7, 0x000aab], + }, + BigNum { + limbs: [0xb028c2fb9c7f475961cac72b144310, 0xaeec0c5d2514cfc5fb2c96fc930c8c, 0x006941], + }, + BigNum { + limbs: [0xbcb5780f8ed96932b18098666562a4, 0xbd71f2c2ea600d38d4f3d4ea6f549f, 0x004256], + }, + BigNum { + limbs: [0x00ee8af06f8295cd4e7f66999a9d5d, 0xe9e136da92e82601031434b768b0b4, 0x003196], + }, + BigNum { + limbs: [0x38d17454846f3841f49d74735570ea, 0x165fbd58c5a8755dc5938773609f0e, 0x0003ed], + }, + BigNum { + limbs: [0x84d28eab79ecc6be0b628a8caa8f17, 0x90f36c44b79fbddc1274822e776645, 0x007000], + }, + BigNum { + limbs: [0xfcb916c626e0e9bc29f6173ab70b65, 0x3d073a9c55cdd85ea2235bfe4d4804, 0x005b5b], + }, + BigNum { + limbs: [0xc0eaec39d77b1543d609e7c548f49c, 0x6a4bef01277a5adb35e4ada38abd4e, 0x001892], + }, + BigNum { + limbs: [0xc37b9a1dfaaf4193724cef26d4b27a, 0x9c2994f61e115e9f0991476ba4f346, 0x004ae3], + }, + BigNum { + limbs: [0xfa2868e203acbd6c8db30fd92b4d87, 0x0b2994a75f36d49ace76c23633120c, 0x00290a], + }, + BigNum { + limbs: [0x377a276c1c5329c1018e5e8284261e, 0xd80ac1ce9fe1755c33da05a269c910, 0x0053fd], + }, + BigNum { + limbs: [0x8629db93e208d53efe71a07d7bd9e3, 0xcf4867cedd66bddda42e03ff6e3c43, 0x001fef], + }, + BigNum { + limbs: [0x45dc24dbfdb880c6163bc865dd8bfa, 0x904b30cf1672d3253aaf3beeedf700, 0x0032fe], + }, + BigNum { + limbs: [0x77c7de2400a37e39e9c4369a227407, 0x1707f8ce66d560149d58cdb2ea0e53, 0x0040ef], + }, + BigNum { + limbs: [0xba16207a4ed9735b36b24c6dd788a9, 0x460aee018137df4643f06e17e34196, 0x001af7], + }, + BigNum { + limbs: [0x038de285af828ba4c94db292287758, 0x61483b9bfc1053f394179b89f4c3bd, 0x0058f6], + }, + BigNum { + limbs: [0x5051b124a48d44acceb7bbce4cc395, 0x49a9f4f29b3a002bc0adb6fdc0f664, 0x006fcb], + }, + BigNum { + limbs: [0x6d5251db59ceba5331484331b33c6c, 0x5da934aae20e330e175a52a4170eef, 0x000422], + }, + BigNum { + limbs: [0xdce6f23222f777c94bdd9d3ac706d2, 0x815b057415a7e25cd2e9271b27153d, 0x000455], + }, + BigNum { + limbs: [0xe0bd10cddb648736b42261c538f92f, 0x25f8242967a050dd051ee286b0f015, 0x006f98], + }, + BigNum { + limbs: [0x66373acc16d886ceddaf21e77fc517, 0xa9919ec5166a85cf008f30e27fbec0, 0x0010b0], + }, + BigNum { + limbs: [0x576cc833e78378312250dd18803aea, 0xfdc18ad866ddad6ad778d8bf584693, 0x00633c], + }, + BigNum { + limbs: [0xcf5dfbcdebe183e6e206d7bdffab49, 0x14f3cf6874649b5de195f3b709f16f, 0x000d09], + }, + BigNum { + limbs: [0xee460732127a7b191df927420054b8, 0x925f5a3508e397dbf67215eace13e3, 0x0066e4], + }, + BigNum { + limbs: [0x620e2e04af3cb774d607ae86c135cd, 0x379a5ac72106a7f3d9eeeea2803ed8, 0x002032], + }, + BigNum { + limbs: [0x5b95d4fb4f1f478b29f850793eca34, 0x6fb8ced65c418b45fe191aff57c67b, 0x0053bb], + }, + BigNum { + limbs: [0xbe8983b787f09a3fda16b703ae79d7, 0xc42675dd613b3489b26bb21f6c258f, 0x0056da], + }, + BigNum { + limbs: [0xff1a7f48766b64c025e947fc51862a, 0xe32cb3c01c0cfeb0259c57826bdfc3, 0x001d12], + }, + BigNum { + limbs: [0x4e939154c03c580acc2b5ef5216f61, 0x9334769b3974daaf8d6debc056151e, 0x001ead], + }, + BigNum { + limbs: [0x6f1071ab3e1fa6f533d4a00ade90a0, 0x141eb30243d3588a4a9a1de181f035, 0x005540], + }, + BigNum { + limbs: [0x6b31e32115dd92996c19a5568c67f4, 0x5347f1132f4d1e57fcce6b05f90380, 0x0036c7], + }, + BigNum { + limbs: [0x52721fdee87e6c6693e659a973980d, 0x540b388a4dfb14e1db399e9bdf01d3, 0x003d26], + }, + BigNum { + limbs: [0xf2bdccb70a6ef709cbca5b7a65aab2, 0xbd04f7f6b469d3ddff14a41bbd9dd2, 0x0036f1], + }, + BigNum { + limbs: [0xcae63648f3ed07f63435a3859a554f, 0xea4e31a6c8de5f5bd8f365861a6780, 0x003cfb], + }, + BigNum { + limbs: [0x66f13b1ab5685cd8cdc7146b807204, 0x9469afda287a4012a1a3ae0c60acc9, 0x004fd2], + }, + BigNum { + limbs: [0x56b2c7e548f3a2273238ea947f8dfd, 0x12e979c354cdf32736645b9577588a, 0x00241b], + }, + BigNum { + limbs: [0x7853b66b61d5200372e53f548f8ce3, 0x87ce2ad498442d5e019288a337976e, 0x003b03], + }, + BigNum { + limbs: [0x45504c949c86defc8d1abfab70731e, 0x1f84fec8e50405dbd67580fea06de5, 0x0038ea], + }, + BigNum { + limbs: [0x70bff3af461bc0ca31c421a753efa0, 0xa63dfd84ffaec090ac87917778335b, 0x0056b5], + }, + BigNum { + limbs: [0x4ce40f50b8403e35ce3bdd58ac1061, 0x01152c187d9972a92b80782a5fd1f8, 0x001d38], + }, + BigNum { + limbs: [0xc5373ec9c8343b1e4ca4d8ce229e36, 0x5d229a04387d9c5d5a214d0488f0ef, 0x00455e], + }, + BigNum { + limbs: [0xf86cc4363627c3e1b35b2631dd61cb, 0x4a308f9944ca96dc7de6bc9d4f1463, 0x002e8f], + }, + BigNum { + limbs: [0x5dcdee102c3ba87f2f48f3eb5d88d3, 0xa72bf8109fde405a5c49fdd0824580, 0x0013de], + }, + BigNum { + limbs: [0x5fd614efd2205680d0b70b14a2772e, 0x0027318cdd69f2df7bbe0bd155bfd3, 0x00600f], + }, + BigNum { + limbs: [0xd2826073fe1c3d9541142e4bebfa33, 0x8b9ab81f31622738fb770b6f7db0fd, 0x006321], + }, + BigNum { + limbs: [0xeb21a28c003fc16abeebd0b41405ce, 0x1bb8717e4be60c00dc90fe325a5455, 0x0010cc], + }, + BigNum { + limbs: [0x2655a4f2a71153bc164249c8f6ae4c, 0xed9f7c0b36665bc1b21db066728eec, 0x00230a], + }, + BigNum { + limbs: [0x974e5e0d574aab43e9bdb5370951b5, 0xb9b3ad9246e1d77825ea593b657667, 0x0050e2], + }, + BigNum { + limbs: [0x47c28ba9fd6add445358152fe9e30e, 0x4d75bff8bc844cda745819c6a69193, 0x000182], + }, + BigNum { + limbs: [0x75e1775600f121bbaca7e9d0161cf3, 0x59dd69a4c0c3e65f63afefdb3173c0, 0x00726b], + }, + BigNum { + limbs: [0xeccbd814da06896454b1247b57539e, 0xde70f6f89e7b9b7862421542c6ade1, 0x002cc2], + }, + BigNum { + limbs: [0xd0d82aeb2455759bab4eda84a8ac63, 0xc8e232a4decc97c175c5f45f115771, 0x00472a], + }, + BigNum { + limbs: [0x94d9614b087f3c1980045ae4b78723, 0xd97a1ce103e07e6e65b246bd533015, 0x0044dd], + }, + BigNum { + limbs: [0x28caa1b4f5dcc2e67ffba41b4878de, 0xcdd90cbc7967b4cb7255c2e484d53e, 0x002f0f], + }, + BigNum { + limbs: [0x51fbc98b29ffba9c5a4354bbba58aa, 0x3cb2c5f57ea5b26b1d49f27a08e557, 0x003f3d], + }, + BigNum { + limbs: [0x6ba83974d45c4463a5bcaa4445a757, 0x6aa063a7fea280cebabe1727cf1ffc, 0x0034b0], + }, + BigNum { + limbs: [0x61db1d1b9c0b08cb773551758ecaa4, 0xe37eb8a506acf1f91c7b55db3a8be4, 0x00593a], + }, + BigNum { + limbs: [0x5bc8e5e46250f63488caad8a71355d, 0xc3d470f8769b4140bb8cb3c69d796f, 0x001ab2], + }, + BigNum { + limbs: [0x444d8a302c8da96e37bfb94751e58e, 0x6690ae243ef976f6b24227dd5cb253, 0x005ec0], + }, + BigNum { + limbs: [0x795678cfd1ce5591c84045b8ae1a73, 0x40c27b793e4ebc4325c5e1c47b5300, 0x00152d], + }, + BigNum { + limbs: [0x3dfdc600984107cda32780a77f8f5f, 0xa1529986e0edb5dd9e2d3dd12687a9, 0x002eb2], + }, + BigNum { + limbs: [0x7fa63cff661af7325cd87e588070a2, 0x060090169c5a7d5c39dacbd0b17daa, 0x00453b], + }, + BigNum { + limbs: [0x2489344a456b47cae21e3bd7150af7, 0xea05243f47f6f7db687fb68d902acb, 0x005750], + }, + BigNum { + limbs: [0x991aceb5b8f0b7351de1c328eaf50a, 0xbd4e055e35513b5e6f88531447da88, 0x001c9c], + }, + BigNum { + limbs: [0xca05a65a819a818d65f283960c64f6, 0xfcc67803f85a9d91f530887530a761, 0x004c36], + }, + BigNum { + limbs: [0xf39e5ca57cc17d729a0d7b69f39b0b, 0xaa8cb19984ed95a7e2d7812ca75df1, 0x0027b6], + }, + BigNum { + limbs: [0x5c3a002f47ebc42d07692bea45f396, 0xa5fa42eabba5613a5c9f9b3231c3b6, 0x007192], + }, + BigNum { + limbs: [0x616a02d0b6703ad2f896d315ba0c6b, 0x0158e6b2c1a2d1ff7b686e6fa6419d, 0x00025b], + }, + BigNum { + limbs: [0xeceaad029bec7ce943f9b1660bb1a9, 0x59ff4eddaac6fee6711ca11606eba0, 0x001658], + }, + BigNum { + limbs: [0xd0b955fd626f8216bc064d99f44e58, 0x4d53dabfd281345366eb688bd119b2, 0x005d95], + }, + BigNum { + limbs: [0x218f1dd4394b56b4953e423b9c04e0, 0x87019792e16ae4979dbd6023b97478, 0x004970], + }, + BigNum { + limbs: [0x9c14e52bc510a84b6ac1bcc463fb21, 0x2051920a9bdd4ea23a4aa97e1e90db, 0x002a7d], + }, + BigNum { + limbs: [0x37f73343b719ecede15ecd60b3df65, 0x624c06087cb6ad30ccd8f447ed080a, 0x0059ba], + }, + BigNum { + limbs: [0x85accfbc474212121ea1319f4c209c, 0x45072395009186090b2f1559eafd49, 0x001a33], + }, + BigNum { + limbs: [0x467cc6e972110032c5ece8b055e8a9, 0x62d2f2b315a015393dcc435c95bf3a, 0x000274], + }, + BigNum { + limbs: [0x77273c168c4afecd3a13164faa1758, 0x448036ea67a81e009a3bc645424619, 0x007179], + }, + BigNum { + limbs: [0xc2941dbdeb3eff86bbc2821a7c954d, 0x4e5fe188f49e4f87f802ec2872f93e, 0x0043c8], + }, + BigNum { + limbs: [0xfb0fe542131cff79443d7ce5836ab4, 0x58f3481488a9e3b1e0051d79650c14, 0x003025], + }, + BigNum { + limbs: [0x5315b31507ceb8d2aa93f770b9c8e1, 0x9106ee3a43fd12880e5eefdbae2ab6, 0x004b9b], + }, + BigNum { + limbs: [0x6a8e4feaf68d462d556c078f463720, 0x164c3b63394b20b1c9a919c629da9d, 0x002852], + }, + BigNum { + limbs: [0xcbd2211181fe944077e77ff3104df5, 0xaa51988e575837557c3b5ebdfea8e8, 0x0060c6], + }, + BigNum { + limbs: [0xf1d1e1ee7c5d6abf88187f0cefb20c, 0xfd01910f25effbe45bccaae3d95c6a, 0x001326], + }, + BigNum { + limbs: [0xe7ea60eb7cbec10bffa78086fdf997, 0xf61c4bca67ebd5e3fdd1c6dc2cea86, 0x005f7c], + }, + BigNum { + limbs: [0xd5b9a214819d3df400587e7902066a, 0xb136ddd3155c5d55da3642c5ab1acc, 0x001470], + }, + BigNum { + limbs: [0xade32f51e3b92db7b324b4eaa555a9, 0xf91f5315f9552e1b95e6b724cde4ee, 0x0008b5], + }, + BigNum { + limbs: [0x0fc0d3ae1aa2d1484cdb4a155aaa58, 0xae33d68783f3051e4221527d0a2065, 0x006b37], + }, + BigNum { + limbs: [0xf8a4660d27320008b429fd878ffa9e, 0x7d7b53ab5425e3b013ebe22d4afdb4, 0x003702], + }, + BigNum { + limbs: [0xc4ff9cf2d729fef74bd60178700563, 0x29d7d5f229224f89c41c27748d079e, 0x003ceb], + }, + BigNum { + limbs: [0xd3a1081b7dc34879cad7e40b802754, 0xb1694de1defdc9b305be4031baafd7, 0x004d4c], + }, + BigNum { + limbs: [0xea02fae48098b68635281af47fd8ad, 0xf5e9dbbb9e4a6986d249c9701d557b, 0x0026a0], + }, + BigNum { + limbs: [0xbb4de382da6cec9b679276f6e92cd5, 0x81b1b3b9f48d763ed728d201436845, 0x004de2], + }, + BigNum { + limbs: [0x02561f7d23ef1264986d880916d32c, 0x25a175e388babcfb00df37a0949d0e, 0x00260b], + }, + BigNum { + limbs: [0xfea794c0e0d6b46940f19dbc185b43, 0xe9cede62c18b938f1b083fb184c56e, 0x000168], + }, + BigNum { + limbs: [0xbefc6e3f1d854a96bf0e6143e7a4be, 0xbd844b3abbbc9faabcffc9f0533fe4, 0x007284], + }, + BigNum { + limbs: [0xadf465bebef8ccebfad58878130b3d, 0xc395d5f911b303cec6f905265aae1a, 0x00446a], + }, + BigNum { + limbs: [0x0faf9d413f633214052a7687ecf4c4, 0xe3bd53a46b952f6b110f047b7d5739, 0x002f82], + }, + BigNum { + limbs: [0x9f1ddab1d4fa82932aebc0965a4202, 0xf36fa2b47ddb5a73c6e65398047a50, 0x000364], + }, + BigNum { + limbs: [0x1e86284e29617c6cd5143e69a5bdff, 0xb3e386e8ff6cd8c61121b609d38b03, 0x007088], + }, + BigNum { + limbs: [0xc769faa4402f293c314964fd4408c9, 0x849c98537bacc5b2f69cad1dade64b, 0x00177b], + }, + BigNum { + limbs: [0xf63a085bbe2cd5c3ceb69a02bbf738, 0x22b6914a019b6d86e16b5c842a1f07, 0x005c72], + }, + BigNum { + limbs: [0x79365f811d5769926a3c0cfe4005c3, 0x79a31835c7e2ccb2e5196d0deb2ba5, 0x003864], + }, + BigNum { + limbs: [0x446da37ee104956d95c3f201bffa3e, 0x2db01167b5656686f2ee9c93ecd9ae, 0x003b89], + }, + BigNum { + limbs: [0x6df44639124f2ba81be6d8edda7638, 0x668413c019df4374af12eabf982893, 0x006f87], + }, + BigNum { + limbs: [0x4fafbcc6ec0cd357e41926122589c9, 0x40cf15dd6368efc528f51ee23fdcc0, 0x000466], + }, + BigNum { + limbs: [0x43a907c09f060427d329827aa98fff, 0xb856c1b52cf9492d043c2e74cf231b, 0x00354b], + }, + BigNum { + limbs: [0x79fafb3f5f55fad82cd67c85567002, 0xeefc67e8504eea0cd3cbdb2d08e238, 0x003ea1], + }, + BigNum { + limbs: [0xb9bf92bae7e7fe896a2d7f2d01187c, 0x0f53d6c54c0941a9861e5c72b0d523, 0x000277], + }, + BigNum { + limbs: [0x03e470451674007695d27fd2fee785, 0x97ff52d8313ef19051e9ad2f273030, 0x007176], + }, + BigNum { + limbs: [0x1b0da0ac3997d798ff94a498f96017, 0x732533ddaf1a10b0beb4fee8a1769d, 0x006801], + }, + BigNum { + limbs: [0xa2966253c4c42767006b5a67069fea, 0x342df5bfce2e228919530ab9368eb6, 0x000bec], + }, + BigNum { + limbs: [0x26c30fdbf9ba3500c4ee9032afcc94, 0x105c8329a6955caccf15dda0d8ad03, 0x002fff], + }, + BigNum { + limbs: [0x96e0f32404a1c9ff3b116ecd50336d, 0x96f6a673d6b2d68d08f22c00ff5850, 0x0043ee], + }, + BigNum { + limbs: [0x236a92397b76349a0f0a5f9fbb73b7, 0x6e8046dfa7d7b0dba6fd299e303d1d, 0x000cc2], + }, + BigNum { + limbs: [0x9a3970c682e5ca65f0f59f60448c4a, 0x38d2e2bdd570825e310ae003a7c836, 0x00672b], + }, + BigNum { + limbs: [0x3b84c03955634d9dafd3593bc10665, 0x7aa88f051d3d6e47e7481dbd70b738, 0x004f3a], + }, + BigNum { + limbs: [0x821f42c6a8f8b162502ca5c43ef99c, 0x2caa9a98600ac4f1f0bfebe4674e1b, 0x0024b3], + }, + BigNum { + limbs: [0x0a98ca924c9853cdf99d946705e265, 0xb82069c37ab55ff8776e9d4b000112, 0x002b67], + }, + BigNum { + limbs: [0xb30b386db1c3ab3206626a98fa1d9c, 0xef32bfda0292d34160996c56d80441, 0x004885], + }, + BigNum { + limbs: [0x50631ef088678db03b789302413b7c, 0xcd6afbf40e773e053844b1d7c4c0ec, 0x00455e], + }, + BigNum { + limbs: [0x6d40e40f75f4714fc4876bfdbec485, 0xd9e82da96ed0f5349fc357ca134467, 0x002e8e], + }, + BigNum { + limbs: [0x1279da43e3f45b1ede5de981ebf8f8, 0xce9f04a28d115ecc4f16874611b142, 0x000db4], + }, + BigNum { + limbs: [0xab2a28bc1a67a3e121a2157e140709, 0xd8b424faf036d46d88f1825bc65411, 0x006638], + }, + BigNum { + limbs: [0x91e47e376c2e5b6ff7d691b3198b23, 0xe821190696fc5d6ecc9a8405e05629, 0x005133], + }, + BigNum { + limbs: [0x2bbf84c8922da39008296d4ce674de, 0xbf321096e64bd5cb0b6d859bf7af2a, 0x0022b9], + }, + BigNum { + limbs: [0xc528e11bb8f362bbb3efec893f294f, 0x10302a2f39be6d2099caa9324c56d8, 0x005679], + }, + BigNum { + limbs: [0xf87b21e445689c444c101276c0d6b2, 0x9722ff6e4389c6193e3d606f8bae7a, 0x001d74], + }, + BigNum { + limbs: [0xd83c84ed265e50977e9c4587dfe508, 0x739e84003bec789aed56b517a468ea, 0x000076], + }, + BigNum { + limbs: [0xe5677e12d7fdae688163b978201af9, 0x33b4a59d415bba9eeab1548a339c68, 0x007377], + }, + BigNum { + limbs: [0x235c660dcd47d87bf14d05ce8047ea, 0xef848d536f6afc0071a614f0a4770c, 0x00643c], + }, + BigNum { + limbs: [0x9a479cf2311426840eb2f9317fb817, 0xb7ce9c4a0ddd37396661f4b1338e47, 0x000fb0], + }, + BigNum { + limbs: [0x7f1ed0313f9e0fe150bea48f8d1dea, 0xe117dc9238c29fb9c14a0e4d763a00, 0x0024c9], + }, + BigNum { + limbs: [0x3e8532cebebdef1eaf415a7072e217, 0xc63b4d0b4485938016bdfb5461cb53, 0x004f23], + }, + BigNum { + limbs: [0x81791f3a6308454c51bb17349f0783, 0xe041d03cc117b367e019a720931783, 0x001d2d], + }, + BigNum { + limbs: [0x3c2ae3c59b53b9b3ae44e7cb60f87e, 0xc7115960bc307fd1f7ee628144edd0, 0x0056bf], + }, + BigNum { + limbs: [0xc3ba13d252c0e88f18500f83965a8e, 0x641539037f771f1b83b02e67527a4d, 0x0055b6], + }, + BigNum { + limbs: [0xf9e9ef2dab9b1670e7afef7c69a573, 0x433df099fdd1141e5457db3a858b05, 0x001e37], + }, + BigNum { + limbs: [0x5502a77ae6332fa6600254a7d754be, 0x4cdc36f88410f5d7bfef36de3b7834, 0x00027e], + }, + BigNum { + limbs: [0x68a15b851828cf599ffdaa5828ab43, 0x5a76f2a4f9373d621818d2c39c8d1f, 0x00716f], + }, + BigNum { + limbs: [0x8d41cd7ab1753ea7303c63152c1640, 0x4a2297423679aee4b37190faa6c7d5, 0x004f91], + }, + BigNum { + limbs: [0x306235854ce6c058cfc39bead3e9c1, 0x5d30925b46ce8455249678a7313d7e, 0x00245c], + }, + BigNum { + limbs: [0x87cba345c1658b64271241619da532, 0x46ae7297a21a8f4310cd2220399c88, 0x0037d2], + }, + BigNum { + limbs: [0x35d85fba3cf6739bd8edbd9e625acf, 0x60a4b705db2da3f6c73ae7819e68cb, 0x003c1b], + }, + BigNum { + limbs: [0x2651d853c9eca95343e645167ee188, 0x1331dca429aad2f2eb5255c656c902, 0x00258b], + }, + BigNum { + limbs: [0x97522aac346f55acbc19b9e9811e79, 0x94214cf9539d6046ecb5b3db813c51, 0x004e62], + }, + BigNum { + limbs: [0x5390d0e60bdfb3b93907b7592ea586, 0xe4164e07f2ab58063db3959fe0ef23, 0x003596], + }, + BigNum { + limbs: [0x6a133219f27c4b46c6f847a6d15a7b, 0xc33cdb958a9cdb339a547401f71630, 0x003e56], + }, + BigNum { + limbs: [0xb8b209e98b7e0f2fa61198c7de7bd4, 0x75e0a5e4145fb34bad5f4e9cfdb6f3, 0x003811], + }, + BigNum { + limbs: [0x04f1f91672ddefd059ee663821842d, 0x317283b968e87fee2aa8bb04da4e60, 0x003bdc], + }, + BigNum { + limbs: [0x6e76cf4f775ba9242cce972bd82d65, 0x812b15a0625c3583f1f0c36ae9d2f5, 0x0011d0], + }, + BigNum { + limbs: [0x4f2d33b0870055dbd33167d427d29c, 0x262813fd1aebfdb5e6174636ee325e, 0x00621d], + }, + BigNum { + limbs: [0x7524de9c02b81cf5045a21462659cf, 0x5fa6f3c3db8efc130759d8cd8c1f9d, 0x0017bf], + }, + BigNum { + limbs: [0x487f2463fba3e20afba5ddb9d9a632, 0x47ac35d9a1b93726d0ae30d44be5b6, 0x005c2e], + }, + BigNum { + limbs: [0x66175e422e5e04509c353c559ce0e4, 0xc2a34bbcc1de81c01f6a38e43c7150, 0x0028ff], + }, + BigNum { + limbs: [0x578ca4bdcffdfaaf63cac2aa631f1d, 0xe4afdde0bb69b179b89dd0bd9b9403, 0x004aed], + }, + BigNum { + limbs: [0xc17fed2efa16c0bf255236c073301f, 0x95c68591a521990ffbee982e626b47, 0x00713f], + }, + BigNum { + limbs: [0xfc2415d104453e40daadc83f8ccfe2, 0x118ca40bd8269a29dc197173759a0b, 0x0002ae], + }, + BigNum { + limbs: [0x37692cb91745a591e0a5ec1dbb4517, 0x2b1236ce1f78bd6f986d418b46797f, 0x006418], + }, + BigNum { + limbs: [0x863ad646e716596e1f5a12e244baea, 0x7c40f2cf5dcf75ca3f9ac816918bd4, 0x000fd5], + }, + BigNum { + limbs: [0x743adadff7878293e97ac2c7bf5f23, 0x47fe2645c3ccca5cf55c4cee43e80b, 0x005d20], + }, + BigNum { + limbs: [0x4969282006d47c6c16853c3840a0de, 0x5f550357b97b68dce2abbcb3941d48, 0x0016cd], + }, + BigNum { + limbs: [0x1f5b434515524094eb42b26bd7cec8, 0x5d84c1e11520848c1259d579deff61, 0x006ae4], + }, + BigNum { + limbs: [0x9e48bfbae909be6b14bd4c94283139, 0x49ce67bc6827aeadc5ae3427f905f2, 0x000909], + }, + BigNum { + limbs: [0x7a83f4b3620a8bc1ab543280174b65, 0x4fe4101d764247b839b40665b9ab31, 0x004d4e], + }, + BigNum { + limbs: [0x43200e4c9c51733e54abcc7fe8b49c, 0x576f19800705eb819e54033c1e5a22, 0x00269f], + }, + BigNum { + limbs: [0x16e6f88f393313659ed34f1ba7c758, 0x479f6d036dbe156e6d5f1cd1d95835, 0x004f05], + }, + BigNum { + limbs: [0xa6bd0a70c528eb9a612cafe45838a9, 0x5fb3bc9a0f8a1dcb6aa8eccffead1e, 0x0024e8], + }, + BigNum { + limbs: [0xb4744f8cf411c654449ec24eff1d4a, 0xae41472c7c0e590ce3fe74cee9cc36, 0x0061df], + }, + BigNum { + limbs: [0x092fb3730a4a38abbb613cb100e2b7, 0xf911e2710139da2cf40994d2ee391d, 0x00120d], + }, + BigNum { + limbs: [0x1b7ec3a436588065b8118cdf67b4c8, 0x457a8a468be812b6b2973fbcaa7c77, 0x003d49], + }, + BigNum { + limbs: [0xa2253f5bc8037e9a47ee7220984b39, 0x61d89f56f16020832570c9e52d88dc, 0x0036a4], + }, + BigNum { + limbs: [0x3412c9cd2a9b3731e9ab2413ce6403, 0x8dc1af53e39e07ae39bf50998fa407, 0x004686], + }, + BigNum { + limbs: [0x89913932d3c0c7ce1654daec319bfe, 0x19917a4999aa2b8b9e48b90848614c, 0x002d67], + }, + BigNum { + limbs: [0x89c1bd2dd357cf20f00f1e8819ff37, 0x2f0c9a6585b33115765c3d23d4949e, 0x003fb7], + }, + BigNum { + limbs: [0x33e245d22b042fdf0ff0e077e600ca, 0x78468f37f795022461abcc7e0370b5, 0x003436], + }, + BigNum { + limbs: [0xdd464b1c886d78042cef5c92e33195, 0x557b73b7e48b242355a680b717f586, 0x0025de], + }, + BigNum { + limbs: [0xe05db7e375ee86fbd310a26d1cce6c, 0x51d7b5e598bd0f16826188eac00fcc, 0x004e0f], + }, + BigNum { + limbs: [0xedf499ef3076be4475c4d42b7a4b38, 0x602954fc0ca6ba46042c3d326406d9, 0x0054de], + }, + BigNum { + limbs: [0xcfaf6910cde540bb8a3b2ad485b4c9, 0x4729d4a170a178f3d3dbcc6f73fe79, 0x001f0f], + }, + BigNum { + limbs: [0xfcd31b702dd686c47e6812cda15c19, 0xf2d45a69922bb0a0d0c53a6b502bef, 0x005861], + }, + BigNum { + limbs: [0xc0d0e78fd085783b8197ec325ea3e8, 0xb47ecf33eb1c82990742cf3687d963, 0x001b8b], + }, + BigNum { + limbs: [0x8425612ae7e671237bffd304e4fe50, 0xf9f2176adc1d48e923008e61d9c58e, 0x004067], + }, + BigNum { + limbs: [0x397ea1d516758ddc84002bfb1b01b1, 0xad611232a12aea50b5077b3ffe3fc5, 0x003385], + }, + BigNum { + limbs: [0xba411117fb1be0bb14f4f365c1b600, 0x58bcb55478df34740bade3183ade28, 0x000335], + }, + BigNum { + limbs: [0x0362f1e803401e44eb0b0b9a3e4a01, 0x4e9674490468fec5cc5a26899d272b, 0x0070b8], + }, + BigNum { + limbs: [0x9fcc4cdb6f0c10a87049c0b5897879, 0x9424325317c08c97b1f14e6a7312cd, 0x006329], + }, + BigNum { + limbs: [0x1dd7b6248f4fee578fb63e4a768788, 0x132ef74a6587a6a22616bb3764f286, 0x0010c4], + }, + BigNum { + limbs: [0x9f899703062de0d3baa1acb4e5b0f5, 0x090a68110f9092a633fc64cef521ba, 0x0065eb], + }, + BigNum { + limbs: [0x1e1a6bfcf82e1e2c455e524b1a4f0c, 0x9e48c18c6db7a093a40ba4d2e2e399, 0x000e02], + }, + BigNum { + limbs: [0xd96ff2cd8b2f2e472cb619daac4bd2, 0x0f2dbc497381f411d51f076e4466de, 0x00573a], + }, + BigNum { + limbs: [0xe4341032732cd0b8d349e52553b42f, 0x98256d5409c63f2802e90233939e74, 0x001cb3], + }, + BigNum { + limbs: [0xb84c544876a9c789aa8cb2686396ce, 0xa3313c8414b9bdb48d3a72566086b0, 0x006dbc], + }, + BigNum { + limbs: [0x0557aeb787b2377655734c979c6933, 0x0421ed19688e75854acd974b777ea3, 0x000631], + }, + BigNum { + limbs: [0xe7613894a9b5c86333defbe1eafec8, 0xecb3aff7822dc90fd38cadbdeab57e, 0x0051a0], + }, + BigNum { + limbs: [0xd642ca6b54a6369ccc21031e150139, 0xba9f79a5fb1a6a2a047b5be3ed4fd4, 0x00224c], + }, + BigNum { + limbs: [0xbd99d6f7d72c9825c9330c166c32b6, 0x656984a80d04d77f485529026c165c, 0x0008f3], + }, + BigNum { + limbs: [0x000a2c08272f66da36ccf2e993cd4b, 0x41e9a4f570435bba8fb2e09f6beef7, 0x006afa], + }, + BigNum { + limbs: [0x00ac7d231f0dcc77f716ad84ec3f4e, 0x66b749227bc79c2b526b533ce6736d, 0x001236], + }, + BigNum { + limbs: [0xbcf785dcdf4e328808e9517b13c0b3, 0x409be07b0180970e859cb664f191e6, 0x0061b7], + }, + BigNum { + limbs: [0x44df453062977b35a87e2790b1aa63, 0x70a52543032792c60337c3de194e28, 0x004ca4], + }, + BigNum { + limbs: [0x78c4bdcf9bc483ca5781d76f4e559e, 0x36ae045a7a20a073d4d045c3beb72b, 0x002749], + }, + BigNum { + limbs: [0x009c43f83b178b774638c79cf5dc1f, 0x3f6e8235ecae3905159358e0d38ebb, 0x0010c4], + }, + BigNum { + limbs: [0xbd07bf07c3447388b9c737630a23e2, 0x67e4a7679099fa34c274b0c1047698, 0x006329], + }, + BigNum { + limbs: [0x2a876351c2a2215759eb2f01eda387, 0xcb3d2bb78a0443275a5062c289ae5a, 0x0051ae], + }, + BigNum { + limbs: [0x931c9fae3bb9dda8a614cffe125c7a, 0xdc15fde5f343f0127db7a6df4e56f9, 0x00223e], + }, + BigNum { + limbs: [0xa8a3a7f2912453021ed75861bf15b2, 0xb5e368fea545ec1883b4b3c9abedbf, 0x0052cb], + }, + BigNum { + limbs: [0x15005b0d6d37abfde128a69e40ea4f, 0xf16fc09ed8024721545355d82c1794, 0x002121], + }, + BigNum { + limbs: [0x99bf3cadf47500466419f0acda4132, 0x0fab03bda4f931faf27e04e17cf31b, 0x004831], + }, + BigNum { + limbs: [0x23e4c65209e6feb99be60e5325becf, 0x97a825dfd84f013ee58a04c05b1238, 0x002bbc], + }, + BigNum { + limbs: [0x2af33beac6f68086ebdd53f2e05b8c, 0x18dfadf4968e6c38c06e52f5b19228, 0x003f52], + }, + BigNum { + limbs: [0x92b0c71537657e791422ab0d1fa475, 0x8e737ba8e6b9c7011799b6ac26732b, 0x00349b], + }, + BigNum { + limbs: [0x532ae018561e10623432bc97e66621, 0x7d758178f8009d3d7a7ff033103d20, 0x003c40], + }, + BigNum { + limbs: [0x6a7922e7a83dee9dcbcd42681999e0, 0x29dda824854795fc5d88196ec7c833, 0x0037ad], + }, + BigNum { + limbs: [0x5fdb8562ecaee38095506aaf2ed4e8, 0x40fa9e92971b3b44484802d2908ee1, 0x005327], + }, + BigNum { + limbs: [0x5dc87d9d11ad1b7f6aaf9450d12b19, 0x66588b0ae62cf7f58fc006cf477672, 0x0020c6], + }, + BigNum { + limbs: [0xc00587548157407cc2c1b551422388, 0x2433aacc79664fd54b05535ed75859, 0x0006c4], + }, + BigNum { + limbs: [0xfd9e7bab7d04be833d3e49aebddc79, 0x831f7ed103e1e3648d02b64300acf9, 0x006d29], + }, + BigNum { + limbs: [0xabf9af77e7e83655b9012175a8cc3b, 0xe87fd6b51c9c4226a334d73bebcb2b, 0x000b72], + }, + BigNum { + limbs: [0x11aa53881673c8aa46fedd8a5733c6, 0xbed352e860abf11334d33265ec3a28, 0x00687a], + }, + BigNum { + limbs: [0x1fbcdb53444abbab0181bccc152b72, 0xedc455355287c6bf314728f7672064, 0x0068e3], + }, + BigNum { + limbs: [0x9de727acba114354fe7e4233ead48f, 0xb98ed4682ac06c7aa6c0e0aa70e4ef, 0x000b09], + }, + BigNum { + limbs: [0x5603226dcddca5147d1e72d2b5d06e, 0xc12baea83c091f5a39e548082c8807, 0x0064a3], + }, + BigNum { + limbs: [0x67a0e092307f59eb82e18c2d4a2f93, 0xe6277af5413f13df9e22c199ab7d4c, 0x000f49], + }, + BigNum { + limbs: [0x2ed8500386c76648c8e50cb39616ec, 0xef6739da92bc569aa8da7c3ebc2a85, 0x005a31], + }, + BigNum { + limbs: [0x8ecbb2fc779498b7371af24c69e915, 0xb7ebefc2ea8bdc9f2f2d8d631bdace, 0x0019bb], + }, + BigNum { + limbs: [0xfe3a2e7b95c6469630cf3b08b533d4, 0x2a8f2e2a85919ad23e75d282b2d3b6, 0x006802], + }, + BigNum { + limbs: [0xbf69d4846895b869cf30c3f74acc2d, 0x7cc3fb72f7b698679992371f25319c, 0x000beb], + }, + BigNum { + limbs: [0xcae90dfb3c0064c6123fa45fb28c2e, 0xd4cb52a34e3d7519670d09634336d4, 0x0023ce], + }, + BigNum { + limbs: [0xf2baf504c25b9a39edc05aa04d73d3, 0xd287d6fa2f0abe2070fb003e94ce7e, 0x00501e], + }, + BigNum { + limbs: [0x5ca0f385906331980144927341bf91, 0xe145a4a45855dd7ae283294477734f, 0x006964], + }, + BigNum { + limbs: [0x61030f7a6df8cd67febb6c8cbe4070, 0xc60d84f924f255bef584e05d609204, 0x000a88], + }, + BigNum { + limbs: [0xa47df0bc824e8ea22755dfe7bb9750, 0xfb32f90ffda0d607ced8ce69bc11a9, 0x0046cf], + }, + BigNum { + limbs: [0x192612437c0d705dd8aa1f184468b1, 0xac20308d7fa75d32092f3b381bf3aa, 0x002d1d], + }, + BigNum { + limbs: [0xec958cdc54a63cc7a96c1c03278845, 0x14461e4a1131fa3b366dda348f3893, 0x000791], + }, + BigNum { + limbs: [0xd10e7623a9b5c2385693e2fcd877bc, 0x930d0b536c1638fea19a2f6d48ccbf, 0x006c5c], + }, + BigNum { + limbs: [0xb5abf8c3e544b7cec40dd9d4019abd, 0xe3e21a204627ca43fa39cf3715caad, 0x002b0f], + }, + BigNum { + limbs: [0x07f80a3c191747313bf2252bfe6544, 0xc3710f7d372068f5ddce3a6ac23aa6, 0x0048dd], + }, + BigNum { + limbs: [0x40722db5a2fdf30997af02bca933c9, 0x56c300383c82d6ab35ba4d5db3f1f7, 0x00688a], + }, + BigNum { + limbs: [0x7d31d54a5b5e0bf66850fc4356cc38, 0x5090296540c55c8ea24dbc4424135c, 0x000b63], + }, + BigNum { + limbs: [0x564fcbc247d6d6ac9cc344a8cfff5a, 0xeb803c23772e9c6afb16ff55ea304f, 0x004b12], + }, + BigNum { + limbs: [0x6754373db6852853633cba573000a7, 0xbbd2ed7a061996cedcf10a4bedd504, 0x0028da], + }, + BigNum { + limbs: [0xcdd1364d8cfacb93f88bc67b7b3721, 0x665f2b83a6deb7fdceb13345570e65, 0x0022a4], + }, + BigNum { + limbs: [0xefd2ccb27161336c0774388484c8e0, 0x40f3fe19d6697b3c0956d65c80f6ed, 0x005149], + }, + BigNum { + limbs: [0x0e9d35b6ed76adf7713ef284c069ff, 0xcf43948b469bcd431486dfe074f000, 0x002d69], + }, + BigNum { + limbs: [0xaf06cd4910e551088ec10c7b3f9602, 0xd80f951236ac65f6c38129c1631553, 0x004683], + }, + BigNum { + limbs: [0x67d80e0380c9dd297e9abd55f848ed, 0x70bfd3999432941131a1638c47aaf6, 0x002ffb], + }, + BigNum { + limbs: [0x55cbf4fc7d9221d6816541aa07b714, 0x36935603e9159f28a666a615905a5d, 0x0043f2], + }, + BigNum { + limbs: [0x8032cefe4d368500c64cd40384f439, 0xe7910a9571c7e580abd9bdea663091, 0x001d7f], + }, + BigNum { + limbs: [0x3d713401b12579ff39b32afc7b0bc8, 0xbfc21f080b804db92c2e4bb771d4c2, 0x00566d], + }, + BigNum { + limbs: [0x121d901c68c49123c031d18d8c2649, 0xd8bc987365098ce1593a825ad83ef5, 0x006fc8], + }, + BigNum { + limbs: [0xab8672e395976ddc3fce2d7273d9b8, 0xce96912a183ea6587ecd8746ffc65e, 0x000424], + }, + BigNum { + limbs: [0xe9d91c5935fd49f4b6cc71968e9630, 0xab942a7f28f2aeb5acc56ef4dd0686, 0x003414], + }, + BigNum { + limbs: [0xd3cae6a6c85eb50b49338d697169d1, 0xfbbeff1e545584842b429aacfafecc, 0x003fd8], + }, + BigNum { + limbs: [0x40d3a6dad17cfb58253c958a750acb, 0xd11e6709e3150b19cc92362eeaac79, 0x00503d], + }, + BigNum { + limbs: [0x7cd05c252cdf03a7dac369758af536, 0xd634c2939a3328200b75d372ed58da, 0x0023af], + }, + BigNum { + limbs: [0x25871b96c0742e75161473966a53f7, 0x032dedb0b892480e75bd26e4e2ccb3, 0x000e42], + }, + BigNum { + limbs: [0x981ce7693de7d08ae9eb8b6995ac0a, 0xa4253becc4b5eb2b624ae2bcf538a0, 0x0065ab], + }, + BigNum { + limbs: [0x309054dce40022360156e8b623013e, 0xbaeda02a6ff092a7ec5a61b18bafed, 0x003381], + }, + BigNum { + limbs: [0x8d13ae231a5bdcc9fea91649dcfec3, 0xec6589730d57a091ebada7f04c5566, 0x00406b], + }, + BigNum { + limbs: [0xa9d4bab0b502dd86edbea447c942d5, 0x0a33a25ac40a26f8483151cc7c8088, 0x0060a2], + }, + BigNum { + limbs: [0x13cf484f4959217912415ab836bd2c, 0x9d1f8742b93e0c418fd6b7d55b84cb, 0x00134b], + }, + BigNum { + limbs: [0x269bddbc2b9df4ce9a534745bfd613, 0xeb58904936dbdf2b8960761678b86c, 0x001fa4], + }, + BigNum { + limbs: [0x97082543d2be0a3165acb7ba4029ee, 0xbbfa9954466c540e4ea7938b5f4ce7, 0x005448], + }, + BigNum { + limbs: [0xc4c8739d4475765bf0e8fec7a9af22, 0xd3a3929c4bb36342213767f33397b9, 0x002c4c], + }, + BigNum { + limbs: [0xf8db8f62b9e688a40f1700385650df, 0xd3af97013194cff7b6d0a1aea46d99, 0x0047a0], + }, + BigNum { + limbs: [0x8c7a99da8938647073084001146f23, 0x948861351141f0f5093f56be4518ad, 0x000b04], + }, + BigNum { + limbs: [0x3129692575239a8f8cf7befeeb90de, 0x12cac8686c064244cec8b2e392eca6, 0x0068e9], + }, + BigNum { + limbs: [0xab88365b6035748de74346b283c145, 0xa824ff74aa74280674d32da105c40d, 0x004f97], + }, + BigNum { + limbs: [0x121bcca49e268a7218bcb84d7c3ebc, 0xff2e2a28d2d40b336334dc00d24146, 0x002455], + }, + BigNum { + limbs: [0x76d28a9be629fb69e5dad127abcc9f, 0x7efc6393c8cfe857780d4fc57e7f03, 0x003ad2], + }, + BigNum { + limbs: [0x46d17864183203961a252dd8543362, 0x2856c609b4784ae25ffab9dc598650, 0x00391b], + }, ]; diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr new file mode 100644 index 00000000000..648f97948a9 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr @@ -0,0 +1,4 @@ +mod blob_public_inputs; +mod blob; +mod unconstrained_config; +// TODO(#9982): Replace unconstrained_config with config and import ROOTS - calculating ROOTS in unconstrained is insecure. diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/main.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/main.nr deleted file mode 100644 index d4b4b06b957..00000000000 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/main.nr +++ /dev/null @@ -1,605 +0,0 @@ -// ONLY IMPORT ONE OF THESE CONFIGS! The big `config` takes 11 mins to compile. - -// SMALL CONFIG ********************************************************************************* - -// mod smaller_config; - -// use crate::smaller_config::{ -// BigNum, BLS12_381_Fr_Params, F, FIELDS_PER_BLOB, LOG_FIELDS_PER_BLOB, NOIR_FIELDS_PER_BLOB, -// FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB, D, D_INV, ROOTS, NEGATIVE_ROOTS -// }; - -//********************************************************************************* - -// BIG CONFIG ********************************************************************* - -mod config; -mod negative_roots; - -use crate::{ - config::{ - BigNum, F, FIELDS_PER_BLOB, LOG_FIELDS_PER_BLOB, NOIR_FIELDS_PER_BLOB, - FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB, D, D_INV, ROOTS -}, - negative_roots::NEGATIVE_ROOTS -}; - -//********************************************************************************* - -use std::hash::poseidon2; - -global LIMB_MAX = 2.pow_32(120); - -unconstrained fn __batch_invert_impl(mut x: [F; N]) -> [F; N] { - let mut accumulator: F = BigNum::one(); - - let mut temporaries: [F] = &[]; - for i in 0..x.len() { - temporaries = temporaries.push_back(accumulator); - if (x[i].__is_zero() == false) { - accumulator = accumulator.__mul(x[i]); - } - } - - accumulator = accumulator.__invmod(); - let mut T0: F = BigNum::new(); - for i in 0..x.len() { - let idx = x.len() - 1 - i; - if (x[idx].__is_zero() == false) { - T0 = accumulator.__mul(temporaries[idx]); - accumulator = accumulator.__mul(x[idx]); - x[idx] = T0; - } - } - x -} - -// Not used because it resulted in "stack too deep", so it's inlined instead. -unconstrained fn __compute_fracs(z: F, ys: [F; FIELDS_PER_BLOB]) -> [F; FIELDS_PER_BLOB] { - let mut denoms: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; - for i in 0..FIELDS_PER_BLOB { - denoms[i] = z.__add(NEGATIVE_ROOTS[i]); // (z - omega^i) - } - let inv_denoms = __batch_invert_impl(denoms); // 1 / (z - omega^i), for all i - - let mut fracs: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; - for i in 0..FIELDS_PER_BLOB { - let inv_denom = inv_denoms[i]; // 1 / (z - omega^i) - - fracs[i] = ys[i].__mul(inv_denom); // y_i / (z - omega^i) - } - fracs -} - -unconstrained fn __field_to_bytes(x: Field) -> [u8; 32] { - x.to_be_bytes() -} - -unconstrained fn __field_to_bignum(x: Field) -> F { - let x_bytes = __field_to_bytes(x); - - BigNum::from_be_bytes(x_bytes) -} - -unconstrained fn __field_to_bignum_limbs(x: Field) -> [Field; 3] { - __field_to_bignum(x).limbs -} - -// Only works for bignums with modulus larger than the BN Fr size (which is true -// for the bls12-381 Fr field). -fn field_to_bignum(x: Field) -> F { - let __x_limbs = __field_to_bignum_limbs(x); - - let mut check = __x_limbs[3 - 1]; - for i in 1..3 { - check *= LIMB_MAX; - check += __x_limbs[3 - i - 1]; - } - assert(check == x); - - BigNum { limbs: __x_limbs } -} - -// DANGER: this assumes the input bignum is <= the Noir field size. -// Only use this if you _know_ the data being passed in is small enough. -// -// Or actually, maybe it's not unsafe, if Field catches overflows? -fn unsafe_bignum_to_field(x: F) -> Field { - let mut result: Field = 0; - result += x.limbs[3 - 1]; - for i in 1..3 { - result *= LIMB_MAX; - result += x.limbs[3 - i - 1]; - } - result -} - -fn bignum_to_bytes(x: F) -> [u8] { - let limb_0_bytes: [u8; 15] = x.limbs[0].to_be_bytes(); - let limb_1_bytes: [u8; 15] = x.limbs[1].to_be_bytes(); - let limb_2_bytes: [u8; 2] = x.limbs[2].to_be_bytes(); - let mut out: [u8; 32] = [0; 32]; - for i in 0..32 { - out[i] = limb_0_bytes[i]; - out[i+15] = limb_1_bytes[i]; - } - for i in 0..1 { - out[30 + i] = limb_2_bytes[i]; - } - std::static_assert(out.len() == 32, "bad byte decomposition of bignum"); - out -} - -// fn kzg_commitment_to_bytes(c: [Field; 2]) -> [u8] { -// let limb_0_bytes: [u8; 32] = x.limbs[0].to_be_bytes(); -// let limb_1_bytes: [u8; 16] = x.limbs[1].to_be_bytes(); - -// let out = limb_2_bytes.append(limb_1_bytes).append(limb_0_bytes); -// std::static_assert(out.len() == 32, "bad byte decomposition of bignum"); -// out -// } - -// DANGER: this assumes the input bignum is <= the Noir field size. -// Only use this if you _know_ the data being passed in is small enough. -// -// This is inefficient, in the sense that we discard ~1 bit of blob space per -// 255-bit blob field, when converting it to a 245-bit noir field. Over the whole blob, -// we end up discarding 1 bit * 4096 fields_per_blob = 512 bytes = 16 words of data. -// BUT, it is much simpler to do this than to reconstitute 4096 disparate bits across -// the whole blob into 16 words. Perhaps the more complex approach should only be -// taken once aztec blobs are sufficiently full? -fn unsafe_blob_to_fields(blob: [F; FIELDS_PER_BLOB]) -> [Field; FIELDS_PER_BLOB] { - let mut blob_as_fields: [Field; FIELDS_PER_BLOB] = [0; FIELDS_PER_BLOB]; - for i in 0..FIELDS_PER_BLOB { - blob_as_fields[i] = unsafe_bignum_to_field(blob[i]); - } - blob_as_fields -} - -unconstrained fn __unsafe_extract_top_bit(x: F) -> (Field, Field) { - let top_limb: Field = x.limbs[2]; - // The top_limb is at most 2 bytes (16 bits). - // 0x8000 = 2^15 = 32768 - let top_bit: Field = (top_limb as u16 / 0x8000) as Field; - let top_limb_with_top_bit_removed = top_limb - top_bit * 0x8000; - (top_bit, top_limb_with_top_bit_removed) -} - -// DANGER: it's named as "unsafe" because the caller MUST already have checked that -// each blob Field is formatted as (u1, Field). I.e. the "rhs" 254-bits should already -// fit within a Field. If the "rhs" 254 bits is larger than the field modulus, -// there will be an uncaught overflow of the 254-bits in the Field, resulting in -// an unintended tiny value. -// -// For efficiency, the top_bit is kept as a Field throughout. -fn unsafe_extract_top_bit(x: F) -> (Field, F) { - let (top_bit, top_limb_with_top_bit_removed) = __unsafe_extract_top_bit(x); - assert_eq(top_bit * 0x8000 + top_limb_with_top_bit_removed, x.limbs[2]); - - (top_bit, BigNum { limbs: [x.limbs[0], x.limbs[1], top_limb_with_top_bit_removed] }) -} - -fn blob_to_fields__tightly_packed(blob: [F; FIELDS_PER_BLOB]) -> [Field; NOIR_FIELDS_PER_BLOB] { - let mut blob_as_fields: [Field; NOIR_FIELDS_PER_BLOB] = [0; NOIR_FIELDS_PER_BLOB]; - let mut top_bits: [Field; FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB] = [0; FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB]; - - // We start with [F; 4096]. - // The first 4064 of these bls-fields have a 255th bit (counting from 1) which can contribute towards - // new 254-bit noir fields. That is, we extract 4064 top-bits from the first 4064 of the 4096 bls-fields, - // and reconstitute them into 4064 / 254 = 16 extra noir fields. - // So we end up with 4096 + 16 = 4112 noir fields. - - // Here we compute top_bits[0:4064] and blob_as_fields[0:4064]. - for i in 0..FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB { - let (top_bit, field_with_top_bit_removed): (Field, F) = unsafe_extract_top_bit(blob[i]); - top_bits[i] = top_bit; - blob_as_fields[i] = unsafe_bignum_to_field(field_with_top_bit_removed); - } - // Here we compute blob_as_fields[4064:4096]. - for i in FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB..FIELDS_PER_BLOB { - blob_as_fields[i] = unsafe_bignum_to_field(blob[i]); - } - // Here we compute blob_as_fields[4096:4112] from top_bits[0:4064] - for i in FIELDS_PER_BLOB..NOIR_FIELDS_PER_BLOB { - // the top_bits are assumed to be big-endian bit arrays: - let mut reconstituted_field = top_bits[0]; - for j in 1..254 { - let k = (i - FIELDS_PER_BLOB) * 254 + j; - reconstituted_field *= 2; - reconstituted_field += top_bits[k]; - // std::as_witness(reconstituted_field); // this was costing 4048 gates - } - blob_as_fields[i] = reconstituted_field; - } - blob_as_fields -} - -// TODO: We'll want to hash this data -// in an arrangement which makes sense to the aztec protocol. THink about this more. -fn hash_blob(blob: [F; FIELDS_PER_BLOB]) -> Field { - // let mut blob_as_fields = unsafe_blob_to_fields(blob); - let mut blob_as_fields = blob_to_fields__tightly_packed(blob); - let hash = poseidon2::Poseidon2::hash(blob_as_fields, blob_as_fields.len()); - hash -} - -fn hash_kzg_commitment(kzg_commitment: [Field; 2]) -> Field { - let hash = poseidon2::Poseidon2::hash(kzg_commitment, kzg_commitment.len()); - hash -} - -fn compute_challenge(blob: [F; FIELDS_PER_BLOB], kzg_commitment: [Field; 2]) -> Field { - let kzg_commitment_hash = hash_kzg_commitment(kzg_commitment); - let blob_hash = hash_blob(blob); - // let blob_hash = 1; - let challenge = poseidon2::Poseidon2::hash([blob_hash, kzg_commitment_hash], 2); - challenge -} - -// ~500k constraints. 30 MINUTES TO COMPILE (due to all the brillig)! -// -// Note: the kzg_commitment is technically a BLS12-381 point in (Fq, Fq), but -// we haven't implemented Fq; only Fr, and we don't actually need to operate on it; -// we just need the bits of data. So we've simply encoded it as fitting inside a -// [Field; 2], since two 254-bit fields more-than covers 381+1=382 bits. -fn main(blob: [F; FIELDS_PER_BLOB], kzg_commitment: [Field; 2]) -> pub (Field, F, [Field; 2]) { - let challenge_z: Field = compute_challenge(blob, kzg_commitment); - let challenge_z_as_bignum: F = field_to_bignum(challenge_z); - - let y: F = barycentric_evaluate_blob_at_z(challenge_z_as_bignum, blob); - // let y = challenge_z_as_bignum; // dummy constraint for when we want to skip the barycentric stuff in testing. - - // let challenge_z_as_bytes: [u8; 32] = challenge_z.to_be_bytes(); - // let y_as_bytes: [u8] = bignum_to_bytes(y); - // let kzg_commitment_as_bytes: [u8] = () - - // TODO: this return data needs to be TIGHTLY PACKED into bytes. - // TODO: then those bytes need to be sha256-hashed, to produce a single value that can be sent to ethereum for cheap snark verification. On ethereum, the bytes will be sent along with the sha256-hash of the bytes. The bytes will be used in the point evaluation precompile. The sha256-hash will form a part of the public inputs of the zk-snark proof. - (challenge_z, y, kzg_commitment) -} - -/** - * ___d-1 - * z^d - 1 \ omega^i - * p(z) = --------- . / y_i . --------- - * d /____ z - omega^i - * i=0 - * - * p(z) = factor . sum( y_i . num / denom ) - * - * - * where d = 4096 - * - * Precompute: - * - The d roots of unity omega^i (plus maybe their negatives for z - omega^i computations). - * - (1 / d) - * - * @param z - * @param ys - the many y_i's of the blob. - * - * @return y = p(z) - */ -fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { - // z ^ D: - - let mut t1 = z.__mul(z); - - BigNum::evaluate_quadratic_expression([[z]], [[false]], [[z]], [[false]], [t1], [true]); - - let mut t2: F = BigNum::new(); - for _i in 0..LOG_FIELDS_PER_BLOB - 1 { - t2 = t1.__mul(t1); - - // GRATUITOUS USAGE OF as_witness, LIKE THROWING DARTS AT A DARTBOARD AND HOPING THIS HELPS - std::as_witness(t2.limbs[0]); - std::as_witness(t2.limbs[1]); - std::as_witness(t2.limbs[2]); - - BigNum::evaluate_quadratic_expression([[t1]], [[false]], [[t1]], [[false]], [t2], [true]); - - t1 = t2; - std::as_witness(t1.limbs[0]); - std::as_witness(t1.limbs[1]); - std::as_witness(t1.limbs[2]); - } - - let z_pow_d = t1; - - // factor: - - let one: F = BigNum::one(); - - t1 = z_pow_d.__sub(one); - std::as_witness(t1.limbs[0]); - std::as_witness(t1.limbs[1]); - std::as_witness(t1.limbs[2]); - - let factor = t1.__mul(D_INV); - - // (z_pow_d - one) * (D_INV) - factor = 0 - // z_pow_d * D_INV - D_INV - factor = 0 - BigNum::evaluate_quadratic_expression( - [[z_pow_d]], - [[false]], - [[D_INV]], - [[false]], - [factor, D_INV], - [true, true] - ); - - // This version doesn't work: - // BigNum::evaluate_quadratic_expression( - // [[z_pow_d, one]], - // [[false, true]], - // [[D_INV]], - // [[false]], - // [factor], - // [true] - // ); - - // sum: - - let mut sum: F = BigNum::new(); - - // Making a call to this function causes a "stack too deep" error, so I've put the body of that function here, instead: - // let fracs = __compute_fracs(z, ys); // { y_i / (z - omega^i) } - - // Note: it's more efficient (saving 30k constraints) to compute: - // ___d-1 - // \ / y_i \ - // / | --------- | . omega^i - // /____ \ z - omega^i / - // i=0 - // ^^^^^^^^^ - // frac - // - // ... than to compute: - // - // ___d-1 - // \ / omega^i \ - // / y_i . | --------- | - // /____ \ z - omega^i / - // i=0 - // - // perhaps because all the omega^i terms are constant witnesses? - - //***************************************************************** - // This section is only needed because `__compute_fracs` isn't working (stack too deep error). - - let mut fracs: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; // y_i / (z - omega^i), for all i - - let mut denoms = [BigNum::new(); FIELDS_PER_BLOB]; - for i in 0..FIELDS_PER_BLOB { - denoms[i] = z.__add(NEGATIVE_ROOTS[i]); // (z - omega^i) - } - - // If you're seeing a `bug` warning for this line, I think it's fine. - // Ideally, we'd be using `__compute_fracs`, anyway, but we're getting a "stack too deep" error. - let inv_denoms = __batch_invert_impl(denoms); // 1 / (z - omega^i), for all i - - for i in 0..FIELDS_PER_BLOB { - let num = ys[i]; - let inv_denom = inv_denoms[i]; // 1 / (z - omega^i) - - let frac = num.__mul(inv_denom); // y_i * (1 / (z - omega^i)) - - fracs[i] = frac; // y_i / (z - omega^i) - std::as_witness(fracs[i].limbs[0]); - std::as_witness(fracs[i].limbs[1]); - std::as_witness(fracs[i].limbs[2]); - - //End of section that is only needed because `__compute_fracs` isn't working - //***************************************************************** - - // frac <-- ys[i] / (z + neg_roots[i]) - // frac * (z + neg_roots[i]) - ys[i] = 0 - BigNum::evaluate_quadratic_expression( - [[fracs[i]]], - [[false]], - [[z, NEGATIVE_ROOTS[i]]], - [[false, false]], - [ys[i]], - [true] - ); - } - - // OK so...we can add multiple product terms into a sum...but I am not sure how many! - // we are computing 254 * 254 bit products and we need to ensure each product limb doesn't overflow - // each limb is 120 bits => 120 * 120 = 240 bits. - // however when computing a mul we add up to 5 product terms into a single field element => 243 bits (ish) - // when we do a modular reduction we validate that a field element >> 120 bits is less than 2^{126} which implies we have 246 bits to play with - // which implies...we can accomodate up to EIGHT additions of product terms before we risk overflowing - // (this is really messy! I never considered the case of giant linear sequences of products) - let mut sum: F = BigNum::new(); - - // Seeking: - // ___d-1 - // \ omega^i - // sum = / y_i . --------- - // /____ z - omega^i - // i=0 - let NUM_PARTIAL_SUMS = FIELDS_PER_BLOB / 8; - for i in 0..NUM_PARTIAL_SUMS { - let mut partial_sum: F = BigNum::new(); - let mut lhs: [F; 8] = [BigNum::new(); 8]; - let mut rhs = lhs; - - // Seeking: - // ___i*8 + 7 - // \ omega^k - // partial_sum = / y_k . --------- - // /____ z - omega^k - // k=i*8 + 0 - - for j in 0..8 { - let k = i * 8 + j; - lhs[j] = ROOTS[k]; // omega^k - rhs[j] = fracs[k]; // y_k / (z - omega^k) - std::as_witness(lhs[j].limbs[0]); - std::as_witness(lhs[j].limbs[1]); - std::as_witness(lhs[j].limbs[2]); - std::as_witness(rhs[j].limbs[0]); - std::as_witness(rhs[j].limbs[1]); - std::as_witness(rhs[j].limbs[2]); - - // y_k * ( omega^k / (z - omega^k) ) - let summand = ROOTS[k].__mul(fracs[k]); - - // partial_sum + ( y_k * ( omega^k / (z - omega^k) ) -> partial_sum - partial_sum = partial_sum.__add(summand); - std::as_witness(partial_sum.limbs[0]); - std::as_witness(partial_sum.limbs[1]); - std::as_witness(partial_sum.limbs[2]); - } - - // Seeking: - // ___i*8 - 1 ___i*8 + 7 - // \ omega^i \ / y_k \ - // sum_out = / y_i . --------- + / omega^k . | --------- | - // /____ z - omega^i /____ \ z - omega^k / - // 0 k = i*8 - // ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - // sum partial_sum - // - // ... that is: - // - // ___i*8 - 1 ___ 7 - // \ omega^i \ - // sum_out = / y_i . --------- + / lhs[j] . rhs[j] - // /____ z - omega^i /____ - // 0 j = 0 - // ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ - // sum partial_sum - // - - let mut sum_out = sum.__add(partial_sum); - - std::as_witness(sum_out.limbs[0]); - std::as_witness(sum_out.limbs[1]); - std::as_witness(sum_out.limbs[2]); - - // sum_out <- sum + (lhs[0] * rhs[0] + ... + lhs[7] * rhs[7]) - // => (lhs[0] * rhs[0] + ... + lhs[7] * rhs[7]) + sum - sum_out == 0 - BigNum::evaluate_quadratic_expression( - [[lhs[0]], [lhs[1]], [lhs[2]], [lhs[3]], [lhs[4]], [lhs[5]], [lhs[6]], [lhs[7]]], - [[false], [false], [false], [false], [false], [false], [false], [false]], - [[rhs[0]], [rhs[1]], [rhs[2]], [rhs[3]], [rhs[4]], [rhs[5]], [rhs[6]], [rhs[7]]], - [[false], [false], [false], [false], [false], [false], [false], [false]], - [sum, sum_out], - [false, true] - ); - - sum = sum_out; - std::as_witness(sum.limbs[0]); - std::as_witness(sum.limbs[1]); - std::as_witness(sum.limbs[2]); - } - - // y: - - let y = factor.__mul(sum); - - // y <- factor * sum - // => factor * sum - y == 0 - BigNum::evaluate_quadratic_expression([[factor]], [[false]], [[sum]], [[false]], [y], [true]); - - println(y); - - y -} - -#[test] -fn test_main() { - let mut blob: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; - - blob[0] = BigNum { limbs: [0x1234, 0, 0] }; - blob[1] = BigNum { limbs: [0xabcd, 0, 0] }; - blob[2] = BigNum { limbs: [0x69, 0, 0] }; - - let kzg_commitment_in = [1, 2]; // this is made-up nonsense. - - let (challenge_z, y, kzg_commitment) = main(blob, kzg_commitment_in); - - println(challenge_z); - println(y); - println(kzg_commitment); -} - -#[test] -fn test_print() { - let x = 4; - println(f"x: {x}"); -} - -#[test] -fn test_bignum_conversions() { - let x = 1000; - let x_bignum = __field_to_bignum(x); - println(f"x_bignum: {x_bignum}"); -} - -// nargo test --show-output test_barycentric -#[test] -fn test_barycentric() { - let z: F = BigNum { limbs: [2, 0, 0] }; - - // many y's form a blob: - let mut ys: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; - - ys[0] = BigNum { limbs: [0x1234, 0, 0] }; - ys[1] = BigNum { limbs: [0xabcd, 0, 0] }; - ys[2] = BigNum { limbs: [0x69, 0, 0] }; - - // evaluate the blob at z = 2 to yield y: - let y = barycentric_evaluate_blob_at_z(z, ys); - - let mut expected_y: [Field; 3] = [0; 3]; - if (FIELDS_PER_BLOB == 4096) { - // Computed with the eth consensus specs py lib - expected_y = [ - 0x0c62e352a428e8e9842eadc1c106bd, - 0x902c5b4968d755b6f49c0231e15af8, - 0x00049a - ]; - // Also computed with cKzg, in the typescript tests: - // 0x049a902c5b4968d755b6f49c0231e15af80c62e352a428e8e9842eadc1c106bd - } - if (FIELDS_PER_BLOB == 8) { - // Computed with the eth consensus specs py lib (after hacking it to cope with blobs of size 8 instead of 4096): - expected_y = [ - 0xb04cdea4304000053abffffffb203a, - 0x0000000002e30785c8afa4496f8e38, - 0x000000 - ]; - } - assert(y.limbs == expected_y); -} - -// Helper function used to populate the hard-coded double_modulus value in the bls12381Fr.nr file in the bignum library. -unconstrained fn compute_double_modulus() -> [Field; 3] { - let two_p = [0x7b4805fffcb7fdfffffffe00000002, 0x4ea6533afa906673b0101343b00aa7, 0x00e7db]; - let NUM_LIMBS = 3; // must be >= 3 - let two_pow_120 = 2.pow_32(120); - let mut double_modulus: [Field; 3] = [0; 3]; - - double_modulus[0] = two_p[0] + two_pow_120; - for i in 1..NUM_LIMBS - 1 { - double_modulus[i] = two_p[i] + two_pow_120 - 1; - } - double_modulus[NUM_LIMBS - 1] = two_p[NUM_LIMBS - 1] - 1; - double_modulus -} - -// nargo test --show-output test_compute_double_modulus -#[test] -fn test_compute_double_modulus() { - println(compute_double_modulus()); -} - -// nargo test --show-output test_compute_d_inv -#[test] -fn test_compute_d_inv() { - let D_INV = D.__invmod(); - println(D_INV); -} - diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/negative_roots.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/negative_roots.nr deleted file mode 100644 index a494173e618..00000000000 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/negative_roots.nr +++ /dev/null @@ -1,4102 +0,0 @@ -use dep::bigint::BigNum; - -// TODO: these negative roots are actually a rearrangement of the roots. If it is inefficient to load all 4096 of these bls fields (12k noir fields), we could perhaps modify the barycentric formula to do some clever indexing to lookup negative roots from the existing roots array. I'd be weary of auditability and bugs with such an approach, though. - -global NEGATIVE_ROOTS = [ - BigNum { limbs: [ 0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed ] } , - BigNum { limbs: [ 0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000 ] } , - BigNum { limbs: [ 0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed ] } , - BigNum { limbs: [ 0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000 ] } , - BigNum { limbs: [ 0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96 ] } , - BigNum { limbs: [ 0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457 ] } , - BigNum { limbs: [ 0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9 ] } , - BigNum { limbs: [ 0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333 ] } , - BigNum { limbs: [ 0xfef0f00df2ec88ac159e2688bd4333, 0xd8c1e977024e561dcd0fd4d314d93b, 0x00533b ] } , - BigNum { limbs: [ 0xbeb312f20b6f7653ea61d87742bcce, 0xce9140267af9dd1c0af834cec32c17, 0x0020b1 ] } , - BigNum { limbs: [ 0xc8bd90143c7a436a20b4c8fbee018e, 0x4de4b45f2d7bc4a72e43a8f20dbb34, 0x0024c1 ] } , - BigNum { limbs: [ 0xf4e672ebc1e1bb95df4b360411fe73, 0x596e753e4fcc6e92a9c460afca4a1e, 0x004f2c ] } , - BigNum { limbs: [ 0x43389604eeaf5a7f847ee47dc08d74, 0x15b4607e449bd66c91d61832fc60bd, 0x005511 ] } , - BigNum { limbs: [ 0x7a6b6cfb0faca4807b811a823f728d, 0x919ec91f38ac5ccd4631f16edba496, 0x001edc ] } , - BigNum { limbs: [ 0x010d53ccb225425e544cdf4c887948, 0xb475ab91194b687a73c92f188612fc, 0x003b25 ] } , - BigNum { limbs: [ 0xbc96af334c36bca1abb31fb37786b9, 0xf2dd7e0c63fccabf643eda8951f257, 0x0038c7 ] } , - BigNum { limbs: [ 0x4f1b07b3c56074c9f39f658c9620b3, 0x17191423f48d7e7d03f9e6ac83bc94, 0x00230d ] } , - BigNum { limbs: [ 0x6e88fb4c38fb8a360c60997369df4e, 0x903a157988bab4bcd40e22f55448bf, 0x0050e0 ] } , - BigNum { limbs: [ 0x0124a02ec3ede2c13af36ece5c935e, 0xe1cface780a62d34ccafd6d0ce6e2d, 0x000df6 ] } , - BigNum { limbs: [ 0xbc7f62d13a6e1c3ec50c9031a36ca3, 0xc5837cb5fca206050b5832d1099726, 0x0065f6 ] } , - BigNum { limbs: [ 0x7fdf9c77487ae79733f3a6ba60eaa6, 0xa2fb6162ffabd84f8612c8b6cc00bd, 0x00476f ] } , - BigNum { limbs: [ 0x3dc46688b5e11768cc0c58459f155b, 0x0457c83a7d9c5aea51f540eb0c0496, 0x002c7e ] } , - BigNum { limbs: [ 0xd460a1dbfcd267df2b12e5b0330148, 0xcd3a7fca77e38a490835c612d67951, 0x0020e9 ] } , - BigNum { limbs: [ 0xe943612401899720d4ed194fccfeb9, 0xda18a9d30564a8f0cfd2438f018c01, 0x005303 ] } , - BigNum { limbs: [ 0x8c291cbae2a361196986abd51edcb5, 0x83d4d0a0ae73ac3f6e2f24bd52fe70, 0x006f8c ] } , - BigNum { limbs: [ 0x317ae6451bb89de69679532ae1234c, 0x237e58fcced486fa69d8e4e48506e3, 0x000461 ] } , - BigNum { limbs: [ 0x6466930923ab7811a43132b1888c36, 0xf5e67a06fbd88f907adac98af5480e, 0x006f70 ] } , - BigNum { limbs: [ 0x593d6ff6dab086ee5bcecc4e7773cb, 0xb16caf96816fa3a95d2d4016e2bd45, 0x00047c ] } , - BigNum { limbs: [ 0x16d26dfeb2f7ee7d19743e43af5772, 0x4b9a3c48cf47ecaed406f9fc1065f1, 0x001cfa ] } , - BigNum { limbs: [ 0xa6d195014b641082e68bc0bc50a88f, 0x5bb8ed54ae00468b04010fa5c79f62, 0x0056f3 ] } , - BigNum { limbs: [ 0x7876bf0928e68fae34a81e1cfca2ec, 0xed8c432405d0ae25b21df6c52b2a6c, 0x005e73 ] } , - BigNum { limbs: [ 0x452d43f6d5756f51cb57e0e3035d15, 0xb9c6e6797777851425ea12dcacdae7, 0x001579 ] } , - BigNum { limbs: [ 0x2724b71d050aa97ebf2fcc0f5611ae, 0x440d3d981efb1e97f596a4c8da4826, 0x002e3e ] } , - BigNum { limbs: [ 0x967f4be2f951558140d032f0a9ee53, 0x6345ec055e4d14a1e27164d8fdbd2d, 0x0045af ] } , - BigNum { limbs: [ 0xcb9993a1e752756220b9443bf5371d, 0x77449923ce3ca1cac574d6e7aa0947, 0x004b02 ] } , - BigNum { limbs: [ 0xf20a6f5e1709899ddf46bac40ac8e4, 0x300e9079af0b916f129332ba2dfc0b, 0x0028eb ] } , - BigNum { limbs: [ 0xe1991fee0e510a7b9610b1db94977e, 0xf9e8afe7612dc1649310899759ba6e, 0x00205b ] } , - BigNum { limbs: [ 0xdc0ae311f00af48469ef4d246b6883, 0xad6a79b61c1a71d544f7800a7e4ae4, 0x005391 ] } , - BigNum { limbs: [ 0x8f60f019fd400926be16cb704b990a, 0xa2325ba21faac6e50c813baa997430, 0x002f00 ] } , - BigNum { limbs: [ 0x2e4312e6011bf5d941e9338fb466f7, 0x0520cdfb5d9d6c54cb86cdf73e9123, 0x0044ed ] } , - BigNum { limbs: [ 0xaaf80b0c55bd8430f9a5d7f0c3cdb2, 0x4257e466b84b3c8c71b5ba9e612b6f, 0x001ef3 ] } , - BigNum { limbs: [ 0x12abf7f3a89e7acf065a270f3c324f, 0x64fb4536c4fcf6ad66524f0376d9e4, 0x0054fa ] } , - BigNum { limbs: [ 0x93335cea2da31a2d03a19553a24b82, 0x66a6d1a50dea09febaa04d13f22bb2, 0x0065a5 ] } , - BigNum { limbs: [ 0x2a70a615d0b8e4d2fc5e69ac5db47f, 0x40ac57f86f5e293b1d67bc8de5d9a1, 0x000e48 ] } , - BigNum { limbs: [ 0x9e4af408c2b9413f0eca84af71a186, 0xa6a78265e48883e0070b973ffd92c2, 0x001b29 ] } , - BigNum { limbs: [ 0x1f590ef73ba2bdc0f1357a508e5e7b, 0x00aba73798bfaf59d0fc7261da7291, 0x0058c4 ] } , - BigNum { limbs: [ 0xbabf1e9e172de6223c4fc056e43d9a, 0x2f0122e8072dabac70f83e4acd519b, 0x001095 ] } , - BigNum { limbs: [ 0x02e4e461e72e18ddc3b03ea91bc267, 0x785206b5761a878d670fcb570ab3b8, 0x006358 ] } , - BigNum { limbs: [ 0xf9b80ec36bb2b55ba6c1e4335d3495, 0x1c76ad9e668d4f4bc1c2f86897360c, 0x002026 ] } , - BigNum { limbs: [ 0xc3ebf43c92a949a4593e1acca2cb6c, 0x8adc7bff16bae3ee1645113940cf46, 0x0053c7 ] } , - BigNum { limbs: [ 0xd6586048a1b7870bb1eb8b66cd55ce, 0x56c914ef83eed9620388e8f73902f9, 0x003c1a ] } , - BigNum { limbs: [ 0xe74ba2b75ca477f44e14739932aa33, 0x508a14adf95959d7d47f20aa9f0259, 0x0037d3 ] } , - BigNum { limbs: [ 0x1e85011d426b52b891fa3f982b68c5, 0xdaee7b3c79d6566009b5882952d6a4, 0x00199c ] } , - BigNum { limbs: [ 0x9f1f01e2bbf0ac476e05bf67d4973c, 0xcc64ae610371dcd9ce528178852eaf, 0x005a50 ] } , - BigNum { limbs: [ 0xa2bee506858fc6870b11e11ba54d0f, 0xa3d0ddae097ebcf95c6ee2bfcfce81, 0x000596 ] } , - BigNum { limbs: [ 0x1ae51df978cc3878f4ee1de45ab2f2, 0x03824bef73c976407b9926e20836d2, 0x006e57 ] } , - BigNum { limbs: [ 0x4910119f300f47d64b34dde86304f3, 0x2dc00c9fa4b3b3c03b15fa3a7826e9, 0x007082 ] } , - BigNum { limbs: [ 0x7493f160ce4cb729b4cb21179cfb0e, 0x79931cfdd8947f799cf20f675fde6a, 0x00036b ] } , - BigNum { limbs: [ 0xb73f5d9958580573ea3fa3e6fe310f, 0xba2461933c32412d801131c542d24e, 0x0068f0 ] } , - BigNum { limbs: [ 0x0664a566a603f98c15c05b1901cef2, 0xed2ec80a4115f20c57f6d7dc953305, 0x000afc ] } , - BigNum { limbs: [ 0xdb96c6037b2ae2f8d84c914e68b10d, 0xd155db6e78824b6f2c61beab61e404, 0x004b26 ] } , - BigNum { limbs: [ 0xe20d3cfc83311c0727b36db1974ef4, 0xd5fd4e2f04c5e7caaba64af676214e, 0x0028c6 ] } , - BigNum { limbs: [ 0x872ef3dce28e788d28c143168bba2c, 0x097461a2eeaf4e84b3cd7dc75b61db, 0x00640d ] } , - BigNum { limbs: [ 0x36750f231bcd8672d73ebbe97445d5, 0x9ddec7fa8e98e4b5243a8bda7ca378, 0x000fe0 ] } , - BigNum { limbs: [ 0xecd9567808eac2aecf3d3d99feda43, 0x963f1644f6057b734cba89c47734ba, 0x000b55 ] } , - BigNum { limbs: [ 0xd0caac87f5713c5130c2c1660125be, 0x111413588742b7c68b4d7fdd60d098, 0x006898 ] } , - BigNum { limbs: [ 0x8d00b4a1b1e1cd5f6d85cc838aefbe, 0x0f15498c6f24f1f9df7fc191d3ac9b, 0x00431b ] } , - BigNum { limbs: [ 0x30a34e5e4c7a31a0927a327c751043, 0x983de0110e23413ff88848100458b8, 0x0030d2 ] } , - BigNum { limbs: [ 0x9f9c8b080ee81bd10899b24dbbf12d, 0xb19b5e5f8ee9313b8642525d5075f6, 0x0022df ] } , - BigNum { limbs: [ 0x1e0777f7ef73e32ef7664cb2440ed4, 0xf5b7cb3dee5f01fe51c5b744878f5d, 0x00510d ] } , - BigNum { limbs: [ 0x5d206f9aa2eeccc15168ac46d068db, 0x8d3bec0cc3466f0af7c7244a3da1a4, 0x005e3f ] } , - BigNum { limbs: [ 0x608393655b6d323eae9752b92f9726, 0x1a173d90ba01c42ee040e5579a63af, 0x0015ae ] } , - BigNum { limbs: [ 0xaa3be95461c35c8ad72a76bc61a4ef, 0x6c715d7a8ee18506b7660550ec6994, 0x00595e ] } , - BigNum { limbs: [ 0x136819ab9c98a27528d588439e5b12, 0x3ae1cc22ee66ae3320a20450eb9bbf, 0x001a8f ] } , - BigNum { limbs: [ 0x0cc5569e6281d1bfff4f4b898366d9, 0x9c52d10eaa78a7a111083c39ad633a, 0x003e27 ] } , - BigNum { limbs: [ 0xb0deac619bda2d4000b0b3767c9928, 0x0b00588ed2cf8b98c6ffcd682aa219, 0x0035c6 ] } , - BigNum { limbs: [ 0x286adfae56d25be72cfc5c9966d09e, 0x3ba0fa4b6f560e09b1a3879520095f, 0x006e5f ] } , - BigNum { limbs: [ 0x95392351a789a318d303a266992f63, 0x6bb22f520df225302664820cb7fbf4, 0x00058e ] } , - BigNum { limbs: [ 0x75c4fd31a9bdfbb14b44a23cfe6f92, 0xfa6a84eec93cd9bbb5adebfdc2994f, 0x0002a8 ] } , - BigNum { limbs: [ 0x47df05ce549e034eb4bb5cc301906f, 0xace8a4aeb40b597e225a1da4156c04, 0x007144 ] } , - BigNum { limbs: [ 0x40042d8d8ef0be12605a3ecd13f5de, 0x0024e28a13e18ee8aa1b9e97d4cdd5, 0x0014be ] } , - BigNum { limbs: [ 0x7d9fd5726f6b40ed9fa5c032ec0a23, 0xa72e47136966a4512dec6b0a03377e, 0x005f2f ] } , - BigNum { limbs: [ 0x82d714b1cb5d445b0e07816f77b3a7, 0x47e7840143b38aeed579d92544a1d4, 0x005199 ] } , - BigNum { limbs: [ 0x3accee4e32febaa4f1f87d90884c5a, 0x5f6ba59c3994a84b028e307c93637f, 0x002254 ] } , - BigNum { limbs: [ 0x1dff643be95635b750da4cab28e208, 0xc802a94a946e8cbe2437f0b4b27650, 0x0007d0 ] } , - BigNum { limbs: [ 0x9fa49ec41505c948af25b254d71df9, 0xdf508052e8d9a67bb3d018ed258f03, 0x006c1c ] } , - BigNum { limbs: [ 0xb2b183f7ec0b194222925245f4e2fb, 0x0c47d9f8e63309b97ddd04dcc90920, 0x001878 ] } , - BigNum { limbs: [ 0x0af27f081250e5bddd6dacba0b1d06, 0x9b0b4fa4971529805a2b04c50efc33, 0x005b75 ] } , - BigNum { limbs: [ 0xbdb5218d05af8af6a1cd7025d071a5, 0x21e17d3cd87a2ed1234cde5d6927a9, 0x004ae9 ] } , - BigNum { limbs: [ 0xffeee172f8ac74095e328eda2f8e5c, 0x8571ac60a4ce0468b4bb2b446edda9, 0x002904 ] } , - BigNum { limbs: [ 0xc0551ac0e33765241de8ab6c75208d, 0x9d9a302401865eec2340271598ef87, 0x005944 ] } , - BigNum { limbs: [ 0xfd4ee83f1b2499dbe21753938adf74, 0x09b8f9797bc1d44db4c7e28c3f15cb, 0x001aa9 ] } , - BigNum { limbs: [ 0xc2217b84b789f1c0f0045c15eb6cca, 0x23f0bdd367bbf9b36026bf15201e3d, 0x001bd8 ] } , - BigNum { limbs: [ 0xfb82877b46d20d3f0ffba2ea149337, 0x83626bca158c398677e14a8cb7e715, 0x005815 ] } , - BigNum { limbs: [ 0xccffd43f1931b63ff630d3f89c4c2c, 0x34a0f387add7faa1f3804fdb73d008, 0x001f38 ] } , - BigNum { limbs: [ 0xf0a42ec0e52a48c009cf2b0763b3d5, 0x72b23615cf703897e487b9c664354a, 0x0054b5 ] } , - BigNum { limbs: [ 0xffe63827d533369b173ba8dd620212, 0xd4bf2035cba62b52573b968efab1e1, 0x000c3f ] } , - BigNum { limbs: [ 0xbdbdcad82928c864e8c456229dfdef, 0xd2940967b1a207e780cc7312dd5371, 0x0067ad ] } , - BigNum { limbs: [ 0x7294c2bb71bbb2bba97efd27ba08e2, 0x925014876109c4ae3115d25772a7b6, 0x0020d5 ] } , - BigNum { limbs: [ 0x4b0f40448ca04c44568101d845f71f, 0x150315161c3e6e8ba6f2374a655d9d, 0x005318 ] } , - BigNum { limbs: [ 0xdb89e0a4a5765fe2c1b6af78029270, 0x1b5dc39ecc507541df17373a065728, 0x004f53 ] } , - BigNum { limbs: [ 0xe21a225b58e59f1d3e494f87fd6d91, 0x8bf565feb0f7bdf7f8f0d267d1ae2a, 0x00249a ] } , - BigNum { limbs: [ 0x28fb6cae51baff7ef262ffa8f8c918, 0x611dcedcb15b720543223d96f0ac8d, 0x0007aa ] } , - BigNum { limbs: [ 0x94a89651aca0ff810d9cff570736e9, 0x46355ac0cbecc13494e5cc0ae758c6, 0x006c43 ] } , - BigNum { limbs: [ 0x291d47986d31d3bbf254b932e053a6, 0xa37bb55ee341bde19c2cf633387e72, 0x005950 ] } , - BigNum { limbs: [ 0x9486bb67912a2b440dab45cd1fac5b, 0x03d7743e9a0675583bdb136e9f86e1, 0x001a9d ] } , - BigNum { limbs: [ 0x4dee80538980eca8e45d0230d79fe6, 0xacc5d6a40c8de1f7cc23d4a0a0fa3d, 0x005a56 ] } , - BigNum { limbs: [ 0x6fb582ac74db12571ba2fccf28601b, 0xfa8d52f970ba51420be43501370b16, 0x001996 ] } , - BigNum { limbs: [ 0x333e46f0700ee03227ea10b26bd413, 0x06f483d66e532628df85d7c3f50e72, 0x0040b7 ] } , - BigNum { limbs: [ 0x8a65bc0f8e4d1ecdd815ee4d942bee, 0xa05ea5c70ef50d10f88231dde2f6e1, 0x003336 ] } , - BigNum { limbs: [ 0x66f8a0dc0e6bbe91e8a1ba3b6f3441, 0x2d20409a835fe1b2c3aa0eb455ffbe, 0x001a11 ] } , - BigNum { limbs: [ 0x56ab6223eff0406e175e44c490cbc0, 0x7a32e902f9e85187145dfaed820595, 0x0059dc ] } , - BigNum { limbs: [ 0x79114c0bc2a6e035825224af0aaa1d, 0x1712a762f4607c95a954c7a25068a3, 0x0013c8 ] } , - BigNum { limbs: [ 0x4492b6f43bb51eca7dadda50f555e4, 0x9040823a88e7b6a42eb341ff879cb0, 0x006025 ] } , - BigNum { limbs: [ 0xf54484042843734f76a9059bae8f9f, 0x7bd601e8bb0a29c34d9781b10bdf29, 0x006097 ] } , - BigNum { limbs: [ 0xc85f7efbd6188bb08956f964517062, 0x2b7d27b4c23e09768a7087f0cc2629, 0x001356 ] } , - BigNum { limbs: [ 0x0f59e12c64384016236e58af56f1b8, 0x4d7bbcfd52504045ee80a2a90eecf7, 0x005d2a ] } , - BigNum { limbs: [ 0xae4a21d39a23bee9dc91a650a90e49, 0x59d76ca02af7f2f3e98766f8c9185c, 0x0016c3 ] } , - BigNum { limbs: [ 0xf69b4a47af75655a9a50847f96ec43, 0x90b59abcf615a6231d154bcbeebf11, 0x004636 ] } , - BigNum { limbs: [ 0xc708b8b84ee699a565af7a806913be, 0x169d8ee087328d16baf2bdd5e94641, 0x002db7 ] } , - BigNum { limbs: [ 0xc290a30beab8a82a0a83854a64dccf, 0x33e0bb0973b096c09431666614720d, 0x0011fb ] } , - BigNum { limbs: [ 0xfb135ff413a356d5f57c79b59b2332, 0x73726e9409979c7943d6a33bc39345, 0x0061f2 ] } , - BigNum { limbs: [ 0x4c9bd5d6faba529cc2c16c38357332, 0x4d8c8ac99daef21979ec507b8b9ad7, 0x00374e ] } , - BigNum { limbs: [ 0x71082d2903a1ac633d3e92c7ca8ccf, 0x59c69ed3df9941205e1bb9264c6a7c, 0x003c9f ] } , - BigNum { limbs: [ 0x7d0aaebb6e8b5c2433b50af8bb7619, 0xc2eca698be862c164da00c6f5f076d, 0x00581e ] } , - BigNum { limbs: [ 0x409954448fd0a2dbcc4af4074489e8, 0xe4668304bec207238a67fd3278fde6, 0x001bce ] } , - BigNum { limbs: [ 0x81066e578d78bf6207cd2f20df9d12, 0xefec34093e9a725ce48f79bf9cd600, 0x0060c7 ] } , - BigNum { limbs: [ 0x3c9d94a870e33f9df832cfdf2062ef, 0xb766f5943eadc0dcf3788fe23b2f53, 0x001325 ] } , - BigNum { limbs: [ 0xb53e5a66157cffb6ca42cf7e8096b6, 0x66ba46b38c19c80356e65d94e35849, 0x002452 ] } , - BigNum { limbs: [ 0x0865a899e8deff4935bd2f817f694b, 0x4098e2e9f12e6b368121ac0cf4ad0a, 0x004f9b ] } , - BigNum { limbs: [ 0x6d471fd7d619f99d47ae1b2d5cb20c, 0x9cb1d4e5cd90d2ed0c39d81ba4edef, 0x000db0 ] } , - BigNum { limbs: [ 0x505ce32828420562b851e3d2a34df5, 0x0aa154b7afb7604ccbce3186331764, 0x00663d ] } , - BigNum { limbs: [ 0x83c14c0425182e523db144c948a873, 0x7e100025cede2c14671f92089bc7df, 0x0019e7 ] } , - BigNum { limbs: [ 0x39e2b6fbd943d0adc24eba36b7578e, 0x29432977ae6a072570e877993c3d74, 0x005a06 ] } , - BigNum { limbs: [ 0xf14a39fc751f567d6dcabcb43adfeb, 0xa40efa6dcac098af3a8f44a3055298, 0x0026b8 ] } , - BigNum { limbs: [ 0xcc59c903893ca8829235424bc52016, 0x03442f2fb2879a8a9d78c4fed2b2ba, 0x004d35 ] } , - BigNum { limbs: [ 0x393a229e5c956ea8e747e70c3352b9, 0x0fa52ca5f2b6074231113972d1f31e, 0x0020b8 ] } , - BigNum { limbs: [ 0x8469e061a1c6905718b817f3ccad48, 0x97adfcf78a922bf7a6f6d02f061235, 0x005335 ] } , - BigNum { limbs: [ 0x964479e66a29b26678ce10f387bc87, 0x504e08859b66e14f851900aff7991b, 0x00284a ] } , - BigNum { limbs: [ 0x275f891994324c998731ee0c78437a, 0x57052117e1e151ea52ef08f1e06c38, 0x004ba3 ] } , - BigNum { limbs: [ 0xe0cfc513638e8df766c4aadd94806e, 0x67fad38d59a038f1bab4965c08a022, 0x0031e5 ] } , - BigNum { limbs: [ 0xdcd43dec9acd7108993b54226b7f93, 0x3f58561023a7fa481d537345cf6530, 0x004208 ] } , - BigNum { limbs: [ 0x0a9a547af7f7203c1d97dd9423b5d1, 0x39c63dcea51c6dfda5ce9bf2fc0c49, 0x0067dc ] } , - BigNum { limbs: [ 0xb309ae850664dec3e268216bdc4a30, 0x6d8cebced82bc53c32396daedbf90a, 0x000c11 ] } , - BigNum { limbs: [ 0xacb6a751c4cf62e9b77e2a455758d3, 0x702adadc3bea54f132dd768cbcd025, 0x002fbb ] } , - BigNum { limbs: [ 0x10ed5bae398c9c164881d4baa8a72e, 0x37284ec1415dde48a52a93151b352e, 0x004432 ] } , - BigNum { limbs: [ 0x3dd930616645bb8acad28c5f36ac67, 0xc138ef72e20e3645eba92f93fcb1b3, 0x00314a ] } , - BigNum { limbs: [ 0x7fcad29e98164375352d72a0c9539a, 0xe61a3a2a9b39fcf3ec5eda0ddb53a0, 0x0042a2 ] } , - BigNum { limbs: [ 0x4adbcf1b2f27651340a28ffe15d019, 0xcbbd0503595ec98da723e86bdc412c, 0x002b92 ] } , - BigNum { limbs: [ 0x72c833e4cf3499ecbf5d6f01ea2fe8, 0xdb96249a23e969ac30e42135fbc427, 0x00485a ] } , - BigNum { limbs: [ 0xc72871c1151445d010a9edb4b638a4, 0x9164dbe6739dc4f0a81758d181ac9c, 0x00713a ] } , - BigNum { limbs: [ 0xf67b913ee947b92fef56114b49c75d, 0x15ee4db709aa6e492ff0b0d05658b6, 0x0002b3 ] } , - BigNum { limbs: [ 0x66372d5f7944f1045697cc52056d9b, 0x984a697ff768d986c0c20a39fc66c8, 0x0025b9 ] } , - BigNum { limbs: [ 0x576cd5a085170dfba96832adfa9266, 0x0f08c01d85df59b31745ff67db9e8b, 0x004e34 ] } , - BigNum { limbs: [ 0xb1ae62415a9910cca54ea0331495d4, 0xaecf5af2f4abb40ec2b38999673e05, 0x00163d ] } , - BigNum { limbs: [ 0x0bf5a0bea3c2ee335ab15ecceb6a2d, 0xf883ceaa889c7f2b1554800870c74e, 0x005daf ] } , - BigNum { limbs: [ 0xef7d53496e420711c4c75b7ec9cc10, 0xfa7c095d48bff317e2f8e7ee39e7bc, 0x000ca9 ] } , - BigNum { limbs: [ 0xce26afb69019f7ee3b38a3813633f1, 0xacd7204034884021f50f21b39e1d96, 0x006743 ] } , - BigNum { limbs: [ 0x1cb8c070f0ce322e9a4db5f138dab3, 0x5980dade66efbcca660ee327eb377a, 0x006a94 ] } , - BigNum { limbs: [ 0xa0eb428f0d8dccd165b2490ec7254e, 0x4dd24ebf1658766f71f92679eccdd9, 0x000959 ] } , - BigNum { limbs: [ 0x2fb0fde29479defdde6c4bcc3c47ac, 0x7ee321cfb3ba051f83121c342bf6e5, 0x003d6a ] } , - BigNum { limbs: [ 0x8df3051d69e220022193b333c3b855, 0x287007cdc98e2e1a54f5ed6dac0e6e, 0x003683 ] } , - BigNum { limbs: [ 0x0dd8d1bcb91626d103024fb1d9a54a, 0xf2c9a0e3a19998e526154ae4ed7989, 0x00443a ] } , - BigNum { limbs: [ 0xafcb31434545d82efcfdaf4e265ab7, 0xb48988b9dbae9a54b1f2bebcea8bca, 0x002fb2 ] } , - BigNum { limbs: [ 0x4a95d2c3e71de2f6f43227eaade450, 0x2e127d4b36ff388a3903558023a261, 0x002d43 ] } , - BigNum { limbs: [ 0x730e303c173e1c090bcdd715521bb1, 0x7940ac524648faaf9f04b421b462f2, 0x0046aa ] } , - BigNum { limbs: [ 0x170673bd1b99a3d922fa1a3b513f68, 0x4ce5aa3941ee054ba2513a8f6466a4, 0x003629 ] } , - BigNum { limbs: [ 0xa69d8f42e2c25b26dd05e4c4aec099, 0x5a6d7f643b5a2dee35b6cf12739eaf, 0x003dc4 ] } , - BigNum { limbs: [ 0x807acfac7a7564eb7d8810073f5d6a, 0x4339fb741fc31769583e0d6d2c1a7a, 0x00415e ] } , - BigNum { limbs: [ 0x3d29335383e69a148277eef8c0a297, 0x64192e295d851bd07fc9fc34abead9, 0x00328f ] } , - BigNum { limbs: [ 0x911f0feabd369ed3545212d01cdd49, 0xccf9865fb1560092a559ef66cd15de, 0x004557 ] } , - BigNum { limbs: [ 0x2c84f3154125602cabadec2fe322b8, 0xda59a33dcbf232a732ae1a3b0aef75, 0x002e95 ] } , - BigNum { limbs: [ 0x483352f033ff64adf373b18b704af8, 0x51ecd7358cb0e80451eb57c7c2cac8, 0x0036e7 ] } , - BigNum { limbs: [ 0x7570b00fca5c9a520c8c4d748fb509, 0x55665267f0974b35861cb1da153a8b, 0x003d06 ] } , - BigNum { limbs: [ 0x8a9a8b48559c156358cf18763f4063, 0x2a235b185c763e293867324c9a71d9, 0x007343 ] } , - BigNum { limbs: [ 0x330977b7a8bfe99ca730e689c0bf9e, 0x7d2fce8520d1f5109fa0d7553d937a, 0x0000aa ] } , - BigNum { limbs: [ 0x777b4d984f404a1c2a241e2d08c1c0, 0xf0091746f546751b65160340510aef, 0x000522 ] } , - BigNum { limbs: [ 0x4628b567af1bb4e3d5dbe0d2f73e41, 0xb74a12568801be1e72f2066186fa64, 0x006eca ] } , - BigNum { limbs: [ 0x5e4d6e9cbd5e02c4d432320e1384eb, 0x08d50d96eba478550062e390c312e4, 0x001e0b ] } , - BigNum { limbs: [ 0x5f56946340fdfc3b2bcdccf1ec7b16, 0x9e7e1c0691a3bae4d7a5261114f26f, 0x0055e2 ] } , - BigNum { limbs: [ 0xbbd67710e3399ec1e9f9b456588891, 0x86052e81456eb383cca0626033166f, 0x000db8 ] } , - BigNum { limbs: [ 0x01cd8bef1b22603e16064aa9a77770, 0x214dfb1c37d97fb60b67a741a4eee4, 0x006635 ] } , - BigNum { limbs: [ 0x12655fec382b488ab3113c021da780, 0x7d875f42d925180ea84a5115cfd262, 0x0053aa ] } , - BigNum { limbs: [ 0xab3ea313c630b6754ceec2fde25881, 0x29cbca5aa4231b2b2fbdb88c0832f1, 0x002043 ] } , - BigNum { limbs: [ 0x68befea0679e494b94920969459132, 0xd44cddf6abc21d51a2e03b9c9cf237, 0x001e03 ] } , - BigNum { limbs: [ 0x54e5045f96bdb5b46b6df596ba6ecf, 0xd3064ba6d18615e83527ce053b131c, 0x0055e9 ] } , - BigNum { limbs: [ 0x693fdc8713f747bf7579b9d2eebd4d, 0x92aeafc59bc1963edac49c2696da4d, 0x00178b ] } , - BigNum { limbs: [ 0x54642678ea64b7408a86452d1142b4, 0x14a479d7e1869cfafd436d7b412b06, 0x005c62 ] } , - BigNum { limbs: [ 0x46869d4d10052be675fcb3e18fa3f3, 0x95e215d7a7a452f66ec2c60b147c17, 0x004e91 ] } , - BigNum { limbs: [ 0x771d65b2ee56d3198a034b1e705c0e, 0x117113c5d5a3e04369454396c3893c, 0x00255c ] } , - BigNum { limbs: [ 0xf464cb4256a3b3f3f90bd2b05e602e, 0xebe124834a8fcfdc1da7bf59004b42, 0x0036e1 ] } , - BigNum { limbs: [ 0xc93f37bda7b84b0c06f42c4fa19fd3, 0xbb72051a32b8635dba604a48d7ba10, 0x003d0b ] } , - BigNum { limbs: [ 0x40515e8a158dedad5b3bb2b65b60e3, 0x8b7ffb85398c18fae2b2b0ec6a9811, 0x0005ff ] } , - BigNum { limbs: [ 0x7d52a475e8ce1152a4c44c49a49f1e, 0x1bd32e1843bc1a3ef55558b56d6d42, 0x006dee ] } , - BigNum { limbs: [ 0x6eaf3c40be7b3838159f7147329ad5, 0x2aac2d0686c83e013c718435ef5413, 0x0055f8 ] } , - BigNum { limbs: [ 0x4ef4c6bf3fe0c6c7ea608db8cd652c, 0x7ca6fc96f67ff5389b96856be8b140, 0x001df5 ] } , - BigNum { limbs: [ 0x84d7b3f8b7cf132874e1098b7e9b1a, 0x5092e98ac1b47a9970f370ae50cbc6, 0x001585 ] } , - BigNum { limbs: [ 0x38cc4f07468cebd78b1ef5748164e7, 0x56c04012bb93b8a0671498f387398d, 0x005e68 ] } , - BigNum { limbs: [ 0x5d62341f399e527a79183fcde843c9, 0x31feceffb21884061f9f18bf5ab67d, 0x006974 ] } , - BigNum { limbs: [ 0x6041cee0c4bdac8586e7bf3217bc38, 0x75545a9dcb2faf33b868f0e27d4ed6, 0x000a79 ] } , - BigNum { limbs: [ 0x3c92294a7df3115dd34f3efbca7e49, 0x47e9d645599344915a4a7e63657193, 0x0032d5 ] } , - BigNum { limbs: [ 0x8111d9b58068eda22cb0c0043581b8, 0x5f69535823b4eea87dbd8b3e7293c0, 0x004118 ] } , - BigNum { limbs: [ 0xbba87982f8a3ab72032b6dd9980aa2, 0x7eba81db23a02297d49fc28271cf6b, 0x000f0a ] } , - BigNum { limbs: [ 0x01fb897d05b8538dfcd4912667f55f, 0x2898a7c259a810a20368471f6635e8, 0x0064e3 ] } , - BigNum { limbs: [ 0x50e43a80a9bd4cf0ea8a73552c030d, 0x2863a6f63f83bb09fed64b951d7aa3, 0x005b0c ] } , - BigNum { limbs: [ 0x6cbfc87f549eb20f15758baad3fcf4, 0x7eef82a73dc4782fd931be0cba8ab0, 0x0018e1 ] } , - BigNum { limbs: [ 0xb901d9b44bf6cee9dd22a497765719, 0x994d9fc0040d8e1dd927f6f6bf4ac2, 0x003dbe ] } , - BigNum { limbs: [ 0x04a2294bb265301622dd5a6889a8e8, 0x0e0589dd793aa51bfee012ab18ba91, 0x00362f ] } , - BigNum { limbs: [ 0xa2163218d48aa1c0ef0c55544da820, 0x239cd9c777f74c72f50d0dde0ecfa2, 0x003cd5 ] } , - BigNum { limbs: [ 0x1b8dd0e729d15d3f10f3a9abb257e1, 0x83b64fd60550e6c6e2fafbc3c935b1, 0x003718 ] } , - BigNum { limbs: [ 0xf812a0fada0ad9898a4a40149eac37, 0x2f025b748d0949212bd8afe3031a1c, 0x002fe8 ] } , - BigNum { limbs: [ 0xc59162052451257675b5beeb6153ca, 0x7850ce28f03eea18ac2f59bed4eb36, 0x004405 ] } , - BigNum { limbs: [ 0x3cae032393991be9561c176a2f777a, 0xed25272e58ee91b000235a5bfd4fc0, 0x006d64 ] } , - BigNum { limbs: [ 0x80f5ffdc6ac2e316a9e3e795d08887, 0xba2e026f2459a189d7e4af45dab593, 0x000688 ] } , - BigNum { limbs: [ 0x44f49758f2e4f90e5070b9bada029b, 0xf6421e7859bbb5c8af93f751a2bcf2, 0x0027b9 ] } , - BigNum { limbs: [ 0x78af6ba70b7705f1af8f454525fd66, 0xb1110b25238c7d7128741250354861, 0x004c33 ] } , - BigNum { limbs: [ 0x7edb7e69c459f44c191129505eef66, 0xd87eefb9b5beb3e1674c00ddcfeef2, 0x001638 ] } , - BigNum { limbs: [ 0x3ec884963a020ab3e6eed5afa1109b, 0xced439e3c7897f5870bc08c4081661, 0x005db4 ] } , - BigNum { limbs: [ 0xbe0261fa1ef0748bd63e0485773dba, 0xc5875ac931fbed257db1ed5ff5da83, 0x006ceb ] } , - BigNum { limbs: [ 0xffa1a105df6b8a7429c1fa7a88c247, 0xe1cbced44b4c46145a561c41e22acf, 0x000701 ] } , - BigNum { limbs: [ 0x4b7d976c7acfe832b49690815bdc10, 0x941c73d35adbfe74944fa524ee2707, 0x00677b ] } , - BigNum { limbs: [ 0x72266b93838c16cd4b696e7ea423f1, 0x1336b5ca226c34c543b8647ce9de4c, 0x000c72 ] } , - BigNum { limbs: [ 0x5354ab6e8c2ab4f007bdc150d024b1, 0xaa7aeef7d8dee0eb9d91cdecccfbbf, 0x001f2c ] } , - BigNum { limbs: [ 0x6a4f579172314a0ff8423daf2fdb50, 0xfcd83aa5a469524e3a763bb50b0994, 0x0054c0 ] } , - BigNum { limbs: [ 0x8db8d2298d3f8e16a0c798f162eacb, 0xcf811bf1365ac48ba1f92b1fec5c78, 0x006bba ] } , - BigNum { limbs: [ 0x2feb30d6711c70e95f38660e9d1536, 0xd7d20dac46ed6eae360ede81eba8db, 0x000832 ] } , - BigNum { limbs: [ 0xaf7f13d0a74f74dbbc76a74c1da9e8, 0x98fa4cbff0603b174240d6d0c662a1, 0x005987 ] } , - BigNum { limbs: [ 0x0e24ef2f570c8a24438957b3e25619, 0x0e58dcdd8ce7f82295c732d111a2b2, 0x001a66 ] } , - BigNum { limbs: [ 0x1a65f594b099268117a83fe0dacaef, 0x1bfda43188b512712448c25af0595d, 0x002b76 ] } , - BigNum { limbs: [ 0xa33e0d6b4dc2d87ee857bf1f253512, 0x8b55856bf49320c8b3bf4746e7abf6, 0x004877 ] } , - BigNum { limbs: [ 0xa63f546586f6d2da37c449f8b60f52, 0x2b8b7d02f5cf2f49c52c6190369d3b, 0x0015e2 ] } , - BigNum { limbs: [ 0x1764ae9a77652c25c83bb50749f0af, 0x7bc7ac9a877903f012dba811a16818, 0x005e0b ] } , - BigNum { limbs: [ 0xf315a6b2d095ff2d787c980313ea47, 0x372554761399758318df7c28ca7b95, 0x0016d4 ] } , - BigNum { limbs: [ 0xca8e5c4d2dc5ffd2878366fcec15ba, 0x702dd52769aebdb6bf288d790d89bd, 0x005d19 ] } , - BigNum { limbs: [ 0x80256afc11e71d85fcf33c21a24ad6, 0xcb61c12c11e74dc142b14aa249269d, 0x0056da ] } , - BigNum { limbs: [ 0x3d7e9803ec74e17a030cc2de5db52b, 0xdbf168716b60e5789556beff8edeb6, 0x001d12 ] } , - BigNum { limbs: [ 0x408d95d9268abf109873789332cd2a, 0x9110624b32011b2911f5ddb3864aca, 0x000190 ] } , - BigNum { limbs: [ 0x7d166d26d7d13fef678c866ccd32d7, 0x1642c7524b471810c6122bee51ba89, 0x00725d ] } , - BigNum { limbs: [ 0xba2b752da27a4e8d66b6b5017225bb, 0x7601029a4196d247f1687a9eb754cb, 0x0011c1 ] } , - BigNum { limbs: [ 0x03788dd25be1b072994949fe8dda46, 0x315227033bb160f1e69f8f0320b088, 0x00622c ] } , - BigNum { limbs: [ 0x45442a4caa31c65b585be1aadcb79d, 0x7c4e35f66b90ebafe0c16826da6975, 0x004fce ] } , - BigNum { limbs: [ 0x785fd8b3542a38a4a7a41d55234864, 0x2b04f3a711b74789f746a17afd9bde, 0x00241f ] } , - BigNum { limbs: [ 0xfdab76f48019b80ffc32908c1049f0, 0x9775428ee41b2674c1244e803b82a8, 0x005f80 ] } , - BigNum { limbs: [ 0xbff88c0b7e4246f003cd6e73efb611, 0x0fdde70e992d0cc516e3bb219c82aa, 0x00146d ] } , - BigNum { limbs: [ 0x7cbc17fe538ac37a355caf264d4933, 0xf579f5325dd3ffbe4b7354be35fc6e, 0x000177 ] } , - BigNum { limbs: [ 0x40e7eb01aad13b85caa34fd9b2b6ce, 0xb1d9346b1f74337b8c94b4e3a208e5, 0x007275 ] } , - BigNum { limbs: [ 0x560ac1281b27b43e0664b6a44982e0, 0xcd6eb725f684d2d28fd9dc0d920b64, 0x0018fd ] } , - BigNum { limbs: [ 0x679941d7e3344ac1f99b485bb67d21, 0xd9e4727786c36067482e2d9445f9ef, 0x005aef ] } , - BigNum { limbs: [ 0xe32750901a3f7f194e60f3a1520636, 0x8aeb7895fc66a495eee2bbe6b01a7b, 0x0057eb ] } , - BigNum { limbs: [ 0xda7cb26fe41c7fe6b19f0b5eadf9cb, 0x1c67b10780e18ea3e9254dbb27ead7, 0x001c02 ] } , - BigNum { limbs: [ 0x0dca122075b980101710f74afb7107, 0x332fb92a0335f1d522fdb2753b9f65, 0x006916 ] } , - BigNum { limbs: [ 0xafd9f0df88a27eefe8ef07b5048efa, 0x742370737a124164b50a572c9c65ee, 0x000ad7 ] } , - BigNum { limbs: [ 0xdf56fce8bd22da93050b36e83ec01b, 0x993461faf18fdb43e6645492ac8622, 0x007328 ] } , - BigNum { limbs: [ 0xde4d06174139246cfaf4c817c13fe6, 0x0e1ec7a28bb857f5f1a3b50f2b7f30, 0x0000c5 ] } , - BigNum { limbs: [ 0x7b4ee66e4caccb7d01866add958780, 0x7658084c71a467e701a945e9b713df, 0x0018ba ] } , - BigNum { limbs: [ 0x42551c91b1af3382fe7994226a7881, 0x30fb21510ba3cb52d65ec3b820f174, 0x005b33 ] } , - BigNum { limbs: [ 0x268d78c59e5b00babe46ffd11fbcb3, 0x4100d476d6f3f93aebe3fc216f657d, 0x006a9c ] } , - BigNum { limbs: [ 0x97168a3a6000fe4541b8ff2ee0434e, 0x66525526a65439feec240d80689fd6, 0x000951 ] } , - BigNum { limbs: [ 0x1d256641a44b4fd5a18486a7be5e27, 0xf0d85715c2389db00efaaefd61d069, 0x000d5f ] } , - BigNum { limbs: [ 0xa07e9cbe5a10af2a5e7b785841a1da, 0xb67ad287bb0f9589c90d5aa47634ea, 0x00668d ] } , - BigNum { limbs: [ 0x51124d9f38a3d264d11e5e40eed6d0, 0xcafd455e05aa248cee69c0ae043a7d, 0x004fb2 ] } , - BigNum { limbs: [ 0x6c91b560c5b82c9b2ee1a0bf112931, 0xdc55e43f779e0eace99e48f3d3cad6, 0x00243a ] } , - BigNum { limbs: [ 0x7b55024e5ba8cf5f15555ba7c59481, 0x15b1a10112962edb5dd3926d465f42, 0x00408b ] } , - BigNum { limbs: [ 0x424f00b1a2b32fa0eaaaa3583a6b80, 0x91a1889c6ab2045e7a34773491a611, 0x003362 ] } , - BigNum { limbs: [ 0xb19c81ab2696c55b36bed952623e8b, 0x9e2178411af206551ddbbdaeb8d015, 0x000ae8 ] } , - BigNum { limbs: [ 0x0c078154d7c539a4c94125ad9dc176, 0x0931b15c62562ce4ba2c4bf31f353e, 0x006905 ] } , - BigNum { limbs: [ 0x22d0dee6c4fa9c8c8d1d91a8df6b62, 0x7aacf872a63ad4ff231a7b85a381a9, 0x006f49 ] } , - BigNum { limbs: [ 0x9ad324193961627372e26d5720949f, 0x2ca6312ad70d5e3ab4ed8e1c3483aa, 0x0004a4 ] } , - BigNum { limbs: [ 0xde1cdf309627554e936d6ec3cf97e5, 0x2c5d26f96239e8c982570f56a5560e, 0x0049ba ] } , - BigNum { limbs: [ 0xdf8723cf6834a9b16c92903c30681c, 0x7af602a41b0e4a7055b0fa4b32af44, 0x002a33 ] } , - BigNum { limbs: [ 0x1d9f02709eb90093277736a35fa518, 0xb8a187109e2da14d12d4e142af50a6, 0x00588b ] } , - BigNum { limbs: [ 0xa005008f5fa2fe6cd888c85ca05ae9, 0xeeb1a28cdf1a91ecc533285f28b4ad, 0x001b61 ] } , - BigNum { limbs: [ 0xd19bc8cbd2faac2393abcd485fee6d, 0x63042b0b017f91f84ff7a4d483324e, 0x00493e ] } , - BigNum { limbs: [ 0xec083a342b6152dc6c5431b7a01194, 0x444efe927bc8a141881064cd54d304, 0x002aaf ] } , - BigNum { limbs: [ 0xfe867dc61896f386642e87c3c5520f, 0xd064608e5f2f072d1252b0ee8768db, 0x002e8e ] } , - BigNum { limbs: [ 0xbf1d8539e5c50b799bd1773c3aadf2, 0xd6eec90f1e192c0cc5b558b3509c77, 0x00455e ] } , - BigNum { limbs: [ 0x7c5b52db2a5c58e302dccf4853d300, 0x18783b6e925b1875aba524351eafb0, 0x001b40 ] } , - BigNum { limbs: [ 0x4148b024d3ffa61cfd232fb7ac2d01, 0x8edaee2eeaed1ac42c62e56cb955a3, 0x0058ad ] } , - BigNum { limbs: [ 0x31b0356f6a9b5c49182c727dbb9b2e, 0x482e7e3453a9b0c1aa8a59aec67c30, 0x0051b3 ] } , - BigNum { limbs: [ 0x8bf3cd9093c0a2b6e7d38c824464d3, 0x5f24ab69299e82782d7daff3118923, 0x00223a ] } , - BigNum { limbs: [ 0xecd8830dcc0a87a87aba4a19b4551b, 0x20593e7aa7d629114bed4238dad377, 0x003fa2 ] } , - BigNum { limbs: [ 0xd0cb7ff2325177578545b4e64baae6, 0x86f9eb22d5720a288c1ac768fd31db, 0x00344b ] } , - BigNum { limbs: [ 0x749ce3d6806cc2df259f8f0b5c45d6, 0x9de85005026e67409b01de51fdb529, 0x00012e ] } , - BigNum { limbs: [ 0x49071f297def3c20da606ff4a3ba2b, 0x096ad9987ad9cbf93d062b4fda502a, 0x0072bf ] } , - BigNum { limbs: [ 0x206fbc4adcbd25d3873ed3a6ec005f, 0xa54afcaeb187f4382c695d1c52f9a4, 0x002a07 ] } , - BigNum { limbs: [ 0x9d3446b5219ed92c78c12b5913ffa2, 0x02082ceecbc03f01ab9eac85850baf, 0x0049e6 ] } , - BigNum { limbs: [ 0x05eef4a96aad48bd7831edbb030fe8, 0x5814750a6cbe6d7b9d657ca5570433, 0x003ec1 ] } , - BigNum { limbs: [ 0xb7b50e5693aeb64287ce1144fcf019, 0x4f3eb4931089c5be3aa28cfc810120, 0x00352c ] } , - BigNum { limbs: [ 0x8cca56e78e96b9e0a8ac1b333b6dd3, 0x735d04dc0040e8378be639ffa7e013, 0x00323f ] } , - BigNum { limbs: [ 0x30d9ac186fc5451f5753e3ccc4922e, 0x33f624c17d074b024c21cfa2302540, 0x0041ae ] } , - BigNum { limbs: [ 0x6fbe9550966ceedce70e087bbfc955, 0xa59c190e10e0d2f740262a46581b55, 0x000356 ] } , - BigNum { limbs: [ 0x4de56daf67ef102318f1f6844036ac, 0x01b7108f6c67604297e1df5b7fe9fe, 0x007097 ] } , - BigNum { limbs: [ 0xe18e474ae247464219652d417991d9, 0x59e2fa4a0e2d43e305da5e1bbe7b40, 0x001cac ] } , - BigNum { limbs: [ 0xdc15bbb51c14b8bde69ad1be866e28, 0x4d702f536f1aef56d22dab86198a12, 0x005741 ] } , - BigNum { limbs: [ 0xa918bc0373c6c8466b081672596f68, 0xe2053bec9fec3247210a1e7da36c46, 0x001f43 ] } , - BigNum { limbs: [ 0x148b46fc8a9536b994f7e88da69099, 0xc54dedb0dd5c00f2b6fdeb2434990d, 0x0054a9 ] } , - BigNum { limbs: [ 0xdd6fb6b626c0980deb33b55635d786, 0x2b7ad6b8e554b9e31698cf2929dc64, 0x002201 ] } , - BigNum { limbs: [ 0xe0344c49d79b66f214cc49a9ca287b, 0x7bd852e497f37956c16f3a78ae28ee, 0x0051ec ] } , - BigNum { limbs: [ 0x93bae27d7c8966716d5f7d8adc97ea, 0x1b0361161a437bc9bc70a777b79a25, 0x006474 ] } , - BigNum { limbs: [ 0x29e9208281d2988e92a08175236817, 0x8c4fc8876304b7701b97622a206b2e, 0x000f79 ] } , - BigNum { limbs: [ 0x903c61723623d784ae05866017ee40, 0x39f9472de76f53fe5729a1399f1093, 0x0031e3 ] } , - BigNum { limbs: [ 0x2d67a18dc838277b51fa789fe811c1, 0x6d59e26f95d8df3b80de686838f4c0, 0x00420a ] } , - BigNum { limbs: [ 0x24d57952c2179c0ade8d476f637dd2, 0x97e408eec004f78e806eb0f4022ff0, 0x0071b5 ] } , - BigNum { limbs: [ 0x98ce89ad3c4462f52172b7909c822f, 0x0f6f20aebd433bab579958add5d563, 0x000238 ] } , - BigNum { limbs: [ 0x10182ef83597e2fd1d06b2287e2963, 0xbaf250f91eab2bea3d671d9097441d, 0x005c2b ] } , - BigNum { limbs: [ 0xad8bd407c8c41c02e2f94cd781d69e, 0xec60d8a45e9d074f9aa0ec1140c136, 0x0017c1 ] } , - BigNum { limbs: [ 0xb07fa0fdd65a6b01583cca695cba0f, 0xec810deb108a31e2fa98dc4b1e43c1, 0x001a4a ] } , - BigNum { limbs: [ 0x0d246202280193fea7c33496a345f2, 0xbad21bb26cbe0156dd6f2d56b9c192, 0x0059a2 ] } , - BigNum { limbs: [ 0x03e8294f5b02f3d11b3fcd84beba66, 0x1b38f45499d57d71ada7cd3a346199, 0x005cf0 ] } , - BigNum { limbs: [ 0xb9bbd9b0a3590b2ee4c0317b41459b, 0x8c1a3548e372b5c82a603c67a3a3ba, 0x0016fd ] } , - BigNum { limbs: [ 0xf819f7fbd18722ca2e518d542f5ab4, 0x35118c1d063b5c7bd78eafd2363f37, 0x005c5a ] } , - BigNum { limbs: [ 0xc58a0b042cd4dc35d1ae71abd0a54d, 0x72419d80770cd6be007959cfa1c61b, 0x001793 ] } , - BigNum { limbs: [ 0x4c749d2221afabc6570d2ea95bfd84, 0x230b34c24e2299c8a193d439a310dd, 0x001a41 ] } , - BigNum { limbs: [ 0x712f65dddcac5339a8f2d056a4027d, 0x8447f4db2f2599713674356834f476, 0x0059ac ] } , - BigNum { limbs: [ 0x5b986955de3d638aab34fd0a699f92, 0x5244f60d187bbb3dd6f817e650250b, 0x00730f ] } , - BigNum { limbs: [ 0x620b99aa201e9b7554cb01f596606f, 0x550e339064cc77fc010ff1bb87e048, 0x0000de ] } , - BigNum { limbs: [ 0x3db510e55d16a3e67a1afdf2e1d708, 0xaf7b83040141e91596d67292f596fa, 0x0016f9 ] } , - BigNum { limbs: [ 0x7feef21aa1455b1985e5010d1e28f9, 0xf7d7a6997c064a244131970ee26e59, 0x005cf3 ] } , - BigNum { limbs: [ 0xce9513fd14fa7340e4c962f57bba4b, 0x7452c5c978665bef62d338fc0848a3, 0x000809 ] } , - BigNum { limbs: [ 0xef0eef02e9618bbf1b369c0a8445b6, 0x330063d404e1d74a7534d0a5cfbcaf, 0x006be4 ] } , - BigNum { limbs: [ 0x7ab3a7d22d6c5592b4c291774613b8, 0x79855eaa576ca9326e0004f6e7c7e8, 0x00196f ] } , - BigNum { limbs: [ 0x42f05b2dd0efa96d4b3d6d88b9ec49, 0x2dcdcaf325db8a076a0804aaf03d6b, 0x005a7e ] } , - BigNum { limbs: [ 0x961fc06f917f456838fa701f0cdbfe, 0x91826d1ea37ca6b777d6a373de1df3, 0x000773 ] } , - BigNum { limbs: [ 0x278442906cdcb997c7058ee0f32403, 0x15d0bc7ed9cb8c826031662df9e760, 0x006c7a ] } , - BigNum { limbs: [ 0x3bea52fcee5c63623d46a32577733e, 0x40908d912fb4d3aadb67990338294c, 0x0024e3 ] } , - BigNum { limbs: [ 0x81b9b0030fff9b9dc2b95bda888cc3, 0x66c29c0c4d935f8efca0709e9fdc07, 0x004f0a ] } , - BigNum { limbs: [ 0x0c65a059be118a25093e32d48647fc, 0x89a064a13d0524e66bbc118025ac0b, 0x004560 ] } , - BigNum { limbs: [ 0xb13e62a6404a74daf6c1cc2b79b805, 0x1db2c4fc40430e536c4bf821b25948, 0x002e8d ] } , - BigNum { limbs: [ 0x72d3eac34989c0c460bf22c6dd910f, 0xebc8ca0be3db6b57d03403d311f62f, 0x002789 ] } , - BigNum { limbs: [ 0x4ad0183cb4d23e3b9f40dc39226ef2, 0xbb8a5f91996cc7e207d405cec60f24, 0x004c63 ] } , - BigNum { limbs: [ 0xa058e2c2a8dc2b2f4286ba7a4e32a8, 0xa84ec3c5e8eac82a05812d8bb32c75, 0x00595f ] } , - BigNum { limbs: [ 0x1d4b203d557fd3d0bd794485b1cd59, 0xff0465d7945d6b0fd286dc1624d8de, 0x001a8d ] } , - BigNum { limbs: [ 0x3e55838f11d552fa1d1933f24d7bfd, 0x35a06ce0919752c9a55bbbc7e37efe, 0x0051c0 ] } , - BigNum { limbs: [ 0x7f4e7f70ec86ac05e2e6cb0db28404, 0x71b2bcbcebb0e07032ac4dd9f48655, 0x00222d ] } , - BigNum { limbs: [ 0x8bcd5f497503b12d0f0a19166b00c7, 0x0e645548e4bcc54b5ed9c1a33946bd, 0x004185 ] } , - BigNum { limbs: [ 0x31d6a3b689584dd2f0f5e5e994ff3a, 0x98eed454988b6dee792e47fe9ebe96, 0x003268 ] } , - BigNum { limbs: [ 0xebfd640c6d99e1b579a40cf2801b02, 0x2aab2ab6864674ce062206a898e6d8, 0x00698d ] } , - BigNum { limbs: [ 0xd1a69ef390c21d4a865bf20d7fe4ff, 0x7ca7fee6f701be6bd1e602f93f1e7a, 0x000a60 ] } , - BigNum { limbs: [ 0x5afb20b758d4c56810b3b69d253b76, 0x48761d47bb2dbdcc28003263f82d28, 0x00736a ] } , - BigNum { limbs: [ 0x62a8e248a5873997ef4c4862dac48b, 0x5edd0c55c21a756db007d73ddfd82b, 0x000083 ] } , - BigNum { limbs: [ 0xc1ad4c687f28a233811ea1fe0c65f4, 0x66679a5d88b1ecfbede342dee7f415, 0x001bb4 ] } , - BigNum { limbs: [ 0xfbf6b6977f335ccc7ee15d01f39a0d, 0x40eb8f3ff496463dea24c6c2f0113d, 0x005839 ] } , - BigNum { limbs: [ 0x140b7174540d1ee0723c72eb58f584, 0x0d469c569786f01e6f45ceee8419f9, 0x002153 ] } , - BigNum { limbs: [ 0xa998918baa4ee01f8dc38c14a70a7d, 0x9a0c8d46e5c1431b68c23ab353eb5a, 0x00529a ] } , - BigNum { limbs: [ 0xc7ab07e301263fbe92da98becd1980, 0xfa81cc9e333fd5f34d908dff438caa, 0x00104b ] } , - BigNum { limbs: [ 0xf5f8fb1cfd35bf416d25664132e681, 0xacd15cff4a085d468a777ba29478a8, 0x0063a1 ] } , - BigNum { limbs: [ 0x1c5b62960ddd7bf7a3f674f9b19bf4, 0x8a0fee2cab3a400753b97514ed7663, 0x001a30 ] } , - BigNum { limbs: [ 0xa148a069f07e83085c098a064e640d, 0x1d433b70d20df332844e948cea8ef0, 0x0059bd ] } , - BigNum { limbs: [ 0x8b6515f4891a079d93099bed238a2d, 0xb683645e7a9b063a79a35d016c0793, 0x006ecb ] } , - BigNum { limbs: [ 0x323eed0b7541f7626cf66312dc75d4, 0xf0cfc53f02ad2cff5e64aca06bfdc0, 0x000521 ] } , - BigNum { limbs: [ 0x50700bdc4b9b68122fe2e0669a2cc8, 0xc18d055596827a36b26c3985d06330, 0x00035b ] } , - BigNum { limbs: [ 0x6d33f723b2c096edd01d1e9965d339, 0xe5c62447e6c5b903259bd01c07a223, 0x007091 ] } , - BigNum { limbs: [ 0xeecf7cd0cd4949b5cc4b34b05aff2c, 0xc104bb6ae704668000c77dfd2ab5db, 0x002d17 ] } , - BigNum { limbs: [ 0xced4862f3112b54a33b4ca4fa500d5, 0xe64e6e329643ccb9d7408ba4ad4f77, 0x0046d5 ] } , - BigNum { limbs: [ 0x15b63f114c71efc32c2d1d3fc57bb5, 0xe009cb95e995039beacf8acebb1062, 0x006195 ] } , - BigNum { limbs: [ 0xa7edc3eeb1ea0f3cd3d2e1c03a844c, 0xc7495e0793b32f9ded387ed31cf4f1, 0x001257 ] } , - BigNum { limbs: [ 0xf304939c366da7fa6ceef222eb879a, 0x9af90ed12f4499f61f4617deac542e, 0x0006d4 ] } , - BigNum { limbs: [ 0xca9f6f63c7ee570593110cdd147867, 0x0c5a1acc4e039943b8c1f1c32bb124, 0x006d19 ] } , - BigNum { limbs: [ 0x1a907743c3d4b3b9f177b76f473cbc, 0x1ce244d73adbedbfb8fc9a7be5d5c8, 0x002a44 ] } , - BigNum { limbs: [ 0xa3138bbc3a874b460e884790b8c345, 0x8a70e4c6426c457a1f0b6f25f22f8b, 0x0049a9 ] } , - BigNum { limbs: [ 0xac3a69d3f05c06b6526124c54da696, 0xba3f3484126d34771621130c70cbfc, 0x0007ba ] } , - BigNum { limbs: [ 0x1169992c0dfff849ad9eda3ab2596b, 0xed13f5196adafec2c1e6f695673957, 0x006c32 ] } , - BigNum { limbs: [ 0x680114a074f1baf65070e6d99ba93c, 0xfb30ee127ca0dc895e94a770ff3373, 0x002096 ] } , - BigNum { limbs: [ 0x55a2ee5f896a4409af8f18266456c5, 0xac223b8b00a756b079736230d8d1e0, 0x005356 ] } , - BigNum { limbs: [ 0x9258044aa060587c5dfd459fa42382, 0xd9cfdbfc9d66f6151fb652c0f57149, 0x0018b5 ] } , - BigNum { limbs: [ 0x2b4bfeb55dfba683a202b9605bdc7f, 0xcd834da0dfe13d24b851b6e0e2940a, 0x005b37 ] } , - BigNum { limbs: [ 0x27a423c7cc92cc140700f6f5ad1992, 0x160d7fc7387b84be2f7125588a799d, 0x003da1 ] } , - BigNum { limbs: [ 0x95ffdf3831c932ebf8ff080a52e66f, 0x9145a9d644ccae7ba896e4494d8bb6, 0x00364c ] } , - BigNum { limbs: [ 0x69193792854e59eaa83d0bb9842e37, 0x55f8128b96e1bec7f66e6610a74bbd, 0x006d34 ] } , - BigNum { limbs: [ 0x548acb6d790da51557c2f3467bd1ca, 0x515b1711e6667471e199a39130b996, 0x0006b9 ] } , - BigNum { limbs: [ 0xba514cd0bf3bc04c72f9b057bbbeda, 0xad4f7c60faf33102bf19312d4f8a02, 0x0018fe ] } , - BigNum { limbs: [ 0x0352b62f3f203eb38d064ea8444127, 0xfa03ad3c8255023718eed874887b51, 0x005aee ] } , - BigNum { limbs: [ 0x50400a4d7958bad4bc9284b961cfbc, 0xd3b1f84b876e27307b162670856cd9, 0x002777 ] } , - BigNum { limbs: [ 0x6d63f8b28503442b436d7a469e3045, 0xd3a13151f5da0c095cf1e33152987a, 0x004c75 ] } , - BigNum { limbs: [ 0x5aad4b9c1dd14b87b9261d38ab4a25, 0x5c5bb54b12a82b3248a8f8582464c8, 0x004171 ] } , - BigNum { limbs: [ 0x62f6b763e08ab37846d9e1c754b5dc, 0x4af774526aa008078f5f1149b3a08b, 0x00327c ] } , - BigNum { limbs: [ 0xd7a64cccac9b12ac9567be9a36d522, 0xc447ce21b78aefacaa48c2c4827459, 0x006b54 ] } , - BigNum { limbs: [ 0xe5fdb63351c0ec536a984065c92adf, 0xe30b5b7bc5bd438d2dbf46dd5590f9, 0x000898 ] } , - BigNum { limbs: [ 0x8feed2f822e3f634d926b66d9a40d9, 0x7051d2cfcef60b4704bcfac11d52d8, 0x0012ea ] } , - BigNum { limbs: [ 0x2db53007db7808cb26d9489265bf28, 0x370156cdae5227f2d34b0ee0bab27b, 0x006103 ] } , - BigNum { limbs: [ 0xd479a309a7768d1dad095b97e1f99c, 0x5f2b8f504ab5b1261c30d1e2c9a258, 0x000c36 ] } , - BigNum { limbs: [ 0xe92a5ff656e571e252f6a3681e0665, 0x48279a4d32928213bbd737bf0e62fa, 0x0067b7 ] } , - BigNum { limbs: [ 0x736de903ce2b7aaddcfc96a506dae2, 0xbb19b5815e67af1b0f713a146c9387, 0x00346c ] } , - BigNum { limbs: [ 0x4a3619fc303084522303685af9251f, 0xec39741c1ee0841ec896cf8d6b71cc, 0x003f80 ] } , - BigNum { limbs: [ 0xb3f165d554150970217c6264ef06a7, 0xb2d1c312e47ba1d384187ac0cbd3f3, 0x0068a5 ] } , - BigNum { limbs: [ 0x09b29d2aaa46f58fde839c9b10f95a, 0xf481668a98cc916653ef8ee10c3160, 0x000b47 ] } , - BigNum { limbs: [ 0x305485b09dd0d77ce50ec0e597b1be, 0xbc95e93142ab188f4c46937150a9b9, 0x004d83 ] } , - BigNum { limbs: [ 0x8d4f7d4f608b27831af13e1a684e43, 0xeabd406c3a9d1aaa8bc17630875b9a, 0x002669 ] } , - BigNum { limbs: [ 0x5e4ac091a8413b5f2fb9c8ee9f3784, 0xb0d68f671db5f1b534e07ce710985d, 0x0055c4 ] } , - BigNum { limbs: [ 0x5f59426e561ac3a0d046361160c87d, 0xf67c9a365f924184a3278cbac76cf6, 0x001e28 ] } , - BigNum { limbs: [ 0x089f3a743c502732d4d0b2be200c36, 0x89a7a2513fddbc12df9658c7b4a74b, 0x000a5e ] } , - BigNum { limbs: [ 0xb504c88bc20bd7cd2b2f4c41dff3cb, 0x1dab874c3d6a7726f871b0da235e08, 0x00698f ] } , - BigNum { limbs: [ 0x5e6f6b805b1acb8faa4aea5baef097, 0x701853308eaff1326910bc966667fe, 0x001616 ] } , - BigNum { limbs: [ 0x5f34977fa341337055b514a4510f6a, 0x373ad66cee9842076ef74d0b719d55, 0x005dd7 ] } , - BigNum { limbs: [ 0x515de81a8f54d10bdbcbe1522354a4, 0x99bc6abc5e8ce134e3c781697fafab, 0x00294c ] } , - BigNum { limbs: [ 0x6c461ae56f072df424341daddcab5d, 0x0d96bee11ebb5204f44088385855a8, 0x004aa1 ] } , - BigNum { limbs: [ 0xaf1958d3f38148b9522b20ae99e8eb, 0x8fab0ad3ea6c60070f1a3e701e4021, 0x000461 ] } , - BigNum { limbs: [ 0x0e8aaa2c0adab646add4de51661716, 0x17a81ec992dbd332c8edcb31b9c532, 0x006f8c ] } , - BigNum { limbs: [ 0x2736107d34be5daadbf867e295fe4e, 0xe2b1413ae56b13c6ed1276f03221d7, 0x006388 ] } , - BigNum { limbs: [ 0x966df282c99da1552407971d6a01b3, 0xc4a1e86297dd1f72eaf592b1a5e37c, 0x001064 ] } , - BigNum { limbs: [ 0xde4e04f17d1bbebad332c47b502202, 0xe6965a8b5056b3aff7b76fe8a3969e, 0x002429 ] } , - BigNum { limbs: [ 0xdf55fe0e814040452ccd3a84afddff, 0xc0bccf122cf17f89e05099b9346eb4, 0x004fc3 ] } , - BigNum { limbs: [ 0x2d7ed96060d2064f5bf1a980b4b953, 0xef839c67e73b2b58548adad886286f, 0x0067de ] } , - BigNum { limbs: [ 0x9025299f9d89f8b0a40e557f4b46ae, 0xb7cf8d35960d07e1837d2ec951dce4, 0x000c0e ] } , - BigNum { limbs: [ 0x5b275c4ae15be49062ff9a0538ec84, 0xecbcd74b6124435ea8ffe19c8c85a0, 0x000496 ] } , - BigNum { limbs: [ 0x627ca6b51d001a6f9d0064fac7137d, 0xba9652521c23efdb2f0828054b7fb3, 0x006f56 ] } , - BigNum { limbs: [ 0x65da083310e06da099ecb7d80ab778, 0xe6259f2dfb34f6430aea6aa55bf0e5, 0x0007de ] } , - BigNum { limbs: [ 0x57c9facced7b915f66134727f54889, 0xc12d8a6f82133cf6cd1d9efc7c146e, 0x006c0e ] } , - BigNum { limbs: [ 0x8a0bce9fdfac61064a5280cb9b0a5c, 0x564df61c66ea2dca882e26bcc0c102, 0x0022de ] } , - BigNum { limbs: [ 0x339834601eaf9df9b5ad7e3464f5a5, 0x51053381165e056f4fd9e2e5174451, 0x00510f ] } , - BigNum { limbs: [ 0xd388dec8bdb5c912e39b8b4c1ce30a, 0x38f4465cd0832f946b3f886734d3ac, 0x00512a ] } , - BigNum { limbs: [ 0xea1b243740a635ed1c6473b3e31cf7, 0x6e5ee340acc503a56cc8813aa331a6, 0x0022c3 ] } , - BigNum { limbs: [ 0x1803cb0ce55a68b138b29831a31ae4, 0xd5b1c6859a593bf47374fb414144fe, 0x000b9a ] } , - BigNum { limbs: [ 0xa5a037f31901964ec74d66ce5ce51d, 0xd1a16317e2eef74564930e6096c055, 0x006852 ] } , - BigNum { limbs: [ 0x62075a6764c01e1be69f3270830aad, 0x969225ba3389447bddbac2fd51ed68, 0x005807 ] } , - BigNum { limbs: [ 0x5b9ca898999be0e41960cc8f7cf554, 0x10c103e349beeebdfa4d46a48617eb, 0x001be6 ] } , - BigNum { limbs: [ 0xf3bdbc0f422b0a94e53fb564bdd489, 0x70ead42b9162943f2b9abaa7250db0, 0x005c61 ] } , - BigNum { limbs: [ 0xc9e646f0bc30f46b1ac0499b422b78, 0x36685571ebe59efaac6d4efab2f7a2, 0x00178c ] } , - BigNum { limbs: [ 0x7715244985e12969c563a89174294c, 0x146a268b13c20cc5580a897bad41f4, 0x0035f0 ] } , - BigNum { limbs: [ 0x468edeb6787ad5963a9c566e8bd6b5, 0x92e90312698626747ffd80262ac35f, 0x003dfd ] } , - BigNum { limbs: [ 0x1bb332b4e8ce845d8e6990bfa23004, 0xbc8a3a58c72ad4fbf85ba3c7b295cb, 0x003c5d ] } , - BigNum { limbs: [ 0xa1f0d04b158d7aa271966e405dcffd, 0xeac8ef44b61d5e3ddfac65da256f88, 0x00378f ] } , - BigNum { limbs: [ 0x4c06153eb88810ba7f245503b95a8d, 0x1b18f176a5e0bf948a2120473a20d3, 0x0063c2 ] } , - BigNum { limbs: [ 0x719dedc145d3ee4580dba9fc46a574, 0x8c3a3826d76773a54de6e95a9de480, 0x00102b ] } , - BigNum { limbs: [ 0x501e5b050695d67acc968a7ee39687, 0xe9acd483910f8d1373f244cb09332b, 0x0038b7 ] } , - BigNum { limbs: [ 0x6d85a7faf7c62885336974811c697a, 0xbda65519ec38a6266415c4d6ced228, 0x003b35 ] } , - BigNum { limbs: [ 0x6c95434baa21c004caf2400fd5ee93, 0x01e4a8a5521a3cc485d9d1f4893b37, 0x005ae6 ] } , - BigNum { limbs: [ 0x510ebfb4543a3efb350dbef02a116e, 0xa56e80f82b2df675522e37ad4eca1c, 0x001907 ] } , - BigNum { limbs: [ 0xaca11799075f19a1afe59459ec7a6c, 0x1932f58837e2fd33cb428c4702ad69, 0x0006b0 ] } , - BigNum { limbs: [ 0x1102eb66f6fce55e501a6aa6138595, 0x8e203415456536060cc57d5ad557ea, 0x006d3d ] } , - BigNum { limbs: [ 0x3fb9a2d6fcdc22625384be62a7a2e8, 0xe66c7ea5ba6f2c5ded5ceeccb2adf6, 0x00109d ] } , - BigNum { limbs: [ 0x7dea6029017fdc9dac7b409d585d19, 0xc0e6aaf7c2d906dbeaab1ad525575d, 0x00634f ] } , - BigNum { limbs: [ 0x863f5f009ecad09830635b160a4e50, 0xe86e2ca5471eb6794f0e98b62bca80, 0x0014cc ] } , - BigNum { limbs: [ 0x3764a3ff5f912e67cf9ca3e9f5b1b1, 0xbee4fcf836297cc088f970ebac3ad3, 0x005f20 ] } , - BigNum { limbs: [ 0x4a14f4b69dcc7f13c76b01443a1a6a, 0x3f2176d7176b4e16fbfa13619ed849, 0x00455c ] } , - BigNum { limbs: [ 0x738f0e49608f7fec3894fdbbc5e597, 0x6831b2c665dce522dc0df640392d0a, 0x002e91 ] } , - BigNum { limbs: [ 0x0bd5440656804fe785f7e33fdf3618, 0x5d764886ee710487aa8f6987c373cb, 0x002b27 ] } , - BigNum { limbs: [ 0xb1cebef9a7dbaf187a081bc020c9e9, 0x49dce1168ed72eb22d78a01a149188, 0x0048c6 ] } , - BigNum { limbs: [ 0x4537fd0d912eeaf8d0009cc2a6c535, 0x61eb978ffd8a5d8cb9d35a162fdbd5, 0x0028de ] } , - BigNum { limbs: [ 0x786c05f26d2d14072fff623d593acc, 0x4567920d7fbdd5ad1e34af8ba8297e, 0x004b0f ] } , - BigNum { limbs: [ 0x1d1aec1b762d2b71962ed94d9ec469, 0x8340e97d268e6db2b2d9ca2e4902c2, 0x005ea0 ] } , - BigNum { limbs: [ 0xa08916e4882ed38e69d125b2613b98, 0x2412402056b9c587252e3f738f0291, 0x00154d ] } , - BigNum { limbs: [ 0x1959d9d4d000d57d8a7a6c8da4a98a, 0x695f56d8f6c543c94f59a6eb37f312, 0x00278e ] } , - BigNum { limbs: [ 0xa44a292b2e5b2982758592725b5677, 0x3df3d2c48682ef7088ae62b6a01241, 0x004c5f ] } , - BigNum { limbs: [ 0x7fe3b9ce8d4477e7b70dbad015d339, 0x391ed371c0f55135022b211d95bd0a, 0x00473d ] } , - BigNum { limbs: [ 0x3dc049317117871848f2442fea2cc8, 0x6e34562bbc52e204d5dce884424849, 0x002cb0 ] } , - BigNum { limbs: [ 0xeb83e42ef3f6bff9ed4f03933eef85, 0xdbabda2a09d6a9ca21650de7491c30, 0x0007d1 ] } , - BigNum { limbs: [ 0xd2201ed10a653f0612b0fb6cc1107c, 0xcba74f737371896fb6a2fbba8ee922, 0x006c1b ] } , - BigNum { limbs: [ 0xde1994dace1ccf2f3ec47bd8b0ba51, 0xec2473e12abc21c1bcc99837c8b4f4, 0x00480f ] } , - BigNum { limbs: [ 0xdf8a6e25303f2fd0c13b83274f45b0, 0xbb2eb5bc528c11781b3e716a0f505e, 0x002bdd ] } , - BigNum { limbs: [ 0xeb78f9f7d520bba268f1f3f9991f29, 0xa0cff984144a7eec9c9f7a1d45bf48, 0x0018ea ] } , - BigNum { limbs: [ 0xd22b0908293b435d970e0b0666e0d8, 0x0683301968fdb44d3b688f8492460a, 0x005b03 ] } , - BigNum { limbs: [ 0xf811d4c6505005d5191d3dde403c3e, 0x091c4b9d1142e84835306f7d058a71, 0x0003ed ] } , - BigNum { limbs: [ 0xc5922e39ae0bf92ae6e2c121bfc3c3, 0x9e36de006c054af1a2d79a24d27ae1, 0x007000 ] } , - BigNum { limbs: [ 0xd7699069b48f58d70edde47d675fa1, 0xc4567150a5beaddfcf3650346bbe9e, 0x00617a ] } , - BigNum { limbs: [ 0xe63a729649cca628f1221a8298a060, 0xe2fcb84cd789855a08d1b96d6c46b4, 0x001272 ] } , - BigNum { limbs: [ 0x5dbfac1f1fe4b9be012e3d0f88b8f7, 0xb7b62c9021abf738c5833b75cdaa6d, 0x001b02 ] } , - BigNum { limbs: [ 0x5fe456e0de774541fed1c1f077470a, 0xef9cfd0d5b9c3c011284ce2c0a5ae6, 0x0058ea ] } , - BigNum { limbs: [ 0x6f2857c36a7e1d9b6c9285b13538ad, 0x18566cfd81a49b5745a08aa3699d08, 0x005ac0 ] } , - BigNum { limbs: [ 0x4e7bab3c93dde164936d794ecac754, 0x8efcbc9ffba397e292677efe6e684b, 0x00192d ] } , - BigNum { limbs: [ 0xca09572342def7ba5726e06aa67c30, 0xb9bfed75084452e1463e0a059e7d7e, 0x006c8f ] } , - BigNum { limbs: [ 0xf39aabdcbb7d0745a8d91e955983d1, 0xed933c287503e05891c9ff9c3987d4, 0x00075d ] } , - BigNum { limbs: [ 0xb8cb20a77d72301e268819ba508ef6, 0x479ce465498369c5df0b617bd142d6, 0x002170 ] } , - BigNum { limbs: [ 0x04d8e25880e9cee1d977e545af710b, 0x5fb6453833c4c973f8fca82606c27d, 0x00527d ] } , - BigNum { limbs: [ 0x26621eaacc2ecdd7a9ede4acccf961, 0xd336fe1aa081805c3d7296833b35a8, 0x001689 ] } , - BigNum { limbs: [ 0x9741e455322d312856121a533306a0, 0xd41c2b82dcc6b2dd9a95731e9ccfab, 0x005d63 ] } , - BigNum { limbs: [ 0x201a5821e639da07da2d48f5cd0787, 0x5c66a3e483f153122fd2b0ffde049a, 0x0055f9 ] } , - BigNum { limbs: [ 0x9d89aade182224f825d2b60a32f87a, 0x4aec85b8f956e027a83558a1fa00b9, 0x001df4 ] } , - BigNum { limbs: [ 0x9026546d768efac20b830cc925e818, 0xb21e5543ecce6dc01e733db2cbd86a, 0x0060e6 ] } , - BigNum { limbs: [ 0x2d7dae9287cd043df47cf236da17e9, 0xf534d4599079c579b994cbef0c2ce9, 0x001306 ] } , - BigNum { limbs: [ 0xf1f245ca8edb3130d3acddb0356ceb, 0xc3bb68888454c3916432097245e578, 0x003f57 ] } , - BigNum { limbs: [ 0xcbb1bd356f80cdcf2c53214fca9316, 0xe397c114f8f36fa873d6002f921fda, 0x003495 ] } , - BigNum { limbs: [ 0x5b416bad06a7528bc1932b0d274a1d, 0xf02be95b1a9e70f081507724a71a88, 0x005b78 ] } , - BigNum { limbs: [ 0x62629752f7b4ac743e6cd3f2d8b5e4, 0xb727404262a9c24956b7927d30eacb, 0x001874 ] } , - BigNum { limbs: [ 0xb0a7d87187c5c0e304a47cfe2c39f0, 0xcba79e856c22293082360528eebee2, 0x003b4a ] } , - BigNum { limbs: [ 0x0cfc2a8e76963e1cfb5b8201d3c611, 0xdbab8b1811260a0955d20478e94671, 0x0038a2 ] } , - BigNum { limbs: [ 0x6d86f1951712e83bf2a9b9d4a639c1, 0x251c92d55cc1d86c4cbda4eb5e6270, 0x004105 ] } , - BigNum { limbs: [ 0x501d116ae74916c40d56452b59c640, 0x823696c820865acd8b4a64b679a2e3, 0x0032e8 ] } , - BigNum { limbs: [ 0x2032b420d1fe8b1602cb7786c1f5e3, 0x2fd57acdc0bc3bc2e754e78bbdb068, 0x0067eb ] } , - BigNum { limbs: [ 0x9d714edf2c5d73e9fd3487793e0a1e, 0x777daecfbc8bf776f0b322161a54eb, 0x000c02 ] } , - BigNum { limbs: [ 0x1d8a62b9c4f076d098777bae4c5131, 0x62c281967ad887b5b1048c57291040, 0x00730e ] } , - BigNum { limbs: [ 0xa019a046396b882f67888351b3aed0, 0x4490a807026fab8427037d4aaef513, 0x0000df ] } , - BigNum { limbs: [ 0x05c9aa3ad941421836ad1a4285082d, 0x64bedefa515a0baf4bd9cc81ff243e, 0x001568 ] } , - BigNum { limbs: [ 0xb7da58c5251abce7c952e4bd7af7d4, 0x42944aa32bee278a8c2e3d1fd8e115, 0x005e85 ] } , - BigNum { limbs: [ 0x0c3ae2947f2aaaf882c6f1282fa4bf, 0x9ceaf4033df64e318d58820a2e95f5, 0x003256 ] } , - BigNum { limbs: [ 0xb169206b7f3154077d390dd7d05b42, 0x0a68359a3f51e5084aaf8797a96f5e, 0x004197 ] } , - BigNum { limbs: [ 0x819e5ef22725f40d41b8bf60aef96b, 0x217edb6cee5eb6a386acee69958ad7, 0x0024eb ] } , - BigNum { limbs: [ 0x3c05a40dd7360af2be473f9f510696, 0x85d44e308ee97c96515b1b38427a7c, 0x004f02 ] } , - BigNum { limbs: [ 0xfd86cce858f8c8c3adf3d3e5d685bf, 0x8c1e703f7f808df483f139d30e3c13, 0x001c1c ] } , - BigNum { limbs: [ 0xc01d3617a563363c520c2b1a297a42, 0x1b34b95dfdc7a5455416cfcec9c93f, 0x0057d1 ] } , - BigNum { limbs: [ 0xed617941b103b9bd7360167f49690f, 0xb7898c657ed61486518d8c5f968955, 0x0040b5 ] } , - BigNum { limbs: [ 0xd04289be4d5845428c9fe880b696f2, 0xefc99d37fe721eb3867a7d42417bfd, 0x003337 ] } , - BigNum { limbs: [ 0x768cbb400f3ad33232c7280ee80ad2, 0x20190a0862687ce549bde2dd6b0f1c, 0x004ddf ] } , - BigNum { limbs: [ 0x471747bfef212bcdcd38d6f117f52f, 0x873a1f951adfb6548e4a26c46cf637, 0x00260e ] } , - BigNum { limbs: [ 0xa1ce0189080895ba7d4348b3e9e6a5, 0xafb08780ceadafb713389188cd094f, 0x002e26 ] } , - BigNum { limbs: [ 0x1bd60176f653694582bcb64c16195c, 0xf7a2a21cae9a8382c4cf78190afc04, 0x0045c6 ] } , - BigNum { limbs: [ 0xaacd273b23eb136d7e35ad7dffbdb8, 0x386c09e2fd3d3b841c065526cbf892, 0x00219e ] } , - BigNum { limbs: [ 0x12d6dbc4da70eb9281ca5182004249, 0x6ee71fba800af7b5bc01b47b0c0cc1, 0x00524f ] } , - BigNum { limbs: [ 0xe01bf0fda622ef30b5dbc87cc84197, 0xeafa5e3ec783e66fd8bc18071b1f97, 0x00430b ] } , - BigNum { limbs: [ 0xdd88120258390fcf4a24368337be6a, 0xbc58cb5eb5c44cc9ff4bf19abce5bb, 0x0030e1 ] } , - BigNum { limbs: [ 0x144a26488e76c5f3f78dff3e64eff2, 0xd8c786d8f2a3a9f4d11fa88cb30729, 0x004479 ] } , - BigNum { limbs: [ 0xa959dcb76fe5390c0871ffc19b100f, 0xce8ba2c48aa4894506e8611524fe2a, 0x002f73 ] } , - BigNum { limbs: [ 0x4a1bd4592fe1551ea4d56a5d6a3654, 0x279f667a6ff2c62477cbd8d1dc7282, 0x003679 ] } , - BigNum { limbs: [ 0x73882ea6ce7aa9e15b2a94a295c9ad, 0x7fb3c3230d556d15603c30cffb92d1, 0x003d74 ] } , - BigNum { limbs: [ 0xc5e9ec9c4b3efb8902bffd4b07db39, 0x60cdeaa382f0eeb4135df31350fa9f, 0x00042f ] } , - BigNum { limbs: [ 0xf7ba1663b31d0376fd4001b4f824c8, 0x46853ef9fa574485c4aa168e870ab3, 0x006fbe ] } , - BigNum { limbs: [ 0xbc8a5b856414d3e0fda947724a81e9, 0xb0c5760e32cd0b9943d2d6d61529eb, 0x002ca0 ] } , - BigNum { limbs: [ 0x0119a77a9a472b1f0256b78db57e18, 0xf68db38f4a7b27a0943532cbc2db68, 0x00474c ] } , - BigNum { limbs: [ 0xa8119ed34f68195796130c33f27af7, 0xcfc06aac46bac4a4a9bfd42acfd1e9, 0x003288 ] } , - BigNum { limbs: [ 0x1592642caef3e5a869ecf2cc0d850a, 0xd792bef1368d6e952e48357708336a, 0x004164 ] } , - BigNum { limbs: [ 0xd34dc48b542a7916654b4e3193f385, 0xdbd781fc6d1c881dab49e15d37277d, 0x006a61 ] } , - BigNum { limbs: [ 0xea563e74aa3185e99ab4b0ce6c0c7c, 0xcb7ba7a1102bab1c2cbe2844a0ddd5, 0x00098b ] } , - BigNum { limbs: [ 0x7a246cd90253a0c3d729985a3d27ad, 0xf18f4ade05a6a3ebf7dbfa2a6d1169, 0x00418f ] } , - BigNum { limbs: [ 0x437f9626fc085e3c28d666a5c2d854, 0xb5c3debf77a18f4de02c0f776af3ea, 0x00325d ] } , - BigNum { limbs: [ 0xb978246a8a9751e006a537b0b22aa3, 0xb23b00803f2306393249e58f2e6d9d, 0x002324 ] } , - BigNum { limbs: [ 0x042bde9573c4ad1ff95ac74f4dd55e, 0xf518291d3e252d00a5be2412a997b6, 0x0050c8 ] } , - BigNum { limbs: [ 0xe9771aed2a45e4ed7a973f12c92d2b, 0x457c8751bd35931fcee5dda872f979, 0x000ec9 ] } , - BigNum { limbs: [ 0xd42ce812d4161a128568bfed36d2d6, 0x61d6a24bc012a01a09222bf9650bd9, 0x006524 ] } , - BigNum { limbs: [ 0x6eb9c39f25a1b6cad4adcb40845700, 0x0cf7a259f141112e10699e587abfb4, 0x0040e9 ] } , - BigNum { limbs: [ 0x4eea3f60d8ba48352b5233bf7ba901, 0x9a5b87438c07220bc79e6b495d459f, 0x003304 ] } , - BigNum { limbs: [ 0x55c873c327fe57370ab333c6f92093, 0x6ef876296e2b29311f879db097f3e9, 0x0033fd ] } , - BigNum { limbs: [ 0x67db8f3cd65da7c8f54ccb3906df6e, 0x385ab3740f1d0a08b8806bf140116a, 0x003ff0 ] } , - BigNum { limbs: [ 0xacb2cf03455d20a2195045a974862a, 0x51f5fedf54ea303d37414fe2284f56, 0x005f4e ] } , - BigNum { limbs: [ 0x10f133fcb8fede5de6afb9568b79d7, 0x555d2abe285e02fca0c6b9bfafb5fd, 0x00149f ] } , - BigNum { limbs: [ 0x063a5dd416fc7e587523b2c6c0bf06, 0x1a5ea6afd85d4791dc7d89fc483f7a, 0x006bfa ] } , - BigNum { limbs: [ 0xb769a52be75f80a78adc4c393f40fb, 0x8cf482eda4eaeba7fb8a7fa58fc5d9, 0x0007f3 ] } , - BigNum { limbs: [ 0xa066fe71d2adad04740fcd7b80fc99, 0x2a441d7ffda7d2a707cdd6d20c23ac, 0x00289e ] } , - BigNum { limbs: [ 0x1d3d048e2bae51fb8bf031847f0368, 0x7d0f0c1d7fa06092d03a32cfcbe1a7, 0x004b4f ] } , - BigNum { limbs: [ 0xede3875d96e2cd62979d1865413cb8, 0x278129efd34cb651d7c4276bdb209c, 0x004c48 ] } , - BigNum { limbs: [ 0xcfc07ba26779319d6862e69abec349, 0x7fd1ffada9fb7ce80043e235fce4b6, 0x0027a5 ] } , - BigNum { limbs: [ 0x9211824fd34cc6c76b6f5d6b8f1730, 0x4123de61856ae8ce8c8ee3d05f4bd7, 0x007381 ] } , - BigNum { limbs: [ 0x2b9280b02b0f38389490a19470e8d1, 0x662f4b3bf7dd4a6b4b7925d178b97c, 0x00006c ] } , - BigNum { limbs: [ 0x5b371e85e4ebbbc9ac443b6b1fe6b2, 0x987f518a9bb8270cb9aa18e75c64c6, 0x0058e6 ] } , - BigNum { limbs: [ 0x626ce47a1970433653bbc394e0194f, 0x0ed3d812e1900c2d1e5df0ba7ba08d, 0x001b07 ] } , - BigNum { limbs: [ 0xfe4a2d19b29c5bbc553c7e42f7b311, 0xc047cb8e976f912d2496f5d3df5ba3, 0x00209e ] } , - BigNum { limbs: [ 0xbf59d5e64bbfa343aac380bd084cf0, 0xe70b5e0ee5d8a20cb37113cdf8a9af, 0x00534e ] } , - BigNum { limbs: [ 0x6428df20f92acf73d509e47ebe32d7, 0x977fc989d6e9a45a613d58124dcd8c, 0x006af7 ] } , - BigNum { limbs: [ 0x597b23df05312f8c2af61a8141cd2a, 0x0fd36013a65e8edf76cab18f8a37c7, 0x0008f6 ] } , - BigNum { limbs: [ 0xa4cbd9833c3a414a181389f87bece1, 0x7743368184aff1caddd8e5b9862c15, 0x00428e ] } , - BigNum { limbs: [ 0x18d8297cc221bdb5e7ec7507841320, 0x300ff31bf898416efa2f23e851d93e, 0x00315f ] } , - BigNum { limbs: [ 0x03d461c35feb8959f37ab9f484d0ba, 0x402f68d642046c844b24b5fb7d2304, 0x007268 ] } , - BigNum { limbs: [ 0xb9cfa13c9e7075a60c85450b7b2f47, 0x6723c0c73b43c6b58ce353a65ae24f, 0x000185 ] } , - BigNum { limbs: [ 0x72fb7ca4c58800a9c8a7ac0afc154b, 0x9cf9569612de921e2c6b2e2b0e5b1f, 0x0045d0 ] } , - BigNum { limbs: [ 0x4aa8865b38d3fe56375852f503eab6, 0x0a59d3076a69a11bab9cdb76c9aa34, 0x002e1d ] } , - BigNum { limbs: [ 0x8e8e79ce1738afcbd889784fc85af0, 0x70adf3759a105ad6b00db8c6608aa4, 0x0037ee ] } , - BigNum { limbs: [ 0x2f158931e7234f34277686b037a511, 0x36a53627e337d86327fa50db777aaf, 0x003bff ] } , - BigNum { limbs: [ 0x62920b1726c6fbf8c8655cbd410ec7, 0x2205bb5233768eac7b3e1e56a597ad, 0x003714 ] } , - BigNum { limbs: [ 0x5b11f7e8d7950307379aa242bef13a, 0x854d6e4b49d1a48d5cc9eb4b326da6, 0x003cd9 ] } , - BigNum { limbs: [ 0x48da51a3ceef7da8462d95102f2604, 0x6380b57ff9a33393332f846410f366, 0x003f53 ] } , - BigNum { limbs: [ 0x74c9b15c2f6c8157b9d269efd0d9fd, 0x43d2741d83a4ffa6a4d8853dc711ed, 0x00349a ] } , - BigNum { limbs: [ 0x2b763fc1c4da11dee3b94096c967be, 0x2e2ea7ca3dc3e00372501f9a620697, 0x0029b9 ] } , - BigNum { limbs: [ 0x922dc33e3981ed211c46be69369843, 0x792481d33f84533665b7ea0775febc, 0x004a34 ] } , - BigNum { limbs: [ 0x4dfad4798e80cf4f71fa87d693d5dd, 0xf99d1c130150cf2f177d4c65cf9085, 0x000a52 ] } , - BigNum { limbs: [ 0x6fa92e866fdb2fb08e0577296c2a24, 0xadb60d8a7bf7640ac08abd3c0874ce, 0x00699a ] } , - BigNum { limbs: [ 0xace76ff79739280558a1daf69bb76b, 0x9a1d28915435498040eea16a597630, 0x002e21 ] } , - BigNum { limbs: [ 0x10bc93086722d6faa75e2409644896, 0x0d36010c2912e9b9971968377e8f23, 0x0045cc ] } , - BigNum { limbs: [ 0xab0cb85cf1ab233c52f846b770de97, 0x4db8b5ea55272bd9b05bc47234f06c, 0x004bf5 ] } , - BigNum { limbs: [ 0x12974aa30cb0dbc3ad07b8488f216a, 0x599a73b32821076027ac452fa314e7, 0x0027f8 ] } , - BigNum { limbs: [ 0xb5e1c37fc947d5601dede2df479679, 0xf7525102cbcbf698a3d11158073f9c, 0x002149 ] } , - BigNum { limbs: [ 0x07c23f803514299fe2121c20b86988, 0xb000d89ab17c3ca13436f849d0c5b7, 0x0052a3 ] } , - BigNum { limbs: [ 0x68b4524370c27f0fb67041c5129a32, 0xee2c40319d20456713bee1b503ea19, 0x0051f3 ] } , - BigNum { limbs: [ 0x54efb0bc8d997ff0498fbd3aed65cf, 0xb926e96be027edd2c44927ecd41b3a, 0x0021f9 ] } , - BigNum { limbs: [ 0xfa6503c4d05ba1ea36d1e453fdd087, 0xa362bd6b6a042cf83a952b74d32af6, 0x003b10 ] } , - BigNum { limbs: [ 0xc33eff3b2e005d15c92e1aac022f7a, 0x03f06c32134406419d72de2d04da5c, 0x0038dd ] } , - BigNum { limbs: [ 0x87bbd026fa86d5ef038837f0987616, 0xa4f668519c9b01f7d5c2d383ee5424, 0x001c8e ] } , - BigNum { limbs: [ 0x35e832d903d52910fc77c70f6789eb, 0x025cc14be0ad31420245361de9b12f, 0x00575f ] } , - BigNum { limbs: [ 0x05f87df80ac9fddd41e574458fd37c, 0x816f5ff8d2418cc7fecf9873ce9cbd, 0x001b37 ] } , - BigNum { limbs: [ 0xb7ab8507f3920122be1a8aba702c85, 0x25e3c9a4ab06a671d938712e096896, 0x0058b6 ] } , - BigNum { limbs: [ 0x53e58810b1cee006b3eb0cdec6a8c2, 0x381661c95526543f42237adbe725d4, 0x0025db ] } , - BigNum { limbs: [ 0x69be7aef4c8d1ef94c14f22139573f, 0x6f3cc7d42821defa95e48ec5f0df7f, 0x004e12 ] } , - BigNum { limbs: [ 0x49692c1d29ea093ad9908c78bbc1ba, 0x47e252806a5387191b04b833d6601d, 0x004911 ] } , - BigNum { limbs: [ 0x743ad6e2d471f5c5266f7287443e47, 0x5f70d71d12f4ac20bd03516e01a536, 0x002adc ] } , - BigNum { limbs: [ 0x917e3da2b9bb315d38cedd8d0fdb2c, 0x21e71d042942367c1710447002b2b9, 0x0026d7 ] } , - BigNum { limbs: [ 0x2c25c55d44a0cda2c7312172f024d5, 0x856c0c995405fcbdc0f7c531d5529a, 0x004d16 ] } , - BigNum { limbs: [ 0x9b656972e6cc487fbbf17bc15c64ac, 0x649c9174faecd5912df70ec1b97947, 0x005bd1 ] } , - BigNum { limbs: [ 0x223e998d178fb680440e833ea39b55, 0x42b69828825b5da8aa10fae01e8c0c, 0x00181c ] } , - BigNum { limbs: [ 0xad0b658b878cd33e40d756ff854ab9, 0xbbd5cab87cf836cd562985291f2333, 0x005353 ] } , - BigNum { limbs: [ 0x10989d7476cf2bc1bf28a8007ab548, 0xeb7d5ee5004ffc6c81de8478b8e220, 0x002099 ] } , - BigNum { limbs: [ 0x26cc6375bfcdf36c4d75133cfc0f8d, 0xde42ff094ff6c332b08fb7b9293b69, 0x004f11 ] } , - BigNum { limbs: [ 0x96d79f8a3e8e0b93b28aebc303f074, 0xc9102a942d517007277851e8aec9ea, 0x0024db ] } , - BigNum { limbs: [ 0x767fed4f084e0f5570c083ce5628ee, 0x4ba0c5dc95e95840ede1d53ed438c2, 0x00337f ] } , - BigNum { limbs: [ 0x472415b0f60defaa8f3f7b31a9d713, 0x5bb263c0e75edaf8ea26346303cc91, 0x00406e ] } , - BigNum { limbs: [ 0x9ae2975cf67ec45f2f249eac565c21, 0xc69b6a0ef1385b7d1adc6c9e1f5278, 0x0073aa ] } , - BigNum { limbs: [ 0x22c16ba307dd3aa0d0db6053a9a3e0, 0xe0b7bf8e8c0fd7bcbd2b9d03b8b2db, 0x000042 ] } , - BigNum { limbs: [ 0xe4aa0df97601afe87b01434fc4bad2, 0xd6874a3acdd969b93a9f9581e6db22, 0x0066b6 ] } , - BigNum { limbs: [ 0xd8f9f506885a4f1784febbb03b452f, 0xd0cbdf62af6ec9809d68741ff12a30, 0x000d36 ] } , - BigNum { limbs: [ 0x58269e818e3fc33ed6b1470d0d0994, 0x9febd6e43d38d853c0570cdbfc0b89, 0x004b66 ] } , - BigNum { limbs: [ 0x657d647e701c3bc1294eb7f2f2f66d, 0x076752b9400f5ae617b0fcc5dbf9ca, 0x002887 ] } , - BigNum { limbs: [ 0xc9c7c25300308ca93031353fe3c003, 0xcca26b4c54709d683b0430a4a5c85b, 0x000afc ] } , - BigNum { limbs: [ 0xf3dc40acfe2b7256cfcec9c01c3ffe, 0xdab0be5128d795d19d03d8fd323cf7, 0x0068f0 ] } , - BigNum { limbs: [ 0x83dcbb8737c64f21f698c3549e1769, 0xc7db395ba0b0fd78657de7686e3365, 0x006024 ] } , - BigNum { limbs: [ 0x39c74778c695afde09673bab61e898, 0xdf77f041dc9735c1728a223969d1ee, 0x0013c8 ] } , - BigNum { limbs: [ 0xa6da970c07d2f4672fbfd4c682cf8d, 0x054f510f1adf0d3a5af0340cd39621, 0x001c0e ] } , - BigNum { limbs: [ 0x16c96bf3f6890a98d0402a397d3074, 0xa203d88e626925ff7d17d595046f32, 0x0057df ] } , - BigNum { limbs: [ 0xeb1d39384b680169843829431e57fd, 0xc9fcdddf203264a8313119df103abc, 0x000379 ] } , - BigNum { limbs: [ 0xd286c9c7b2f3fd967bc7d5bce1a804, 0xdd564bbe5d15ce91a6d6efc2c7ca96, 0x007073 ] } , - BigNum { limbs: [ 0xd863493a775f14a7aaf7b62fda6cba, 0xece0e9a4b842539c3d85087d66ffb0, 0x006f80 ] } , - BigNum { limbs: [ 0xe540b9c586fcea58550848d0259347, 0xba723ff8c505df9d9a8301247105a2, 0x00046c ] } , - BigNum { limbs: [ 0x25f767bd489fccc3c1676c47894ba0, 0xd13e09d7af1a26b78eaf3df8bc95bc, 0x0062c4 ] } , - BigNum { limbs: [ 0x97ac9b42b5bc323c3e9892b876b461, 0xd6151fc5ce2e0c824958cba91b6f97, 0x001128 ] } , - BigNum { limbs: [ 0xda9d4dc7871d4a47af2d5b15406a72, 0x33fe081daf40e72e21fce524caa0b9, 0x004011 ] } , - BigNum { limbs: [ 0xe306b538773eb4b850d2a3eabf958f, 0x7355217fce074c0bb60b247d0d6499, 0x0033dc ] } , - BigNum { limbs: [ 0xe89be72af25d72b654f9c26799dcc7, 0x1a1266ade51931c4dadec9aeb860cb, 0x001f7e ] } , - BigNum { limbs: [ 0xd5081bd50bfe8c49ab063c9866233a, 0x8d40c2ef982f0174fd293ff31fa487, 0x00546f ] } , - BigNum { limbs: [ 0xe8c6934d213fe213b5cd83a2997e0e, 0x0fc72fbf98558aa91c8fa2a68184ad, 0x0031d3 ] } , - BigNum { limbs: [ 0xd4dd6fb2dd1c1cec4a327b5d6681f3, 0x978bf9dde4f2a890bb7866fb5680a5, 0x00421a ] } , - BigNum { limbs: [ 0x76bd1d8b43599a9af9ec6b82136fc7, 0xe2555448411c9fdd3bcb27daee1540, 0x006f03 ] } , - BigNum { limbs: [ 0x46e6e574bb0264650613937dec903a, 0xc4fdd5553c2b935c9c3ce1c6e9f013, 0x0004e9 ] } , - BigNum { limbs: [ 0x27279edc58fd1ce3909bdfa35ee205, 0x7df04eb2ae3e8875f56db1fbe72c64, 0x0072fc ] } , - BigNum { limbs: [ 0x967c6423a55ee21c6f641f5ca11dfc, 0x2962daeacf09aac3e29a57a5f0d8ef, 0x0000f1 ] } , - BigNum { limbs: [ 0x19167dd03b0082caa9050b145fc8ff, 0x29b3b56e181b7de6598d54383a7743, 0x0069c5 ] } , - BigNum { limbs: [ 0xa48d852fc35b7c3556faf3eba03702, 0x7d9f742f652cb5537e7ab5699d8e10, 0x000a28 ] } , - BigNum { limbs: [ 0x6ed594862ae70796b282ba55bd550f, 0x81d01c4a001d3738c02808219767c6, 0x001755 ] } , - BigNum { limbs: [ 0x4ece6e79d374f7694d7d44aa42aaf2, 0x25830d537d2afc0117e00180409d8d, 0x005c98 ] } , - BigNum { limbs: [ 0x0d80f013eb6d129170990306486340, 0xf2286dd35bc1d03f8875b901a1ea3f, 0x004758 ] } , - BigNum { limbs: [ 0xb02312ec12eeec6e8f66fbf9b79cc1, 0xb52abbca218662fa4f9250a0361b14, 0x002c94 ] } , - BigNum { limbs: [ 0xb6ee7abb0b512c4aff92c0ab6779fd, 0x9e6ca7456d51a8f9ddce3882b20010, 0x002222 ] } , - BigNum { limbs: [ 0x06b58844f30ad2b5006d3e54988604, 0x08e682580ff68a3ffa39d11f260543, 0x0051cb ] } , - BigNum { limbs: [ 0xb5bb56ff3185f6a6958a4de8220461, 0x8adb129134d545dcaef866cec41447, 0x00524d ] } , - BigNum { limbs: [ 0x07e8ac00ccd608596a75b117ddfba0, 0x1c78170c4872ed5d290fa2d313f10c, 0x0021a0 ] } , - BigNum { limbs: [ 0x8d0b8f5ef4f45aa414b4187bf0cefd, 0xc86e1684b663c2b3fd7da0d1731abe, 0x001859 ] } , - BigNum { limbs: [ 0x309873a10967a45beb4be6840f3104, 0xdee51318c6e47085da8a68d064ea95, 0x005b93 ] } , - BigNum { limbs: [ 0x51d705b1446605453da88542fd72f9, 0x5b3a9e5d2c3aede5eb002c2b60b93f, 0x00539f ] } , - BigNum { limbs: [ 0x6bccfd4eb9f5f9bac25779bd028d08, 0x4c188b40510d4553ed07dd76774c14, 0x00204e ] } , - BigNum { limbs: [ 0x20c5e1ac91e7043eb55cb297533407, 0xfaa743efbaf221d99fc92763044ae6, 0x005c43 ] } , - BigNum { limbs: [ 0x9cde21536c74fac14aa34c68accbfa, 0xacabe5adc2561160383ee23ed3ba6d, 0x0017a9 ] } , - BigNum { limbs: [ 0xaf9e2530eab9cf4264d6404a2733ac, 0x27f12d3a9a9ee77632a0defe39c33e, 0x006795 ] } , - BigNum { limbs: [ 0x0e05ddcf13a22fbd9b29beb5d8cc55, 0x7f61fc62e2a94bc3a5672aa39e4215, 0x000c58 ] } , - BigNum { limbs: [ 0x8648e1bd9e0ece0b288ed46081a8e5, 0xdc9e2560b853a8674746f1368083cd, 0x0018b0 ] } , - BigNum { limbs: [ 0x375b2142604d30f4d7712a9f7e571c, 0xcab5043cc4f48ad290c1186b578186, 0x005b3c ] } , - BigNum { limbs: [ 0xb072e3c322e74eb23d90e7a150a81f, 0x0e2241ddb7f31f96bcabcb3f5b3eff, 0x0073e0 ] } , - BigNum { limbs: [ 0x0d311f3cdb74b04dc26f175eaf57e2, 0x9930e7bfc55513a31b5c3e627cc654, 0x00000d ] } , - BigNum { limbs: [ 0xb307c4acc098af9cb7d0a095380a13, 0x3f93d39b0e35ce4610ed89ddafa938, 0x0054f5 ] } , - BigNum { limbs: [ 0x0a9c3e533dc34f63482f5e6ac7f5ee, 0x67bf56026f1264f3c71a7fc4285c1b, 0x001ef8 ] } , - BigNum { limbs: [ 0xc96dc7bd14fd4cc6265320eb04df1f, 0x03162d547d0b04b715cf2986e1bd7c, 0x003eef ] } , - BigNum { limbs: [ 0xf4363b42e95eb239d9acde14fb20e2, 0xa43cfc49003d2e82c238e01af647d6, 0x0034fe ] } , - BigNum { limbs: [ 0x6a261391ef2b05dcba1da9c0ea4d84, 0x6db34aa2ef6bab4614b52835830458, 0x001907 ] } , - BigNum { limbs: [ 0x537def6e0f30f92345e2553f15b27d, 0x399fdefa8ddc87f3c352e16c5500fb, 0x005ae6 ] } , - BigNum { limbs: [ 0x8e53b94e2d7a777de0dbdf025ab85c, 0x181891141667e186be8536666f274c, 0x00679f ] } , - BigNum { limbs: [ 0x2f5049b1d0e187821f241ffda547a5, 0x8f3a988966e051b31982d33b68de07, 0x000c4e ] } , - BigNum { limbs: [ 0xae7460b333dded75dc07e6b09841ae, 0x73938b410ebea7cc7d4d32121c4242, 0x001959 ] } , - BigNum { limbs: [ 0x0f2fa24cca7e118a23f8184f67be53, 0x33bf9e5c6e898b6d5abad78fbbc311, 0x005a94 ] } , - BigNum { limbs: [ 0x64ec99029da116a22f45c8ff3de158, 0xdbac28c819ba8cacb9af89cb58ec17, 0x002fc2 ] } , - BigNum { limbs: [ 0x58b769fd60bae85dd0ba3600c21ea9, 0xcba700d5638da68d1e587fd67f193c, 0x00442a ] } , - BigNum { limbs: [ 0x73ff57fd162c88611aff08b8082bc6, 0xf00eba8d17bc2c4bf77e923ee5026a, 0x00372b ] } , - BigNum { limbs: [ 0x49a4ab02e82f769ee500f647f7d43b, 0xb7446f10658c06ede0897762f302e9, 0x003cc1 ] } , - BigNum { limbs: [ 0x6c8c0251e16956675a23bf595affed, 0x3edbaffb7067814b2a4f9ae135c4b2, 0x006450 ] } , - BigNum { limbs: [ 0x511800ae1cf2a898a5dc3fa6a50014, 0x687779a20ce0b1eeadb86ec0a240a1, 0x000f9d ] } , - BigNum { limbs: [ 0x1b05e2e48b2c9152b3b5b80abf68c0, 0xf3bed6f2430129e041031e004e4e4d, 0x005bf9 ] } , - BigNum { limbs: [ 0xa29e201b732f6dad4c4a46f5409741, 0xb39452ab3a4709599704eba189b706, 0x0017f3 ] } , - BigNum { limbs: [ 0x3113167ed5e21da7624e7e7d9cdb91, 0x99ee54290f334230f56b2d54e5aaa3, 0x006816 ] } , - BigNum { limbs: [ 0x8c90ec812879e1589db18082632470, 0x0d64d5746e14f108e29cdc4cf25ab0, 0x000bd7 ] } , - BigNum { limbs: [ 0xd5832d79ecd0b4adec57b39d5976fd, 0x54978826cc78e85cbd472ff7cb3b7a, 0x002d0a ] } , - BigNum { limbs: [ 0xe820d586118b4a5213a84b62a68904, 0x52bba176b0cf4add1ac0d9aa0cc9d8, 0x0046e3 ] } , - BigNum { limbs: [ 0x954a71cbe1cb702768549ef50d9562, 0x6029a0323eb4708b2ba556f0c0a801, 0x000caa ] } , - BigNum { limbs: [ 0x285991341c908ed897ab600af26a9f, 0x4729896b3e93c2aeac62b2b1175d52, 0x006743 ] } , - BigNum { limbs: [ 0xcf3f09884d9f7cec479b5abada171d, 0x4fe37b3abad3b49c7e5f0832dcc06a, 0x0058a0 ] } , - BigNum { limbs: [ 0xee64f977b0bc8213b864a44525e8e4, 0x576fae62c2747e9d59a9016efb44e8, 0x001b4d ] } , - BigNum { limbs: [ 0x0250f48d469c3b7aa035dd3fba17b8, 0x82b51da12ff666d4ff4fe4de8341dc, 0x00501a ] } , - BigNum { limbs: [ 0xbb530e72b7bfc3855fca21c045e849, 0x249e0bfc4d51cc64d8b824c354c377, 0x0023d3 ] } , - BigNum { limbs: [ 0x3b1f635d5fc7cc8a01bada5c2066ed, 0x5fcb606dc747f4725150e337e2a86e, 0x006fae ] } , - BigNum { limbs: [ 0x82849fa29e943275fe4524a3df9914, 0x4787c92fb6003ec786b72669f55ce5, 0x00043f ] } , - BigNum { limbs: [ 0x52347c40e9ad023dcc7526c32059aa, 0xf213d0cefbb428b4392029b4096c62, 0x00174f ] } , - BigNum { limbs: [ 0x6b6f86bf14aefcc2338ad83cdfa657, 0xb53f58ce81940a859ee7dfedce98f1, 0x005c9d ] } , - BigNum { limbs: [ 0xe0af91d785eedd767ce31ad39ec74e, 0x5dc4713f0d24d25e7f23bfb2ad7c28, 0x006ff7 ] } , - BigNum { limbs: [ 0xdcf47128786d2189831ce42c6138b3, 0x498eb85e702360db58e449ef2a892a, 0x0003f6 ] } , - BigNum { limbs: [ 0xc509359dec7597fa4a62b198187d9a, 0x55adc7a91433e2710626e8e387ea5b, 0x00360f ] } , - BigNum { limbs: [ 0xf89acd6211e66705b59d4d67e78267, 0x51a561f4691450c8d1e120be501af7, 0x003dde ] } , - BigNum { limbs: [ 0x6141d7458572909d52919d7329c038, 0xc14e478b55b07e3d7cd77d927340a2, 0x0004d1 ] } , - BigNum { limbs: [ 0x5c622bba78e96e62ad6e618cd63fc9, 0xe604e2122797b4fc5b308c0f64c4b1, 0x006f1b ] } , - BigNum { limbs: [ 0x3f0ba16d9f1f798d749c6f55b6f3ba, 0x17cd54e1e0b2ca3cc0bb4809745d14, 0x005e5d ] } , - BigNum { limbs: [ 0x7e9861925f3c85728b638faa490c47, 0x8f85d4bb9c9568fd174cc19863a83f, 0x001590 ] } , - BigNum { limbs: [ 0x60e24fd4d442ae546c0da3d6f92de7, 0x3db28c42d6efb645e1a4810837fbd5, 0x000ccf ] } , - BigNum { limbs: [ 0x5cc1b32b2a1950ab93f25b2906d21a, 0x69a09d5aa6587cf3f6638899a0097e, 0x00671e ] } , - BigNum { limbs: [ 0xf4ae259cce48fc73025a78d6a157b6, 0x2a8493910d2041ee514c8d8fd2a6cf, 0x00364d ] } , - BigNum { limbs: [ 0xc8f5dd633013028cfda586295ea84b, 0x7cce960c7027f14b86bb7c12055e83, 0x003da0 ] } , - BigNum { limbs: [ 0x4bd3293e18494166467f37ad6acacb, 0x808eb6c3dadf3f67a56addd0a74c6c, 0x0022c7 ] } , - BigNum { limbs: [ 0x71d0d9c1e612bd99b980c752953536, 0x26c472d9a268f3d2329d2bd130b8e7, 0x005126 ] } , - BigNum { limbs: [ 0x4a46043dc9fa03bb8ef7568e987dfb, 0x4e1376cb98cec3b5a6dbbcd0298f91, 0x00666b ] } , - BigNum { limbs: [ 0x735dfec23461fb447108a871678206, 0x593fb2d1e4796f84312c4cd1ae75c2, 0x000d82 ] } , - BigNum { limbs: [ 0x9490f7e75dcd289448486b546b2984, 0xcd9aaa9e76bd9ca162e764f989b23e, 0x000666 ] } , - BigNum { limbs: [ 0x29130b18a08ed66bb7b793ab94d67d, 0xd9b87eff068a96987520a4a84e5315, 0x006d86 ] } , - BigNum { limbs: [ 0xcdcd52a8f26af52a75a50ad2fef008, 0xf6bad0a94058f46302ada65165e7d9, 0x0044c5 ] } , - BigNum { limbs: [ 0xefd6b0570bf109d58a5af42d010ff9, 0xb09858f43cef3ed6d55a6350721d79, 0x002f27 ] } , - BigNum { limbs: [ 0x2630a24cfce639d244d30cd8ea7bcd, 0x77725f8abc93e7c90da100aec7bcec, 0x0050d5 ] } , - BigNum { limbs: [ 0x977360b30175c52dbb2cf227158434, 0x2fe0ca12c0b44b70ca6708f3104867, 0x002318 ] } , - BigNum { limbs: [ 0x3a476657e66ec984ccab00b208b2e0, 0x021de21f69c33790707ffd6c682af6, 0x00069b ] } , - BigNum { limbs: [ 0x835c9ca817ed357b3354fe4df74d21, 0xa535477e1384fba967880c356fda5d, 0x006d52 ] } , - BigNum { limbs: [ 0x5aaef6e05e419040ed2e6880add73b, 0xda87a31501872a2b361d0b35042e63, 0x005225 ] } , - BigNum { limbs: [ 0x62f50c1fa01a6ebf12d1967f5228c6, 0xcccb86887bc1090ea1eafe6cd3d6f0, 0x0021c7 ] } , - BigNum { limbs: [ 0x4565eab0ef4b24b52b9cfaf405946b, 0x1d79893ac2b83c595e90e2afa653dd, 0x0028db ] } , - BigNum { limbs: [ 0x783e184f0f10da4ad463040bfa6b96, 0x89d9a062ba8ff6e0797726f231b176, 0x004b12 ] } , - BigNum { limbs: [ 0x3dd810d20c496d3587decdf7bdaa27, 0xf2bbd8bfc515df8f48abf33cd40538, 0x005288 ] } , - BigNum { limbs: [ 0x7fcbf22df21291ca782131084255da, 0xb49750ddb83253aa8f5c166504001b, 0x002164 ] } , - BigNum { limbs: [ 0xcefb8080afbd38fd46d94c88ac4eda, 0xab95aa7cb97959d2edb08e5b49e499, 0x0024de ] } , - BigNum { limbs: [ 0xeea8827f4e9ec602b926b27753b127, 0xfbbd7f20c3ced966ea577b468e20b9, 0x004f0e ] } , - BigNum { limbs: [ 0x147027983c0f8e8e92f6b7a949929e, 0x8cad13ea364f478c702a489564da6b, 0x006f1b ] } , - BigNum { limbs: [ 0xa933db67c24c70716d094756b66d63, 0x1aa615b346f8ebad67ddc10c732ae8, 0x0004d2 ] } , - BigNum { limbs: [ 0xc610f12b9e1d4099f34ca4605bd68f, 0xcbed867978e43f186ccae13678a464, 0x006871 ] } , - BigNum { limbs: [ 0xf79311d4603ebe660cb35a9fa42972, 0xdb65a3240463f4216b3d286b5f60ee, 0x000b7b ] } , - BigNum { limbs: [ 0x0ddd0120cf62cffd5caa9f3a11da0a, 0x603682fe9fd4a90e241ecc89caa243, 0x002c9c ] } , - BigNum { limbs: [ 0xafc701df2ef92f02a3555fc5ee25f7, 0x471ca69edd738a2bb3e93d180d6310, 0x004751 ] } , - BigNum { limbs: [ 0x39f2f88e75b4a31b2f74c46426a23f, 0xe66af1d7932ad362456d75681d0549, 0x00612b ] } , - BigNum { limbs: [ 0x83b10a7188a75be4d08b3a9bd95dc2, 0xc0e837c5ea1d5fd7929a9439bb000a, 0x0012c1 ] } , - BigNum { limbs: [ 0x7ccd6a86be44a45afc5292bb43a009, 0xf56c69e40d222b3c9b710572b491af, 0x0019e9 ] } , - BigNum { limbs: [ 0x40d6987940175aa503ad6c44bc5ff8, 0xb1e6bfb9702607fd3c97042f2373a4, 0x005a03 ] } , - BigNum { limbs: [ 0x214e0c0015ea14a22443b06499ea49, 0xa33d50975d0a9f6e1923a2a4b4dcbc, 0x007391 ] } , - BigNum { limbs: [ 0x9c55f6ffe871ea5ddbbc4e9b6615b8, 0x0415d906203d93cbbee466fd232897, 0x00005c ] } , - BigNum { limbs: [ 0xeaa2e037baf3baf72dcbd4ee24d39a, 0xc546aa30e6bbe2e10ddec548608fb9, 0x0047d8 ] } , - BigNum { limbs: [ 0xd30122c843684408d2342a11db2c67, 0xe20c7f6c968c5058ca294459777599, 0x002c14 ] } , - BigNum { limbs: [ 0xee0baf3ab52c8e241d4950959a1c81, 0x5c07c691a601433a25b11b79630111, 0x006759 ] } , - BigNum { limbs: [ 0xcf9853c5492f70dbe2b6ae6a65e380, 0x4b4b630bd746efffb256ee28750441, 0x000c94 ] } , - BigNum { limbs: [ 0x1b63605f954ac2ea65f987bc35193c, 0xbbd397fcaca0416914466c9808724d, 0x001b92 ] } , - BigNum { limbs: [ 0xa240a2a069113c159a067743cae6c5, 0xeb7f91a0d0a7f1d0c3c19d09cf9306, 0x00585a ] } , - BigNum { limbs: [ 0xfaa20e0cddd4ba8766a6b4eea4bd15, 0x021925886da6a106358b0ea4c998aa, 0x0045a1 ] } , - BigNum { limbs: [ 0xc301f4f32087447899594a115b42ec, 0xa53a04150fa19233a27cfafd0e6ca8, 0x002e4c ] } , - BigNum { limbs: [ 0x0c741345a901b26974f21222a37402, 0xe98ca62b53227f386fec48ffba5725, 0x00579c ] } , - BigNum { limbs: [ 0xb12fefba555a4c968b0decdd5c8bff, 0xbdc683722a25b401681bc0a21dae2e, 0x001c50 ] } , - BigNum { limbs: [ 0xcdf2a4df205c566d342b664751b8b9, 0x7aac979f99d2f628a70262abb5b8a7, 0x003c45 ] } , - BigNum { limbs: [ 0xefb15e20ddffa892cbd498b8ae4748, 0x2ca691fde3753d113105a6f6224cab, 0x0037a8 ] } , - BigNum { limbs: [ 0xdf3781210e04f7222b74ab3f9cd482, 0xefc0f255ee76feb34b02af2903342b, 0x000f6a ] } , - BigNum { limbs: [ 0xde6c81def05707ddd48b53c0632b7f, 0xb79237478ed134868d055a78d4d127, 0x006482 ] } , - BigNum { limbs: [ 0x2d459a176b849968acb5abcae514e0, 0xe49b48fef478de731b11f75f47a2d2, 0x0057d1 ] } , - BigNum { limbs: [ 0x905e68e892d76597534a53351aeb21, 0xc2b7e09e88cf54c6bcf61242906281, 0x001c1b ] } , - BigNum { limbs: [ 0x8d4a502532c28e6e1fa05bb77f119a, 0xefb5e006cff6c98b53c795188a5a0b, 0x005078 ] } , - BigNum { limbs: [ 0x3059b2dacb997091e05fa34880ee67, 0xb79d4996ad5169ae844074894dab48, 0x002374 ] } , - BigNum { limbs: [ 0x3bfddab2017f2386535fda205c415b, 0x5a5aef0bbd1f7eee7fbc801335bcd5, 0x00413e ] } , - BigNum { limbs: [ 0x81a6284dfcdcdb79aca024dfa3bea6, 0x4cf83a91c028b44b584b898ea2487e, 0x0032af ] } , - BigNum { limbs: [ 0xdb4e2aef22df835a8bd76b81c8f97a, 0x78d408ec44ceebf8005827d0646a5e, 0x0026f6 ] } , - BigNum { limbs: [ 0xe255d810db7c7ba57428937e370687, 0x2e7f20b138794741d7afe1d1739af4, 0x004cf7 ] } , - BigNum { limbs: [ 0x936d72b19928b1afb86759927b47e6, 0x58eed6c70605ed202ef373dc7dccd9, 0x005a8a ] } , - BigNum { limbs: [ 0x2a36904e65334d504798a56d84b81b, 0x4e6452d677424619a91495c55a387a, 0x001963 ] } , - BigNum { limbs: [ 0x347d893a3ed84b41240552aa7372e9, 0xbda6e04b700a69a05c17cf5cbd9f23, 0x003c98 ] } , - BigNum { limbs: [ 0x892679c5bf83b3bedbfaac558c8d18, 0xe9ac49520d3dc9997bf03a451a6630, 0x003754 ] } , - BigNum { limbs: [ 0xcb4f0c95186dabe3ebd6d30fdaa02c, 0x885359d63febad14b5a4357eafab79, 0x00217f ] } , - BigNum { limbs: [ 0xf254f66ae5ee531c14292bf0255fd5, 0x1effcfc73d5c86252263d4232859d9, 0x00526e ] } , - BigNum { limbs: [ 0xdc256927d8f49d065a52ec3e0c7ac2, 0x7110edd98c4d50fabf7d6f4d5c8851, 0x000980 ] } , - BigNum { limbs: [ 0xe17e99d8256761f9a5ad12c1f3853f, 0x36423bc3f0fae23f188a9a547b7d01, 0x006a6d ] } , - BigNum { limbs: [ 0x8d3d79f6e39d2bde112abd7a8e53ce, 0x1479cf4e8c2ab65c067e38b58ae4b3, 0x0065b0 ] } , - BigNum { limbs: [ 0x306689091abed321eed5418571ac33, 0x92d95a4ef11d7cddd189d0ec4d20a0, 0x000e3d ] } , - BigNum { limbs: [ 0x8086ae070bc3d11bc024c840b8433e, 0xecef36ebf26bc40b39fcc48e6ab637, 0x0004f1 ] } , - BigNum { limbs: [ 0x3d1d54f8f2982de43fdb36bf47bcc3, 0xba63f2b18adc6f2e9e0b45136d4f1c, 0x006efb ] } , - BigNum { limbs: [ 0x2d74caec959b4df578c292627d3424, 0x2c5313faac4a00c8b1843ee3d0d104, 0x0022ff ] } , - BigNum { limbs: [ 0x902f381368c0b10a873d6c9d82cbdd, 0x7b0015a2d0fe32712683cabe07344f, 0x0050ee ] } , - BigNum { limbs: [ 0xcf42b161d631e688549e5f6c934620, 0xb48f1d3b4fec1e9238d1a4e8a71125, 0x00458a ] } , - BigNum { limbs: [ 0xee61519e282a1877ab619f936cb9e1, 0xf2c40c622d5c14a79f3664b930f42d, 0x002e62 ] } , - BigNum { limbs: [ 0xf8c738132c60091b074f4e6b57c34e, 0xfe66eaad172ed475976325a4a96406, 0x006eb3 ] } , - BigNum { limbs: [ 0xc4dccaecd1fbf5e4f8b0b094a83cb3, 0xa8ec3ef066195ec440a4e3fd2ea14c, 0x000539 ] } , - BigNum { limbs: [ 0xd37c4a9d7a65620d7dee1433f8ef02, 0x9cf12e56f6319dc1d778f39327e520, 0x005d45 ] } , - BigNum { limbs: [ 0xea27b86283f69cf28211eacc0710ff, 0x0a61fb4687169578008f160eb02032, 0x0016a8 ] } , - BigNum { limbs: [ 0x69b768b5d39b86cf7e7c09c345bf6a, 0x130e6f604f4e6321de3462e322a634, 0x002434 ] } , - BigNum { limbs: [ 0x53ec9a4a2ac078308183f53cba4097, 0x9444ba3d2df9d017f9d3a6beb55f1f, 0x004fb9 ] } , - BigNum { limbs: [ 0xeb960d6a0abcd4023d030dac526fc5, 0x7884b1d5501c2736269918a1a78ae4, 0x0066ba ] } , - BigNum { limbs: [ 0xd20df595f39f2afdc2fcf153ad903c, 0x2ece77c82d2c0c03b16ef100307a6e, 0x000d33 ] } , - BigNum { limbs: [ 0xb2dd5fcf5a47dd0ab1196d1f9bc88a, 0x57bc56f0e20f0f70fe1ee409d50d7c, 0x005259 ] } , - BigNum { limbs: [ 0x0ac6a330a41421f54ee691e0643777, 0x4f96d2ac9b3923c8d9e9259802f7d7, 0x002194 ] } , - BigNum { limbs: [ 0xaf66b07fd2b89b14d4dbb8e4c988de, 0x9998cb776df0869b997c65b4575e03, 0x000585 ] } , - BigNum { limbs: [ 0x0e3d52802ba363eb2b24461b367723, 0x0dba5e260f57ac9e3e8ba3ed80a750, 0x006e68 ] } , - BigNum { limbs: [ 0xf61d3f6170e53d97f8f008cf768a76, 0x5b602c58269c8ef028376b9685c9b8, 0x002c20 ] } , - BigNum { limbs: [ 0xc786c39e8d76c168070ff63089758b, 0x4bf2fd4556aba449afd09e0b523b9a, 0x0047cd ] } , - BigNum { limbs: [ 0x622ff754d375d84c5d77199341945f, 0x78893b8d266ef3ddf8f1f8e8f7d951, 0x00122f ] } , - BigNum { limbs: [ 0x5b740bab2ae626b3a288e56cbe6ba2, 0x2ec9ee1056d93f5bdf1610b8e02c02, 0x0061be ] } , - BigNum { limbs: [ 0x0aefb294a5d9e3687d2670f622df6c, 0x95d2457d5d6b293ef92ea67a692ab7, 0x005cd6 ] } , - BigNum { limbs: [ 0xb2b4506b58821b9782d98e09dd2095, 0x1180e4201fdd09faded963276eda9c, 0x001717 ] } , - BigNum { limbs: [ 0x63d364c9ba00d272890840b00420f5, 0x29c2ab9eba06a3fb843e6f883875ae, 0x001602 ] } , - BigNum { limbs: [ 0x59d09e36445b2c8d76f7be4ffbdf0c, 0x7d907dfec3418f3e53c99a199f8fa5, 0x005deb ] } , - BigNum { limbs: [ 0x62e5ef54d446d001dd7dd94f4c83f0, 0x2e6610db2be579e285d21c3be96a52, 0x001d6c ] } , - BigNum { limbs: [ 0x5abe13ab2a152efe228225b0b37c11, 0x78ed18c25162b9575235ed65ee9b01, 0x005681 ] } , - BigNum { limbs: [ 0xe4dc21d66c88a5c58b87357f57f234, 0xefb1629354e4d34f93e73013f72753, 0x006c6d ] } , - BigNum { limbs: [ 0xd8c7e12991d3593a7478c980a80dcd, 0xb7a1c70a28635fea4420d98de0ddff, 0x00077f ] } , - BigNum { limbs: [ 0xff24fa0bcfa8e4bfefc24704198a6b, 0x313aaab6b721937ae0819ff6472d7a, 0x00173a ] } , - BigNum { limbs: [ 0xbe7f08f42eb31a40103db7fbe67596, 0x76187ee6c6269fbef78669ab90d7d8, 0x005cb3 ] } , - BigNum { limbs: [ 0xab6f0ea079a6e4dba78a63795564bb, 0xea6ea42ae469d892949d7b60807964, 0x00590e ] } , - BigNum { limbs: [ 0x1234f45f84b51a2458759b86aa9b46, 0xbce4857298de5aa7436a8e41578bef, 0x001ade ] } , - BigNum { limbs: [ 0xd4d8d238af27685a21f57246d64bcc, 0x3610625447c700e379bdca7a6a2783, 0x004db0 ] } , - BigNum { limbs: [ 0xe8cb30c74f3496a5de0a8cb929b435, 0x7142c749358132565e4a3f276dddcf, 0x00263d ] } , - BigNum { limbs: [ 0xfd3bf0033dd6fe1e4c57f1c23661a7, 0xc9277b211191ac0755754412cef056, 0x006972 ] } , - BigNum { limbs: [ 0xc06812fcc08500e1b3a80d3dc99e5a, 0xde2bae7c6bb687328292c58f0914fc, 0x000a7a ] } , - BigNum { limbs: [ 0xf4f2863d6f00a5eb8cf558ae23eb3b, 0x9d2ac6d6cc9db539528902a8e6d4bf, 0x005623 ] } , - BigNum { limbs: [ 0xc8b17cc28f5b5914730aa651dc14c6, 0x0a2862c6b0aa7e00857f06f8f13093, 0x001dca ] } , - BigNum { limbs: [ 0xab7346f1c5dd69a742ad16020f0c07, 0x98cd60ef84bf73f1b64511c0021f98, 0x003c98 ] } , - BigNum { limbs: [ 0x1230bc0e387e9558bd52e8fdf0f3fa, 0x0e85c8adf888bf4821c2f7e1d5e5bb, 0x003755 ] } , - BigNum { limbs: [ 0xdb5ac19e95471752eef10592d37478, 0x78280afce1c17f500934d635381119, 0x005831 ] } , - BigNum { limbs: [ 0xe24941616914e7ad110ef96d2c8b89, 0x2f2b1ea09b86b3e9ced3336c9ff439, 0x001bbc ] } , - BigNum { limbs: [ 0x087316430ad9438cf77e056331d4fc, 0x0f9abac161455397d635854b193f18, 0x007363 ] } , - BigNum { limbs: [ 0xb530ecbcf382bb730881f99cce2b05, 0x97b86edc1c02dfa201d28456bec63b, 0x00008a ] } , - BigNum { limbs: [ 0x167cabcf48aae9ea0b1c34224fbd61, 0xb6b181ffb7e11ae9d1320a2c5beb55, 0x001d24 ] } , - BigNum { limbs: [ 0xa7275730b5b11515f4e3caddb042a0, 0xf0a1a79dc567185006d5ff757c19fe, 0x0056c8 ] } , - BigNum { limbs: [ 0x5bed60b7df5038076491b23c075728, 0xdb8369f69b7d6e35580692da3e8018, 0x0023a4 ] } , - BigNum { limbs: [ 0x61b6a2481f0bc6f89b6e4cc3f8a8d9, 0xcbcfbfa6e1cac504800176c799853b, 0x005048 ] } , - BigNum { limbs: [ 0x57c68d7415396c2de50d5f536e30db, 0xb1543cca2a1fb1eec4853a3a35d891, 0x0023ad ] } , - BigNum { limbs: [ 0x65dd758be92292d21af29fac91cf26, 0xf5feecd35328814b1382cf67a22cc2, 0x00503f ] } , - BigNum { limbs: [ 0x9e4983675d87e1d04fe1856b5161fa, 0x80f0b3ede8ab143ae61d73677668e6, 0x0002a8 ] } , - BigNum { limbs: [ 0x1f5a7f98a0d41d2fb01e7994ae9e07, 0x266275af949d1efef1ea963a619c6d, 0x007145 ] } , - BigNum { limbs: [ 0x302bd0f30daa22f40997d4e0cdb369, 0xcdf6ec9a06b06690843e61cac4ade1, 0x0025e8 ] } , - BigNum { limbs: [ 0x8d78320cf0b1dc0bf6682a1f324c98, 0xd95c3d037697cca953c9a7d7135772, 0x004e04 ] } , - BigNum { limbs: [ 0x126166bddccd1462e572f220fa4c0c, 0xed111ae29c7e0eb4cf7a3c92ea0844, 0x002e7b ] } , - BigNum { limbs: [ 0xab429c42218eea9d1a8d0cdf05b3f5, 0xba420ebae0ca2485088dcd0eedfd0f, 0x004571 ] } , - BigNum { limbs: [ 0x339c0906b87b56568f4b0b097df9fb, 0xdfc74d69529870a13c9e329eb8dd18, 0x003e79 ] } , - BigNum { limbs: [ 0x8a07f9f945e0a8a970b4f3f6820606, 0xc78bdc342aafc2989b69d7031f283b, 0x003573 ] } , - BigNum { limbs: [ 0xa5c4ac27eb44e2aae5c2b5313d9002, 0xd2e5157046db1ad6ff97430335c818, 0x003f0d ] } , - BigNum { limbs: [ 0x17df56d813171c551a3d49cec26fff, 0xd46e142d366d1862d870c69ea23d3b, 0x0034df ] } , - BigNum { limbs: [ 0x4c7bf3f8b147be2cbed7f0bf090098, 0x5e1556dbfbb27f64e8055e8cdb1d7c, 0x003d96 ] } , - BigNum { limbs: [ 0x71280f074d1440d341280e40f6ff69, 0x493dd2c18195b3d4f002ab14fce7d7, 0x003657 ] } , - BigNum { limbs: [ 0x404608c5b6bf709eecc8e7ede857ab, 0x1ce95d845fd76979d9369a57471b9a, 0x004ff7 ] } , - BigNum { limbs: [ 0x7d5dfa3a479c8e611337171217a856, 0x8a69cc191d70c9bffed16f4a90e9b9, 0x0023f6 ] } , - BigNum { limbs: [ 0x9b0c2b81d681413f774225fa5aa0e0, 0xc198b4f1edccb9f6c4aa4c9d097385, 0x006526 ] } , - BigNum { limbs: [ 0x2297d77e27dabdc088bdd905a55f21, 0xe5ba74ab8f7b7943135dbd04ce91ce, 0x000ec6 ] } , - BigNum { limbs: [ 0xa6230c9f9b8b900243a36f7f89fae5, 0xa8409974793c2046ca955ddeaaf043, 0x0051d8 ] } , - BigNum { limbs: [ 0x1780f66062d06efdbc5c8f8076051c, 0xff129029040c12f30d72abc32d1510, 0x002214 ] } , - BigNum { limbs: [ 0xbe2f06e8c58c2a19bf210063c2e679, 0x47b8fcec34f0ce000121051220f6e1, 0x004808 ] } , - BigNum { limbs: [ 0xff74fc1738cfd4e640defe9c3d1988, 0x5f9a2cb148576539d6e7048fb70e71, 0x002be5 ] } , - BigNum { limbs: [ 0xbec3196e627413dbd79f51edccc9e4, 0x55dcd186a03fc273e1ba09ad8bf571, 0x00219c ] } , - BigNum { limbs: [ 0xfee0e9919be7eb242860ad1233361d, 0x51765816dd0870c5f64dfff44c0fe1, 0x005251 ] } , - BigNum { limbs: [ 0xa062883d272c787e214c505cc37bb8, 0xb19461ae3758739bee8ef3518d5981, 0x004beb ] } , - BigNum { limbs: [ 0x1d417ac2d72f8681deb3aea33c8449, 0xf5bec7ef45efbf9de97916504aabd2, 0x002801 ] } , - BigNum { limbs: [ 0xbdca35bc89cf2e818683ca0e981e53, 0xabcc07dbc25a9d40c19692ced6937a, 0x00411c ] } , - BigNum { limbs: [ 0xffd9cd43748cd07e797c34f167e1ae, 0xfb8721c1baed95f9167176d30171d8, 0x0032d0 ] } , - BigNum { limbs: [ 0x76b4372a3289a33215dfcaf179a125, 0x4a5b3f291c611783ec1b207387edc9, 0x003832 ] } , - BigNum { limbs: [ 0x46efcbd5cbd25bcdea20340e865edc, 0x5cf7ea7460e71bb5ebece92e50178a, 0x003bbb ] } , - BigNum { limbs: [ 0xa2d66a05b0421da524c859157d01be, 0x43031dbf32617e16d937f8e8873c46, 0x003a36 ] } , - BigNum { limbs: [ 0x1acd98fa4e19e15adb37a5ea82fe43, 0x64500bde4ae6b522fed010b950c90d, 0x0039b7 ] } , - BigNum { limbs: [ 0xc428110192350213760ef8046fdba5, 0xdad815b390567ce98b35604515d398, 0x000370 ] } , - BigNum { limbs: [ 0xf97bf1fe6c26fcec89f106fb90245c, 0xcc7b13e9ecf1b6504cd2a95cc231ba, 0x00707c ] } , - BigNum { limbs: [ 0x09a3d15c678111e2a72c91d778db77, 0xb77eaaecc8b737ee782500a1480a23, 0x004e16 ] } , - BigNum { limbs: [ 0xb40031a396daed1d58d36d2887248a, 0xefd47eb0b490fb4b5fe309008ffb30, 0x0025d6 ] } , - BigNum { limbs: [ 0x050de9d5c78215b0b1b60a24681e28, 0x7754d7ae1281cf955a039d047aeee7, 0x00341d ] } , - BigNum { limbs: [ 0xb896192a36d9e94f4e49f4db97e1d9, 0x2ffe51ef6ac663a47e046c9d5d166c, 0x003fd0 ] } , - BigNum { limbs: [ 0x812a31c427febd6c35d2e338026d9e, 0x40a4e5d8b982cb0880ad6c1e36a6a1, 0x003aba ] } , - BigNum { limbs: [ 0x3c79d13bd65d4193ca2d1bc7fd9263, 0x66ae43c4c3c56831575a9d83a15eb2, 0x003933 ] } , - BigNum { limbs: [ 0x386f8d921bce1f63f68d7c07ae7401, 0x78cd5c4a2cc22b1f82c24c49a6a38b, 0x001429 ] } , - BigNum { limbs: [ 0x8534756de28ddf9c097282f8518c00, 0x2e85cd535086081a5545bd583161c8, 0x005fc4 ] } , - BigNum { limbs: [ 0x42ced375a1f9831695feeee6ebbb23, 0xd17c31c23df923d33c5281359d1088, 0x006c99 ] } , - BigNum { limbs: [ 0x7ad52f8a5c627be96a0110191444de, 0xd5d6f7db3f4f0f669bb5886c3af4cb, 0x000753 ] } , - BigNum { limbs: [ 0xc0e4c27b09624c3cf4c3c8b82268de, 0x24ae8c3220d3bb0dbb32d6f021f23f, 0x00487a ] } , - BigNum { limbs: [ 0xfcbf4084f4f9b2c30b3c3647dd9723, 0x82a49d6b5c74782c1cd532b1b61313, 0x002b73 ] } , - BigNum { limbs: [ 0x6c3c4c1e3774f5b1c6930c377f7040, 0x7c135543154ef67cf84ec44d0f01fd, 0x0033b1 ] } , - BigNum { limbs: [ 0x5167b6e1c6e7094e396cf2c8808fc1, 0x2b3fd45a67f93cbcdfb94554c90356, 0x00403c ] } , - BigNum { limbs: [ 0x12ca311f7fd12d398fb5e547b671b5, 0x0cc4ba4853e11ccbbaa4383233ec38, 0x0046f1 ] } , - BigNum { limbs: [ 0xaad9d1e07e8ad1c6704a19b8498e4c, 0x9a8e6f552967166e1d63d16fa4191b, 0x002cfc ] } , - BigNum { limbs: [ 0x16b36d3c1ac814874529ef17d6a510, 0x55fc1bc3b5fe65b56a1a1234552ec5, 0x005afc ] } , - BigNum { limbs: [ 0xa6f095c3e393ea78bad60fe8295af1, 0x51570dd9c749cd846dedf76d82d68e, 0x0018f1 ] } , - BigNum { limbs: [ 0xe92a68efce58edae9be2c9a128b7a8, 0xff24306585a01aeba02b847008d252, 0x0017b9 ] } , - BigNum { limbs: [ 0xd4799a1030031151641d355ed74859, 0xa82ef937f7a8184e37dc8531cf3300, 0x005c33 ] } , - BigNum { limbs: [ 0x2c20261d6f63fdb01729273b501f58, 0xd773fa1a1bff31abec1184bb529d60, 0x00487c ] } , - BigNum { limbs: [ 0x9183dce28ef8014fe8d6d7c4afe0a9, 0xcfdf2f836149018debf684e68567f3, 0x002b70 ] } , - BigNum { limbs: [ 0x4511e37ec0a0e6c38e58bed13d112c, 0x5c7d802ce23ea4f3a7a686812ee345, 0x003eee ] } , - BigNum { limbs: [ 0x78921f813dbb183c71a7402ec2eed5, 0x4ad5a9709b098e4630618320a9220e, 0x0034ff ] } , - BigNum { limbs: [ 0x0c9fa08508aad414ea074c1f23ba30, 0xf799394ba267d5c451b52ac38a7015, 0x001c87 ] } , - BigNum { limbs: [ 0xb104627af5b12aeb15f8b2e0dc45d1, 0xafb9f051dae05d758652dede4d953e, 0x005765 ] } , - BigNum { limbs: [ 0xb637bb3a3b9a8596dac2ba21e1b301, 0x8e70d46598eddeff558cd1ceec3f42, 0x006a7d ] } , - BigNum { limbs: [ 0x076c47c5c2c17969253d44de1e4d00, 0x18e25537e45a543a827b37d2ebc611, 0x000970 ] } , - BigNum { limbs: [ 0xa32c41aa67e0beb0ad80034eb71aa6, 0x9508a3dad316105f067219141f4450, 0x002bcd ] } , - BigNum { limbs: [ 0x1a77c155967b404f527ffbb148e55b, 0x124a85c2aa3222dad195f08db8c103, 0x004820 ] } , - BigNum { limbs: [ 0x6b3940c718bb3958fd9a1ddf213be7, 0xee356d71662cd22a979f6b15fc86ce, 0x001f4a ] } , - BigNum { limbs: [ 0x526ac238e5a0c5a70265e120dec41a, 0xb91dbc2c171b610f40689e8bdb7e85, 0x0054a2 ] } , - BigNum { limbs: [ 0x0164a97d188ac0ad5367ab4e7b9e84, 0xd76d92812edc0b2170f8fa33b90723, 0x001637 ] } , - BigNum { limbs: [ 0xbc3f5982e5d13e52ac9853b184617d, 0xcfe5971c4e6c2818670f0f6e1efe30, 0x005db5 ] } , - BigNum { limbs: [ 0xd38af418dcea4940696f931cef27c7, 0xf2b39ee7c1f14c64da2d1c87fee4ab, 0x001510 ] } , - BigNum { limbs: [ 0xea190ee72171b5bf96906be310d83a, 0xb49f8ab5bb56e6d4fddaed19d920a7, 0x005edc ] } , - BigNum { limbs: [ 0xa0fc06f956f6d131762634135d8773, 0x660adcd8596d1256ead3bd82cadd77, 0x00043b ] } , - BigNum { limbs: [ 0x1ca7fc06a7652dce89d9caeca2788e, 0x41484cc523db20e2ed344c1f0d27dc, 0x006fb2 ] } , - BigNum { limbs: [ 0x98b5990f7dd55dba4f3fedebd06bc5, 0xeac74899e255532e7960de94f43902, 0x004481 ] } , - BigNum { limbs: [ 0x24ee69f08086a145b0c011142f943c, 0xbc8be1039af2e00b5ea72b0ce3cc51, 0x002f6b ] } , - BigNum { limbs: [ 0x6f602b2b358f7ef3a6617be19d472b, 0xa8e515acb6396cee5a925bf81b7077, 0x005326 ] } , - BigNum { limbs: [ 0x4e43d7d4c8cc800c599e831e62b8d6, 0xfe6e13f0c70ec64b7d75ada9bc94dc, 0x0020c6 ] } , - BigNum { limbs: [ 0x18d4d95a863f36470f4ebc84a1bd09, 0x925d1a9cc5785dcf1a4388a868b3e5, 0x00591e ] } , - BigNum { limbs: [ 0xa4cf29a5781cc8b8f0b1427b5e42f8, 0x14f60f00b7cfd56abdc480f96f516e, 0x001acf ] } , - BigNum { limbs: [ 0x37975f1f4d9331f2d9f84be1cb409f, 0x6d9d6d6d6548788364ba04c31cffc8, 0x002d3a ] } , - BigNum { limbs: [ 0x860ca3e0b0c8cd0d2607b31e34bf62, 0x39b5bc3017ffbab6734e04debb058b, 0x0046b3 ] } , - BigNum { limbs: [ 0x13995efabb2e08108045b70a904c29, 0x68e227088a0c18c2811a831726b411, 0x001626 ] } , - BigNum { limbs: [ 0xaa0aa405432df6ef7fba47f56fb3d8, 0x3e710294f33c1a7756ed868ab15142, 0x005dc7 ] } , - BigNum { limbs: [ 0xd904c73a6df631a566da4dc6969ff2, 0x233a4e20eddc2b3f3429032441631e, 0x00113b ] } , - BigNum { limbs: [ 0xe49f3bc59065cd5a9925b13969600f, 0x8418db7c8f6c07faa3df067d96a234, 0x0062b2 ] } , - BigNum { limbs: [ 0xb4ad674a5b0e84b2be9919fe7beb09, 0x9b7a1f04d514ebbd8e4a6a5f39d332, 0x000818 ] } , - BigNum { limbs: [ 0x08f69bb5a34d7a4d4166e5018414f8, 0x0bd90a98a833477c49bd9f429e3221, 0x006bd5 ] } , - BigNum { limbs: [ 0x3815ad2b4e0bed39a9ab3291ebcb6d, 0x481a65dceabc6ce9304f5ee5ab74a3, 0x001073 ] } , - BigNum { limbs: [ 0x858e55d4b05011c65654cc6e143494, 0x5f38c3c0928bc650a7b8aabc2c90b0, 0x00637a ] } , - BigNum { limbs: [ 0x675ee8f0cfc4fbe1c53bdc5c414033, 0x6ff3dc88c3c951715c36a0edc53b77, 0x006c1f ] } , - BigNum { limbs: [ 0x56451a0f2e97031e3ac422a3bebfce, 0x375f4d14b97ee1c87bd168b412c9dc, 0x0007ce ] } , - BigNum { limbs: [ 0x9d6b9010e7aedcfd961ec7e5265cdf, 0x3797d5d3852d318d7031d74e4c3e13, 0x0000d3 ] } , - BigNum { limbs: [ 0x203872ef16ad220269e1371ad9a322, 0x6fbb53c9f81b01ac67d632538bc740, 0x00731a ] } , - BigNum { limbs: [ 0x76d9747869e6fb998944eb24e3022a, 0xf60ba4afea247aeba5e346b9d70e94, 0x002f0d ] } , - BigNum { limbs: [ 0x46ca8e879475036676bb13db1cfdd7, 0xb14784ed9323b84e3224c2e800f6bf, 0x0044df ] } , - BigNum { limbs: [ 0x7e74e6253d9e28eb6f05198583cc5a, 0xc3fb75a40eda9e7820f403bec3fa34, 0x006263 ] } , - BigNum { limbs: [ 0x3f2f1cdac0bdd61490fae57a7c33a7, 0xe357b3f96e6d94c1b71405e3140b1f, 0x001189 ] } , - BigNum { limbs: [ 0x67b6ccb7cb52aa6311b7eb3aeec353, 0x45181092c55b725895bec22d77a19f, 0x00082e ] } , - BigNum { limbs: [ 0x55ed36483309549cee4813c5113cae, 0x623b190ab7ecc0e1424947746063b4, 0x006bbf ] } , - BigNum { limbs: [ 0xa2948b0f28fd5df91fc60871a54c24, 0x2150f3f639fc833e844a9af6b85d52, 0x003d89 ] } , - BigNum { limbs: [ 0x1b0f77f0d55ea106e039f68e5ab3dd, 0x860235a7434baffb53bd6eab1fa801, 0x003664 ] } , - BigNum { limbs: [ 0xd623dc41d0fd8aa88e850ca72894b1, 0xcc83e375c0ec4ed37d208f6077d205, 0x006501 ] } , - BigNum { limbs: [ 0xe78026be2d5e7457717af258d76b50, 0xdacf4627bc5be4665ae77a4160334d, 0x000eeb ] } , - BigNum { limbs: [ 0x55e876c3e0a5147afa35ae1fc29be8, 0x0a9434ce3e69fda9e3cc5bacdeab09, 0x0030ad ] } , - BigNum { limbs: [ 0x67bb8c3c1db6ea8505ca50e03d6419, 0x9cbef4cf3ede358ff43badf4f95a4a, 0x004340 ] } , - BigNum { limbs: [ 0x5e38e331c8b4975bd310c3a66c9537, 0x7452f50c70e72cd060f51bbb1a5c14, 0x0007e0 ] } , - BigNum { limbs: [ 0x5f6b1fce35a767a42cef3b59936aca, 0x330034910c6106697712ede6bda93f, 0x006c0d ] } , - BigNum { limbs: [ 0x839e93b61ed367713054cb61f934a6, 0x86e13262538cbcd386b654d64e49aa, 0x006697 ] } , - BigNum { limbs: [ 0x3a056f49df88978ecfab339e06cb5b, 0x2071f73b29bb76665151b4cb89bba9, 0x000d56 ] } , - BigNum { limbs: [ 0xce77b6b91a5bff3496d2f9d70bbbed, 0xfa867056ef0bf0b6fbbe96fe0b5f57, 0x006e22 ] } , - BigNum { limbs: [ 0xef2c4c46e3ffffcb692d0528f44414, 0xacccb9468e3c4282dc4972a3cca5fb, 0x0005ca ] } , - BigNum { limbs: [ 0x35851865696a5fe7449852b6744cfb, 0xca1910b4c0d6c2301c80b5355c202d, 0x006397 ] } , - BigNum { limbs: [ 0x881eea9a94f19f18bb67ac498bb306, 0xdd3a18e8bc717109bb87546c7be526, 0x001055 ] } , - BigNum { limbs: [ 0x15b13cd94b772008f85d2cfd89da4e, 0x0bba06096d7f32862846c576ee59a4, 0x00044c ] } , - BigNum { limbs: [ 0xa7f2c626b2e4def707a2d2027625b3, 0x9b9923940fc900b3afc1442ae9abaf, 0x006fa1 ] } , - BigNum { limbs: [ 0xad4e7565595253f1a51657f2a2f9e7, 0xe3fc58bf7b73a3423aa9719209a14a, 0x00257d ] } , - BigNum { limbs: [ 0x10558d9aa509ab0e5ae9a70d5d061a, 0xc356d0de01d48ff79d5e980fce6409, 0x004e6f ] } , - BigNum { limbs: [ 0x99e27a2081799b4eca385586eb2c8a, 0x6e1e917d3c28d3709d3de66e349da2, 0x004217 ] } , - BigNum { limbs: [ 0x23c188df7ce263b135c7a97914d377, 0x39349820411f5fc93aca2333a367b1, 0x0031d6 ] } , - BigNum { limbs: [ 0x5b5d18505549feee6bc914fa35124f, 0xa94623e44bc1990ff506a2cd6b3d9d, 0x00288e ] } , - BigNum { limbs: [ 0x6246eaafa91200119436ea05caedb2, 0xfe0d05b931869a29e30166d46cc7b6, 0x004b5e ] } , - BigNum { limbs: [ 0x200aebafc5ea98d70b82be17d2ea44, 0x9e1350d0f12ec8c9b38256147ffc5f, 0x0002b0 ] } , - BigNum { limbs: [ 0x9d99175038716628f47d40e82d15bd, 0x093fd8cc8c196a702485b38d5808f4, 0x00713d ] } , - BigNum { limbs: [ 0xd22bffba2587708972aa6c93818ac3, 0x0d75320a98111865427c3fbad80109, 0x001d89 ] } , - BigNum { limbs: [ 0xeb780345d8d48e768d55926c7e753e, 0x99ddf792e5371ad4958bc9e7000449, 0x005664 ] } , - BigNum { limbs: [ 0x987808ecddda052fa970fa47b4d601, 0x73f9895e0b1dddf69a51b191869389, 0x00017f ] } , - BigNum { limbs: [ 0x252bfa132081f9d0568f04b84b2a00, 0x3359a03f722a55433db658105171ca, 0x00726e ] } , - BigNum { limbs: [ 0x797372b5768dd9ebb076877911c04b, 0x9e39ebc0279c4f5b7a8a85b70bc7fe, 0x004478 ] } , - BigNum { limbs: [ 0x4430904a87ce25144f897786ee3fb6, 0x09193ddd55abe3de5d7d83eacc3d55, 0x002f75 ] } , - BigNum { limbs: [ 0xd8a8d534b0bce4b5614227d84785d3, 0x7c149fa74f614d379f099408001942, 0x001142 ] } , - BigNum { limbs: [ 0xe4fb2dcb4d9f1a4a9ebdd727b87a2e, 0x2b3e89f62de6e60238fe7599d7ec10, 0x0062ab ] } , - BigNum { limbs: [ 0xe783d9c51d6ce1625d7b4024d0bc31, 0x8f48d8897bd8b9ad44bff146d48270, 0x003884 ] } , - BigNum { limbs: [ 0xd620293ae0ef1d9da284bedb2f43d0, 0x180a5114016f798c9348185b0382e2, 0x003b69 ] } , - BigNum { limbs: [ 0x4f5998407582cb8e651766a21aabf7, 0x222338f5c90837822f5731ee9d1207, 0x00453f ] } , - BigNum { limbs: [ 0x6e4a6abf88d933719ae8985de5540a, 0x852ff0a7b43ffbb7a8b0d7b33af34c, 0x002eae ] } , - BigNum { limbs: [ 0xf11b943e0a5c1e2e4846815bb5cb67, 0x91e813585d0a31b10c4d0834e51570, 0x000ab9 ] } , - BigNum { limbs: [ 0xcc886ec1f3ffe0d1b7b97da44a349a, 0x156b1645203e0188cbbb016cf2efe2, 0x006934 ] } , - BigNum { limbs: [ 0x1a72e496b8439b36cd4db1bbe5ca69, 0x5ceb01a76fced43cc0d2474edd1a13, 0x001243 ] } , - BigNum { limbs: [ 0xa3311e69461863c932b24d441a3598, 0x4a6827f60d795efd1735c252faeb40, 0x0061aa ] } , - BigNum { limbs: [ 0x3b6fa83d80ddb697498cee10f65636, 0x145c26afc67740e95ba8f06421ede8, 0x0062de ] } , - BigNum { limbs: [ 0x82345ac27d7e4868b67310ef09a9cb, 0x92f702edb6d0f2507c5f193db6176b, 0x00110f ] } , - BigNum { limbs: [ 0xe294866778dba7eed0691c4f064c24, 0x4e726428a8545d0980355d73eb438a, 0x005985 ] } , - BigNum { limbs: [ 0xdb0f7c98858057112f96e2b0f9b3dd, 0x58e0c574d4f3d63057d2ac2decc1c8, 0x001a68 ] } , - BigNum { limbs: [ 0x3127d801dca32a39962c609da710e3, 0xa4b1ab2b9df1738156030e0c00b4b8, 0x005d57 ] } , - BigNum { limbs: [ 0x8c7c2afe21b8d4c669d39e6258ef1e, 0x02a17e71df56bfb88204fb95d7509b, 0x001696 ] } , - BigNum { limbs: [ 0x7235137c96ca150abf67a5fa6f0687, 0x8eaab1e5d22ab63f8399bdf5936d8f, 0x004978 ] } , - BigNum { limbs: [ 0x4b6eef836791e9f54098590590f97a, 0x18a877b7ab1d7cfa546e4bac4497c4, 0x002a75 ] } , - BigNum { limbs: [ 0xe34c60b7c083e55fade10d7514eed6, 0x3333ea0f66fa627540c1307c98c144, 0x001ac5 ] } , - BigNum { limbs: [ 0xda57a2483dd819a0521ef18aeb112b, 0x741f3f8e164dd0c49746d9253f440e, 0x005928 ] } , - BigNum { limbs: [ 0x500508fe3d0e6a914a23cd6857106f, 0x136a2fdf95ef346770ba87cbc4ad1e, 0x005fb4 ] } , - BigNum { limbs: [ 0x6d9efa01c14d946eb5dc3197a8ef92, 0x93e8f9bde758fed2674d81d6135835, 0x001439 ] } , - BigNum { limbs: [ 0x526fc51e926eed088ea3d3a61591a0, 0x5b7ee5750ad9dde09fa1fc42c5aba4, 0x003f9c ] } , - BigNum { limbs: [ 0x6b343de16bed11f7715c2b59ea6e61, 0x4bd44428726e555938660d5f1259af, 0x003451 ] } , - BigNum { limbs: [ 0xe5f6189a91d3131e38ce660312f615, 0x21c3f659c625eb5509c25b6653d9e7, 0x006f33 ] } , - BigNum { limbs: [ 0xd7adea656c88ebe1c73198fced09ec, 0x858f3343b72247e4ce45ae3b842b6b, 0x0004ba ] } , - BigNum { limbs: [ 0x7a0d81db669673c291f14cd98a7d2a, 0x8d612d2d97a693c03dbd4683c4baa6, 0x003fbe ] } , - BigNum { limbs: [ 0x4396812497c58b3d6e0eb2267582d7, 0x19f1fc6fe5a19f799a4ac31e134aad, 0x00342f ] } , - BigNum { limbs: [ 0x8a993fc6880486691832e8a41ee752, 0x5621a1853029eb3b5bfee47aaa41ce, 0x0007ed ] } , - BigNum { limbs: [ 0x330ac33976577896e7cd165be118af, 0x513188184d1e47fe7c0925272dc385, 0x006c00 ] } , - BigNum { limbs: [ 0x09811b9ecc3cdd2f69ba00cf49e3de, 0x0de23f4bcc6180fb5cd21c7d361f8c, 0x003a91 ] } , - BigNum { limbs: [ 0xb422e761321f21d09645fe30b61c23, 0x9970ea51b0e6b23e7b35ed24a1e5c7, 0x00395c ] } , - BigNum { limbs: [ 0xb28df60d27e28a6f0bea9e4dba4f9a, 0xa7903b327a3446326e6d7100f47412, 0x002992 ] } , - BigNum { limbs: [ 0x0b160cf2d6797490f41560b245b067, 0xffc2ee6b0313ed07699a98a0e39141, 0x004a5a ] } , - BigNum { limbs: [ 0x11fd20282d1b25e0833b7c617bdc5d, 0xf09ed8b68a8d837045222b2c384419, 0x0052dc ] } , - BigNum { limbs: [ 0xaba6e2d7d140d91f7cc4829e8423a4, 0xb6b450e6f2baafc992e5de759fc13a, 0x002110 ] } , - BigNum { limbs: [ 0x1d92ba5065f372af722cf7829fab72, 0x13f833701b1eabc3f1fbd860bb881d, 0x006004 ] } , - BigNum { limbs: [ 0xa01148af98688c508dd3077d60548f, 0x935af62d62298775e60c31411c7d36, 0x0013e9 ] } , - BigNum { limbs: [ 0xf67c97f1fdd432814ece7435bcf923, 0x637daaeb4a5bdc3e971128e27174e4, 0x002f9c ] } , - BigNum { limbs: [ 0xc7276b0e0087cc7eb1318aca4306de, 0x43d57eb232ec56fb40f6e0bf66906e, 0x004451 ] } , - BigNum { limbs: [ 0xd1fc0d8c4aab114fc7d67bfcec6520, 0xc284a67515dc83cfc755da62fd7c91, 0x005dc3 ] } , - BigNum { limbs: [ 0xeba7f573b3b0edb038298303139ae1, 0xe4ce8328676baf6a10b22f3eda88c1, 0x001629 ] } , - BigNum { limbs: [ 0x21d9526aec07103e286a9ea36bab20, 0x583453a9a25dc5a592e88c3fc46d0a, 0x00431c ] } , - BigNum { limbs: [ 0x9bcab0951254eec1d795605c9454e1, 0x4f1ed5f3daea6d94451f7d62139849, 0x0030d1 ] } , - BigNum { limbs: [ 0xbc49eed496ecddb02181d185aa602e, 0x379c4b7bd1be32fa560b3c056fed6e, 0x006bb0 ] } , - BigNum { limbs: [ 0x015a142b676f214fde7e2d7a559fd3, 0x6fb6de21ab8a003f81fccd9c6817e5, 0x00083d ] } , - BigNum { limbs: [ 0x0d4cb24f88de63e4ada96b3b020d8b, 0x0732880a87c2e260e20d201f1dc558, 0x0011c7 ] } , - BigNum { limbs: [ 0xb05750b0757d9b1b525693c4fdf276, 0xa020a192f58550d8f5fae982ba3ffb, 0x006226 ] } , - BigNum { limbs: [ 0x281a3c2fd0196ddb35b650d9ab3014, 0x13a14cf58033dcd23a6d13a1561f3f, 0x007398 ] } , - BigNum { limbs: [ 0x9589c6d02e429124ca49ae2654cfed, 0x93b1dca7fd1456679d9af60081e614, 0x000055 ] } , - BigNum { limbs: [ 0xd7aba520c240a24ce5e53162d931c5, 0x9aee630fab443b1f1ed6a578f80def, 0x003ee8 ] } , - BigNum { limbs: [ 0xe5f85ddf3c1b5cb31a1acd9d26ce3c, 0x0c64c68dd203f81ab9316428dff763, 0x003505 ] } , - BigNum { limbs: [ 0x134e66da5b38f8967d351412b79c04, 0x5553ee0a4e4a941d33b1f8e336b54e, 0x006fe8 ] } , - BigNum { limbs: [ 0xaa559c25a323066982caeaed4863fd, 0x51ff3b932efd9f1ca45610bea15005, 0x000405 ] } , - BigNum { limbs: [ 0x414e3836e3157a8288c66f4fdacbf8, 0x52a8c981ab3a1e7d85b985abf82649, 0x005b43 ] } , - BigNum { limbs: [ 0x7c55cac91b46847d77398fb0253409, 0x54aa601bd20e14bc524e83f5dfdf0a, 0x0018aa ] } , - BigNum { limbs: [ 0x4ab805ac95beda104662889534a02c, 0x539e4674f2d136fa5c7dcdca12fd92, 0x005b3e ] } , - BigNum { limbs: [ 0x72ebfd53689d24efb99d766acb5fd5, 0x53b4e3288a76fc3f7b8a3bd7c507c1, 0x0018af ] } , - BigNum { limbs: [ 0xc08825ca2a922d393400b40d41c6eb, 0x890fb076d6c0dae0712f321c7aee7d, 0x004ca0 ] } , - BigNum { limbs: [ 0xfd1bdd35d3c9d1c6cbff4af2be3916, 0x1e437926a687585966d8d7855d16d5, 0x00274d ] } , - BigNum { limbs: [ 0x0630f155a7283ed1c9abe0a3bb223d, 0xb0488d87edd87d3d3093d21097e608, 0x000f50 ] } , - BigNum { limbs: [ 0xb77311aa5733c02e36541e5c44ddc4, 0xf70a9c158f6fb5fca7743791401f4b, 0x00649c ] } , - BigNum { limbs: [ 0xfee2872cd133059b478876f4842e9f, 0x8ac51357d5355dd7ecde8c306bc5e4, 0x002cbb ] } , - BigNum { limbs: [ 0xbec17bd32d28f964b877880b7bd162, 0x1c8e1645a812d561eb297d716c3f6e, 0x004732 ] } , - BigNum { limbs: [ 0x7209469bf06555dc6de7f9dc3cf057, 0xda9a17c0cb99deeaf901bbb17f4cad, 0x006861 ] } , - BigNum { limbs: [ 0x4b9abc640df6a92392180523c30faa, 0xccb911dcb1ae544edf064df058b8a6, 0x000b8b ] } , - BigNum { limbs: [ 0x79a8628ff9a0c9d04682224497a483, 0xac3d44a1626a5e5a49672c61ad1248, 0x005d42 ] } , - BigNum { limbs: [ 0x43fba07004bb352fb97ddcbb685b7e, 0xfb15e4fc1addd4df8ea0dd402af30b, 0x0016aa ] } , - BigNum { limbs: [ 0x66c147052435b8c52cd3cb674b34f7, 0xb6bdb257b845b08cd87970cb89e28a, 0x004357 ] } , - BigNum { limbs: [ 0x56e2bbfada26463ad32c3398b4cb0a, 0xf0957745c50282acff8e98d64e22c9, 0x003095 ] } , - BigNum { limbs: [ 0x8bc41357f8ecf34b52bf5ff565037f, 0x1602f720f2c6cb73d20cbefccdbf11, 0x00456c ] } , - BigNum { limbs: [ 0x31dfefa8056f0bb4ad409f0a9afc82, 0x9150327c8a8167c605fb4aa50a4642, 0x002e81 ] } , - BigNum { limbs: [ 0xd49563f5999b733d36e6c8d5c85d0c, 0x16953595435748ad3268533efd6733, 0x003b7b ] } , - BigNum { limbs: [ 0xe90e9f0a64c08bc2c919362a37a2f5, 0x90bdf40839f0ea8ca59fb662da9e1f, 0x003872 ] } , - BigNum { limbs: [ 0xb693f1fdc1ba0de7ecc99fd1b22cc2, 0x4379a23142572df8d45c0c2cc85d70, 0x000015 ] } , - BigNum { limbs: [ 0x071011023ca1f11813365f2e4dd33f, 0x63d9876c3af1054103abfd750fa7e3, 0x0073d8 ] } , - BigNum { limbs: [ 0x54551ac51be1b7412c65f5e605243e, 0x5d17e1be209e075f004f9b4bf64387, 0x004307 ] } , - BigNum { limbs: [ 0x694ee83ae27a47bed39a0919fadbc3, 0x4a3b47df5caa2bdad7b86e55e1c1cc, 0x0030e6 ] } , - BigNum { limbs: [ 0x5f4e9992ab4edb37d62c4d138d2f72, 0xe6bd27170f4a688b7dc622905567a8, 0x0037ce ] } , - BigNum { limbs: [ 0x5e55696d530d23c829d3b1ec72d08f, 0xc09602866dfdcaae5a41e711829dab, 0x003c1e ] } , - BigNum { limbs: [ 0x95171015da9c0f569350c43c0745df, 0xf42bd04cd34e6ef5bca284efc7b5c6, 0x00024d ] } , - BigNum { limbs: [ 0x288cf2ea23bfefa96caf3ac3f8ba22, 0xb3275950a9f9c4441b6584b2104f8d, 0x00719f ] } , - BigNum { limbs: [ 0x31e04ad7a1c291452b2c882eaec899, 0x34fc43e610951bdad4b55e2f230cdf, 0x001530 ] } , - BigNum { limbs: [ 0x8bc3b8285c996dbad4d376d1513768, 0x7256e5b76cb3175f0352ab72b4f874, 0x005ebd ] } , - BigNum { limbs: [ 0x3459c934ecefaca50981741a41e44f, 0x1ae656312fef5318e11dc9b1ca9119, 0x001190 ] } , - BigNum { limbs: [ 0x894a39cb116c525af67e8ae5be1bb2, 0x8c6cd36c4d58e020f6ea3ff00d743a, 0x00625d ] } , - BigNum { limbs: [ 0x97c25d899137c6d44daf086afcf9b8, 0xd1a4bc0456eca420f0afb1451cc192, 0x001a75 ] } , - BigNum { limbs: [ 0x25e1a5766d24382bb250f695030649, 0xd5ae6d99265b8f18e758585cbb43c1, 0x005977 ] } , - BigNum { limbs: [ 0xad19ee483751942d93bf8912cc93b0, 0x9c4f8b2315b52fea09cc230ac20329, 0x003210 ] } , - BigNum { limbs: [ 0x108a14b7c70a6ad26c4075ed336c51, 0x0b039e7a6793034fce3be69716022a, 0x0041dd ] } , - BigNum { limbs: [ 0x49d37738918ca35cb7f86764fdea09, 0x402ed2d26efaccfdb0625b8ce63bd7, 0x0008a5 ] } , - BigNum { limbs: [ 0x73d08bc76ccf5ba34807979b0215f8, 0x672456cb0e4d663c27a5ae14f1c97c, 0x006b48 ] } , - BigNum { limbs: [ 0x0c0f30d36b082eb0dc17816cb0e06b, 0xd4b929a9031fcbefd73174b145ab8d, 0x000997 ] } , - BigNum { limbs: [ 0xb194d22c9353d04f23e87d934f1f96, 0xd299fff47a28674a00d694f09259c6, 0x006a55 ] } , - BigNum { limbs: [ 0xd79d9b5cf0b02f4ad1ec37bc4668a5, 0x0b9445efe18018da6541112be98f50, 0x005f8d ] } , - BigNum { limbs: [ 0xe60667a30dabcfb52e13c743b9975c, 0x9bbee3ad9bc81a5f72c6f875ee7602, 0x001460 ] } , - BigNum { limbs: [ 0x121d282465bdad0f34141c7d3da09a, 0x0ef76b4c80691a776f67d16dfe80bc, 0x006c4d ] } , - BigNum { limbs: [ 0xab86dadb989e51f0cbebe282c25f67, 0x985bbe50fcdf18c268a03833d98497, 0x0007a0 ] } , - BigNum { limbs: [ 0xe32d00989071c592863b2deccd28d4, 0x78def8f9daa7a035b7beb65789703d, 0x002513 ] } , - BigNum { limbs: [ 0xda7702676dea396d79c4d11332d72d, 0x2e7430a3a2a093042049534a4e9515, 0x004eda ] } , - BigNum { limbs: [ 0x7db9aa83b35c113fb0d31aeeacbb65, 0x84ab3bcdeda0cd33828d5f406885fb, 0x003543 ] } , - BigNum { limbs: [ 0x3fea587c4affedc04f2ce41153449c, 0x22a7edcf8fa76606557aaa616f7f58, 0x003eaa ] } , - BigNum { limbs: [ 0xe78a85938af37e0af32e561b3d24e8, 0x8ff9c4252ab7abacc0ad5a0f8108c1, 0x00380e ] } , - BigNum { limbs: [ 0xd6197d6c736880f50cd1a8e4c2db19, 0x175965785290878d175aaf9256fc91, 0x003bdf ] } , - BigNum { limbs: [ 0xe862487904d0ab1b561347c6a47727, 0xca4cf7456c9b942c20e45c3ad14d9c, 0x005164 ] } , - BigNum { limbs: [ 0xd541ba86f98b53e4a9ecb7395b88da, 0xdd06325810ac9f0db723ad6706b7b6, 0x002288 ] } , - BigNum { limbs: [ 0xd33bf14161f9d1b57c74a1a632861c, 0x8837cd53b51429480da6ff98e69efd, 0x0006ea ] } , - BigNum { limbs: [ 0xea6811be9c622d4a838b5d59cd79e5, 0x1f1b5c49c83409f1ca610a08f16655, 0x006d03 ] } , - BigNum { limbs: [ 0x6f85c75c7104048219119f4ee37970, 0xe3b668951f44d83642143e5116021a, 0x006661 ] } , - BigNum { limbs: [ 0x4e1e3ba38d57fa7de6ee5fb11c8691, 0xc39cc1085e035b0395f3cb50c20339, 0x000d8b ] } , - BigNum { limbs: [ 0xabe8a42bca4648155c5db70536fba5, 0x1a6d0e45b70438852afca87a27475e, 0x0011ed ] } , - BigNum { limbs: [ 0x11bb5ed43415b6eaa3a247fac9045c, 0x8ce61b57c643fab4ad0b6127b0bdf5, 0x006200 ] } , - BigNum { limbs: [ 0x56b609aec53dfd8fd8477795ff4e24, 0x9098661b7f0098c6a168ae263847ed, 0x004d4f ] } , - BigNum { limbs: [ 0x66edf951391e017027b8876a00b1dd, 0x16bac381fe479a73369f5b7b9fbd66, 0x00269e ] } , - BigNum { limbs: [ 0x3068288d002952aa9bb95d1b374ed5, 0xc885613baf7578fdbf732896904a2d, 0x00034b ] } , - BigNum { limbs: [ 0x8d3bda72fe32ac556446a1e4c8b12c, 0xdecdc861cdd2ba3c1894e10b47bb26, 0x0070a1 ] } , - BigNum { limbs: [ 0xfaf5246bdc6160df264050cf3e22ae, 0x814196ce178247b7c36d8edbda6053, 0x00323e ] } , - BigNum { limbs: [ 0xc2aede9421fa9e20d9bfae30c1dd53, 0x261192cf65c5eb82149a7ac5fda4ff, 0x0041af ] } , - BigNum { limbs: [ 0x83b05c24992a3135e348767c4aafe2, 0x8130b73aebc3ce227e8fb926f40cd9, 0x000ede ] } , - BigNum { limbs: [ 0x39f3a6db6531cdca1cb78883b5501f, 0x26227262918465175978507ae3f87a, 0x00650f ] } , - BigNum { limbs: [ 0xfa262ea0e733170f29a0b04e9a8146, 0xdb5d01b6e9702207cb5d3f177f64f8, 0x001672 ] } , - BigNum { limbs: [ 0xc37dd45f1728e7f0d65f4eb1657ebb, 0xcbf627e693d811320caaca8a58a05a, 0x005d7a ] } , - BigNum { limbs: [ 0xcd82c8828701da73a34913a9e841e9, 0x69cdffa8d7cafcb50dee8ce8259bd4, 0x004147 ] } , - BigNum { limbs: [ 0xf0213a7d775a248c5cb6eb5617be18, 0x3d8529f4a57d3684ca197cb9b2697e, 0x0032a6 ] } , - BigNum { limbs: [ 0x94f0b4c9df1485e97b95616c3a6fef, 0x3edc1705b7526883f2507b3751c473, 0x006835 ] } , - BigNum { limbs: [ 0x28b34e361f477916846a9d93c59012, 0x68771297c5f5cab5e5b78e6a8640e0, 0x000bb8 ] } , - BigNum { limbs: [ 0x8dd787b3ad291ab1521b0d5ecedcc4, 0x82b9f56777bee241f5a44452f15b9e, 0x00200a ] } , - BigNum { limbs: [ 0x2fcc7b4c5132e44eade4f1a131233d, 0x24993436058950f7e263c54ee6a9b5, 0x0053e3 ] } , - BigNum { limbs: [ 0xd9ef271dd3186ccee2ccfa249bc96c, 0x3aebd897ae71b531e25c39151709d1, 0x006261 ] } , - BigNum { limbs: [ 0xe3b4dbe22b4392311d3304db643695, 0x6c675105ced67e07f5abd08cc0fb81, 0x00118c ] } , - BigNum { limbs: [ 0xcc8504f991529c7e5c204ab3282e9c, 0x10c06ce25a54f297d011f3f4779043, 0x004296 ] } , - BigNum { limbs: [ 0xf11efe066d096281a3dfb44cd7d165, 0x9692bcbb22f340a207f615ad60750f, 0x003157 ] } , - BigNum { limbs: [ 0xe0ed66ad5979117d3b59206b37406b, 0xf99d726505dc5b4365cceb71e6cc29, 0x006e26 ] } , - BigNum { limbs: [ 0xdcb69c52a4e2ed82c4a6de94c8bf96, 0xadb5b738776bd7f6723b1e2ff13929, 0x0005c6 ] } , - BigNum { limbs: [ 0xffc63674068e602b7a8144bbcd69c5, 0xf8e0e7abdd4583aa7aaa8a5d528ad3, 0x005a65 ] } , - BigNum { limbs: [ 0xbdddcc8bf7cd9ed4857eba4432963c, 0xae7241f1a002af8f5d5d7f44857a7f, 0x001987 ] } , - BigNum { limbs: [ 0x7d6416a22630d3fd06627b42ef60df, 0xf9d79aea135c6db595852b0bc9e469, 0x0025d3 ] } , - BigNum { limbs: [ 0x403fec5dd82b2b02f99d83bd109f22, 0xad7b8eb369ebc5844282de960e20ea, 0x004e19 ] } , - BigNum { limbs: [ 0x572b91ccaf01e737ebaf0350b4539e, 0x1b19e36b145443404dbc8e67ffaff0, 0x001f1c ] } , - BigNum { limbs: [ 0x667871334f5a17c81450fbaf4bac63, 0x8c39463268f3eff98a4b7b39d85563, 0x0054d1 ] } , - BigNum { limbs: [ 0xd7ac7c2c9bde34674cde84dbe81470, 0x7c3cd8f74f3b31619e9a529ee63694, 0x0000cb ] } , - BigNum { limbs: [ 0xe5f786d3627dca98b3217a2417eb91, 0x2b1650a62e0d01d8396db702f1cebe, 0x007322 ] } , - BigNum { limbs: [ 0xa95fd87e28812feed0f1e2e15ed07a, 0x199195db48b029afda9a43a0090477, 0x003a0e ] } , - BigNum { limbs: [ 0x14442a81d5dacf112f0e1c1ea12f87, 0x8dc193c234980989fd6dc601cf00dc, 0x0039df ] } , - BigNum { limbs: [ 0x2b8714689ebb197b31b51d176d5c3c, 0xe1242db051eb464a672cc470201226, 0x0067bd ] } , - BigNum { limbs: [ 0x921cee975fa0e584ce4ae1e892a3c5, 0xc62efbed2b5cecef70db4531b7f32d, 0x000c2f ] } , - BigNum { limbs: [ 0x3cbdd8a6e048f12007970e58be3166, 0x33f1b315af0fd1980c2d159e845906, 0x0016c2 ] } , - BigNum { limbs: [ 0x80e62a591e130ddff868f0a741ce9b, 0x73617687ce3861a1cbdaf40353ac4d, 0x005d2b ] } , - BigNum { limbs: [ 0xfee8040aec8c1b21876fef338861b6, 0x48f5fc192eed7bab0a897de2a8f403, 0x002725 ] } , - BigNum { limbs: [ 0xbebbfef511cfe3de78900fcc779e4b, 0x5e5d2d844e5ab78ecd7e8bbf2f114f, 0x004cc8 ] } , - BigNum { limbs: [ 0xc23fb356e882cb58c9b96eb9c473a7, 0x69aaaeeede1f442a3183fc9227d33e, 0x003df9 ] } , - BigNum { limbs: [ 0xfb644fa915d933a7364690463b8c5a, 0x3da87aae9f28ef0fa6840d0fb03214, 0x0035f4 ] } , - BigNum { limbs: [ 0x94938a3faced68a2e0778d5371aa24, 0xceb0996b830d198b7c6783f5c910ad, 0x00195a ] } , - BigNum { limbs: [ 0x291078c0516e965d1f8871ac8e55dd, 0xd8a29031fa3b19ae5ba085ac0ef4a6, 0x005a92 ] } , - BigNum { limbs: [ 0xff4d68c5cc6a9938a37e9fbda3520b, 0x15803f81c70dcc1409ac0a82f404fc, 0x003786 ] } , - BigNum { limbs: [ 0xbe569a3a31f165c75c815f425cadf6, 0x91d2ea1bb63a6725ce5bff1ee40056, 0x003c67 ] } , - BigNum { limbs: [ 0xe8bb12eb4447c40dcc1e860326fca3, 0x8ed923b9bbd942fb5be8827759c83c, 0x0000e4 ] } , - BigNum { limbs: [ 0xd4e8f014ba143af233e178fcd9035e, 0x187a05e3c16ef03e7c1f872a7e3d16, 0x007309 ] } , - BigNum { limbs: [ 0x4adbc5153b03755ad82db249fcc494, 0x19a4f89360d960c87e36158349361b, 0x004976 ] } , - BigNum { limbs: [ 0x72c83deac35889a527d24cb6033b6d, 0x8dae310a1c6ed27159d1f41e8ecf38, 0x002a77 ] } , - BigNum { limbs: [ 0xd06bc72939ea9a0f0b5d731502b4fc, 0xa8bd32d060ed4e1a4ccbda7027a088, 0x0028d3 ] } , - BigNum { limbs: [ 0xed383bd6c47164f0f4a28beafd4b05, 0xfe95f6cd1c5ae51f8b3c2f31b064ca, 0x004b19 ] } , - BigNum { limbs: [ 0xfaf4b473e66f63ed292d9ec211f01f, 0xf755c839b702b7f1381a8091ff1f94, 0x001e3c ] } , - BigNum { limbs: [ 0xc2af4e8c17ec9b12d6d2603dee0fe2, 0xaffd6163c6457b489fed890fd8e5be, 0x0055b0 ] } , - BigNum { limbs: [ 0x24a11c49898e7b3bb56210f46b445f, 0xc5ea4ace31b95f11446f4b1f4fdbed, 0x005b56 ] } , - BigNum { limbs: [ 0x9902e6b674cd83c44a9dee0b94bba2, 0xe168decf4b8ed4289398be82882966, 0x001896 ] } , - BigNum { limbs: [ 0x6f5e54d4f027ac5bad62e1af726a05, 0x30306ecaf3fa1c87b7ca9aec4a5134, 0x003ffc ] } , - BigNum { limbs: [ 0x4e45ae2b0e3452a4529d1d508d95fc, 0x7722bad2894e16b2203d6eb58db41f, 0x0033f1 ] } , - BigNum { limbs: [ 0x85c9632db6a4b24bef8e0f80d5157c, 0x85e0f879619f68358d191aaeef76af, 0x003f86 ] } , - BigNum { limbs: [ 0x37da9fd247b74cb41071ef7f2aea85, 0x217231241ba8cb044aeeeef2e88ea4, 0x003467 ] } , - BigNum { limbs: [ 0x7e418610e6300609ec655a96950036, 0x96a6cc49dbfef1d56e569388e1650c, 0x002089 ] } , - BigNum { limbs: [ 0x3f627cef182bf8f6139aa4696affcb, 0x10ac5d53a149416469b17618f6a047, 0x005364 ] } , - BigNum { limbs: [ 0x3f0be78d99500000cea642590ebc16, 0xab00ba22d325f03fa5b968775aa902, 0x006218 ] } , - BigNum { limbs: [ 0x7e981b72650bfeff3159bca6f143eb, 0xfc526f7aaa2242fa324ea12a7d5c51, 0x0011d4 ] } , - BigNum { limbs: [ 0xea4e19668e715782042e05ddb7752a, 0xf74d99ab54b7ec9f8b181a83fad3b4, 0x001ba4 ] } , - BigNum { limbs: [ 0xd355e9996feaa77dfbd1f922488ad7, 0xb0058ff22890469a4cefef1ddd319e, 0x005848 ] } , - BigNum { limbs: [ 0x4c336a761e4581bf60523dc6f3dea6, 0x32a8f7310d4638b6bb7d490afd305a, 0x000aae ] } , - BigNum { limbs: [ 0x71709889e0167d409fadc1390c215b, 0x74aa326c7001fa831c8ac096dad4f9, 0x00693f ] } , - BigNum { limbs: [ 0x3e67ad1973bd409807a6e05531681c, 0x70aa028a2ef45d5b62df0f11ae65bf, 0x006c86 ] } , - BigNum { limbs: [ 0x7f3c55e68a9ebe67f8591eaace97e5, 0x36a927134e53d5de7528fa90299f94, 0x000767 ] } , - BigNum { limbs: [ 0xe717b4de70fa810795a88a3a2252bc, 0x6fc224829e1a6434fe5c34476208aa, 0x006e82 ] } , - BigNum { limbs: [ 0xd68c4e218d617df86a5774c5ddad45, 0x3791051adf2dcf04d9abd55a75fca8, 0x00056b ] } , - BigNum { limbs: [ 0x4283ef0cd948c46de4c7756a415804, 0x0f838a7f9cfe5497048871f79513b8, 0x0060e8 ] } , - BigNum { limbs: [ 0x7b2013f325133a921b388995bea7fd, 0x97cf9f1de049dea2d37f97aa42f19b, 0x001305 ] } , - BigNum { limbs: [ 0x32eb25ed865d8a753b31683fa6dd39, 0x966dbaad8e05e14dfe2ee8716930f9, 0x0016ab ] } , - BigNum { limbs: [ 0x8ab8dd1277fe748ac4ce96c05922c8, 0x10e56eefef4251ebd9d921306ed45a, 0x005d42 ] } , - BigNum { limbs: [ 0xb3548fbd0e36ae4822c9601db5b4d5, 0xa86df049b80d263ce2230e80f40b30, 0x006d28 ] } , - BigNum { limbs: [ 0x0a4f7342f02550b7dd369ee24a4b2c, 0xfee53953c53b0cfcf5e4fb20e3fa23, 0x0006c4 ] } , - BigNum { limbs: [ 0x405360681e405f89ed751a5b13fc35, 0x5e64d07b6631b2a5b57903a8320da2, 0x007020 ] } , - BigNum { limbs: [ 0x7d50a297e01b9f76128ae4a4ec03cc, 0x48ee592217168094228f05f9a5f7b1, 0x0003cd ] } , - BigNum { limbs: [ 0xa7b4c41bfe96e37702c146acabf566, 0xa04f78c9dafbc3e1ff474a6d35e8b9, 0x0056c0 ] } , - BigNum { limbs: [ 0x15ef3ee3ffc51b88fd3eb853540a9b, 0x0703b0d3a24c6f57d8c0bf34a21c9a, 0x001d2d ] } , - BigNum { limbs: [ 0x1cbb84cdda266dbb22ab2c4a38aa7a, 0x5c8ebe53d0423309862f1db8081658, 0x0042c7 ] } , - BigNum { limbs: [ 0xa0e87e3224359144dd54d2b5c75587, 0x4ac46b49ad06003051d8ebe9cfeefb, 0x003126 ] } , - BigNum { limbs: [ 0x320b95d64b1d490f210d0f0ba87923, 0xe1b4b7a01995741c5814d5130a8fc8, 0x00332e ] } , - BigNum { limbs: [ 0x8b986d29b33eb5f0def2eff45786de, 0xc59e71fd63b2bf1d7ff3348ecd758b, 0x0040be ] } , - BigNum { limbs: [ 0x23f2668433fa8a28e9d267e676f09d, 0x0c0d2f68cc92142eaa7c005473e533, 0x0038bd ] } , - BigNum { limbs: [ 0x99b19c7bca6174d7162d9719890f64, 0x9b45fa34b0b61f0b2d8c094d642020, 0x003b30 ] } , - BigNum { limbs: [ 0xec9c72dcc8734dc425ca19861ee552, 0xa1b4bb68c4254dc4593c3329bca6f0, 0x00452b ] } , - BigNum { limbs: [ 0xd107902335e8b13bda35e579e11aaf, 0x059e6e34b922e5757ecbd6781b5e62, 0x002ec2 ] } , - BigNum { limbs: [ 0x1f67edc6afede3df74adaaa1cca9a7, 0x5e0842a169ebac8106ac15c98c18ed, 0x005ad2 ] } , - BigNum { limbs: [ 0x9e3c15394e6e1b208b52545e33565a, 0x494ae6fc135c86b8d15bf3d84bec66, 0x00191b ] } , - BigNum { limbs: [ 0x4058bec7b133ca651afefb29a9939c, 0x0a1b0f3b4c751890003cd3ebaf5e8c, 0x001c40 ] } , - BigNum { limbs: [ 0x7d4b44384d28349ae50103d6566c65, 0x9d381a6230d31aa9d7cb35b628a6c7, 0x0057ad ] } , - BigNum { limbs: [ 0x36ab8ea81583c4c1bac540e381c8f0, 0x1aaa7e12f469e4cd7d8ce2c990dfaf, 0x00228b ] } , - BigNum { limbs: [ 0x86f87457e8d83a3e453abe1c7e3711, 0x8ca8ab8a88de4e6c5a7b26d84725a4, 0x005162 ] } , - BigNum { limbs: [ 0xcc000a11e4802951f21cd6dbea7c2a, 0xb2123d13636d445f7082bc8207c8de, 0x0040e1 ] } , - BigNum { limbs: [ 0xf1a3f8ee19dbd5ae0de328241583d7, 0xf540ec8a19daeeda67854d1fd03c74, 0x00330b ] } , - BigNum { limbs: [ 0x3e599117e9cb952d607598bcc1e83b, 0x0c2ab77ef28c6f50de31578cfaa24a, 0x0057db ] } , - BigNum { limbs: [ 0x7f4a71e8149069d29f8a66433e17c6, 0x9b28721e8abbc3e8f9d6b214dd6309, 0x001c12 ] } , - BigNum { limbs: [ 0x1799f058035dcbd96ba5757dda8575, 0x50a13bd906972b0df5d780044f449b, 0x0046ae ] } , - BigNum { limbs: [ 0xa60a12a7fafe3326945a8982257a8c, 0x56b1edc476b1082be230899d88c0b8, 0x002d3f ] } , - BigNum { limbs: [ 0xd251991f9b1b248b5290db47cce484, 0x26250c7b5ea46f67582902c36e8328, 0x006bd0 ] } , - BigNum { limbs: [ 0xeb5269e06340da74ad6f23b8331b7d, 0x812e1d221ea3c3d27fdf06de69822a, 0x00081d ] } , - BigNum { limbs: [ 0x6031729518c4b8a9bfdced5c3773f4, 0x86953de4b81e7bbf620c45bb9d997c, 0x001328 ] } , - BigNum { limbs: [ 0x5d72906ae5974656402311a3c88c0d, 0x20bdebb8c529b77a75fbc3e63a6bd7, 0x0060c5 ] } , - BigNum { limbs: [ 0x32c32f9153cf104f13adf78f0ab22e, 0xa23781992517af63a50cecf710ddd8, 0x0015df ] } , - BigNum { limbs: [ 0x8ae0d36eaa8ceeb0ec520770f54dd3, 0x051ba804583083d632fb1caac7277b, 0x005e0e ] } , - BigNum { limbs: [ 0x4cd9e894db2eabe96ae51954f195b5, 0x98b9143180684b98c91a50bad0d8c1, 0x006e54 ] } , - BigNum { limbs: [ 0x70ca1a6b232d5316951ae5ab0e6a4c, 0x0e9a156bfcdfe7a10eedb8e7072c92, 0x000599 ] } , - BigNum { limbs: [ 0xae1798878e7216996be5ea4dc5beac, 0x20333d0b9da9e2636e6e51aab939ce, 0x004de0 ] } , - BigNum { limbs: [ 0x0f8c6a786fe9e866941a14b23a4155, 0x871fec91df9e50d66999b7f71ecb85, 0x00260d ] } , - BigNum { limbs: [ 0x4b1482a8d939c5fa9b75f82a40b888, 0x083d359637c206f39bf89d8be3b31f, 0x006541 ] } , - BigNum { limbs: [ 0x728f805725223905648a06d5bf4779, 0x9f15f40745862c463c0f6c15f45234, 0x000eac ] } , - BigNum { limbs: [ 0x0c9aca5890366ec871b857734dcd5f, 0x0d89eb0a9d7dda72356f321f529289, 0x006e9d ] } , - BigNum { limbs: [ 0xb10938a76e2590378e47a78cb232a2, 0x99c93e92dfca58c7a298d7828572ca, 0x000550 ] } , - BigNum { limbs: [ 0xd568dfeaa8afc9152957dd7e3e6d6e, 0x0519af22b8c6ef03dcb464a2d69029, 0x0054ca ] } , - BigNum { limbs: [ 0xe83b231555ac35ead6a82181c19293, 0xa2397a7ac4814435fb53a4ff017529, 0x001f23 ] } , - BigNum { limbs: [ 0x4e5a1345f539f8413b50b95c227c97, 0x1d1e8c04c2f02e593273988bfecb24, 0x001e84 ] } , - BigNum { limbs: [ 0x6f49efba092206bec4af45a3dd836a, 0x8a349d98ba5804e0a5947115d93a2f, 0x005569 ] } , - BigNum { limbs: [ 0xa233d82ae54a6891aab45ac7da93f8, 0x59e206cc655847d1ca20dca2c17542, 0x000643 ] } , - BigNum { limbs: [ 0x1b702ad51911966e554ba438256c09, 0x4d7122d117efeb680de72cff169011, 0x006daa ] } , - BigNum { limbs: [ 0x81e21fc24c6141198168d81deef562, 0x4b60c7562ad9d99a2cadbf83be355f, 0x002c49 ] } , - BigNum { limbs: [ 0x3bc1e33db1fabde67e9726e2110a9f, 0x5bf26247526e599fab5a4a1e19cff4, 0x0047a4 ] } , - BigNum { limbs: [ 0x2ac7666544ba6c5bdbe9e8a2c79508, 0x78e857f2fceaabddbfda8da360393c, 0x003e34 ] } , - BigNum { limbs: [ 0x92dc9c9ab9a192a42416165d386af9, 0x2e6ad1aa805d875c182d7bfe77cc17, 0x0035b9 ] } , - BigNum { limbs: [ 0xe1aa2efec5bded7ca93d1f2babd583, 0x8b67f646955d6a841374b0bdab42f1, 0x0016ad ] } , - BigNum { limbs: [ 0xdbf9d401389e118356c2dfd4542a7e, 0x1beb3356e7eac8b5c49358e42cc261, 0x005d40 ] } , - BigNum { limbs: [ 0xdf9ac37921d95019c73db3049e70c2, 0xdae9d3069be8ff8367d0e70c66c376, 0x002895 ] } , - BigNum { limbs: [ 0xde093f86dc82aee638c24bfb618f3f, 0xcc695696e15f33b6703722957141dc, 0x004b57 ] } , - BigNum { limbs: [ 0x79d4bf47595d55596ef2bd27f6682b, 0xeeb9d3a9d140dca62ce144961f8e25, 0x0058e2 ] } , - BigNum { limbs: [ 0x43cf43b8a4fea9a6910d41d80997d6, 0xb89955f3ac075693ab26c50bb8772e, 0x001b0a ] } , - BigNum { limbs: [ 0x4facbb773e7e09b87f65f96c3ad3d8, 0x391df1f55b0d02979cb2d4cc998a57, 0x002805 ] } , - BigNum { limbs: [ 0x6df74788bfddf547809a0593c52c29, 0x6e3537a8223b30a23b5534d53e7afc, 0x004be8 ] } , - BigNum { limbs: [ 0xd0e546f44b9d2078d754457c3efb5f, 0xd4f96511eb5d8b3395e1139c918196, 0x004369 ] } , - BigNum { limbs: [ 0xecbebc0bb2bede8728abb983c104a2, 0xd259c48b91eaa8064226f6054683bc, 0x003083 ] } , - BigNum { limbs: [ 0xea24105782b04b7f3936dc7724635b, 0x34b12fcff435e4896a758b7a3407b4, 0x000164 ] } , - BigNum { limbs: [ 0xd37ff2a87babb380c6c92288db9ca6, 0x72a1f9cd89124eb06d927e27a3fd9e, 0x007289 ] } , - BigNum { limbs: [ 0x832e7d3aaf999a1c1179cca00ad0ff, 0x72d9bafd451d01694913a55df2bc6e, 0x006856 ] } , - BigNum { limbs: [ 0x3a7585c54ec264e3ee86325ff52f02, 0x34796ea0382b31d08ef46443e548e5, 0x000b97 ] } , - BigNum { limbs: [ 0x3a42eafa204ae672603ed6fc998242, 0xcf0a8c02601cb5a1bcab4261caffc9, 0x000d60 ] } , - BigNum { limbs: [ 0x83611805de11188d9fc12803667dbf, 0xd8489d9b1d2b7d981b5cc7400d058a, 0x00668c ] } , - BigNum { limbs: [ 0x52d564119aef005ef9322cf6cdde3d, 0x81b0aeee3b09dd2c54924fac5a29f4, 0x003289 ] } , - BigNum { limbs: [ 0x6ace9eee636cfea106cdd2093221c4, 0x25a27aaf423e560d8375b9f57ddb5f, 0x004164 ] } , - BigNum { limbs: [ 0x3d565b98633cd44e275792a663eedc, 0x6f68a5eae59b7e650d3e617391f7d9, 0x006e8b ] } , - BigNum { limbs: [ 0x804da7679b1f2ab1d8a86c599c1125, 0x37ea83b297acb4d4cac9a82e460d7a, 0x000562 ] } , - BigNum { limbs: [ 0x112248f15f34d66533436ad9623014, 0xdcd347682fb0f40c711506a4cdc44a, 0x001164 ] } , - BigNum { limbs: [ 0xac81ba0e9f27289accbc94269dcfed, 0xca7fe2354d973f2d66f302fd0a4109, 0x006288 ] } , - BigNum { limbs: [ 0x1311a73508c66be5689312f36abcf3, 0xb5bee2af44c7ab836980235fbd2d5f, 0x0005d5 ] } , - BigNum { limbs: [ 0xaa925bcaf595931a976cec0c95430e, 0xf19446ee388087b66e87e6421ad7f4, 0x006e17 ] } , - BigNum { limbs: [ 0x3eb832b8329919e3a13eda58db0a31, 0xb4ffd054f4599939200f5eb7e9c0e6, 0x0049fb ] } , - BigNum { limbs: [ 0x7eebd047cbc2e51c5ec124a724f5d0, 0xf253594888ee9a00b7f8aae9ee446d, 0x0029f1 ] } , - BigNum { limbs: [ 0xfa31e45936c2a5caf319587d7506f7, 0x416e56363160221a894c0a012beffe, 0x0034d3 ] } , - BigNum { limbs: [ 0xc3721ea6c79959350ce6a6828af90a, 0x65e4d3674be8111f4ebbffa0ac1554, 0x003f1a ] } , - BigNum { limbs: [ 0xf44e1f9a185814a744d29457cdb826, 0xcbf1e9231053b05d210c27af8f2fd3, 0x0010c9 ] } , - BigNum { limbs: [ 0xc955e365e603ea58bb2d6aa83247db, 0xdb61407a6cf482dcb6fbe1f248d57f, 0x006323 ] } , - BigNum { limbs: [ 0x4500302beb3b59756e185b9c1b40d8, 0xb0f92770adc552b6eb1a6b54249500, 0x0033a9 ] } , - BigNum { limbs: [ 0x78a3d2d41320a58a91e7a363e4bf29, 0xf65a022ccf82e082eced9e4db37053, 0x004043 ] } , - BigNum { limbs: [ 0x6c92f7b27e37a7103f16ad6df67bb9, 0x870878cad4e4a5157fc804f6310ab1, 0x0056a3 ] } , - BigNum { limbs: [ 0x51110b4d802457efc0e95192098448, 0x204ab0d2a8638e24584004aba6faa2, 0x001d4a ] } , - BigNum { limbs: [ 0x1637458ec6750a8191a7fdaabff692, 0x8f6f552333b5b25ea66d74943cccdc, 0x004ef6 ] } , - BigNum { limbs: [ 0xa76cbd7137e6f47e6e58015540096f, 0x17e3d47a499280db319a950d9b3877, 0x0024f7 ] } , - BigNum { limbs: [ 0x76d7d1cd4ff3465a0d33c3931997b5, 0xf86347300fe04628c2b613f30a739e, 0x000d58 ] } , - BigNum { limbs: [ 0x46cc3132ae68b8a5f2cc3b6ce6684c, 0xaeefe26d6d67ed111551f5aecd91b5, 0x006694 ] } , - BigNum { limbs: [ 0x8835476fc695fb930f39ba1eefa047, 0xc08499ab579dac5f8647bd10a76514, 0x00217b ] } , - BigNum { limbs: [ 0x356ebb9037c6036cf0c644e1105fba, 0xe6ce8ff225aa86da51c04c9130a03f, 0x005271 ] } , - BigNum { limbs: [ 0x4c0ce1f80702a84ac78a1e41bde2d7, 0xea12997cfd66c71a3d29a165c2b6ca, 0x000230 ] } , - BigNum { limbs: [ 0x71972107f75956b53875e0be421d2a, 0xbd4090207fe16c1f9ade683c154e89, 0x0071bc ] } , - BigNum { limbs: [ 0x5ad7c44d43f038084a1a22a4112bd2, 0x6450648b2a2e87de6c939571d6acfc, 0x000c1c ] } , - BigNum { limbs: [ 0x62cc3eb2ba6bc6f7b5e5dc5beed42f, 0x4302c5125319ab5b6b747430015857, 0x0067d1 ] } , - BigNum { limbs: [ 0x6fb6a479ad0676bf64bd5d39dd507f, 0xe5ca04d37de69de68a9ca30d676334, 0x000633 ] } , - BigNum { limbs: [ 0x4ded5e86515588409b42a1c622af82, 0xc18924c9ff6195534d6b669470a21f, 0x006db9 ] } , - BigNum { limbs: [ 0xc4635810e4c6eb4d6bd1e069cca493, 0x07a292323bd5d2e8cb274c64cfe48f, 0x002ae5 ] } , - BigNum { limbs: [ 0xf940aaef199513b2942e1e96335b6e, 0x9fb0976b417260510ce0bd3d0820c3, 0x004908 ] } , - BigNum { limbs: [ 0x23aa9f7b424b89f9d773a6dd31a57c, 0x60287ef28c3dae7e2106b45ddfa44e, 0x004249 ] } , - BigNum { limbs: [ 0x99f96384bc107506288c5822ce5a85, 0x472aaaaaf10a84bbb7015543f86105, 0x0031a4 ] } , - BigNum { limbs: [ 0x85943b9f8f65779cf781766c8f4147, 0x02c4a03e2fce92ee778b5ca3fb4c1f, 0x001b2f ] } , - BigNum { limbs: [ 0x380fc7606ef68763087e889370beba, 0xa48e895f4d79a04b607cacfddcb934, 0x0058be ] } , - BigNum { limbs: [ 0xb09601710d39e51469d7644aa53bd0, 0x4f177093e6741b09aae337a88fe4be, 0x004017 ] } , - BigNum { limbs: [ 0x0d0e018ef12219eb96289ab55ac431, 0x583bb90996d418302d24d1f9482095, 0x0033d6 ] } , - BigNum { limbs: [ 0x4b952110f12481f98e3c63fa2ede65, 0x9916c272df3034a6cc45edbf8d1e16, 0x00483b ] } , - BigNum { limbs: [ 0x720ee1ef0d377d0671c39b05d1219c, 0x0e3c672a9e17fe930bc21be24ae73d, 0x002bb2 ] } , - BigNum { limbs: [ 0x2e1085a75f37e69c04e98949156ce6, 0x8b31afb3c2e037a317f15f37df06d8, 0x0062fa ] } , - BigNum { limbs: [ 0x8f937d589f241863fb1675b6ea931b, 0x1c2179e9ba67fb96c016aa69f8fe7b, 0x0010f3 ] } , - BigNum { limbs: [ 0x66c3f5a0e05b76d6fddacf37a23a65, 0x68c30ab81e098624b9ed69a3313373, 0x005316 ] } , - BigNum { limbs: [ 0x56e00d5f1e00882902252fc85dc59c, 0x3e901ee55f3ead151e1a9ffea6d1e0, 0x0020d7 ] } , - BigNum { limbs: [ 0x01804dbba870bbae53d143440a70f2, 0x16fc2e317371ac14a94fc40ad271c7, 0x005c88 ] } , - BigNum { limbs: [ 0xbc23b54455eb4351ac2ebbbbf58f0f, 0x9056fb6c09d687252eb8459705938c, 0x001765 ] } , - BigNum { limbs: [ 0x29dd5298a9bad6200efa9202a1379c, 0xb00533bd66708dfa6cff8142851dcf, 0x0015c2 ] } , - BigNum { limbs: [ 0x93c6b06754a128dff1056cfd5ec865, 0xf74df5e016d7a53f6b08885f52e784, 0x005e2a ] } , - BigNum { limbs: [ 0x7bd10c3805b2c5a8e85718ebdc3fa6, 0x6a52d5f60ae45016df9c12d0fbcc2f, 0x002b3f ] } , - BigNum { limbs: [ 0x41d2f6c7f8a9395717a8e61423c05b, 0x3d0053a77263e322f86bf6d0dc3924, 0x0048ae ] } , - BigNum { limbs: [ 0x4d05533f920c0d6527f5b384be953c, 0x7dc43d7b104d492273078d50dd212e, 0x0041f1 ] } , - BigNum { limbs: [ 0x709eafc06c4ff19ad80a4b7b416ac5, 0x298eec226cfaea1765007c50fae425, 0x0031fc ] } , - BigNum { limbs: [ 0x549a66d486356d7ddebe37986d5dfe, 0x9b7449bcaba834265cbbada025d639, 0x003c64 ] } , - BigNum { limbs: [ 0x69099c2b782691822141c76792a203, 0x0bdedfe0d19fff137b4c5c01b22f1a, 0x003789 ] } , - BigNum { limbs: [ 0xb3f0d905e8e3ffaab366d69df72013, 0x3fdc3813ec383f93d176bd69b38a2e, 0x00196e ] } , - BigNum { limbs: [ 0x09b329fa1577ff554c99286208dfee, 0x6776f189910ff3a606914c38247b25, 0x005a7f ] } , - BigNum { limbs: [ 0x98f7335896a32fc2d353716fa6d165, 0xf6933307848d19b0edbf3386cd297c, 0x0045e0 ] } , - BigNum { limbs: [ 0x24accfa767b8cf3d2cac8d90592e9c, 0xb0bff695f8bb1988ea48d61b0adbd7, 0x002e0c ] } , - BigNum { limbs: [ 0xa1293eeeb767643e7069d2d06a75be, 0x76d3772b2f16c83e19ebe8e2be6eec, 0x000e14 ] } , - BigNum { limbs: [ 0x1c7ac41146f49ac18f962c2f958a43, 0x307fb2724e316afbbe1c20bf199667, 0x0065d9 ] } , - BigNum { limbs: [ 0xf045901941ab9c683870ca7608f917, 0x887d1a94af41885e2689177c805052, 0x00197e ] } , - BigNum { limbs: [ 0xcd5e72e6bcb06297c78f3489f706ea, 0x1ed60f08ce06aadbb17ef22557b500, 0x005a6f ] } , - BigNum { limbs: [ 0xd6ec5f40117d9bbdbb2badb386ed54, 0x9a9b4159737169c92da1e38aef4d0b, 0x003bf8 ] } , - BigNum { limbs: [ 0xe6b7a3bfecde634244d4514c7912ad, 0x0cb7e84409d6c970aa662616e8b847, 0x0037f5 ] } , - BigNum { limbs: [ 0x9d08e6e47b90b583b835f626d2c7ac, 0x4ef52d61cacc3e4d4311785303c13e, 0x006459 ] } , - BigNum { limbs: [ 0x209b1c1b82cb497c47ca08d92d3855, 0x585dfc3bb27bf4ec94f6914ed44415, 0x000f94 ] } , - BigNum { limbs: [ 0xb16ca10e7b13cb91bd06a5f7e5320a, 0xdf6c57efd496f1fde065b5338cdb27, 0x004dfc ] } , - BigNum { limbs: [ 0x0c3761f18348336e42f959081acdf7, 0xc7e6d1ada8b1413bf7a2546e4b2a2c, 0x0025f0 ] } , - BigNum { limbs: [ 0x009ff716f23cf57420570de9b9402b, 0x637eb9d26164bff0f8f45c95ada9fe, 0x006304 ] } , - BigNum { limbs: [ 0xbd040be90c1f098bdfa8f11646bfd6, 0x43d46fcb1be37348df13ad0c2a5b55, 0x0010e9 ] } , - BigNum { limbs: [ 0xa0095b88847cc8cdeaf9a4b193d544, 0xe0b2d25c204333e6b4cc30a5faffcd, 0x002448 ] } , - BigNum { limbs: [ 0x1d9aa77779df363215065a4e6c2abd, 0xc6a057415d04ff53233bd8fbdd0586, 0x004fa4 ] } , - BigNum { limbs: [ 0x20f0e3f46c5b4e9b753e749f384be8, 0xb9954ec4b35a966daf4d7cc0a90a41, 0x005601 ] } , - BigNum { limbs: [ 0x9cb31f0b9200b0648ac18a60c7b419, 0xedbddad8c9ed9ccc28ba8ce12efb12, 0x001deb ] } , - BigNum { limbs: [ 0x8f32c4023955e5d3c02daef28b1297, 0xb189df0c4773bfac54740c82767584, 0x0019ae ] } , - BigNum { limbs: [ 0x2e713efdc506192c3fd2500d74ed6a, 0xf5c94a9135d4738d8393fd1f618fcf, 0x005a3e ] } , - BigNum { limbs: [ 0xbc04ddde4fbaed9c024eca8192c366, 0x03dfa83d15f94c61ac68816c8ce1fa, 0x005dfd ] } , - BigNum { limbs: [ 0x019f2521aea11163fdb1347e6d3c9b, 0xa3738160674ee6d82b9f88354b2359, 0x0015f0 ] } , - BigNum { limbs: [ 0x2aa65962a6c6c509f3e270cdac6114, 0x8ee3323292b85d181069983b204164, 0x003099 ] } , - BigNum { limbs: [ 0x92fda99d579539f60c1d8e32539eed, 0x186ff76aea8fd621c79e7166b7c3ef, 0x004354 ] } , - BigNum { limbs: [ 0x767f066e1d355ec70777b85d85bd10, 0x3f7b000013450d00659ec6d69651a8, 0x000aea ] } , - BigNum { limbs: [ 0x4724fc91e126a038f88846a27a42f1, 0x67d8299d6a032639726942cb41b3ab, 0x006903 ] } , - BigNum { limbs: [ 0x86f14710a0c60382b81b694a693618, 0x284df013918967c1a3064fb5c83c31, 0x00003b ] } , - BigNum { limbs: [ 0x36b2bbef5d95fb7d47e495b596c9e9, 0x7f053989ebbecb783501b9ec0fc922, 0x0073b2 ] } , - BigNum { limbs: [ 0x0b675ac26be5dd2ceff4b9eabb114f, 0xfc46367bc78fb7bdf71eb7ceba6d44, 0x007201 ] } , - BigNum { limbs: [ 0xb23ca83d927621d3100b451544eeb2, 0xab0cf321b5b87b7be0e951d31d980f, 0x0001eb ] } , - BigNum { limbs: [ 0x67d3fdfe1c34267fb409d92c672ebc, 0x751bf9d74c1920ef0be8c74d59ab69, 0x0023bb ] } , - BigNum { limbs: [ 0x55d00501e227d8804bf625d398d145, 0x32372fc6312f124acc1f42547e59ea, 0x005032 ] } , - BigNum { limbs: [ 0xa605cdd0280abe54167aab921ad75d, 0xd895e17b6d6153c155126ee82c3fac, 0x006e55 ] } , - BigNum { limbs: [ 0x179e352fd65140abe985536de528a4, 0xcebd48220fe6df7882f59ab9abc5a7, 0x000597 ] } , - BigNum { limbs: [ 0x593b4103f282733c09174c741c249e, 0x285f75480e515cc0293d3840fbdfdd, 0x0042ae ] } , - BigNum { limbs: [ 0x6468c1fc0bd98bc3f6e8b28be3db63, 0x7ef3b4556ef6d679aecad160dc2576, 0x00313f ] } , - BigNum { limbs: [ 0xaa5cf3e54a81e00a29e1b9f41875b0, 0x78373cc7b11efee96d855eda51bd9a, 0x0067e8 ] } , - BigNum { limbs: [ 0x13470f1ab3da1ef5d61e450be78a51, 0x2f1becd5cc2934506a82aac78647b9, 0x000c05 ] } , - BigNum { limbs: [ 0x5787a85a8ad80764ed38f466cc646d, 0x6075a276af447af87c7fbed30d110f, 0x0060d4 ] } , - BigNum { limbs: [ 0x661c5aa57383f79b12c70a99339b94, 0x46dd8726ce03b8415b884acecaf444, 0x001319 ] } , - BigNum { limbs: [ 0xef446a7a4b64b94059994992a5cee7, 0x80eb170f331c6afe2e7ca14a847e3c, 0x00697c ] } , - BigNum { limbs: [ 0xce5f9885b2f745bfa666b56d5a311a, 0x2668128e4a2bc83ba98b6857538716, 0x000a71 ] } , - BigNum { limbs: [ 0x52b6e8a9b24796cd2ca9f1a41e8209, 0x547cdc0221188abc7520e483386e2c, 0x000885 ] } , - BigNum { limbs: [ 0x6aed1a564c146832d3560d5be17df8, 0x52d64d9b5c2fa87d62e7251e9f9727, 0x006b68 ] } , - BigNum { limbs: [ 0xe591fc7535689984ba1cc31d9ad221, 0x76b998e5eed9197ba9335eb992b5c0, 0x0032d2 ] } , - BigNum { limbs: [ 0xd812068ac8f3657b45e33be2652de0, 0x309990b78e6f19be2ed4aae8454f92, 0x00411b ] } , - BigNum { limbs: [ 0x0052bcded554f9cc3ce48d77cd0a19, 0x8e10bb99cce6ac57f9a7bad1d03ba3, 0x000aea ] } , - BigNum { limbs: [ 0xbd51462129070533c31b718832f5e8, 0x19426e03b06186e1de604ed007c9b0, 0x006903 ] } , - BigNum { limbs: [ 0x67cb8c716dcc05da02d26634924413, 0x19a261479e8aafcf2501dc022e2c7a, 0x001f73 ] } , - BigNum { limbs: [ 0x55d8768e908ff925fd2d98cb6dbbee, 0x8db0c855debd836ab3062d9fa9d8d9, 0x00547a ] } , - BigNum { limbs: [ 0x2f985dd811b7e7c9aeb6fca0fea2e3, 0xe43dfba63e2390136ea68b2ce6aa72, 0x0002f0 ] } , - BigNum { limbs: [ 0x8e0ba527eca417365149025f015d1e, 0xc3152df73f24a32669617e74f15ae1, 0x0070fc ] } , - BigNum { limbs: [ 0x3b2e3f6b50892051ac5f1c8a02f30d, 0x2c283e4b4c4e07207d0c1f8045483a, 0x0003be ] } , - BigNum { limbs: [ 0x8275c394add2deae53a0e275fd0cf4, 0x7b2aeb5230fa2c195afbea2192bd19, 0x00702f ] } , - BigNum { limbs: [ 0x09e0312ae609bb688ab9d204ea6d73, 0x4c4f3b12df3c0f2f6c60b76602ec13, 0x006d5e ] } , - BigNum { limbs: [ 0xb3c3d1d51852439775462cfb15928e, 0x5b03ee8a9e0c240a6ba7523bd51940, 0x00068f ] } , - BigNum { limbs: [ 0x9244f54f20cc9cbd740c2e9acdcbcb, 0x75bdd01354702a0e067d8abf8ae3f2, 0x00720a ] } , - BigNum { limbs: [ 0x2b5f0db0dd8f62428bf3d065323436, 0x3195598a28d8092bd18a7ee24d2161, 0x0001e3 ] } , - BigNum { limbs: [ 0x1fab93d7e50a8d0e01cbebed0676dd, 0x5267be66b7fc9d37298da89f9d1dc2, 0x00423a ] } , - BigNum { limbs: [ 0x9df86f28195171f1fe341312f98924, 0x54eb6b36c54b9602ae7a61023ae791, 0x0031b3 ] } , - BigNum { limbs: [ 0x8ac2b45a37fc267d0f921f1a8048b8, 0x02cde70a7c09c8056cbdbe9feff479, 0x006353 ] } , - BigNum { limbs: [ 0x32e14ea5c65fd882f06ddfe57fb749, 0xa4854293013e6b346b4a4b01e810da, 0x00109a ] } , - BigNum { limbs: [ 0x7b679152d34e04a8dece301c9ff807, 0x739967be2d4b18284c0c266605b3b3, 0x005f86 ] } , - BigNum { limbs: [ 0x423c71ad2b0dfa572131cee36007fa, 0x33b9c1df4ffd1b118bfbe33bd251a0, 0x001467 ] } , - BigNum { limbs: [ 0x7a91559929a415f2d4925d85547e3e, 0xc278c591c29bb03d265627490d0d5c, 0x005262 ] } , - BigNum { limbs: [ 0x4312ad66d4b7e90d2b6da17aab81c3, 0xe4da640bbaac82fcb1b1e258caf7f7, 0x00218a ] } , - BigNum { limbs: [ 0x4267fbbcd21046b9288ae7a647dda9, 0xea9abd37b3a89c041a1c143f4f6ca7, 0x000eb2 ] } , - BigNum { limbs: [ 0x7b3c07432c4bb846d7751759b82258, 0xbcb86c65c99f9735bdebf5628898ac, 0x00653a ] } , - BigNum { limbs: [ 0x20bc406852ceaa249ea48ce197772c, 0x1eb3c42887f49092fdf3e5a73d7adb, 0x0050da ] } , - BigNum { limbs: [ 0x9ce7c297ab8d54db615b721e6888d5, 0x889f6574f553a2a6da1423fa9a8a78, 0x002313 ] } , - BigNum { limbs: [ 0x4a4f9418f5280f001cf10956ad7124, 0x98fa42d6ae453480c62bcbf49dc9a6, 0x001f31 ] } , - BigNum { limbs: [ 0x73546ee70933efffe30ef5a9528edd, 0x0e58e6c6cf02feb911dc3dad3a3bad, 0x0054bc ] } , - BigNum { limbs: [ 0x722fcbce277d953506a9d8a8c47b63, 0x2c047d09e6aa43c84005f04d88b57b, 0x005c09 ] } , - BigNum { limbs: [ 0x4b743731d6de69caf95626573b849e, 0x7b4eac93969def71980219544f4fd8, 0x0017e4 ] } , - BigNum { limbs: [ 0x4723717d44293e6a2bb8f8519763f5, 0xfd5ebeb588acb2f81d2e3763f0f360, 0x000318 ] } , - BigNum { limbs: [ 0x76809182ba32c095d44706ae689c0c, 0xa9f46ae7f49b8041bad9d23de711f3, 0x0070d4 ] } , - BigNum { limbs: [ 0x7a92ede4bc691a574e7721e595b40b, 0x4055fb331b2c90bc912322b62d5a2b, 0x004acd ] } , - BigNum { limbs: [ 0x4311151b41f2e4a8b188dd1a6a4bf6, 0x66fd2e6a621ba27d46e4e6ebaaab28, 0x002920 ] } , - BigNum { limbs: [ 0x60f1c20ba5bbbde506c821877b4a44, 0x4b1a025a917ca45fc8f6440fcd4dbf, 0x0027a7 ] } , - BigNum { limbs: [ 0x5cb240f458a0411af937dd7884b5bd, 0x5c392742ebcb8eda0f11c5920ab794, 0x004c46 ] } , - BigNum { limbs: [ 0x527d43c5a2bf113b218a0665fef46a, 0x2fcc0761b44bd8e6e524766255c80c, 0x000992 ] } , - BigNum { limbs: [ 0x6b26bf3a5b9cedc4de75f89a010b97, 0x7787223bc8fc5a52f2e3933f823d47, 0x006a5b ] } , - BigNum { limbs: [ 0x2d3653abd830a4926ec374de29e5ed, 0xaa325b5df1ea463718e7ac80d41a92, 0x000f7e ] } , - BigNum { limbs: [ 0x906daf54262b5a6d913c8a21d61a14, 0xfd20ce3f8b5ded02bf205d2103eac1, 0x00646e ] } , - BigNum { limbs: [ 0xe9a9fb96fdb98ee23d1730e5fffe1c, 0x1d4d0d487864269d6a93bcba686fe2, 0x00283f ] } , - BigNum { limbs: [ 0xd3fa076900a2701dc2e8ce1a0001e5, 0x8a061c5504e40c9c6d744ce76f9570, 0x004bae ] } , - BigNum { limbs: [ 0x398407bd5546c18e0f535efdd37921, 0x9c08f875051d85ae6219511b7f5180, 0x0048ce ] } , - BigNum { limbs: [ 0x841ffb42a9153d71f0aca0022c86e0, 0x0b4a3128782aad8b75eeb88658b3d3, 0x002b1f ] } , - BigNum { limbs: [ 0x8b14f126306387c6b17c9b5398b4d8, 0xa8b31a1058889b674d9b3f91856732, 0x0028cb ] } , - BigNum { limbs: [ 0x328f11d9cdf877394e8363ac674b29, 0xfea00f8d24bf97d28a6cca10529e21, 0x004b21 ] } , - BigNum { limbs: [ 0x6a485f6f1c316bb0d7782485b9ec55, 0x92e36171362ad33332e15bb2e1f042, 0x0016c1 ] } , - BigNum { limbs: [ 0x535ba390e22a934f2887da7a4613ac, 0x146fc82c471d6006a526adeef61511, 0x005d2c ] } , - BigNum { limbs: [ 0xd771fe6079f7bc937464d307ea552a, 0x5e86314b2b4b9eec67b5a1f2e78bbd, 0x004408 ] } , - BigNum { limbs: [ 0xe632049f8464426c8b9b2bf815aad7, 0x48ccf85251fc944d705267aef07995, 0x002fe5 ] } , - BigNum { limbs: [ 0xd9ae7f680402348117368aa68f76cb, 0x5d9ed8a59c481379f60b7c17caa56b, 0x000159 ] } , - BigNum { limbs: [ 0xe3f58397fa59ca7ee8c97459708936, 0x49b450f7e1001fbfe1fc8d8a0d5fe7, 0x007294 ] } , - BigNum { limbs: [ 0x1fc0dadceaca88a43b0ab71e8051fd, 0x2c6f4e1721a0c1ec0b79d76cd0ce91, 0x00465a ] } , - BigNum { limbs: [ 0x9de328231391765bc4f547e17fae04, 0x7ae3db865ba7714dcc8e32350736c2, 0x002d93 ] } , - BigNum { limbs: [ 0x23ba80b7dfaa7739c75477b3eb93f7, 0x225308144ddd224619711fcd716cc1, 0x0058e9 ] } , - BigNum { limbs: [ 0x99e982481eb187c638ab874c146c0a, 0x850021892f6b10f3be96e9d4669892, 0x001b04 ] } , - BigNum { limbs: [ 0x9b0d7ad7c93190c0b40ad9ab2c7192, 0xb58b822bef231d3217a49c28472ec4, 0x004dc2 ] } , - BigNum { limbs: [ 0x22968828352a6e3f4bf52554d38e6f, 0xf1c7a7718e251607c0636d7990d68f, 0x00262a ] } , - BigNum { limbs: [ 0xa3cf505b7b89033dc3911653a5b552, 0xdda82e3cc08d71de413766ac84106f, 0x004657 ] } , - BigNum { limbs: [ 0x19d4b2a482d2fbc23c6ee8ac5a4aaf, 0xc9aafb60bcbac15b96d0a2f553f4e4, 0x002d95 ] } , - BigNum { limbs: [ 0x22dc9449aaa3f782a014c7fa762234, 0x8a68cb6fdf57bff88ef4995a268ce5, 0x003861 ] } , - BigNum { limbs: [ 0x9ac76eb653b8077d5feb370589ddcd, 0x1cea5e2d9df0734149137047b1786e, 0x003b8c ] } , - BigNum { limbs: [ 0x4efa67116b946b4ded911c1aa2a486, 0x542e25e42c80e69c1e6e52260eaa40, 0x0004f0 ] } , - BigNum { limbs: [ 0x6ea99bee92c793b2126ee2e55d5b7b, 0x532503b950c74c9db999b77bc95b13, 0x006efd ] } , - BigNum { limbs: [ 0x72e6c2a22806353545a890ce83ae41, 0x4bd3e1c5996a532e8fecb6067f5020, 0x00058e ] } , - BigNum { limbs: [ 0x4abd405dd655c9caba576e317c51c0, 0x5b7f47d7e3dde00b481b539b58b533, 0x006e5f ] } , - BigNum { limbs: [ 0x9a84e938dfd48b259bac3a06a946e5, 0xa5b83bd25df17e11842dd229db3ce1, 0x00653e ] } , - BigNum { limbs: [ 0x231f19c71e8773da6453c4f956b91c, 0x019aedcb1f56b52853da3777fcc872, 0x000eaf ] } , - BigNum { limbs: [ 0xa43d7891a7839805bb4d2fa15631c3, 0x6d07b0f220c699dfe4462dd3b328a1, 0x001d73 ] } , - BigNum { limbs: [ 0x19668a6e56d866fa44b2cf5ea9ce3e, 0x3a4b78ab5c819959f3c1dbce24dcb2, 0x00567a ] } , - BigNum { limbs: [ 0x2de01648b1388e7e75e6a3bfcf47d4, 0xccf2a9c7259646744e0974c8d57207, 0x00475e ] } , - BigNum { limbs: [ 0x8fc3ecb74d2370818a195b4030b82d, 0xda607fd657b1ecc589fe94d902934c, 0x002c8e ] } , - BigNum { limbs: [ 0x381d54e0a6107a38f6083124b65103, 0x0a29b1700d25aaeb125f3c7b6e0d87, 0x0059f3 ] } , - BigNum { limbs: [ 0x8586ae1f584b84c709f7cddb49aefe, 0x9d29782d7022884ec5a8cd2669f7cc, 0x0019fa ] } , - BigNum { limbs: [ 0x264ee58149e2cd96fcf6d28b2e4c9e, 0xe6735a8ecec17085e99f8186a6d36b, 0x0028de ] } , - BigNum { limbs: [ 0x97551d7eb479316903092c74d1b363, 0xc0dfcf0eae86c2b3ee68881b3131e8, 0x004b0e ] } , - BigNum { limbs: [ 0x2e2b00af9bd8d14d1eb0088e369937, 0x6d79b2f7b0d3cb23d8dbabaf79b908, 0x0023e1 ] } , - BigNum { limbs: [ 0x8f79025062832db2e14ff671c966ca, 0x39d976a5cc746815ff2c5df25e4c4b, 0x00500c ] } , - BigNum { limbs: [ 0x208d2848d1ed566cafe0e55d5164c1, 0x14cd34e701a7c1ea26b9d3b0c16d25, 0x003779 ] } , - BigNum { limbs: [ 0x9d16dab72c6ea893501f19a2ae9b40, 0x9285f4b67ba0714fb14e35f116982e, 0x003c74 ] } , - BigNum { limbs: [ 0x86397c3abea15e184f07b20e96c595, 0xd3805f8e5143e31ad883ea37080113, 0x0014c7 ] } , - BigNum { limbs: [ 0x376a86c53fbaa0e7b0f84cf1693a6c, 0xd3d2ca0f2c04501eff841f6ad00440, 0x005f25 ] } , - BigNum { limbs: [ 0xeddcc14773ee6ecae1858cee84b9a1, 0xe858c609420b9383b44a8c12917d2b, 0x00508e ] } , - BigNum { limbs: [ 0xcfc741b88a6d90351e7a72117b4660, 0xbefa63943b3c9fb623bd7d8f468827, 0x00235e ] } , - BigNum { limbs: [ 0x49cd172c0b8bb0427e7385164be73e, 0xfeb5c085ae12c384b091e423900e96, 0x000650 ] } , - BigNum { limbs: [ 0x73d6ebd3f2d04ebd818c79e9b418c3, 0xa89d6917cf356fb52776257e47f6bd, 0x006d9c ] } , - BigNum { limbs: [ 0xf1b6dc5efcd28ca79a0b62517b3e11, 0x55a7369e62cd7124df59020f561c90, 0x005764 ] } , - BigNum { limbs: [ 0xcbed26a10189725865f49cae84c1f0, 0x51abf2ff1a7ac214f8af079281e8c2, 0x001c89 ] } , - BigNum { limbs: [ 0x6179dde81432c6f287b27bacd2a75d, 0xc19566aa0658f37a288b16353f1317, 0x004921 ] } , - BigNum { limbs: [ 0x5c2a2517ea29380d784d83532d58a4, 0xe5bdc2f376ef3fbfaf7cf36c98f23c, 0x002acb ] } , - BigNum { limbs: [ 0xb16a986057dd5881d59fbafcf8978a, 0xfe19cce4a8d1388647e315378ea37a, 0x0040b8 ] } , - BigNum { limbs: [ 0x0c396a9fa67ea67e2a604403076877, 0xa9395cb8d476fab39024f46a4961d9, 0x003334 ] } , - BigNum { limbs: [ 0x580822447fe3e06954ee3cf1a52eb0, 0xe7b4e38ad5a7e7b49a5954396d8634, 0x0014de ] } , - BigNum { limbs: [ 0x659be0bb7e781e96ab11c20e5ad151, 0xbf9e4612a7a04b853daeb5686a7f1f, 0x005f0e ] } , - BigNum { limbs: [ 0x88f4ee49e051408b5e098d73ecfb8a, 0x2cc75f7858d547d28deda799472dae, 0x00309b ] } , - BigNum { limbs: [ 0x34af14b61e0abe74a1f6718c130477, 0x7a8bca252472eb674a1a620890d7a5, 0x004352 ] } , - BigNum { limbs: [ 0x2536b36b780756223302d56e34e33a, 0x54b60c26a4ef66ce37ae9af3b0406f, 0x0038d5 ] } , - BigNum { limbs: [ 0x986d4f948654a8ddccfd2991cb1cc7, 0x529d1d76d858cc6ba0596eae27c4e4, 0x003b18 ] } , - BigNum { limbs: [ 0x1ffbf5380ebcefdff4a889348380cd, 0xf9b2dc3f08c6a0d72e9aff4c8e4f62, 0x006d73 ] } , - BigNum { limbs: [ 0x9da80dc7ef9f0f200b5775cb7c7f34, 0xada04d5e74819262a96d0a5549b5f1, 0x000679 ] } , - BigNum { limbs: [ 0x3d2d62bfbb6194b51dc2b6788cd33a, 0x226341f45ef3712e3143faa55798ce, 0x0020c6 ] } , - BigNum { limbs: [ 0x8076a04042fa6a4ae23d4887732cc7, 0x84efe7a91e54c20ba6c40efc806c85, 0x005327 ] } , - BigNum { limbs: [ 0x1070753693080e926426c25106abcc, 0x6081be8f8fffb8c2b296202481ff69, 0x002929 ] } , - BigNum { limbs: [ 0xad338dc96b53f06d9bd93caef95435, 0x46d16b0ded487a772571e97d5605ea, 0x004ac4 ] } , - BigNum { limbs: [ 0x5996156b5c46bfb0c30e46d27870d1, 0x4546d9820fecfe87d9c59e016e16e4, 0x006ae9 ] } , - BigNum { limbs: [ 0x640ded94a2153f4f3cf1b82d878f30, 0x620c501b6d5b34b1fe426ba069ee6f, 0x000904 ] } , - BigNum { limbs: [ 0x7dd77341301c0b97cd3f1830dc7c31, 0xf165ed312bdf5b942297f627abb6c4, 0x004349 ] } , - BigNum { limbs: [ 0x3fcc8fbece3ff36832c0e6cf2383d0, 0xb5ed3c6c5168d7a5b570137a2c4e8f, 0x0030a3 ] } , - BigNum { limbs: [ 0x2898797e96266fef5d157126acd2f6, 0x67acf67fbc21c982897daa0e02a779, 0x00304c ] } , - BigNum { limbs: [ 0x950b898168358f10a2ea8dd9532d0b, 0x3fa6331dc12669b74e8a5f93d55dda, 0x0043a1 ] } , - BigNum { limbs: [ 0x35c67c83d6151f33c480ccbeff31f6, 0xc9bfe369ff49247267f1dfa06d9193, 0x006ab8 ] } , - BigNum { limbs: [ 0x87dd867c2846dfcc3b7f324100ce0b, 0xdd9346337dff0ec770162a016a73c0, 0x000934 ] } , - BigNum { limbs: [ 0xd30f7ac72ab6608eb01a055ce60f76, 0xcd993fe17302769595e1fc927b3dd1, 0x0059ed ] } , - BigNum { limbs: [ 0xea948838d3a59e714fe5f9a319f08b, 0xd9b9e9bc0a45bca442260d0f5cc781, 0x0019ff ] } , - BigNum { limbs: [ 0x7ab95fc3dcb53b0717aa4735b71dde, 0x7ccaf19aadbad4bf2a46e92bbce3fc, 0x005fbd ] } , - BigNum { limbs: [ 0x42eaa33c21a6c3f8e855b7ca48e223, 0x2a883802cf8d5e7aadc120761b2157, 0x001430 ] } , - BigNum { limbs: [ 0xd37d1f179c72580fcdfa1a7fe0f991, 0x5537e61ce0d8f1faceee055ed9ca48, 0x001c0b ] } , - BigNum { limbs: [ 0xea26e3e861e9a6f03205e4801f0670, 0x521b43809c6f413f091a0442fe3b0a, 0x0057e2 ] } , - BigNum { limbs: [ 0x351938a0d16a75c81463f659452f5c, 0xf3ea67e03e845995718a4b0a20bee8, 0x0007c8 ] } , - BigNum { limbs: [ 0x888aca5f2cf18937eb9c08a6bad0a5, 0xb368c1bd3ec3d9a4667dbe97b7466b, 0x006c24 ] } , - BigNum { limbs: [ 0xf35dcbc7525e321519080c36809225, 0x6faa6bed367eb2431601f560a55dfb, 0x002023 ] } , - BigNum { limbs: [ 0xca463738abfdcceae6f7f2c97f6ddc, 0x37a8bdb046c980f6c206144132a757, 0x0053ca ] } , - BigNum { limbs: [ 0x89c1ba44e2270b2c2515a84580e958, 0xb6d19d3684162ca6cff740b60035e4, 0x004796 ] } , - BigNum { limbs: [ 0x33e248bb1c34f3d3daea56ba7f16a9, 0xf0818c66f93206930810c8ebd7cf6f, 0x002c56 ] } , - BigNum { limbs: [ 0xc36fd3d1a988a3c1050fc0e0b3dc5c, 0x5881b8de5b8d70b35d2e4c3f90b58e, 0x00317f ] } , - BigNum { limbs: [ 0xfa342f2e54d35b3efaf03e1f4c23a5, 0x4ed170bf21bac2867ad9bd62474fc4, 0x00426e ] } , - BigNum { limbs: [ 0xcf2f9e33d7c852380d4f370682feaa, 0xd9fe3b29dc1ad914a1bc5e386a2e4b, 0x002efa ] } , - BigNum { limbs: [ 0xee7464cc2693acc7f2b0c7f97d0157, 0xcd54ee73a12d5a25364bab696dd707, 0x0044f2 ] } , - BigNum { limbs: [ 0xb3e8c88110c74911e34917d47d3930, 0x7a598943e6f23f9c04af617e5510ed, 0x0049b2 ] } , - BigNum { limbs: [ 0x09bb3a7eed94b5ee1cb6e72b82c6d1, 0x2cf9a0599655f39dd358a82382f466, 0x002a3b ] } , - BigNum { limbs: [ 0xded28970fe3f7b67b451d3561a8915, 0x5064eeaad10f68b41a63a294abe24b, 0x006a78 ] } , - BigNum { limbs: [ 0xded1798f001c83984bae2ba9e576ec, 0x56ee3af2ac38ca85bda4670d2c2307, 0x000975 ] } , - BigNum { limbs: [ 0x6fdca641f466fd5f4db13b235e0d33, 0x76407d0d4f344503648ad13821a34f, 0x004207 ] } , - BigNum { limbs: [ 0x4dc75cbe09f501a0b24ec3dca1f2ce, 0x3112ac902e13ee36737d3869b66204, 0x0031e6 ] } , - BigNum { limbs: [ 0xa83925afe43f95c84ee1ce740f5439, 0x7115804a277b3b1dee30543009ffa2, 0x0035c4 ] } , - BigNum { limbs: [ 0x156add501a1c6937b11e308bf0abc8, 0x363da95355ccf81be9d7b571ce05b1, 0x003e29 ] } , - BigNum { limbs: [ 0x08977f02defff1329232e07592d6c9, 0x42d5895e520b5e11815cb0df88d45d, 0x004e40 ] } , - BigNum { limbs: [ 0xb50c83fd1f5c0dcd6dcd1e8a6d2938, 0x647da03f2b3cd52856ab58c24f30f6, 0x0025ad ] } , - BigNum { limbs: [ 0x166f8907aa9a1372eb4b1113ad8991, 0x3984fb3eb6e52894b5c6bd1d6a61d9, 0x005f9d ] } , - BigNum { limbs: [ 0xa73479f853c1eb8d14b4edec527670, 0x6dce2e5ec6630aa522414c846da37a, 0x001450 ] } , - BigNum { limbs: [ 0xec4673f68766a0f90711a0688869b4, 0x1168d4ece0379aba89db27ea447c91, 0x0032b0 ] } , - BigNum { limbs: [ 0xd15d8f0976f55e06f8ee5e9777964d, 0x95ea54b09d10987f4e2ce1b79388c1, 0x00413d ] } , - BigNum { limbs: [ 0x06f42869c68f47775c2b41e719925b, 0x55d1101d10655a75faeb3de022db67, 0x001e6c ] } , - BigNum { limbs: [ 0xb6afda9637ccb788a3d4bd18e66da6, 0x518219806ce2d8c3dd1ccbc1b529ec, 0x005581 ] } , - BigNum { limbs: [ 0x2488de55d880f0bf79e47c93531782, 0x486b8cf439dcc719e80ced806894ad, 0x0002a4 ] } , - BigNum { limbs: [ 0x991b24aa25db0e40861b826cace87f, 0x5ee79ca9436b6c1feffb1c216f70a6, 0x007149 ] } , - BigNum { limbs: [ 0xc21324ae9c8854f1b061a497ab7c95, 0x30227edece212b662b588e2fa371d7, 0x006f9a ] } , - BigNum { limbs: [ 0xfb90de5161d3aa0e4f9e5a6854836c, 0x7730aabeaf2707d3acaf7b7234937b, 0x000453 ] } , - BigNum { limbs: [ 0x6c572e1fbbe93ef71d04ee71ed1dd7, 0x26719610acab98fef2c58c13bf39ff, 0x006407 ] } , - BigNum { limbs: [ 0x514cd4e04272c008e2fb108e12e22a, 0x80e1938cd09c9a3ae5427d8e18cb54, 0x000fe6 ] } , - BigNum { limbs: [ 0x1041c70cbe30298569cb4ca9c83deb, 0x62b6bf35c35a9fa1c4913fd4c3f13b, 0x003b84 ] } , - BigNum { limbs: [ 0xad623bf3402bd57a9634b25637c216, 0x449c6a67b9ed93981376c9cd141418, 0x003869 ] } , - BigNum { limbs: [ 0xfac45adceaaeb5c5c1e5845d9ff884, 0xea707f87574f8683a888f21e5ddfdb, 0x0057c7 ] } , - BigNum { limbs: [ 0xc2dfa82313ad493a3e1a7aa260077d, 0xbce2aa1625f8acb62f7f17837a2577, 0x001c25 ] } , - BigNum { limbs: [ 0x9fef9dfe936f0e61908bf6b3717a5b, 0xb375cdaee22376104c3c6e5bd5ab3b, 0x00072e ] } , - BigNum { limbs: [ 0x1db465016aecf09e6f74084c8e85a6, 0xf3dd5bee9b24bd298bcb9b46025a18, 0x006cbe ] } , - BigNum { limbs: [ 0xb5e9c0a4e50cc317973cd4a46b0b1c, 0x8043147cb895521ca47450d1ce5b27, 0x006533 ] } , - BigNum { limbs: [ 0x07ba425b194f3be868c32a5b94f4e5, 0x27101520c4b2e11d3393b8d009aa2c, 0x000eba ] } , - BigNum { limbs: [ 0xd7b547d39c9c379277871836d3e69d, 0x68af303179073aad02c9bcb3aa9bc5, 0x002371 ] } , - BigNum { limbs: [ 0xe5eebb2c61bfc76d8878e6c92c1964, 0x3ea3f96c0440f88cd53e4cee2d698d, 0x00507c ] } , - BigNum { limbs: [ 0xf2b4d4e4c6bf419a0de099de4a001e, 0xee242df09127ad427b37d05359f0bf, 0x0027dc ] } , - BigNum { limbs: [ 0xcaef2e1b379cbd65f21f6521b5ffe3, 0xb92efbacec2085f75cd0394e7e1493, 0x004c10 ] } , - BigNum { limbs: [ 0x63132a6fcf2710d0000452d166f4cf, 0x216fe03353ad190e8d5ae4ca948c28, 0x00311f ] } , - BigNum { limbs: [ 0x5a90d8902f34ee2ffffbac2e990b32, 0x85e3496a299b1a2b4aad24d743792b, 0x0042ce ] } , - BigNum { limbs: [ 0x07ef8748d88e55812b41fc642b8224, 0x39476f18f51e508abc80e905cbfffd, 0x00013e ] } , - BigNum { limbs: [ 0xb5b47bb725cda97ed4be029bd47ddd, 0x6e0bba848829e2af1b87209c0c0556, 0x0072af ] } , - BigNum { limbs: [ 0x91f42dbb5cc25b01dec31b0bf3d060, 0xa585369dfba981c5208f0b13ae1132, 0x005e62 ] } , - BigNum { limbs: [ 0x2bafd544a199a3fe213ce3f40c2fa1, 0x01cdf2ff819eb174b778fe8e29f421, 0x00158b ] } , - BigNum { limbs: [ 0xd5aa9c89d5f0b73bcc501a2ef94bc4, 0x7645da9c7e681bdd356e72f2ad0704, 0x00289b ] } , - BigNum { limbs: [ 0xe7f96676286b47c433afe4d106b43d, 0x310d4f00fee0175ca29996af2afe4e, 0x004b52 ] } , - BigNum { limbs: [ 0xf377b32eebd2323607f6f416ef9552, 0x34f0f60b55fda7fec39544f7105246, 0x001b7e ] } , - BigNum { limbs: [ 0xca2c4fd11289ccc9f8090ae9106aaf, 0x72623392274a8b3b1472c4aac7b30c, 0x00586f ] } , - BigNum { limbs: [ 0xdfd8c851eca70857ca96242932be18, 0x04b24592689af879551c06397f3f00, 0x003122 ] } , - BigNum { limbs: [ 0xddcb3aae11b4f6a83569dad6cd41e9, 0xa2a0e40b14ad3ac082ec036858c652, 0x0042cb ] } , - BigNum { limbs: [ 0x177017d42c09460cc72eeaa440f42c, 0x2356f048ddd06e8428699bb2b8ab25, 0x000a9a ] } , - BigNum { limbs: [ 0xa633eb2bd252b8f338d1145bbf0bd5, 0x83fc39549f77c4b5af9e6def1f5a2e, 0x006953 ] } , - BigNum { limbs: [ 0xf00cd2e494cecbdda94ada27476176, 0x3204c03686ad02c82b1432217da911, 0x002492 ] } , - BigNum { limbs: [ 0xcd97301b698d332256b524d8b89e8b, 0x754e6966f69b3071acf3d7805a5c41, 0x004f5b ] } , - BigNum { limbs: [ 0x37aa6ae97bd23480dbdcc5d5251a48, 0xcfaa561c560c1810d5f48266f68f7c, 0x002415 ] } , - BigNum { limbs: [ 0x85f998168289ca7f2423392adae5b9, 0xd7a8d381273c1b290213873ae175d7, 0x004fd7 ] } , - BigNum { limbs: [ 0x7787cf3e5d6b47a741f874994f9b60, 0xc5b136d10cc056d2e35000ae73a0e8, 0x003bf8 ] } , - BigNum { limbs: [ 0x461c33c1a0f0b758be078a66b064a1, 0xe1a1f2cc7087dc66f4b808f364646b, 0x0037f4 ] } , - BigNum { limbs: [ 0xad6fb7de7ffa41fcb01abe0c7a5ed8, 0x360968a38d8820954020e70cd9f838, 0x00729c ] } , - BigNum { limbs: [ 0x10344b217e61bd034fe540f385a129, 0x7149c0f9efc012a497e72294fe0d1b, 0x000151 ] } , - BigNum { limbs: [ 0x1391282fc53b477f3ef0dd8ef1346a, 0x7b4a7e90340b7cfa11d904bc2a55cc, 0x003b38 ] } , - BigNum { limbs: [ 0xaa12dad03920b780c10f21710ecb97, 0x2c08ab0d493cb63fc62f04e5adaf87, 0x0038b5 ] } , - BigNum { limbs: [ 0xf42ba4b4e445e5ac5acac9f2b7cfe8, 0x4453cda4aac637f2ace42e0ce3d7c4, 0x0031e2 ] } , - BigNum { limbs: [ 0xc9785e4b1a161953a535350d483019, 0x62ff5bf8d281fb472b23db94f42d8e, 0x00420b ] } , - BigNum { limbs: [ 0xc4883a0144aaec7f70afa2ba34fea5, 0x15d5640ee38825d87fc45df9199d6c, 0x00634f ] } , - BigNum { limbs: [ 0xf91bc8feb9b112808f505c45cb015c, 0x917dc58e99c00d615843aba8be67e6, 0x00109e ] } , - BigNum { limbs: [ 0x1cf13a5b569fd0965a151b1f5c8b8c, 0x35137a1a2b37c02d62a0000c2de544, 0x000438 ] } , - BigNum { limbs: [ 0xa0b2c8a4a7bc2e69a5eae3e0a37475, 0x723faf835210730c75680995aa200f, 0x006fb5 ] } , - BigNum { limbs: [ 0x60aa14a95d88c0cafbd8da3a4bc946, 0xe6646ceb88d104457700da5d79946c, 0x006bde ] } , - BigNum { limbs: [ 0x5cf9ee56a0d33e35042724c5b436bb, 0xc0eebcb1f4772ef461072f445e70e7, 0x00080e ] } , - BigNum { limbs: [ 0xd8b4b5ac8b89b5d17e3126dde06077, 0x8855f1a58567bca23f48cf4c846d45, 0x001336 ] } , - BigNum { limbs: [ 0xe4ef4d5372d2492e81ced8221f9f8a, 0x1efd37f7f7e0769798bf3a5553980d, 0x0060b7 ] } , - BigNum { limbs: [ 0xf77ed540e329966d0b264bddf7d934, 0xa8a7bcf71c010de2d3ea75ccc08c10, 0x00603b ] } , - BigNum { limbs: [ 0xc6252dbf1b326892f4d9b3220826cd, 0xfeab6ca661472557041d93d5177942, 0x0013b1 ] } , - BigNum { limbs: [ 0x221ee5f78bdebc96787ac75f654db0, 0xc4a11a69f85c1f8e4378ddc113cfc6, 0x002086 ] } , - BigNum { limbs: [ 0x9b851d08727d4269878537a09ab251, 0xe2b20f3384ec13ab948f2be0c4358d, 0x005366 ] } , - BigNum { limbs: [ 0x25a997aaca374219e45e4f9dfdca67, 0x44da1cfeb7d79eb5f92f98205af5ff, 0x004c1e ] } , - BigNum { limbs: [ 0x97fa6b553424bce61ba1af6202359a, 0x62790c9ec5709483ded871817d0f54, 0x0027cf ] } , - BigNum { limbs: [ 0xf77ae21933b2060dd6d4871396bb4a, 0x8f7020cc353bad3bfd33acfd410946, 0x000611 ] } , - BigNum { limbs: [ 0xc62920e6caa9f8f2292b77ec6944b7, 0x17e308d1480c85fddad45ca496fc0c, 0x006ddc ] } , - BigNum { limbs: [ 0xf13f6f0050f68fae151ccd2ba1ba9a, 0x12da86cd6a145c90afb69d358eda60, 0x002b3a ] } , - BigNum { limbs: [ 0xcc6493ffad656f51eae331d45e4567, 0x9478a2d01333d6a928516c6c492af2, 0x0048b3 ] } , - BigNum { limbs: [ 0x18ea5b264a0c8199f6ecb2702fa8ed, 0xb7dfed7cf378c801dbdaddd33dbb5d, 0x0010e8 ] } , - BigNum { limbs: [ 0xa4b9a7d9b44f7d6609134c8fd05714, 0xef733c2089cf6b37fc2d2bce9a49f6, 0x006304 ] } , - BigNum { limbs: [ 0xbc7b88571bcd10663deb92bbb1ae67, 0xfccdfca6dfaf9a4cd88846c18c9da8, 0x004e02 ] } , - BigNum { limbs: [ 0x01287aa8e28eee99c2146c444e519a, 0xaa852cf69d9898ecff7fc2e04b67ab, 0x0025ea ] } , - BigNum { limbs: [ 0x519ed9a49ea7e247294b1210663619, 0x35b28cf61ea9643893877eabc6d688, 0x005c6a ] } , - BigNum { limbs: [ 0x6c05295b5fb41cb8d6b4ecef99c9e8, 0x71a09ca75e9ecf0144808af6112ecb, 0x001783 ] } , - BigNum { limbs: [ 0xaff8b6b5d3f851dc961078b87e26a3, 0x77d6c985d3f89837fdb1e203222b6e, 0x00371c ] } , - BigNum { limbs: [ 0x0dab4c4a2a63ad2369ef864781d95e, 0x2f7c6017a94f9b01da56279eb5d9e5, 0x003cd1 ] } , - BigNum { limbs: [ 0xc1e4fd9fa039fa6f77f78f1cba3068, 0x0df054fee4500e9168f751be38dd09, 0x002a98 ] } , - BigNum { limbs: [ 0xfbbf05605e22049088086fe345cf99, 0x9962d49e98f824a86f10b7e39f2849, 0x004955 ] } , - BigNum { limbs: [ 0x4efba467a5dfb4ecf97bf5437d1dbd, 0x3367add1d7d5a992634881173e95b7, 0x002126 ] } , - BigNum { limbs: [ 0x6ea85e98587c4a13068409bc82e244, 0x73eb7bcba57289a774bf888a996f9c, 0x0052c7 ] } , - BigNum { limbs: [ 0xa801a6a95c0ae810b99e2f97e53771, 0x952f93d73f865b294de8c6ce81f12a, 0x007296 ] } , - BigNum { limbs: [ 0x15a25c56a25116ef4661cf681ac890, 0x122395c63dc1d8108a1f42d3561429, 0x000157 ] } , - BigNum { limbs: [ 0xc31e426e03a26b0d2959e2d9b445f0, 0xdd74ef3f91de66a2cc3216bb0fefae, 0x001f83 ] } , - BigNum { limbs: [ 0xfa85c091fab993f2d6a61c264bba11, 0xc9de3a5deb69cc970bd5f2e6c815a4, 0x005469 ] } , - BigNum { limbs: [ 0x20ac0b6a6e14b1a6b831f42ce6323a, 0xbe10cb647d7bba84324ecc607ef608, 0x001f13 ] } , - BigNum { limbs: [ 0x9cf7f79590474d5947ce0ad319cdc7, 0xe9425e38ffcc78b5a5b93d41590f4b, 0x0054d9 ] } , - BigNum { limbs: [ 0xb80aff1fac13961aa49f7df5807886, 0xc0782b929fa6e15b02c1741e6d294e, 0x000802 ] } , - BigNum { limbs: [ 0x059903e0524868e55b60810a7f877b, 0xe6dafe0adda151ded54695836adc05, 0x006bea ] } , - BigNum { limbs: [ 0xd78c7b658b836b4992ec1ff47af2a0, 0x9265acec05d67d9c20e3f05e4ae055, 0x0045e6 ] } , - BigNum { limbs: [ 0xe617879a72d893b66d13df0b850d61, 0x14ed7cb17771b59db72419438d24fd, 0x002e07 ] } , - BigNum { limbs: [ 0xd921b3453863175de53bb10cb88f8b, 0x61de46594e66fc8b1ce472e488fb7d, 0x00113a ] } , - BigNum { limbs: [ 0xe4824fbac5f8e7a21ac44df3477076, 0x4574e3442ee136aebb2396bd4f09d5, 0x0062b3 ] } , - BigNum { limbs: [ 0x04b714e680c10e1c8ed47580774b30, 0xa68ece476bce74f198804177440f14, 0x0059d7 ] } , - BigNum { limbs: [ 0xb8ecee197d9af0e3712b897f88b4d1, 0x00c45b561179be483f87c82a93f63f, 0x001a16 ] } , - BigNum { limbs: [ 0x28b47e1946a2695efbe06a77097253, 0x78912d3c448b114306945f9d682089, 0x004d27 ] } , - BigNum { limbs: [ 0x94ef84e6b7b995a1041f9488f68dae, 0x2ec1fc6138bd21f6d173aa046fe4ca, 0x0026c6 ] } , - BigNum { limbs: [ 0x504d612ff7a5c7d053b226d1aa16bc, 0x223aaea217a46abd8439ca2761aeb8, 0x0032c4 ] } , - BigNum { limbs: [ 0x6d56a1d006b6372fac4dd82e55e945, 0x85187afb65a3c87c53ce3f7a76569b, 0x004129 ] } , - BigNum { limbs: [ 0x59b4bd52b553180e8d06cc8d51063b, 0x01bfea0019b20b7ced4c5fe09c39b9, 0x006238 ] } , - BigNum { limbs: [ 0x63ef45ad4908e6f172f93272aef9c6, 0xa5933f9d639627bceabba9c13bcb9a, 0x0011b5 ] } , - BigNum { limbs: [ 0x7a46bd207c5fadc1db30762d92eb44, 0x58d048f8a8828ccd93a209c0789971, 0x00115e ] } , - BigNum { limbs: [ 0x435d45df81fc513e24cf88d26d14bd, 0x4e82e0a4d4c5a66c4465ffe15f6be2, 0x00628f ] } , - BigNum { limbs: [ 0x664e8cd12d7fd0e025fbee3b1b298d, 0x5e547bd4a434e9474eda1e916f112f, 0x004dee ] } , - BigNum { limbs: [ 0x5755762ed0dc2e1fda0410c4e4d674, 0x48feadc8d91349f2892deb1068f424, 0x0025ff ] } , - BigNum { limbs: [ 0x2639fea8800bbab43a1ee604bda4cc, 0xbf020593b9c2bbc625eb854d072e8c, 0x006179 ] } , - BigNum { limbs: [ 0x976a04577e50444bc5e118fb425b35, 0xe8512409c3857773b21c8454d0d6c7, 0x001273 ] } , - BigNum { limbs: [ 0x6deda5d7670c976dfe7153dfa53c20, 0x1a2cd56342e73b2559407ab5c9362f, 0x000647 ] } , - BigNum { limbs: [ 0x4fb65d28974f6792018eab205ac3e1, 0x8d26543a3a60f8147ec78eec0ecf24, 0x006da6 ] } , - BigNum { limbs: [ 0x24a5979784783cda5d6ff9c897772a, 0xa4c51da8134b170eb54379e26f5726, 0x006532 ] } , - BigNum { limbs: [ 0x98fe6b6879e3c225a29005376888d7, 0x028e0bf569fd1c2b22c48fbf68ae2d, 0x000ebb ] } , - BigNum { limbs: [ 0x615ae56a038c1cc6c4ab71bdfb5ae2, 0xe3444ad2ae705509bb0f713594efee, 0x00532c ] } , - BigNum { limbs: [ 0x5c491d95facfe2393b548d4204a51f, 0xc40edecaced7de301cf8986c431565, 0x0020c0 ] } , - BigNum { limbs: [ 0x1090665023b48c2919e9353ebde363, 0x9d160b348537dbb6d130e5efc54014, 0x003f62 ] } , - BigNum { limbs: [ 0xad139cafdaa772d6e616c9c1421c9e, 0x0a3d1e68f810578306d723b212c53f, 0x00348b ] } , - BigNum { limbs: [ 0x4d998925d39838f7a08952a7c08661, 0x93476572756dc7a40723fe19230652, 0x004554 ] } , - BigNum { limbs: [ 0x700a79da2ac3c6085f76ac583f79a0, 0x140bc42b07da6b95d0e40b88b4ff01, 0x002e99 ] } , - BigNum { limbs: [ 0x3c2282be8ad00d17b806bbc8890150, 0x989680fa13428d830f2a25062a8504, 0x004ae3 ] } , - BigNum { limbs: [ 0x81818041738bf1e847f9433776feb1, 0x0ebca8a36a05a5b6c8dde49bad804f, 0x00290a ] } , - BigNum { limbs: [ 0x8d0589f19955b0cdcf950bbf3e24d4, 0x3eebc4f6e3d55aba27a407c48b5d4e, 0x00681d ] } , - BigNum { limbs: [ 0x309e790e65064e32306af340c1db2d, 0x686764a69972d87fb06401dd4ca805, 0x000bd0 ] } , - BigNum { limbs: [ 0xdf48b03058eda0068fd2fc3194cf80, 0xc965e63b8f8510a6232e009a5dd37f, 0x006057 ] } , - BigNum { limbs: [ 0xde5b52cfa56e5ef9702d02ce6b3081, 0xdded4361edc32293b4da09077a31d3, 0x001395 ] } , - BigNum { limbs: [ 0x8329c8cf1cf713076e7b2f38dd4262, 0x96482f60912963e6ccdbc96d7906ae, 0x0067de ] } , - BigNum { limbs: [ 0x3a7a3a30e164ebf89184cfc722bd9f, 0x110afa3cec1ecf530b2c40345efea5, 0x000c0f ] } , - BigNum { limbs: [ 0x3adc58d0ad958d7367066af7a885da, 0x4d99b2ba5456b0cefa0837797a506e, 0x005394 ] } , - BigNum { limbs: [ 0x82c7aa2f50c6718c98f99408577a27, 0x59b976e328f1826addffd2285db4e5, 0x002059 ] } , - BigNum { limbs: [ 0x2dcc1406da0f4c6704b9c8bb9bf61e, 0xa58b3a749bc62c8e657fe47ea551f3, 0x002c6a ] } , - BigNum { limbs: [ 0x8fd7eef9244cb298fb4636446409e3, 0x01c7ef28e18206ab7288252332b360, 0x004783 ] } , - BigNum { limbs: [ 0x8af5341425fbd83b0140f36e397f94, 0x01f2957118af6a295bf1d42da0837f, 0x006146 ] } , - BigNum { limbs: [ 0x32aeceebd86026c4febf0b91c6806d, 0xa560942c6498c9107c1635743781d4, 0x0012a7 ] } , - BigNum { limbs: [ 0xa024d738a27752e498f42f30e07b67, 0x56b426fc6fed01cf6826f82b270bab, 0x0037bd ] } , - BigNum { limbs: [ 0x1d7f2bc75be4ac1b670bcfcf1f849a, 0x509f02a10d5b316a6fe11176b0f9a8, 0x003c30 ] } , - BigNum { limbs: [ 0x0dfad0e4ff4435ffb3a1ed146afa08, 0x9f5d5ebbdbb32af466405e2b412092, 0x004554 ] } , - BigNum { limbs: [ 0xafa9321aff17c9004c5e11eb9505f9, 0x07f5cae1a195084571c7ab7696e4c1, 0x002e99 ] } , - BigNum { limbs: [ 0x9476ded7c39504ed6111bf67947bac, 0xa18ebc3f4354adddcaedf9ec551f49, 0x003b9b ] } , - BigNum { limbs: [ 0x292d24283ac6fa129eee3f986b8455, 0x05c46d5e39f3855c0d1a0fb582e60a, 0x003852 ] } , - BigNum { limbs: [ 0xbe36fec0ea82f1187e5a4951c7d7aa, 0xe55fe37b82da99175032107fc9d59b, 0x003742 ] } , - BigNum { limbs: [ 0xff6d043f13d90de781a5b5ae382857, 0xc1f34621fa6d9a2287d5f9220e2fb7, 0x003caa ] } , - BigNum { limbs: [ 0x86ff35293930089215d24e851304d5, 0xf6dcc395132656b4ca29edfdb75bdb, 0x006bcd ] } , - BigNum { limbs: [ 0x36a4cdd6c52bf66dea2db07aecfb2c, 0xb07666086a21dc850dde1ba420a978, 0x00081f ] } , - BigNum { limbs: [ 0xedab698f1611cf2bca8922099fe097, 0x115590c2b33244f1da034d30a5f1d4, 0x00531d ] } , - BigNum { limbs: [ 0xcff89970e84a2fd43576dcf6601f6a, 0x95fd98daca15ee47fe04bc7132137e, 0x0020d0 ] } , - BigNum { limbs: [ 0x71aef23081df72618978fa0fb1d481, 0x7a37b3fb7d8202a510a6edc4c569d1, 0x004ec6 ] } , - BigNum { limbs: [ 0x4bf510cf7c7c8c9e768704f04e2b80, 0x2d1b75a1ffc63094c7611bdd129b82, 0x002527 ] } , - BigNum { limbs: [ 0xf63d287e12fcc4ef3457325ecd5b52, 0x0ebd4f47ddcc671a405c3af1f4748f, 0x0048fe ] } , - BigNum { limbs: [ 0xc766da81eb5f3a10cba8cca132a4af, 0x9895da559f7bcc1f97abceafe390c3, 0x002aef ] } , - BigNum { limbs: [ 0x45d705f19567a17e3c52e0ca097561, 0xa32e8f753bf6e6abe067578ca59383, 0x0001d9 ] } , - BigNum { limbs: [ 0x77ccfd0e68f45d81c3ad1e35f68aa0, 0x04249a2841514c8df7a0b2153271d0, 0x007214 ] } , - BigNum { limbs: [ 0xd978ce79991986ced3257771015feb, 0x3d9e5e50884d374ca8041a159d8414, 0x005726 ] } , - BigNum { limbs: [ 0xe42b3486654278312cda878efea016, 0x69b4cb4cf4fafbed3003ef8c3a813e, 0x001cc7 ] } , - BigNum { limbs: [ 0xe19b48772cdb25ce772be5d43047b4, 0x0077e02f21b0bfe5620485ff6e59e4, 0x0055e8 ] } , - BigNum { limbs: [ 0xdc08ba88d180d93188d4192bcfb84d, 0xa6db496e5b977354760383a269ab6e, 0x001e05 ] } , - BigNum { limbs: [ 0x278c5867ae0c4220a86f6315f5d25d, 0x54e0c96f8eacc0cfb4f62bf35360b9, 0x001daa ] } , - BigNum { limbs: [ 0x9617aa98504fbcdf57909bea0a2da4, 0x5272602dee9b726a2311ddae84a49a, 0x005643 ] } , - BigNum { limbs: [ 0x49039008a03d4f394851b24166e722, 0x9ab12f80da79b768a7c4d36af60e3a, 0x003a8a ] } , - BigNum { limbs: [ 0x74a072f75e1eafc6b7ae4cbe9918df, 0x0ca1fa1ca2ce7bd130433636e1f719, 0x003963 ] } , - BigNum { limbs: [ 0xaf5ebe48a9443d98ee7999f64fee83, 0x18f1ea8d09353bdaa2a9548038b82a, 0x001b8d ] } , - BigNum { limbs: [ 0x0e4544b75517c16711866509b0117e, 0x8e613f107412f75f355eb5219f4d29, 0x005860 ] } , - BigNum { limbs: [ 0x5280a0391b3b940ccf38acc802cd7a, 0xd7b56ab20336f5f6abefaaf303ee30, 0x003ad4 ] } , - BigNum { limbs: [ 0x6b2362c6e3206af330c75237fd3287, 0xcf9dbeeb7a113d432c185eaed41723, 0x003918 ] } , - BigNum { limbs: [ 0xbf42c13a8fd48ea2e5b21ace4eb6ff, 0xf05b902a8aceefcf46feb733e8eb96, 0x006ddb ] } , - BigNum { limbs: [ 0xfe6141c56e87705d1a4de431b14902, 0xb6f79972f279436a9109526def19bc, 0x000611 ] } , - BigNum { limbs: [ 0x46893ee126085ca87f4400fc13aa2c, 0x01ef53e860c727a5aeeca3c44f4cfe, 0x0067f7 ] } , - BigNum { limbs: [ 0x771ac41ed853a25780bbfe03ec55d5, 0xa563d5b51c810b94291b65dd88b855, 0x000bf6 ] } , - BigNum { limbs: [ 0x7eb0daa5eb77a23795f13f98d06ac8, 0x33b13326a536d5fb78c46ac7a98aa1, 0x0058c6 ] } , - BigNum { limbs: [ 0x3ef3285a12e45cc86a0ebf672f9539, 0x73a1f676d8115d3e5f439eda2e7ab2, 0x001b27 ] } , - BigNum { limbs: [ 0xb6184e5cb935bcff4a91d5a37814d0, 0x1a2f6b1937a2cbe141e40ba93b8907, 0x00478a ] } , - BigNum { limbs: [ 0x078bb4a345264200b56e295c87eb31, 0x8d23be8445a567589623fdf89c7c4c, 0x002c63 ] } , - BigNum { limbs: [ 0xf97b0a5d9916e64ade99baf2064979, 0x69c94958b0dbb1a80ba834b6917e21, 0x004529 ] } , - BigNum { limbs: [ 0xc428f8a2654518b52166440df9b688, 0x3d89e044cc6c8191cc5fd4eb468731, 0x002ec4 ] } , - BigNum { limbs: [ 0x883a00bd39c06f4cded2085f1d249d, 0x664a248714e180f7a16441b8a5071c, 0x00270f ] } , - BigNum { limbs: [ 0x356a0242c49b8fb3212df6a0e2db64, 0x410905166866b24236a3c7e932fe37, 0x004cde ] } , - BigNum { limbs: [ 0x731128adcb310e4d90e093e647fd5f, 0x171777c1e39865d7778c9c727d8a66, 0x001508 ] } , - BigNum { limbs: [ 0x4a92da52332af0b26f1f6b19b802a2, 0x903bb1db99afcd62607b6d2f5a7aed, 0x005ee5 ] } , - BigNum { limbs: [ 0x88f1a1209932d061409bbb445f0d14, 0x8d96135bfbf040ecf1209ccf07b9d5, 0x001339 ] } , - BigNum { limbs: [ 0x34b261df65292e9ebf6443bba0f2ed, 0x19bd16418157f24ce6e76cd2d04b7e, 0x0060b4 ] } , - BigNum { limbs: [ 0x874f129eedc438495d73dfe6eb3e00, 0x4493dce84e5429ba09cef3db435f8e, 0x0025bd ] } , - BigNum { limbs: [ 0x3654f0611097c6b6a28c1f1914c201, 0x62bf4cb52ef4097fce3915c694a5c5, 0x004e30 ] } , - BigNum { limbs: [ 0x1d50eee0811e8206f9a183352303e8, 0xf0fd58b73fee4bec2b787a3d54e5c7, 0x00080b ] } , - BigNum { limbs: [ 0xa053141f7d3d7cf9065e7bcadcfc19, 0xb655d0e63d59e74dac8f8f64831f8c, 0x006be1 ] } , - BigNum { limbs: [ 0xab92aedf8495c4fb4a85c673193da0, 0x2ba6ca0cdbbc7faa59844c34278d53, 0x000a4f ] } , - BigNum { limbs: [ 0x1211542079c63a04b57a388ce6c261, 0x7bac5f90a18bb38f7e83bd6db07800, 0x00699e ] } , - BigNum { limbs: [ 0xaec33cb072e13d00845dfcb5c84846, 0x136ec0225fab5275a6512e89d0955a, 0x006bb9 ] } , - BigNum { limbs: [ 0x0ee0c64f8b7ac1ff7ba2024a37b7bb, 0x93e4697b1d9ce0c431b6db18076ff9, 0x000834 ] } , - BigNum { limbs: [ 0xbba9eadb95a182a6a1bba441bbd237, 0x1fc1e4cc8075367070ffd15db1bd70, 0x002205 ] } , - BigNum { limbs: [ 0x01fa182468ba7c595e445abe442dca, 0x879144d0fcd2fcc9670838442647e3, 0x0051e8 ] } , - BigNum { limbs: [ 0x22a6bce7387a427f50330cd59075af, 0x92127d5382417773114e5fa5467a58, 0x0022ec ] } , - BigNum { limbs: [ 0x9afd4618c5e1bc80afccf22a6f8a52, 0x1540ac49fb06bbc6c6b9a9fc918afb, 0x005101 ] } , - BigNum { limbs: [ 0x9ebedd4e11f42d3a36a7edca585499, 0x7668fb81393aa8160612bcc2b856d8, 0x003f4f ] } , - BigNum { limbs: [ 0x1ee525b1ec67d1c5c9581135a7ab68, 0x30ea2e1c440d8b23d1f54cdf1fae7b, 0x00349e ] } , - BigNum { limbs: [ 0x0f793a1eac2c49dab684ead675638b, 0x7d971682f3e80356b9fc2f9ded09b8, 0x00152f ] } , - BigNum { limbs: [ 0xae2ac8e1522fb525497b14298a9c76, 0x29bc131a89602fe31e0bda03eafb9b, 0x005ebe ] } , - BigNum { limbs: [ 0x627492d5ba88838547253c80c1dab5, 0x647de281bb01d0d6b2a531d9cdb1ea, 0x000f44 ] } , - BigNum { limbs: [ 0x5b2f702a43d37b7ab8dac27f3e254c, 0x42d5471bc24662632562d7c80a5369, 0x0064a9 ] } , - BigNum { limbs: [ 0x45dae47e7d0c73a7110714fe4cdddc, 0xeb840d77404c05f16dd2f56f6616d6, 0x003549 ] } , - BigNum { limbs: [ 0x77c91e81814f8b58eef8ea01b32225, 0xbbcf1c263cfc2d486a35143271ee7d, 0x003ea3 ] } , - BigNum { limbs: [ 0x3f702db9fc8191c76df718ca968656, 0xe6b789f89d961ab843df419c6ae81a, 0x004b2b ] } , - BigNum { limbs: [ 0x7e33d54601da6d389208e6356979ab, 0xc09b9fa4dfb218819428c8056d1d39, 0x0028c1 ] } , - BigNum { limbs: [ 0x1813abc939ed5a3ab8a4ed61ca9d9c, 0xd6ba2d8dfb407c3ee72732525df52e, 0x000ae1 ] } , - BigNum { limbs: [ 0xa5905736c46ea4c5475b119e356265, 0xd098fc0f8207b6faf0e0d74f7a1025, 0x00690b ] } , - BigNum { limbs: [ 0xfa31f6840cbcf2bd55779ad6aecbde, 0xb8084da0a6aabb41e1e22ed63a2a17, 0x002e01 ] } , - BigNum { limbs: [ 0xc3720c7bf19f0c42aa886429513423, 0xef4adbfcd69d77f7f625dacb9ddb3b, 0x0045eb ] } , - BigNum { limbs: [ 0xebeae1d4989cddb16de9be3b85f5bc, 0xd0fddad8819aac539e1c1739e2cc75, 0x004c5d ] } , - BigNum { limbs: [ 0xd1b9212b65bf214e921640c47a0a45, 0xd6554ec4fbad86e639ebf267f538dd, 0x00278f ] } , - BigNum { limbs: [ 0xb1723eb5371609d83aecffdd17a3c7, 0x790650286522b100e6012755cce928, 0x004731 ] } , - BigNum { limbs: [ 0x0c31c44ac745f527c512ff22e85c3a, 0x2e4cd97518258238f206e24c0b1c2b, 0x002cbc ] } , - BigNum { limbs: [ 0x241adc7bd53b9de82aeff61b850539, 0x7af8ef4de0dd47ce5e049d3c5a6141, 0x005b97 ] } , - BigNum { limbs: [ 0x9989268429206117d51008e47afac8, 0x2c5a3a4f9c6aeb6b7a036c657da412, 0x001856 ] } , - BigNum { limbs: [ 0x8188035b75adb26e562662a9e24b0e, 0x4959d084d53f5f9544f5b2b096c774, 0x00528b ] } , - BigNum { limbs: [ 0x3c1bffa488ae4c91a9d99c561db4f3, 0x5df95918a808d3a4931256f1413ddf, 0x002162 ] } , - BigNum { limbs: [ 0xc24cfde9487630036910f638970846, 0x872f04f2c6274d1290aece64d5ae75, 0x00290d ] } , - BigNum { limbs: [ 0xfb570516b5e5cefc96ef08c768f7bb, 0x202424aab720e62747593b3d0256dd, 0x004ae0 ] } , - BigNum { limbs: [ 0x505c876a9362b9a8e259709c58389a, 0xfe529ee7f0f56fc6370fc12fce99ad, 0x0014ff ] } , - BigNum { limbs: [ 0x6d477b956af945571da68e63a7c767, 0xa9008ab58c52c373a0f84872096ba6, 0x005eed ] } , - BigNum { limbs: [ 0xf7c6d816161edcc296d7e41e5066ac, 0x71afe1ba97a05d7a75e99cc5b80d1b, 0x000d60 ] } , - BigNum { limbs: [ 0xc5dd2ae9e83d223d69281ae1af9955, 0x35a347e2e5a7d5bf621e6cdc1ff837, 0x00668d ] } , - BigNum { limbs: [ 0x03a0deb96ed5add78c97892bc70d2b, 0x341b1ac3600c902747ac97a6b6d7fc, 0x00563f ] } , - BigNum { limbs: [ 0xba0324468f865128736875d438f2d6, 0x73380eda1d3ba312905b71fb212d57, 0x001dae ] } , - BigNum { limbs: [ 0x5f7198849146ab02ae844dda17855b, 0xe9a7a223eb9806f37e041105506dd6, 0x0067ac ] } , - BigNum { limbs: [ 0x5e326a7b6d1553fd517bb125e87aa6, 0xbdab877991b02c465a03f89c87977d, 0x000c40 ] } , - BigNum { limbs: [ 0x625c588037591fbf85cfc978a502b8, 0xfdf1576cf3b50feb980510003e5f90, 0x0024ec ] } , - BigNum { limbs: [ 0x5b47aa7fc702df407a3035875afd49, 0xa961d2308993234e4002f9a199a5c3, 0x004f00 ] } , - BigNum { limbs: [ 0xc2063c6c2e9e332928499e0bd1420a, 0xbea5fdee237254ef13c540a20eabb6, 0x0032db ] } , - BigNum { limbs: [ 0xfb9dc693cfbdcbd6d7b660f42ebdf7, 0xe8ad2baf59d5de4ac442c8ffc9599c, 0x004111 ] } , - BigNum { limbs: [ 0xa8cce3c2ecfeb6f4ef6dcfa67c4d19, 0x268e04e0793990c483113bfefa8410, 0x002d2e ] } , - BigNum { limbs: [ 0x14d71f3d115d480b10922f5983b2e8, 0x80c524bd040ea27554f6cda2dd8143, 0x0046bf ] } , - BigNum { limbs: [ 0x335735a56e5e505b8631f4208c82d5, 0x7f336029f1dd63cf9b69cbc19bb9b4, 0x001c39 ] } , - BigNum { limbs: [ 0x8a4ccd5a8ffdaea479ce0adf737d2c, 0x281fc9738b6acf6a3c9e3de03c4b9f, 0x0057b4 ] } , - BigNum { limbs: [ 0xc306595156a456f80c6b5f08b6853d, 0x1270b67a71800394abc4c316153a0c, 0x000c1c ] } , - BigNum { limbs: [ 0xfa9da9aea7b7a807f3949ff7497ac4, 0x94e273230bc82fa52c43468bc2cb46, 0x0067d1 ] } , - BigNum { limbs: [ 0xc495060875c7663f057bb8d4a41c08, 0x56e633e8cfebd53fd0ea4ceee08eab, 0x002e6a ] } , - BigNum { limbs: [ 0xf90efcf7889498c0fa84462b5be3f9, 0x506cf5b4ad5c5dfa071dbcb2f776a7, 0x004583 ] } , - BigNum { limbs: [ 0x71cd45b514b0e2459243f1bff55437, 0xa5462c6d112a52b532eb34cade0f08, 0x000c5f ] } , - BigNum { limbs: [ 0x4bd6bd4ae9ab1cba6dbc0d400aabca, 0x020cfd306c1de084a51cd4d6f9f64b, 0x00678e ] } , - BigNum { limbs: [ 0x0fe0f71f4e6f25bff7f645cd3fc71a, 0x3a4b2cedaefd98c35c1f9cf2a711d2, 0x00104d ] } , - BigNum { limbs: [ 0xadc30be0afecd9400809b932c038e7, 0x6d07fcafce4a9a767be86caf30f381, 0x0063a0 ] } , - BigNum { limbs: [ 0xbf16bb1a132052ad0e67dcbc531b87, 0xd140daaeed7c76437237030b4b2819, 0x003a12 ] } , - BigNum { limbs: [ 0xfe8d47e5eb3bac52f1982243ace47a, 0xd6124eee8fcbbcf665d106968cdd39, 0x0039da ] } , - BigNum { limbs: [ 0x3247206e0c4335228b6a709335e3be, 0x28fbc5fb250b4d341582faa1e83c8b, 0x005fa2 ] } , - BigNum { limbs: [ 0x8b5ce291f218c9dd74958e6cca1c43, 0x7e5763a2583ce605c2850effefc8c8, 0x00144b ] } , - BigNum { limbs: [ 0x8f4599907a2eff1ebb9f6f8b1553e6, 0x179f95f9d1cf71300c916e3bdde695, 0x0042f7 ] } , - BigNum { limbs: [ 0x2e5e696f842cffe144608f74eaac1b, 0x8fb393a3ab78c209cb769b65fa1ebe, 0x0030f6 ] } , - BigNum { limbs: [ 0x17eb2f225b08165bbc19234158e3c4, 0x59b07cee916adbfbee27ada17b64f7, 0x0035c7 ] } , - BigNum { limbs: [ 0xa5b8d3dda353e8a443e6dbbea71c3d, 0x4da2acaeebdd573de9e05c005ca05c, 0x003e26 ] } , - BigNum { limbs: [ 0x44eda7f5992ae469427888234c5c23, 0x666481ebd5e78f70dc8cbd002636a0, 0x00676e ] } , - BigNum { limbs: [ 0x78b65b0a65311a96bd8776dcb3a3de, 0x40eea7b1a760a3c8fb7b4ca1b1ceb3, 0x000c7f ] } , - BigNum { limbs: [ 0xe11a5a6e2466daee1655dac009b04a, 0xaeeab283ce053f0319b0c4cedabde3, 0x006def ] } , - BigNum { limbs: [ 0xdc89a891d9f52411e9aa243ff64fb7, 0xf8687719af42f436be5744d2fd476f, 0x0005fd ] } , - BigNum { limbs: [ 0x1639b5ed5801a51ffb579d952cef11, 0xca7b35b68be96c74e25207bfb8147a, 0x005d28 ] } , - BigNum { limbs: [ 0xa76a4d12a65a59e004a8616ad310f0, 0xdcd7f3e6f15ec6c4f5b601e21ff0d9, 0x0016c4 ] } , - BigNum { limbs: [ 0xb93c47f7b1c5b76fbf84bab91ebb51, 0x6654090a7a564aaefb2c49d560d2a9, 0x003184 ] } , - BigNum { limbs: [ 0x0467bb084c964790407b4446e144b0, 0x40ff209302f1e88adcdbbfcc7732aa, 0x004269 ] } , - BigNum { limbs: [ 0x3e1a6ab1df12b32a7559934b7cb028, 0xaef63e5a620a101f2e88ee202a462f, 0x0069d0 ] } , - BigNum { limbs: [ 0x7f89984e1f494bd58aa66bb4834fd9, 0xf85ceb431b3e231aa97f1b81adbf24, 0x000a1c ] } , - BigNum { limbs: [ 0x4f3251fc857ca88f6a9fd46e4014aa, 0x7413f7facad0aed9f0255cbae98aeb, 0x000b2e ] } , - BigNum { limbs: [ 0x6e71b10378df567095602a91bfeb57, 0x333f31a2b277845fe7e2ace6ee7a68, 0x0068bf ] } , - BigNum { limbs: [ 0x4ac2d5b106aa42e2fb72a0b3706d2c, 0x8e395fb95023d459ebc0acc8782c47, 0x006d10 ] } , - BigNum { limbs: [ 0x72e12d4ef7b1bc1d048d5e4c8f92d5, 0x1919c9e42d245edfec475cd95fd90c, 0x0006dd ] } , - BigNum { limbs: [ 0x16d9143ffcbf3076075d72fb4fd6f9, 0x64fe5500cc389ed0fdc3bfda980b14, 0x004ee6 ] } , - BigNum { limbs: [ 0xa6caeec0019cce89f8a28c04b02908, 0x4254d49cb10f9468da4449c73ffa3f, 0x002507 ] } , - BigNum { limbs: [ 0x472b4e744c806f4b4271e8fea8e685, 0x0c5df3ef6f22f808cccea17083db42, 0x003174 ] } , - BigNum { limbs: [ 0x7678b48bb1db8fb4bd8e160157197c, 0x9af535ae0e253b310b396831542a11, 0x004279 ] } , - BigNum { limbs: [ 0xfb2259c50ef9159ec8596d41db6808, 0xd38800f9c7a6cdb1758900ba9cea32, 0x002841 ] } , - BigNum { limbs: [ 0xc281a93aef62e96137a691be2497f9, 0xd3cb28a3b5a16588627f08e73b1b20, 0x004bab ] } , - BigNum { limbs: [ 0xc8e302a64f34b01d33fbca450c1d06, 0xd5cde29fc09fbceb23b1dc49d6e277, 0x005900 ] } , - BigNum { limbs: [ 0xf4c10059af274ee2cc0434baf3e2fb, 0xd18546fdbca8764eb4562d580122db, 0x001aec ] } , - BigNum { limbs: [ 0x90344fa5a16f4ab9879b3e17dd0b0b, 0x667d94cdd9c38986b950694a8aeb37, 0x0059a2 ] } , - BigNum { limbs: [ 0x2d6fb35a5cecb4467864c0e822f4f6, 0x40d594cfa384a9b31eb7a0574d1a1c, 0x001a4b ] } , - BigNum { limbs: [ 0xbd5b351c5cd26c64739a7d485a844b, 0xdd8c8143c8b50afcb0b46efed066d5, 0x00594d ] } , - BigNum { limbs: [ 0x0048cde3a189929b8c6581b7a57bb6, 0xc9c6a859b493283d27539aa3079e7e, 0x001a9f ] } , - BigNum { limbs: [ 0x2d849fd134747881b0f8d6099b0de1, 0x7d7f51c5f634342b5da8a55514f039, 0x004e7f ] } , - BigNum { limbs: [ 0x901f632ec9e7867e4f0728f664f220, 0x29d3d7d78713ff0e7a5f644cc3151a, 0x00256e ] } , - BigNum { limbs: [ 0x2e561e922d32eb5565175ce0c2c4d7, 0xe1ba3d4259226b6c4502021aa28fe9, 0x000ec4 ] } , - BigNum { limbs: [ 0x8f4de46dd12913aa9ae8a21f3d3b2a, 0xc598ec5b2425c7cd9306078735756a, 0x006528 ] } , - BigNum { limbs: [ 0xa9e98d9a6a0fa3eabc37aaafd8de68, 0xb3ce1d79199ed39d09e4354dc67fd4, 0x00536d ] } , - BigNum { limbs: [ 0x13ba7565944c5b1543c85450272199, 0xf3850c2463a95f9cce23d45411857f, 0x00207f ] } , - BigNum { limbs: [ 0x76b8ab15b3978e0bbd4df91011faed, 0x635a9d5aff4d39f18be39a282a3b41, 0x0040b1 ] } , - BigNum { limbs: [ 0x46eb57ea4ac470f442b205efee0514, 0x43f88c427dfaf9484c246f79adca12, 0x00333c ] } , - BigNum { limbs: [ 0xeaefcc0af5294f232b15177d4cf979, 0x42759b48c9c039e8afa135aa03e63e, 0x006bb6 ] } , - BigNum { limbs: [ 0xd2b436f50932afdcd4eae782b30688, 0x64dd8e54b387f9512866d3f7d41f14, 0x000837 ] } , - BigNum { limbs: [ 0x23cae1b39585da238eb67e41a8ef7a, 0x07df44f50563c498bb7a0ba353cfc8, 0x0054d4 ] } , - BigNum { limbs: [ 0x99d9214c68d624dc714980be571087, 0x9f73e4a877e46ea11c8dfdfe84358b, 0x001f19 ] } , - BigNum { limbs: [ 0x84043755593a5571575050ff2e8f53, 0x7016e0f346286bfae7e9c76a0737f1, 0x0026e3 ] } , - BigNum { limbs: [ 0x399fcbaaa521a98ea8afae00d170ae, 0x373c48aa371fc73ef01e4237d0cd62, 0x004d0a ] } , - BigNum { limbs: [ 0x6d9552d11b8248c1601b5e0269f651, 0x8379e7b404d11e548b580444898b73, 0x003f3f ] } , - BigNum { limbs: [ 0x500eb02ee2d9b63e9fe4a0fd9609b0, 0x23d941e9787714e54cb0055d4e79e0, 0x0034ae ] } , - BigNum { limbs: [ 0x887f8205fd194354ccab45a519de45, 0x562c6c44afc5a02a797876e2be4c63, 0x006727 ] } , - BigNum { limbs: [ 0x352480fa0142bbab3354b95ae621bc, 0x5126bd58cd82930f5e8f92bf19b8f0, 0x000cc6 ] } , - BigNum { limbs: [ 0x5ac52dd0275b76a11df3f12e4b57c9, 0x8b4cb19c6aacfd4cad1b55fe13aaec, 0x003d63 ] } , - BigNum { limbs: [ 0x62ded52fd700885ee20c0dd1b4a838, 0x1c067801129b35ed2aecb3a3c45a67, 0x00368a ] } , - BigNum { limbs: [ 0x56bcfda225a255c9dfef16490d0361, 0xf639fea4d6c184a686635902923601, 0x000dc6 ] } , - BigNum { limbs: [ 0x66e7055dd8b9a9362010e8b6f2fca0, 0xb1192af8a686ae9351a4b09f45cf52, 0x006626 ] } , - BigNum { limbs: [ 0x3b04598a9c22f8aeb6194dca2552be, 0x89c063549d3d69c063c5d353adb347, 0x00310e ] } , - BigNum { limbs: [ 0x829fa9756239065149e6b135daad43, 0x1d92c648e00ac9797442364e2a520c, 0x0042df ] } , - BigNum { limbs: [ 0xba076f54fc7d713ba295f01bd3dca3, 0xbdb2cc6acf3bff0acc918a8938919b, 0x001bea ] } , - BigNum { limbs: [ 0x039c93ab01de8dc45d6a0ee42c235e, 0xe9a05d32ae0c342f0b767f189f73b8, 0x005802 ] } , - BigNum { limbs: [ 0x5d2d722303a5151916ea53506843d4, 0x2d1af4dac73ca395d9a86e654d250a, 0x0073ca ] } , - BigNum { limbs: [ 0x607690dcfab6e9e6e915abaf97bc2d, 0x7a3834c2b60b8fa3fe5f9b3c8ae049, 0x000023 ] } , - BigNum { limbs: [ 0xc5bb329aa58ff53dc9e5600f6fb2ac, 0xda0d65ba213edeae67bc36f376e13c, 0x00394f ] } , - BigNum { limbs: [ 0xf7e8d06558cc09c2361a9ef0904d55, 0xcd45c3e35c09548b704bd2ae612416, 0x003a9d ] } , - BigNum { limbs: [ 0x8735397a729c9296667fe93049e708, 0x516de84be9be3b19a4859689394040, 0x000324 ] } , - BigNum { limbs: [ 0x366ec9858bbf6c69998015cfb618f9, 0x55e541519389f820338273189ec513, 0x0070c9 ] } , - BigNum { limbs: [ 0x24897db64ce269d203e3fa74e11447, 0x5b04c0c2ce204699035efe5f090b78, 0x004416 ] } , - BigNum { limbs: [ 0x991a8549b179952dfc1c048b1eebba, 0x4c4e68daaf27eca0d4a90b42cef9db, 0x002fd7 ] } , - BigNum { limbs: [ 0x1336aae12b9741e4013b1be24a6a27, 0x29f81acce66402fe04c5253429fa23, 0x006d79 ] } , - BigNum { limbs: [ 0xaa6d581ed2c4bd1bfec4e31db595da, 0x7d5b0ed096e4303bd342e46dae0b30, 0x000674 ] } , - BigNum { limbs: [ 0x3bc24f99c9cea52aff74bda8bd30d5, 0x89729d58ccebd3a3c25a684b5b1b44, 0x0059c9 ] } , - BigNum { limbs: [ 0x81e1b366348d59d5008b415742cf2c, 0x1de08c44b05c5f9615ada1567cea0f, 0x001a24 ] } , - BigNum { limbs: [ 0xd648d364782d8780d7ed78f5a1840b, 0x47155e69d457fd7728f0be93f4d1a6, 0x00441f ] } , - BigNum { limbs: [ 0xe75b2f9b862e777f2812860a5e7bf6, 0x603dcb33a8f035c2af174b0de333ac, 0x002fce ] } , - BigNum { limbs: [ 0xa48300a88d274b017fb495c97736ea, 0x922de796122f0a24fd82fef9163b38, 0x003676 ] } , - BigNum { limbs: [ 0x192102577134b3fe804b693688c917, 0x152542076b192914da850aa8c1ca1b, 0x003d77 ] } , - BigNum { limbs: [ 0xc8e7356632cbb83bb9f77771a94e74, 0xc278a4e01a4c849f36f7351d976f8c, 0x006186 ] } , - BigNum { limbs: [ 0xf4bccd99cb9046c44608878e56b18d, 0xe4da84bd62fbae9aa110d4844095c6, 0x001266 ] } , - BigNum { limbs: [ 0x8c8462d85d66967dc3465fd3e84234, 0xaf84180afee4df9729856b740496bd, 0x00011a ] } , - BigNum { limbs: [ 0x311fa027a0f568823cb99f2c17bdcd, 0xf7cf11927e6353a2ae829e2dd36e96, 0x0072d2 ] } , - BigNum { limbs: [ 0x617ea313bbee72237fdc3accfeb487, 0x962d2e10663a7a43a7d1a5965b08af, 0x00152d ] } , - BigNum { limbs: [ 0x5c255fec426d8cdc8023c433014b7a, 0x1125fb8d170db8f63036640b7cfca4, 0x005ec0 ] } , - BigNum { limbs: [ 0x9a573ac1ebbef93539694e1a3c0355, 0xa89f0ff90ea23664d64e46d2949543, 0x0057e2 ] } , - BigNum { limbs: [ 0x234cc83e129d05cac696b0e5c3fcac, 0xfeb419a46ea5fcd501b9c2cf437010, 0x001c0a ] } , - BigNum { limbs: [ 0xd68d220fca64d38db677b6043ff669, 0xd6fa9c3d539a83d386045db22900fb, 0x0060c9 ] } , - BigNum { limbs: [ 0xe716e0f033f72b72498848fbc00998, 0xd0588d6029adaf665203abefaf0457, 0x001323 ] } , - BigNum { limbs: [ 0x1707a64849286274d7dfd9973ee6e7, 0x32df7adc756f9365dbfdd816dd932b, 0x0062f9 ] } , - BigNum { limbs: [ 0xa69c5cb7b5339c8b28202568c1191a, 0x7473aec107d89fd3fc0a318afa7228, 0x0010f4 ] } , - BigNum { limbs: [ 0xa584d5a26031ebedba4649fc46b70a, 0x96570a7e378320524b13c0a9195554, 0x002842 ] } , - BigNum { limbs: [ 0x181f2d5d9e2a131245b9b503b948f7, 0x10fc1f1f45c512e78cf448f8beafff, 0x004bab ] } , - BigNum { limbs: [ 0x34078e6023659943eab7043484fc3c, 0xdf83246c205deaaad843d3c445bf62, 0x002c06 ] } , - BigNum { limbs: [ 0x899c749fdaf665bc1548facb7b03c5, 0xc7d005315cea488effc435dd9245f1, 0x0047e6 ] } , - BigNum { limbs: [ 0x259d82fefd5486c32f2ad697429d10, 0xa8040608c82c1612a07a34289f79a2, 0x00587f ] } , - BigNum { limbs: [ 0x980680010107783cd0d52868bd62f1, 0xff4f2394b51c1d27378dd579388bb1, 0x001b6d ] } , - BigNum { limbs: [ 0xadc9b2ae5adec432f30e9b0bfc3a6d, 0x8182ae53dad057afa670133b58fad7, 0x00694a ] } , - BigNum { limbs: [ 0x0fda5051a37d3acd0cf163f403c594, 0x25d07b49a277db8a3197f6667f0a7c, 0x000aa3 ] } , - BigNum { limbs: [ 0xf8c914dff2099ea3f982ee75a456a7, 0x14906a749b47f8a343fc005f3e28f0, 0x004a77 ] } , - BigNum { limbs: [ 0xc4daee200c52605c067d108a5ba95a, 0x92c2bf28e2003a96940c094299dc62, 0x002976 ] } , - BigNum { limbs: [ 0xdf2efbf4151df9070c45c1bd0c92d5, 0xd16ee200ef574685e2f858afc4cd81, 0x004fd8 ] } , - BigNum { limbs: [ 0xde75070be93e05f8f3ba3d42f36d2c, 0xd5e4479c8df0ecb3f50fb0f21337d1, 0x002414 ] } , - BigNum { limbs: [ 0xc5e75edbddeb0243868d6303e7e27a, 0xf5f4896aaa5cff07a7cfa93c6c4267, 0x0025c9 ] } , - BigNum { limbs: [ 0xf7bca4242070fcbc79729bfc181d87, 0xb15ea032d2eb3432303860656bc2eb, 0x004e23 ] } , - BigNum { limbs: [ 0x5eae1a9fb81b7dbc576703ce363b13, 0x15a54c27fd410c55177a1108b89db3, 0x001d30 ] } , - BigNum { limbs: [ 0x5ef5e86046408143a898fb31c9c4ee, 0x91addd75800726e4c08df8991f67a0, 0x0056bd ] } , - BigNum { limbs: [ 0x4f4b7eea11b1984ec91001c0981b11, 0xce55ade3f81929d4d10b57143c885d, 0x003b1e ] } , - BigNum { limbs: [ 0x6e588415ecaa66b136effd3f67e4f0, 0xd8fd7bb9852f096506fcb28d9b7cf6, 0x0038ce ] } , - BigNum { limbs: [ 0x2e6d3761798a4d9cf9bd0d936c966d, 0xbff8f170be1a304971cb7310b33ebb, 0x000c10 ] } , - BigNum { limbs: [ 0x8f36cb9e84d1b1630642f16c936994, 0xe75a382cbf2e02f0663c969124c698, 0x0067dc ] } , - BigNum { limbs: [ 0xfa125eb2f4fd03868a188ce214e418, 0xd6e9727aed451c319521298a12cc68, 0x005fe9 ] } , - BigNum { limbs: [ 0xc391a44d095efb7975e7721deb1be9, 0xd069b7229003170842e6e017c538ea, 0x001403 ] } , - BigNum { limbs: [ 0x6bcc9a644f4cbe093e7371e15d9aa1, 0xf0755426209741a1ab941191a967e6, 0x0058d3 ] } , - BigNum { limbs: [ 0x51d7689baf0f40f6c18c8d1ea26560, 0xb6ddd5775cb0f1982c73f8102e9d6d, 0x001b19 ] } , - BigNum { limbs: [ 0x0c955b5cea64c0ee05c87f9e9f3c1a, 0xafe4259272be74657ff0a7b1507505, 0x003f7e ] } , - BigNum { limbs: [ 0xb10ea7a313f73e11fa377f6160c3e7, 0xf76f040b0a89bed4581761f087904e, 0x00346e ] } , - BigNum { limbs: [ 0xe666a5c2df9cb2d4d896cf626846d8, 0xe4ff876a9633305896bb13960c8f2c, 0x002618 ] } , - BigNum { limbs: [ 0xd73d5d3d1ebf4c2b27692f9d97b929, 0xc253a232e71502e1414cf60bcb7626, 0x004dd4 ] } , - BigNum { limbs: [ 0xbbf889dbf8e8bddb1c8289ed299a23, 0x5855b6c6e391861622d60f4365760b, 0x0023c3 ] } , - BigNum { limbs: [ 0x01ab792405734124e37d7512d665de, 0x4efd72d699b6ad23b531fa5e728f48, 0x00502a ] } , - BigNum { limbs: [ 0xb941a332a92d4a81b0e757b270f005, 0x3270acf0731bd5447069e12d31c902, 0x0058d9 ] } , - BigNum { limbs: [ 0x04625fcd552eb47e4f18a74d8f0ffc, 0x74e27cad0a2c5df5679e2874a63c51, 0x001b14 ] } , - BigNum { limbs: [ 0xab1aae50695eea97978c061418d62e, 0xf84bb160a8c047716fcc94c7283abb, 0x000c1a ] } , - BigNum { limbs: [ 0x128954af94fd14686873f8ebe729d3, 0xaf07783cd487ebc8683b74daafca98, 0x0067d2 ] } , - BigNum { limbs: [ 0x83e0458adf3267676574dd34b4eb80, 0xf6130faaa32be7a5a09cbda9aa668b, 0x005565 ] } , - BigNum { limbs: [ 0x39c3bd751f2997989a8b21cb4b1481, 0xb14019f2da1c4b94376b4bf82d9ec8, 0x001e87 ] } , - BigNum { limbs: [ 0x9b5582bb02c0ced2ca7fad01ebd99e, 0x28f557956f50a73b40e99874bf9749, 0x0031ff ] } , - BigNum { limbs: [ 0x224e8044fb9b302d358051fe142663, 0x7e5dd2080df78bfe971e712d186e0a, 0x0041ee ] } , - BigNum { limbs: [ 0x97358ffd2835e0179fb10dc7b7e09a, 0x5c628fafc971827e30d593ecdae326, 0x00343d ] } , - BigNum { limbs: [ 0x266e7302d6261ee8604ef138481f67, 0x4af099edb3d6b0bba73275b4fd222d, 0x003fb0 ] } , - BigNum { limbs: [ 0xf09f2e0d931259ed68dabc68087120, 0x6de3430206e2df37856fcff7cf23d0, 0x004a47 ] } , - BigNum { limbs: [ 0xcd04d4f26b49a51297254297f78ee1, 0x396fe69b76655402529839aa08e182, 0x0029a6 ] } , - BigNum { limbs: [ 0x239fe2eca23d8a2ffb03118ed84431, 0xa9a47fe534eeef9e27ade80b05e8aa, 0x000cbc ] } , - BigNum { limbs: [ 0x9a0420135c1e74d004fced7127bbd0, 0xfdaea9b84859439bb05a2196d21ca9, 0x006730 ] } , - BigNum { limbs: [ 0x2a1a38f6a3b6fe8f951987f938ad2b, 0x83458a0d76b39864dfcb13266a4997, 0x0002e3 ] } , - BigNum { limbs: [ 0x9389ca095aa500706ae67706c752d6, 0x240d9f9006949ad4f83cf67b6dbbbc, 0x00710a ] } , - BigNum { limbs: [ 0x8c7bacfcf8930fa5dc69430696804b, 0xdaa73a4a03ad14b0f63737b0fba78c, 0x003828 ] } , - BigNum { limbs: [ 0x3128560305c8ef5a2396bbf9697fb6, 0xccabef53799b1e88e1d0d1f0dc5dc7, 0x003bc4 ] } , - BigNum { limbs: [ 0x41c51ee8a59134393725e997d5bc54, 0x04fd857667a60a58096d76095edde2, 0x001200 ] } , - BigNum { limbs: [ 0x7bdee41758cacac6c8da15682a43ad, 0xa255a42715a228e1ce9a9398792771, 0x0061ed ] } , - BigNum { limbs: [ 0x875df6abb81f260c9ba571622fbb63, 0xe16ceae000c0920285804ba56e526c, 0x001472 ] } , - BigNum { limbs: [ 0x36460c54463cd8f3645a8d9dd0449e, 0xc5e63ebd7c87a1375287bdfc69b2e7, 0x005f7a ] } , - BigNum { limbs: [ 0xd87c2f39e59e6deeeeca1aa16d8a80, 0x4238ed2bb9ed0e458ccb4bb37c4eb4, 0x003f04 ] } , - BigNum { limbs: [ 0xe527d3c618bd91111135e45e927581, 0x651a3c71c35b24f44b3cbdee5bb69e, 0x0034e9 ] } , - BigNum { limbs: [ 0xa8e932408ef8fe9af064101df4aaec, 0xc4e966202fc4204656c7ce183ff66a, 0x005271 ] } , - BigNum { limbs: [ 0x14bad0bf6f6300650f9beee20b5515, 0xe269c37d4d8412f381403b89980ee9, 0x00217b ] } , - BigNum { limbs: [ 0x4779b6793f73ecc5a0cf907ec9f18a, 0x341b5a6fc0f0ef6b4ff5f1398a4bff, 0x006a04 ] } , - BigNum { limbs: [ 0x762a4c86bee8123a5f306e81360e77, 0x7337cf2dbc5743ce881218684db954, 0x0009e9 ] } , - BigNum { limbs: [ 0x246c157d33115f38932b9a6e8cfe99, 0xcacb5733af7420048419c85f583b44, 0x0054d3 ] } , - BigNum { limbs: [ 0x9937ed82cb4a9fc76cd46491730168, 0xdc87d269cdd4133553ee41427fca0f, 0x001f19 ] } , - BigNum { limbs: [ 0x66cc3649b2a0f556e0ef5255a8bb66, 0x69cd542aaac08bfe20d50ef2cf5df9, 0x0027a8 ] } , - BigNum { limbs: [ 0x56d7ccb64bbb09a91f10acaa57449b, 0x3d85d572d287a73bb732faaf08a75a, 0x004c45 ] } , - BigNum { limbs: [ 0x4e1027da8563eb5e71b3ec6d0ee30f, 0x91127143ce15c9d42c534df287762f, 0x004394 ] } , - BigNum { limbs: [ 0x6f93db2578f813a18e4c1292f11cf2, 0x1640b859af326965abb4bbaf508f24, 0x003059 ] } , - BigNum { limbs: [ 0x5cd9c1c3e9eb0e96329d35d382cbea, 0x9acbe05086d6eb9fb0acf4176bf84d, 0x0007c7 ] } , - BigNum { limbs: [ 0x60ca413c1470f069cd62c92c7d3417, 0x0c87494cf671479a275b158a6c0d06, 0x006c26 ] } , - BigNum { limbs: [ 0x0c7f8078d990609eab3ef9be9764c6, 0x7e6893b89887fad48b354bc330882c, 0x002284 ] } , - BigNum { limbs: [ 0xb124828724cb9e6154c10541689b3b, 0x28ea95e4e4c038654cd2bddea77d27, 0x005169 ] } , - BigNum { limbs: [ 0xe745f877918fb9616de7a77c440a79, 0xadf0e9def788dbbedd6458f7949e6e, 0x003ec7 ] } , - BigNum { limbs: [ 0xd65e0a886ccc459e92185783bbf588, 0xf9623fbe85bf577afaa3b0aa4366e4, 0x003525 ] } , - BigNum { limbs: [ 0x83f0c9b72e57d78383877b779e75e0, 0xd17fadd4e9e678b200c8f2c29f103c, 0x005d7d ] } , - BigNum { limbs: [ 0x39b33948d004277c7c788388618a21, 0xd5d37bc89361ba87d73f16df38f517, 0x00166f ] } , - BigNum { limbs: [ 0xbc1f8283431f31e8a9c8bd0ac6a3a0, 0x8e3592f5016b397a2c35153ca7e451, 0x004ad6 ] } , - BigNum { limbs: [ 0x0184807cbb3ccd17563741f5395c61, 0x191d96a87bdcf9bfabd2f465302102, 0x002917 ] } , - BigNum { limbs: [ 0x4cef8200c1d124e7f3615720c1d1e5, 0xf506e1d066151a864b33dd2a624d24, 0x0005fb ] } , - BigNum { limbs: [ 0x70b480ff3c8ada180c9ea7df3e2e1c, 0xb24c47cd173318b38cd42c7775b82f, 0x006df1 ] } , - BigNum { limbs: [ 0xdd427388dae96f520501edf8907c06, 0xf0f7b16607e60cdbc9e07bc083b40a, 0x003ff5 ] } , - BigNum { limbs: [ 0xe0618f7723728fadfafe11076f83fb, 0xb65b78377562265e0e278de1545148, 0x0033f7 ] } , - BigNum { limbs: [ 0xd7cb9c3bed54f87277f026ca081a65, 0xaa222e0b7f2fec4b90825a95d695f4, 0x0063f3 ] } , - BigNum { limbs: [ 0xe5d866c41107068d880fd835f7e59c, 0xfd30fb91fe1846ee4785af0c016f5e, 0x000ff9 ] } , - BigNum { limbs: [ 0x097dccea879224b6f9a7a05fdd9b14, 0x28a020c17d24e31612606f18054974, 0x004147 ] } , - BigNum { limbs: [ 0xb426361576c9da4906585ea02264ed, 0x7eb308dc00235023c5a79a89d2bbdf, 0x0032a6 ] } , - BigNum { limbs: [ 0x14ecec793bc43b986b6176b24cbb42, 0xcad3b4615ff25b2d59f1a99bd50e4f, 0x0063df ] } , - BigNum { limbs: [ 0xa8b71686c297c367949e884db344bf, 0xdc7f753c1d55d80c7e16600602f704, 0x00100d ] } , - BigNum { limbs: [ 0xf82e16e5cbc1a9be0cc120c4606c68, 0x2f2c3c7946b0b13d8e366e81529353, 0x0048c4 ] } , - BigNum { limbs: [ 0xc575ec1a329a5541f33ede3b9f9399, 0x7826ed24369781fc49d19b208571ff, 0x002b29 ] } , - BigNum { limbs: [ 0xe91e410af1949521fd7c4f1e349a7d, 0x50fdeb3d61c65e129f2996d49223c1, 0x001613 ] } , - BigNum { limbs: [ 0xd485c1f50cc769de0283afe1cb6584, 0x56553e601b81d52738de72cd45e191, 0x005dda ] } , - BigNum { limbs: [ 0x9dbe5d372eb323eaa96815df473791, 0x5a83ef220beccff313358fd1c761af, 0x00728d ] } , - BigNum { limbs: [ 0x1fe5a5c8cfa8db155697e920b8c870, 0x4ccf3a7b715b6346c4d279d010a3a4, 0x000160 ] } , - BigNum { limbs: [ 0x242aaeca33f4000933a9753e0abf20, 0x7a7b59fcf9e1c016e54989054f05b8, 0x005e7b ] } , - BigNum { limbs: [ 0x99795435ca67fef6cc5689c1f540e1, 0x2cd7cfa083667322f2be809c88ff9b, 0x001572 ] } , - BigNum { limbs: [ 0x0366d7bcfa38432d011dfc07a888cf, 0x1bde864f28f6053fcaf72053efdce7, 0x004438 ] } , - BigNum { limbs: [ 0xba3d2b430423bbd2fee202f8577732, 0x8b74a34e54522dfa0d10e94de8286c, 0x002fb5 ] } , - BigNum { limbs: [ 0xe1e0504e9a05e6693171d0bad3fc18, 0x3f7f0d04c44d9b10859932b310adc7, 0x003001 ] } , - BigNum { limbs: [ 0xdbc3b2b164561896ce8e2e452c03e9, 0x67d41c98b8fa9829526ed6eec7578b, 0x0043ec ] } , - BigNum { limbs: [ 0x8368375b1b209f9180d58bcc836816, 0xf5c5d88faac59bbd3b83fc9c5c40ab, 0x00613f ] } , - BigNum { limbs: [ 0x3a3bcba4e33b5f6e7f2a73337c97eb, 0xb18d510dd282977c9c840d057bc4a8, 0x0012ad ] } , - BigNum { limbs: [ 0x6934c02d0c489448f3e5672b5a5d76, 0x55c023f6d9fb32948fe30dce0ec074, 0x004135 ] } , - BigNum { limbs: [ 0x546f42d2f2136ab70c1a97d4a5a28b, 0x519305a6a34d00a54824fbd3c944df, 0x0032b8 ] } , - BigNum { limbs: [ 0x674aca38cfce36722959330e00c1b7, 0xcb76fd46b0cae810ffcce44015aec9, 0x0045d5 ] } , - BigNum { limbs: [ 0x565938c72e8dc88dd6a6cbf1ff3e4a, 0xdbdc2c56cc7d4b28d83b2561c2568a, 0x002e17 ] } , - BigNum { limbs: [ 0x45e97541c060f8d7f6ba92fa1dc369, 0x92ec171bc4a381862e49d3aeb0ea55, 0x005ab8 ] } , - BigNum { limbs: [ 0x77ba8dbe3dfb062809456c05e23c98, 0x14671281b8a4b1b3a9be35f3271afe, 0x001935 ] } , - BigNum { limbs: [ 0xad0d0eafb77eac566095f1ecc2f957, 0x2138ae7a25020d22ca75d2225ca6da, 0x002516 ] } , - BigNum { limbs: [ 0x1096f45046dd52a99f6a0d133d06aa, 0x861a7b23584626170d92377f7b5e79, 0x004ed7 ] } , - BigNum { limbs: [ 0xdbf8e4a46a63dc2f46b14cc8eef262, 0x47b203b8df8f96138258e226307ec6, 0x0009fb ] } , - BigNum { limbs: [ 0xe1ab1e5b93f822d0b94eb237110d9f, 0x5fa125e49db89d2655af277ba7868c, 0x0069f2 ] } , - BigNum { limbs: [ 0x4feb043497fc58b38d8515a5b0eafd, 0x596d4b0068ab29a7a06b463b79c9d3, 0x000691 ] } , - BigNum { limbs: [ 0x6db8fecb665fa64c727ae95a4f1504, 0x4de5de9d149d0992379cc3665e3b80, 0x006d5c ] } , - BigNum { limbs: [ 0x5ab545d2d158ceedab2d0434639a15, 0x0fca138f01bc235290c82563e205b1, 0x006ce6 ] } , - BigNum { limbs: [ 0x62eebd2d2d03301254d2facb9c65ec, 0x9789160e7b8c0fe7473fe43df5ffa2, 0x000707 ] } , - BigNum { limbs: [ 0x88a9431dd26a69f8f5bf7c94f575df, 0x5deb23c6669863555db3acc5836ceb, 0x002e0f ] } , - BigNum { limbs: [ 0x34fabfe22bf195070a40826b0a8a22, 0x496805d716afcfe47a545cdc549868, 0x0045de ] } , - BigNum { limbs: [ 0x2f6d5e0df66e85cb505dc0b299b048, 0xc617f0fc99ad5824a217b990170bd6, 0x00548d ] } , - BigNum { limbs: [ 0x8e36a4f207ed7934afa23e4d664fb9, 0xe13b38a0e39adb1535f05011c0f97d, 0x001f5f ] } , - BigNum { limbs: [ 0xaea85f522d185f3259fd9f313a07a3, 0x836f8b619f8fd6da5b98ea681cbb10, 0x00327b ] } , - BigNum { limbs: [ 0x0efba3add1439fcda6025fcec5f85e, 0x23e39e3bddb85c5f7c6f1f39bb4a43, 0x004172 ] } , - BigNum { limbs: [ 0x6ca6cc85fa3a8466074ca2b011338f, 0x6c6432cafb55a9ee26912d35d4469c, 0x0072f3 ] } , - BigNum { limbs: [ 0x50fd367a04217a99f8b35c4feecc72, 0x3aeef6d281f2894bb176dc6c03beb7, 0x0000fa ] } , - BigNum { limbs: [ 0x82e5156b496a9bb41782536fec3a1b, 0x2ace5c821d2c46e331920498fb10c0, 0x004818 ] } , - BigNum { limbs: [ 0x3abeed94b4f1634be87dab9013c5e6, 0x7c84cd1b601bec56a6760508dcf493, 0x002bd5 ] } , - BigNum { limbs: [ 0x367d4298555040edfdb0754da8119f, 0x794af8128e9b7f31a086992b47b188, 0x00086f ] } , - BigNum { limbs: [ 0x8726c067a90bbe12024f89b257ee62, 0x2e08318aeeacb408378170769053cb, 0x006b7e ] } , - BigNum { limbs: [ 0xec1460768b2c9675a11fcd56dba52e, 0xeb44c4d3ab2e8a64751841896dd82e, 0x004a83 ] } , - BigNum { limbs: [ 0xd18fa289732f688a5ee031a9245ad3, 0xbc0e64c9d219a8d562efc8186a2d24, 0x002969 ] } , - BigNum { limbs: [ 0x7b27c5aecba7d424a40f2d877906ed, 0x8bd7381214061075bbaf735c62728a, 0x006a32 ] } , - BigNum { limbs: [ 0x427c3d5132b42adb5bf0d17886f914, 0x1b7bf18b694222c41c5896457592c9, 0x0009bb ] } , - BigNum { limbs: [ 0xc900da291efb3abe2b290659fca460, 0x9905074ea83b6627c0df94b27365dd, 0x005dee ] } , - BigNum { limbs: [ 0xf4a328d6df60c441d4d6f8a6035ba1, 0x0e4e224ed50ccd12172874ef649f75, 0x0015ff ] } , - BigNum { limbs: [ 0x8ab9244d137048c402cc7b2dc9edbb, 0xe6f824d478f86c73e771bd4ea2c90e, 0x0027bc ] } , - BigNum { limbs: [ 0x32eadeb2eaebb63bfd3383d2361246, 0xc05b04c9044fc6c5f0964c53353c45, 0x004c30 ] } , - BigNum { limbs: [ 0xd755e8f2d005f191eb6617ea425abe, 0x7fc6baaff653d471cedcf5b54d8685, 0x002ba0 ] } , - BigNum { limbs: [ 0xe64e1a0d2e560d6e1499e715bda543, 0x278c6eed86f45ec8092b13ec8a7ecd, 0x00484d ] } , - BigNum { limbs: [ 0x1afd71f847b27e4b7dbb8ad705dc13, 0x31f14b65a3e9d26c7142926b9087a9, 0x0059c1 ] } , - BigNum { limbs: [ 0xa2a69107b6a980b482447428fa23ee, 0x7561de37d95e60cd66c57736477daa, 0x001a2c ] } , - BigNum { limbs: [ 0x88fbcfaaf5caa2625a2f32ed8dbce9, 0x2e58570ef3f0f35b75415536727b44, 0x004fc1 ] } , - BigNum { limbs: [ 0x34a8335508915c9da5d0cc12724318, 0x78fad28e89573fde62c6b46b658a0f, 0x00242c ] } , - BigNum { limbs: [ 0xe632270915026095198d2484b905d5, 0x6d45265665ab6722f9d50533ea0803, 0x002177 ] } , - BigNum { limbs: [ 0xd771dbf6e9599e6ae672da7b46fa2c, 0x3a0e0347179ccc16de33046dedfd4f, 0x005276 ] } , - BigNum { limbs: [ 0x6cafe8dae5e7cb2abfe1f0c02c3040, 0x5595dd0c70084ffd4705ba2749c170, 0x000555 ] } , - BigNum { limbs: [ 0x50f41a25187433d5401e0e3fd3cfc1, 0x51bd4c910d3fe33c91024f7a8e43e3, 0x006e98 ] } , - BigNum { limbs: [ 0x5472ccdbb2142b6ff9012b3255ff9b, 0x04de4f38c29ec387bd5674cd63e796, 0x0073a3 ] } , - BigNum { limbs: [ 0x693136244c47d39006fed3cdaa0066, 0xa274da64baa96fb21ab194d4741dbd, 0x00004a ] } , - BigNum { limbs: [ 0x2796b14093750a1b54a53a70d4265b, 0x9575b02b97ede59ff02d7965b2143c, 0x000e69 ] } , - BigNum { limbs: [ 0x960d51bf6ae6f4e4ab5ac48f2bd9a6, 0x11dd7971e55a4d99e7da903c25f117, 0x006584 ] } , - BigNum { limbs: [ 0x5ce232818f6d02784a153b636d653e, 0xc132013455cccb72eb7f83ff4b32f9, 0x00168d ] } , - BigNum { limbs: [ 0x60c1d07e6eeefc87b5eac39c929ac3, 0xe6212869277b67c6ec8885a28cd25a, 0x005d5f ] } , - BigNum { limbs: [ 0xdfae94d32a526430c7ec90435fd3d8, 0xfb315c99b3560f738ec8f0d52f0eb7, 0x0039ac ] } , - BigNum { limbs: [ 0xddf56e2cd4099acf38136ebca02c29, 0xac21cd03c9f223c6493f18cca8f69b, 0x003a40 ] } , - BigNum { limbs: [ 0xbaf1d05095002fdd8017c1ac3e2213, 0x162593515198ee00a3b7b4351ee023, 0x0008fc ] } , - BigNum { limbs: [ 0x02b232af695bcf227fe83d53c1ddee, 0x912d964c2baf45393450556cb92530, 0x006af1 ] } , - BigNum { limbs: [ 0x1761e1b0f909021a23424d59fe3fde, 0xe21a8e1305f1f85d77efa39074c1e1, 0x005721 ] } , - BigNum { limbs: [ 0xa642214f0552fce5dcbdb1a601c023, 0xc5389b8a77563adc60186611634372, 0x001ccb ] } , - BigNum { limbs: [ 0x5ae294d8dd573fffb41b3f2f682eed, 0xb7d1bdda337e9d5126d86f1fed63e9, 0x003911 ] } , - BigNum { limbs: [ 0x62c16e272104bf004be4bfd097d114, 0xef816bc349c995e8b12f9a81eaa16a, 0x003adb ] } , - BigNum { limbs: [ 0xd8da20debfe655515bbca46b58ca6f, 0x2ba635623a828636d4648656a208e1, 0x0014e8 ] } , - BigNum { limbs: [ 0xe4c9e2213e75a9aea4435a94a73592, 0x7bacf43b42c5ad0303a3834b35fc71, 0x005f05 ] } , - BigNum { limbs: [ 0x0eff902da996a111c53e42d167a2f3, 0x5f36c9c99822cc2f7ab68a9c648979, 0x001626 ] } , - BigNum { limbs: [ 0xaea472d254c55dee3ac1bc2e985d0e, 0x481c5fd3e525670a5d517f05737bda, 0x005dc7 ] } , - BigNum { limbs: [ 0x2832b9e94931ba5e2e4bcb392b8c79, 0xb0281754e39497f22b5e1206600631, 0x006a95 ] } , - BigNum { limbs: [ 0x95714916b52a44a1d1b433c6d47388, 0xf72b124899b39b47aca9f79b77ff22, 0x000957 ] } , - BigNum { limbs: [ 0x7ff86c9800ce933f46ed02914494b4, 0xfdfbe2924212794dff836b2b5a7639, 0x0001af ] } , - BigNum { limbs: [ 0x3dab9667fd8d6bc0b912fc6ebb6b4d, 0xa957470b3b35b9ebd8849e767d8f1a, 0x00723d ] } , - BigNum { limbs: [ 0xa33631f8fd1d6facd34d18272a545a, 0x479e3532f624056dfaea780689ee8d, 0x002751 ] } , - BigNum { limbs: [ 0x1a6dd107013e8f532cb2e6d8d5aba7, 0x5fb4f46a87242dcbdd1d919b4e16c6, 0x004c9c ] } , - BigNum { limbs: [ 0xdea62d1f54d511e3bc85d76ea76833, 0x123c1d3102d814f924706550b0ee18, 0x002ff2 ] } , - BigNum { limbs: [ 0xdefdd5e0a986ed1c437a27915897ce, 0x95170c6c7a701e40b397a45127173a, 0x0043fb ] } , - BigNum { limbs: [ 0x01fd6e8903fd24ca9e402838e7b804, 0xe66208321109df5658c6934f9225a0, 0x0038b7 ] } , - BigNum { limbs: [ 0xbba69476fa5eda3561bfd6c71847fd, 0xc0f1216b6c3e53e37f41765245dfb3, 0x003b35 ] } , - BigNum { limbs: [ 0x9f54c6d7b59e1bc86d5f8eb280c2a5, 0x033574a96bc88ca392e40dc1957a56, 0x004b03 ] } , - BigNum { limbs: [ 0x1e4f3c2848bde33792a0704d7f3d5c, 0xa41db4f4117fa6964523fbe0428afd, 0x0028ea ] } , - BigNum { limbs: [ 0x7412898d6ec5a684b8c9b4446fd582, 0xa0bc8b54424d416ef204603f8b860b, 0x004d22 ] } , - BigNum { limbs: [ 0x499179728f96587b47364abb902a7f, 0x06969e493afaf1cae603a9624c7f48, 0x0026cb ] } , - BigNum { limbs: [ 0x8ef8cfb50c7a249284f53bac1d176d, 0xe03a90185ce536cb0bbf36a5147dbd, 0x003f05 ] } , - BigNum { limbs: [ 0x2eab334af1e1da6d7b0ac353e2e894, 0xc71899852062fc6ecc48d2fcc38796, 0x0034e7 ] } , - BigNum { limbs: [ 0x02f98d2c83947e2dba2893980d82a1, 0x3e116737fbc055192d14fd3355fac4, 0x006a2e ] } , - BigNum { limbs: [ 0xbaaa75d37ac780d245d76b67f27d60, 0x6941c2658187de20aaf30c6e820a8f, 0x0009bf ] } , - BigNum { limbs: [ 0x704befa1add72aad7c381607a6dc93, 0xd71fcfdec95d9e6f0df792f71cd2b9, 0x004429 ] } , - BigNum { limbs: [ 0x4d58135e5084d45283c7e8f859236e, 0xd03359beb3ea94caca1076aabb329a, 0x002fc3 ] } , - BigNum { limbs: [ 0xacbe2262b418a2638837860d447b9d, 0xb031c71b320491e8eac686cb1238e2, 0x005248 ] } , - BigNum { limbs: [ 0x10e5e09d4a435c9c77c878f2bb8464, 0xf72162824b43a150ed4182d6c5cc71, 0x0021a4 ] } , - BigNum { limbs: [ 0xc886804b43a5dacc3ea2ee65d4ecb0, 0xe237f84bb358a39307fe3d83d27933, 0x006cd8 ] } , - BigNum { limbs: [ 0xf51d82b4bab62433c15d109a2b1351, 0xc51b3151c9ef8fa6d009cc1e058c1f, 0x000714 ] } , - BigNum { limbs: [ 0x88b4c47ce02d29745cf81a1cf54e2d, 0x9e819ea54579f978a898349e337379, 0x000665 ] } , - BigNum { limbs: [ 0x34ef3e831e2ed58ba307e4e30ab1d4, 0x08d18af837ce39c12f6fd503a491da, 0x006d88 ] } , - BigNum { limbs: [ 0x8a365beaee9aa1222a95355823a93a, 0x2a0011d0128b4df1c0100c05fb20e5, 0x0033dc ] } , - BigNum { limbs: [ 0x336da7150fc15dddd56ac9a7dc56c7, 0x7d5317cd6abce54817f7fd9bdce46e, 0x004011 ] } , - BigNum { limbs: [ 0x4eda2c912d8baded283c9c8d205bfe, 0xe1810ab167f245b80dec4d09a98c31, 0x00552b ] } , - BigNum { limbs: [ 0x6ec9d66ed0d05112d7c36272dfa403, 0xc5d21eec1555ed81ca1bbc982e7922, 0x001ec1 ] } , - BigNum { limbs: [ 0xc31471f92176911381369eee0865c5, 0x8c9032027765b113e55827adc0428d, 0x0020ff ] } , - BigNum { limbs: [ 0xfa8f9106dce56dec7ec96011f79a3c, 0x1ac2f79b05e28225f2afe1f417c2c5, 0x0052ee ] } , - BigNum { limbs: [ 0xb518d7c5636f87a2aab21fcede5484, 0xacff35d604c8bf73e9ca8faec02fe6, 0x003e6d ] } , - BigNum { limbs: [ 0x088b2b3a9aec775d554ddf3121ab7d, 0xfa53f3c7787f73c5ee3d79f317d56d, 0x00357f ] } , - BigNum { limbs: [ 0x1286d896cbfaaefcabcc3fa54d8ae9, 0x13027cc426755f5419542774017907, 0x006214 ] } , - BigNum { limbs: [ 0xab1d2a69326150035433bf5ab27518, 0x9450acd956d2d3e5beb3e22dd68c4c, 0x0011d9 ] } , - BigNum { limbs: [ 0x09812ba3c0f58f7970653080f3fa54, 0x9e591bf80a2cb8ea6c14c8a4a47832, 0x004267 ] } , - BigNum { limbs: [ 0xb422d75c3d666f868f9ace7f0c05ad, 0x08fa0da5731b7a4f6bf340fd338d21, 0x003186 ] } , - BigNum { limbs: [ 0x1c675954836f9c7261f7a14309d84e, 0x7a684366240451bc61eab00baea204, 0x0011f6 ] } , - BigNum { limbs: [ 0xa13ca9ab7aec628d9e085dbcf627b3, 0x2ceae6375943e17d761d599629634f, 0x0061f7 ] } , - BigNum { limbs: [ 0x6360aeba1c512d9fcacc28c5b97ee3, 0x96d85c56965d5c00d547b7fce38aca, 0x006354 ] } , - BigNum { limbs: [ 0x5a435445e20ad1603533d63a46811e, 0x107acd46e6ead73902c051a4f47a89, 0x001099 ] } , - BigNum { limbs: [ 0xae4e968224f635199d5428ad4548ef, 0x7eea765f85d55b02af61b8a3169be9, 0x003a3f ] } , - BigNum { limbs: [ 0x0f556c7dd965c9e662abd652bab712, 0x2868b33df772d83728a650fec1696a, 0x0039ae ] } , - BigNum { limbs: [ 0xb44b7a25558c2344733b2c1242b92e, 0xf905524c46db336792732ae950f775, 0x006c09 ] } , - BigNum { limbs: [ 0x095888daa8cfdbbb8cc4d2edbd46d3, 0xae4dd751366cffd24594deb8870dde, 0x0007e3 ] } , - BigNum { limbs: [ 0x62b737fa19789e9f7fc03621b99719, 0x8e1c05c1d8cd5a6e1f37c1ae346a47, 0x0032a2 ] } , - BigNum { limbs: [ 0x5aeccb05e4e36060803fc8de4668e8, 0x193723dba47ad8cbb8d047f3a39b0c, 0x00414b ] } , - BigNum { limbs: [ 0xa5504e11f3ccdbfa9af80fd15595f8, 0x9cc25f53a7f44defe519c94b64d289, 0x0046cc ] } , - BigNum { limbs: [ 0x1853b4ee0a8f23056507ef2eaa6a09, 0x0a90ca49d553e549f2ee40567332ca, 0x002d21 ] } , - BigNum { limbs: [ 0x977f0e8581983b79cde8dbf0bb8e08, 0xfdc7ec01cb9fc5c6f227e1ebd71b3d, 0x003bc0 ] } , - BigNum { limbs: [ 0x2624f47a7cc3c3863217230f4471f9, 0xa98b3d9bb1a86d72e5e027b600ea16, 0x00382c ] } , - BigNum { limbs: [ 0x3a6768f3b303ee0a4b3949fb7851e2, 0x855f6e0a87bae9f8a2392c25156520, 0x005809 ] } , - BigNum { limbs: [ 0x833c9a0c4b5810f5b4c6b50487ae1f, 0x21f3bb92f58d494135cedd7cc2a033, 0x001be4 ] } , - BigNum { limbs: [ 0xca21303074bde2995b954a966b763b, 0xdc985ccb1c3452822e1847322d7020, 0x004be9 ] } , - BigNum { limbs: [ 0xf382d2cf899e1c66a46ab4699489c6, 0xcabaccd26113e0b7a9efc26faa9532, 0x002803 ] } , - BigNum { limbs: [ 0x54932cc64f5de78ab495ab0223b36d, 0x1e85b426c5243ebbdbafc9bba6611a, 0x00521d ] } , - BigNum { limbs: [ 0x6910d639aefe17754b6a53fddc4c94, 0x88cd7576b823f47dfc583fe631a439, 0x0021d0 ] } , - BigNum { limbs: [ 0xb042c63c9261c9707b77dd1bca9b98, 0x9e01c27b06aa40abf1469ded1c171d, 0x0044c2 ] } , - BigNum { limbs: [ 0x0d613cc36bfa358f848821e4356469, 0x09516722769df28de6c16bb4bbee36, 0x002f2b ] } , - BigNum { limbs: [ 0x47d12a3e69b4fc51eec449971cc3c5, 0xa9b76b7237ecdcbceec5bd388b5d99, 0x001a7e ] } , - BigNum { limbs: [ 0x75d2d8c194a702ae113bb568e33c3c, 0xfd9bbe2b455b567ce9424c694ca7ba, 0x00596e ] } , - BigNum { limbs: [ 0xe72dbe134c6fdb4a1d36cf8df8f992, 0x70e938e86c9842198f6ce41536c829, 0x00675d ] } , - BigNum { limbs: [ 0xd67644ecb1ec23b5e2c92f7207066f, 0x3669f0b510aff120489b258ca13d29, 0x000c90 ] } , - BigNum { limbs: [ 0xfa90da84ad6d9214ef82ee886d1cd0, 0xb15e939a0f6dbd6391899119cc2cb9, 0x00545a ] } , - BigNum { limbs: [ 0xc313287b50ee6ceb107d107792e331, 0xf5f496036dda75d6467e78880bd899, 0x001f92 ] } , - BigNum { limbs: [ 0xb1cf1c5815d3657a771377ed444ace, 0xe2ec3fa911ac9989acfafbf7f39399, 0x004085 ] } , - BigNum { limbs: [ 0x0bd4e6a7e888998588ec8712bbb533, 0xc466e9f46b9b99b02b0d0da9e471ba, 0x003367 ] } , - BigNum { limbs: [ 0x81ba8e7f3907e60ba25204854a8ad0, 0xbcbce618e9430273f54bd20084ca90, 0x000d38 ] } , - BigNum { limbs: [ 0x3be97480c55418f45dadfa7ab57531, 0xea964384940530c5e2bc37a1533ac3, 0x0066b4 ] } , - BigNum { limbs: [ 0xfb60fcbc1643d1cacdc1127f8b8baa, 0xaa957b88a51a4ed6c2aa55822b6178, 0x0013cb ] } , - BigNum { limbs: [ 0xc2430643e8182d35323eec80747457, 0xfcbdae14d82de463155db41faca3da, 0x006021 ] } , - BigNum { limbs: [ 0xf6013a54b1701bdd62d7512f905e61, 0x709ec2e4ae5c12c3256f89c16f7e9a, 0x005c84 ] } , - BigNum { limbs: [ 0xc7a2c8ab4cebe3229d28add06fa1a0, 0x36b466b8ceec2076b2987fe06886b8, 0x001769 ] } , - BigNum { limbs: [ 0xe4fb89e9608365e5f72a1a1d1fecbe, 0x8e2378d075aa842a7367e53ce7ad5c, 0x000c53 ] } , - BigNum { limbs: [ 0xd8a879169dd8991a08d5e4e2e01343, 0x192fb0cd079daf0f64a02464f057f6, 0x00679a ] } , - BigNum { limbs: [ 0x085bae7ee5110f59a4d711ae82bcad, 0xc91bd75f1873557efa4e10935a9bd9, 0x0073d3 ] } , - BigNum { limbs: [ 0xb5485481194aefa65b28ed517d4354, 0xde37523e64d4ddbaddb9f90e7d697a, 0x000019 ] } , - BigNum { limbs: [ 0x2695152f6b5142e0be1f5c13db389d, 0x30a683d17da6a1837e5b131e431c9c, 0x0008be ] } , - BigNum { limbs: [ 0x970eedd0930abc1f41e0a2ec24c764, 0x76aca5cbffa191b659acf68394e8b7, 0x006b2f ] } , - BigNum { limbs: [ 0xd361931cc62e593329dcd088c58421, 0xea840c7c1995eabfe2b2e8b314fbe6, 0x00142c ] } , - BigNum { limbs: [ 0xea426fe3382da5ccd6232e773a7be0, 0xbccf1d2163b24879f55520eec3096c, 0x005fc0 ] } , - BigNum { limbs: [ 0x5fb6ea66dac1767674faaa2de759e5, 0xd63332a582db767b4506131aef995a, 0x002f2b ] } , - BigNum { limbs: [ 0x5ded1899239a88898b0554d218a61c, 0xd11ff6f7fa6cbcbe9301f686e86bf9, 0x0044c1 ] } , - BigNum { limbs: [ 0x5b024105902954e4ad61be21e283b4, 0x4fcaf05b2bafb727f1ca264d950f2d, 0x001f07 ] } , - BigNum { limbs: [ 0x62a1c1fa6e32aa1b529e40de1d7c4d, 0x5788394251987c11e63de35442f626, 0x0054e6 ] } , - BigNum { limbs: [ 0x9a5bc71498515bed93e370bba575a6, 0x94b0ff14fd213c43dd5ed570047253, 0x001cc7 ] } , - BigNum { limbs: [ 0x23483beb660aa3126c1c8e445a8a5b, 0x12a22a888026f6f5faa93431d39300, 0x005726 ] } , - BigNum { limbs: [ 0xea597cd61bb86ea86b9b5b82cb3fe2, 0xbdf521012435a0ccc0cf85b8c3e0c9, 0x000bec ] } , - BigNum { limbs: [ 0xd34a8629e2a390579464a37d34c01f, 0xe95e089c5912926d173883e9142489, 0x006800 ] } , - BigNum { limbs: [ 0xaaac595d440f8fdd767be7f73b818b, 0x1a01d84f100c913ebd351085edf455, 0x000791 ] } , - BigNum { limbs: [ 0x12f7a9a2ba4c6f2289841708c47e76, 0x8d51514e6d3ba1fb1ad2f91bea10fe, 0x006c5c ] } , - BigNum { limbs: [ 0xad1f311ba4999ab05556eb7751a8b4, 0xb9c6e5b1499251bb55939bfc3554dd, 0x002c15 ] } , - BigNum { limbs: [ 0x1084d1e459c2644faaa91388ae574d, 0xed8c43ec33b5e17e82746da5a2b076, 0x0047d7 ] } , - BigNum { limbs: [ 0xc41cf5f649c2caa6b10cd443088a48, 0xd4193fdfabdf6a36f4dc4f41628b76, 0x0051e1 ] } , - BigNum { limbs: [ 0xf9870d09b49934594ef32abcf775b9, 0xd339e9bdd168c902e32bba607579dc, 0x00220b ] } , - BigNum { limbs: [ 0x034e7b311b4055dde7503cb04c0494, 0x805eadb082b5d28e3de3258a2c9729, 0x0072e1 ] } , - BigNum { limbs: [ 0xba5587cee31ba92218afc24fb3fb6d, 0x26f47becfa9260ab9a24e417ab6e2a, 0x00010c ] } , - BigNum { limbs: [ 0x0c93e7b593f4021a04e45cdc589b09, 0x4da1d947613f44b714ea7b8d817caa, 0x005454 ] } , - BigNum { limbs: [ 0xb1101b4a6a67fce5fb1ba223a764f8, 0x59b150561c08ee82c31d8e145688a9, 0x001f99 ] } , - BigNum { limbs: [ 0x89bc1b0ba34703c87c4d9db4144f3f, 0x3d4962ba6f83539c469cd2fecbb14f, 0x0012b7 ] } , - BigNum { limbs: [ 0x33e7e7f45b14fb3783b2614bebb0c2, 0x6a09c6e30dc4df9d916b36a30c5404, 0x006136 ] } , - BigNum { limbs: [ 0x7eec846c006128d2a2f0a2ccaca02b, 0x7557a89b76dab0a2fe5e4300c9e041, 0x000f96 ] } , - BigNum { limbs: [ 0x3eb77e93fdfad62d5d0f5c33535fd6, 0x31fb8102066d8296d9a9c6a10e2512, 0x006457 ] } , - BigNum { limbs: [ 0x2dce7fa62abef76ef474639997b524, 0x29c6dfb12d903ca9ca762e25f67b62, 0x00208a ] } , - BigNum { limbs: [ 0x8fd58359d39d07910b8b9b66684add, 0x7d8c49ec4fb7f6900d91db7be189f1, 0x005363 ] } , - BigNum { limbs: [ 0x62091eff70e87c654f15578a055fef, 0x3070991cc8391661416356317928c9, 0x003197 ] } , - BigNum { limbs: [ 0x5b9ae4008d73829ab0eaa775faa012, 0x76e29080b50f1cd896a4b3705edc8a, 0x004256 ] } , - BigNum { limbs: [ 0x698e3b1cd304260eb391595bd738ae, 0x7ee150e18bb4ab3522894f9558bca1, 0x00154a ] } , - BigNum { limbs: [ 0x5415c7e32b57d8f14c6ea5a428c753, 0x2871d8bbf1938804b57eba0c7f48b2, 0x005ea3 ] } , - BigNum { limbs: [ 0x7857428dac417e211b67cf18c0fb8b, 0xe5f7dcd8c7dea2e01e9d23c8f5d8b3, 0x00452b ] } , - BigNum { limbs: [ 0x454cc072521a80dee4982fe73f0476, 0xc15b4cc4b5699059b96ae5d8e22ca0, 0x002ec1 ] } , - BigNum { limbs: [ 0x53628e062aca3b3e43f1d08abbb190, 0xd4907a9e2dcc23063173a924477b65, 0x001b8d ] } , - BigNum { limbs: [ 0x6a4174f9d391c3c1bc0e2e75444e71, 0xd2c2aeff4f7c1033a694607d9089ee, 0x00585f ] } , - BigNum { limbs: [ 0xb62450509f2296b6734e3efb28ae27, 0x07b8b435dcf86444e95bfbb6755b71, 0x0044ac ] } , - BigNum { limbs: [ 0x077fb2af5f3968498cb1c004d751da, 0x9f9a7567a04fcef4eeac0deb62a9e2, 0x002f41 ] } , - BigNum { limbs: [ 0x3e58e0117792f291c40fe2b678bf0b, 0xe2497ad927d2bdc9f8d4e596394c91, 0x0030ca ] } , - BigNum { limbs: [ 0x7f4b22ee86c90c6e3bf01c498740f6, 0xc509aec45575756fdf33240b9eb8c2, 0x004322 ] } , - BigNum { limbs: [ 0x5aa4a233e87d5e371d22c02ef82b68, 0x9a759829c14af4ad4275ba9c8f396e, 0x0027d1 ] } , - BigNum { limbs: [ 0x62ff60cc15dea0c8e2dd3ed107d499, 0x0cdd9173bbfd3e8c95924f0548cbe5, 0x004c1c ] } , - BigNum { limbs: [ 0xf3aa58e99269933f868ef74e34cedd, 0x6f2c61079dc8e838f3f4089133567b, 0x005b57 ] } , - BigNum { limbs: [ 0xc9f9aa166bf26bc0797107b1cb3124, 0x3826c895df7f4b00e4140110a4aed7, 0x001896 ] } , - BigNum { limbs: [ 0x5284eb9442ac1780f17eea495f2fba, 0xc09d6c47080906b54811a792aaebb3, 0x0051f2 ] } , - BigNum { limbs: [ 0x6b1f176bbbafe77f0e8114b6a0d047, 0xe6b5bd56753f2c848ff6620f2d19a0, 0x0021fa ] } , - BigNum { limbs: [ 0x98c422100bf610460bbc401371b569, 0xd623e1132e47a55bd37ad1ae91d283, 0x000936 ] } , - BigNum { limbs: [ 0x24dfe0eff265eeb9f443beec8e4a98, 0xd12f488a4f008dde048d37f34632d0, 0x006ab6 ] } , - BigNum { limbs: [ 0x346b65fb9f8e796ed42fc106e8beda, 0x50dab151a016e7d060c85744e084cb, 0x006a04 ] } , - BigNum { limbs: [ 0x89389d045ecd85912bd03df9174127, 0x5678784bdd314b69773fb25cf78088, 0x0009e9 ] } , - BigNum { limbs: [ 0x0adfc6d985a5ae6c8200cb4d658f9a, 0x9751fa53b16c827980386401953d4b, 0x0040f7 ] } , - BigNum { limbs: [ 0xb2c43c2678b650937dff33b29a7067, 0x10012f49cbdbb0c057cfa5a042c808, 0x0032f6 ] } , - BigNum { limbs: [ 0x33c8f960a3b828e30637eec3c90efb, 0xa350bec134a6681543e548f045c8cf, 0x0031de ] } , - BigNum { limbs: [ 0x89db099f5aa3d61cf9c8103c36f106, 0x04026adc48a1cb249422c0b1923c84, 0x00420f ] } , - BigNum { limbs: [ 0xaa8aa2ae8d483855c0e05deca56e9e, 0xf72ff852fa6c34f6da3a469aee95f2, 0x000430 ] } , - BigNum { limbs: [ 0x131960517113c6aa3f1fa1135a9163, 0xb023314a82dbfe42fdcdc306e96f61, 0x006fbc ] } , - BigNum { limbs: [ 0x14c45026a15310452a6be7a15f8884, 0xd5f6165507cff94f5f321dcc8058eb, 0x006447 ] } , - BigNum { limbs: [ 0xa8dfb2d95d08eebad594175ea0777d, 0xd15d1348757839ea78d5ebd557ac68, 0x000fa5 ] } , - BigNum { limbs: [ 0x090554eb33fa5104a58b430e6996b2, 0x2e6efad085ce099ee55f6c643d7050, 0x006f48 ] } , - BigNum { limbs: [ 0xb49eae14ca61adfb5a74bbf196694f, 0x78e42eccf77a299af2a89d3d9a9503, 0x0004a5 ] } , - BigNum { limbs: [ 0xf8278851c1fee5d03c6ec52cf53357, 0x3d1b421904d628771e64628611266c, 0x0020ee ] } , - BigNum { limbs: [ 0xc57c7aae3c5d192fc39139d30accaa, 0x6a37e78478720ac2b9a3a71bc6dee6, 0x0052ff ] } , - BigNum { limbs: [ 0xfdbf32b43aaca442be6ce09527043d, 0xf330ba7045942a14415e06f2962639, 0x00210d ] } , - BigNum { limbs: [ 0xbfe4d04bc3af5abd41931e6ad8fbc4, 0xb4226f2d37b4092596aa02af41df19, 0x0052df ] } , - BigNum { limbs: [ 0x605780acc9fc3e25679d4205bead5c, 0xf0d824781574c5a95982ab88f5b571, 0x005d86 ] } , - BigNum { limbs: [ 0x5d4c8253345fc0da9862bcfa4152a5, 0xb67b052567d36d907e855e18e24fe2, 0x001666 ] } , - BigNum { limbs: [ 0x9338ba645487f7e22b885d570466be, 0x78365db99a53bb71d2203317320520, 0x001c0a ] } , - BigNum { limbs: [ 0x2a6b489ba9d4071dd477a1a8fb9943, 0x2f1ccbe3e2f477c805e7d68aa60033, 0x0057e3 ] } , - BigNum { limbs: [ 0xa2eeb13cd7baac4a7da843d1a28e26, 0xeafd1a52ea67ca3184a7653385a26c, 0x0027f3 ] } , - BigNum { limbs: [ 0x1ab551c326a152b58257bb2e5d71db, 0xbc560f4a92e069085360a46e5262e7, 0x004bf9 ] } , - BigNum { limbs: [ 0x650a86f42f3f803712a3528462d455, 0xf451d76cf84877a580dbf24a0a84e3, 0x005a54 ] } , - BigNum { limbs: [ 0x58997c0bcf1c7ec8ed5cac7b9d2bac, 0xb301523084ffbb94572c1757cd8070, 0x001998 ] } , - BigNum { limbs: [ 0xfe1e6e95d0aec327463e76b0c70fbe, 0x79260464e8ae99392a6eec4a9e9cda, 0x006da8 ] } , - BigNum { limbs: [ 0xbf85946a2dad3bd8b9c1884f38f043, 0x2e2d253894999a00ad991d57396878, 0x000645 ] } , - BigNum { limbs: [ 0x43d3573392c9879302a025f9ab23ba, 0x149d6f7fbd6ce4d8804dbd8dc283b8, 0x0058ba ] } , - BigNum { limbs: [ 0x79d0abcc6b92776cfd5fd90654dc47, 0x92b5ba1dbfdb4e6157ba4c1415819b, 0x001b33 ] } , - BigNum { limbs: [ 0x54d02ff707ac89dc982deab639eb06, 0x2c879036d62fae65b5bdd485b39aa9, 0x005561 ] } , - BigNum { limbs: [ 0x68d3d308f6af752367d21449c614fb, 0x7acb9966a71884d4224a351c246aaa, 0x001e8c ] } , - BigNum { limbs: [ 0xec6f87c86e9c681df925ed5a2c9cfb, 0x9d4188a6785336fb4d3828a9b3a648, 0x001da1 ] } , - BigNum { limbs: [ 0xd1347b378fbf96e206da11a5d36306, 0x0a11a0f704f4fc3e8acfe0f8245f0a, 0x00564c ] } , - BigNum { limbs: [ 0x105880c703465c32a08467ac2436b1, 0x1edd08521ea1e7c6431e5ed67dde34, 0x004837 ] } , - BigNum { limbs: [ 0xad4b8238fb15a2cd5f7b9753dbc950, 0x8876214b5ea64b7394e9aacb5a271f, 0x002bb6 ] } , - BigNum { limbs: [ 0x59a409cc7e6f2bec383fc00e85dfce, 0xfb64ad9af424672ed81a5a6a224a05, 0x0057b3 ] } , - BigNum { limbs: [ 0x63fff9337fecd313c7c03ef17a2033, 0xabee7c028923cc0affedaf37b5bb4e, 0x001c39 ] } , - BigNum { limbs: [ 0x2c020814b3252933ddfe46cb18b5fd, 0x17f7a1c5dcf7a24ece69d503c0a1b8, 0x001392 ] } , - BigNum { limbs: [ 0x91a1faeb4b36d5cc2201b834e74a04, 0x8f5b87d7a05090eb099e349e17639b, 0x00605b ] } , - BigNum { limbs: [ 0x1ac4b576dc734f0e79877c1f463519, 0xdc11933326e6bab294408812d20036, 0x006cf9 ] } , - BigNum { limbs: [ 0xa2df4d8921e8aff1867882e0b9cae8, 0xcb41966a5661788743c7818f06051d, 0x0006f3 ] } , - BigNum { limbs: [ 0x6146b71a452f83a5498f85c0acb37c, 0x283cd146ddd312b729e1be36f038c6, 0x0039e4 ] } , - BigNum { limbs: [ 0x5c5d4be5b92c7b5ab670793f534c85, 0x7f1658569f752082ae264b6ae7cc8d, 0x003a09 ] } , - BigNum { limbs: [ 0x566e02605d2bed6065f959c6233844, 0xb1b1fdace98f0b8e3d39277bb259bf, 0x00209b ] } , - BigNum { limbs: [ 0x6736009fa130119f9a06a539dcc7bd, 0xf5a12bf093b927ab9acee22625ab94, 0x005351 ] } , - BigNum { limbs: [ 0x98e105959c45d394c82e5f7c447821, 0xface0536e215d0655a98d9383150aa, 0x0052a6 ] } , - BigNum { limbs: [ 0x24c2fd6a62162b6b37d19f83bb87e0, 0xac8524669b3262d47d6f3069a6b4a9, 0x002146 ] } , - BigNum { limbs: [ 0x1b59672b8d8e9735f5fdde513fd05d, 0x6bab49ec3a4032bec9c0ddf3eb781a, 0x001c0d ] } , - BigNum { limbs: [ 0xa24a9bd470cd67ca0a0220aec02fa4, 0x3ba7dfb14308007b0e472badec8d39, 0x0057e0 ] } , - BigNum { limbs: [ 0xfe232c77e099e5f37af228a5555107, 0x604a7d36bde4eb9bf8f241eea27b8f, 0x005842 ] } , - BigNum { limbs: [ 0xbf80d6881dc2190c850dd65aaaaefa, 0x4708ac66bf63479ddf15c7b33589c3, 0x001bab ] } , - BigNum { limbs: [ 0xe6dc9e07d85957dd743e3e181c020c, 0x5a641cf84e20bae9ce1c8b230a5b4f, 0x006d95 ] } , - BigNum { limbs: [ 0xd6c764f82602a7228bc1c0e7e3fdf5, 0x4cef0ca52f27785009eb7e7ecdaa03, 0x000658 ] } , - BigNum { limbs: [ 0x490e86e2d7338abbcf6ee1d10fd295, 0xa69185ee8e032bfd6b56e99da531ec, 0x000b63 ] } , - BigNum { limbs: [ 0x74957c1d2728744430911d2ef02d6c, 0x00c1a3aeef45073c6cb1200432d367, 0x00688a ] } , - BigNum { limbs: [ 0x0a04502ae38471b8c15bec5cf65885, 0x0e3dc84e44464df690801e7d69a869, 0x0036b0 ] } , - BigNum { limbs: [ 0xb39fb2d51ad78d473ea412a309a77c, 0x9915614f3901e5434787eb246e5cea, 0x003d3d ] } , - BigNum { limbs: [ 0x4ba05c89541c50c9fbe64484b58cd2, 0x86c754f73a316f5b3e6a6d45087bff, 0x0053e0 ] } , - BigNum { limbs: [ 0x7203a676aa3fae360419ba7b4a732f, 0x208bd4a64316c3de999d9c5ccf8954, 0x00200d ] } , - BigNum { limbs: [ 0xf28b0bf4e7f5b784b6000d14e250c9, 0x58bfeea7581bc57449c63c5f5a46f3, 0x007351 ] } , - BigNum { limbs: [ 0xcb18f70b1666477b49fff1eb1daf38, 0x4e933af6252c6dc58e41cd427dbe5f, 0x00009c ] } , - BigNum { limbs: [ 0x783c383a36e40ab3a904c6992c57f8, 0xa79f979d52ecfbb250856e03cd4840, 0x000c39 ] } , - BigNum { limbs: [ 0x4567cac5c777f44c56fb3866d3a809, 0xffb392002a5b378787829b9e0abd13, 0x0067b3 ] } , - BigNum { limbs: [ 0xe10354b641c46fd6140cc679fff377, 0xfb8d71dd416366c2aa155935f02c7b, 0x002015 ] } , - BigNum { limbs: [ 0xdca0ae49bc978f29ebf33886000c8a, 0xabc5b7c03be4cc772df2b06be7d8d7, 0x0053d7 ] } , - BigNum { limbs: [ 0x299b9b052b53f2009e25cba2de7398, 0x0a08ba66c215b3285fed26b654cc6e, 0x001a83 ] } , - BigNum { limbs: [ 0x940867fad3080cff61da335d218c69, 0x9d4a6f36bb328011781ae2eb8338e5, 0x00596a ] } , - BigNum { limbs: [ 0x69789b07c212e561c334712a894f0c, 0xf99bf33815af9dee448a6bfa62fce9, 0x0029ab ] } , - BigNum { limbs: [ 0x542b67f83c49199e3ccb8dd576b0f5, 0xadb736656798954b937d9da775086a, 0x004a41 ] } , - BigNum { limbs: [ 0x46d45a9773ae6b86c9d7e18da89b3b, 0xcccaaa691dce3ee4751eb94379dff6, 0x0018cb ] } , - BigNum { limbs: [ 0x76cfa8688aad937936281d725764c6, 0xda887f345f79f45562e9505e5e255d, 0x005b21 ] } , - BigNum { limbs: [ 0xd2a67b43235e5634958f1eb0ad95e0, 0x734ae388017271fe8e78b97091cf88, 0x004a15 ] } , - BigNum { limbs: [ 0xeafd87bcdafda8cb6a70e04f526a21, 0x340846157bd5c13b498f50314635ca, 0x0029d8 ] } , - BigNum { limbs: [ 0xa001a9afc07ac661370d2ef55e633f, 0xe7e3351eae01f339c80d8abb20ba62, 0x00519c ] } , - BigNum { limbs: [ 0x1da259503de1389ec8f2d00aa19cc2, 0xbf6ff47ecf4640000ffa7ee6b74af1, 0x002250 ] } , - BigNum { limbs: [ 0xb9c9516fb972965a1ac3122c925449, 0xaaa7eec63b5c6d153148e0de7980e1, 0x001abe ] } , - BigNum { limbs: [ 0x03dab19044e968a5e53cecd36dabb8, 0xfcab3ad741ebc624a6bf28c35e8472, 0x00592e ] } , - BigNum { limbs: [ 0x2046acd0462dd5291f6caf69385d7e, 0x54cb8802be0be7b58b1aabbe621d88, 0x006a27 ] } , - BigNum { limbs: [ 0x9d5d562fb82e29d6e0934f96c7a283, 0x5287a19abf3c4b844ced5de375e7cb, 0x0009c6 ] } , - BigNum { limbs: [ 0x4b3eeb312542d52b6ef4b5e4f07753, 0x48916408e1403ddc5cc045c61c74b1, 0x006327 ] } , - BigNum { limbs: [ 0x726517ced91929d4910b491b0f88ae, 0x5ec1c5949c07f55d7b47c3dbbb90a2, 0x0010c6 ] } , - BigNum { limbs: [ 0x29b73e056bf13feaaf86f52a8c2998, 0x797773363ea48510d4a6c7bf4703e5, 0x003aa3 ] } , - BigNum { limbs: [ 0x93ecc4fa926abf15507909d573d669, 0x2ddbb6673ea3ae29036141e291016e, 0x00394a ] } , - BigNum { limbs: [ 0xe217f3e61986866cebadf86d5ef842, 0x51b588c5486f9e4a3c935036d7e4ad, 0x000692 ] } , - BigNum { limbs: [ 0xdb8c0f19e4d5789314520692a107bf, 0x559da0d834d894ef9b74b96b0020a5, 0x006d5b ] } , - BigNum { limbs: [ 0x70ba2c4850053795878746ef294988, 0xd6873cec26b5ad7a0348fef3d1481d, 0x002514 ] } , - BigNum { limbs: [ 0x4ce9d6b7ae56c76a7878b810d6b679, 0xd0cbecb1569285bfd4bf0aae06bd36, 0x004ed8 ] } , - BigNum { limbs: [ 0x2326a7250b148905c0719e56d6fd15, 0x28e8540547c82ea819c9f75581beae, 0x00214b ] } , - BigNum { limbs: [ 0x9a7d5bdaf34775fa3f8e60a92902ec, 0x7e6ad59835800491be3e124c5646a5, 0x0052a2 ] } , - BigNum { limbs: [ 0x2a99c98beb4f0ce0f40a4dd1d52a86, 0xfec5ede539564d9fc90c4fa5fd592a, 0x0034ec ] } , - BigNum { limbs: [ 0x930a3974130cf21f0bf5b12e2ad57b, 0xa88d3bb843f1e59a0efbb9fbdaac29, 0x003f00 ] } , - BigNum { limbs: [ 0xb10116cf84071cc2198afed5e23a69, 0xbca7f7fff62cc3b7655c2a495f7bb8, 0x0060c5 ] } , - BigNum { limbs: [ 0x0ca2ec307a54e23de675002a1dc598, 0xeaab319d871b6f8272abdf5878899b, 0x001327 ] } , - BigNum { limbs: [ 0x422b4706016552e5731ff5b7e4f90d, 0xda29cd8e836193bb3960bdb203fa67, 0x000bd0 ] } , - BigNum { limbs: [ 0x7b78bbf9fcf6ac1a8ce009481b06f4, 0xcd295c0ef9e69f7e9ea74befd40aec, 0x00681c ] } , - BigNum { limbs: [ 0x555798eb4755185b1ba72cfa6bf59c, 0xf2983cfa6f6538e38a562e53e2aa7e, 0x005ddd ] } , - BigNum { limbs: [ 0x684c6a14b706e6a4e458d205940a65, 0xb4baeca30de2fa564db1db4df55ad5, 0x00160f ] } , - BigNum { limbs: [ 0x8832dd3f5ef62c0943fb0d33375fa6, 0x316646121226ce3015ae580132b4b1, 0x004573 ] } , - BigNum { limbs: [ 0x357125c09f65d2f6bc04f1ccc8a05b, 0x75ece38b6b216509c259b1a0a550a2, 0x002e7a ] } , - BigNum { limbs: [ 0x9c6ffecb2dacc1f1d431c78293c8b9, 0x543fac296aec7a34c5516a0a165973, 0x00428b ] } , - BigNum { limbs: [ 0x21340434d0af3d0e2bce377d6c3748, 0x53137d74125bb90512b69f97c1abe0, 0x003162 ] } , - BigNum { limbs: [ 0x064543e057b3b60d232820cad187ef, 0xad4cc8249a0bad4e635a0383373bf5, 0x001864 ] } , - BigNum { limbs: [ 0xb75ebf1fa6a848f2dcd7de352e7812, 0xfa066178e33c85eb74ae061ea0c95e, 0x005b88 ] } , - BigNum { limbs: [ 0x456225029cb18a7502d8d6f4e2d92c, 0xf177268722515b549d34a1faf96665, 0x002cb6 ] } , - BigNum { limbs: [ 0x7841ddfd61aa748afd27280b1d26d5, 0xb5dc03165af6d7e53ad367a6de9eee, 0x004736 ] } , - BigNum { limbs: [ 0x19a75e369fc40f9d1b43bbcb2db55f, 0x1043f5e5d8aa7b1cb6f0e1b5086227, 0x005f63 ] } , - BigNum { limbs: [ 0xa3fca4c95e97ef62e4bc4334d24aa2, 0x970f33b7a49db81d211727eccfa32c, 0x00148a ] } , - BigNum { limbs: [ 0xa2acecf84b9591015b5a9e7efdcc8f, 0xf40c787ed436bd55fc1ce1a15d2bd6, 0x003d0a ] } , - BigNum { limbs: [ 0x1af71607b2c66dfea4a56081023372, 0xb346b11ea91175e3dbeb28007ad97d, 0x0036e2 ] } , - BigNum { limbs: [ 0xe415a5bdd1fee3d8007db2ad235e31, 0x7e6aa480cbd5388721c3067cad8763, 0x00255e ] } , - BigNum { limbs: [ 0xd98e5d422c5d1b27ff824c52dca1d0, 0x28e8851cb172fab2b64503252a7def, 0x004e8f ] } , - BigNum { limbs: [ 0x75ffd5b8aa14c8c2bb0fc195a9a46a, 0xe8cdba31be2bd5e4e45ff85fceda4a, 0x002284 ] } , - BigNum { limbs: [ 0x47a42d475447363d44f03d6a565b97, 0xbe856f6bbf1c5d54f3a81142092b09, 0x005168 ] } , - BigNum { limbs: [ 0x8bcd8e668308241d4f6d303fae354e, 0x5b0cdb84eb576f71a79480496183ec, 0x005489 ] } , - BigNum { limbs: [ 0x31d674997b53dae2b092cec051cab3, 0x4c464e1891f0c3c830738958768167, 0x001f64 ] } , - BigNum { limbs: [ 0x1539aec479a3eae71c612ef0f04618, 0x7aeb402a1579d6fb7196875d5e30ee, 0x003678 ] } , - BigNum { limbs: [ 0xa86a543b84b81418e39ed00f0fb9e9, 0x2c67e97367ce5c3e6671824479d465, 0x003d75 ] } , - BigNum { limbs: [ 0x3a2b43df04e837f25c4b9ba792b486, 0xd9a47f020288b6790a020273b05fcb, 0x003946 ] } , - BigNum { limbs: [ 0x8378bf20f973c70da3b463586d4b7b, 0xcdaeaa9b7abf7cc0ce06072e27a588, 0x003aa6 ] } , - BigNum { limbs: [ 0xbc9e7d1f83ead2f498d6cba7e71967, 0x7ba713b76b71dceef4a2a7aecba80e, 0x003d50 ] } , - BigNum { limbs: [ 0x010585e07a712c0b6729335818e69a, 0x2bac15e611d6564ae36561f30c5d45, 0x00369d ] } , - BigNum { limbs: [ 0x187dab62963f68a56f00f6b6f40225, 0x9d592f067d015a66f6c67f6a57f8c9, 0x004c40 ] } , - BigNum { limbs: [ 0xa526579d681c965a90ff08490bfddc, 0x09f9fa970046d8d2e1418a37800c8a, 0x0027ad ] } , - BigNum { limbs: [ 0x9d647a3422178d6b7347fd24da80dd, 0x03b6b7bd0d68ebebb9a5e00c1c5325, 0x007365 ] } , - BigNum { limbs: [ 0x203f88cbdc4471948cb801db257f24, 0xa39c71e06fdf474e1e622995bbb22e, 0x000088 ] } , - BigNum { limbs: [ 0xe43ffe9845c09c44c99b42a258cf41, 0xb4f5f124689404a42f39cbf6436f5a, 0x006ce0 ] } , - BigNum { limbs: [ 0xd9640467b89b62bb3664bc5da730c0, 0xf25d387914b42e95a8ce3dab9495f8, 0x00070c ] } , - BigNum { limbs: [ 0xf287b6874e6d31bce75b32ad6219bb, 0x1ca1a8e76b30cc68dc1098dbbe0fc2, 0x000ccb ] } , - BigNum { limbs: [ 0xcb1c4c78afeecd4318a4cc529de646, 0x8ab180b6121766d0fbf770c619f590, 0x006722 ] } , - BigNum { limbs: [ 0xcb71cf8107705aab63cccb2a32517a, 0x8bd5c55fb197d2e741eae670a33295, 0x0062bc ] } , - BigNum { limbs: [ 0xf232337ef6eba4549c3333d5cdae87, 0x1b7d643dcbb06052961d233134d2bd, 0x001131 ] } , - BigNum { limbs: [ 0xeafdaec40db2db47455c390c6aee58, 0xaca36c4d48fb5a07ecb98c1fb03e79, 0x003ffb ] } , - BigNum { limbs: [ 0xd2a6543bf0a923b8baa3c5f39511a9, 0xfaafbd50344cd931eb4e7d8227c6d9, 0x0033f1 ] } , - BigNum { limbs: [ 0xa62c54921a1fc333c30ba9fc5d9408, 0x5e23254e166fcbe0d031bf45a819bc, 0x001de8 ] } , - BigNum { limbs: [ 0x1777ae6de43c3bcc3cf45503a26bf9, 0x4930044f66d8675907d64a5c2feb97, 0x005605 ] } , - BigNum { limbs: [ 0x473f185d274859384e4f2050b77241, 0xc886cf3718c89bb53756647b160952, 0x006fe1 ] } , - BigNum { limbs: [ 0x7664eaa2d713a5c7b1b0deaf488dc0, 0xdecc5a66647f9784a0b1a526c1fc01, 0x00040b ] } , - BigNum { limbs: [ 0x0fe7e8d3b75fd27289e93465edcd24, 0x65deb6aea5b7e996c18b09a54722d4, 0x001c17 ] } , - BigNum { limbs: [ 0xadbc1a2c46fc2c8d7616ca9a1232dd, 0x417472eed79049a3167cfffc90e27f, 0x0057d6 ] } , - BigNum { limbs: [ 0xc341474427a5cd5bd296e845dcbfb5, 0x6707fe5efd07cd1011849e902ff6bd, 0x0055d3 ] } , - BigNum { limbs: [ 0xfa62bbbbd6b631a42d6916ba23404c, 0x404b2b3e80406629c6836b11a80e95, 0x001e1a ] } , - BigNum { limbs: [ 0xe9223244954aaa734d619f973237e7, 0xfcaf5204ab299e5ef812ad351829d3, 0x0010de ] } , - BigNum { limbs: [ 0xd481d0bb6911548cb29e5f68cdc81a, 0xaaa3d798d21e94dadff55c6cbfdb7f, 0x00630e ] } , - BigNum { limbs: [ 0xba94880d17053f5ef86d28dc13f876, 0xf7ff81a4ec0c19ed2d449ee8246672, 0x0053fd ] } , - BigNum { limbs: [ 0x030f7af2e756bfa10792d623ec078b, 0xaf53a7f8913c194caac36ab9b39ee1, 0x001fef ] } , - BigNum { limbs: [ 0xf356ccaa4665a4858c20d032f1dfd1, 0x323a6fa047f372483da0a591748216, 0x0028d0 ] } , - BigNum { limbs: [ 0xca4d3655b7f65a7a73df2ecd0e2030, 0x7518b9fd3554c0f19a67641063833c, 0x004b1d ] } , - BigNum { limbs: [ 0xea9f6b8c112bc277e7985eccea0a2e, 0x7c085d210cfbe40133b24b6a04e398, 0x002b38 ] } , - BigNum { limbs: [ 0xd3049773ed303c881867a03315f5d3, 0x2b4acc7c704c4f38a455be37d321ba, 0x0048b5 ] } , - BigNum { limbs: [ 0xfacd9bdaeced92f1c63a3e21536c74, 0x2c49512b58044e2cb934051e4bcc10, 0x003768 ] } , - BigNum { limbs: [ 0xc2d66725116e6c0e39c5c0deac938d, 0x7b09d8722543e50d1ed404838c3942, 0x003c85 ] } , - BigNum { limbs: [ 0xf8afc0ab3e780e673fe1436f1188a3, 0x39b67add49c6894b9bffa0bac8addb, 0x003031 ] } , - BigNum { limbs: [ 0xc4f44254bfe3f098c01ebb90ee775e, 0x6d9caec03381a9ee3c0868e70f5777, 0x0043bc ] } , - BigNum { limbs: [ 0xbfc6dfa383c3529f74186ef551cf01, 0x050ea80c2905e5d8ec0e13f53e1413, 0x001736 ] } , - BigNum { limbs: [ 0xfddd235c7a98ac608be7900aae3100, 0xa244819154424d60ebf9f5ac99f13f, 0x005cb7 ] } , - BigNum { limbs: [ 0x73942e79cb0c8527f72a3e2c51e0ef, 0x09a87758062390936779b0cf57423e, 0x001924 ] } , - BigNum { limbs: [ 0x4a0fd486334f79d808d5c0d3ae1f12, 0x9daab2457724a2a6708e58d280c315, 0x005ac9 ] } , - BigNum { limbs: [ 0xd3177ffb8458b6f6d43ea8eba51c43, 0x42ba55ccf0777efa9276273f44b642, 0x006154 ] } , - BigNum { limbs: [ 0xea8c83047a0348092bc156145ae3be, 0x6498d3d08cd0b43f4591e262934f10, 0x001299 ] } , - BigNum { limbs: [ 0xf3bce46524da0b064118870afa5991, 0x00e63443e6f22ebb4b1bfd25f5d94b, 0x005e00 ] } , - BigNum { limbs: [ 0xc9e71e9ad981f3f9bee777f505a670, 0xa66cf5599656047e8cec0c7be22c07, 0x0015ed ] } , - BigNum { limbs: [ 0x130e41e9b742cb2dc5b5edb7ed29cb, 0x92313662237252147de2718db6063f, 0x00212d ] } , - BigNum { limbs: [ 0xaa95c116471933d23a4a114812d636, 0x1521f33b59d5e1255a25981421ff14, 0x0052c0 ] } , - BigNum { limbs: [ 0xe8597f0a34401b1da30162c605bbd6, 0xb3b34e0e308633c7af6db3c3b90ee3, 0x0043aa ] } , - BigNum { limbs: [ 0xd54a83f5ca1be3e25cfe9c39fa442b, 0xf39fdb8f4cc1ff72289a55de1ef66f, 0x003042 ] } , - BigNum { limbs: [ 0x4fb2cf08cc41d90df31729861ca313, 0x035bb4abde283b9127bae17944e80b, 0x005b27 ] } , - BigNum { limbs: [ 0x6df133f7321a25f20ce8d579e35cee, 0xa3f774f19f1ff7a8b04d2828931d48, 0x0018c6 ] } , - BigNum { limbs: [ 0xae06c77e2589c0212b5a0ca9563807, 0xbf06653c93d29d34ba2c335b34dd86, 0x0052cf ] } , - BigNum { limbs: [ 0x0f9d3b81d8d23eded4a5f256a9c7fa, 0xe84cc460e97596051ddbd646a327cd, 0x00211d ] } , - BigNum { limbs: [ 0x50713e4385fe1f707b23379bcba192, 0x634395da771c85f87b25332f515a54, 0x0016b0 ] } , - BigNum { limbs: [ 0x6d32c4bc785ddf8f84dcc764345e6f, 0x440f93c3062bad415ce2d67286aaff, 0x005d3d ] } , - BigNum { limbs: [ 0x57ac09af457179cbdfcf1745c64c5b, 0x56b7e031e508dcdbf68fb0adb51274, 0x0048ec ] } , - BigNum { limbs: [ 0x65f7f950b8ea85342030e7ba39b3a6, 0x509b496b983f565de17858f422f2df, 0x002b01 ] } , - BigNum { limbs: [ 0xb0b2cc3152108317ed7d2589d7b63c, 0x5ff559f439878728eeeca63fee7606, 0x0025e8 ] } , - BigNum { limbs: [ 0x0cf136ceac4b7be81282d9762849c5, 0x475dcfa943c0ac10e91b6361e98f4d, 0x004e05 ] } , - BigNum { limbs: [ 0xc80073fd2d821b091fc9ffdfd7d77f, 0x1467eaed726a422df44415007b2179, 0x0024a5 ] } , - BigNum { limbs: [ 0xf5a38f02d0d9e3f6e035ff20282882, 0x92eb3eb00addf10be3c3f4a15ce3d9, 0x004f48 ] } , - BigNum { limbs: [ 0xa7f81e23d36f6f25f9f9f54d4b827c, 0x93d1e4854df3e6af6f2ffdd6318a61, 0x000a0f ] } , - BigNum { limbs: [ 0x15abe4dc2aec8fda060609b2b47d85, 0x138145182f544c8a68d80bcba67af2, 0x0069de ] } , - BigNum { limbs: [ 0xa52d5408323ba0de51bd26d82135d1, 0x3829379642e4d0d36e40493b4633f2, 0x006326 ] } , - BigNum { limbs: [ 0x1876aef7cc205e21ae42d827deca30, 0x6f29f2073a63626669c7c06691d161, 0x0010c7 ] } , - BigNum { limbs: [ 0xe4ba764571d6dfac24331044e513b5, 0x29ae1feabce0702f2744e5c4fed20f, 0x001512 ] } , - BigNum { limbs: [ 0xd8e98cba8c851f53dbcceebb1aec4c, 0x7da509b2c067c30ab0c323dcd93343, 0x005edb ] } , - BigNum { limbs: [ 0x895d972c82f6b08a041d8b710913e0, 0xaf9532cb25e21fb2b962b42131ff6e, 0x00444e ] } , - BigNum { limbs: [ 0x34466bd37b654e75fbe2738ef6ec21, 0xf7bdf6d2576613871ea55580a605e5, 0x002f9e ] } , - BigNum { limbs: [ 0xd9ce39a69afbe2107836056af69cc9, 0x2ed220f013a27dfa3990a028e97425, 0x00512d ] } , - BigNum { limbs: [ 0xe3d5c95963601cef87c9f995096338, 0x788108ad69a5b53f9e776978ee912d, 0x0022c0 ] } , - BigNum { limbs: [ 0x187c9ee6adf533c974076c2dc30417, 0x5756db628954ec7daade0b32e44f53, 0x00734c ] } , - BigNum { limbs: [ 0xa52764195066cb368bf892d23cfbea, 0x4ffc4e3af3f346bc2d29fe6ef3b600, 0x0000a1 ] } , - BigNum { limbs: [ 0xd63fb9b7fafea8b3edd31ab94c4da5, 0xaf6eb9f0152e04a80c76d8935220ce, 0x0035a1 ] } , - BigNum { limbs: [ 0xe7644948035d564c122ce446b3b25c, 0xf7e46fad681a2e91cb91310e85e484, 0x003e4b ] } , - BigNum { limbs: [ 0xcaca432aea4e95633bd1bbc7d18f5d, 0x9f21e0d26ceffe9af70c7893f1db92, 0x005810 ] } , - BigNum { limbs: [ 0xf2d9bfd5140d699cc42e43382e70a4, 0x083148cb1058349ee0fb910de629c0, 0x001bdd ] } , - BigNum { limbs: [ 0xbe19e082013e12c70598422b07bb90, 0xe9d581aa4ab0a8c672a4f8f68b994a, 0x000d08 ] } , - BigNum { limbs: [ 0xff8a227dfd1dec38fa67bcd4f84471, 0xbd7da7f332978a73656310ab4c6c08, 0x0066e4 ] } , - BigNum { limbs: [ 0xe2deabb39325d6a0d9e8d24251896b, 0x60daa8d9f6384d473d87e5ceecf2f1, 0x005979 ] } , - BigNum { limbs: [ 0xdac5574c6b36285f26172cbdae7696, 0x467880c3870fe5f29a8023d2eb1261, 0x001a74 ] } , - BigNum { limbs: [ 0xb479c93959ccb963acc1ca749100a2, 0x899b596612cfe0aea93acaf92998fd, 0x006208 ] } , - BigNum { limbs: [ 0x092a39c6a48f459c533e348b6eff5f, 0x1db7d0376a78528b2ecd3ea8ae6c56, 0x0011e5 ] } , - BigNum { limbs: [ 0x9d079ac4df49870ec14b55e4495b09, 0xcc2ac820468dc1db121b7963b0541e, 0x002204 ] } , - BigNum { limbs: [ 0x209c683b1f1277f13eb4a91bb6a4f8, 0xdb28617d36ba715ec5ec903e27b135, 0x0051e8 ] } , - BigNum { limbs: [ 0x83ca443cb7cd40ee65fc7e14f4422d, 0xb15636eb2bb9e5fc39130c6530b939, 0x002aaf ] } , - BigNum { limbs: [ 0x39d9bec3468ebe119a0380eb0bbdd4, 0xf5fcf2b2518e4d3d9ef4fd3ca74c1a, 0x00493d ] } , - BigNum { limbs: [ 0xfd6d39831f8f23ecf617061b8850b6, 0x44133d6bd9d998e74601d1d2dc51b2, 0x002034 ] } , - BigNum { limbs: [ 0xc036c97cdeccdb1309e8f8e477af4b, 0x633fec31a36e9a52920637cefbb3a0, 0x0053b9 ] } , - BigNum { limbs: [ 0x056933371c5f5fed08d8ece11f69b7, 0x5a07024a754ebd820039fcef3cce97, 0x005bf3 ] } , - BigNum { limbs: [ 0xb83acfc8e1fc9f12f727121ee0964a, 0x4d4c275307f975b7d7ce0cb29b36bc, 0x0017fa ] } , - BigNum { limbs: [ 0x63e588093bc82f2d7c0c4bfb6be312, 0x865b29bbfa764ccf377245b9783c3a, 0x000137 ] } , - BigNum { limbs: [ 0x59be7af6c293cfd283f3b304941cef, 0x20f7ffe182d1e66aa095c3e85fc919, 0x0072b6 ] } , - BigNum { limbs: [ 0xba7f667bd4638097bbacda69feb898, 0xb712479f80a37f2a4e2a3316cf4575, 0x0072d6 ] } , - BigNum { limbs: [ 0x03249c8429f87e6844532496014769, 0xf040e1fdfca4b40f89ddd68b08bfde, 0x000116 ] } , - BigNum { limbs: [ 0x2a4d28be53ec6ffd187c934c549ff4, 0x428cb4ba35be18b7da0c0ea7f5cd3a, 0x000ade ] } , - BigNum { limbs: [ 0x9356da41aa6f8f02e7836bb3ab600d, 0x64c674e3478a1a81fdfbfaf9e23819, 0x00690f ] } , - BigNum { limbs: [ 0xee2004f51c7559cb15699d00d9ee84, 0xa9402312add15fb4822a16eb1965ec, 0x0015a5 ] } , - BigNum { limbs: [ 0xcf83fe0ae1e6a534ea9661ff26117d, 0xfe13068acf76d38555ddf2b6be9f66, 0x005e47 ] } , - BigNum { limbs: [ 0x108cc229f8d6c118bab557fd5c3da9, 0x308a9b762e456ef216be93050d2c03, 0x00734d ] } , - BigNum { limbs: [ 0xad1740d605853de7454aa702a3c258, 0x76c88e274f02c447c149769ccad950, 0x0000a0 ] } , - BigNum { limbs: [ 0x0ee0295a818ecc68b8d0deab01302c, 0xeded10438c3b18b7ed0ac50a32d509, 0x001f0f ] } , - BigNum { limbs: [ 0xaec3d9a57ccd3297472f2054fecfd5, 0xb9661959f10d1a81eafd4497a5304a, 0x0054dd ] } , - BigNum { limbs: [ 0xe63ed4ea14bfaf5ab63cd842a137c8, 0x28e5ee053064ff92383bdd9e9beab4, 0x004a0d ] } , - BigNum { limbs: [ 0xd7652e15e99c4fa549c326bd5ec839, 0x7e6d3b984ce333a79fcc2c033c1a9e, 0x0029e0 ] } , - BigNum { limbs: [ 0x711b036c0eb5b4d0f5bf82ad6a0469, 0xac9318bed9079bf9206768a4848d3a, 0x001b6a ] } , - BigNum { limbs: [ 0x4c88ff93efa64a2f0a407c5295fb98, 0xfac010dea4409740b7a0a0fd537819, 0x005882 ] } , - BigNum { limbs: [ 0x5f1f2d950d6234b08072ac0f23c66f, 0x7639706a1bdb575857f681ca6e986d, 0x005c7b ] } , - BigNum { limbs: [ 0x5e84d56af0f9ca4f7f8d52f0dc3992, 0x3119b933616cdbe1801187d7696ce6, 0x001772 ] } , - BigNum { limbs: [ 0x9e43326bdfc93195f3a9915d6294b3, 0x7065bfbb28beb08aab619910e4fb02, 0x006c23 ] } , - BigNum { limbs: [ 0x1f60d0941e92cd6a0c566da29d6b4e, 0x36ed69e2548982af2ca67090f30a51, 0x0007ca ] } , - BigNum { limbs: [ 0xd42052ca20e48a9e24c75ff38d109a, 0xfcacef081b66d6c7795cafe9525076, 0x0069c9 ] } , - BigNum { limbs: [ 0xe983b035dd777461db389f0c72ef67, 0xaaa63a9561e15c725eab59b885b4dc, 0x000a23 ] } , - BigNum { limbs: [ 0xad7d478339b2d24e5a6e8ff3fc3883, 0x54cbfcb378453798a21053866185c8, 0x000cb0 ] } , - BigNum { limbs: [ 0x1026bb7cc4a92cb1a5916f0c03c77e, 0x52872cea0502fba135f7b61b767f8b, 0x00673d ] } , - BigNum { limbs: [ 0xf10d38b070804c4bd4f9a657120496, 0x6374f94ac6e3a90254b47d85af5823, 0x001751 ] } , - BigNum { limbs: [ 0xcc96ca4f8ddbb2b42b0658a8edfb6b, 0x43de3052b6648a3783538c1c28ad2f, 0x005c9c ] } , - BigNum { limbs: [ 0xcc515f3f0c99cd00b68da4e78fc8a5, 0xaf7f64afb412337743f5b51e5dbe80, 0x00086a ] } , - BigNum { limbs: [ 0xf152a3c0f1c231ff49725a1870375c, 0xf7d3c4edc935ffc2941254837a46d2, 0x006b82 ] } , - BigNum { limbs: [ 0x1e12c653d194858811917c402c5e08, 0xfa3926888d559d1b2936451c8f7add, 0x00037e ] } , - BigNum { limbs: [ 0x9f913cac2cc77977ee6e82bfd3a1f9, 0xad1a0314eff2961eaed1c485488a76, 0x00706e ] } , - BigNum { limbs: [ 0x92ba88adc64481790af5ddb9c22acb, 0x1e099e5346fbdf496a976fef3b3a4f, 0x002cca ] } , - BigNum { limbs: [ 0x2ae97a5238177d86f50a21463dd536, 0x89498b4a364c53f06d7099b29ccb04, 0x004723 ] } , - BigNum { limbs: [ 0x09f1ed4d5c907482a1d5036a7dde43, 0x05e4e7546a4be8391505888956422e, 0x005204 ] } , - BigNum { limbs: [ 0xb3b215b2a1cb8a7d5e2afb958221be, 0xa16e424912fc4b00c302811881c325, 0x0021e9 ] } , - BigNum { limbs: [ 0x6f1e1629beffc7859d673e27dcf1b2, 0x33454c9c9c3b0833c643b07594d33a, 0x0010f3 ] } , - BigNum { limbs: [ 0x4e85ecd63f5c377a6298c0d8230e4f, 0x740ddd00e10d2b0611c4592c433219, 0x0062fa ] } , - BigNum { limbs: [ 0xd43c77fd9ffb0c74e9e52495016ac9, 0xafad8f93b1602de884f80e0737d375, 0x004c34 ] } , - BigNum { limbs: [ 0xe9678b025e60f28b161ada6afe9538, 0xf7a59a09cbe80551530ffb9aa031dd, 0x0027b8 ] } , - BigNum { limbs: [ 0x3db2a6bf5f6ca33c56d10c35c02735, 0xac06901cc1b3e8e451f06b9f0228cb, 0x002b83 ] } , - BigNum { limbs: [ 0x7ff15c409eef5bc3a92ef2ca3fd8cc, 0xfb4c9980bb944a5586179e02d5dc88, 0x004869 ] } , - BigNum { limbs: [ 0x383365ea4a31c0f3eb464aec60b835, 0xf3c0b970e4aa60221457cddd0c0487, 0x0012e8 ] } , - BigNum { limbs: [ 0x85709d15b42a3e0c14b9b4139f47cc, 0xb392702c989dd317c3b03bc4cc00cc, 0x006104 ] } , - BigNum { limbs: [ 0xeccfb97272ff11cf848e3e50cda39f, 0x09bddb51ba1b12c8c56f873f3bdd12, 0x004c5f ] } , - BigNum { limbs: [ 0xd0d4498d8b5ced307b71c0af325c62, 0x9d954e4bc32d2071129882629c2840, 0x00278e ] } , - BigNum { limbs: [ 0x6b4884745ca9b167279585d68a7334, 0x9178ac407b980f436697ede4973b18, 0x00088f ] } , - BigNum { limbs: [ 0x525b7e8ba1b24d98d86a7929758ccd, 0x15da7d5d01b023f671701bbd40ca3b, 0x006b5e ] } , - BigNum { limbs: [ 0x2d15aea2c97985c3f79855b4db7495, 0x2a31eeafe44ae800d2e1bf6394ed6e, 0x000821 ] } , - BigNum { limbs: [ 0x908e545d34e2793c0867a94b248b6c, 0x7d213aed98fd4b3905264a3e4317e5, 0x006bcc ] } , - BigNum { limbs: [ 0xf45703f48ab34541d52f5909c78b47, 0xba1a4868699dbdd6e8e04610d3ec59, 0x001cf3 ] } , - BigNum { limbs: [ 0xc94cff0b73a8b9be2ad0a5f63874ba, 0xed38e13513aa7562ef27c3910418f9, 0x0056f9 ] } , - BigNum { limbs: [ 0x86a5e162cf3f5bdaae2dad9c5a827b, 0x01c060b5dfcf47eafe8ddaffd64e42, 0x0044d5 ] } , - BigNum { limbs: [ 0x36fe219d2f1ca32551d25163a57d86, 0xa592c8e79d78eb4ed97a2ea201b711, 0x002f18 ] } , - BigNum { limbs: [ 0x192bb4a30e9240d1e467f0b3501bce, 0x4fdbb8d9fb62675835dec0468c6b8c, 0x003112 ] } , - BigNum { limbs: [ 0xa4784e5cefc9be2e1b980e4cafe433, 0x577770c381e5cbe1a229495b4b99c7, 0x0042db ] } , - BigNum { limbs: [ 0x09e139d6bbd9b69af7b5cd1346db07, 0x7d345a381015903274a58f39519525, 0x00578b ] } , - BigNum { limbs: [ 0xb3c2c92942824865084a31ecb924fa, 0x2a1ecf656d32a30763627a6886702e, 0x001c62 ] } , - BigNum { limbs: [ 0x8013d3fca94bb50ed8283b6c1dfd41, 0xad8356666fdb9ef5c05e0d824b069e, 0x006e81 ] } , - BigNum { limbs: [ 0x3d902f03551049f127d7c393e202c0, 0xf9cfd3370d6c944417a9fc1f8cfeb5, 0x00056b ] } , - BigNum { limbs: [ 0x71fe306af8cf5bf85d4bf58c8c10a7, 0x219dceeb0fbd6fa994d8e06c822299, 0x0056cd ] } , - BigNum { limbs: [ 0x4ba5d295058ca307a2b4097373ef5a, 0x85b55ab26d8ac390432f293555e2ba, 0x001d20 ] } , - BigNum { limbs: [ 0xfadfcde9b8919e2ff271d61a681448, 0x13d3a81036ea07afb63c2b91533d80, 0x005a35 ] } , - BigNum { limbs: [ 0xc2c4351645ca60d00d8e28e597ebb9, 0x937f818d465e2b8a21cbde1084c7d2, 0x0019b8 ] } , - BigNum { limbs: [ 0x7906dca3ece0ce3db5369706c27500, 0xf09385afcbdc2fd9c2783331adcd6a, 0x005fcd ] } , - BigNum { limbs: [ 0x449d265c117b30c24ac967f93d8b01, 0xb6bfa3edb16c0360158fd6702a37e9, 0x00141f ] } , - BigNum { limbs: [ 0x87528d64ba56c8884660f035c6c17d, 0x0738118ffd848e761e10bf4b0e0010, 0x006c72 ] } , - BigNum { limbs: [ 0x3651759b44053677b99f0eca393e84, 0xa01b180d7fc3a4c3b9f74a56ca0543, 0x00077b ] } , - BigNum { limbs: [ 0x6171b5078cc40ef8bfe32b7c159bce, 0x8d75706fe3cd1f88f7086a8c38c2c5, 0x0008ca ] } , - BigNum { limbs: [ 0x5c324df87197f007401cd383ea6433, 0x19ddb92d997b13b0e0ff9f159f428e, 0x006b23 ] } , - BigNum { limbs: [ 0x19b67682a91fc89d6bc983c110f9ba, 0x3c414dc54a4913850eafd58a85f62e, 0x006b3b ] } , - BigNum { limbs: [ 0xa3ed8c7d553c366294367b3eef0647, 0x6b11dbd832ff1fb4c9583417520f25, 0x0008b2 ] } , - BigNum { limbs: [ 0x1e2c66de9929159ab20064303d8cae, 0xec32f58f347d1f901fa0e5adbaa196, 0x005087 ] } , - BigNum { limbs: [ 0x9f779c216532e9654dff9acfc27353, 0xbb20340e48cb13a9b86723f41d63bd, 0x002365 ] } , - BigNum { limbs: [ 0x71f6451a4b122baed0f2a3a2e645dd, 0x43edd4494970b2ffbd723442149001, 0x002597 ] } , - BigNum { limbs: [ 0x4badbde5b349d3512f0d5b5d19ba24, 0x6365555433d7803a1a95d55fc37552, 0x004e56 ] } , - BigNum { limbs: [ 0xb2d4b877e5d93a626a47b687c4500b, 0x385e4ef9e3149a4d054ba99e2c10b5, 0x0028df ] } , - BigNum { limbs: [ 0x0acf4a881882c49d95b848783baff6, 0x6ef4daa39a3398ecd2bc6003abf49e, 0x004b0e ] } , - BigNum { limbs: [ 0xbe26511df591a79d2c82cfafebd3e4, 0x8fba5cd40537bd55568168a8a11259, 0x000e92 ] } , - BigNum { limbs: [ 0xff7db1e208ca5762d37d2f50142c1d, 0x1798ccc9781075e48186a0f936f2f9, 0x00655b ] } , - BigNum { limbs: [ 0xd96ba85a6ae2ceb14780f80cfadf8d, 0xeeab26fc085dfb9e36c28aa5a9dcd1, 0x0061f3 ] } , - BigNum { limbs: [ 0xe4385aa59379304eb87f06f3052074, 0xb8a802a174ea379ba1457efc2e2881, 0x0011f9 ] } , - BigNum { limbs: [ 0xd15302d7104b78cc10425e8e6a87e9, 0x186a0c11ddf42522b8f2050df6b564, 0x00704c ] } , - BigNum { limbs: [ 0xec510028ee108633efbda071957818, 0x8ee91d8b9f540e171f160493e14fee, 0x0003a1 ] } , - BigNum { limbs: [ 0x15e84d13abe6a745b05eb0ab44120b, 0x65d678b551a83620b9115cddf265b6, 0x00678f ] } , - BigNum { limbs: [ 0xa7bbb5ec527557ba4fa14e54bbedf6, 0x417cb0e82b9ffd191ef6acc3e59f9d, 0x000c5e ] } , - BigNum { limbs: [ 0xfd7fedc0683984e97c364ca861398e, 0x1dc59ac33c4fd50a587da736b8e541, 0x003df1 ] } , - BigNum { limbs: [ 0xc024153f96227a1683c9b2579ec673, 0x898d8eda40f85e2f7f8a626b1f2011, 0x0035fc ] } , - BigNum { limbs: [ 0xd45160abcd98453ea16d486047890f, 0x59fa83e4013b133fc818223cb8913a, 0x002996 ] } , - BigNum { limbs: [ 0xe952a25430c3b9c15e92b69fb876f2, 0x4d58a5b97c0d1ffa0fefe7651f7418, 0x004a57 ] } , - BigNum { limbs: [ 0xfc35bb116b1718dc5a5fd408cad7bb, 0x91e27a7ece6f9e05c56bc5763cb4a2, 0x003a3b ] } , - BigNum { limbs: [ 0xc16e47ee9344e623a5a02af7352846, 0x1570af1eaed89534129c442b9b50b0, 0x0039b2 ] } , - BigNum { limbs: [ 0xf3a4973e7f7b3ecff232b6e9ecc897, 0xb2dabc6d4c222ec34fa2ef898b83c2, 0x003c9c ] } , - BigNum { limbs: [ 0xc9ff6bc17ee0c0300dcd481613376a, 0xf4786d303126047688651a184c8190, 0x003750 ] } , - BigNum { limbs: [ 0xd92aca9fd6c310d0154353e14a3a81, 0x1b7c2f7f55ab633892aeaf7c08e258, 0x0068f9 ] } , - BigNum { limbs: [ 0xe47938602798ee2feabcab1eb5c580, 0x8bd6fa1e279cd00145595a25cf22fa, 0x000af4 ] } , - BigNum { limbs: [ 0x3b5ef541f72016e9d101990e3d4671, 0xc24c3c695c8adeaeb1bebd4775e6db, 0x0050b7 ] } , - BigNum { limbs: [ 0x82450dbe073be8162efe65f1c2b990, 0xe506ed3420bd548b26494c5a621e78, 0x002335 ] } , - BigNum { limbs: [ 0xa313c570ab8955f200997b72638044, 0x1d4a924ff12c414d5089f0005021b8, 0x002766 ] } , - BigNum { limbs: [ 0x1a903d8f52d2a90dff66838d9c7fbd, 0x8a08974d8c1bf1ec877e19a187e39b, 0x004c87 ] } , - BigNum { limbs: [ 0x26e08e98f535f7d926780461c4412e, 0x04d7414d275f813645eb330abba16f, 0x0025c8 ] } , - BigNum { limbs: [ 0x96c3746709260726d987fa9e3bbed3, 0xa27be85055e8b203921cd6971c63e4, 0x004e25 ] } , - BigNum { limbs: [ 0xffb58180dbddb697e6464586a3c1f2, 0xa73ddf3c08fb77c24e3f7bf07ef1a5, 0x0066ea ] } , - BigNum { limbs: [ 0xbdee817f227e486819b9b9795c3e0f, 0x00154a61744cbb7789c88db15913ad, 0x000d03 ] } , - BigNum { limbs: [ 0xb5fd1b6520b64f5cef645780dae73a, 0x20d7559308f9f5d546e12b96e676d1, 0x001003 ] } , - BigNum { limbs: [ 0x07a6e79adda5afa3109ba77f2518c7, 0x867bd40a744e3d649126de0af18e82, 0x0063ea ] } , - BigNum { limbs: [ 0x622b2b52a6ab0b7ab8ee9ac98a8d7e, 0xa97cc93ad09290d0a58bfaa779a8c7, 0x002ed8 ] } , - BigNum { limbs: [ 0x5b78d7ad57b0f38547116436757283, 0xfdd66062acb5a269327c0efa5e5c8c, 0x004514 ] } , - BigNum { limbs: [ 0x1834a15ff80aa4e841ea9826658b7e, 0x58030ec6229b305f1185818dcbc279, 0x003028 ] } , - BigNum { limbs: [ 0xa56f61a006515a17be1566d99a7483, 0x4f501ad75aad02dac68288140c42da, 0x0043c5 ] } , - BigNum { limbs: [ 0xb74e7e1fdce2dfec6ebe6bc75f4525, 0xbf28f8d74d24bce4247004ed136470, 0x003a9b ] } , - BigNum { limbs: [ 0x065584e021791f1391419338a0badc, 0xe82a30c630237655b39804b4c4a0e3, 0x003951 ] } , - BigNum { limbs: [ 0xc4791e8b2f6ad1aeba5359ffa6d38a, 0x0a347a817232d7a9657681f941e95b, 0x006771 ] } , - BigNum { limbs: [ 0xf92ae474cef12d5145aca500592c77, 0x9d1eaf1c0b155b90729187a8961bf7, 0x000c7c ] } , - BigNum { limbs: [ 0x25b8b09f6d68bc07f823c58292eb13, 0x93642325a070e27236b5fb2b67dff3, 0x001171 ] } , - BigNum { limbs: [ 0x97eb526090f342f807dc397d6d14ee, 0x13ef0677dcd750c7a1520e76702560, 0x00627c ] } , - BigNum { limbs: [ 0x28b98366702bc829412db575a279c9, 0x62c80c40bea15372b6a1865386e2db, 0x003acb ] } , - BigNum { limbs: [ 0x94ea7f998e3036d6bed2498a5d8638, 0x448b1d5cbea6dfc72166834e512278, 0x003922 ] } , - BigNum { limbs: [ 0xbe42bfce5c9610be93f312c8292e1e, 0x71cc91fbe8bc55509e3b4f24bdf9fc, 0x000adb ] } , - BigNum { limbs: [ 0xff614331a1c5ee416c0cec37d6d1e3, 0x358697a1948bdde939ccba7d1a0b56, 0x006912 ] } , - BigNum { limbs: [ 0xc950bec8ad26d22a13d83cf7fe22f5, 0xc3b812a28583c6722be5eb5afcebf6, 0x001fc4 ] } , - BigNum { limbs: [ 0xf453443751352cd5ec27c20801dd0c, 0xe39b16faf7c46cc7ac221e46db195c, 0x005428 ] } , - BigNum { limbs: [ 0x67c8dc89f09e243ff24af474baab89, 0xce0753afea368a5fd8a9bc16edad3c, 0x0058e9 ] } , - BigNum { limbs: [ 0x55db26760dbddac00db50a8b455478, 0xd94bd5ed9311a8d9ff5e4d8aea5817, 0x001b03 ] } , - BigNum { limbs: [ 0x73eda682de6efb0a4c7b59c7d6a001, 0x2b19e6a3004a984c6f376fdbecb6f1, 0x001165 ] } , - BigNum { limbs: [ 0x49b65c7d1fed03f5b384a538296000, 0x7c3942fa7cfd9aed68d099c5eb4e62, 0x006288 ] } , - BigNum { limbs: [ 0x8348c02148773d4992bd10577109a9, 0xcffdb77a352e52a72bbf71903cdef4, 0x00533a ] } , - BigNum { limbs: [ 0x3a5b42deb5e4c1b66d42eea88ef658, 0xd75572234819e092ac4898119b265f, 0x0020b2 ] } , - BigNum { limbs: [ 0x261a04909fee7713defee0e6ef1c0b, 0xc9550322543e26ce6a4863fe9f1cdc, 0x001149 ] } , - BigNum { limbs: [ 0x9789fe6f5e6d87ec21011e1910e3f6, 0xddfe267b290a0c6b6dbfa5a338e877, 0x0062a3 ] } , - BigNum { limbs: [ 0x764a23f8363f09771ecf1f6fa8792a, 0xc56474a0f17aa463d85b83fa4718d9, 0x0068fa ] } , - BigNum { limbs: [ 0x4759df07c81cf588e130df905786d7, 0xe1eeb4fc8bcd8ed5ffac85a790ec7a, 0x000af2 ] } , - BigNum { limbs: [ 0x6c1d7063470830757bd66f2c220cb5, 0xed2db84f3edf32aa2c85ef62f777ef, 0x001366 ] } , - BigNum { limbs: [ 0x5186929cb753ce8a84298fd3ddf34c, 0xba25714e3e69008fab821a3ee08d64, 0x006086 ] } , - BigNum { limbs: [ 0xd603ce746ead3cab0f50466269c017, 0x42a7ef7453c90311dc3948a8a406e7, 0x0034ff ] } , - BigNum { limbs: [ 0xe7a0348b8faec254f0afb89d963fea, 0x64ab3a29297f3027fbcec0f933fe6b, 0x003eee ] } , - BigNum { limbs: [ 0x821fa799ff4830fb47e38af27634ad, 0xd2847f687ad2ad383e88c3a78dba53, 0x002a34 ] } , - BigNum { limbs: [ 0x3b845b65ff13ce04b81c740d89cb54, 0xd4ceaa3502758601997f45fa4a4b00, 0x0049b8 ] } , - BigNum { limbs: [ 0xda3e276fa1003fd0ee13c9ad8f4e2a, 0x3aeaba501cdc2b763df246a12c816d, 0x00288e ] } , - BigNum { limbs: [ 0xe365db905d5bbf2f11ec355270b1d7, 0x6c686f4d606c07c39a15c300ab83e5, 0x004b5f ] } , - BigNum { limbs: [ 0xdacec25d6009316354a7f9039f6bd0, 0xed21ad0a48522a8233d495ca0acbf0, 0x000f9c ] } , - BigNum { limbs: [ 0xe2d540a29e52cd9cab5805fc609431, 0xba317c9334f608b7a43373d7cd3962, 0x006450 ] } , - BigNum { limbs: [ 0x925ac87b1ea89669495a35b9b32bee, 0x827813b10130fbda6e7f6370fde30e, 0x000537 ] } , - BigNum { limbs: [ 0x2b493a84dfb36896b6a5c9464cd413, 0x24db15ec7c17375f6988a630da2245, 0x006eb6 ] } , - BigNum { limbs: [ 0x2256e0b4f93336c2fb95f6d8e94354, 0x2101c9e0a907b81fe8d1ce7384f2fc, 0x005389 ] } , - BigNum { limbs: [ 0x9b4d224b0528c83d046a082716bcad, 0x86515fbcd4407b19ef363b2e531257, 0x002064 ] } , - BigNum { limbs: [ 0xd29117d89c89f2887be86b0d1e0c44, 0xb031bcc3d43362dd843f9a791b1361, 0x000baf ] } , - BigNum { limbs: [ 0xeb12eb2761d20c77841793f2e1f3bd, 0xf7216cd9a914d05c53c86f28bcf1f1, 0x00683d ] } , - BigNum { limbs: [ 0x31b895251749649a40cec3efed2c3e, 0x420f5edb247c94c48f770ce0a1ccc0, 0x0035c0 ] } , - BigNum { limbs: [ 0x8beb6ddae7129a65bf313b1012d3c3, 0x6543cac258cb9e754890fcc1363893, 0x003e2d ] } , - BigNum { limbs: [ 0xcfd0128fae8e6fd88afa448df10020, 0xfeaa3bb550388157cf773ac768ee2f, 0x003049 ] } , - BigNum { limbs: [ 0xedd3f0704fcd8f277505ba720effe1, 0xa8a8ede82d0fb1e20890ceda6f1723, 0x0043a3 ] } , - BigNum { limbs: [ 0xebd5683b5107351786986f25b8c4eb, 0xf9071049a3423066636befa7cbb4bf, 0x001d21 ] } , - BigNum { limbs: [ 0xd1ce9ac4ad54c9e879678fda473b16, 0xae4c1953da0602d3749c19fa0c5093, 0x0056cb ] } , - BigNum { limbs: [ 0x181a5532aa4292094e5a3c1c23592f, 0xaa4a68971dac44f6a415a105636a2c, 0x006632 ] } , - BigNum { limbs: [ 0xa589adcd54196cf6b1a5c2e3dca6d2, 0xfd08c1065f9bee4333f2689c749b27, 0x000dba ] } , - BigNum { limbs: [ 0x8e1608aed6392964c09997f7309548, 0xd74bfed628785090e796f4b22649a5, 0x004799 ] } , - BigNum { limbs: [ 0x2f8dfa512822d59b3f666708cf6ab9, 0xd0072ac754cfe2a8f07114efb1bbae, 0x002c53 ] } , - BigNum { limbs: [ 0xfa89ec51ae21e144b2c50f69db0fe9, 0xc071fe99d99bf32a65c1fc98d27474, 0x0027b5 ] } , - BigNum { limbs: [ 0xc31a16ae503a1dbb4d3aef9624f018, 0xe6e12b03a3ac400f72460d090590de, 0x004c37 ] } , - BigNum { limbs: [ 0x30cd0539d2e3cc474383fc894b14a5, 0x9afbf01afa63607f5ced1ef06cd3cc, 0x002fa8 ] } , - BigNum { limbs: [ 0x8cd6fdc62b7832b8bc7c0276b4eb5c, 0x0c57398282e4d2ba7b1aeab16b3187, 0x004445 ] } , - BigNum { limbs: [ 0x66aa267ff0c40dce36e2bba383cde2, 0xc10478f686c30ad95b286b5e390d81, 0x002d4f ] } , - BigNum { limbs: [ 0x56f9dc800d97f131c91d435c7c321f, 0xe64eb0a6f68528607cdf9e439ef7d2, 0x00469d ] } , - BigNum { limbs: [ 0x729323e6a43d9c3a0c5e0027bcb06b, 0x2bcbbf4106de149a775096aade316d, 0x0068f0 ] } , - BigNum { limbs: [ 0x4b10df195a1e62c5f3a1fed8434f96, 0x7b876a5c766a1e9f60b772f6f9d3e6, 0x000afd ] } , - BigNum { limbs: [ 0xc1d2d20d7a9648616dd104dfe7af57, 0x3a83f4de55e827ccf4829061077400, 0x005461 ] } , - BigNum { limbs: [ 0xfbd130f283c5b69e922efa201850aa, 0x6ccf34bf27600b6ce3857940d09152, 0x001f8c ] } , - BigNum { limbs: [ 0x16fcab115bdccf5650dc547f83d420, 0xa1b445fbc70549cf76cd4ebc162b97, 0x0020e7 ] } , - BigNum { limbs: [ 0xa6a757eea27f2fa9af23aa807c2be1, 0x059ee3a1b642e96a613abae5c1d9bc, 0x005306 ] } , - BigNum { limbs: [ 0xd13c4436bf8446033d7714239677a3, 0xf550da968bdde1bb8f3f820cb9c88a, 0x002ea5 ] } , - BigNum { limbs: [ 0xec67bec93ed7b8fcc288eadc69885e, 0xb2024f06f16a517e48c887951e3cc8, 0x004547 ] } , - BigNum { limbs: [ 0x9b4cf1f2482fe576d7a99b526711e2, 0x560163280fb149acc815cf032264a5, 0x005319 ] } , - BigNum { limbs: [ 0x2257110db62c1989285663ad98ee1f, 0x5151c6756d96e98d0ff23a9eb5a0ae, 0x0020d4 ] } , - BigNum { limbs: [ 0xaec88ee881235a52b32a60b8e455b4, 0x092de46650cd0a4168c082b342d2bd, 0x0006ef ] } , - BigNum { limbs: [ 0x0edb74177d38a4ad4cd59e471baa4d, 0x9e2545372c7b28f86f4786ee953296, 0x006cfe ] } , - BigNum { limbs: [ 0x7c7657a8c39c6ae7e70b8702985801, 0x11ce67638bb48bb0d072e80f7dbcd6, 0x003052 ] } , - BigNum { limbs: [ 0x412dab573abf941818f477fd67a800, 0x9584c239f193a789079521925a487d, 0x00439b ] } , - BigNum { limbs: [ 0x3e81d1369fa1548f60145b42872396, 0xdd44261bb43655881ecf77aed1d51a, 0x001c1e ] } , - BigNum { limbs: [ 0x7f2231c95ebaaa709feba3bd78dc6b, 0xca0f0381c911ddb1b93891f3063039, 0x0057ce ] } , - BigNum { limbs: [ 0xdf9313ca3ceb5bd7da4dfded322a18, 0xda37eff9531314ebea19ff20f2882c, 0x004817 ] } , - BigNum { limbs: [ 0xde10ef35c170a32825b20112cdd5e9, 0xcd1b39a42a351e4dedee0a80e57d26, 0x002bd5 ] } , - BigNum { limbs: [ 0xe08d7e57dce7cb8e7f2b66b0e143c1, 0x75dc018fdac1261437ec1d7ff86534, 0x00492f ] } , - BigNum { limbs: [ 0xdd1684a82174337180d4984f1ebc40, 0x3177280da2870d25a01bec21dfa01e, 0x002abe ] } , - BigNum { limbs: [ 0x8024d8a958b35f3758bb58975ab90a, 0x7728642ed36848283f2acbea394743, 0x00697c ] } , - BigNum { limbs: [ 0x3d7f2a56a5a89fc8a744a668a546f7, 0x302ac56ea9dfeb1198dd3db79ebe10, 0x000a71 ] } , - BigNum { limbs: [ 0xb874bf6cb7b34ea4edd77166b4b890, 0xed98566aef05c3d07bc26629fa07d5, 0x000bbe ] } , - BigNum { limbs: [ 0x052f439346a8b05b12288d994b4771, 0xb9bad3328e426f695c45a377ddfd7e, 0x00682e ] } , - BigNum { limbs: [ 0x0341523b1e2b0fe0a7c47729521908, 0xa605bd0ee4ef607e046f5c3b891fc1, 0x005196 ] } , - BigNum { limbs: [ 0xba62b0c4e030ef1f583b87d6ade6f9, 0x014d6c8e9858d2bbd398ad664ee592, 0x002257 ] } , - BigNum { limbs: [ 0x9bbdace5e53b4df38dc6e275e33ea8, 0x90587e54f7412291c3c77522e38952, 0x007007 ] } , - BigNum { limbs: [ 0x21e6561a1920b10c72391c8a1cc159, 0x16faab48860710a81440947ef47c01, 0x0003e6 ] } , - BigNum { limbs: [ 0x32fabbeba001df136f22d12184a412, 0x91f315218990b06ca75e06153bf7e9, 0x0021df ] } , - BigNum { limbs: [ 0x8aa947145e5a1fec90dd2dde7b5bef, 0x1560147bf3b782cd30aa038c9c0d6a, 0x00520e ] } , - BigNum { limbs: [ 0x93ad8b63401f10af2066d9230d5cd5, 0x4b10febd33b59aa62fc828bd43ad4f, 0x00060c ] } , - BigNum { limbs: [ 0x29f6779cbe3cee50df9925dcf2a32c, 0x5c422ae049929893a83fe0e4945804, 0x006de1 ] } , - BigNum { limbs: [ 0xa17a38edf3fd86725b9b9768dc6c42, 0x6fad8fe1409d5946033c46cd4570f9, 0x0006c4 ] } , - BigNum { limbs: [ 0x1c29ca120a5e788da46467972393bf, 0x37a599bc3caad9f3d4cbc2d492945a, 0x006d29 ] } , - BigNum { limbs: [ 0x31c76f5cf068468d458327b73ddc7c, 0x99e7cf9a16e8c07575d1ac569a2e9e, 0x005e45 ] } , - BigNum { limbs: [ 0x8bdc93a30df3b872ba7cd748c22385, 0x0d6b5a03665f72c462365d4b3dd6b5, 0x0015a8 ] } , - BigNum { limbs: [ 0x6456f1dcb438470271551075bccd1c, 0x3b981d99b43c13781ac98060c1eb67, 0x00204e ] } , - BigNum { limbs: [ 0x594d11234a23b7fd8eaaee8a4332e5, 0x6bbb0c03c90c1fc1bd3e89411619ec, 0x00539f ] } , - BigNum { limbs: [ 0xff6d0f9930affa01cc0dd7e85165c9, 0x8b60b927f0cb455f4edbe4e9d60558, 0x00541e ] } , - BigNum { limbs: [ 0xbe36f366cdac04fe33f22717ae9a38, 0x1bf270758c7cedda892c24b801fffa, 0x001fcf ] } , - BigNum { limbs: [ 0x1ae7ec2e0a1721c279ce0685994266, 0xeee6d9bb26c1b31edccc596a1562b0, 0x00066b ] } , - BigNum { limbs: [ 0xa2bc16d1f444dd3d8631f87a66bd9b, 0xb86c4fe25686801afb3bb037c2a2a3, 0x006d81 ] } , - BigNum { limbs: [ 0x7b043e49e87f7604514c414efd30e9, 0x4489831b6ef6706407321a7a10207e, 0x003862 ] } , - BigNum { limbs: [ 0x429fc4b615dc88fbaeb3bdb102cf18, 0x62c9a6820e51c2d5d0d5ef27c7e4d5, 0x003b8b ] } , - BigNum { limbs: [ 0xc6323b77e26860686d36176ddfe315, 0xb2be18ac0f4ffe7781bcf9fc62302a, 0x006ce4 ] } , - BigNum { limbs: [ 0xf771c7881bf39e9792c9e792201cec, 0xf49510f16df834c2564b0fa575d528, 0x000708 ] } , - BigNum { limbs: [ 0xba818950e3ad44cfce9094a3418d85, 0xc0355241ba5b5ced48fbd3227676bc, 0x006786 ] } , - BigNum { limbs: [ 0x032279af1aaeba30316f6a5cbe727c, 0xe71dd75bc2ecd64c8f0c367f618e97, 0x000c66 ] } , - BigNum { limbs: [ 0x287ba3ce0ab1253d479d495d655bfd, 0x5c6751cc1fb679433492a76830cc04, 0x001791 ] } , - BigNum { limbs: [ 0x95285f31f3aad9c2b862b5a29aa404, 0x4aebd7d15d91b9f6a3756239a7394f, 0x005c5c ] } , - BigNum { limbs: [ 0x5f7e97974a735a32c5d56bd1ffcdc4, 0x90c4d7ad1cd6cbcd66b46cc97a21c7, 0x005556 ] } , - BigNum { limbs: [ 0x5e256b68b3e8a4cd3a2a932e00323d, 0x168e51f06071676c71539cd85de38c, 0x001e97 ] } , - BigNum { limbs: [ 0x35bfcb67912b816dac73fc55d091eb, 0xf0e031a2782306dbca9dae7b5d14e2, 0x00136c ] } , - BigNum { limbs: [ 0x87e437986d307d92538c02aa2f6e16, 0xb672f7fb05252c5e0d6a5b267af071, 0x006080 ] } , - BigNum { limbs: [ 0xb17f8097e31d12382dcf2d892dafd6, 0xd5ecb54ee9145778eb237dd16e40c3, 0x0019bb ] } , - BigNum { limbs: [ 0x0c2482681b3eecc7d230d176d2502b, 0xd166744e9433dbc0ece48bd069c490, 0x005a31 ] } , - BigNum { limbs: [ 0x36eb496169c1fc5f729abc6eb11977, 0x7d17a51de7d1e0bd881d012a6c7be2, 0x0062c4 ] } , - BigNum { limbs: [ 0x86b8b99e949a02a08d6542914ee68a, 0x2a3b847f9576527c4feb08776b8971, 0x001129 ] } , - BigNum { limbs: [ 0x6fd885fe5230545957f71245653af6, 0x4de4ef29d6cf7d8757bee5707cb352, 0x004ea8 ] } , - BigNum { limbs: [ 0x4dcb7d01ac2baaa6a808ecba9ac50b, 0x596e3a73a678b5b2804924315b5201, 0x002545 ] } , - BigNum { limbs: [ 0x112d36bfb47e859afdab17da13db8e, 0x9920289a696c6a617e128cdffa0355, 0x0023bd ] } , - BigNum { limbs: [ 0xac76cc4049dd79650254e725ec2473, 0x0e33010313dbc8d859f57cc1de01fe, 0x005030 ] } , - BigNum { limbs: [ 0x241aa91192721cbefec621a2f60004, 0xb5d66d51e4f10991cd3d2baef8de85, 0x005ee9 ] } , - BigNum { limbs: [ 0x998959ee6be9e2410139dd5d09fffd, 0xf17cbc4b985729a80acaddf2df26ce, 0x001503 ] } , - BigNum { limbs: [ 0x4c90665827e4d53a421b9e5d4221ba, 0x9708c2cdf26eea1254d370dc314cfd, 0x0047f6 ] } , - BigNum { limbs: [ 0x71139ca7d67729c5bde460a2bdde47, 0x104a66cf8ad94927833498c5a6b856, 0x002bf7 ] } , - BigNum { limbs: [ 0x321401e2c769844e074f0425cb136a, 0xff0986f64e4112350962aa0adf28fe, 0x003d48 ] } , - BigNum { limbs: [ 0x8b90011d36f27ab1f8b0fada34ec97, 0xa849a2a72f072104cea55f96f8dc55, 0x0036a4 ] } , - BigNum { limbs: [ 0xcdba97c146f639f479a99e1ab97a9c, 0xcb4ac95cf3a7b4f9604884d16bc683, 0x00005c ] } , - BigNum { limbs: [ 0xefe96b3eb765c50b865660e5468565, 0xdc08604089a07e4077bf84d06c3ecf, 0x007390 ] } , - BigNum { limbs: [ 0xdea74b06b8b9a9e1995f98f6b289cb, 0xa45fa2977566e3961c2ae88454cd7e, 0x002fcc ] } , - BigNum { limbs: [ 0xdefcb7f945a2551e66a066094d7636, 0x02f3870607e14fa3bbdd211d8337d4, 0x004421 ] } , - BigNum { limbs: [ 0x65814cb1f2c0d8c8c597d89f89e6bd, 0xff64346aeec01a3bb18fecadd8741c, 0x0057b6 ] } , - BigNum { limbs: [ 0x5822b64e0b9b26373a682660761944, 0xa7eef5328e8818fe26781cf3ff9137, 0x001c36 ] } , - BigNum { limbs: [ 0xc270a8f22ec94c03a385716bcf1636, 0xfff1a6485ebf5b305a3cb85581b075, 0x0014c7 ] } , - BigNum { limbs: [ 0xfb335a0dcf92b2fc5c7a8d9430e9cb, 0xa76183551e88d8097dcb514c5654dd, 0x005f25 ] } , - BigNum { limbs: [ 0x8c6dd18d29c73c9047c6550507e773, 0x7ab3c60342ed7dd32ed780d459538f, 0x0007d3 ] } , - BigNum { limbs: [ 0x31363172d494c26fb839a9faf8188e, 0x2c9f639a3a5ab566a93088cd7eb1c4, 0x006c1a ] } , - BigNum { limbs: [ 0x13877ba98302fb17c6ea4cfca0515a, 0x4fa1ced6752b8983c878dd0222bcf0, 0x002b3d ] } , - BigNum { limbs: [ 0xaa1c87567b5903e83915b2035faea7, 0x57b15ac7081ca9b60f8f2c9fb54863, 0x0048b0 ] } , - BigNum { limbs: [ 0x0de8919442238235ecefabf33fbb07, 0x5151c56254c55a99d0ba0e80f533ef, 0x0052ce ] } , - BigNum { limbs: [ 0xafbb716bbc387cca1310530cc044fa, 0x5601643b2882d8a0074dfb20e2d164, 0x00211f ] } , - BigNum { limbs: [ 0xacc25a0d08100ae5d108c29934483b, 0x18503620f023dd4b38affba8859523, 0x005cb3 ] } , - BigNum { limbs: [ 0x10e1a8f2f64bf41a2ef73c66cbb7c6, 0x8f02f37c8d2455ee9f580df9527030, 0x00173a ] } , - BigNum { limbs: [ 0x1791d39aa1c282d2c06b15735b6446, 0xc94cd608deb704b81640a01580902d, 0x005faf ] } , - BigNum { limbs: [ 0xa6122f655c997c2d3f94e98ca49bbb, 0xde0653949e912e81c1c7698c577526, 0x00143d ] } , - BigNum { limbs: [ 0xac7f2efa3ee1532072aae9e10b0615, 0xe38f6ac83fc008609f8b7832c58009, 0x005397 ] } , - BigNum { limbs: [ 0x1124d405bf7aabdf8d55151ef4f9ec, 0xc3c3bed53d882ad9387c916f12854a, 0x002055 ] } , - BigNum { limbs: [ 0x912fd965ed7435a1f6f6f489b09c71, 0xe767672552b5d22a99a4734dd9c937, 0x0004f0 ] } , - BigNum { limbs: [ 0x2c74299a10e7c95e09090a764f6390, 0xbfebc2782a92610f3e639653fe3c1c, 0x006efc ] } , - BigNum { limbs: [ 0x353846fb59dfbe77eed0ac01d3bbcf, 0x695563e43133b3a64d286b7caa8550, 0x0004fe ] } , - BigNum { limbs: [ 0x886bbc04a47c4088112f52fe2c4432, 0x3dfdc5b94c147f938adf9e252d8003, 0x006eef ] } , - BigNum { limbs: [ 0x0094a6d7937bc4d3a02f10d659ef99, 0x5c4645aed47db9e9fc04049a2c5cf9, 0x0043db ] } , - BigNum { limbs: [ 0xbd0f5c286ae03a2c5fd0ee29a61068, 0x4b0ce3eea8ca794fdc040507aba85a, 0x003012 ] } , - BigNum { limbs: [ 0x86ec15296d70c9a4422eac799f38d4, 0x5b794b0b66b091529f2516782c7748, 0x00629b ] } , - BigNum { limbs: [ 0x36b7edd690eb355bbdd1528660c72d, 0x4bd9de921697a1e738e2f329ab8e0b, 0x001152 ] } , - BigNum { limbs: [ 0xe6792ca0b784d887c11b15fcf4ede4, 0x57f8ff83873576de834c6c9d4e65db, 0x004101 ] } , - BigNum { limbs: [ 0xd72ad65f46d726783ee4e9030b121d, 0x4f5a2a19f612bc5b54bb9d04899f77, 0x0032ec ] } , - BigNum { limbs: [ 0xfa1640611812e542a4f2d15e024fb2, 0xf978f827945ace309f9cd3bb8c6710, 0x001ee4 ] } , - BigNum { limbs: [ 0xc38dc29ee64919bd5b0d2da1fdb04f, 0xadda3175e8ed6509386b35e64b9e42, 0x005508 ] } , - BigNum { limbs: [ 0x2f27a524ea1827f90f24728ede060e, 0x263a0e318da3c45e1486741e6219d6, 0x005d87 ] } , - BigNum { limbs: [ 0x8e7c5ddb1443d706f0db8c7121f9f3, 0x81191b6befa46edbc381958375eb7d, 0x001666 ] } , - BigNum { limbs: [ 0x8782d903064cc4f3ca01e033ab015b, 0x34223e2a7565a8a26bc74583e2e452, 0x002f80 ] } , - BigNum { limbs: [ 0x362129fcf80f3a0c35fe1ecc54fea6, 0x7330eb7307e28a976c40c41df52101, 0x00446d ] } , - BigNum { limbs: [ 0x343f994997c69b3ea3321f09ec193e, 0x4c7bf53152d35e37e27004bb52bc36, 0x002e40 ] } , - BigNum { limbs: [ 0x896469b6669563c15ccddff613e6c3, 0x5ad7346c2a74d501f59804e685491d, 0x0045ad ] } , - BigNum { limbs: [ 0x4bb75fa2abe942ee4d4fce11edeeea, 0xfb1c4dc5a45ac3f903d2e1f4df683d, 0x0027b2 ] } , - BigNum { limbs: [ 0x71eca35d5272bc11b2b030ee121117, 0xac36dbd7d8ed6f40d43527acf89d16, 0x004c3a ] } , - BigNum { limbs: [ 0xbaf1f3abe8931102c7773d56ed08cc, 0x297c74fdf046da34802c41a29d928e, 0x00018a ] } , - BigNum { limbs: [ 0x02b20f5415c8edfd3888c1a912f735, 0x7dd6b49f8d01590557dbc7ff3a72c5, 0x007263 ] } , - BigNum { limbs: [ 0xb5f4e0a9aed70607c51335da7f4757, 0x4d107aa3bd21933e63be9f172f30f4, 0x00247f ] } , - BigNum { limbs: [ 0x07af22564f84f8f83aecc92580b8aa, 0x5a42aef9c0269ffb74496a8aa8d45f, 0x004f6e ] } , - BigNum { limbs: [ 0x2133dc64414ab86fcaf0b0c072095c, 0x1d71ac229105382542dd4f28fc70f1, 0x005c23 ] } , - BigNum { limbs: [ 0x9c70269bbd114690350f4e3f8df6a5, 0x89e17d7aec42fb14952aba78db9462, 0x0017ca ] } , - BigNum { limbs: [ 0x641f0c6747e1af7b1feb89ca03b33a, 0x079ea8ce63e5f0ed0b7087f6223096, 0x001728 ] } , - BigNum { limbs: [ 0x5984f698b67a4f84e0147535fc4cc7, 0x9fb480cf1962424ccc9781abb5d4bd, 0x005cc5 ] } , - BigNum { limbs: [ 0xf1654b43591f44eb1bbc95cbf8c309, 0x04b668f3cbd178895538f58e3b6119, 0x00680c ] } , - BigNum { limbs: [ 0xcc3eb7bca53cba14e4436934073cf8, 0xa29cc0a9b176bab082cf14139ca439, 0x000be1 ] } , - BigNum { limbs: [ 0x66253f0138106a005f897ecbca7f98, 0x784f02660155dd99dbada73039e278, 0x005779 ] } , - BigNum { limbs: [ 0x577ec3fec64b94ffa0768034358069, 0x2f0427377bf2559ffc5a62719e22db, 0x001c74 ] } , - BigNum { limbs: [ 0x8a3fe004d9d74056ae0516246cba9d, 0x1a56c5a8aef02991e3d4eaab720e54, 0x00538d ] } , - BigNum { limbs: [ 0x336422fb2484bea951fae8db934564, 0x8cfc63f4ce5809a7f4331ef665f6ff, 0x002060 ] } , - BigNum { limbs: [ 0x8db5aa88a154d9f32095c4ca130a82, 0x47df8dd211c6b824cdca9007b7600a, 0x0055cf ] } , - BigNum { limbs: [ 0x2fee58775d07250cdf6a3a35ecf57f, 0x5f739bcb6b817b150a3d799a20a549, 0x001e1e ] } , - BigNum { limbs: [ 0x10d29d21246db3117a425fbb152505, 0x1aec5eb41b1766ad339a747a987ff3, 0x003043 ] } , - BigNum { limbs: [ 0xacd165ded9ee4bee85bd9f44eadafc, 0x8c66cae96230cc8ca46d95273f8560, 0x0043aa ] } , - BigNum { limbs: [ 0x177d01486ba745d8bd7f77aef4b971, 0x59574bf36dd81a93e13e32b362c919, 0x0067af ] } , - BigNum { limbs: [ 0xa62701b792b4b927428087510b4690, 0x4dfbddaa0f7018a5f6c9d6ee753c3a, 0x000c3e ] } , - BigNum { limbs: [ 0x91eb5c10513dd708dc53fc436ac554, 0x8e01fcdc0d7e2ba9f08e2ae872a6fd, 0x004c12 ] } , - BigNum { limbs: [ 0x2bb8a6efad1e27f723ac02bc953aad, 0x19512cc16fca078fe779deb9655e56, 0x0027db ] } , - BigNum { limbs: [ 0x727708895e84f5f25cbffb7e0338b3, 0x6f98e9536fafb797cd439a1b38f750, 0x00498e ] } , - BigNum { limbs: [ 0x4b2cfa769fd7090da3400381fcc74e, 0x37ba404a0d987ba20ac46f869f0e03, 0x002a5f ] } , - BigNum { limbs: [ 0x71406ca58dfd2f6167a380e712c26d, 0x3fe3e3b130fc4db90fcb03ab8b8d3a, 0x000fd2 ] } , - BigNum { limbs: [ 0x4c63965a705ecf9e985c7e18ed3d94, 0x676f45ec4c4be580c83d05f64c7819, 0x00641b ] } , - BigNum { limbs: [ 0x7cfe5c411500894f5db9ec17dc2ec4, 0xf50f4a7ee4f48cc0def334cfc94486, 0x0026af ] } , - BigNum { limbs: [ 0x40a5a6bee95b75b0a24612e823d13d, 0xb243df1e9853a678f914d4d20ec0cd, 0x004d3d ] } , - BigNum { limbs: [ 0xd91d5763e143e1cda5b3da3835833a, 0x6f49185f6f6777e146de1cc9711cb8, 0x006f06 ] } , - BigNum { limbs: [ 0xe486ab9c1d181d325a4c24c7ca7cc7, 0x380a113e0de0bb589129ecd866e89a, 0x0004e7 ] } , - BigNum { limbs: [ 0xe2cb2be68ea808a3e6be78c2ee9734, 0x17229a86e06194b65d827dffe32966, 0x005f13 ] } , - BigNum { limbs: [ 0xdad8d7196fb3f65c1941863d1168cd, 0x90308f169ce69e837a858ba1f4dbec, 0x0014da ] } , - BigNum { limbs: [ 0x48e670c23af1a5d33f284034b0778b, 0x462cfa754f7d4a0a66962a66901779, 0x0018d2 ] } , - BigNum { limbs: [ 0x74bd923dc36a592cc0d7becb4f8876, 0x61262f282dcae92f7171df3b47edda, 0x005b1b ] } , - BigNum { limbs: [ 0x502652187591b7ca72fca801a36230, 0x6b5d836aba048356118b3e0612af7e, 0x0032ec ] } , - BigNum { limbs: [ 0x6d7db0e788ca47358d0356fe5c9dd1, 0x3bf5a632c343afe3c67ccb9bc555d5, 0x004101 ] } , - BigNum { limbs: [ 0x392b42a74453e4565ace73aac4afac, 0x8707dc856ee8838a6706e4a3733924, 0x0043b2 ] } , - BigNum { limbs: [ 0x8478c058ba081aa9a5318b553b5055, 0x204b4d180e5fafaf710124fe64cc2f, 0x00303b ] } , - BigNum { limbs: [ 0xdec558c2b992f629b7efa78ed49d26, 0xf8f34e0e4e0ac55d1d1a405c996e82, 0x005835 ] } , - BigNum { limbs: [ 0xdedeaa3d44c908d6481057712b62db, 0xae5fdb8f2f3d6ddcbaedc9453e96d0, 0x001bb7 ] } , - BigNum { limbs: [ 0xf6e5a9119212860548495f4ad6481e, 0x3b498490bb280f3f8e7d2b4d558fce, 0x000902 ] } , - BigNum { limbs: [ 0xc6be59ee6c4978fab7b69fb529b7e3, 0x6c09a50cc22023fa498ade54827584, 0x006aeb ] } , - BigNum { limbs: [ 0x2e1db88ee84b9a5e6daac66fc8728a, 0x8f6521310f40f3657493bba35e9907, 0x002d55 ] } , - BigNum { limbs: [ 0x8f864a71161064a192553890378d77, 0x17ee086c6e073fd463744dfe796c4c, 0x004698 ] } , - BigNum { limbs: [ 0x230a9941083f8ecf9f8111b1ef9dc0, 0xd562459e2aafcfd1d4c7782ecb99b6, 0x0068c0 ] } , - BigNum { limbs: [ 0x9a9969bef61c7030607eed4e106241, 0xd1f0e3ff52986368034091730c6b9d, 0x000b2c ] } , - BigNum { limbs: [ 0x6d2595664fbc4930c0a4aa4b5136a8, 0xa262e9116b0c4794df08ce274be96c, 0x00716e ] } , - BigNum { limbs: [ 0x507e6d99ae9fb5cf3f5b54b4aec959, 0x04f0408c123beba4f8ff3b7a8c1be7, 0x00027f ] } , - BigNum { limbs: [ 0xe3c5291a4615c8b789f8deea4a149c, 0xb416a79063d5e0fda13cd92590b8ec, 0x0047af ] } , - BigNum { limbs: [ 0xd9ded9e5b846364876072015b5eb65, 0xf33c820d1972523c36cb307c474c66, 0x002c3d ] } , - BigNum { limbs: [ 0xd2881ff9961ba65476b8b150105d16, 0xf9c51e9e0a4a55da9ec7d3b0c908fd, 0x00327b ] } , - BigNum { limbs: [ 0xeb1be306684058ab89474dafefa2eb, 0xad8e0aff72fddd5f394035f10efc55, 0x004171 ] } , - BigNum { limbs: [ 0x9854adbe0ee2ce5cce5be38c085457, 0xe1e13d2d0424b9a069094b52cd35aa, 0x0052d7 ] } , - BigNum { limbs: [ 0x254f5541ef7930a331a41b73f7abaa, 0xc571ec70792379996efebe4f0acfa9, 0x002115 ] } , - BigNum { limbs: [ 0x0984935991fa79b66236ce89c824b3, 0x73a8febdd972fc8273f2840979b017, 0x006dd6 ] } , - BigNum { limbs: [ 0xb41f6fa66c6185499dc9307637db4e, 0x33aa2adfa3d536b7641585985e553c, 0x000617 ] } , - BigNum { limbs: [ 0xc3d514392193fd7d1588a9667bf5cc, 0xa8658a8fcca827aaf3f848275fa49e, 0x001a70 ] } , - BigNum { limbs: [ 0xf9ceeec6dcc80182ea775599840a35, 0xfeed9f0db0a00b8ee40fc17a7860b4, 0x00597c ] } , - BigNum { limbs: [ 0x4169069c77fdf1a5415faa6c06805b, 0x2052630abbd3810f51c6dc13078865, 0x003344 ] } , - BigNum { limbs: [ 0x7c3afc63865e0d5abea05493f97fa6, 0x8700c692c174b22a86412d8ed07cee, 0x0040a9 ] } , - BigNum { limbs: [ 0x4dd56603f78dab949e1e06c9aa4b0c, 0xd0c0c2f38069a0df956135ae881807, 0x003315 ] } , - BigNum { limbs: [ 0x6fce9cfc06ce536b61e1f83655b4f5, 0xd69266a9fcde925a42a6d3f34fed4c, 0x0040d7 ] } , - BigNum { limbs: [ 0x4ffa9a7c55e8b8d333d3d20b839c22, 0x0c7d84a763b48e15665fbded415e90, 0x006bf7 ] } , - BigNum { limbs: [ 0x6da96883a873462ccc2c2cf47c63df, 0x9ad5a4f61993a52471a84bb496a6c3, 0x0007f6 ] } , - BigNum { limbs: [ 0xeff6572f4ad10993fca26054dfc243, 0x2aaed4076db69d9e66dd3f254fe954, 0x00523c ] } , - BigNum { limbs: [ 0xcdadabd0b38af56c035d9eab203dbe, 0x7ca455960f91959b712aca7c881bfe, 0x0021b1 ] } , - BigNum { limbs: [ 0xdd9e6e6daea7fc2932eb01d81da901, 0x632d1326807e3f7d9a11e261feb981, 0x004267 ] } , - BigNum { limbs: [ 0xe00594924fb402d6cd14fd27e25700, 0x44261676fcc9f3bc3df6273fd94bd1, 0x003186 ] } , - BigNum { limbs: [ 0xaebc2ff1eba9c1e54bb87d7fe80ddf, 0xe09ad55921e98cc04d67baba3c2a12, 0x000b42 ] } , - BigNum { limbs: [ 0x0ee7d30e12b23d1ab447818017f222, 0xc6b854445b5ea6798aa04ee79bdb41, 0x0068aa ] } , - BigNum { limbs: [ 0xbf001d3f3525a47688aacce68620f2, 0x922ca880037b7fcd69e7d304c3f591, 0x004381 ] } , - BigNum { limbs: [ 0xfea3e5c0c9365a897755321979df0f, 0x1526811d79ccb36c6e20369d140fc1, 0x00306c ] } , - BigNum { limbs: [ 0x4909862b885f44761c5fc029fddad4, 0x6a0c04aaf3370750b9af1ababac1fe, 0x000973 ] } , - BigNum { limbs: [ 0x749a7cd475fcba89e3a03ed602252d, 0x3d4724f28a112be91e58eee71d4355, 0x006a7a ] } , - BigNum { limbs: [ 0xae928fadcd4831d72fdcbaf7e14265, 0x3cafdcc0abe82be6e18149672cebda, 0x000144 ] } , - BigNum { limbs: [ 0x0f1173523113cd28d02344081ebd9c, 0x6aa34cdcd1600752f686c03aab1979, 0x0072a9 ] } , - BigNum { limbs: [ 0xa4236514a460db28328df1ab654d16, 0x2c1ebcd59783fc8a065a163d9f4cc2, 0x0054c0 ] } , - BigNum { limbs: [ 0x19809deb59fb23d7cd720d549ab2eb, 0x7b346cc7e5c436afd1adf36438b891, 0x001f2d ] } , - BigNum { limbs: [ 0x5bdcb3774f915b07ae73cc5f0adfc4, 0x794f3d382a9ccd9ef0b2fc42184788, 0x006189 ] } , - BigNum { limbs: [ 0x61c74f88aecaa3f8518c32a0f5203d, 0x2e03ec6552ab659ae7550d5fbfbdcb, 0x001264 ] } , - BigNum { limbs: [ 0xae2ef914eb9c84ed29493ec7ff16ad, 0xd608aab2f155d1e0a3f39ccd56f235, 0x0006ff ] } , - BigNum { limbs: [ 0x0f7509eb12bf7a12d6b6c03800e954, 0xd14a7eea8bf2615934146cd481131e, 0x006ced ] } , - BigNum { limbs: [ 0x64311239b1d895ff006b399cdbad03, 0xf3bc93ece7b957cbd49e76a47e6512, 0x00739c ] } , - BigNum { limbs: [ 0x5972f0c64c836900ff94c5632452fe, 0xb39695b0958edb6e036992fd59a041, 0x000050 ] } , - BigNum { limbs: [ 0x3b1278ed8877796416ae308bf28026, 0xecb778afffb6cfe57afc10020d61be, 0x001d15 ] } , - BigNum { limbs: [ 0x82918a1275e4859be951ce740d7fdb, 0xba9bb0ed7d9163545d0bf99fcaa395, 0x0056d7 ] } , - BigNum { limbs: [ 0xa7a25b9dd49a5104134f5eb300e02c, 0x2cf64bb4d0a54cca2d246e68177c5c, 0x004abe ] } , - BigNum { limbs: [ 0x1601a76229c1adfbecb0a04cff1fd5, 0x7a5cdde8aca2e66faae39b39c088f7, 0x00292f ] } , - BigNum { limbs: [ 0x07912ff3f641530cb1faaca0788fe0, 0x5b54c3244b32b3a7469982c86c9c23, 0x0027fb ] } , - BigNum { limbs: [ 0xb612d30c081aabf34e05525f877021, 0x4bfe667932157f92916e86d96b6930, 0x004bf2 ] } , - BigNum { limbs: [ 0xe7b9caf31b2d93d22bd425ce277f07, 0xc32b66342b515ec60810c9256a359e, 0x000564 ] } , - BigNum { limbs: [ 0xd5ea380ce32e6b2dd42bd931d880fa, 0xe427c36951f6d473cff7407c6dcfb4, 0x006e88 ] } , - BigNum { limbs: [ 0xae1fbbafdb5d6b6b8fb9a311fecf6a, 0x4e985960df8adb247d8460b76bd1c3, 0x004713 ] } , - BigNum { limbs: [ 0x0f84475022fe939470465bee013097, 0x58bad03c9dbd58155a83a8ea6c3390, 0x002cda ] } , - BigNum { limbs: [ 0x1c350aec0b3d9f7c4974a6e2de02ce, 0xd22add877c74eb8ef78a912f31cc39, 0x0021ea ] } , - BigNum { limbs: [ 0xa16ef813f31e5f83b68b581d21fd33, 0xd5284c1600d347aae07d7872a6391a, 0x005202 ] } , - BigNum { limbs: [ 0x759ee4f8b7872c89cb2ac2efe4b7b2, 0x800723e729779ba9d6565fe057d9ec, 0x003192 ] } , - BigNum { limbs: [ 0x48051e0746d4d27634d53c101b484f, 0x274c05b653d0979001b1a9c1802b67, 0x00425b ] } , - BigNum { limbs: [ 0x38a0f2f40967a84ca08409a8a384de, 0x618531f3c2fb417a3bfc90d1ed929a, 0x0004ec ] } , - BigNum { limbs: [ 0x8503100bf4f456b35f7bf5575c7b23, 0x45cdf7a9ba4cf1bf9c0b78cfea72b9, 0x006f01 ] } , - BigNum { limbs: [ 0xc906e310e55dba95694d065456b35c, 0xa3d1543a026c52e78ec8b9131c2f04, 0x00238b ] } , - BigNum { limbs: [ 0xf49d1fef18fe446a96b2f8aba94ca5, 0x0381d5637adbe052493f508ebbd64e, 0x005062 ] } , - BigNum { limbs: [ 0xd6a06a8ea8362d01ba2547d610515c, 0x5e81e1a39cccacce6386bde5684344, 0x004ba2 ] } , - BigNum { limbs: [ 0xe70398715625d1fe45dab729efaea5, 0x48d147f9e07b866b74814bbc6fc20e, 0x00284b ] } , - BigNum { limbs: [ 0x79c270ed45b1b10c5a52a76e566b29, 0x5346918b58427c4d071c8074d853cf, 0x00661a ] } , - BigNum { limbs: [ 0x43e19212b8aa4df3a5ad5791a994d8, 0x540c98122505b6ecd0eb892cffb184, 0x000dd3 ] } , - BigNum { limbs: [ 0x51ddab9f8df2c2482b0a82571dcb2f, 0x2f50118af61c42047f4bca9c77227c, 0x000a93 ] } , - BigNum { limbs: [ 0x6bc6576070693cb7d4f57ca8e234d2, 0x78031812872bf13558bc3f0560e2d7, 0x00695a ] } , - BigNum { limbs: [ 0xbf8cff018d3fd547f1ac6f4f247155, 0xcc0f804e21cc7faa9e96bbb32656c8, 0x005f2f ] } , - BigNum { limbs: [ 0xfe1703fe711c29b80e538fb0db8eac, 0xdb43a94f5b7bb38f39714deeb1ae8a, 0x0014bd ] } , - BigNum { limbs: [ 0x993df5d2cd1e9be0a6e50591758013, 0xe5bb862b5850c6978a71db0ad7bdf4, 0x003f70 ] } , - BigNum { limbs: [ 0x24660d2d313d631f591af96e8a7fee, 0xc197a37224f76ca24d962e9700475f, 0x00347c ] } , - BigNum { limbs: [ 0x34cfeeea5489476fa1d2dc33b87eb2, 0x2622ab24e5ffb43d418e35f370eda4, 0x004a49 ] } , - BigNum { limbs: [ 0x88d41415a9d2b7905e2d22cc47814f, 0x81307e7897487efc9679d3ae6717af, 0x0029a4 ] } , - BigNum { limbs: [ 0xcc9b1e11e2ec48e9d8784aae9773f1, 0x1124d3b9bfe874aaaf084d7b70b146, 0x0067b0 ] } , - BigNum { limbs: [ 0xf108e4ee1b6fb6162787b451688c10, 0x962e55e3bd5fbe8f28ffbc2667540c, 0x000c3d ] } , - BigNum { limbs: [ 0x9d37098b72d8216927d7dda99b8de7, 0xbf19bfc7397c6472ebcd00e3e0a89e, 0x000981 ] } , - BigNum { limbs: [ 0x206cf9748b83dd96d828215664721a, 0xe83969d643cbcec6ec3b08bdf75cb5, 0x006a6b ] } , - BigNum { limbs: [ 0x791aa5b86eb2212ed6e368e6007ac7, 0x1aca575977854a79661981546231af, 0x0024f9 ] } , - BigNum { limbs: [ 0x44895d478fa9ddd1291c9619ff853a, 0x8c88d24405c2e8c071ee884d75d3a4, 0x004ef4 ] } , - BigNum { limbs: [ 0x6361c0c83281e576d1c74060f9d9f0, 0x9596a94aa9644272a5534fff051983, 0x006959 ] } , - BigNum { limbs: [ 0x5a424237cbda19892e38be9f062611, 0x11bc8052d3e3f0c732b4b9a2d2ebd0, 0x000a94 ] } , - BigNum { limbs: [ 0x401a70e8f8cbe0a21f95f3fed2fdbe, 0x4e034aea9a403f57dcda1e2ae449e2, 0x0007a8 ] } , - BigNum { limbs: [ 0x7d89921705901e5de06a0b012d0243, 0x594fdeb2e307f3e1fb2deb76f3bb71, 0x006c45 ] } , - BigNum { limbs: [ 0x161b4692e743eadc386425ab8aab6d, 0xa2d15922fea8fe36a849146f5f686e, 0x0012d2 ] } , - BigNum { limbs: [ 0xa788bc6d17181423c79bd954755494, 0x0481d07a7e9f35032fbef532789ce5, 0x00611b ] } , - BigNum { limbs: [ 0xa750313e41edce715dd2986b7a9257, 0xf286e40a4b9ce1ed373801462466b6, 0x002384 ] } , - BigNum { limbs: [ 0x1653d1c1bc6e308ea22d6694856daa, 0xb4cc459331ab514ca0d0085bb39e9d, 0x005068 ] } , - BigNum { limbs: [ 0xb854c4f8a2e9617ef67285b215a900, 0x3c93e82d71aff0937862b0585b7d43, 0x002450 ] } , - BigNum { limbs: [ 0x054f3e075b729d81098d794dea5701, 0x6abf41700b9842a65fa559497c8810, 0x004f9d ] } , - BigNum { limbs: [ 0x6d4c2d88fa625681ed9dc9132bcfdb, 0x32a32b4731cda80193295d0332a122, 0x005cb7 ] } , - BigNum { limbs: [ 0x5057d57703f9a87e126235ecd43026, 0x74affe564b7a8b3844deac9ea56431, 0x001736 ] } , - BigNum { limbs: [ 0x092646563372f4041dde43174ff8f2, 0x904b3a9c77ed4c2656dd12459b2213, 0x000580 ] } , - BigNum { limbs: [ 0xb47dbca9cae90afbe221bbe8b0070f, 0x1707ef01055ae713812af75c3ce340, 0x006e6d ] } , - BigNum { limbs: [ 0x4e6db419340260d5a8183c1c7d60a4, 0xe7628bbdcfe505c5ba7a29fc028164, 0x0011f8 ] } , - BigNum { limbs: [ 0x6f364ee6ca599e2a57e7c2e3829f5d, 0xbff09ddfad632d741d8ddfa5d583ef, 0x0061f4 ] } , - BigNum { limbs: [ 0xb273c4c4e5e000d2d6dc93b545d3d1, 0x29eabb6b5e70507a712031421c144f, 0x002493 ] } , - BigNum { limbs: [ 0x0b303e3b187bfe2d29236b4aba2c30, 0x7d686e321ed7e2bf66e7d85fbbf104, 0x004f5a ] } , - BigNum { limbs: [ 0x32aeac741053b05036d7b13a37da4e, 0x88c65b382599eefe3235831ae791af, 0x005792 ] } , - BigNum { limbs: [ 0x8af5568bee084eafc9284dc5c825b3, 0x1e8cce6557ae443ba5d28686f073a4, 0x001c5b ] } , - BigNum { limbs: [ 0x3f9a1ad0e21d61b104e66aca30e6b0, 0x49daefeb804b39e99a78b1fd01a405, 0x0038d9 ] } , - BigNum { limbs: [ 0x7e09e82f1c3e9d4efb199435cf1951, 0x5d7839b1fcfcf9503d8f57a4d6614e, 0x003b14 ] } , - BigNum { limbs: [ 0x67d2fb4e3c58144e842f43a452ee7f, 0x0ac7d65a912aeea58ac8967cec90d3, 0x005734 ] } , - BigNum { limbs: [ 0x55d107b1c203eab17bd0bb5bad1182, 0x9c8b5342ec1d44944d3f7324eb7480, 0x001cb9 ] } , - BigNum { limbs: [ 0xf10b1d38230a77273e2bf34ef523a8, 0xe6ebd737831a36e840b2491a34dcdc, 0x0037b9 ] } , - BigNum { limbs: [ 0xcc98e5c7db5187d8c1d40bb10adc59, 0xc0675265fa2dfc519755c087a32876, 0x003c33 ] } , - BigNum { limbs: [ 0xfaa4c4c7bead221b56c03124edee0d, 0x86c54a1b49bb820b0ddf66b3c1736f, 0x003e29 ] } , - BigNum { limbs: [ 0xc2ff3e383faedce4a93fcddb1211f4, 0x208ddf82338cb12eca28a2ee1691e3, 0x0035c4 ] } , - BigNum { limbs: [ 0x469cb25cd4ff1eec7ba01b17e50b58, 0x494c8cab7d73812de96735cf6688a8, 0x003317 ] } , - BigNum { limbs: [ 0x770750a3295ce013845fe3e81af4a9, 0x5e069cf1ffd4b20beea0d3d2717cab, 0x0040d6 ] } , - BigNum { limbs: [ 0x72368c797565e8c08510a472a5b7b6, 0xe2728652b4c6b69946eab3d642742c, 0x004085 ] } , - BigNum { limbs: [ 0x4b6d768688f6163f7aef5a8d5a484b, 0xc4e0a34ac8817ca0911d55cb959127, 0x003367 ] } , - BigNum { limbs: [ 0xb94f1ca3a9bd8bf3d7051250e172df, 0x509b0cc257d447db8b8b423ffac033, 0x00165b ] } , - BigNum { limbs: [ 0x0454e65c549e730c28faecaf1e8d22, 0x56b81cdb2573eb5e4c7cc761dd4520, 0x005d92 ] } , - BigNum { limbs: [ 0x6bb5fe8d5e45b673d8489859f77d08, 0x9602a9b4e6a2e9ab20ea944819b8ba, 0x00212b ] } , - BigNum { limbs: [ 0x51ee0472a016488c27b766a60882f9, 0x11507fe896a5498eb71d7559be4c99, 0x0052c2 ] } , - BigNum { limbs: [ 0xf7e761b97ce7a28928ab67d4fbe85a, 0x77cc5fc4a9b82148dff4f9ae19f5ca, 0x005afd ] } , - BigNum { limbs: [ 0xc5bca14681745c76d754972b0417a7, 0x2f86c9d8d39011f0f8130ff3be0f88, 0x0018f0 ] } , - BigNum { limbs: [ 0x5a1ea9c9e6198d7539d5a391a52aea, 0x379f0c5b5c3dc1297225341c962c66, 0x0032ed ] } , - BigNum { limbs: [ 0x638559361842718ac62a5b6e5ad517, 0x6fb41d42210a721065e2d58541d8ed, 0x004100 ] } , - BigNum { limbs: [ 0xa4538de6dd29c4a9e8e4fa46c83252, 0x13d54af0dccc73270105c2ef5a44ee, 0x004eff ] } , - BigNum { limbs: [ 0x1950751921323a56171b04b937cdaf, 0x937ddeaca07bc012d70246b27dc065, 0x0024ee ] } , - BigNum { limbs: [ 0x937263e012729d28d1651b41efe2b7, 0x0b142233f8c7f31b135d880851e762, 0x0028e8 ] } , - BigNum { limbs: [ 0x2a319f1febe961d72e9ae3be101d4a, 0x9c3f07698480401ec4aa8199861df1, 0x004b05 ] } , - BigNum { limbs: [ 0x566208104461d1a5579f6349687577, 0x85bb9b792dab1ecc4227299facc750, 0x0059e6 ] } , - BigNum { limbs: [ 0x6741faefb9fa2d5aa8609bb6978a8a, 0x21978e244f9d146d95e0e0022b3e03, 0x001a07 ] } , - BigNum { limbs: [ 0x77c63b3b77e9eeed612a225d770254, 0xcd4f66b0b0e4832b6f68d3b35bb63c, 0x0072a7 ] } , - BigNum { limbs: [ 0x45ddc7c4867210129ed5dca288fdad, 0xda03c2eccc63b00e689f35ee7c4f17, 0x000145 ] } , - BigNum { limbs: [ 0x06588af11d1029002cb711bc971596, 0xbefc3f42bd087254cc0fd0034dce28, 0x00432c ] } , - BigNum { limbs: [ 0xb74b780ee14bd5ffd348ed4368ea6b, 0xe856ea5ac03fc0e50bf8399e8a372b, 0x0030c0 ] } , - BigNum { limbs: [ 0x0c2336f9e61c22dc74f23404eb8927, 0x0c964d2d7d883aae4b3ac7ead974e1, 0x00063f ] } , - BigNum { limbs: [ 0xb180cc06183fdc238b0dcafb1476da, 0x9abcdc6fffbff88b8ccd41b6fe9072, 0x006dae ] } , - BigNum { limbs: [ 0x1cf9b7b8480164564616bbd772ec8a, 0x8d1edc2e23c4478bfd09ecbbbdc6fe, 0x0052b4 ] } , - BigNum { limbs: [ 0xa0aa4b47b65a9aa9b9e943288d1377, 0x1a344d6f5983ebaddafe1ce61a3e55, 0x002139 ] } , - BigNum { limbs: [ 0xe377e99a434db10c0f7e279f57a840, 0x35d54b136c4d829d0f613311012bdd, 0x0048c1 ] } , - BigNum { limbs: [ 0xda2c1965bb0e4df3f081d760a857c1, 0x717dde8a10fab09cc8a6d690d6d975, 0x002b2c ] } , - BigNum { limbs: [ 0x728b2895f1a7f160cdc15b28b34c14, 0xce4f6d72faba28a8cc1d1221bbc909, 0x000b49 ] } , - BigNum { limbs: [ 0x4b18da6a0cb40d9f323ea3d74cb3ed, 0xd903bc2a828e0a910beaf7801c3c4a, 0x0068a3 ] } , - BigNum { limbs: [ 0xe1a662c4aa0118276accb748e4d89e, 0x670db981524a47cec7375b11fc9e50, 0x002595 ] } , - BigNum { limbs: [ 0xdbfda03b545ae6d8953347b71b2763, 0x4045701c2afdeb6b10d0ae8fdb6702, 0x004e58 ] } , - BigNum { limbs: [ 0x93b25df1c5d206aebe55785d5a1303, 0xefa29c0e679a51ad809b1f883ad5ab, 0x007263 ] } , - BigNum { limbs: [ 0x29f1a50e3889f85141aa86a2a5ecfe, 0xb7b08d8f15ade18c576cea199d2fa8, 0x000189 ] } , - BigNum { limbs: [ 0x06b4f4499c5282c7b70da33ed1aa1c, 0x9849c77eb6af7035fb35b7472f237e, 0x005371 ] } , - BigNum { limbs: [ 0xb6ef0eb662097c3848f25bc12e55e5, 0x0f09621ec698c303dcd2525aa8e1d5, 0x00207c ] } , - BigNum { limbs: [ 0xbebaa1ce05b935db9e49df73e8d8f1, 0x6e2d2fe8b4ece620312bd8e49b0b74, 0x003f1d ] } , - BigNum { limbs: [ 0xfee96131f8a2c92461b61f8c172710, 0x3925f9b4c85b4d19a6dc30bd3cf9de, 0x0034d0 ] } , - BigNum { limbs: [ 0xa985c5cb9a543a8e76cfb0a9bd652c, 0xee418fee10f76ebcbc0b13644a62c4, 0x001cf7 ] } , - BigNum { limbs: [ 0x141e3d346407c47189304e56429ad5, 0xb91199af6c50c47d1bfcf63d8da28f, 0x0056f5 ] } , - BigNum { limbs: [ 0x31dc8f1706ed3a709273516579f331, 0x1c8a17580f2aaad415f10ea7010c0a, 0x0031c5 ] } , - BigNum { limbs: [ 0x8bc773e8f76ec48f6d8cad9a860cd0, 0x8ac912456e1d8865c216fafad6f949, 0x004228 ] } , - BigNum { limbs: [ 0xb66b1f4eb128dd523d0a0385f06888, 0xc40a1167be106bbe3f83200cb8fb5e, 0x006167 ] } , - BigNum { limbs: [ 0x0738e3b14d3321adc2f5fb7a0f9779, 0xe3491835bf37c77b9884e9951f09f5, 0x001285 ] } , - BigNum { limbs: [ 0xcfc03eb6e95d51948dedf2e20d5b4a, 0xbe94dba5e67293cd864eef861ffbed, 0x001bfa ] } , - BigNum { limbs: [ 0xede3c44914fead6b72120c1df2a4b7, 0xe8be4df796d59f6c51b91a1bb80965, 0x0057f2 ] } , - BigNum { limbs: [ 0xbac8bfc1513538e100b1bdf0ae0ac0, 0xfac6dcad545ec7e422cc83ee2d55ee, 0x0024db ] } , - BigNum { limbs: [ 0x02db433ead26c61eff4e410f51f541, 0xac8c4cf028e96b55b53b85b3aaaf65, 0x004f11 ] } , - BigNum { limbs: [ 0xefcffc9af0153626748a03879e0d37, 0x2a9373fe92fd694eeb2bd03f8d907c, 0x004070 ] } , - BigNum { limbs: [ 0xcdd406650e46c8d98b75fb7861f2ca, 0x7cbfb59eea4ac9eaecdc39624a74d6, 0x00337d ] } , - BigNum { limbs: [ 0x17e7d20dae6fc433c290af7f64f5ae, 0x387ce6b4b7ade1ed539aaa93936de6, 0x0053da ] } , - BigNum { limbs: [ 0xa5bc30f24fec3acc3d6f4f809b0a53, 0x6ed642e8c59a514c846d5f0e44976d, 0x002013 ] } , - BigNum { limbs: [ 0xdeec5af6fbb2391020c32f171ac5dd, 0x8d0230e1f2caa09529a68c5f6b71fa, 0x000333 ] } , - BigNum { limbs: [ 0xdeb7a80902a9c5efdf3ccfe8e53a24, 0x1a50f8bb8a7d92a4ae617d426c9358, 0x0070ba ] } , - BigNum { limbs: [ 0x55750280dba07d02285256da202718, 0xed10000b9ef7cd9032ed9e65bd172e, 0x003765 ] } , - BigNum { limbs: [ 0x682f007f22bb81fdd7ada825dfd8e9, 0xba432991de5065a9a51a6b3c1aee25, 0x003c87 ] } , - BigNum { limbs: [ 0xe18ebff3faaa15c07ff0fe704ed51b, 0xfc4a8e963bac7c488aa66d37ff6cec, 0x000d91 ] } , - BigNum { limbs: [ 0xdc15430c03b1e93f800f008fb12ae6, 0xab089b07419bb6f14d619c69d89866, 0x00665b ] } , - BigNum { limbs: [ 0x1f11f349f4a1c972a3152f1e2004bf, 0x25d3d25f448997c39c697f9a4a7df7, 0x003359 ] } , - BigNum { limbs: [ 0x9e920fb609ba358d5ceacfe1dffb42, 0x817f573e38be9b763b9e8a078d875c, 0x004094 ] } , - BigNum { limbs: [ 0x5e57ac26862783ef21328babd5fa04, 0x94639d51faf4990ae7084f19b5df2a, 0x001795 ] } , - BigNum { limbs: [ 0x5f4c56d978347b10decd73542a05fd, 0x12ef8c4b82539a2ef0ffba88222629, 0x005c58 ] } , - BigNum { limbs: [ 0xa39e7e33ace0d6fa3bd23976ea9f58, 0x0a1f420a6063467da7a7de6c6c36e3, 0x005d3d ] } , - BigNum { limbs: [ 0x1a0584cc517b2805c42dc5891560a9, 0x9d33e7931ce4ecbc30602b356bce70, 0x0016b0 ] } , - BigNum { limbs: [ 0x5b15a2f585cdfa548af4799af142e6, 0x61cf901b03ed04d3a263e87c253ec2, 0x00243e ] } , - BigNum { limbs: [ 0x628e600a788e04ab750b85650ebd1b, 0x45839982795b2e6635a42125b2c691, 0x004faf ] } , - BigNum { limbs: [ 0x5dd35fe7be02f7accb3df2106b22cc, 0xa0b8ea2b075ac4232584e7abca8f90, 0x00595f ] } , - BigNum { limbs: [ 0x5fd0a3184059075334c20cef94dd35, 0x069a3f7275ed6f16b28321f60d75c3, 0x001a8e ] } , - BigNum { limbs: [ 0x6a821d00e629fd93613ce0a87ffacc, 0x3774bbfdf052b2398fc6e2083e9b6d, 0x001b1b ] } , - BigNum { limbs: [ 0x5321e5ff1832016c9ec31e57800535, 0x6fde6d9f8cf58100484127999969e6, 0x0058d2 ] } , - BigNum { limbs: [ 0x98bfd85728ad3e731ca9103f4a7e3e, 0x110afa78821dcb338fdd3ad2c5d3d2, 0x002917 ] } , - BigNum { limbs: [ 0x24e42aa8d5aec08ce356eec0b581c3, 0x96482f24fb2a6806482acecf123181, 0x004ad6 ] } , - BigNum { limbs: [ 0x8934b96bcdafc077cb1cbb417e9523, 0x8ad90b23cabd42c3100194a5edb528, 0x0040c9 ] } , - BigNum { limbs: [ 0x346f499430ac3e8834e343be816ade, 0x1c7a1e79b28af076c80674fbea502b, 0x003324 ] } , - BigNum { limbs: [ 0x661273fcbe39288ecfc80649bbea18, 0x8d55b0a862c0325bc18ab7d404d31a, 0x00733b ] } , - BigNum { limbs: [ 0x57918f034022d6713037f8b64415e9, 0x19fd78f51a8800de167d51cdd33239, 0x0000b2 ] } , - BigNum { limbs: [ 0xc80822660ea03fe161180add8e7c8b, 0x7e83f7559203e2d33d092ee2863043, 0x000682 ] } , - BigNum { limbs: [ 0xf59be099efbbbf1e9ee7f422718376, 0x28cf3247eb4450669afedabf51d50f, 0x006d6b ] } , - BigNum { limbs: [ 0x4c2f6c4c6979d6421e03245e1d83f5, 0xde31f4afed60227bf324ee9c8da296, 0x0054b3 ] } , - BigNum { limbs: [ 0x717496b394e228bde1fcdaa1e27c0c, 0xc92134ed8fe810bde4e31b054a62bd, 0x001f39 ] } , - BigNum { limbs: [ 0x409a32c508c48e0e2f03376cb187b7, 0xc4fa5038c7b49e5786f239167df4d9, 0x001d9b ] } , - BigNum { limbs: [ 0x7d09d03af59770f1d0fcc7934e784a, 0xe258d964b59394e25115d08b5a107a, 0x005651 ] } , - BigNum { limbs: [ 0x12b89113eeea90974fda386cb940f8, 0x1ea72000b80557717ad996adf91de3, 0x006f23 ] } , - BigNum { limbs: [ 0xaaeb71ec0f716e68b025c69346bf09, 0x88ac099cc542dbc85d2e72f3dee770, 0x0004ca ] } , - BigNum { limbs: [ 0x7e952bc943fa25a7b96ed42f328d19, 0xfddc9652c4229346cfaabd2dbb7ca0, 0x005ba2 ] } , - BigNum { limbs: [ 0x3f0ed736ba61d95846912ad0cd72e8, 0xa976934ab9259ff3085d4c741c88b3, 0x00184a ] } , - BigNum { limbs: [ 0x5af17137d56fc0450d9f977ea8ee05, 0xebd0c8e9101be155cb4893f9e9ac56, 0x00110c ] } , - BigNum { limbs: [ 0x62b291c828ec3ebaf26067815711fc, 0xbb8260b46d2c51e40cbf75a7ee58fd, 0x0062e0 ] } , - BigNum { limbs: [ 0xcc0fb37f9b79c8d0286f742cd86675, 0xac722393d117a6e3d0a41fee9e1750, 0x0016cc ] } , - BigNum { limbs: [ 0xf1944f8062e2362fd7908ad327998c, 0xfae10609ac308c560763e9b339ee02, 0x005d20 ] } , - BigNum { limbs: [ 0x9a22de5f232c4d70421c223a460e6d, 0x852f62cc2d5663da0c93f30179ec54, 0x004de8 ] } , - BigNum { limbs: [ 0x238124a0db2fb18fbde3dcc5b9f194, 0x2223c6d14ff1cf5fcb7416a05e18ff, 0x002605 ] } , - BigNum { limbs: [ 0x8e8be7eb4f8aef0919810f5154f302, 0xfff8289d7770e0c52bcccf7ea4d54d, 0x0026e3 ] } , - BigNum { limbs: [ 0x2f181b14aed10ff6e67eefaeab0cff, 0xa75b010005d75274ac3b3a23333006, 0x004d09 ] } , - BigNum { limbs: [ 0x38adb8945c016b768a01c2f8d0a0a5, 0xea004abaa750911e29712487a533b6, 0x002365 ] } , - BigNum { limbs: [ 0x84f64a6ba25a938975fe3c072f5f5c, 0xbd52dee2d5f7a21bae96e51a32d19d, 0x005087 ] } , - BigNum { limbs: [ 0x92c321e18a980d935ad036ebc7abf4, 0x9e8bb1654c1e72f742d644c47a0ee6, 0x005530 ] } , - BigNum { limbs: [ 0x2ae0e11e73c3f16ca52fc81438540d, 0x08c778383129c0429531c4dd5df66d, 0x001ebd ] } , - BigNum { limbs: [ 0xd5a99e920c0a4d6dc7c97b1a613397, 0xdf54cf455645e7251723c4c73b05ca, 0x0064f8 ] } , - BigNum { limbs: [ 0xe7fa646df251b192383683e59ecc6a, 0xc7fe5a5827024c14c0e444da9cff88, 0x000ef4 ] } , - BigNum { limbs: [ 0xceb34626e61426bedac33c56d72943, 0x6fe1a695922d9dbff7487228f5f976, 0x0019e1 ] } , - BigNum { limbs: [ 0xeef0bcd91847d841253cc2a928d6be, 0x37718307eb1a9579e0bf9778e20bdc, 0x005a0c ] } , - BigNum { limbs: [ 0x16a24a1c573a1e01031ac8046f9bdd, 0x2ea35c2dbfb86866a52cf7b2121414, 0x0031df ] } , - BigNum { limbs: [ 0xa701b8e3a721e0fefce536fb906424, 0x78afcd6fbd8fcad332db11efc5f13f, 0x00420e ] } , - BigNum { limbs: [ 0x96a06bc56604838f809e93711a4398, 0x71af9d3a27456dda1cad96fbf924ab, 0x0051cd ] } , - BigNum { limbs: [ 0x2703973a98577b707f616b8ee5bc69, 0x35a38c635602c55fbb5a72a5dee0a8, 0x002220 ] } , - BigNum { limbs: [ 0xe97d34c43ae230455fd6f6087dd940, 0x6bee2d12f0119b845d7232728e5d66, 0x000ebc ] } , - BigNum { limbs: [ 0xd426ce3bc379cebaa02908f78226c1, 0x3b64fc8a8d3697b57a95d72f49a7ec, 0x006531 ] } , - BigNum { limbs: [ 0xa2b5788f5d0442c24a231c74c130ec, 0xfe123c89cf7fd132123b65bf8f4969, 0x000d45 ] } , - BigNum { limbs: [ 0x1aee8a70a157bc3db5dce28b3ecf15, 0xa940ed13adc86207c5cca3e248bbea, 0x0066a7 ] } , - BigNum { limbs: [ 0x3021a882ed13f223669e65d81db790, 0x66a367686ff336b8fac82b124e1a66, 0x006135 ] } , - BigNum { limbs: [ 0x8d825a7d11480cdc99619927e24871, 0x40afc2350d54fc80dd3fde8f89eaed, 0x0012b8 ] } , - BigNum { limbs: [ 0x501a3130ac41ac068cf15833359558, 0x200bf29daceeee865dac2a421569c5, 0x007273 ] } , - BigNum { limbs: [ 0x6d89d1cf521a52f9730ea6ccca6aa9, 0x874736ffd05944b37a5bdf5fc29b8e, 0x00017a ] } , - BigNum { limbs: [ 0x8ee89022ade12b1c8f51a262773c9a, 0xdc80918b0b6cfa8a8e8fdd7c0b9ad0, 0x004a6a ] } , - BigNum { limbs: [ 0x2ebb72dd507ad3e370ae5c9d88c367, 0xcad2981271db38af49782c25cc6a83, 0x002982 ] } , - BigNum { limbs: [ 0x7ce86999d8cf80bbb10a3f606150a4, 0x56825c92e0ad63179e83cc6765cc83, 0x005063 ] } , - BigNum { limbs: [ 0x40bb9966258c7e444ef5bf9f9eaf5d, 0x50d0cd0a9c9ad02239843d3a7238d0, 0x00238a ] } , - BigNum { limbs: [ 0xe543fdc7ad70c6cc6f28934c0bd42b, 0x5d3d5da2d1df6f11cd203efbcb13a8, 0x00348f ] } , - BigNum { limbs: [ 0xd860053850eb383390d76bb3f42bd6, 0x4a15cbfaab68c4280ae7caa60cf1aa, 0x003f5e ] } , - BigNum { limbs: [ 0x0eafc16384819efb1f7297f3ac5bb3, 0xaf9617a212761ffed2078420af12b8, 0x0009f0 ] } , - BigNum { limbs: [ 0xaef4419c79da6004e08d670c53a44e, 0xf7bd11fb6ad2133b0600858128f29b, 0x0069fc ] } , - BigNum { limbs: [ 0x3e1383fdf44745e84faa392042d2a5, 0xc6f466851b52cbedfd0f227650fbb2, 0x000ac5 ] } , - BigNum { limbs: [ 0x7f907f020a14b917b055c5dfbd2d5c, 0xe05ec31861f5674bdaf8e72b8709a1, 0x006927 ] } , - BigNum { limbs: [ 0xd1e24827161b3c52ec094346a13715, 0xdc280419fc05f8f27ebdced81d8465, 0x006848 ] } , - BigNum { limbs: [ 0xebc1bad8e840c2ad13f6bbb95ec8ec, 0xcb2b258381423a47594a3ac9ba80ed, 0x000ba4 ] } , - BigNum { limbs: [ 0x929c27acbf6f07e83f6a18cfeb518f, 0x92649b4e9d41974e3c2e23fd3b703c, 0x00482e ] } , - BigNum { limbs: [ 0x2b07db533eecf717c095e63014ae72, 0x14ee8e4ee0069beb9bd9e5a49c9517, 0x002bbf ] } , - BigNum { limbs: [ 0xc0c01151e77ac9d0d89977bf0bdc0d, 0x539ffb8491bff9d6f3e18ece1fce90, 0x006c77 ] } , - BigNum { limbs: [ 0xfce3f1ae16e1352f27668740f423f4, 0x53b32e18eb883962e4267ad3b836c2, 0x000776 ] } , - BigNum { limbs: [ 0xb0f2c94bef0fd91021d2e0c26e422a, 0x46d640cb3d4962a382204a061caeb3, 0x004441 ] } , - BigNum { limbs: [ 0x0cb139b40f4c25efde2d1e3d91bdd7, 0x607ce8d23ffed09655e7bf9bbb56a0, 0x002fac ] } , - BigNum { limbs: [ 0x2d4d3e1c7d479fde7a6da7ca691b18, 0x89ab62c4fbddb1edd8487c81091411, 0x0065e4 ] } , - BigNum { limbs: [ 0x9056c4e381145f218592573596e4e9, 0x1da7c6d8816a814bffbf8d20cef142, 0x000e09 ] } , - BigNum { limbs: [ 0x37d271538939c9dc447a0c2580c1b0, 0xf4efefcd2cb6512b61ac434fabc80a, 0x004ff1 ] } , - BigNum { limbs: [ 0x85d191ac75223523bb85f2da7f3e51, 0xb26339d05091e20e765bc6522c3d49, 0x0023fb ] } , - BigNum { limbs: [ 0x7ac6ac2c5fc6aae82bf72f1e101f27, 0x397b76ce414298f3e9d95db1ff77c6, 0x006167 ] } , - BigNum { limbs: [ 0x42dd56d39e955417d408cfe1efe0da, 0x6dd7b2cf3c059a45ee2eabefd88d8d, 0x001286 ] } , - BigNum { limbs: [ 0x2dad77d8f9f9d1724c4670bbdc03b1, 0x201e6f07e5f85293c7255fd588af84, 0x005226 ] } , - BigNum { limbs: [ 0x8ff68b2704622d8db3b98e4423fc50, 0x8734ba95974fe0a610e2a9cc4f55cf, 0x0021c7 ] } , - BigNum { limbs: [ 0x31b85da4bc237714688a4f1fa7f14b, 0xe109ecf6858d35608d567d9e92a1ff, 0x0071cd ] } , - BigNum { limbs: [ 0x8beba55b423887eb9775afe0580eb6, 0xc6493ca6f7bafdd94ab18c03456354, 0x00021f ] } , - BigNum { limbs: [ 0xdfada603e1dce57091bb8ff457fef0, 0xab1fc1eafe4d5857d4623954c55217, 0x001f6e ] } , - BigNum { limbs: [ 0xddf65cfc1c7f198f6e446f0ba80111, 0xfc3367b27efadae203a5d04d12b33b, 0x00547e ] } , - BigNum { limbs: [ 0x0b92f0a63d757c8460d2f1041e0261, 0xbd0c7be45dbf29f747b2321911161e, 0x002e04 ] } , - BigNum { limbs: [ 0xb2111259c0e6827b9f2d0dfbe1fda0, 0xea46adb91f8909429055d788c6ef35, 0x0045e8 ] } , - BigNum { limbs: [ 0xe9526f62cf5f89cf2db8050e4f9564, 0x351ea0bfcade890fcc4f70e7158b78, 0x0045de ] } , - BigNum { limbs: [ 0xd451939d2efc7530d247f9f1b06a9d, 0x723488ddb269aa2a0bb898bac279da, 0x002e0f ] } , - BigNum { limbs: [ 0xefa682f06d4e5af29e4a823ec62ff7, 0x380508a24e273fcd7c23d264335814, 0x004fb7 ] } , - BigNum { limbs: [ 0xcdfd800f910da40d61b57cc139d00a, 0x6f4e20fb2f20f36c5be4373da4ad3e, 0x002436 ] } , - BigNum { limbs: [ 0x104a8fd24d2920608f5c5a9da5d75f, 0x767fcf95e5dcc416e94fc1bb33428e, 0x006f98 ] } , - BigNum { limbs: [ 0xad59732db132de9f70a3a4625a28a2, 0x30d35a07976b6f22eeb847e6a4c2c5, 0x000455 ] } , - BigNum { limbs: [ 0x1564f59be4c7d6869518116781cfd0, 0x408ea8993fc364be7c6db10b5df2f9, 0x0005dc ] } , - BigNum { limbs: [ 0xa83f0d64199428796ae7ed987e3031, 0x66c481043d84ce7b5b9a58967a125a, 0x006e11 ] } , - BigNum { limbs: [ 0xbeb7b108aa8f9683962950a20d381c, 0xa5ebff173102585496360c27273617, 0x004ec3 ] } , - BigNum { limbs: [ 0xfeec51f753cc687c69d6ae5df2c7e5, 0x01672a864c45dae541d1fd7ab0cf3b, 0x00252a ] } , - BigNum { limbs: [ 0x866c926ee97c85cab4e46baa195ab3, 0x66ba6bf3cfddced0628be5092707ba, 0x000975 ] } , - BigNum { limbs: [ 0x3737709114df79354b1b9355e6a54e, 0x4098bda9ad6a6469757c2498b0fd99, 0x006a78 ] } , - BigNum { limbs: [ 0x6bb67b96015a3f6ba02586580c9828, 0x321737cad727f948868a959d3c7c45, 0x00240a ] } , - BigNum { limbs: [ 0x51ed8769fd01bf945fda78a7f367d9, 0x753bf1d2a62039f1517d74049b890e, 0x004fe3 ] } , - BigNum { limbs: [ 0x7dbc3842f33819408fa144b9f541ac, 0x76014b996424530f5e45c2611e3a91, 0x006b1e ] } , - BigNum { limbs: [ 0x3fe7cabd0b23e5bf705eba460abe55, 0x3151de041923e02a79c24740b9cac2, 0x0008cf ] } , - BigNum { limbs: [ 0x56dea51579fdb5cc2f4681123413c8, 0xe8ffdea9ed490a6e19acb0cb846939, 0x00508a ] } , - BigNum { limbs: [ 0x66c55dea845e4933d0b97dedcbec39, 0xbe534af38fff28cbbe5b58d6539c1a, 0x002362 ] } , - BigNum { limbs: [ 0xd6571e990bd165950279356e9dfd8b, 0x3d3e7ee64c0ec1c2a36b9ce85c8901, 0x0013f0 ] } , - BigNum { limbs: [ 0xe74ce466f28a996afd86c991620276, 0x6a14aab731397177349c6cb97b7c51, 0x005ffd ] } , - BigNum { limbs: [ 0xc11ba5bf07249ec7835c8b97119fcb, 0xa9a6734e0f793fe0112cac148f858d, 0x003bdc ] } , - BigNum { limbs: [ 0xfc885d40f73760387ca37368ee6036, 0xfdacb64f6dcef359c6db5d8d487fc5, 0x003810 ] } , - BigNum { limbs: [ 0xd7368a349bef3ec3325d7e2208398b, 0xfcf888e8f994ad436c377f84b369ff, 0x000955 ] } , - BigNum { limbs: [ 0xe66d78cb626cc03ccda280ddf7c676, 0xaa5aa0b483b385f66bd08a1d249b53, 0x006a97 ] } , - BigNum { limbs: [ 0xd66488af38b113a247a51814034c74, 0xeaacd919cae8b4513d56b918973abe, 0x0057d7 ] } , - BigNum { limbs: [ 0xe73f7a50c5aaeb5db85ae6ebfcb38d, 0xbca65083b25f7ee89ab1508940ca94, 0x001c15 ] } , - BigNum { limbs: [ 0x8d622f705bc6369880ad615f24c9eb, 0x459f44dd3178e6798708085902bdb9, 0x000862 ] } , - BigNum { limbs: [ 0x3041d38fa295c8677f529da0db3616, 0x61b3e4c04bcf4cc051000148d5479a, 0x006b8b ] } , - BigNum { limbs: [ 0x86e9a5a65c5e4b6e74700c9a834868, 0x343f0ef8705f52f54fb1d96b6f222d, 0x00597e ] } , - BigNum { limbs: [ 0x36ba5d59a1fdb3918b8ff2657cb799, 0x73141aa50ce8e0448856303668e326, 0x001a6f ] } , - BigNum { limbs: [ 0x50d85d8ad46cc4d1964cd9073d2ef3, 0x59eeaf17f736c403e5b3483713226b, 0x0066ab ] } , - BigNum { limbs: [ 0x6ccba57529ef3a2e69b325f8c2d10e, 0x4d647a8586116f35f254c16ac4e2e8, 0x000d42 ] } , - BigNum { limbs: [ 0xe6ffd25f4248045e3c716690129f4a, 0xd8f43be1f980e923fcf665ec834f7f, 0x000b94 ] } , - BigNum { limbs: [ 0xd6a430a0bc13faa1c38e986fed60b7, 0xce5eedbb83c74a15db11a3b554b5d3, 0x006858 ] } , - BigNum { limbs: [ 0x023a51166735d2a0748a13a6cddfec, 0xf9b143ccc689086fcc5417b6e8fc68, 0x003b04 ] } , - BigNum { limbs: [ 0xbb69b1e997262c5f8b75eb59322015, 0xada1e5d0b6bf2aca0bb3f1eaef08eb, 0x0038e8 ] } , - BigNum { limbs: [ 0x03ddaf59606760210583c72f63c95f, 0xf95a24ed152ce2246ee4ea42a23ecc, 0x002a3a ] } , - BigNum { limbs: [ 0xb9c653a69df49edefa7c37d09c36a2, 0xadf904b0681b511569231f5f35c687, 0x0049b2 ] } , - BigNum { limbs: [ 0x6955f410ce4d4396ddead18be25981, 0xb2edaa2a3b71b1423003a85b6aef57, 0x0010ad ] } , - BigNum { limbs: [ 0x544e0eef300ebb6922152d741da680, 0xf4657f7341d681f7a80461466d15fc, 0x00633f ] } , - BigNum { limbs: [ 0x80ec5c6b7891fdd631490f7fcf4d23, 0x42ea86c90e67d6071fb0171d806107, 0x0003be ] } , - BigNum { limbs: [ 0x3cb7a69485ca0129ceb6ef8030b2de, 0x6468a2d46ee05d32b857f28457a44c, 0x00702f ] } , - BigNum { limbs: [ 0x5499261f2a06642f454a0ed4ca515e, 0x19d8c18e2de6d9d035b87b80d10d39, 0x001626 ] } , - BigNum { limbs: [ 0x690adce0d4559ad0bab5f02b35aea3, 0x8d7a680f4f615969a24f8e2106f81a, 0x005dc7 ] } , - BigNum { limbs: [ 0xfe3e9c089ca0545a715ae4ea34d56e, 0x031c6da66e8b98f1c7c41393106f03, 0x0030f3 ] } , - BigNum { limbs: [ 0xbf6566f761bbaaa58ea51a15cb2a93, 0xa436bbf70ebc9a481043f60ec7964f, 0x0042fa ] } , - BigNum { limbs: [ 0x81421cca1ced58197c87517f584501, 0x8f2e6492dbd866656b7bff443c202c, 0x0026b0 ] } , - BigNum { limbs: [ 0x3c61e635e16ea6e68378ad80a7bb00, 0x1824c50aa16fccd46c8c0a5d9be527, 0x004d3d ] } , - BigNum { limbs: [ 0x8b9ea6291a21d8101af8cc9a89a9d4, 0x6d133ddbe0d3532d52df95788823b3, 0x000dca ] } , - BigNum { limbs: [ 0x32055cd6e43a26efe507326576562d, 0x3a3febc19c74e00c852874294fe1a0, 0x006623 ] } , - BigNum { limbs: [ 0x2b972840261178ff3be3802b3c98d0, 0xc2711ac35b6476c07c2f1743ea9660, 0x006ab5 ] } , - BigNum { limbs: [ 0x920cdabfd84a8600c41c7ed4c36731, 0xe4e20eda21e3bc795bd8f25ded6ef3, 0x000937 ] } , - BigNum { limbs: [ 0xf3867a9619ff48810d0abb9247631c, 0x64c6583d90b0094502db0777c644fc, 0x0036d5 ] } , - BigNum { limbs: [ 0xca1d8869e45cb67ef2f5436db89ce5, 0x428cd15fec9829f4d52d022a11c056, 0x003d18 ] } , - BigNum { limbs: [ 0xf8913245901cde2587ef05f5eb129e, 0xbded6f52d232bdfe1f88215a311d08, 0x005fec ] } , - BigNum { limbs: [ 0xc512d0ba6e3f20da7810f90a14ed63, 0xe965ba4aab15753bb87fe847a6e84a, 0x001400 ] } , - BigNum { limbs: [ 0x0a1edcd2f0555740fb90fa96cc6ea5, 0x778745c49bde40dcc6ace097f8a5a5, 0x000348 ] } , - BigNum { limbs: [ 0xb385262d0e06a7bf046f046933915c, 0x2fcbe3d8e169f25d115b2909df5fae, 0x0070a5 ] } , - BigNum { limbs: [ 0x304383b117c250fae29bdd9109add1, 0xefaa375735aeb6cc2deecbf063a8ec, 0x003f86 ] } , - BigNum { limbs: [ 0x8d607f4ee699ae051d64216ef65230, 0xb7a8f24647997c6daa193db1745c67, 0x003466 ] } , - BigNum { limbs: [ 0xe7ac34fc2134eb59db6ee89a045876, 0x443c0ca047b91ea16a7bde084fb549, 0x004b8b ] } , - BigNum { limbs: [ 0xd5f7ce03dd2713a624911665fba78b, 0x63171cfd358f14986d8c2b99885009, 0x002862 ] } , - BigNum { limbs: [ 0xbf33615ffd9e1021257e7872974ff7, 0xcf8dfa2422928f6defc1516ea78a1a, 0x001043 ] } , - BigNum { limbs: [ 0xfe70a1a000bdeededa81868d68b00a, 0xd7c52f795ab5a3cbe846b833307b38, 0x0063a9 ] } , - BigNum { limbs: [ 0xdb9251f06f19baa8c33edce87e1f45, 0xfd64d9aff0aa435418c04418536bef, 0x007122 ] } , - BigNum { limbs: [ 0xe211b10f8f4244573cc1221781e0bc, 0xa9ee4fed8c9defe5bf47c589849963, 0x0002ca ] } , - BigNum { limbs: [ 0x862745d40aec32c13d971297725adf, 0x8af8c1fd7749c84a8ca472f3dba4c7, 0x0030dd ] } , - BigNum { limbs: [ 0x377cbd2bf36fcc3ec268ec688da522, 0x1c5a67a005fe6aef4b6396adfc608c, 0x004310 ] } , - BigNum { limbs: [ 0x98161a5481f008b6d28dd8a3744d7b, 0x9475bf2751a2effef2e2d97a2f97e7, 0x005596 ] } , - BigNum { limbs: [ 0x258de8ab7c6bf6492d72265c8bb286, 0x12dd6a762ba5433ae5253027a86d6c, 0x001e57 ] } , - BigNum { limbs: [ 0xc141bd3dd6ef00ad461d1b271c9c0c, 0x17c1f08b58500624ce1d9620ecc224, 0x000cc9 ] } , - BigNum { limbs: [ 0xfc6245c2276cfe52b9e2e3d8e363f5, 0x8f91391224f82d1509ea7380eb432e, 0x006724 ] } , - BigNum { limbs: [ 0x120b7188c4e4d3c0315a59f5503426, 0x7b96b545ff4fcabe0bdfb8abd5275e, 0x004850 ] } , - BigNum { limbs: [ 0xab98917739772b3fcea5a50aafcbdb, 0x2bbc74577df8687bcc2850f602ddf5, 0x002b9d ] } , - BigNum { limbs: [ 0x642f6354efb709352b2ae5d10ed00c, 0xb7490ef28001950c6ea6d3140de0dd, 0x004c65 ] } , - BigNum { limbs: [ 0x59749fab0ea4f5cad4d5192ef12ff5, 0xf00a1aaafd469e2d6961368dca2476, 0x002787 ] } , - BigNum { limbs: [ 0xf6586deb66249928e1e77c1e2280d9, 0x14d9b5bd55c1afe3fdc49208d90c4a, 0x0000e1 ] } , - BigNum { limbs: [ 0xc74b9514983765d71e1882e1dd7f28, 0x927973e027868355da437798fef908, 0x00730c ] } , - BigNum { limbs: [ 0xdc19f540cb73e3dd53d7add08cc541, 0x1e70e21dbdce879291f82fde77193e, 0x000d69 ] } , - BigNum { limbs: [ 0xe18a0dbf32e81b22ac28512f733ac0, 0x88e2477fbf79aba7460fd9c360ec14, 0x006684 ] } , - BigNum { limbs: [ 0x55ad3ac9782d2b7c9743bf0601fbe4, 0x67ecc4d30489ba019131e55fa34d46, 0x0015da ] } , - BigNum { limbs: [ 0x67f6c836862ed38368bc3ff9fe041d, 0x3f6664ca78be793846d6244234b80d, 0x005e13 ] } , - BigNum { limbs: [ 0x2842f43465c239c49152fe89b787e5, 0xb05e79e40675fc3fa4b049f9861bf2, 0x005112 ] } , - BigNum { limbs: [ 0x95610ecb9899c53b6ead007648781c, 0xf6f4afb976d236fa3357bfa851e961, 0x0022da ] } , - BigNum { limbs: [ 0x1388a4cb42e47774dc9fc905db3b7b, 0x120f170d6e72f2b163a947af169f22, 0x00231d ] } , - BigNum { limbs: [ 0xaa1b5e34bb77878b236035fa24c486, 0x954412900ed54088745ec1f2c16631, 0x0050d0 ] } , - BigNum { limbs: [ 0x337fe716c09367b1fd4ee32c5de83f, 0x22ad9a9beffb98289d0281dff4ad47, 0x001b7d ] } , - BigNum { limbs: [ 0x8a241be93dc8974e02b11bd3a217c2, 0x84a58f018d4c9b113b0587c1e3580c, 0x005870 ] } , - BigNum { limbs: [ 0x2fe991895b47fac719e5d3246b8306, 0x2a1cb432bda14c5b90a7407f9b61f6, 0x000652 ] } , - BigNum { limbs: [ 0x8dba7176a3140438e61a2bdb947cfb, 0x7d36756abfa6e6de4760c9223ca35d, 0x006d9b ] } , - BigNum { limbs: [ 0x431054cb34d3fb33ec73192134d8d2, 0x09c07d447dcf49302bc8edc2679bdd, 0x004b76 ] } , - BigNum { limbs: [ 0x7a93ae34c98803cc138ce5decb272f, 0x9d92ac58ff78ea09ac3f1bdf706976, 0x002877 ] } , - BigNum { limbs: [ 0xcd6fe8ec4b05a42d79cba08538b82b, 0x2b50ec245e3c56d1a55a68fd2c29a0, 0x005f7a ] } , - BigNum { limbs: [ 0xf0341a13b3565ad286345e7ac747d6, 0x7c023d791f0bdc6832ada0a4abdbb2, 0x001473 ] } , - BigNum { limbs: [ 0x71545d0ad81ef7404a64280c1cbef2, 0x897717d8457c34faffa2843da18d5f, 0x000fd2 ] } , - BigNum { limbs: [ 0x4c4fa5f5263d07bfb59bd6f3e3410f, 0x1ddc11c537cbfe3ed86585643677f4, 0x00641b ] } , - BigNum { limbs: [ 0x9c5f519777a7ca20c8c8277bd772b8, 0x0e6424004bc267145a9e28800a80a0, 0x000c98 ] } , - BigNum { limbs: [ 0x2144b16886b434df3737d784288d49, 0x98ef059d3185cc257d69e121cd84b3, 0x006755 ] } , - BigNum { limbs: [ 0xe2cb11b8e507e7071c4f795885040f, 0xd35030c90bd06be11063f8748d7968, 0x0038ed ] } , - BigNum { limbs: [ 0xdad8f147195417f8e3b085a77afbf2, 0xd402f8d47177c758c7a4112d4a8bea, 0x003aff ] } , - BigNum { limbs: [ 0xa9ebe0f7a4e8d76014cf9e21188ccb, 0xbb4e6a8384a97bde3c12e3747e84e1, 0x004619 ] } , - BigNum { limbs: [ 0x13b822085973279feb3060dee77336, 0xec04bf19f89eb75b9bf5262d598072, 0x002dd3 ] } , - BigNum { limbs: [ 0xef72956c37abf34af7aaaa86fd3fc3, 0x0f88dc7101de272092f76d82b96918, 0x00070a ] } , - BigNum { limbs: [ 0xce316d93c6b00bb50855547902c03e, 0x97ca4d2c7b6a0c1945109c1f1e9c3a, 0x006ce3 ] } , - BigNum { limbs: [ 0x54619b1123c8ed46437e2d1a0ae920, 0x4f0c5c5a4696aa5b5b7cf8418a7563, 0x00043d ] } , - BigNum { limbs: [ 0x694267eeda9311b9bc81d1e5f516e1, 0x5846cd4336b188de7c8b11604d8ff0, 0x006fb0 ] } , - BigNum { limbs: [ 0x98b1ef36e487c1a9d1b6edc719fe23, 0xc4c3ffa3004ddb76546e0860fe1298, 0x006c0f ] } , - BigNum { limbs: [ 0x24f213c919d43d562e491138e601de, 0xe28f29fa7cfa57c3839a0140d9f2bb, 0x0007dd ] } , - BigNum { limbs: [ 0x5225a30b2a3612dd51799cb5fd9272, 0xb62aa9bcf696b0e8b6ea41c6d1740d, 0x001bb2 ] } , - BigNum { limbs: [ 0x6b7e5ff4d425ec22ae86624a026d8f, 0xf1287fe086b18251211dc7db069146, 0x00583a ] } , - BigNum { limbs: [ 0x3cf1afccea050c8bf981972d758408, 0xc157c59ba9e9a7f26bca77a1bb63cd, 0x006669 ] } , - BigNum { limbs: [ 0x80b253331456f274067e67d28a7bf9, 0xe5fb6401d35e8b476c3d92001ca186, 0x000d83 ] } , - BigNum { limbs: [ 0xe416464e90f0d3373b0bfefcf32a40, 0x905b8655c1b0a809631c69ebcebc4f, 0x002c3c ] } , - BigNum { limbs: [ 0xd98dbcb16d6b2bc8c4f400030cd5c1, 0x16f7a347bb978b3074eb9fb6094903, 0x0047b1 ] } , - BigNum { limbs: [ 0x0a731b9e24201dbc92e2666bd98e2c, 0x016f4632e15501509b448bc138b2df, 0x000664 ] } , - BigNum { limbs: [ 0xb330e761da3be1436d1d98942671d5, 0xa5e3e36a9bf331e93cc37de09f5274, 0x006d89 ] } , - BigNum { limbs: [ 0x7df07c8d76839dfc7346f3a061da9d, 0x85fc7f11c541b93fa635ccce15f4a5, 0x005efe ] } , - BigNum { limbs: [ 0x3fb3867287d861038cb90b5f9e2564, 0x2156aa8bb80679fa31d23cd3c210ae, 0x0014ef ] } , - BigNum { limbs: [ 0x8b7288d32271993a73ed0e14baa196, 0x60ba6fb95b03875cb66f4ba9da1ff1, 0x004fa2 ] } , - BigNum { limbs: [ 0x32317a2cdbea65c58c12f0eb455e6b, 0x4698b9e42244abdd2198bdf7fde562, 0x00244b ] } , - BigNum { limbs: [ 0x2ed26dcce2c397d7f7055b33550184, 0x0404be4c3a804eb94238db863afb59, 0x00605e ] } , - BigNum { limbs: [ 0x8ed195331b98672808faa3ccaafe7d, 0xa34e6b5142c7e48095cf2e1b9d09fa, 0x00138f ] } , - BigNum { limbs: [ 0x50bef6179b3e22c8368bda8176c1ca, 0xec56fb1bfac1b59a50f6a6332576cf, 0x0030a4 ] } , - BigNum { limbs: [ 0x6ce50ce8631ddc37c974247e893e37, 0xbafc2e8182867d9f8711636eb28e84, 0x004348 ] } , - BigNum { limbs: [ 0xe266e5c9c83b37fa6d8632b98df179, 0x5b8e714077c35363220d789b598e6e, 0x006692 ] } , - BigNum { limbs: [ 0xdb3d1d363620c7059279cc46720e88, 0x4bc4b85d0584dfd6b5fa91067e76e4, 0x000d5b ] } , - BigNum { limbs: [ 0x52cc381c35e5d7367094c4b720a5d9, 0xd2ccee56d3f16a5ce9fe7ac94f551b, 0x0049f1 ] } , - BigNum { limbs: [ 0x6ad7cae3c87627c98f6b3a48df5a28, 0xd4863b46a956c8dcee098ed888b038, 0x0029fb ] } , - BigNum { limbs: [ 0xf3eef0e8dbc8437ec6900bec2c4481, 0x901c7dc6acfcec0012dcb9f62d5075, 0x001644 ] } , - BigNum { limbs: [ 0xc9b512172293bb81396ff313d3bb80, 0x1736abd6d04b4739c52b4fabaab4dd, 0x005da9 ] } , - BigNum { limbs: [ 0x2629bd332c676dc00f86c35bcb6885, 0x1b881ea7f2f61a0f3eae93cad1c0ff, 0x0038f8 ] } , - BigNum { limbs: [ 0x977a45ccd1f4913ff0793ba434977c, 0x8bcb0af58a52192a995975d7064454, 0x003af5 ] } , - BigNum { limbs: [ 0xce744ed17bb2e2c550ff6c874b4bad, 0xb7f01bb3756aab78670e6701bfaeae, 0x007061 ] } , - BigNum { limbs: [ 0xef2fb42e82a91c3aaf009278b4b454, 0xef630dea07dd87c170f9a2a01856a4, 0x00038b ] } , - BigNum { limbs: [ 0xf4bcc3e04dc69453991724037e01e3, 0xa1b42edfe266fabc93ca2bb460577f, 0x0041d1 ] } , - BigNum { limbs: [ 0xc8e73f1fb0956aac66e8dafc81fe1e, 0x059efabd9ae1387d443ddded77add3, 0x00321c ] } , - BigNum { limbs: [ 0x8470414123dbac1e5f55aa54a7bfd0, 0xc636a252bb48e1088335d44389c3dd, 0x006de7 ] } , - BigNum { limbs: [ 0x3933c1beda8052e1a0aa54ab584031, 0xe11c874ac1ff523154d2355e4e4176, 0x000605 ] } , - BigNum { limbs: [ 0x7a5855f765a13a9bf559997eb9a267, 0xf7fb7c3aed0a5508f84c0117aaf087, 0x004bac ] } , - BigNum { limbs: [ 0x434bad0898bac4640aa66581465d9a, 0xaf57ad62903dde30dfbc088a2d14cc, 0x002840 ] } , - BigNum { limbs: [ 0x1b0e3b20190bd8d1bdb8e8290455d4, 0xcdc95eb6e1d397581d7998656c0f17, 0x0071c8 ] } , - BigNum { limbs: [ 0xa295c7dfe550262e424716d6fbaa2d, 0xd989cae69b749be1ba8e713c6bf63c, 0x000224 ] } , - BigNum { limbs: [ 0xbb28bae56463270ec112748503a635, 0x8a89b08eee1c1580b324ae690d0e9e, 0x006b81 ] } , - BigNum { limbs: [ 0x027b481a99f8d7f13eed8a7afc59cc, 0x1cc9790e8f2c1db924e35b38caf6b5, 0x00086c ] } , - BigNum { limbs: [ 0x8e6e545d6dafa949fb3db31c712d0f, 0xfcf12d76afe8e6bf54ef4f796796d7, 0x0027fb ] } , - BigNum { limbs: [ 0x2f35aea290ac55b604c24be38ed2f2, 0xaa61fc26cd5f4c7a8318ba28706e7c, 0x004bf1 ] } , - BigNum { limbs: [ 0x78db29ce8ac2214b3ccae1e07a5b6d, 0x4b4a2be5c752a6975f7096c5b91f53, 0x002171 ] } , - BigNum { limbs: [ 0x44c8d9317399ddb4c3351d1f85a494, 0x5c08fdb7b5f58ca2789772dc1ee600, 0x00527c ] } , - BigNum { limbs: [ 0x10cb417026d3476ef714fba6067a59, 0x015808014394d9ba003a51d63941fa, 0x005328 ] } , - BigNum { limbs: [ 0xacd8c18fd788b79108eb0359f985a8, 0xa5fb219c39b3597fd7cdb7cb9ec359, 0x0020c5 ] } , - BigNum { limbs: [ 0x8a3577f1545a01116eceec8e11ba5e, 0x3c3716a507e155691873bf136a9049, 0x00350a ] } , - BigNum { limbs: [ 0x336e8b0eaa01fdee91311271ee45a3, 0x6b1c12f87566ddd0bf944a8e6d750a, 0x003ee3 ] } , - BigNum { limbs: [ 0xaf69b8d3eb54778eed1c02c2b53190, 0x31706075d57e61356b27e1fcc425df, 0x005913 ] } , - BigNum { limbs: [ 0x0e3a4a2c1307877112e3fc3d4ace71, 0x75e2c927a7c9d2046ce027a513df74, 0x001ada ] } , - BigNum { limbs: [ 0x6a8701ef94eaf2e552420e264134db, 0xa91a0744c00bdb867760c3ba9fa4d0, 0x002188 ] } , - BigNum { limbs: [ 0x531d011069710c1aadbdf0d9becb26, 0xfe392258bd3c57b360a745e7386083, 0x005264 ] } , - BigNum { limbs: [ 0xd48b8eab94d2ba5388a6e5eabeab40, 0x1acd7eec4a7442ecf758ff40de70ea, 0x005633 ] } , - BigNum { limbs: [ 0xe9187454698944ac775919154154c1, 0x8c85aab132d3f04ce0af0a60f99468, 0x001dba ] } , - BigNum { limbs: [ 0x518dfe4db63b5b88fcbf85f2aa23b5, 0x370ad80b91f136c286f7165f193e60, 0x00358d ] } , - BigNum { limbs: [ 0x6c1604b24820a3770340790d55dc4c, 0x70485191eb56fc775110f342bec6f3, 0x003e60 ] } , - BigNum { limbs: [ 0xd2a8c071c5b8f5d73dddb928d44d5e, 0xd92031b41a4e07fba6583023b7b96f, 0x002aea ] } , - BigNum { limbs: [ 0xeafb428e38a30928c22245d72bb2a3, 0xce32f7e962fa2b3e31afd97e204be3, 0x004902 ] } , - BigNum { limbs: [ 0x835eed7b54edf00ca067fa6f033fae, 0xd26d2ed3085ee14964a632778e10a2, 0x005cb1 ] } , - BigNum { limbs: [ 0x3a451584a96e0ef35f980490fcc053, 0xd4e5faca74e951f07361d72a49f4b1, 0x00173b ] } , - BigNum { limbs: [ 0x8f8e5be00aa093e86c146ea8025c66, 0x3a3479db5f0279bdf58d29d91d2c62, 0x005ce1 ] } , - BigNum { limbs: [ 0x2e15a71ff3bb6b1793eb9057fda39b, 0x6d1eafc21e45b97be27adfc8bad8f1, 0x00170c ] } , - BigNum { limbs: [ 0x2c03e64ee03ec670444ae78e553245, 0x520f461bf4acfa7b2d3b32b7658ce8, 0x003620 ] } , - BigNum { limbs: [ 0x91a01cb11e1d388fbbb51771aacdbc, 0x5543e381889b38beaaccd6ea72786b, 0x003dcd ] } , - BigNum { limbs: [ 0xa277d70a802c047400f28818861029, 0x93e4b02a38bdc4b585376eab030748, 0x004e74 ] } , - BigNum { limbs: [ 0x1b2c2bf57e2ffa8bff0d76e779efd8, 0x136e7973448a6e8452d09af6d4fe0b, 0x002579 ] } , - BigNum { limbs: [ 0x2752ee507d860cc847b7608bb32497, 0x72ab18821edbe737cee8a3d2f844d9, 0x006c55 ] } , - BigNum { limbs: [ 0x965114af80d5f237b8489e744cdb6a, 0x34a8111b5e6c4c02091f65cedfc07a, 0x000798 ] } , - BigNum { limbs: [ 0xd5d7310b6c434221f5c649b8a8450d, 0x51a1d28fd7c178f914e9d363c2fea8, 0x000783 ] } , - BigNum { limbs: [ 0xe7ccd1f49218bcde0a39b54757baf4, 0x55b1570da586ba40c31e363e1506aa, 0x006c6a ] } , - BigNum { limbs: [ 0xe649b6e2f4144275a809846d88e77b, 0xaf6c15fc2de1fc37ebff50507b437e, 0x00239f ] } , - BigNum { limbs: [ 0xd75a4c1d0a47bc8a57f67a92771886, 0xf7e713a14f663701ec08b9515cc1d4, 0x00504d ] } , - BigNum { limbs: [ 0x7334b1a80ff50012f6d0fcfcb4bbda, 0x9ec015b1c1e48828ab99c1ab863fe8, 0x00246d ] } , - BigNum { limbs: [ 0x4a6f5157ee66feed092f02034b4427, 0x089313ebbb63ab112c6e47f651c56b, 0x004f80 ] } , - BigNum { limbs: [ 0x2799d54092d2d6d446d7483d43c505, 0x09725e673920f35b87f5473faef876, 0x0064c2 ] } , - BigNum { limbs: [ 0x960a2dbf6b89282bb928b6c2bc3afc, 0x9de0cb3644273fde5012c262290cdd, 0x000f2b ] } , - BigNum { limbs: [ 0xe4ab021bf6a40ad743181bf3995f80, 0xfdb4df5a01f7d5a3f836a69f95c324, 0x0019ce ] } , - BigNum { limbs: [ 0xd8f900e407b7f428bce7e30c66a081, 0xa99e4a437b505d95dfd1630242422e, 0x005a1e ] } , - BigNum { limbs: [ 0x403f76060a0de6fb311559ee0b0518, 0x3d7c276b68ccf930cc3d6405609a28, 0x003209 ] } , - BigNum { limbs: [ 0x7d648cf9f44e1804ceeaa511f4fae9, 0x69d70232147b3a090bcaa59c776b2b, 0x0041e4 ] } , - BigNum { limbs: [ 0x97c9d4fb8e28000443006ef0337d82, 0xa46763572fc3c3a10cfe101b7a8183, 0x002694 ] } , - BigNum { limbs: [ 0x25da2e047033fefbbcff900fcc827f, 0x02ebc6464d846f98cb09f9865d83d0, 0x004d59 ] } , - BigNum { limbs: [ 0xcf940508e5e3e09f4ec853b7df991d, 0xeac5b0c9b97ba1c6303e45d8434d4b, 0x005f93 ] } , - BigNum { limbs: [ 0xee0ffdf718781e60b137ab482066e4, 0xbc8d78d3c3cc9173a7c9c3c994b807, 0x001459 ] } , - BigNum { limbs: [ 0x6b483f2e315844ec7abcf910ab4efd, 0x39d0383014c2f7421c93535e2bfd8a, 0x006a97 ] } , - BigNum { limbs: [ 0x525bc3d1cd03ba13854305ef54b104, 0x6d82f16d68853bf7bb74b643ac07c9, 0x000956 ] } , - BigNum { limbs: [ 0x5f74f25ae307f516cade22890eb478, 0x3d3b3c65ae6c6059e06b34576964ec, 0x006802 ] } , - BigNum { limbs: [ 0x5e2f10a51b5409e93521dc76f14b89, 0x6a17ed37cedbd2dff79cd54a6ea067, 0x000beb ] } , - BigNum { limbs: [ 0x6830a4e946304e5df8c04e1fd5899a, 0x2835311c95860b59b3a1cbe1b04a6f, 0x00097d ] } , - BigNum { limbs: [ 0x55735e16b82bb0a2073fb0e02a7667, 0x7f1df880e7c227e024663dc027bae4, 0x006a70 ] } , - BigNum { limbs: [ 0x816d865e2c5c181d51a84f4db96996, 0xc66aaa0738343a5c1dcbb68b1018de, 0x006005 ] } , - BigNum { limbs: [ 0x3c367ca1d1ffe6e2ae57afb246966b, 0xe0e87f964513f8ddba3c5316c7ec75, 0x0013e7 ] } , - BigNum { limbs: [ 0x09c2ec7e394b5822a595c06ef6a23a, 0x747bdfda702a6eb07ff6d8245ffdd1, 0x0033d4 ] } , - BigNum { limbs: [ 0xb3e11681c510a6dd5a6a3e91095dc7, 0x32d749c30d1dc4895811317d780782, 0x004019 ] } , - BigNum { limbs: [ 0x005ec34ecba796d3201623f00bc8b6, 0x0ab8f3ac593e84547f014f9368d681, 0x0041c8 ] } , - BigNum { limbs: [ 0xbd453fb132b4682cdfe9db0ff4374b, 0x9c9a35f12409aee55906ba0e6f2ed2, 0x003225 ] } , - BigNum { limbs: [ 0xf6aec9a949dd0573e1b9cb5e186571, 0xaeaccd9d736b4d62a1eab09aecde18, 0x004fa8 ] } , - BigNum { limbs: [ 0xc6f53956b47ef98c1e4633a1e79a90, 0xf8a65c0009dce5d7361d5906eb273a, 0x002444 ] } , - BigNum { limbs: [ 0x49fd686bced7f42e2ba69e1629d925, 0xa8db777b42a2ab6faa2a76aa9abce5, 0x005b77 ] } , - BigNum { limbs: [ 0x73a69a942f840ad1d45960e9d626dc, 0xfe77b2223aa587ca2ddd92f73d486e, 0x001875 ] } , - BigNum { limbs: [ 0x359f01d863d263311797307a785ec6, 0x183824ddac3bc0e940a0e4e72a8de6, 0x005afc ] } , - BigNum { limbs: [ 0x880501279a899bcee868ce8587a13b, 0x8f1b04bfd10c7250976724baad776d, 0x0018f1 ] } , - BigNum { limbs: [ 0x09d049afcd3cfc57db0f446570d69e, 0x2a99aed23b0261e36aa745fb1dae33, 0x003d19 ] } , - BigNum { limbs: [ 0xb3d3b950311f02a824f0ba9a8f2963, 0x7cb97acb4245d1566d60c3a6ba5720, 0x0036d4 ] } , - BigNum { limbs: [ 0x3411624b4f9d9c3ce8934f4459131f, 0x6914e72a4a1345f60d088cf58860cf, 0x001d88 ] } , - BigNum { limbs: [ 0x8992a0b4aebe62c3176cafbba6ece2, 0x3e3e42733334ed43caff7cac4fa484, 0x005665 ] } , - BigNum { limbs: [ 0x7f70c48ce1ee7815d0fcee9ab3e398, 0x617008f760cf025c91c7517c47be59, 0x00010d ] } , - BigNum { limbs: [ 0x3e333e731c6d86ea2f0310654c1c69, 0x45e320a61c7930dd4640b8259046fa, 0x0072e0 ] } , - BigNum { limbs: [ 0x08a93f36d66515f2e98be25d15e60e, 0x78aca0cee7df2385f091abb4beac52, 0x001429 ] } , - BigNum { limbs: [ 0xb4fac3c927f6e90d16741ca2ea19f3, 0x2ea688ce95690fb3e7765ded195901, 0x005fc4 ] } , - BigNum { limbs: [ 0x857ef8141e71e5bc61d3efc013feb5, 0x9aea88d057e045d8104307a80b8fd7, 0x00148b ] } , - BigNum { limbs: [ 0x38250aebdfea19439e2c0f3fec014c, 0x0c68a0cd2567ed61c7c501f9cc757c, 0x005f62 ] } , - BigNum { limbs: [ 0x8c53be2d93aae380a283ff1f4cfa39, 0x3380d7113fc000f1edc5c284064466, 0x00106c ] } , - BigNum { limbs: [ 0x315044d26ab11b7f5d7bffe0b305c8, 0x73d2528c3d883247ea42471dd1c0ed, 0x006381 ] } , - BigNum { limbs: [ 0x3cb7b786911fdf5db8e93e9ab4c037, 0x312e325b3ea5140386ddcd5ef68396, 0x000aeb ] } , - BigNum { limbs: [ 0x80ec4b796d3c1fa24716c0654b3fca, 0x7624f7423ea31f36512a3c42e181bd, 0x006902 ] } , - BigNum { limbs: [ 0xe84772bc40ead03dc8b5f6a5fb308a, 0x598494746f8ec57d696fed1a0bf819, 0x003a10 ] } , - BigNum { limbs: [ 0xd55c9043bd712ec2374a085a04cf77, 0x4dce95290db96dbc6e981c87cc0d39, 0x0039dd ] } , - BigNum { limbs: [ 0xfe2f90251981c69f406193091ce7ef, 0xf48779fa3d8faec1c98ba14dabc640, 0x00081b ] } , - BigNum { limbs: [ 0xbf7472dae4da3860bf9e6bf6e31812, 0xb2cbafa33fb884780e7c68542c3f12, 0x006bd1 ] } , - BigNum { limbs: [ 0xe088aadb655540600f8630a750ce68, 0xd877c086dabbc6935525c93afcc8cc, 0x005775 ] } , - BigNum { limbs: [ 0xdd1b58249906be9ff079ce58af3199, 0xcedb6916a28c6ca682e24066db3c86, 0x001c77 ] } , - BigNum { limbs: [ 0x0adf8f2a0e6a4ce94b164c81822ef6, 0xa25f73dcc3cfba674e9566fb87b437, 0x0020f7 ] } , - BigNum { limbs: [ 0xb2c473d5eff1b216b4e9b27e7dd10b, 0x04f3b5c0b97878d28972a2a650511c, 0x0052f6 ] } , - BigNum { limbs: [ 0x32cc2e54c34449e0e07885187e87e6, 0x16402efe1052b1c83e96eab6218112, 0x003282 ] } , - BigNum { limbs: [ 0x8ad7d4ab3b17b51f1f8779e781781b, 0x9112fa9f6cf5817199711eebb68441, 0x00416b ] } , - BigNum { limbs: [ 0x851b025f7c6c3044912e382a3b60e5, 0xf25614b12b99689c33b5ed2b4ab367, 0x0056cf ] } , - BigNum { limbs: [ 0x388900a081efcebb6ed1c6d5c49f1c, 0xb4fd14ec51aeca9da4521c768d51ec, 0x001d1d ] } , - BigNum { limbs: [ 0x41da53f8e7e56dbbb9b52fe0c93f2f, 0xb1be40dbcc5d47aa1206c5f9825841, 0x00070d ] } , - BigNum { limbs: [ 0x7bc9af0716769144464acf1f36c0d2, 0xf594e8c1b0eaeb8fc60143a855ad12, 0x006cdf ] } , - BigNum { limbs: [ 0x21727c631d1b957e330eba542ea25b, 0x6a726d6bc6c05eefdf763a90100e35, 0x004146 ] } , - BigNum { limbs: [ 0x9c31869ce1406981ccf144abd15da6, 0x3ce0bc31b687d449f891cf11c7f71e, 0x0032a7 ] } , - BigNum { limbs: [ 0x8b1c21115956ae0930097f14fdeb5e, 0x7877d3137c9d849ae4eb96398565d8, 0x005f84 ] } , - BigNum { limbs: [ 0x3287e1eea50550f6cff67feb0214a3, 0x2edb568a00aaae9ef31c7368529f7b, 0x001469 ] } , - BigNum { limbs: [ 0xa63e1f8de49664fe8bb14fdd09e32c, 0x0165226ffd3e155a8d961161faea81, 0x00192c ] } , - BigNum { limbs: [ 0x1765e37219c59a01744eaf22f61cd5, 0xa5ee072d800a1ddf4a71f83fdd1ad2, 0x005ac1 ] } , - BigNum { limbs: [ 0x20f42f0eb8c840f724930154b0a345, 0x7e9b4faf7cbf5a3c85944fbd15cac9, 0x001c39 ] } , - BigNum { limbs: [ 0x9cafd3f14593be08db6cfdab4f5cbc, 0x28b7d9ee0088d8fd5273b9e4c23a8a, 0x0057b4 ] } , - BigNum { limbs: [ 0xa0054d10202811fee903fba4610e1d, 0xe96abc1a3341b736d5f1f9e96ab5cf, 0x005ece ] } , - BigNum { limbs: [ 0x1d9eb5efde33ed0116fc035b9ef1e4, 0xbde86d834a067c0302160fb86d4f84, 0x00151e ] } , - BigNum { limbs: [ 0x554e12d462472b84dab4b2e95130b8, 0xbba73e5ffe53a6f04f5111b851a159, 0x003f22 ] } , - BigNum { limbs: [ 0x6855f02b9c14d37b254b4c16aecf49, 0xebabeb3d7ef48c4988b6f7e98663fa, 0x0034ca ] } , - BigNum { limbs: [ 0xbc16cbda5b145cce510c752e9afea8, 0xc5f4eecc92c39560d4dd8010ec3a9f, 0x006e91 ] } , - BigNum { limbs: [ 0x018d3725a347a231aef389d1650159, 0xe15e3ad0ea849dd9032a8990ebcab4, 0x00055b ] } , - BigNum { limbs: [ 0x9487106e50a7a420b0a6a5816df662, 0x47da8a826ab344a6ab01d9bcfd31c6, 0x005d47 ] } , - BigNum { limbs: [ 0x291cf291adb45adf4f59597e92099f, 0x5f789f1b1294ee932d062fe4dad38d, 0x0016a6 ] } , - BigNum { limbs: [ 0x5127d2ce1d47aa81efa96afbcfa4b3, 0x9b560dbdf2b0494dee5461ad67ec9e, 0x001687 ] } , - BigNum { limbs: [ 0x6c7c3031e114547e10569404305b4e, 0x0bfd1bdf8a97e9ebe9b3a7f47018b5, 0x005d66 ] } , - BigNum { limbs: [ 0xe488ba25233af2db84e57d6860ca41, 0x3c8e10853ef5edfb2c4b7f83c45f1b, 0x000e18 ] } , - BigNum { limbs: [ 0xd91b48dadb210c247b1a81979f35c0, 0x6ac519183e52453eabbc8a1e13a637, 0x0065d5 ] } , - BigNum { limbs: [ 0xc3e30a9c9e349ae707d84319ddac01, 0xc946fd62c42899c1ce48bc34beb258, 0x004d11 ] } , - BigNum { limbs: [ 0xf9c0f86360276418f827bbe6225400, 0xde0c2c3ab91f997809bf4d6d1952fa, 0x0026db ] } , - BigNum { limbs: [ 0x3cca4f65f52989ee41c70ef01f1ea6, 0x98827284acd332c7b653236e45470c, 0x00086c ] } , - BigNum { limbs: [ 0x80d9b39a09327511be38f00fe0e15b, 0x0ed0b718d075007221b4e63392be47, 0x006b81 ] } , - BigNum { limbs: [ 0x85ce0a5e920ceffae1e55a50fe59ca, 0xa263d506576489a7189ae1af6d2bb3, 0x000ce7 ] } , - BigNum { limbs: [ 0x37d5f8a16c4f0f051e1aa4af01a637, 0x04ef549725e3a992bf6d27f26ad9a0, 0x006706 ] } , - BigNum { limbs: [ 0xea8f78b1c7780e8daf0c2fcc0f7dbe, 0x95a004664ba541a2cca536b326c6a3, 0x00575f ] } , - BigNum { limbs: [ 0xd3148a4e36e3f07250f3cf33f08243, 0x11b3253731a2f1970b62d2eeb13eaf, 0x001c8e ] } , - BigNum { limbs: [ 0xe4827df1bfc8c29d71a9797d136ab7, 0x437a3ecb3b178208a3952410f28789, 0x006301 ] } , - BigNum { limbs: [ 0xd921850e3e933c628e568582ec954a, 0x63d8ead24230b1313472e590e57dc9, 0x0010ec ] } , - BigNum { limbs: [ 0xf34b7193b7d22f8fba8bc5cc0ffb3d, 0x9ac7c491f9b3ab3dda081a19c5b2aa, 0x004e08 ] } , - BigNum { limbs: [ 0xca58916c4689cf7045743933f004c4, 0x0c8b650b839487fbfdffef881252a8, 0x0025e5 ] } , - BigNum { limbs: [ 0x2503d854265cab6b758b1728d5f934, 0x6a81d8bebd70bb5cc98cbcca59cfc3, 0x0012c4 ] } , - BigNum { limbs: [ 0x98a02aabd7ff53948a74e7d72a06cd, 0x3cd150debfd777dd0e7b4cd77e3590, 0x006129 ] } , - BigNum { limbs: [ 0x3067a571d3783c88d51cd8faa6c9e3, 0x7d7a15e293eb6038ec7934693189a4, 0x0011ba ] } , - BigNum { limbs: [ 0x8d3c5d8e2ae3c2772ae3260559361e, 0x29d913bae95cd300eb8ed538a67baf, 0x006233 ] } , - BigNum { limbs: [ 0x40ea21cd2bc670b57de2e62ffe6fa6, 0x5a348f8f4b87a6ae456985d7320362, 0x00312c ] } , - BigNum { limbs: [ 0x7cb9e132d2958e4a821d18d001905b, 0x4d1e9a0e31c08c8b929e83caa601f1, 0x0042c1 ] } , - BigNum { limbs: [ 0x06fdf260767ff556ba2201ce6b292d, 0x3cf80782e52ef5885bf4688c2ae109, 0x00085d ] } , - BigNum { limbs: [ 0xb6a6109f87dc09a945ddfd3194d6d4, 0x6a5b221a98193db17c13a115ad244a, 0x006b90 ] } , - BigNum { limbs: [ 0x099a5dc4afe8a3c1df667e6c0fcb30, 0x66209952919a9f65d23d4922a4152e, 0x004621 ] } , - BigNum { limbs: [ 0xb409a53b4e735b3e20998093f034d1, 0x4132904aebad93d405cac07f33f025, 0x002dcc ] } , - BigNum { limbs: [ 0x892a9b3c41eda72ed74a199a41d737, 0xcf8ebffa762814c3dc07af56614e4c, 0x003314 ] } , - BigNum { limbs: [ 0x347967c3bc6e57d128b5e565be28ca, 0xd7c469a307201e75fc005a4b76b707, 0x0040d8 ] } , - BigNum { limbs: [ 0xd75f694f269112f4ff8f61e952657e, 0xf2069c2a93bab9e5924a0d41b3f5f1, 0x003d8d ] } , - BigNum { limbs: [ 0xe64499b0d7caec0b00709d16ad9a83, 0xb54c8d72e98d795445bdfc60240f61, 0x00365f ] } , - BigNum { limbs: [ 0xe6006a8087c0313356177fa580e7c8, 0x7e92df8ec1cb44267d2050bea1e4ba, 0x00693e ] } , - BigNum { limbs: [ 0xd7a3987f769bcdcca9e87f5a7f1839, 0x28c04a0ebb7cef135ae7b8e3362098, 0x000aaf ] } , - BigNum { limbs: [ 0x775193a915287b84658d7d1fba4133, 0xdd16b97880c226a96b6d8623b90e8a, 0x002229 ] } , - BigNum { limbs: [ 0x46526f56e933837b9a7281e045bece, 0xca3c7024fc860c906c9a837e1ef6c9, 0x0051c3 ] } , - BigNum { limbs: [ 0x41b1af6da69a808552db669eded8ae, 0x3e0af1e4442b2ada31fc6aa05994ea, 0x003d4d ] } , - BigNum { limbs: [ 0x7bf2539257c17e7aad249861212753, 0x694837b9391d085fa60b9f017e7069, 0x0036a0 ] } , - BigNum { limbs: [ 0xb4f8d8d52c4296113c3a206b452964, 0xe5cc5a9cc9fef2d4ce0992aba0f475, 0x001f24 ] } , - BigNum { limbs: [ 0x08ab2a2ad21968eec3c5de94bad69d, 0xc186cf00b349406509fe76f63710de, 0x0054c8 ] } , - BigNum { limbs: [ 0x295502c8f18cafec046e38bc04d29b, 0x11ac973c619f06b06560b2a86b51e7, 0x00382f ] } , - BigNum { limbs: [ 0x944f00370ccf4f13fb91c643fb2d66, 0x95a692611ba92c8972a756f96cb36c, 0x003bbe ] } , - BigNum { limbs: [ 0x9677a297282aeadb959e844a4e2840, 0xdd65a7e2c22b1762743dbc35f832be, 0x0023c6 ] } , - BigNum { limbs: [ 0x272c6068d63114246a617ab5b1d7c1, 0xc9ed81babb1d1bd763ca4d6bdfd295, 0x005026 ] } , - BigNum { limbs: [ 0x288589876680569020a30d23f2a1d4, 0xb75e90e4ece8683424612c970a35b3, 0x00415e ] } , - BigNum { limbs: [ 0x951e797897dba86fdf5cf1dc0d5e2d, 0xeff498b8905fcb05b3a6dd0acdcfa0, 0x00328e ] } , - BigNum { limbs: [ 0x51520e22b49fe02051377a9ed75075, 0xbabe0b4395278ff370d2deb802290a, 0x001d8e ] } , - BigNum { limbs: [ 0x6c51f4dd49bc1edfaec8846128af8c, 0xec951e59e820a34667352ae9d5dc49, 0x00565e ] } , - BigNum { limbs: [ 0x6759855e4559199350c2d655365c3d, 0xf1c4c5df150a7de30a079f63d17b84, 0x0040f9 ] } , - BigNum { limbs: [ 0x564a7da1b902e56caf3d28aac9a3c4, 0xb58e63be683db556ce006a3e0689cf, 0x0032f3 ] } , - BigNum { limbs: [ 0xf5900e4241e72c4acf2dc369d0d5ce, 0xcb3d9e338aa71593618765dd07560c, 0x002eec ] } , - BigNum { limbs: [ 0xc813f4bdbc74d2b530d23b962f2a33, 0xdc158b69f2a11da67680a3c4d0af46, 0x004500 ] } , - BigNum { limbs: [ 0x629fe3a0675366707251cda7455b11, 0xa89d316b91fcf2d7d2aa4cd3a69ba2, 0x004e6e ] } , - BigNum { limbs: [ 0x5b041f5f9708988f8dae3158baa4f0, 0xfeb5f831eb4b4062055dbcce3169b1, 0x00257e ] } , - BigNum { limbs: [ 0xe52518ea76badc588032481fe037fc, 0xc9a252a5634898a2c832f7e0bb3d3b, 0x0022db ] } , - BigNum { limbs: [ 0xd87eea1587a122a77fcdb6e01fc805, 0xddb0d6f819ff9a970fd511c11cc817, 0x005111 ] } , - BigNum { limbs: [ 0xf1f0d4132d250b42c946df433b264b, 0x574e5601a1206d2e86027d377a6c26, 0x003d18 ] } , - BigNum { limbs: [ 0xcbb32eecd136f3bd36b91fbcc4d9b6, 0x5004d39bdc27c60b52058c6a5d992c, 0x0036d5 ] } , - BigNum { limbs: [ 0x8c2cadf8ead00a2aa8ef4fbdb41629, 0xd8814fb60ce038b34d9642aa5a23e6, 0x000937 ] } , - BigNum { limbs: [ 0x31775507138bf4d55710af424be9d8, 0xced1d9e77067fa868a71c6f77de16d, 0x006ab5 ] } , - BigNum { limbs: [ 0x9ae5c815d97b7558c3d2f76b1bd02b, 0x793269b8e6dbb818eb33b979def799, 0x004dac ] } , - BigNum { limbs: [ 0x22be3aea24e089a73c2d0794e42fd6, 0x2e20bfe4966c7b20ecd45027f90dba, 0x002641 ] } , - BigNum { limbs: [ 0x78ba38db4f1cdb24a6b39ca1aae2d2, 0xfce29dfca40fb376eda680b7645699, 0x001c55 ] } , - BigNum { limbs: [ 0x44e9ca24af3f23db594c625e551d2f, 0xaa708ba0d9387fc2ea6188ea73aeba, 0x005797 ] } , - BigNum { limbs: [ 0xa36b63449abbb4a0cab19968e21b28, 0x515e659079aaf2ff01783547804f4d, 0x0031bf ] } , - BigNum { limbs: [ 0x1a389fbb63a04a5f354e65971de4d9, 0x55f4c40d039d403ad68fd45a57b606, 0x00422e ] } , - BigNum { limbs: [ 0x06d617f09bed2ef9ae4e979277aba0, 0x741b204bbd57f96d993d6e12c5cce4, 0x003ff7 ] } , - BigNum { limbs: [ 0xb6cdeb0f626ed00651b1676d885461, 0x33380951bff039cc3eca9b8f12386f, 0x0033f6 ] } , - BigNum { limbs: [ 0xe3340f2ae98eca067e2dba9b24f61e, 0x9da24e43f5d43b6bbfbd662301caaf, 0x006bf6 ] } , - BigNum { limbs: [ 0xda6ff3d514cd34f981d24464db09e3, 0x09b0db598773f7ce184aa37ed63aa3, 0x0007f7 ] } , - BigNum { limbs: [ 0xebb3139c9ad2dbade21b3a3cd24656, 0xe823f3fce58ed957eff9de108501bc, 0x005220 ] } , - BigNum { limbs: [ 0xd1f0ef63638923521de4c4c32db9ab, 0xbf2f35a097b959e1e80e2b91530396, 0x0021cc ] } , - BigNum { limbs: [ 0xe91075fcd0291b97f3e9395da55eab, 0x6a5c272196ab6d32c28aa4a46d2ca8, 0x0002dd ] } , - BigNum { limbs: [ 0xd4938d032e32e3680c16c5a25aa156, 0x3cf7027be69cc607157d64fd6ad8aa, 0x007110 ] } , - BigNum { limbs: [ 0x73b2e732d845809adfb930e334f4fd, 0x9c9d8466da8be8561b7e6e02ae6816, 0x0004c9 ] } , - BigNum { limbs: [ 0x49f11bcd26167e652046ce1ccb0b04, 0x0ab5a536a2bc4ae3bc899b9f299d3d, 0x006f24 ] } , - BigNum { limbs: [ 0x36d387d5880f88740d4211cf4b61ac, 0x718aa3845032654d2552a736366d29, 0x00568f ] } , - BigNum { limbs: [ 0x86d07b2a764c768bf2bded30b49e55, 0x35c886192d15cdecb2b5626ba1982a, 0x001d5e ] } , - BigNum { limbs: [ 0x498636362aa3c779beb798f3a00898, 0x40090410e2e8d5490e38c676766ee1, 0x002f49 ] } , - BigNum { limbs: [ 0x741dccc9d3b837864148660c5ff769, 0x674a258c9a5f5df0c9cf432b619672, 0x0044a4 ] } , - BigNum { limbs: [ 0xca5a4286b8761e124bbc225b422504, 0xf47dd1a3c0b8c2f43d6687ac253e41, 0x006ad2 ] } , - BigNum { limbs: [ 0xf349c07945e5e0edb443dca4bddafd, 0xb2d557f9bc8f70459aa181f5b2c711, 0x00091a ] } , - BigNum { limbs: [ 0xbcd3ad2d54ab429275afaabae52f1e, 0x725786b9a807da743c6e51998823e2, 0x000394 ] } , - BigNum { limbs: [ 0x00d055d2a9b0bc6d8a5054451ad0e3, 0x34fba2e3d54058c59b99b8084fe171, 0x007059 ] } , - BigNum { limbs: [ 0xde6b475254cb83a3e64b2e15d30aaf, 0xc43faa63a0cb7182c82aa0f115c918, 0x000f4c ] } , - BigNum { limbs: [ 0xdf38bbada9907b5c19b4d0ea2cf552, 0xe3137f39dc7cc1b70fdd68b0c23c3a, 0x0064a0 ] } , - BigNum { limbs: [ 0xca65fecc2631453714c31ae064c79c, 0x21ea16f520e2288c72980aeb1545ef, 0x0007ce ] } , - BigNum { limbs: [ 0xf33e0433d82ab9c8eb3ce41f9b3865, 0x856912a85c660aad656ffeb6c2bf63, 0x006c1f ] } , - BigNum { limbs: [ 0x16421580a82bd1697f65430e7d8926, 0xc5f9be2b838bda9fb1ca2b236e8c02, 0x001ee7 ] } , - BigNum { limbs: [ 0xa761ed7f56302d96809abbf18276db, 0xe1596b71f9bc589a263dde7e697951, 0x005505 ] } , - BigNum { limbs: [ 0x740a79a4750d83c4331bb22dabce03, 0x9db6e6d9b9a73f57df3ef8abc751b8, 0x003f4f ] } , - BigNum { limbs: [ 0x4999895b894e7b3bcce44cd25431fe, 0x099c42c3c3a0f3e1f8c910f610b39b, 0x00349e ] } , - BigNum { limbs: [ 0xce6da570a80e789a2682de2575b781, 0xa5b4f42d200a39dfc4ffe6d45fa3cb, 0x0016e4 ] } , - BigNum { limbs: [ 0xef365d8f564d8665d97d20da8a4880, 0x019e35705d3df95a130822cd786187, 0x005d09 ] } , - BigNum { limbs: [ 0x01899a6e8c892f68701dcd9b0c8a90, 0xb66954ac9f3507fbff4f43f48c1aa3, 0x00001d ] } , - BigNum { limbs: [ 0xbc1a689171d2cf978fe23164f37571, 0xf0e9d4f0de132b3dd8b8c5ad4beab0, 0x0073cf ] } , - BigNum { limbs: [ 0x7da87388ac4bff0d5dc4a9f5b54d26, 0x9c2e3fbd9c201ac58a85b06268d07d, 0x001c1e ] } , - BigNum { limbs: [ 0x3ffb8f77520ffff2a23b550a4ab2db, 0x0b24e9dfe12818744d82593f6f34d6, 0x0057cf ] } , - BigNum { limbs: [ 0x242bdc4035aec661da1c0093106616, 0x2ede8cd6749ee99560b2cddee30920, 0x00693a ] } , - BigNum { limbs: [ 0x997826bfc8ad389e25e3fe6cef99eb, 0x78749cc708a949a477553bc2f4fc33, 0x000ab3 ] } , - BigNum { limbs: [ 0x65427edee03d972b0e3d7e78722eab, 0xc8c077701fa3ebf8f101b20d9d11d5, 0x001a11 ] } , - BigNum { limbs: [ 0x586184211e1e67d4f1c280878dd156, 0xde92b22d5da44740e70657943af37e, 0x0059db ] } , - BigNum { limbs: [ 0xefff9f572c94b32efc9641f7f690dc, 0xb906971d8b054118b80dc81110f323, 0x006df6 ] } , - BigNum { limbs: [ 0xcda463a8d1c74bd10369bd08096f25, 0xee4c927ff242f2211ffa4190c7122f, 0x0005f6 ] } , - BigNum { limbs: [ 0xb75870c4c8211ca9c40a0456e12db6, 0xece5902c99b3ae9b030aa830eaa90b, 0x00123c ] } , - BigNum { limbs: [ 0x064b923b363ae2563bf5faa91ed24b, 0xba6d9970e394849ed4fd6170ed5c48, 0x0061b0 ] } , - BigNum { limbs: [ 0x117b84ab14fc7b1edb256398ddf097, 0x0ccc5cee8965e6938b85e4e3d64348, 0x001407 ] } , - BigNum { limbs: [ 0xac287e54e95f83e124da9b67220f6a, 0x9a86ccaef3e24ca64c8224be01c20b, 0x005fe6 ] } , - BigNum { limbs: [ 0xffdb443b3406f5f5eea61bcdd90225, 0xa60dff5a4839966ccd7d38c82c9a37, 0x002600 ] } , - BigNum { limbs: [ 0xbdc8bec4ca55090a1159e33226fddc, 0x01452a43350e9ccd0a8ad0d9ab6b1b, 0x004ded ] } , - BigNum { limbs: [ 0x5f87ae86d28d9b633e898f782ed47e, 0xaac8c3d5841e89a2182aba6bf41831, 0x0040b3 ] } , - BigNum { limbs: [ 0x5e1c54792bce639cc1766f87d12b83, 0xfc8a65c7f929a997bfdd4f35e3ed22, 0x003339 ] } , - BigNum { limbs: [ 0x1969238e7fecaa9d20ccca190af9fe, 0x2e637d1c6e0ea47b2f6af351fd869e, 0x005aa3 ] } , - BigNum { limbs: [ 0xa43adf717e6f5462df3334e6f50603, 0x78efac810f398ebea89d164fda7eb5, 0x00194a ] } , - BigNum { limbs: [ 0xfb55aa711369bb49d53fcf1ce11cd3, 0x1d2287835f3748e3dec226f6c6f251, 0x002c88 ] } , - BigNum { limbs: [ 0xc24e588eeaf243b62ac02fe31ee32e, 0x8a30a21a1e10ea55f945e2ab111301, 0x004765 ] } , - BigNum { limbs: [ 0xf6dd75bd09e197a9f2312a022e05a9, 0x32124bae0fe0614404b0d3bd1aa717, 0x0044ec ] } , - BigNum { limbs: [ 0xc6c68d42f47a67560dced4fdd1fa58, 0x7540ddef6d67d1f5d35735e4bd5e3b, 0x002f01 ] } , - BigNum { limbs: [ 0xf305c7e99e5e6aa4afb4c34cb19b26, 0x49249e90814dd17cb3336f18767a2e, 0x006140 ] } , - BigNum { limbs: [ 0xca9e3b165ffd945b504b3bb34e64db, 0x5e2e8b0cfbfa61bd24d49a89618b24, 0x0012ad ] } , - BigNum { limbs: [ 0x26b1113683fde4c5c17faf037889c3, 0xebba3e1e092e8c324415613cad2c66, 0x0047e5 ] } , - BigNum { limbs: [ 0x96f2f1c97a5e1a3a3e804ffc87763e, 0xbb98eb7f7419a70793f2a8652ad8ed, 0x002c07 ] } , - BigNum { limbs: [ 0xa9a0db0b34ea1ede327157965f6b59, 0xfc53b370591c32daa4b465b06dbbd7, 0x004a93 ] } , - BigNum { limbs: [ 0x140327f4c971e021cd8ea769a094a8, 0xaaff762d242c005f3353a3f16a497c, 0x002959 ] } , - BigNum { limbs: [ 0xae321d438c77b8023e8b849c35853e, 0x0c56c89282b7d760415eca1922948f, 0x0047bb ] } , - BigNum { limbs: [ 0x0f71e5bc71e446fdc1747a63ca7ac3, 0x9afc610afa905bd996a93f88b570c4, 0x002c32 ] } , - BigNum { limbs: [ 0xc8d4479c1b96b08b55ba558bf62e69, 0x0eb7d18adbfc9d8692aa47a58b380d, 0x002cbf ] } , - BigNum { limbs: [ 0xf4cfbb63e2c54e74aa45a97409d198, 0x989b5812a14b95b3455dc1fc4ccd45, 0x00472e ] } , - BigNum { limbs: [ 0x29d7916dae0478b241fbe936b66f37, 0xe6ca815304f4c417723f7e8cf0daa0, 0x003d08 ] } , - BigNum { limbs: [ 0x93cc71925057864dbe0415c94990ca, 0xc088a84a78536f2265c88b14e72ab3, 0x0036e4 ] } , - BigNum { limbs: [ 0x397a781738b3b5e970fb8a83922a0b, 0xf7b2a57f970f05f4b19cb92e0a2ff9, 0x004c6c ] } , - BigNum { limbs: [ 0x84298ae8c5a849168f04747c6dd5f6, 0xafa0841de6392d45266b5073cdd55a, 0x002780 ] } , - BigNum { limbs: [ 0x7f98a9899b09f107628888b1c39684, 0x0e6f51cd821faf3bd230ac8958510b, 0x0065c0 ] } , - BigNum { limbs: [ 0x3e0b597663520df89d77764e3c697d, 0x98e3d7cffb2883fe05d75d187fb448, 0x000e2d ] } , - BigNum { limbs: [ 0xa3d5c235d931b6d05ef70fe260277e, 0x0194e402203f38537fb08af96247ce, 0x00203b ] } , - BigNum { limbs: [ 0x19ce40ca252a482fa108ef1d9fd883, 0xa5be459b5d08fae658577ea875bd85, 0x0053b2 ] } , - BigNum { limbs: [ 0x2f20b762ee3f3bfaac7e6ff713c86f, 0x34265e0a3e91c3b794ffd2d7ab5326, 0x004963 ] } , - BigNum { limbs: [ 0x8e834b9d101cc30553818f08ec3792, 0x732ccb933eb66f82430836ca2cb22d, 0x002a8a ] } , - BigNum { limbs: [ 0x661795b2956e8135674296a42d5526, 0xd7fe80253c68dd3367575a3ea8243e, 0x007144 ] } , - BigNum { limbs: [ 0x578c6d4d68ed7dca98bd685bd2aadb, 0xcf54a97840df560670b0af632fe115, 0x0002a8 ] } , - BigNum { limbs: [ 0x88d14d8f37e3333f346bd9f36a745b, 0x920060e6ef18fa82f6d278d180f76d, 0x004e45 ] } , - BigNum { limbs: [ 0x34d2b570c678cbc0cb94250c958ba6, 0x1552c8b68e2f38b6e13590d0570de6, 0x0025a8 ] } , - BigNum { limbs: [ 0xac1f5d57348b38e36bbce2212a63cc, 0x95440a71a18ab8a14ef31198396f92, 0x00136f ] } , - BigNum { limbs: [ 0x1184a5a8c9d0c61c94431cded59c35, 0x120f1f2bdbbd7a988914f8099e95c1, 0x00607e ] } , - BigNum { limbs: [ 0xe6a504a18c774fc31aae93a4a789b1, 0x7299864a75f84d5e8e8781e124f966, 0x0044cb ] } , - BigNum { limbs: [ 0xd6fefe5e71e4af3ce5516b5b587650, 0x34b9a353074fe5db498087c0b30bec, 0x002f22 ] } , - BigNum { limbs: [ 0x42a5d3cc4b8962fe1c086de6f5da2a, 0x8fe193c27659d1330d3410a8ea3344, 0x0063ef ] } , - BigNum { limbs: [ 0x7afe2f33b2d29c01e3f791190a25d7, 0x177195db06ee6206cad3f8f8edd20f, 0x000ffe ] } , - BigNum { limbs: [ 0x699dce905fd33550c1a79631e1b05d, 0xb42e1e8c39f592be1d257779a5c2cd, 0x003c4b ] } , - BigNum { limbs: [ 0x5406346f9e88c9af3e5868ce1e4fa4, 0xf3250b114352a07bbae29228324286, 0x0037a1 ] } , - BigNum { limbs: [ 0x8b9ed63214a7551997e408b97bce64, 0x862cacba5107108b3080269638d37b, 0x001e8c ] } , - BigNum { limbs: [ 0x32052ccde9b4a9e6681bf64684319d, 0x21267ce32c4122aea787e30b9f31d8, 0x005561 ] } , - BigNum { limbs: [ 0x4b0c14c774f6f4389352e8b94b89e6, 0x6ac46d037a6dd60e0fac3e5e7a621d, 0x007263 ] } , - BigNum { limbs: [ 0x7297ee3889650ac76cad1646b4761b, 0x3c8ebc9a02da5d2bc85bcb435da336, 0x00018a ] } , - BigNum { limbs: [ 0x985d9d19380f197e151d3a231b3e78, 0x7e58f6e1a06851b9d0772360c130a5, 0x0006ac ] } , - BigNum { limbs: [ 0x254665e6c64ce581eae2c4dce4c189, 0x28fa32bbdcdfe1800790e64116d4ae, 0x006d41 ] } , - BigNum { limbs: [ 0xca5fe535e826bd5b6937e0ff00ed8b, 0xe96ad0d858b497db2a263132908303, 0x000c5f ] } , - BigNum { limbs: [ 0xf3441dca163541a496c81e00ff1276, 0xbde858c524939b5eade1d86f47824f, 0x00678d ] } , - BigNum { limbs: [ 0xd88546ef48e09b5a161546ead4b7c8, 0xb93d533c07f677a8f48b572fa1f711, 0x002460 ] } , - BigNum { limbs: [ 0xe51ebc10b57b63a5e9eab8152b4839, 0xee15d6617551bb90e37cb272360e41, 0x004f8c ] } , - BigNum { limbs: [ 0x9ad546e71d7c14ac7ee04cc702d7ed, 0x16af5aa3a2d464cf88e7700128f058, 0x005232 ] } , - BigNum { limbs: [ 0x22cebc18e0dfea53811fb238fd2814, 0x90a3cef9da73ce6a4f2099a0af14fb, 0x0021bb ] } , - BigNum { limbs: [ 0xc3890d637678376a8aa8842c120e36, 0x7ffcfe32e30065a095ef29cc5fab63, 0x006dd3 ] } , - BigNum { limbs: [ 0xfa1af59c87e3c79575577ad3edf1cb, 0x27562b6a9a47cd994218dfd57859ef, 0x00061a ] } , - BigNum { limbs: [ 0x3ac4576f96133763c39d4b0e166260, 0x7e9761af6173f7cd6fa185f4964620, 0x006115 ] } , - BigNum { limbs: [ 0x82dfab906848c79c3c62b3f1e99da1, 0x28bbc7ee1bd43b6c686683ad41bf33, 0x0012d8 ] } , - BigNum { limbs: [ 0x67f848cf0997e22a8c8de045bb9a27, 0x896b82dc575fff9e012abd7f304fb7, 0x005f3d ] } , - BigNum { limbs: [ 0x55abba30f4c41cd573721eba4465da, 0x1de7a6c125e8339bd6dd4c22a7b59c, 0x0014b0 ] } , - BigNum { limbs: [ 0x90513502f2c375e33b993aeb09c041, 0x7b429320b8e1f2e077f4eb284fe428, 0x005073 ] } , - BigNum { limbs: [ 0x2d52cdfd0b98891cc466c414f63fc0, 0x2c10967cc466405960131e7988212b, 0x00237a ] } , - BigNum { limbs: [ 0xa1857d2f8e75fd7956dad32b8d0a3e, 0xfe66e1a7b3ec40f446c5d40849a17e, 0x00416a ] } , - BigNum { limbs: [ 0x1c1e85d06fe60186a9252bd472f5c3, 0xa8ec47f5c95bf245914235998e63d5, 0x003282 ] } , - BigNum { limbs: [ 0xbb9779133dd76b8a25577e679b4638, 0xdc01f2176efa9c80845ef8964c3e31, 0x002c09 ] } , - BigNum { limbs: [ 0x020c89ecc0849375daa8809864b9c9, 0xcb5137860e4d96b953a9110b8bc722, 0x0047e3 ] } , - BigNum { limbs: [ 0xe14206334e32eb03c6b115fa8b964f, 0x51fd9fd6499d325ae512c2f6c6479f, 0x000bac ] } , - BigNum { limbs: [ 0xdc61fcccb02913fc394ee9057469b2, 0x555589c733ab00def2f546ab11bdb3, 0x006841 ] } , - BigNum { limbs: [ 0x4b35df11689e1cdad2999d9fd28bcc, 0x807f19e28e957da5d5fc832ca27132, 0x00133f ] } , - BigNum { limbs: [ 0x726e23ee95bde2252d6661602d7435, 0x26d40fbaeeb2b594020b8675359421, 0x0060ae ] } , - BigNum { limbs: [ 0x239da0394619241b42111e75ffa2de, 0x4d4153fcebff90e32df6a88417e9b0, 0x0056b9 ] } , - BigNum { limbs: [ 0x9a0662c6b842dae4bdeee08a005d23, 0x5a11d5a09148a256aa11611dc01ba3, 0x001d34 ] } , - BigNum { limbs: [ 0x11505668518d1efe128ce4fa8ac47f, 0x78c31421a7309c88d579eeacc0f648, 0x0069c1 ] } , - BigNum { limbs: [ 0xac53ac97accee001ed731a05753b82, 0x2e90157bd61796b1028e1af5170f0b, 0x000a2c ] } , - BigNum { limbs: [ 0x06ae14d1b79c4335eb183dc422640a, 0x8f5184b71164781986bd93773e5637, 0x002fd1 ] } , - BigNum { limbs: [ 0xb6f5ee2e46bfbbca14e7c13bdd9bf7, 0x1801a4e66be3bb20514a762a99af1c, 0x00441c ] } , - BigNum { limbs: [ 0x7a0931b726555733207e7b49c12a9a, 0x1ac970b554c0ffa4fe8374633bb790, 0x006309 ] } , - BigNum { limbs: [ 0x439ad148d806a7ccdf8183b63ed567, 0x8c89b8e828873394d984953e9c4dc3, 0x0010e4 ] } , - BigNum { limbs: [ 0x7f9c45b6a32a7fe188f870b56dddfa, 0x4b45d2076249a0877937067755110e, 0x003224 ] } , - BigNum { limbs: [ 0x3e07bd495b317f1e77078e4a922207, 0x5c0d57961afe92b25ed1032a82f445, 0x0041c9 ] } , - BigNum { limbs: [ 0x82f38d734058842d8dcdcfd164e2f2, 0xd916df60a3a3a29313c9c65bc5aef1, 0x006909 ] } , - BigNum { limbs: [ 0x3ab0758cbe037ad272322f2e9b1d0f, 0xce3c4a3cd9a490a6c43e4346125662, 0x000ae3 ] } , - BigNum { limbs: [ 0x773969049ee00fe19fe84f9dcfe7d6, 0x28a2939948c79dc1fde4fb754fdf47, 0x00700e ] } , - BigNum { limbs: [ 0x466a99fb5f7bef1e6017af6230182b, 0x7eb0960434809577da230e2c88260c, 0x0003df ] } , - BigNum { limbs: [ 0x4eca9a1a3dc9bef693d2f66ea91514, 0x47638538c2a5de60572e3406b89f96, 0x00183a ] } , - BigNum { limbs: [ 0x6ed968e5c09240096c2d089156eaed, 0x5fefa464baa254d980d9d59b1f65bd, 0x005bb3 ] } , - BigNum { limbs: [ 0x24078d713653f447161c9211568e4a, 0x92e6227ae5cf1c4b074bb508d359b3, 0x005199 ] } , - BigNum { limbs: [ 0x999c758ec8080ab8e9e36ceea971b7, 0x146d0722977916eed0bc549904aba0, 0x002254 ] } , - BigNum { limbs: [ 0x703181b5d0f52e776a16e848a3fa7b, 0x9444edb69626534973f4a669b6cfe5, 0x00502b ] } , - BigNum { limbs: [ 0x4d72814a2d66d08895e916b75c0586, 0x130e3be6e721dff06413633821356e, 0x0023c2 ] } , - BigNum { limbs: [ 0x6e663848f5963874ab5bb1a14a0dc8, 0xf7a64a7cdbc61169d51c32cc603cd6, 0x00287e ] } , - BigNum { limbs: [ 0x4f3dcab708c5c68b54a44d5eb5f239, 0xafacdf20a18221d002ebd6d577c87d, 0x004b6e ] } , - BigNum { limbs: [ 0x80cba8ff738a6ebeb24233ea2f2541, 0x8e8fe041ca9e7e78b1aa989751d5f4, 0x000ca4 ] } , - BigNum { limbs: [ 0x3cd85a008ad190414dbdcb15d0dac0, 0x18c3495bb2a9b4c1265d710a862f5f, 0x006749 ] } , - BigNum { limbs: [ 0xc14847a01783a30eca3f7baed36019, 0xac861a7439ba70c010d2d73f755e3d, 0x002fb0 ] } , - BigNum { limbs: [ 0xfc5bbb5fe6d85bf135c083512c9fe8, 0xfacd0f29438dc279c735326262a715, 0x00443c ] } , - BigNum { limbs: [ 0xdfcd68ca9f03f7332831ded7618faa, 0xe01551e64535a0e782d3666b5efbca, 0x00522f ] } , - BigNum { limbs: [ 0xddd69a355f5807ccd7ce20289e7057, 0xc73dd7b7381292525534a336790988, 0x0021bd ] } , - BigNum { limbs: [ 0x8f3200a219bb37ed5bea61c7118122, 0x143fef6311d69f89c3e794fd90cf35, 0x0052de ] } , - BigNum { limbs: [ 0x2e72025de4a0c712a4159d38ee7edf, 0x93133a3a6b7193b0142074a447361e, 0x00210f ] } , - BigNum { limbs: [ 0x57184ce1529cd8101748390b324477, 0x26fd32a8105940931e03e65fd4fc46, 0x002284 ] } , - BigNum { limbs: [ 0x668bb61eabbf26efe8b7c5f4cdbb8a, 0x8055f6f56ceef2a6ba04234203090d, 0x005169 ] } , - BigNum { limbs: [ 0xa886037e2af329cd2418acfeeb838d, 0xb1ef4cf90614ef0a0b1c55ef657509, 0x005e42 ] } , - BigNum { limbs: [ 0x151dff81d368d532dbe75201147c74, 0xf563dca47733442fccebb3b272904a, 0x0015aa ] } , - BigNum { limbs: [ 0xb3164314530cf88b71ecbd64ce63f1, 0x89dc01efa36b1fdcad3774362e77db, 0x00215f ] } , - BigNum { limbs: [ 0x0a8dbfebab4f06748e13419b319c10, 0x1d7727add9dd135d2ad0956ba98d78, 0x00528e ] } , - BigNum { limbs: [ 0x1e959b97cb00e1d465de0ab477c622, 0xd75904f78fc1510e7f9ddb69f253e9, 0x003a37 ] } , - BigNum { limbs: [ 0x9f0e6768335b1d2b9a21f44b8839df, 0xcffa24a5ed86e22b586a2e37e5b16a, 0x0039b5 ] } , - BigNum { limbs: [ 0xdc74a175fb66d8c91dd7bcb6d98a10, 0x91da4bc176b7f308325617d0f4ab25, 0x002d93 ] } , - BigNum { limbs: [ 0xe12f618a02f52636e22842492675f1, 0x1578dddc06904031a5b1f1d0e35a2d, 0x00465a ] } , - BigNum { limbs: [ 0xc12e6f5533730efb7366728e74e707, 0xf6207ecf39e022e09ecf9355057e16, 0x00154d ] } , - BigNum { limbs: [ 0xfc7593aacae8f0048c998c718b18fa, 0xb132aace436810593938764cd2873c, 0x005e9f ] } , - BigNum { limbs: [ 0x38476a0fc00d35443787b67158e459, 0x5805a8b95c24d107e4978e049164ba, 0x001c88 ] } , - BigNum { limbs: [ 0x855c98f03e4ec9bbc878488ea71ba8, 0x4f4d80e421236231f3707b9d46a099, 0x005765 ] } , - BigNum { limbs: [ 0x13bdbd833f6491e033219803a77284, 0x3dee46db6ac6ba5b0e618c35e16aa2, 0x002782 ] } , - BigNum { limbs: [ 0xa9e6457cbef76d1fccde66fc588d7d, 0x6964e2c2128178dec9a67d6bf69ab1, 0x004c6b ] } , - BigNum { limbs: [ 0xb2eb02022e105e3d85e5ec2f0d384d, 0x11c3a2cac9bb1f6b1d367bf8f96d95, 0x00240c ] } , - BigNum { limbs: [ 0x0ab900fdd04ba0c27a1a12d0f2c7b4, 0x958f86d2b38d13cebad18da8de97be, 0x004fe1 ] } , - BigNum { limbs: [ 0xbedcf99899365c7c5177831c4f9a2f, 0x7576c538f99a8b4d3c9304ac1777b8, 0x00254a ] } , - BigNum { limbs: [ 0xfec709676525a283ae887be3b065d2, 0x31dc646483ada7ec9b7504f5c08d9a, 0x004ea3 ] } , - BigNum { limbs: [ 0x5b6dc2f31cbbc9b9c47e1ba8f9236e, 0x2e11b4adcd5e7787fe07c20b42c015, 0x006b42 ] } , - BigNum { limbs: [ 0x6236400ce1a035463b81e35706dc93, 0x794174efafe9bbb1da00479695453e, 0x0008ab ] } , - BigNum { limbs: [ 0x11640d7051b71b12524eeee9de0742, 0x230691e53394b528798f8fbbd97f75, 0x00369b ] } , - BigNum { limbs: [ 0xac3ff58faca4e3edadb1101621f8bf, 0x844c97b849b37e115e7879e5fe85de, 0x003d52 ] } , - BigNum { limbs: [ 0x411e4600a81ddbe179dc1bad1ae3cc, 0xd9533ba2a5bad3515b61eeb82c44c4, 0x0048a9 ] } , - BigNum { limbs: [ 0x7c85bcff563e231e8623e352e51c35, 0xcdffedfad78d5fe87ca61ae9abc08f, 0x002b43 ] } , - BigNum { limbs: [ 0x15a00083daa205ac897fd06e1fa419, 0xbd8e5aa6b1584c7063ea804b7fba65, 0x005711 ] } , - BigNum { limbs: [ 0xa804027c23b9f95376802e91e05be8, 0xe9c4cef6cbefe6c9741d8956584aee, 0x001cdb ] } , - BigNum { limbs: [ 0xaf972db429b19d7d92d2c706b5bb82, 0x4401fc3875583b5289d11dedd15a09, 0x000e27 ] } , - BigNum { limbs: [ 0x0e0cd54bd4aa61826d2d37f94a447f, 0x63512d6507eff7e74e36ebb406ab4a, 0x0065c6 ] } , - BigNum { limbs: [ 0xa014a92d1d8309e82e0aa92105b69c, 0xd948bca95f4361465a64f064150d72, 0x0065b3 ] } , - BigNum { limbs: [ 0x1d8f59d2e0d8f517d1f555defa4965, 0xce0a6cf41e04d1f37da3193dc2f7e1, 0x000e39 ] } , - BigNum { limbs: [ 0xd3c547fe572181d2d0270c4778605d, 0x0973e490e8443c67ef980a8ddf85f8, 0x00633e ] } , - BigNum { limbs: [ 0xe9debb01a73a7d2d2fd8f2b8879fa4, 0x9ddf450c9503f6d1e86fff13f87f5a, 0x0010af ] } , - BigNum { limbs: [ 0x3afb994f8855e421398aef9d860b7a, 0xc6e357c81e7222b26285673daa078a, 0x002124 ] } , - BigNum { limbs: [ 0x82a869b076061adec6750f6279f487, 0xe06fd1d55ed610877582a2642dfdc9, 0x0052c8 ] } , - BigNum { limbs: [ 0xf09f8b074b5b1c17f8d231005dd5b6, 0xa32b4d7ea8dc9d9c75f44fa63b6207, 0x0006f2 ] } , - BigNum { limbs: [ 0xcd0477f8b300e2e8072dcdffa22a4b, 0x0427dc1ed46b959d6213b9fb9ca34b, 0x006cfb ] } , - BigNum { limbs: [ 0x4f08fd6dcea734b249b692a0b899f1, 0x27f23f1999b6efc301c5e49f94ce3a, 0x002508 ] } , - BigNum { limbs: [ 0x6e9b05922fb4ca4db6496c5f476610, 0x7f60ea83e3914376d6422502433719, 0x004ee5 ] } , - BigNum { limbs: [ 0x177442f762f8b140d553d92828a013, 0xcbbeda9124c5bc6e587fa3e9fe4b15, 0x003dff ] } , - BigNum { limbs: [ 0xa62fc0089b634dbf2aac25d7d75fee, 0xdb944f0c588276cb7f8865b7d9ba3e, 0x0035ed ] } , - BigNum { limbs: [ 0x257af85747aeab0dfbc55b0bfe2025, 0x9debe9dd427956302b849b853091e9, 0x00200c ] } , - BigNum { limbs: [ 0x98290aa8b6ad53f2043aa3f401dfdc, 0x09673fc03acedd09ac836e1ca7736a, 0x0053e1 ] } , - BigNum { limbs: [ 0x592fba384dac4713e39e87a5485424, 0x1eb46ad5a72ccfc7c03fdd0aba6704, 0x0021b4 ] } , - BigNum { limbs: [ 0x647448c7b0afb7ec1c61775ab7abdd, 0x889ebec7d61b637217c82c971d9e4f, 0x005239 ] } , - BigNum { limbs: [ 0xbfd757e7476ce106aeba3062ddf0c0, 0xf8f34b722df00c34ac2d837b92b02e, 0x00403a ] } , - BigNum { limbs: [ 0xfdccab18b6ef1df95145ce9d220f41, 0xae5fde2b4f5827052bda8626455524, 0x0033b2 ] } , - BigNum { limbs: [ 0x756db692fb7d2eff951fd448b52298, 0x9f72b95270b0848c7bb9c4bb948f90, 0x006760 ] } , - BigNum { limbs: [ 0x48364c6d02ded0006ae02ab74add69, 0x07e0704b0c97aead5c4e44e64375c3, 0x000c8d ] } , - BigNum { limbs: [ 0xadfbd518c6cfa8b8fbe433942b9035, 0x491bead48f2c76ad48b4a8cfe0546e, 0x002ee3 ] } , - BigNum { limbs: [ 0x0fa82de7378c5647041bcb6bd46fcc, 0x5e373ec8ee1bbc8c8f5360d1f7b0e5, 0x00450a ] } , - BigNum { limbs: [ 0xe611b9760956d35b7c13c367df99c0, 0xff3be50b2748c4899e7a646aacc401, 0x006b1c ] } , - BigNum { limbs: [ 0xd7924989f5052ba483ec3b98206641, 0xa817449255ff6eb0398da5372b4151, 0x0008d0 ] } , - BigNum { limbs: [ 0xf2f6a508d187634179beb1cd1e7923, 0xcc7c00a55e325b4c3815cd0d035171, 0x002ab0 ] } , - BigNum { limbs: [ 0xcaad5df72cd49bbe86414d32e186de, 0xdad728f81f15d7ed9ff23c94d4b3e1, 0x00493c ] } , - BigNum { limbs: [ 0xab5c0fedd6a42a61cd5d3d62aa072e, 0xc87f3ae15bea544f91e928d45a707d, 0x0054de ] } , - BigNum { limbs: [ 0x1247f31227b7d49e32a2c19d55f8d3, 0xded3eebc215ddeea461ee0cd7d94d6, 0x001f0e ] } , - BigNum { limbs: [ 0xe11afba2966e80ce8faf067b35a896, 0x7f3796dfd4a818ff607c0131e323a5, 0x007200 ] } , - BigNum { limbs: [ 0xdc89075d67ed7e317050f884ca576b, 0x281b92bda8a01a3a778c086ff4e1ad, 0x0001ed ] } , - BigNum { limbs: [ 0xefeb8648ebd480f409f1829c3dbc86, 0x58580639d21913424b58076d571c59, 0x00597e ] } , - BigNum { limbs: [ 0xcdb87cb712877e0bf60e7c63c2437b, 0x4efb2363ab2f1ff78cb0023480e8f9, 0x001a6f ] } , - BigNum { limbs: [ 0xe9477f9e3464d58ee8e6bd894cb034, 0xfb96180a3e34627cd57adbafff3268, 0x000e70 ] } , - BigNum { limbs: [ 0xd45c8361c9f7297117194176b34fcd, 0xabbd11933f13d0bd028d2df1d8d2ea, 0x00657c ] } , - BigNum { limbs: [ 0xc629875055acc88c58f9d6d7e4efd1, 0x6f9cc8f77ccdcc1d0703d7849a612f, 0x0021b0 ] } , - BigNum { limbs: [ 0xf77a7bafa8af3673a70628281b1030, 0x37b660a6007a671cd104321d3da423, 0x00523d ] } , - BigNum { limbs: [ 0x17f60a78c4b441628070272a1e82b5, 0x0301700c800f342129044f9aaa7325, 0x004300 ] } , - BigNum { limbs: [ 0xa5adf88739a7bd9d7f8fd7d5e17d4c, 0xa451b990fd38ff18af03ba072d922e, 0x0030ed ] } , - BigNum { limbs: [ 0xe844b92948ba04b58ea30f7eb1bdc8, 0x1a80fa0b342688238b143dd481c6e5, 0x0018b2 ] } , - BigNum { limbs: [ 0xd55f49d6b5a1fa4a715cef814e4239, 0x8cd22f924921ab164cf3cbcd563e6d, 0x005b3b ] } , - BigNum { limbs: [ 0x132e9bed0b9ffda9ee552adea093e4, 0x62e5b807220da519125d9617a4dfdf, 0x0059d3 ] } , - BigNum { limbs: [ 0xaa756712f2bc015611aad4215f6c1d, 0x446d71965b3a8e20c5aa738a332574, 0x001a1a ] } , - BigNum { limbs: [ 0xde89cbd800e9e1df5cdaddae536761, 0x99ef4b2c56e815c6515638564fa4c2, 0x0057ad ] } , - BigNum { limbs: [ 0xdf1a3727fd721d20a3252151ac98a0, 0x0d63de7126601d7386b1d14b886090, 0x001c40 ] } , - BigNum { limbs: [ 0xc2815184e2cc30e6c010840fccc2d0, 0x19fe37f0ee6dee1595b04d22ea9082, 0x00607a ] } , - BigNum { limbs: [ 0xfb22b17b1b8fce193fef7af0333d31, 0x8d54f1ac8eda45244257bc7eed74d0, 0x001373 ] } , - BigNum { limbs: [ 0xe4554a900c6ec287cc3255fe0dc830, 0x3aa6d0b5a8760b4cf0d79c87070e17, 0x003fa7 ] } , - BigNum { limbs: [ 0xd94eb86ff1ed3c7833cda901f237d1, 0x6cac58e7d4d227ece7306d1ad0f73b, 0x003446 ] } , - BigNum { limbs: [ 0xb398953cca0d67bf5567d7621e2d8f, 0x6de41de1db47c728f80c42bf0b0834, 0x00301f ] } , - BigNum { limbs: [ 0x0a0b6dc3344e9740aa98279de1d272, 0x396f0bbba2006c10dffbc6e2ccfd1f, 0x0043ce ] } , - BigNum { limbs: [ 0x962f58342576bdf166f48059f66ac8, 0x97619427b6ddd5b79de31ec4e3c51f, 0x0072b3 ] } , - BigNum { limbs: [ 0x2774aacbd8e5410e990b7ea6099539, 0x0ff19575c66a5d823a24eadcf44034, 0x00013a ] } , - BigNum { limbs: [ 0x24d440d730af9a3f0b4ecfd90411f1, 0x46d0f8ddf3531046cd85dba9cb19a8, 0x00082f ] } , - BigNum { limbs: [ 0x98cfc228cdac64c0f4b12f26fbee10, 0x608230bf89f522f30a822df80cebab, 0x006bbe ] } , - BigNum { limbs: [ 0xc0f5a75f604f6086c92529fb22df29, 0xd608500cb76ee87d768eb9b41c8a1b, 0x006eef ] } , - BigNum { limbs: [ 0xfcae5ba09e0c9e7936dad504dd20d8, 0xd14ad990c5d94abc61794fedbb7b37, 0x0004fd ] } , - BigNum { limbs: [ 0x8fd135f2bac00562079583a7c19587, 0x740334326a8734ec83c707588b1d40, 0x0070da ] } , - BigNum { limbs: [ 0x2dd2cd0d439bf99df86a7b583e6a7a, 0x334ff56b12c0fe4d544102494ce813, 0x000313 ] } , - BigNum { limbs: [ 0xbc79366d5312ce42ae9328d457d99d, 0xdfd5d8732182e7e61605fb8ca6470e, 0x006b3b ] } , - BigNum { limbs: [ 0x012acc92ab4930bd516cd62ba82664, 0xc77d512a5bc54b53c2020e1531be45, 0x0008b1 ] } , - BigNum { limbs: [ 0x1d1a93ef7d9a101b62c435099a7877, 0x605a65de60878e7fe6cae78b960e2d, 0x004a43 ] } , - BigNum { limbs: [ 0xa0896f1080c1eee49d3bc9f665878a, 0x46f8c3bf1cc0a4b9f13d221641f726, 0x0029aa ] } , - BigNum { limbs: [ 0x6a116620a108087fb95fcb72e614e0, 0x5883b7d44749255e7f3c61139fa69f, 0x0003d1 ] } , - BigNum { limbs: [ 0x53929cdf5d53f68046a0338d19eb21, 0x4ecf71c935ff0ddb58cba88e385eb4, 0x00701c ] } , - BigNum { limbs: [ 0x70929550bc0873f7377ba08b5891c5, 0x6961bfe01725b6235ded61020645c1, 0x00137a ] } , - BigNum { limbs: [ 0x4d116daf42538b08c8845e74a76e3c, 0x3df169bd66227d167a1aa89fd1bf92, 0x006073 ] } , - BigNum { limbs: [ 0x3edbb7342cf4976ef77052f3b06fcf, 0x7820854ed9924e04a376d0731e9b62, 0x002ac5 ] } , - BigNum { limbs: [ 0x7ec84bcbd1676791088fac0c4f9032, 0x2f32a44ea3b5e5353491392eb969f1, 0x004928 ] } , - BigNum { limbs: [ 0x1db462dc6290c075d7248297a6ec98, 0xfbbccaba9fe556ba6e9c1ff7c93bdb, 0x004b0c ] } , - BigNum { limbs: [ 0x9fefa0239bcb3e8a28db7c68591369, 0xab965ee2dd62dc7f696be9aa0ec978, 0x0028e0 ] } , - BigNum { limbs: [ 0x0bc4f580ed569fcac071cabb962a26, 0xb929d1b14af78528bb0c2d58675a46, 0x000967 ] } , - BigNum { limbs: [ 0xb1df0d7f11055f353f8e344469d5db, 0xee2957ec3250ae111cfbdc4970ab0d, 0x006a85 ] } , - BigNum { limbs: [ 0xf2b2b3e610defb5f0f2901209a5489, 0x8a4971053e16433d9e6d7000e78e07, 0x00570a ] } , - BigNum { limbs: [ 0xcaf14f19ed7d03a0f0d6fddf65ab78, 0x1d09b8983f31effc399a99a0f0774b, 0x001ce3 ] } , - BigNum { limbs: [ 0xaeeadc9eb27a597732034e9cec8131, 0xc8d87807e0fc6c96eb013622c18b50, 0x00336d ] } , - BigNum { limbs: [ 0x0eb926614be1a588cdfcb063137ed0, 0xde7ab1959c4bc6a2ed06d37f167a03, 0x00407f ] } , - BigNum { limbs: [ 0x3f01b6d19f9306559c7997221ca6f4, 0x53df6a7eeb6e34485fffdb5ceb448c, 0x004709 ] } , - BigNum { limbs: [ 0x7ea24c2e5ec8f8aa638667dde3590d, 0x5373bf1e91d9fef178082e44ecc0c7, 0x002ce4 ] } , - BigNum { limbs: [ 0x2d1821cf05358cc529e0772df8cf72, 0xd5dbfa25969f4496961f856ce6724f, 0x0029a0 ] } , - BigNum { limbs: [ 0x908be130f926723ad61f87d207308f, 0xd1772f77e6a8eea341e88434f19304, 0x004a4c ] } , - BigNum { limbs: [ 0xd581d5bbd55c08c56583ab7638c172, 0x37b60ab2728a3f7f1331bf6b847aee, 0x00008a ] } , - BigNum { limbs: [ 0xe8222d4428fff63a9a7c5389c73e8f, 0x6f9d1eeb0abdf3bac4d64a36538a64, 0x007363 ] } , - BigNum { limbs: [ 0x2a88a374919e32868b8cf3a3c456dd, 0x430c8c82b07f36d6e90ea2d1b2c9d4, 0x003d78 ] } , - BigNum { limbs: [ 0x931b5f8b6cbdcc7974730b5c3ba924, 0x64469d1accc8fc62eef966d0253b7f, 0x003675 ] } , - BigNum { limbs: [ 0x55c0b4dd526cae73628c95bfe36318, 0x3a81a2f8ab890f7a2cb4b2760f1f29, 0x000274 ] } , - BigNum { limbs: [ 0x67e34e22abef508c9d7369401c9ce9, 0x6cd186a4d1bf23bfab53572bc8e62a, 0x007179 ] } , - BigNum { limbs: [ 0x6b650565be27d5c4349c6479217ea0, 0x366d6c2a685ba9c8d69636987d3766, 0x00462a ] } , - BigNum { limbs: [ 0x523efd9a4034293bcb639a86de8161, 0x70e5bd7314ec89710171d3095acded, 0x002dc3 ] } , - BigNum { limbs: [ 0xe11d37c118ad24f23bb876e6e3996d, 0x2250ca2db691fd4bc57e64f23b3e4a, 0x0069ea ] } , - BigNum { limbs: [ 0xdc86cb3ee5aeda0dc44788191c6694, 0x85025f6fc6b635ee1289a4af9cc708, 0x000a03 ] } , - BigNum { limbs: [ 0xc2834a13648ab0bb2696da85c46161, 0x19badcaac1644af1730c4eab0deb39, 0x0039d6 ] } , - BigNum { limbs: [ 0xfb20b8ec99d14e44d969247a3b9ea0, 0x8d984cf2bbe3e84864fbbaf6ca1a19, 0x003a17 ] } , - BigNum { limbs: [ 0x7f57194f4989607224b93b7826bd78, 0x0b4418d8f2e9507988b500bdc6892a, 0x0005ec ] } , - BigNum { limbs: [ 0x3e4ce9b0b4d29e8ddb46c387d94289, 0x9c0f10c48a5ee2c04f5308e4117c29, 0x006e01 ] } , - BigNum { limbs: [ 0xb5608c82fae9cac0e0e70700397886, 0x37dfecd3e929e61aaee3afa8db4c18, 0x0064d4 ] } , - BigNum { limbs: [ 0x0843767d0372343f1f18f7ffc6877b, 0x6f733cc9941e4d1f292459f8fcb93b, 0x000f19 ] } , - BigNum { limbs: [ 0x34f400a2f13a75858c7dd04232ef0d, 0xf9d6eccc062a45cecaaeac73df696b, 0x004e91 ] } , - BigNum { limbs: [ 0x88b0025d0d21897a73822ebdcd10f4, 0xad7c3cd1771ded6b0d595d2df89be8, 0x00255b ] } , - BigNum { limbs: [ 0x8a03366e20394efdef59ead89e81cf, 0xb64ba063e5a79520a209516f517261, 0x00358d ] } , - BigNum { limbs: [ 0x33a0cc91de22b00210a61427617e32, 0xf107893997a09e1935feb8328692f2, 0x003e5f ] } , - BigNum { limbs: [ 0x11ff8298b69043c12c3995a8873bed, 0x3bd361c7384135ed4d5518c8374264, 0x005418 ] } , - BigNum { limbs: [ 0xaba4806747cbbb3ed3c6695778c414, 0x6b7fc7d64506fd4c8ab2f0d9a0c2ef, 0x001fd5 ] } , - BigNum { limbs: [ 0x2610353aab356f247373610da0eec2, 0xde9a82dea97a04f74216d11d4ec6d1, 0x001d52 ] } , - BigNum { limbs: [ 0x9793cdc553268fdb8c8c9df25f113f, 0xc8b8a6bed3ce2e4295f13884893e82, 0x00569a ] } , - BigNum { limbs: [ 0x74dcdd07aec63dbe50506c03bb3eb1, 0x788a1c17378fdf1d97dca907f97dad, 0x000fbd ] } , - BigNum { limbs: [ 0x48c725f84f95c141afaf92fc44c150, 0x2ec90d8645b8541c402b6099de87a6, 0x006430 ] } , - BigNum { limbs: [ 0x807a77c0216d6a62dcea75fb24beb3, 0x4c241cc0c3ccd4454efbffb2164b6b, 0x0047a3 ] } , - BigNum { limbs: [ 0x3d298b3fdcee949d23158904db414e, 0x5b2f0cdcb97b5ef4890c09efc1b9e8, 0x002c4a ] } , - BigNum { limbs: [ 0x68e775a1fdfeee59b11294a7e75b42, 0x90f74d6a8f6eb5ad0f7f6d17ae7cd2, 0x001936 ] } , - BigNum { limbs: [ 0x54bc8d5e005d10a64eed6a5818a4bf, 0x165bdc32edd97d8cc8889c8a298881, 0x005ab7 ] } , - BigNum { limbs: [ 0x604fc97c42876dd9cdbdfe6d7541f7, 0x247e9f45832c426726cdf205c7d4ce, 0x001585 ] } , - BigNum { limbs: [ 0x5d543983bbd49126324200928abe0a, 0x82d48a57fa1bf0d2b13a179c103085, 0x005e68 ] } , - BigNum { limbs: [ 0x744a20a8aa638c81b32209443061d3, 0x98b84933a8c2f0d7db9ab6d438be24, 0x005753 ] } , - BigNum { limbs: [ 0x4959e25753f8727e4cddf5bbcf9e2e, 0x0e9ae069d4854261fc6d52cd9f472f, 0x001c9a ] } , - BigNum { limbs: [ 0xc2515e5bf61bb549b9ca5d035c832d, 0x104d23867d1d1f9c39b2f742016478, 0x006d4c ] } , - BigNum { limbs: [ 0xfb52a4a4084049b64635a1fca37cd4, 0x97060617002b139d9e55125fd6a0da, 0x0006a1 ] } , - BigNum { limbs: [ 0x76ecab2c881551a0912629b1438204, 0x95f5102a751cdc20bb57d12d8ac579, 0x001a40 ] } , - BigNum { limbs: [ 0x46b757d37646ad5f6ed9d54ebc7dfd, 0x115e1973082b57191cb038744d3fda, 0x0059ad ] } , - BigNum { limbs: [ 0x836427d83015de36fc877aa7a41114, 0x2baad6dbc9e85c4b92dd71e06d41cb, 0x0027c4 ] } , - BigNum { limbs: [ 0x3a3fdb27ce4620c9037884585beeed, 0x7ba852c1b35fd6ee452a97c16ac388, 0x004c29 ] } , - BigNum { limbs: [ 0x6d9c1f736d9ca4ebf95617bb8f14e5, 0x79e0d2e2b5e3ea1612d2158040bcc5, 0x001a46 ] } , - BigNum { limbs: [ 0x5007e38c90bf5a1406a9e74470eb1c, 0x2d7256bac7644923c535f42197488e, 0x0059a7 ] } , - BigNum { limbs: [ 0x654a9626e64c9bae1125f30e062ea5, 0xcba6e09da50cd7e8dc62c6b3d3a626, 0x00672b ] } , - BigNum { limbs: [ 0x58596cd9180f6351eeda0bf1f9d15c, 0xdbac48ffd83b5b50fba542ee045f2d, 0x000cc1 ] } , - BigNum { limbs: [ 0xe36bb0a67bfd6f08218b88d7bb4a66, 0x1a35f6af3b5db3945bfc5926357f34, 0x0029e6 ] } , - BigNum { limbs: [ 0xda385259825e8ff7de74762844b59b, 0x8d1d32ee41ea7fa57c0bb07ba2861e, 0x004a07 ] } , - BigNum { limbs: [ 0x5768e9d7df8cdeb5ec36f5f5a21cbd, 0x3aa1719ae038e49285fd6b82920681, 0x007189 ] } , - BigNum { limbs: [ 0x663b19281ecf204a13c9090a5de344, 0x6cb1b8029d0f4ea7520a9e1f45fed2, 0x000264 ] } , - BigNum { limbs: [ 0x7b57a78366b52c82e77e4704d5ee1b, 0x1c2cf0569225e688d9618730b8ae84, 0x006ec7 ] } , - BigNum { limbs: [ 0x424c5b7c97a6d27d1881b7fb2a11e6, 0x8b263946eb224cb0fea682711f56cf, 0x000526 ] } , - BigNum { limbs: [ 0xfe423d0c2dd8d7693ad2dd0439e0f2, 0xf3d960853d4bb1fe08f795f4eb622d, 0x0064f8 ] } , - BigNum { limbs: [ 0xbf61c5f3d0832796c52d21fbc61f0f, 0xb379c9183ffc813bcf1073aceca325, 0x000ef4 ] } , - BigNum { limbs: [ 0xd9fd35aa2bbfbb8c9503b572273e30, 0x05bb00c2e29d2dd5225f389aac6127, 0x002f8f ] } , - BigNum { limbs: [ 0xe3a6cd55d29c43736afc498dd8c1d1, 0xa19828da9aab0564b5a8d1072ba42b, 0x00445e ] } , - BigNum { limbs: [ 0xd2cb62bb6f8d444320edc98ad4f10e, 0xbe649765ecb10065379a8efc594e37, 0x000821 ] } , - BigNum { limbs: [ 0xead8a0448ecebabcdf1235752b0ef3, 0xe8ee9237909732d4a06d7aa57eb71b, 0x006bcb ] } , - BigNum { limbs: [ 0x7c8a5578c84776b299104a012dd867, 0xcdc31e229aed9d5a2a1702bde80275, 0x001906 ] } , - BigNum { limbs: [ 0x4119ad873614884d66efb4fed2279a, 0xd9900b7ae25a95dfadf106e3f002de, 0x005ae6 ] } , - BigNum { limbs: [ 0x08ac6c80801959025b7be7e7bdffad, 0x781374808ca11d675ca5b7a5a6e93c, 0x0010f2 ] } , - BigNum { limbs: [ 0xb4f7967f7e42a5fda4841718420054, 0x2f3fb51cf0a715d27b6251fc311c17, 0x0062fb ] } , - BigNum { limbs: [ 0xa595f474d96adbf60dc6079f47dd9a, 0xecefbc8636b585df84c7c43f7a703f, 0x001b29 ] } , - BigNum { limbs: [ 0x180e0e8b24f12309f239f760b82267, 0xba636d174692ad5a534045625d9514, 0x0058c3 ] } , - BigNum { limbs: [ 0xf5bb72eec65cfdac56c4a94b015f16, 0xe2ac9526a34be782e4bbed4937aec4, 0x006570 ] } , - BigNum { limbs: [ 0xc7e8901137ff0153a93b55b4fea0eb, 0xc4a69476d9fc4bb6f34c1c58a0568e, 0x000e7c ] } , - BigNum { limbs: [ 0x4afe3f0ae233c9db14908599f458d8, 0x5a8a3d18edaf004071a725364d01f1, 0x001f5f ] } , - BigNum { limbs: [ 0x72a5c3f51c283524eb6f79660ba729, 0x4cc8ec848f9932f96660e46b8b0362, 0x00548e ] } , - BigNum { limbs: [ 0x0705a55c75bde3d9ec04f35f2f3748, 0x5e606bdb83de8fe2870b3be481aa77, 0x002df9 ] } , - BigNum { limbs: [ 0xb69e5da3889e1b2613fb0ba0d0c8b9, 0x48f2bdc1f969a35750fccdbd565adc, 0x0045f4 ] } , - BigNum { limbs: [ 0xcef5f118418cbff7d307b014884ac8, 0xd388423fff7c831771fe812b8f6eb9, 0x00095a ] } , - BigNum { limbs: [ 0xeeae11e7bccf3f082cf84eeb77b539, 0xd3cae75d7dcbb02266098876489699, 0x006a92 ] } , - BigNum { limbs: [ 0x1ec708bbc371e5fa577a3377bed03b, 0x3556719ba7731c0f315db71f58b945, 0x005fe1 ] } , - BigNum { limbs: [ 0x9edcfa443aea1905a885cb88412fc6, 0x71fcb801d5d5172aa6aa52827f4c0e, 0x00140c ] } , - BigNum { limbs: [ 0x910e53a43ccc546cf05fee43e8e8bb, 0x299156861231c856d226dd94c8cd0e, 0x003d94 ] } , - BigNum { limbs: [ 0x2c95af5bc18faa930fa010bc171746, 0x7dc1d3176b166ae305e12c0d0f3845, 0x003659 ] } , - BigNum { limbs: [ 0x37fefa20da0900106899c9038863f5, 0x52dedc5a4703a562353ce9bd0d48f3, 0x00234f ] } , - BigNum { limbs: [ 0x85a508df2452feef976635fc779c0c, 0x54744d4336448dd7a2cb1fe4cabc60, 0x00509e ] } , - BigNum { limbs: [ 0x935e883e4d0aa099350f3f1f238e44, 0xc8fe302847e6d49fb3acce09aa7c18, 0x0003b9 ] } , - BigNum { limbs: [ 0x2a457ac1b1515e66caf0bfe0dc71bd, 0xde54f97535615e9a245b3b982d893b, 0x007033 ] } , - BigNum { limbs: [ 0xd722035fae8abada32dfeaccbbf98d, 0xc8f0f02e65e6adf7ec62c5a0ca3e70, 0x00421a ] } , - BigNum { limbs: [ 0xe681ffa04fd14425cd201433440674, 0xde62396f17618541eba544010dc6e2, 0x0031d2 ] } , - BigNum { limbs: [ 0x6ac76bd2157ee41f10aafa2f7fbc90, 0xcf831ef6a8c992d7830ab787d21df8, 0x001029 ] } , - BigNum { limbs: [ 0x52dc972de8dd1ae0ef5504d0804371, 0xd7d00aa6d47ea06254fd521a05e75b, 0x0063c3 ] } , - BigNum { limbs: [ 0x759f24fda4b6da6df6c3189cbc8b17, 0x32b15a073d13cf474f049a8b1ebcfb, 0x0053b6 ] } , - BigNum { limbs: [ 0x4804de0259a52492093ce6634374ea, 0x74a1cf96403463f289036f16b94858, 0x002037 ] } , - BigNum { limbs: [ 0xb2599ddc09e1df071f4fb2c4e50cab, 0x239d05c466a485cd8b8d46589593ab, 0x001960 ] } , - BigNum { limbs: [ 0x0b4a6523f47a1ff8e0b04c3b1af356, 0x83b623d916a3ad6c4c7ac3494271a8, 0x005a8d ] } , - BigNum { limbs: [ 0x82d6a42408ebfba758401acfc3a4e3, 0xf227985f08e736aa15960e38ab6d8f, 0x00524a ] } , - BigNum { limbs: [ 0x3acd5edbf5700358a7bfe4303c5b1e, 0xb52b913e7460fc8fc271fb692c97c4, 0x0021a2 ] } , - BigNum { limbs: [ 0x4884b372244337d996b4c2f8f76766, 0x326b21953ae15c5d6659010049a650, 0x0066be ] } , - BigNum { limbs: [ 0x751f4f8dda18c726694b3c0708989b, 0x74e808084266d6dc71af08a18e5f03, 0x000d2f ] } , - BigNum { limbs: [ 0x7008ba672b6ffecf52e7e950d7ce36, 0xed9f21961bdda1125478cf63050484, 0x0036a0 ] } , - BigNum { limbs: [ 0x4d9b4898d2ec0030ad1815af2831cb, 0xb9b40807616a9227838f3a3ed300cf, 0x003d4c ] } , - BigNum { limbs: [ 0x6742385645cc833663bf62cd3416c5, 0x25546b9ee920c8af2a8001fc010048, 0x000c86 ] } , - BigNum { limbs: [ 0x5661caa9b88f7bc99c409c32cbe93c, 0x81febdfe94276a8aad8807a5d7050b, 0x006767 ] } , - BigNum { limbs: [ 0xdbeb27b4f1ed5b54c2328a543f533c, 0x55c402a5abf4018ec3efdabca1f40e, 0x0040e4 ] } , - BigNum { limbs: [ 0xe1b8db4b0c6ea3ab3dcd74abc0acc5, 0x518f26f7d15431ab14182ee5361144, 0x003309 ] } , - BigNum { limbs: [ 0xce790549f609fbe3c0cb56782c3c20, 0xdc1e22b772c643008b7465767c9269, 0x006da0 ] } , - BigNum { limbs: [ 0xef2afdb60852031c3f34a887d3c3e1, 0xcb3506e60a81f0394c93a42b5b72e9, 0x00064c ] } , - BigNum { limbs: [ 0x30c88c5bd7e5324e7832b3aecf9672, 0x6577edca0ac752c221798af662989b, 0x000a94 ] } , - BigNum { limbs: [ 0x8cdb76a42676ccb187cd4b5130698f, 0x41db3bd37280e077b68e7eab756cb8, 0x006959 ] } , - BigNum { limbs: [ 0x059822e7d4b19094b1e227591be522, 0x39714ea4ece87942ccf7b13be45384, 0x002769 ] } , - BigNum { limbs: [ 0xb80be01829aa6e6b4e1dd7a6e41adf, 0x6de1daf8905fb9f70b105865f3b1cf, 0x004c84 ] } , - BigNum { limbs: [ 0xf2d09fcf74e76420b19c2ee509f657, 0x9b6ec98cd695a36ba9772cbf4d979f, 0x0036af ] } , - BigNum { limbs: [ 0xcad3633089749adf4e63d01af609aa, 0x0be46010a6b28fce2e90dce28a6db3, 0x003d3e ] } , - BigNum { limbs: [ 0x7dbe95ea0cbc252c5770679627a97f, 0x04f09abf773987aaaab008f919ca44, 0x00116c ] } , - BigNum { limbs: [ 0x3fe56d15f19fd9d3a88f9769d85682, 0xa2628ede060eab8f2d5800a8be3b0f, 0x006281 ] } , - BigNum { limbs: [ 0x89ec85d2983ba229bc9875532a7597, 0x990197530953ac7302f242c61aae7b, 0x000dd0 ] } , - BigNum { limbs: [ 0x33b77d2d66205cd6436789acd58a6a, 0x0e51924a73f486c6d515c6dbbd56d8, 0x00661d ] } , - BigNum { limbs: [ 0x01ced787cf278151fbf767f4b554e7, 0x3fc67f0c11ff40a392bdb1e33dc781, 0x006e99 ] } , - BigNum { limbs: [ 0xbbd52b782f347dae0408970b4aab1a, 0x678caa916b48f296454a57be9a3dd2, 0x000554 ] } , - BigNum { limbs: [ 0x3dc385727c108e594fa0e65cc3cd50, 0x673a84a1d3b13023e031e604da0995, 0x002544 ] } , - BigNum { limbs: [ 0x7fe07d8d824b70a6b05f18a33c32b1, 0x4018a4fba9970315f7d6239cfdfbbe, 0x004ea9 ] } , - BigNum { limbs: [ 0x6ce4b54501596cf2781be8bda5e0a6, 0x639aa68bf9fec36fd92c67d7c08684, 0x0027a6 ] } , - BigNum { limbs: [ 0x50bf4dbafd02920d87e416425a1f5b, 0x43b8831183496fc9fedba1ca177ecf, 0x004c47 ] } , - BigNum { limbs: [ 0x21118adbe582580972ed9f7ecbb2d3, 0x6c6f11cc76a3be0f6070d801b9f139, 0x006e49 ] } , - BigNum { limbs: [ 0x9c92782418d9a6f68d125f81344d2e, 0x3ae417d106a4752a779731a01e141a, 0x0005a4 ] } , - BigNum { limbs: [ 0x144d82672248d583ec65f5c105ee71, 0x87cdf0c1f63094287cd50c6cde22fc, 0x002f06 ] } , - BigNum { limbs: [ 0xa9568098dc13297c139a093efa1190, 0x1f8538db87179f115b32fd34f9e257, 0x0044e7 ] } , - BigNum { limbs: [ 0xe24a606a0fba04276e0830b73cc727, 0x9b918ea9251565fb701bc24d7e2b2a, 0x005997 ] } , - BigNum { limbs: [ 0xdb59a295eea1fad891f7ce48c338da, 0x0bc19af45832cd3e67ec475459da28, 0x001a56 ] } , - BigNum { limbs: [ 0x40dbec56ee09e2708088fdd2629b2f, 0xa9fb9fdc9c0182b7ee3870e5d92b7d, 0x002bb2 ] } , - BigNum { limbs: [ 0x7cc816a910521c8f7f77012d9d64d2, 0xfd5789c0e146b081e9cf98bbfed9d6, 0x00483a ] } , - BigNum { limbs: [ 0xfa4d44c2ef59645bf62610ffa7adee, 0xf60be477e51ef481c73fef2f82c89b, 0x004e39 ] } , - BigNum { limbs: [ 0xc356be3d0f029aa409d9ee00585213, 0xb147452598293eb810c81a72553cb7, 0x0025b3 ] } , - BigNum { limbs: [ 0x0532f9855f4f8fac0e8bd216764a5f, 0xc9d0a8ad81e50c626caf505e88968e, 0x000b7d ] } , - BigNum { limbs: [ 0xb871097a9f0c6f53f1742ce989b5a2, 0xdd8280effb6326d76b58b9434f6ec5, 0x00686f ] } , - BigNum { limbs: [ 0xa39164ec7f5bc53d0345da045598c1, 0xf7be0fd2fc71a5d21b9f7d77b605ab, 0x002d02 ] } , - BigNum { limbs: [ 0x1a129e137f0039c2fcba24fbaa6740, 0xaf9519ca80d68d67bc688c2a21ffa8, 0x0046ea ] } , - BigNum { limbs: [ 0xb626254a88418bb1d5fe80b00497cb, 0xc56e390ec55c151603d47dffda4920, 0x006a52 ] } , - BigNum { limbs: [ 0x077dddb5761a734e2a017e4ffb6836, 0xe1e4f08eb7ec1e23d4338ba1fdbc33, 0x00099a ] } , - BigNum { limbs: [ 0xfd94cab1a77ca44f6750a9c17a7225, 0x302cefbc8a6775409b257d8f2686b8, 0x0036a0 ] } , - BigNum { limbs: [ 0xc00f384e56df5ab098af553e858ddc, 0x772639e0f2e0bdf93ce28c12b17e9a, 0x003d4d ] } , - BigNum { limbs: [ 0x01d6fea8a72d5a4590fb84c6e1f834, 0xcbb9c03d291f51375434d9889b7931, 0x00516f ] } , - BigNum { limbs: [ 0xbbcd0457572ea4ba6f047a391e07cd, 0xdb9969605428e20283d330193c8c22, 0x00227d ] } , - BigNum { limbs: [ 0x802b5bea2afd97a0a9f89ef141717c, 0x6196529a00b086ddebab03555cd5b2, 0x000b2d ] } , - BigNum { limbs: [ 0x3d78a715d35e675f5607600ebe8e85, 0x45bcd7037c97ac5bec5d064c7b2fa1, 0x0068c0 ] } , - BigNum { limbs: [ 0x6b4e0984cefc74c554c63af2afb1ba, 0x6e2164b4da11d8983b9ed9cd573654, 0x005104 ] } , - BigNum { limbs: [ 0x5255f97b2f5f8a3aab39c40d504e47, 0x3931c4e8a3365aa19c692fd480ceff, 0x0022e9 ] } , - BigNum { limbs: [ 0xd541777839ea7f8bd671afe094fa49, 0x20535364de01977ceb1990603fb3c9, 0x000664 ] } , - BigNum { limbs: [ 0xe8628b87c4717f74298e4f1f6b05b8, 0x86ffd6389f469bbcecee7941985189, 0x006d89 ] } , - BigNum { limbs: [ 0xf8f0251724c0e15a647e6dcb47ca88, 0x6817f7ffab8e8a6dd0b401644d8e74, 0x005f77 ] } , - BigNum { limbs: [ 0xc4b3dde8d99b1da59b819134b83579, 0x3f3b319dd1b9a8cc0754083d8a76de, 0x001476 ] } , - BigNum { limbs: [ 0x5f469035e99cc9a4d3bf8c4fcccf57, 0xaa996ac3db7772fff165c179333442, 0x002f21 ] } , - BigNum { limbs: [ 0x5e5d72ca14bf355b2c4072b03330aa, 0xfcb9bed9a1d0c039e6a24828a4d111, 0x0044cb ] } , - BigNum { limbs: [ 0x16ec9bf89cf3ce0358f775c9c2f7f1, 0x600912f445e7ad22e3a16bbb048aad, 0x0032ed ] } , - BigNum { limbs: [ 0xa6b76707616830fca70889363d0810, 0x474a16a937608616f4669de6d37aa6, 0x004100 ] } , - BigNum { limbs: [ 0xba571d0d5d7a9238e5a8d971a61dfc, 0x5d17bfcbfc033fc30d75fd7033e761, 0x0016a3 ] } , - BigNum { limbs: [ 0x034ce5f2a0e16cc71a57258e59e205, 0x4a3b69d18144f376ca920c31a41df2, 0x005d4a ] } , - BigNum { limbs: [ 0x7607fc49b1f9f0ab6ec59f5299b6c3, 0xbe665e5d5f048803dcf046b2d12354, 0x0024de ] } , - BigNum { limbs: [ 0x479c06b64c620e54913a5fad66493e, 0xe8eccb401e43ab35fb17c2ef06e1ff, 0x004f0e ] } , - BigNum { limbs: [ 0x3aa2ecd06359932070f57560611be8, 0x19bb44b32906d1e89751284bee59dd, 0x005947 ] } , - BigNum { limbs: [ 0x8301162f9b026bdf8f0a899f9ee419, 0x8d97e4ea5441615140b6e155e9ab76, 0x001aa6 ] } , - BigNum { limbs: [ 0x2193da7b724a2ed4f7fe00b2fc0b4e, 0xc9a644b9f6307d3d8aa18a0fb8fea0, 0x0062dc ] } , - BigNum { limbs: [ 0x9c1028848c11d02b0801fe4d03f4b3, 0xddace4e38717b5fc4d667f921f06b3, 0x001110 ] } , - BigNum { limbs: [ 0x8b1b0866c7e6384fff1402328d75f0, 0x73bf2b4e9e7fe2931ebed4802d27a6, 0x00080b ] } , - BigNum { limbs: [ 0x3288fa993675c6b000ebfccd728a11, 0x3393fe4edec850a6b9493521aaddad, 0x006be2 ] } , - BigNum { limbs: [ 0xa409ca98c13f86b9bb09182ef3249c, 0x4fef885548a0adffa477bc9a6960ba, 0x006def ] } , - BigNum { limbs: [ 0x199a38673d1c784644f6e6d10cdb65, 0x5763a14834a7853a33904d076ea499, 0x0005fe ] } , - BigNum { limbs: [ 0x6cca349415b0806502e850e3864c35, 0x3816a7c7228a09f4a5b7f4482c854a, 0x0035db ] } , - BigNum { limbs: [ 0x50d9ce6be8ab7e9afd17ae1c79b3cc, 0x6f3c81d65abe294532501559ab8009, 0x003e12 ] } , - BigNum { limbs: [ 0x9d1d609cf552644d76baf4d37387a5, 0x2eef89e1832e1970e162b522e73a1c, 0x00173f ] } , - BigNum { limbs: [ 0x2086a26309099ab289450a2c8c785c, 0x78639fbbfa1a19c8f6a5547ef0cb37, 0x005cae ] } , - BigNum { limbs: [ 0x4b3993ee00fee0be5d9e782f0826a7, 0x5f453c927323104cb49afc53121c94, 0x0018b4 ] } , - BigNum { limbs: [ 0x726a6f11fd5d1e41a26186d0f7d95a, 0x480ded0b0a2522ed236d0d4ec5e8bf, 0x005b39 ] } , - BigNum { limbs: [ 0x11052786cd325992d5cad82d3d1b97, 0x666295f0258c22bef1bc975729ef5a, 0x000bbc ] } , - BigNum { limbs: [ 0xac9edb793129a56d2a3526d2c2e46a, 0x40f093ad57bc107ae64b724aae15f9, 0x006831 ] } , - BigNum { limbs: [ 0x53262b159e08f6628e7ed94876759a, 0xade45d322bf487485f31a07f1a5f88, 0x0018b0 ] } , - BigNum { limbs: [ 0x6a7dd7ea6053089d718125b7898a67, 0xf96ecc6b5153abf178d66922bda5cb, 0x005b3c ] } , - BigNum { limbs: [ 0x1d5bba0219d6895408b020f663cda2, 0x2efb303338971cc3fcd0c1ce0073ac, 0x004058 ] } , - BigNum { limbs: [ 0xa04848fde48575abf74fde099c325f, 0x7857f96a44b11675db3747d3d791a7, 0x003395 ] } , - BigNum { limbs: [ 0x53f234cd300a031bd7d5251daacccd, 0x38b109dadbb26abefbbcd14355009d, 0x00181d ] } , - BigNum { limbs: [ 0x69b1ce32ce51fbe4282ad9e2553334, 0x6ea21fc2a195c87adc4b385e8304b6, 0x005bd0 ] } , - BigNum { limbs: [ 0x5e37ff0f0ce29a94f46ca0a3870da8, 0x7ed44dccff1d2e850e9f1de1c2dec3, 0x001a58 ] } , - BigNum { limbs: [ 0x5f6c03f0f179646b0b935e5c78f259, 0x287edbd07e2b04b4c968ebc0152690, 0x005995 ] } , - BigNum { limbs: [ 0x5ed133e6e72dbdd1a6bad2de8c3917, 0xeebd69853c99635f49d643a2d7ee1a, 0x001d96 ] } , - BigNum { limbs: [ 0x5ed2cf19172e412e59452c2173c6ea, 0xb895c01840aecfda8e31c5ff001739, 0x005656 ] } , - BigNum { limbs: [ 0x1fd8836d13f16372bbb5a3113c5552, 0x9f6d22e092377163b1cccd2866cc54, 0x000ea0 ] } , - BigNum { limbs: [ 0x9dcb7f92ea6a9b8d444a5beec3aaaf, 0x07e606bceb10c1d6263b3c797138ff, 0x00654d ] } , - BigNum { limbs: [ 0x03f0628b5ffb33789736068a49c981, 0x7e39a7bbd6485a16e8c7f8a475d50d, 0x00394f ] } , - BigNum { limbs: [ 0xb9b3a0749e60cb8768c9f875b63680, 0x291981e1a6ffd922ef4010fd623046, 0x003a9e ] } , - BigNum { limbs: [ 0xcb8cd738b7236cba69d6489456ff43, 0xbc2a388c4f23853232901c46fc6d1f, 0x00352a ] } , - BigNum { limbs: [ 0xf2172bc7473892459629b66ba900be, 0xeb28f1112e24ae07a577ed5adb9833, 0x003ec2 ] } , - BigNum { limbs: [ 0x5130a061491b14c06aab54a53aee18, 0xed10a657d19d6fed60d6e5f5149987, 0x002962 ] } , - BigNum { limbs: [ 0x6c73629eb540ea3f9554aa5ac511e9, 0xba428345abaac34c773123acc36bcc, 0x004a8a ] } , - BigNum { limbs: [ 0xeaf16376953f8b97928bae3cc2a5ce, 0x118cadfeda5891c73dbe74f5a56a06, 0x001c38 ] } , - BigNum { limbs: [ 0xd2b29f89691c73686d7450c33d5a33, 0x95c67b9ea2efa1729a4994ac329b4c, 0x0057b5 ] } , - BigNum { limbs: [ 0xb003a39d5c3ba4fc789b57b9af2f3c, 0x8104510684c19ad30ca0397b870bdf, 0x005ac1 ] } , - BigNum { limbs: [ 0x0da05f62a2205a038764a74650d0c5, 0x264ed896f8869866cb67d02650f974, 0x00192c ] } , - BigNum { limbs: [ 0xb5b14a01e2c2a290ae3553e9f8bb28, 0x619b3a1686b7ebd44101019555917b, 0x0001a1 ] } , - BigNum { limbs: [ 0x07f2b8fe1b995c6f51caab160744d9, 0x45b7ef86f69047659707080c8273d8, 0x00724c ] } , - BigNum { limbs: [ 0xd6fad2860fdf3236cb1b78133eda41, 0x71f55b1ece11a3c3a06bdd7972c742, 0x0053bc ] } , - BigNum { limbs: [ 0xe6a93079ee7cccc934e486ecc125c0, 0x355dce7eaf368f76379c2c28653e10, 0x002031 ] } , - BigNum { limbs: [ 0xc6043f28bc9cdc9ade96929e86d685, 0x0c70678728262bd9d3ee45abc6aa67, 0x001031 ] } , - BigNum { limbs: [ 0xf79fc3d741bf226521696c6179297c, 0x9ae2c216552207600419c3f6115aeb, 0x0063bc ] } , - BigNum { limbs: [ 0xf8c5290042b9bea91a211125d8dbb6, 0x17cd2826f284778021f3e00d8af92e, 0x0052af ] } , - BigNum { limbs: [ 0xc4ded9ffbba24056e5deedda27244b, 0x8f8601768ac3bbb9b61429944d0c24, 0x00213e ] } , - BigNum { limbs: [ 0xc88b4e6d99405bb8529937b284359d, 0x56ee48526d3e00529bffc0ff7e3872, 0x002fe4 ] } , - BigNum { limbs: [ 0xf518b492651ba347ad66c74d7bca64, 0x5064e14b100a32e73c0848a259cce0, 0x004409 ] } , - BigNum { limbs: [ 0x8c4db3258a41208f488b7ba09d11c5, 0x8a6f105a5ab1ed324fc370e60c78e2, 0x005568 ] } , - BigNum { limbs: [ 0x31564fda741ade70b774835f62ee3c, 0x1ce4194322964607884498bbcb8c71, 0x001e85 ] } , - BigNum { limbs: [ 0xdfb76fcc99f3ef2e36ce4e08e77393, 0x78c04fcf27c6976a055907015d654c, 0x006f97 ] } , - BigNum { limbs: [ 0xddec933364680fd1c931b0f7188c6e, 0x2e92d9ce55819bcfd2af02a07aa006, 0x000456 ] } , - BigNum { limbs: [ 0x2794393b64c6ad671e1ac90f9997a1, 0x482e48023e59e541e8221283cd460f, 0x001f48 ] } , - BigNum { limbs: [ 0x960fc9c499955198e1e535f0666860, 0x5f24e19b3eee4df7efe5f71e0abf44, 0x0054a5 ] } , - BigNum { limbs: [ 0xa1ddc75e0d3056956918cce43fbdf1, 0x488b1115b853f4b262a0a3604e9005, 0x002e0e ] } , - BigNum { limbs: [ 0x1bc63ba1f12ba86a96e7321bc04210, 0x5ec81887c4f43e877567664189754e, 0x0045df ] } , - BigNum { limbs: [ 0x412254e276f261dda2ca369b882a76, 0x6744f107ef803dc19c3bdf25367a3b, 0x00315a ] } , - BigNum { limbs: [ 0x7c81ae1d87699d225d35c86477d58b, 0x400e38958dc7f5783bcc2a7ca18b18, 0x004293 ] } , - BigNum { limbs: [ 0x979234398086b31ae741d718f6c0b3, 0x100f74bca8dedad0529118858dd6db, 0x006203 ] } , - BigNum { limbs: [ 0x2611cec67dd54be518be27e7093f4e, 0x9743b4e0d46958698576f11c4a2e78, 0x0011ea ] } , - BigNum { limbs: [ 0xbb808de48c51f20d254e363b5e7602, 0xca9bc098278f20bec201c796f9dacd, 0x004923 ] } , - BigNum { limbs: [ 0x0223751b720a0cf2dab1c8c4a189ff, 0xdcb7690555b9127b1606420ade2a86, 0x002ac9 ] } , - BigNum { limbs: [ 0x17c6b083273c47689538090938d579, 0x463b2b65db138d2f903943d6bd7f6d, 0x0054d1 ] } , - BigNum { limbs: [ 0xa5dd527cd71fb7976ac7f5f6c72a88, 0x6117fe37a234a60a47cec5cb1a85e6, 0x001f1c ] } , - BigNum { limbs: [ 0x3291fd8ab7b8b642a8e3f963efbfed, 0xf13bb32a2dbe623d82b77b9a1c94bb, 0x000a50 ] } , - BigNum { limbs: [ 0x8b12057546a348bd571c059c104014, 0xb61776734f89d0fc55508e07bb7098, 0x00699c ] } , - BigNum { limbs: [ 0x1f1890248f3dd8ac02d6ead2c7e65f, 0xd359e6062c9dfa965d0ba0f0dd0a71, 0x001f4b ] } , - BigNum { limbs: [ 0x9e8b72db6f1e2653fd29142d3819a2, 0xd3f9439750aa38a37afc68b0fafae2, 0x0054a1 ] } , - BigNum { limbs: [ 0xe5e2608711fb77ff5641fc667e835d, 0x51fffd82c1989448ba090df1a9a6f0, 0x006c4d ] } , - BigNum { limbs: [ 0xd7c1a278ec608700a9be0299817ca4, 0x55532c1abbaf9ef11dfefbb02e5e62, 0x0007a0 ] } , - BigNum { limbs: [ 0x9dcebb41b2ef1c4d8a04d5be70b3a4, 0x64c7140ea7043aeb824eb4e3fd3964, 0x004377 ] } , - BigNum { limbs: [ 0x1fd547be4b6ce2b275fb29418f4c5d, 0x428c158ed643f84e55b954bddacbef, 0x003076 ] } , - BigNum { limbs: [ 0xf5392ff8fd8d87b5c472d0f0a69fe1, 0xed235608f4f047c36b65e92f931341, 0x0009ae ] } , - BigNum { limbs: [ 0xc86ad30700ce774a3b8d2e0f596020, 0xba2fd3948857eb766ca2207244f211, 0x006a3e ] } , - BigNum { limbs: [ 0x38528bcc8ea5ef235d35a226631c3e, 0xc67c761f23e094e69c75c169385c92, 0x0041a2 ] } , - BigNum { limbs: [ 0x855177336fb60fdca2ca5cd99ce3c3, 0xe0d6b37e59679e533b9248389fa8c1, 0x00324a ] } , - BigNum { limbs: [ 0x145c44951dae3498eed14fcb160943, 0x6fd4a9038301ece754238f49aeec55, 0x0058ca ] } , - BigNum { limbs: [ 0xa947be6ae0adca67112eaf34e9f6be, 0x377e8099fa46465283e47a582918fe, 0x001b23 ] } , - BigNum { limbs: [ 0xa02a3a8f443648361e8ea8ae06b126, 0xc10c0dfb6cca3d4067ca08e2b3a4ac, 0x00482e ] } , - BigNum { limbs: [ 0x1d79c870ba25b6c9e1715651f94edb, 0xe6471ba2107df5f9703e00bf2460a7, 0x002bbe ] } , - BigNum { limbs: [ 0xa5996b9f82e08911f56487df01e717, 0x45887ccfa095013d5570900a2cc0c0, 0x003fac ] } , - BigNum { limbs: [ 0x180a97607b7b75ee0a9b7720fe18ea, 0x61caaccddcb331fc82977997ab4493, 0x003441 ] } , - BigNum { limbs: [ 0x43572573c9fccdebea518f9b735b3d, 0x95bc1bbe7784ebcaf90db966da6949, 0x005c3f ] } , - BigNum { limbs: [ 0x7a4cdd8c345f311415ae6f648ca4c4, 0x11970ddf05c3476edefa503afd9c0a, 0x0017ae ] } , - BigNum { limbs: [ 0x9972cf91fe9ebf0cfdfcd1bbc2a72e, 0xccbe64c4fa6fca7c90fd2d1917187b, 0x004d2a ] } , - BigNum { limbs: [ 0x2431336dffbd3ff302032d443d58d3, 0xda94c4d882d868bd470adc88c0ecd8, 0x0026c2 ] } , - BigNum { limbs: [ 0x32307b85cb65d3201698dd593284c3, 0xa5219841a0022f57ba9019925bf0a5, 0x002492 ] } , - BigNum { limbs: [ 0x8b73877a32f62bdfe96721a6cd7b3e, 0x0231915bdd4603e21d77f00f7c14ae, 0x004f5b ] } , - BigNum { limbs: [ 0xd83d1ec03ea851355b9de44b95b2d1, 0xc28c767944d14367669032d38157cb, 0x001bb2 ] } , - BigNum { limbs: [ 0xe566e43fbfb3adcaa4621ab46a4d30, 0xe4c6b3243876efd27177d6ce56ad87, 0x00583a ] } , - BigNum { limbs: [ 0x3f8025bfea2f9f6bdd2d3bbefeedb5, 0x0bcb96a72c189fea5ede6d51c3d916, 0x004f03 ] } , - BigNum { limbs: [ 0x7e23dd40142c5f9422d2c34101124c, 0x9b8792f6512f934f79299c50142c3d, 0x0024ea ] } , - BigNum { limbs: [ 0xd107fef95dccd8a331d3ceccc4e782, 0x3aae4071ac9a9ec9ebafe2d5d493b5, 0x0071e7 ] } , - BigNum { limbs: [ 0xec9c0406a08f265cce2c30333b187f, 0x6ca4e92bd0ad946fec5826cc03719d, 0x000206 ] } , - BigNum { limbs: [ 0x3e6fb94740c896941525459bfa51c7, 0x8c9d09da7bec3df8adc3ca1380140b, 0x003a88 ] } , - BigNum { limbs: [ 0x7f3449b8bd93686beadab96405ae3a, 0x1ab61fc3015bf5412a443f8e57f148, 0x003965 ] } , - BigNum { limbs: [ 0xe3de91cc18ee042c15d7f2a087d0d6, 0xbc7d81cc3c664f39e6433c4529f2d7, 0x004f2a ] } , - BigNum { limbs: [ 0xd9c57133e56dfad3ea280c5f782f2b, 0xead5a7d140e1e3fff1c4cd5cae127b, 0x0024c2 ] } , - BigNum { limbs: [ 0x15a837273c8d7808ae9877710b3d4a, 0x95cdc32a7090a6eadb2faabb9eacca, 0x0002dd ] } , - BigNum { limbs: [ 0xa7fbcbd8c1ce86f75167878ef4c2b7, 0x118566730cb78c4efcd85ee6395889, 0x007110 ] } , - BigNum { limbs: [ 0x9da748c3eb9fd36116f4c1ee3d22e0, 0x97243165f72c550d62b60fc1e6710e, 0x006d36 ] } , - BigNum { limbs: [ 0x1ffcba3c12bc2b9ee90b3d11c2dd21, 0x102ef837861bde2c7551f9dff19445, 0x0006b7 ] } , - BigNum { limbs: [ 0xed8c1fe30d90f611070cf87b316fdb, 0x1a16a817a5730a109bdab4d5a019ad, 0x00224f ] } , - BigNum { limbs: [ 0xd017e31cf0cb08eef8f30684ce9026, 0x8d3c8185d7d529293c2d54cc37eba5, 0x00519e ] } , - BigNum { limbs: [ 0x430b9d9a3bb62d3641d7d4eea0c50c, 0x0bd6a3b0dd4962c44176116ccc35dc, 0x0045ef ] } , - BigNum { limbs: [ 0x7a986565c2a5d1c9be282a115f3af5, 0x9b7c85ec9ffed0759691f8350bcf77, 0x002dfe ] } , - BigNum { limbs: [ 0x13c088c385b50ec3a1732e853d869a, 0xffd7355557b16f2b69601d8be620e3, 0x000a95 ] } , - BigNum { limbs: [ 0xa9e37a3c78a6f03c5e8cd07ac27967, 0xa77bf4482596c40e6ea7ec15f1e470, 0x006957 ] } , - BigNum { limbs: [ 0xe386e6d514fc902b94387bd69765b3, 0xd3543c2bd157abf240c4a6ca3e804e, 0x001497 ] } , - BigNum { limbs: [ 0xda1d1c2ae95f6ed46bc78329689a4e, 0xd3feed71abf08747974362d7998504, 0x005f55 ] } , - BigNum { limbs: [ 0xe124d1731ad29dd65983a63ee50d91, 0x739ffc076d28e27be6d8f7e7ac615c, 0x002fe6 ] } , - BigNum { limbs: [ 0xdc7f318ce3896129a67c58c11af270, 0x33b32d96101f50bdf12f11ba2ba3f6, 0x004407 ] } , - BigNum { limbs: [ 0x962747c183e480114ff72774fe6bcd, 0xab54a9e32de069ac3dbc658030baf5, 0x000b5a ] } , - BigNum { limbs: [ 0x277cbb3e7a777eeeb008d78b019434, 0xfbfe7fba4f67c98d9a4ba421a74a5e, 0x006892 ] } , - BigNum { limbs: [ 0x9d0a87e020f541ac13e711a9f1a3f5, 0x32af41b8cee217553faf392299de16, 0x00680e ] } , - BigNum { limbs: [ 0x20997b1fdd66bd53ec18ed560e5c0c, 0x74a3e7e4ae661be49858d07f3e273d, 0x000bdf ] } , - BigNum { limbs: [ 0xd61154e4ce2cff2f4f0de0a22e721b, 0x89c629a53b58a6c167d21637d0defc, 0x00221c ] } , - BigNum { limbs: [ 0xe792ae1b302effd0b0f21e5dd18de6, 0x1d8cfff841ef8c787035f36a072656, 0x0051d1 ] } , - BigNum { limbs: [ 0xa3a236d6ff5ded09bc416a14308d8f, 0x6d20a2a34c82e7f9eee2a9990ee000, 0x002ad1 ] } , - BigNum { limbs: [ 0x1a01cc28fefe11f643be94ebcf7272, 0x3a3286fa30c54b3fe9256008c92553, 0x00491c ] } , - BigNum { limbs: [ 0x7dc51868375de59b8f8d7ad621af1f, 0x9d3eb4aae9101bf5980d8fb415c4f9, 0x003511 ] } , - BigNum { limbs: [ 0x3fdeea97c6fe196470728429de50e2, 0x0a1474f2943817443ffa79edc2405a, 0x003edc ] } , - BigNum { limbs: [ 0xd2fe056e12d128f968ad7099b97076, 0xb21084d26ef18a1152b98a5b16fdd9, 0x003c22 ] } , - BigNum { limbs: [ 0xeaa5fd91eb8ad60697528e66468f8b, 0xf542a4cb0e56a928854e7f46c10779, 0x0037ca ] } , - BigNum { limbs: [ 0xaa11b314df6f5e0efba42a693de65d, 0x8b7661f61aa0915703b6d3f45be85c, 0x0070ea ] } , - BigNum { limbs: [ 0x13924feb1eeca0f1045bd496c219a4, 0x1bdcc7a762a7a1e2d45135ad7c1cf7, 0x000303 ] } , - BigNum { limbs: [ 0x6ff9b86622a64ec04533a09238ecea, 0x189e7e6f84f5f23c04e4e3829054e6, 0x00482e ] } , - BigNum { limbs: [ 0x4daa4a99dbb5b03fbacc5e6dc71317, 0x8eb4ab2df85240fdd323261f47b06d, 0x002bbf ] } , - BigNum { limbs: [ 0x52b15f20a914999b354046f332069c, 0xfe97cbd7990a988f82e9ccef42142e, 0x0007f1 ] } , - BigNum { limbs: [ 0x6af2a3df55476564cabfb80ccdf965, 0xa8bb5dc5e43d9aaa551e3cb295f125, 0x006bfb ] } , - BigNum { limbs: [ 0x65d863abed8e4dc1b68d3f990b7d3b, 0x9d46b0cb885ea6f40321eb76dd1270, 0x000eb9 ] } , - BigNum { limbs: [ 0x57cb9f5410cdb13e4972bf66f482c6, 0x0a0c78d1f4e98c45d4e61e2afaf2e3, 0x006534 ] } , - BigNum { limbs: [ 0x75c4884c21a9831bb130c38730526a, 0x49a8ad01eb6dcb5747ca54efa581fd, 0x006739 ] } , - BigNum { limbs: [ 0x47df7ab3dcb27be44ecf3b78cfad97, 0x5daa7c9b91da67e2903db4b2328356, 0x000cb4 ] } , - BigNum { limbs: [ 0x8a4f6d4c1ada58e7fc4a5cc7f2f2d1, 0xcafbc2707cb125e66be24431f05f44, 0x00521b ] } , - BigNum { limbs: [ 0x335495b3e381a61803b5a2380d0d30, 0xdc57672d00970d536c25c56fe7a60f, 0x0021d1 ] } , - BigNum { limbs: [ 0x078a7b97ec66cb9826953a213d583c, 0x86f6cffe4ca2b740471bc3e68d79ea, 0x0034fc ] } , - BigNum { limbs: [ 0xb619876811f53367d96ac4dec2a7c5, 0x205c599f30a57bf990ec45bb4a8b69, 0x003ef1 ] } , - BigNum { limbs: [ 0x7bc126c341b17ce26b0d732d3987cc, 0x87e27aea917b0836b22d3975a12725, 0x005f34 ] } , - BigNum { limbs: [ 0x41e2dc3cbcaa821d94f28bd2c67835, 0x1f70aeb2ebcd2b0325dad02c36de2e, 0x0014b9 ] } , - BigNum { limbs: [ 0x72a73fa70deb9998674a8201ccde57, 0xb0b796f20d83de527d49e939938236, 0x005d98 ] } , - BigNum { limbs: [ 0x4afcc358f070656798b57cfe3321aa, 0xf69b92ab6fc454e75abe206844831d, 0x001654 ] } , - BigNum { limbs: [ 0x075d2d564fde1a04d829b1de6dbacd, 0x7d56c69e9b58fc0912c19f3dd3ad55, 0x0037da ] } , - BigNum { limbs: [ 0xb646d5a9ae7de4fb27d64d21924534, 0x29fc62fee1ef3730c5466a640457fe, 0x003c13 ] } , - BigNum { limbs: [ 0x33cbe11e505548c3c2a6f22bd08bd3, 0x43a59e5aa608e0f662860d70233a18, 0x002e22 ] } , - BigNum { limbs: [ 0x89d821e1ae06b63c3d590cd42f742e, 0x63ad8b42d73f52437581fc31b4cb3b, 0x0045cb ] } , - BigNum { limbs: [ 0xe5dd3d2181bf89676bd0ffef6cabc2, 0x5ff8dbb07cb90da58bce5909401f4e, 0x0005c4 ] } , - BigNum { limbs: [ 0xd7c6c5de7c9c7598942eff1093543f, 0x475a4ded008f25944c39b09897e604, 0x006e29 ] } , - BigNum { limbs: [ 0x114bdf41b1c3df750ff68d57b6c10f, 0x8a1cec524e32b2df3cb71d94aa818d, 0x004278 ] } , - BigNum { limbs: [ 0xac5823be4c981f8af00971a8493ef2, 0x1d363d4b2f15805a9b50ec0d2d83c6, 0x003175 ] } , - BigNum { limbs: [ 0x1e43458668425774dca1c772360585, 0x2569e0ef21823529bc7bb192bce311, 0x000c3d ] } , - BigNum { limbs: [ 0x9f60bd799619a78b235e378dc9fa7c, 0x81e948ae5bc5fe101b8c580f1b2242, 0x0067b0 ] } , - BigNum { limbs: [ 0xcf1f7011c0b9cf0c1c1e68d08a5949, 0x497b2a2e23ae5f67b0d137737a844b, 0x00001a ] } , - BigNum { limbs: [ 0xee8492ee3da22ff3e3e1962f75a6b8, 0x5dd7ff6f5999d3d22736d22e5d8107, 0x0073d3 ] } , - BigNum { limbs: [ 0xeedcc20126d7f09245265cc18d07e5, 0xedad53fed6f4d40a09e788275f2d8f, 0x002c67 ] } , - BigNum { limbs: [ 0xcec740fed7840e6dbad9a23e72f81c, 0xb9a5d59ea6535f2fce20817a78d7c3, 0x004785 ] } , - BigNum { limbs: [ 0xb7093b9e98f6d9e7499381717b4806, 0x3f2ef2202935a8d50b5eb8317e35e8, 0x003ffc ] } , - BigNum { limbs: [ 0x069ac76165652518b66c7d8e84b7fb, 0x6824377d54128a64cca9517059cf6b, 0x0033f1 ] } , - BigNum { limbs: [ 0xaed66bb0d420ae910126f599901dda, 0x2da36b64e15499910cf7fdf89f1469, 0x001541 ] } , - BigNum { limbs: [ 0x0ecd974f2a3b506efed909666fe227, 0x79afbe389bf399a8cb100ba938f0ea, 0x005eac ] } , - BigNum { limbs: [ 0xbc9dd11fe19f5fa8d347b20d3a45f8, 0x2137c5523a84bd8f820f78380057c0, 0x001894 ] } , - BigNum { limbs: [ 0x010631e01cbc9f572cb84cf2c5ba09, 0x861b644b42c375aa55f89169d7ad93, 0x005b59 ] } , - BigNum { limbs: [ 0xba39145bcdbba78ac12835b04f1148, 0x65379305265a848c32bbb50a2d3284, 0x004949 ] } , - BigNum { limbs: [ 0x036aeea430a057753ed7c94fb0eeb9, 0x421b969856edaeada54c5497aad2cf, 0x002aa4 ] } , - BigNum { limbs: [ 0x95b22268ee4b2985c37e9595dee022, 0xfe3416ff570f824b4d761e1639df88, 0x000dfb ] } , - BigNum { limbs: [ 0x27f1e0971010d57a3c81696a211fdf, 0xa91f129e2638b0ee8a91eb8b9e25cb, 0x0065f1 ] } , - BigNum { limbs: [ 0x06eddb367ab22c18cba752864f8b13, 0x805987aa81e48a37216e17279547b0, 0x000d3f ] } , - BigNum { limbs: [ 0xb6b627c983a9d2e73458ac79b074ee, 0x26f9a1f2fb63a902b699f27a42bda3, 0x0066ae ] } , - BigNum { limbs: [ 0x9a5e3de88156e4cc9afc55e1681a2a, 0xbf288c1aab244d3270a4a7a3a721ee, 0x004888 ] } , - BigNum { limbs: [ 0x2345c5177d051a336503a91e97e5d7, 0xe82a9d82d223e607676361fe30e365, 0x002b64 ] } , - BigNum { limbs: [ 0x07d379a9febdde1fb7f54e0265ce07, 0x3f8df309239dec0cf477a2bad1560a, 0x0017f8 ] } , - BigNum { limbs: [ 0xb5d08955ff9e20e0480ab0fd9a31fa, 0x67c5369459aa472ce39066e706af49, 0x005bf5 ] } , - BigNum { limbs: [ 0x9bfdee3322cefba92913a02e1ee754, 0x5a9880940a36deeacc6ea144da8591, 0x003cd8 ] } , - BigNum { limbs: [ 0x21a614ccdb8d0356d6ec5ed1e118ad, 0x4cbaa9097311544f0b99685cfd7fc2, 0x003715 ] } , - BigNum { limbs: [ 0x7d9f9cf1425f7dc910b69f60179974, 0xd4a655ec4bf92ebc4ba97b0d9a8a44, 0x005e60 ] } , - BigNum { limbs: [ 0x4004660ebbfc8136ef495f9fe8668d, 0xd2acd3b1314f047d8c5e8e943d7b0f, 0x00158c ] } , - BigNum { limbs: [ 0xce2749a3e7bddb90cbb6d92d8ca8f6, 0xba05a063fee29157720be9ef013a11, 0x003a16 ] } , - BigNum { limbs: [ 0xef7cb95c169e236f344925d273570b, 0xed4d89397e65a1e265fc1fb2d6cb41, 0x0039d6 ] } , - BigNum { limbs: [ 0xfdcb07de349fcdd55057b470cd3b3e, 0x34f45015013abc92a0384fb547d2e1, 0x000414 ] } , - BigNum { limbs: [ 0xbfd8fb21c9bc312aafa84a8f32c4c3, 0x725ed9887c0d76a737cfb9ec903271, 0x006fd9 ] } , - BigNum { limbs: [ 0x114ead526d0f6c9eb7af15de4af4ac, 0x1ec50ddabc5814388398313eb99e6b, 0x004bf1 ] } , - BigNum { limbs: [ 0xac5555ad914c92614850e921b50b55, 0x888e1bc2c0f01f01546fd8631e66e8, 0x0027fc ] } , - BigNum { limbs: [ 0x68a842739e0ff337d811ff60ab359e, 0xc976b9f0a9a40bb5ccb89f56980717, 0x007320 ] } , - BigNum { limbs: [ 0x54fbc08c604c0bc827edff9f54ca63, 0xdddc6facd3a427840b4f6a4b3ffe3c, 0x0000cc ] } , - BigNum { limbs: [ 0xc8ab8c2a2d43656b226bace742443f, 0xac1bbad652cfcba311b18a46c1f320, 0x00155d ] } , - BigNum { limbs: [ 0xf4f876d5d1189994dd945218bdbbc2, 0xfb376ec72a786796c6567f5b161232, 0x005e8f ] } , - BigNum { limbs: [ 0x89a7fd21c6a294a3f6d32151d20b37, 0x12e86d3610e95a25f8fca72a9ab596, 0x006bcb ] } , - BigNum { limbs: [ 0x33fc05de37b96a5c092cddae2df4ca, 0x946abc676c5ed913df0b62773d4fbd, 0x000822 ] } , - BigNum { limbs: [ 0x20234d525d4189f6f85b16482a7197, 0x6b41073677d0b816428ad1181b4606, 0x00188f ] } , - BigNum { limbs: [ 0x9d80b5ada11a750907a4e8b7d58e6a, 0x3c12226705777b23957d3889bcbf4d, 0x005b5e ] } , - BigNum { limbs: [ 0xdef08e9f8fe77d54634c953cad3108, 0x6ee4233b8ba040dbeaad947c194b39, 0x004327 ] } , - BigNum { limbs: [ 0xdeb374606e7481ab9cb369c352cef9, 0x386f0661f1a7f25ded5a7525beba19, 0x0030c6 ] } , - BigNum { limbs: [ 0x6289e19b477ee6691938fa1af85975, 0x0642e00678e059e18426bda8673157, 0x000083 ] } , - BigNum { limbs: [ 0x5b1a2164b6dd1896e6c704e507a68c, 0xa11049970467d95853e14bf970d3fc, 0x00736a ] } , - BigNum { limbs: [ 0x1ce04aa33cf9a2e7776243b37036c2, 0x52085568d9a0c03606c2c05e4fdb76, 0x004635 ] } , - BigNum { limbs: [ 0xa0c3b85cc1625c18889dbb4c8fc93f, 0x554ad434a3a77303d14549438829dd, 0x002db8 ] } , - BigNum { limbs: [ 0x7449c397155417e44c19c7837357d9, 0x6476568299bd844ed5fd5e07959511, 0x006080 ] } , - BigNum { limbs: [ 0x495a3f68e907e71bb3e6377c8ca828, 0x42dcd31ae38aaeeb020aab9a427042, 0x00136d ] } , - BigNum { limbs: [ 0xb9a75fc516517f37c4c85b461ed199, 0x64dead8a2259e177e3e6193883aabd, 0x005cf5 ] } , - BigNum { limbs: [ 0x03fca33ae80a7fc83b37a3b9e12e68, 0x42747c135aee51c1f421f069545a96, 0x0016f8 ] } , - BigNum { limbs: [ 0x8f8f9ae3653ba2c10454d0a75656ff, 0xcdcd00bd35dfdc0497061091ff6592, 0x004a77 ] } , - BigNum { limbs: [ 0x2e14681c99205c3efbab2e58a9a902, 0xd98628e0476857354101f90fd89fc1, 0x002975 ] } , - BigNum { limbs: [ 0x3221fd149285bcec3d3b9bfa8672aa, 0xdeaaf8838aea65f252a5ef29e7e550, 0x004a44 ] } , - BigNum { limbs: [ 0x8b8205eb6bd64213c2c46305798d57, 0xc8a83119f25dcd4785621a77f02003, 0x0029a8 ] } , - BigNum { limbs: [ 0x832a8ddbf216ca980ac50eadacd9de, 0x41a396c88646d98739228dab7885bd, 0x0011c2 ] } , - BigNum { limbs: [ 0x3a7975240c453467f53af052532623, 0x65af92d4f70159b29ee57bf65f7f96, 0x00622b ] } , - BigNum { limbs: [ 0x59c20216257919cfa08b067bb9f2a7, 0xade7d1cb81f4be59f9d8819237c63a, 0x005044 ] } , - BigNum { limbs: [ 0x63e200e9d8e2e5305f74f884460d5a, 0xf96b57d1fb5374dfde2f880fa03f19, 0x0023a8 ] } , - BigNum { limbs: [ 0xd6b05b5583bbd72a10a702aaa59abc, 0xe3b0bc10503cd0039b925d26760b4c, 0x0054ee ] } , - BigNum { limbs: [ 0xe6f3a7aa7aa027d5ef58fc555a6545, 0xc3a26d8d2d0b63363c75ac7b61fa06, 0x001efe ] } , - BigNum { limbs: [ 0x30df1d6d8c9fd9b98a1bb116534f78, 0x16f0fc8249b31002f8c65f40ff07cb, 0x0049d7 ] } , - BigNum { limbs: [ 0x8cc4e59271bc254675e44de9acb089, 0x90622d1b33952336df41aa60d8fd88, 0x002a16 ] } , - BigNum { limbs: [ 0x635a7e42ce28cc95ceb3a7c3f9f188, 0x644ac89c6c6ee30939aaa120a0eb0f, 0x004ece ] } , - BigNum { limbs: [ 0x5a4984bd3033326a314c573c060e79, 0x4308610110d950309e5d6881371a44, 0x00251f ] } , - BigNum { limbs: [ 0x5b42281bc799f0e519aa0539834b13, 0x8477f7f1f011372039d0730e94c564, 0x001ae0 ] } , - BigNum { limbs: [ 0x6261dae436c20e1ae655f9c67cb4ee, 0x22db31ab8d36fc199e379693433fef, 0x00590d ] } , - BigNum { limbs: [ 0x25c4877daa4e7fadf05c8931874788, 0xd4fb5470bb003b0bbfe46301320074, 0x006008 ] } , - BigNum { limbs: [ 0x97df7b82540d7f520fa375ce78b879, 0xd257d52cc247f82e1823a6a0a604df, 0x0013e4 ] } , - BigNum { limbs: [ 0x95c175f84df85ee22337d6a6b4d9fb, 0x8ed3222b9fc8ef1e7bab4f23cf3f49, 0x000573 ] } , - BigNum { limbs: [ 0x27e28d07b063a01ddcc828594b2606, 0x18800771dd7f441b5c5cba7e08c60a, 0x006e7a ] } , - BigNum { limbs: [ 0xab799725fe3e86e5e29d73edf9b572, 0xe8613b6571fbfab57fce98c8eae62b, 0x006683 ] } , - BigNum { limbs: [ 0x122a6bda001d781a1d628b12064a8f, 0xbef1ee380b4c3884583970d8ed1f28, 0x000d69 ] } , - BigNum { limbs: [ 0x7c9a2ad9232c0cfcfe995f8ce96836, 0xb76df721aa94ec2607bb4a7497beba, 0x001a53 ] } , - BigNum { limbs: [ 0x4109d826db2ff20301669f731697cb, 0xefe5327bd2b34713d04cbf2d404699, 0x005999 ] } , - BigNum { limbs: [ 0x96087b2d17a877030a01c3fba22e80, 0x877a9a4bc0fe44d7149486f1a2cec3, 0x0024d7 ] } , - BigNum { limbs: [ 0x279b87d2e6b387fcf5fe3b045dd181, 0x1fd88f51bc49ee62c37382b0353690, 0x004f16 ] } , - BigNum { limbs: [ 0x07d1539bec93a9c8ed49e38f0af025, 0xa85ab7c3a6e3a8b6a4e49982b9c2d1, 0x003632 ] } , - BigNum { limbs: [ 0xb5d2af6411c8553712b61b70f50fdc, 0xfef871d9d6648a833323701f1e4282, 0x003dba ] } , - BigNum { limbs: [ 0xa7dbf3fe81c15c5f962e22648fbd45, 0x022c8dab73e858993b5f0d2db61f5c, 0x005a0d ] } , - BigNum { limbs: [ 0x15c80f017c9aa2a069d1dc9b7042bc, 0xa5269bf2095fdaa09ca8fc7421e5f7, 0x0019e0 ] } , - BigNum { limbs: [ 0x5ac8ea014a76f8077360c673f98822, 0x6bb47ac1219097cab375c68c973a4b, 0x002068 ] } , - BigNum { limbs: [ 0x62db18feb3e506f88c9f388c0677df, 0x3b9eaedc5bb79b6f2492431540cb08, 0x005385 ] } , - BigNum { limbs: [ 0x584f7240cfa636bd45630811115166, 0xd50bde8c87fd94fb7b9c68842675f7, 0x00366d ] } , - BigNum { limbs: [ 0x655490bf2eb5c842ba9cf6eeeeae9b, 0xd2474b10f54a9e3e5c6ba11db18f5c, 0x003d7f ] } , - BigNum { limbs: [ 0xe1d1ad657619b928d6ae78b2705727, 0x93dd70dccdccbfbadb3219831a4bf6, 0x005437 ] } , - BigNum { limbs: [ 0xdbd2559a884245d72951864d8fa8da, 0x1375b8c0af7b737efcd5f01ebdb95c, 0x001fb6 ] } , - BigNum { limbs: [ 0x652abfd013e1adddd51226fc305a36, 0x5ecc3199d02a86122406bbb3dd183f, 0x0058d8 ] } , - BigNum { limbs: [ 0x5879432fea7a51222aedd803cfa5cb, 0x4886f803ad1dad27b4014dedfaed14, 0x001b15 ] } , - BigNum { limbs: [ 0xf406133d5bcaa5435a2f30de64b8f0, 0x353f2952ccaac9d6b49339924dd6c1, 0x005cb6 ] } , - BigNum { limbs: [ 0xc99defc2a29159bca5d0ce219b4711, 0x7214004ab09d69632374d00f8a2e91, 0x001737 ] } , - BigNum { limbs: [ 0x74a2472d9a3301c9f7d9956c33efa1, 0xb01655fa4c689900cf9da058fd7ff1, 0x0024b3 ] } , - BigNum { limbs: [ 0x4901bbd26428fd3608266993cc1060, 0xf73cd3a330df9a39086a6948da8562, 0x004f39 ] } , - BigNum { limbs: [ 0xb6269c66cd9ea74aea456e92403ed8, 0x43872bda1625e247909bd09f25d090, 0x004e02 ] } , - BigNum { limbs: [ 0x077d669930bd57b515ba906dbfc129, 0x63cbfdc3672250f2476c3902b234c3, 0x0025eb ] } , - BigNum { limbs: [ 0x5a0013f5f09b115a91acc63e34dd72, 0x59860918371f0f37ba376d671b8c6c, 0x003671 ] } , - BigNum { limbs: [ 0x63a3ef0a0dc0eda56e5338c1cb228f, 0x4dcd2085462924021dd09c3abc78e7, 0x003d7c ] } , - BigNum { limbs: [ 0xa5ac77f6c4fb7b12641cc0cf09d557, 0xf1027f92360b275ff16089e8022e89, 0x000083 ] } , - BigNum { limbs: [ 0x17f78b09396083ed9be33e30f62aaa, 0xb650aa0b473d0bd9e6a77fb9d5d6ca, 0x007369 ] } , - BigNum { limbs: [ 0x09f7a1f066ddcb5a2eedfa20412664, 0xec07e6ce5e0d9829ecc1055c9c50c8, 0x002d0d ] } , - BigNum { limbs: [ 0xb3ac610f977e33a5d11204dfbed99d, 0xbb4b42cf1f3a9b0feb4704453bb48b, 0x0046df ] } , - BigNum { limbs: [ 0x67f6a0a3e63ca99f9a43275fe3cf0f, 0x2f38ad7b4399aabfa1b7d99197e71d, 0x002492 ] } , - BigNum { limbs: [ 0x55ad625c181f556065bcd7a01c30f2, 0x781a7c2239ae887a36503010401e36, 0x004f5b ] } , - BigNum { limbs: [ 0x7bb64e7fe7ea4b78aacbac1829e88a, 0xd4b784d73e60cdf1026306ef8e1d62, 0x000623 ] } , - BigNum { limbs: [ 0x41edb4801671b387553452e7d61777, 0xd29ba4c63ee76548d5a502b249e7f1, 0x006dc9 ] } , - BigNum { limbs: [ 0xf9a997ed4aa4b03748f531630f279c, 0x7b3bd3bf0cda72ab9d67d68c0d8aef, 0x003889 ] } , - BigNum { limbs: [ 0xc3fa6b12b3b74ec8b70acd9cf0d865, 0x2c1755de706dc08e3aa03315ca7a63, 0x003b64 ] } , - BigNum { limbs: [ 0xce3b00be1eb868c317059dd88012e7, 0x5bb41e2b5e9673b0cf9669bfeb9c09, 0x00155d ] } , - BigNum { limbs: [ 0xef690241dfa3963ce8fa61277fed1a, 0x4b9f0b721eb1bf8908719fe1ec6949, 0x005e90 ] } , - BigNum { limbs: [ 0xd612399cd1fd5bf9319c49ec52b321, 0xc39882e88d1c2cb02a551099a84ef3, 0x0025b6 ] } , - BigNum { limbs: [ 0xe791c9632c5ea306ce63b513ad4ce0, 0xe3baa6b4f02c0689adb2f9082fb65f, 0x004e36 ] } , - BigNum { limbs: [ 0xb0c5c8e83264e0a09dd4dfaf26022f, 0x7a6158bba26d2f24766227892c1715, 0x0053eb ] } , - BigNum { limbs: [ 0x0cde3a17cbf71e5f622b1f50d9fdd2, 0x2cf1d0e1dadb041561a5e218abee3e, 0x002002 ] } , - BigNum { limbs: [ 0x6a25bf2718d0db8d07a435743bf1a7, 0xbcab553742f7fd698182e76a0e2c30, 0x004f6b ] } , - BigNum { limbs: [ 0x537e43d8e58b2372f85bc98bc40e5a, 0xeaa7d4663a5035d056852237c9d923, 0x002481 ] } , - BigNum { limbs: [ 0x75f111bb6910eaf442e76e4498fa1a, 0xa7d84eb54da1ddaa7c1f2496515ebd, 0x005ce5 ] } , - BigNum { limbs: [ 0x47b2f144954b140bbd1890bb6705e7, 0xff7adae82fa6558f5be8e50b86a696, 0x001707 ] } , - BigNum { limbs: [ 0xd7230d2501faab5ece55ee029cd201, 0x9406fabda4e4250a808af9ae504cad, 0x0013fa ] } , - BigNum { limbs: [ 0xe680f5dafc6153a131aa10fd632e00, 0x134c2edfd8640e2f577d0ff387b8a5, 0x005ff3 ] } , - BigNum { limbs: [ 0x6ad2e042aad2a71b34ffc9d3de0eee, 0x3bbcaf9ab4fca968ad8109348066b2, 0x004c15 ] } , - BigNum { limbs: [ 0x52d122bd538957e4cb00352c21f113, 0x6b967a02c84b89d12a87006d579ea1, 0x0027d8 ] } , - BigNum { limbs: [ 0x5d3a47398b9f28c039180b85a4d960, 0x945afd93f458b16fb2ba629de4ed9c, 0x0047a3 ] } , - BigNum { limbs: [ 0x6069bbc672bcd63fc6e7f37a5b26a1, 0x12f82c0988ef81ca254da703f317b7, 0x002c4a ] } , - BigNum { limbs: [ 0x689692eb7b25966053559a2c9ef52c, 0x9fdecf31f40bf5a1cb2d5615368f49, 0x0070f5 ] } , - BigNum { limbs: [ 0x550d70148336689facaa64d3610ad5, 0x07745a6b893c3d980cdab38ca1760a, 0x0002f8 ] } , - BigNum { limbs: [ 0xf39ff25e34baf49d3ef8f5d59aca9e, 0x1d9e09417b9afc4ecd345253d5e766, 0x004945 ] } , - BigNum { limbs: [ 0xca0410a1c9a10a62c107092a653563, 0x89b5205c01ad36eb0ad3b74e021dec, 0x002aa8 ] } , - BigNum { limbs: [ 0xb79c3943ac1fcd8bd220a010b2b157, 0x1e350be857b08979233122f597fc09, 0x005e90 ] } , - BigNum { limbs: [ 0x0607c9bc523c31742ddf5eef4d4eaa, 0x891e1db52597a9c0b4d6e6ac40094a, 0x00155d ] } , - BigNum { limbs: [ 0xe2c65bfd04bf58dca8b817dba3570e, 0x0eb6f8267379fbd7fb64711a3fa064, 0x000bf8 ] } , - BigNum { limbs: [ 0xdadda702f99ca6235747e7245ca8f3, 0x989c317709ce3761dca398879864ee, 0x0067f5 ] } , - BigNum { limbs: [ 0x96d8c9d06188845ddc8e88c84d5c67, 0x2ba716e37086ea162629ac9c880f86, 0x006b41 ] } , - BigNum { limbs: [ 0x26cb392f9cd37aa223717637b2a39a, 0x7bac12ba0cc14923b1de5d054ff5cd, 0x0008ac ] } , - BigNum { limbs: [ 0xf146c793cf473ede1a5241284ba49a, 0xfdfbe50f1c4ce4654e3ebec5e91f08, 0x002fb4 ] } , - BigNum { limbs: [ 0xcc5d3b6c2f14c021e5adbdd7b45b67, 0xa957448e60fb4ed489c94adbeee64a, 0x004438 ] } , - BigNum { limbs: [ 0x0061d8df8ef094de5ffe6221755cbf, 0x5955edf50e27e2e55483e50308938f, 0x005c61 ] } , - BigNum { limbs: [ 0xbd422a206f6b6a21a0019cde8aa342, 0x4dfd3ba86f2050548384249ecf71c4, 0x00178c ] } , - BigNum { limbs: [ 0xf1588f7d54fa38fbd323adf49ef38c, 0x7037c1b7cb64c9862b3109914410b1, 0x0030cf ] } , - BigNum { limbs: [ 0xcc4b7382a961c6042cdc510b610c75, 0x371b67e5b1e369b3acd7001093f4a1, 0x00431e ] } , - BigNum { limbs: [ 0x4dd20117088fbe5c501a4cf6b03ed9, 0xa8ec0db5c210c27b9feaec4c8daa13, 0x005b2d ] } , - BigNum { limbs: [ 0x6fd201e8f5cc40a3afe5b2094fc128, 0xfe671be7bb3770be381d1d554a5b40, 0x0018bf ] } , - BigNum { limbs: [ 0xcd7e27c7c354fbf3a6b645601f30e9, 0x7e18302ac1414cb500e92e068f3c57, 0x001ed9 ] } , - BigNum { limbs: [ 0xf025db383b07030c5949b99fe0cf18, 0x293af972bc06e684d71edb9b48c8fb, 0x005514 ] } , - BigNum { limbs: [ 0x884138fa5c39749e9af296f4759a6c, 0x0c75d9017e950e72cf85870542bcd2, 0x00345e ] } , - BigNum { limbs: [ 0x3562ca05a2228a61650d680b8a6595, 0x9add509bfeb324c70882829c954881, 0x003f8f ] } , - BigNum { limbs: [ 0x5267d1c55501107d09bae2f00261b6, 0x39cbc2fce90de30b74e346514dc7f6, 0x005605 ] } , - BigNum { limbs: [ 0x6b3c313aa95aee82f6451c0ffd9e4b, 0x6d8766a0943a502e6324c3508a3d5d, 0x001de8 ] } , - BigNum { limbs: [ 0x58571af014fb7c5e1bc554847de159, 0xb027976d188774d04895a5c048349a, 0x004725 ] } , - BigNum { limbs: [ 0x654ce80fe96082a1e43aaa7b821ea8, 0xf72b923064c0be698f7263e18fd0b9, 0x002cc7 ] } , - BigNum { limbs: [ 0x68f56a0dbafbccb765983579922754, 0xc281fdaa0ce70dd9b615c0da4778f8, 0x001577 ] } , - BigNum { limbs: [ 0x54ae98f2436032489a67c9866dd8ad, 0xe4d12bf37061256021f248c7908c5b, 0x005e75 ] } , - BigNum { limbs: [ 0x390c063b61515af4bd62c61cada647, 0x0db0bccb91d3f2ffc4c766cb3649ef, 0x003f78 ] } , - BigNum { limbs: [ 0x8497fcc49d0aa40b429d38e35259ba, 0x99a26cd1eb74403a1340a2d6a1bb64, 0x003475 ] } , - BigNum { limbs: [ 0x81bd34f2699504d50c4e98120cdefd, 0xc9cc335251efe65d6b3c179cef6bd1, 0x003b80 ] } , - BigNum { limbs: [ 0x3be6ce0d94c6fa2af3b166edf32104, 0xdd86f64b2b584cdc6ccbf204e89982, 0x00386c ] } , - BigNum { limbs: [ 0xbf80faba84c8baabe2d2dc178be06c, 0xef347d1311b4421bf5e873a415ff19, 0x005a49 ] } , - BigNum { limbs: [ 0xfe230845799344541d2d22e8741f95, 0xb81eac8a6b93f11de21f95fdc20639, 0x0019a3 ] } , - BigNum { limbs: [ 0xbf169edf84aae71d467bea820605f5, 0x52f2fa1b856d55858eae83d3485a96, 0x004d63 ] } , - BigNum { limbs: [ 0xfe8d642079b117e2b984147df9fa0c, 0x54602f81f7daddb4495985ce8faabc, 0x00268a ] } , - BigNum { limbs: [ 0x1193fea88d9b73739f00822e34bb4a, 0x52c66a80b4b7d9d2886b1f6c306d07, 0x004f98 ] } , - BigNum { limbs: [ 0xac10045770c08b8c60ff7cd1cb44b7, 0x548cbf1cc89059674f9cea35a7984c, 0x002455 ] } , - BigNum { limbs: [ 0x872121227052105e4099f61a0fdfa0, 0x5dec50398d08443b87e30d1a49e37e, 0x00039b ] } , - BigNum { limbs: [ 0x3682e1dd8e09eea1bf6608e5f02061, 0x4966d963f03feefe5024fc878e21d5, 0x007052 ] } , - BigNum { limbs: [ 0x8f9ed648b5863e3fb520bbb4b1f602, 0xb4974317a16598980d416fff7671c6, 0x005262 ] } , - BigNum { limbs: [ 0x2e052cb748d5c0c04adf434b4e09ff, 0xf2bbe685dbe29aa1cac699a261938d, 0x00218a ] } , - BigNum { limbs: [ 0x507b618a0393d78c417c33ffdeca80, 0xa1b183c913bad44ff7774d083e02f2, 0x004cdd ] } , - BigNum { limbs: [ 0x6d28a175fac82773be83cb00213581, 0x05a1a5d4698d5ee9e090bc999a0261, 0x002710 ] } , - BigNum { limbs: [ 0xf68931f0e1a6802c786836995d2cdd, 0x4d135b59eaa27cd5bb18e2c41ce742, 0x001fb3 ] } , - BigNum { limbs: [ 0xc71ad10f1cb57ed38797c866a2d324, 0x5a3fce4392a5b6641cef26ddbb1e10, 0x00543a ] } , - BigNum { limbs: [ 0x82958410dbd8601ba80c56cca4836c, 0x2992a46c85584f96b2f249b8d371f3, 0x0069af ] } , - BigNum { limbs: [ 0x3b0e7eef22839ee457f3a8335b7c95, 0x7dc08530f7efe3a32515bfe9049360, 0x000a3e ] } , - BigNum { limbs: [ 0xbc96f152857581148241dca8af9765, 0xe58499b8083582a2eec09391da9381, 0x005f74 ] } , - BigNum { limbs: [ 0x010d11ad78e67deb7dbe225750689c, 0xc1ce8fe57512b096e947760ffd71d2, 0x001478 ] } , - BigNum { limbs: [ 0xb028c2fb9c7f475961cac72b144310, 0xaeec0c5d2514cfc5fb2c96fc930c8c, 0x006941 ] } , - BigNum { limbs: [ 0x0d7b400461dcb7a69e3537d4ebbcf1, 0xf8671d4058336373dcdb72a544f8c7, 0x000aab ] } , - BigNum { limbs: [ 0x00ee8af06f8295cd4e7f66999a9d5d, 0xe9e136da92e82601031434b768b0b4, 0x003196 ] } , - BigNum { limbs: [ 0xbcb5780f8ed96932b18098666562a4, 0xbd71f2c2ea600d38d4f3d4ea6f549f, 0x004256 ] } , - BigNum { limbs: [ 0x84d28eab79ecc6be0b628a8caa8f17, 0x90f36c44b79fbddc1274822e776645, 0x007000 ] } , - BigNum { limbs: [ 0x38d17454846f3841f49d74735570ea, 0x165fbd58c5a8755dc5938773609f0e, 0x0003ed ] } , - BigNum { limbs: [ 0xc0eaec39d77b1543d609e7c548f49c, 0x6a4bef01277a5adb35e4ada38abd4e, 0x001892 ] } , - BigNum { limbs: [ 0xfcb916c626e0e9bc29f6173ab70b65, 0x3d073a9c55cdd85ea2235bfe4d4804, 0x005b5b ] } , - BigNum { limbs: [ 0xfa2868e203acbd6c8db30fd92b4d87, 0x0b2994a75f36d49ace76c23633120c, 0x00290a ] } , - BigNum { limbs: [ 0xc37b9a1dfaaf4193724cef26d4b27a, 0x9c2994f61e115e9f0991476ba4f346, 0x004ae3 ] } , - BigNum { limbs: [ 0x8629db93e208d53efe71a07d7bd9e3, 0xcf4867cedd66bddda42e03ff6e3c43, 0x001fef ] } , - BigNum { limbs: [ 0x377a276c1c5329c1018e5e8284261e, 0xd80ac1ce9fe1755c33da05a269c910, 0x0053fd ] } , - BigNum { limbs: [ 0x77c7de2400a37e39e9c4369a227407, 0x1707f8ce66d560149d58cdb2ea0e53, 0x0040ef ] } , - BigNum { limbs: [ 0x45dc24dbfdb880c6163bc865dd8bfa, 0x904b30cf1672d3253aaf3beeedf700, 0x0032fe ] } , - BigNum { limbs: [ 0x038de285af828ba4c94db292287758, 0x61483b9bfc1053f394179b89f4c3bd, 0x0058f6 ] } , - BigNum { limbs: [ 0xba16207a4ed9735b36b24c6dd788a9, 0x460aee018137df4643f06e17e34196, 0x001af7 ] } , - BigNum { limbs: [ 0x6d5251db59ceba5331484331b33c6c, 0x5da934aae20e330e175a52a4170eef, 0x000422 ] } , - BigNum { limbs: [ 0x5051b124a48d44acceb7bbce4cc395, 0x49a9f4f29b3a002bc0adb6fdc0f664, 0x006fcb ] } , - BigNum { limbs: [ 0xe0bd10cddb648736b42261c538f92f, 0x25f8242967a050dd051ee286b0f015, 0x006f98 ] } , - BigNum { limbs: [ 0xdce6f23222f777c94bdd9d3ac706d2, 0x815b057415a7e25cd2e9271b27153d, 0x000455 ] } , - BigNum { limbs: [ 0x576cc833e78378312250dd18803aea, 0xfdc18ad866ddad6ad778d8bf584693, 0x00633c ] } , - BigNum { limbs: [ 0x66373acc16d886ceddaf21e77fc517, 0xa9919ec5166a85cf008f30e27fbec0, 0x0010b0 ] } , - BigNum { limbs: [ 0xee460732127a7b191df927420054b8, 0x925f5a3508e397dbf67215eace13e3, 0x0066e4 ] } , - BigNum { limbs: [ 0xcf5dfbcdebe183e6e206d7bdffab49, 0x14f3cf6874649b5de195f3b709f16f, 0x000d09 ] } , - BigNum { limbs: [ 0x5b95d4fb4f1f478b29f850793eca34, 0x6fb8ced65c418b45fe191aff57c67b, 0x0053bb ] } , - BigNum { limbs: [ 0x620e2e04af3cb774d607ae86c135cd, 0x379a5ac72106a7f3d9eeeea2803ed8, 0x002032 ] } , - BigNum { limbs: [ 0xff1a7f48766b64c025e947fc51862a, 0xe32cb3c01c0cfeb0259c57826bdfc3, 0x001d12 ] } , - BigNum { limbs: [ 0xbe8983b787f09a3fda16b703ae79d7, 0xc42675dd613b3489b26bb21f6c258f, 0x0056da ] } , - BigNum { limbs: [ 0x6f1071ab3e1fa6f533d4a00ade90a0, 0x141eb30243d3588a4a9a1de181f035, 0x005540 ] } , - BigNum { limbs: [ 0x4e939154c03c580acc2b5ef5216f61, 0x9334769b3974daaf8d6debc056151e, 0x001ead ] } , - BigNum { limbs: [ 0x52721fdee87e6c6693e659a973980d, 0x540b388a4dfb14e1db399e9bdf01d3, 0x003d26 ] } , - BigNum { limbs: [ 0x6b31e32115dd92996c19a5568c67f4, 0x5347f1132f4d1e57fcce6b05f90380, 0x0036c7 ] } , - BigNum { limbs: [ 0xcae63648f3ed07f63435a3859a554f, 0xea4e31a6c8de5f5bd8f365861a6780, 0x003cfb ] } , - BigNum { limbs: [ 0xf2bdccb70a6ef709cbca5b7a65aab2, 0xbd04f7f6b469d3ddff14a41bbd9dd2, 0x0036f1 ] } , - BigNum { limbs: [ 0x56b2c7e548f3a2273238ea947f8dfd, 0x12e979c354cdf32736645b9577588a, 0x00241b ] } , - BigNum { limbs: [ 0x66f13b1ab5685cd8cdc7146b807204, 0x9469afda287a4012a1a3ae0c60acc9, 0x004fd2 ] } , - BigNum { limbs: [ 0x45504c949c86defc8d1abfab70731e, 0x1f84fec8e50405dbd67580fea06de5, 0x0038ea ] } , - BigNum { limbs: [ 0x7853b66b61d5200372e53f548f8ce3, 0x87ce2ad498442d5e019288a337976e, 0x003b03 ] } , - BigNum { limbs: [ 0x4ce40f50b8403e35ce3bdd58ac1061, 0x01152c187d9972a92b80782a5fd1f8, 0x001d38 ] } , - BigNum { limbs: [ 0x70bff3af461bc0ca31c421a753efa0, 0xa63dfd84ffaec090ac87917778335b, 0x0056b5 ] } , - BigNum { limbs: [ 0xf86cc4363627c3e1b35b2631dd61cb, 0x4a308f9944ca96dc7de6bc9d4f1463, 0x002e8f ] } , - BigNum { limbs: [ 0xc5373ec9c8343b1e4ca4d8ce229e36, 0x5d229a04387d9c5d5a214d0488f0ef, 0x00455e ] } , - BigNum { limbs: [ 0x5fd614efd2205680d0b70b14a2772e, 0x0027318cdd69f2df7bbe0bd155bfd3, 0x00600f ] } , - BigNum { limbs: [ 0x5dcdee102c3ba87f2f48f3eb5d88d3, 0xa72bf8109fde405a5c49fdd0824580, 0x0013de ] } , - BigNum { limbs: [ 0xeb21a28c003fc16abeebd0b41405ce, 0x1bb8717e4be60c00dc90fe325a5455, 0x0010cc ] } , - BigNum { limbs: [ 0xd2826073fe1c3d9541142e4bebfa33, 0x8b9ab81f31622738fb770b6f7db0fd, 0x006321 ] } , - BigNum { limbs: [ 0x974e5e0d574aab43e9bdb5370951b5, 0xb9b3ad9246e1d77825ea593b657667, 0x0050e2 ] } , - BigNum { limbs: [ 0x2655a4f2a71153bc164249c8f6ae4c, 0xed9f7c0b36665bc1b21db066728eec, 0x00230a ] } , - BigNum { limbs: [ 0x75e1775600f121bbaca7e9d0161cf3, 0x59dd69a4c0c3e65f63afefdb3173c0, 0x00726b ] } , - BigNum { limbs: [ 0x47c28ba9fd6add445358152fe9e30e, 0x4d75bff8bc844cda745819c6a69193, 0x000182 ] } , - BigNum { limbs: [ 0xd0d82aeb2455759bab4eda84a8ac63, 0xc8e232a4decc97c175c5f45f115771, 0x00472a ] } , - BigNum { limbs: [ 0xeccbd814da06896454b1247b57539e, 0xde70f6f89e7b9b7862421542c6ade1, 0x002cc2 ] } , - BigNum { limbs: [ 0x28caa1b4f5dcc2e67ffba41b4878de, 0xcdd90cbc7967b4cb7255c2e484d53e, 0x002f0f ] } , - BigNum { limbs: [ 0x94d9614b087f3c1980045ae4b78723, 0xd97a1ce103e07e6e65b246bd533015, 0x0044dd ] } , - BigNum { limbs: [ 0x6ba83974d45c4463a5bcaa4445a757, 0x6aa063a7fea280cebabe1727cf1ffc, 0x0034b0 ] } , - BigNum { limbs: [ 0x51fbc98b29ffba9c5a4354bbba58aa, 0x3cb2c5f57ea5b26b1d49f27a08e557, 0x003f3d ] } , - BigNum { limbs: [ 0x5bc8e5e46250f63488caad8a71355d, 0xc3d470f8769b4140bb8cb3c69d796f, 0x001ab2 ] } , - BigNum { limbs: [ 0x61db1d1b9c0b08cb773551758ecaa4, 0xe37eb8a506acf1f91c7b55db3a8be4, 0x00593a ] } , - BigNum { limbs: [ 0x795678cfd1ce5591c84045b8ae1a73, 0x40c27b793e4ebc4325c5e1c47b5300, 0x00152d ] } , - BigNum { limbs: [ 0x444d8a302c8da96e37bfb94751e58e, 0x6690ae243ef976f6b24227dd5cb253, 0x005ec0 ] } , - BigNum { limbs: [ 0x7fa63cff661af7325cd87e588070a2, 0x060090169c5a7d5c39dacbd0b17daa, 0x00453b ] } , - BigNum { limbs: [ 0x3dfdc600984107cda32780a77f8f5f, 0xa1529986e0edb5dd9e2d3dd12687a9, 0x002eb2 ] } , - BigNum { limbs: [ 0x991aceb5b8f0b7351de1c328eaf50a, 0xbd4e055e35513b5e6f88531447da88, 0x001c9c ] } , - BigNum { limbs: [ 0x2489344a456b47cae21e3bd7150af7, 0xea05243f47f6f7db687fb68d902acb, 0x005750 ] } , - BigNum { limbs: [ 0xf39e5ca57cc17d729a0d7b69f39b0b, 0xaa8cb19984ed95a7e2d7812ca75df1, 0x0027b6 ] } , - BigNum { limbs: [ 0xca05a65a819a818d65f283960c64f6, 0xfcc67803f85a9d91f530887530a761, 0x004c36 ] } , - BigNum { limbs: [ 0x616a02d0b6703ad2f896d315ba0c6b, 0x0158e6b2c1a2d1ff7b686e6fa6419d, 0x00025b ] } , - BigNum { limbs: [ 0x5c3a002f47ebc42d07692bea45f396, 0xa5fa42eabba5613a5c9f9b3231c3b6, 0x007192 ] } , - BigNum { limbs: [ 0xd0b955fd626f8216bc064d99f44e58, 0x4d53dabfd281345366eb688bd119b2, 0x005d95 ] } , - BigNum { limbs: [ 0xeceaad029bec7ce943f9b1660bb1a9, 0x59ff4eddaac6fee6711ca11606eba0, 0x001658 ] } , - BigNum { limbs: [ 0x9c14e52bc510a84b6ac1bcc463fb21, 0x2051920a9bdd4ea23a4aa97e1e90db, 0x002a7d ] } , - BigNum { limbs: [ 0x218f1dd4394b56b4953e423b9c04e0, 0x87019792e16ae4979dbd6023b97478, 0x004970 ] } , - BigNum { limbs: [ 0x85accfbc474212121ea1319f4c209c, 0x45072395009186090b2f1559eafd49, 0x001a33 ] } , - BigNum { limbs: [ 0x37f73343b719ecede15ecd60b3df65, 0x624c06087cb6ad30ccd8f447ed080a, 0x0059ba ] } , - BigNum { limbs: [ 0x77273c168c4afecd3a13164faa1758, 0x448036ea67a81e009a3bc645424619, 0x007179 ] } , - BigNum { limbs: [ 0x467cc6e972110032c5ece8b055e8a9, 0x62d2f2b315a015393dcc435c95bf3a, 0x000274 ] } , - BigNum { limbs: [ 0xfb0fe542131cff79443d7ce5836ab4, 0x58f3481488a9e3b1e0051d79650c14, 0x003025 ] } , - BigNum { limbs: [ 0xc2941dbdeb3eff86bbc2821a7c954d, 0x4e5fe188f49e4f87f802ec2872f93e, 0x0043c8 ] } , - BigNum { limbs: [ 0x6a8e4feaf68d462d556c078f463720, 0x164c3b63394b20b1c9a919c629da9d, 0x002852 ] } , - BigNum { limbs: [ 0x5315b31507ceb8d2aa93f770b9c8e1, 0x9106ee3a43fd12880e5eefdbae2ab6, 0x004b9b ] } , - BigNum { limbs: [ 0xf1d1e1ee7c5d6abf88187f0cefb20c, 0xfd01910f25effbe45bccaae3d95c6a, 0x001326 ] } , - BigNum { limbs: [ 0xcbd2211181fe944077e77ff3104df5, 0xaa51988e575837557c3b5ebdfea8e8, 0x0060c6 ] } , - BigNum { limbs: [ 0xd5b9a214819d3df400587e7902066a, 0xb136ddd3155c5d55da3642c5ab1acc, 0x001470 ] } , - BigNum { limbs: [ 0xe7ea60eb7cbec10bffa78086fdf997, 0xf61c4bca67ebd5e3fdd1c6dc2cea86, 0x005f7c ] } , - BigNum { limbs: [ 0x0fc0d3ae1aa2d1484cdb4a155aaa58, 0xae33d68783f3051e4221527d0a2065, 0x006b37 ] } , - BigNum { limbs: [ 0xade32f51e3b92db7b324b4eaa555a9, 0xf91f5315f9552e1b95e6b724cde4ee, 0x0008b5 ] } , - BigNum { limbs: [ 0xc4ff9cf2d729fef74bd60178700563, 0x29d7d5f229224f89c41c27748d079e, 0x003ceb ] } , - BigNum { limbs: [ 0xf8a4660d27320008b429fd878ffa9e, 0x7d7b53ab5425e3b013ebe22d4afdb4, 0x003702 ] } , - BigNum { limbs: [ 0xea02fae48098b68635281af47fd8ad, 0xf5e9dbbb9e4a6986d249c9701d557b, 0x0026a0 ] } , - BigNum { limbs: [ 0xd3a1081b7dc34879cad7e40b802754, 0xb1694de1defdc9b305be4031baafd7, 0x004d4c ] } , - BigNum { limbs: [ 0x02561f7d23ef1264986d880916d32c, 0x25a175e388babcfb00df37a0949d0e, 0x00260b ] } , - BigNum { limbs: [ 0xbb4de382da6cec9b679276f6e92cd5, 0x81b1b3b9f48d763ed728d201436845, 0x004de2 ] } , - BigNum { limbs: [ 0xbefc6e3f1d854a96bf0e6143e7a4be, 0xbd844b3abbbc9faabcffc9f0533fe4, 0x007284 ] } , - BigNum { limbs: [ 0xfea794c0e0d6b46940f19dbc185b43, 0xe9cede62c18b938f1b083fb184c56e, 0x000168 ] } , - BigNum { limbs: [ 0x0faf9d413f633214052a7687ecf4c4, 0xe3bd53a46b952f6b110f047b7d5739, 0x002f82 ] } , - BigNum { limbs: [ 0xadf465bebef8ccebfad58878130b3d, 0xc395d5f911b303cec6f905265aae1a, 0x00446a ] } , - BigNum { limbs: [ 0x1e86284e29617c6cd5143e69a5bdff, 0xb3e386e8ff6cd8c61121b609d38b03, 0x007088 ] } , - BigNum { limbs: [ 0x9f1ddab1d4fa82932aebc0965a4202, 0xf36fa2b47ddb5a73c6e65398047a50, 0x000364 ] } , - BigNum { limbs: [ 0xf63a085bbe2cd5c3ceb69a02bbf738, 0x22b6914a019b6d86e16b5c842a1f07, 0x005c72 ] } , - BigNum { limbs: [ 0xc769faa4402f293c314964fd4408c9, 0x849c98537bacc5b2f69cad1dade64b, 0x00177b ] } , - BigNum { limbs: [ 0x446da37ee104956d95c3f201bffa3e, 0x2db01167b5656686f2ee9c93ecd9ae, 0x003b89 ] } , - BigNum { limbs: [ 0x79365f811d5769926a3c0cfe4005c3, 0x79a31835c7e2ccb2e5196d0deb2ba5, 0x003864 ] } , - BigNum { limbs: [ 0x4fafbcc6ec0cd357e41926122589c9, 0x40cf15dd6368efc528f51ee23fdcc0, 0x000466 ] } , - BigNum { limbs: [ 0x6df44639124f2ba81be6d8edda7638, 0x668413c019df4374af12eabf982893, 0x006f87 ] } , - BigNum { limbs: [ 0x79fafb3f5f55fad82cd67c85567002, 0xeefc67e8504eea0cd3cbdb2d08e238, 0x003ea1 ] } , - BigNum { limbs: [ 0x43a907c09f060427d329827aa98fff, 0xb856c1b52cf9492d043c2e74cf231b, 0x00354b ] } , - BigNum { limbs: [ 0x03e470451674007695d27fd2fee785, 0x97ff52d8313ef19051e9ad2f273030, 0x007176 ] } , - BigNum { limbs: [ 0xb9bf92bae7e7fe896a2d7f2d01187c, 0x0f53d6c54c0941a9861e5c72b0d523, 0x000277 ] } , - BigNum { limbs: [ 0xa2966253c4c42767006b5a67069fea, 0x342df5bfce2e228919530ab9368eb6, 0x000bec ] } , - BigNum { limbs: [ 0x1b0da0ac3997d798ff94a498f96017, 0x732533ddaf1a10b0beb4fee8a1769d, 0x006801 ] } , - BigNum { limbs: [ 0x96e0f32404a1c9ff3b116ecd50336d, 0x96f6a673d6b2d68d08f22c00ff5850, 0x0043ee ] } , - BigNum { limbs: [ 0x26c30fdbf9ba3500c4ee9032afcc94, 0x105c8329a6955caccf15dda0d8ad03, 0x002fff ] } , - BigNum { limbs: [ 0x9a3970c682e5ca65f0f59f60448c4a, 0x38d2e2bdd570825e310ae003a7c836, 0x00672b ] } , - BigNum { limbs: [ 0x236a92397b76349a0f0a5f9fbb73b7, 0x6e8046dfa7d7b0dba6fd299e303d1d, 0x000cc2 ] } , - BigNum { limbs: [ 0x821f42c6a8f8b162502ca5c43ef99c, 0x2caa9a98600ac4f1f0bfebe4674e1b, 0x0024b3 ] } , - BigNum { limbs: [ 0x3b84c03955634d9dafd3593bc10665, 0x7aa88f051d3d6e47e7481dbd70b738, 0x004f3a ] } , - BigNum { limbs: [ 0xb30b386db1c3ab3206626a98fa1d9c, 0xef32bfda0292d34160996c56d80441, 0x004885 ] } , - BigNum { limbs: [ 0x0a98ca924c9853cdf99d946705e265, 0xb82069c37ab55ff8776e9d4b000112, 0x002b67 ] } , - BigNum { limbs: [ 0x6d40e40f75f4714fc4876bfdbec485, 0xd9e82da96ed0f5349fc357ca134467, 0x002e8e ] } , - BigNum { limbs: [ 0x50631ef088678db03b789302413b7c, 0xcd6afbf40e773e053844b1d7c4c0ec, 0x00455e ] } , - BigNum { limbs: [ 0xab2a28bc1a67a3e121a2157e140709, 0xd8b424faf036d46d88f1825bc65411, 0x006638 ] } , - BigNum { limbs: [ 0x1279da43e3f45b1ede5de981ebf8f8, 0xce9f04a28d115ecc4f16874611b142, 0x000db4 ] } , - BigNum { limbs: [ 0x2bbf84c8922da39008296d4ce674de, 0xbf321096e64bd5cb0b6d859bf7af2a, 0x0022b9 ] } , - BigNum { limbs: [ 0x91e47e376c2e5b6ff7d691b3198b23, 0xe821190696fc5d6ecc9a8405e05629, 0x005133 ] } , - BigNum { limbs: [ 0xf87b21e445689c444c101276c0d6b2, 0x9722ff6e4389c6193e3d606f8bae7a, 0x001d74 ] } , - BigNum { limbs: [ 0xc528e11bb8f362bbb3efec893f294f, 0x10302a2f39be6d2099caa9324c56d8, 0x005679 ] } , - BigNum { limbs: [ 0xe5677e12d7fdae688163b978201af9, 0x33b4a59d415bba9eeab1548a339c68, 0x007377 ] } , - BigNum { limbs: [ 0xd83c84ed265e50977e9c4587dfe508, 0x739e84003bec789aed56b517a468ea, 0x000076 ] } , - BigNum { limbs: [ 0x9a479cf2311426840eb2f9317fb817, 0xb7ce9c4a0ddd37396661f4b1338e47, 0x000fb0 ] } , - BigNum { limbs: [ 0x235c660dcd47d87bf14d05ce8047ea, 0xef848d536f6afc0071a614f0a4770c, 0x00643c ] } , - BigNum { limbs: [ 0x3e8532cebebdef1eaf415a7072e217, 0xc63b4d0b4485938016bdfb5461cb53, 0x004f23 ] } , - BigNum { limbs: [ 0x7f1ed0313f9e0fe150bea48f8d1dea, 0xe117dc9238c29fb9c14a0e4d763a00, 0x0024c9 ] } , - BigNum { limbs: [ 0x3c2ae3c59b53b9b3ae44e7cb60f87e, 0xc7115960bc307fd1f7ee628144edd0, 0x0056bf ] } , - BigNum { limbs: [ 0x81791f3a6308454c51bb17349f0783, 0xe041d03cc117b367e019a720931783, 0x001d2d ] } , - BigNum { limbs: [ 0xf9e9ef2dab9b1670e7afef7c69a573, 0x433df099fdd1141e5457db3a858b05, 0x001e37 ] } , - BigNum { limbs: [ 0xc3ba13d252c0e88f18500f83965a8e, 0x641539037f771f1b83b02e67527a4d, 0x0055b6 ] } , - BigNum { limbs: [ 0x68a15b851828cf599ffdaa5828ab43, 0x5a76f2a4f9373d621818d2c39c8d1f, 0x00716f ] } , - BigNum { limbs: [ 0x5502a77ae6332fa6600254a7d754be, 0x4cdc36f88410f5d7bfef36de3b7834, 0x00027e ] } , - BigNum { limbs: [ 0x306235854ce6c058cfc39bead3e9c1, 0x5d30925b46ce8455249678a7313d7e, 0x00245c ] } , - BigNum { limbs: [ 0x8d41cd7ab1753ea7303c63152c1640, 0x4a2297423679aee4b37190faa6c7d5, 0x004f91 ] } , - BigNum { limbs: [ 0x35d85fba3cf6739bd8edbd9e625acf, 0x60a4b705db2da3f6c73ae7819e68cb, 0x003c1b ] } , - BigNum { limbs: [ 0x87cba345c1658b64271241619da532, 0x46ae7297a21a8f4310cd2220399c88, 0x0037d2 ] } , - BigNum { limbs: [ 0x97522aac346f55acbc19b9e9811e79, 0x94214cf9539d6046ecb5b3db813c51, 0x004e62 ] } , - BigNum { limbs: [ 0x2651d853c9eca95343e645167ee188, 0x1331dca429aad2f2eb5255c656c902, 0x00258b ] } , - BigNum { limbs: [ 0x6a133219f27c4b46c6f847a6d15a7b, 0xc33cdb958a9cdb339a547401f71630, 0x003e56 ] } , - BigNum { limbs: [ 0x5390d0e60bdfb3b93907b7592ea586, 0xe4164e07f2ab58063db3959fe0ef23, 0x003596 ] } , - BigNum { limbs: [ 0x04f1f91672ddefd059ee663821842d, 0x317283b968e87fee2aa8bb04da4e60, 0x003bdc ] } , - BigNum { limbs: [ 0xb8b209e98b7e0f2fa61198c7de7bd4, 0x75e0a5e4145fb34bad5f4e9cfdb6f3, 0x003811 ] } , - BigNum { limbs: [ 0x4f2d33b0870055dbd33167d427d29c, 0x262813fd1aebfdb5e6174636ee325e, 0x00621d ] } , - BigNum { limbs: [ 0x6e76cf4f775ba9242cce972bd82d65, 0x812b15a0625c3583f1f0c36ae9d2f5, 0x0011d0 ] } , - BigNum { limbs: [ 0x487f2463fba3e20afba5ddb9d9a632, 0x47ac35d9a1b93726d0ae30d44be5b6, 0x005c2e ] } , - BigNum { limbs: [ 0x7524de9c02b81cf5045a21462659cf, 0x5fa6f3c3db8efc130759d8cd8c1f9d, 0x0017bf ] } , - BigNum { limbs: [ 0x578ca4bdcffdfaaf63cac2aa631f1d, 0xe4afdde0bb69b179b89dd0bd9b9403, 0x004aed ] } , - BigNum { limbs: [ 0x66175e422e5e04509c353c559ce0e4, 0xc2a34bbcc1de81c01f6a38e43c7150, 0x0028ff ] } , - BigNum { limbs: [ 0xfc2415d104453e40daadc83f8ccfe2, 0x118ca40bd8269a29dc197173759a0b, 0x0002ae ] } , - BigNum { limbs: [ 0xc17fed2efa16c0bf255236c073301f, 0x95c68591a521990ffbee982e626b47, 0x00713f ] } , - BigNum { limbs: [ 0x863ad646e716596e1f5a12e244baea, 0x7c40f2cf5dcf75ca3f9ac816918bd4, 0x000fd5 ] } , - BigNum { limbs: [ 0x37692cb91745a591e0a5ec1dbb4517, 0x2b1236ce1f78bd6f986d418b46797f, 0x006418 ] } , - BigNum { limbs: [ 0x4969282006d47c6c16853c3840a0de, 0x5f550357b97b68dce2abbcb3941d48, 0x0016cd ] } , - BigNum { limbs: [ 0x743adadff7878293e97ac2c7bf5f23, 0x47fe2645c3ccca5cf55c4cee43e80b, 0x005d20 ] } , - BigNum { limbs: [ 0x9e48bfbae909be6b14bd4c94283139, 0x49ce67bc6827aeadc5ae3427f905f2, 0x000909 ] } , - BigNum { limbs: [ 0x1f5b434515524094eb42b26bd7cec8, 0x5d84c1e11520848c1259d579deff61, 0x006ae4 ] } , - BigNum { limbs: [ 0x43200e4c9c51733e54abcc7fe8b49c, 0x576f19800705eb819e54033c1e5a22, 0x00269f ] } , - BigNum { limbs: [ 0x7a83f4b3620a8bc1ab543280174b65, 0x4fe4101d764247b839b40665b9ab31, 0x004d4e ] } , - BigNum { limbs: [ 0xa6bd0a70c528eb9a612cafe45838a9, 0x5fb3bc9a0f8a1dcb6aa8eccffead1e, 0x0024e8 ] } , - BigNum { limbs: [ 0x16e6f88f393313659ed34f1ba7c758, 0x479f6d036dbe156e6d5f1cd1d95835, 0x004f05 ] } , - BigNum { limbs: [ 0x092fb3730a4a38abbb613cb100e2b7, 0xf911e2710139da2cf40994d2ee391d, 0x00120d ] } , - BigNum { limbs: [ 0xb4744f8cf411c654449ec24eff1d4a, 0xae41472c7c0e590ce3fe74cee9cc36, 0x0061df ] } , - BigNum { limbs: [ 0xa2253f5bc8037e9a47ee7220984b39, 0x61d89f56f16020832570c9e52d88dc, 0x0036a4 ] } , - BigNum { limbs: [ 0x1b7ec3a436588065b8118cdf67b4c8, 0x457a8a468be812b6b2973fbcaa7c77, 0x003d49 ] } , - BigNum { limbs: [ 0x89913932d3c0c7ce1654daec319bfe, 0x19917a4999aa2b8b9e48b90848614c, 0x002d67 ] } , - BigNum { limbs: [ 0x3412c9cd2a9b3731e9ab2413ce6403, 0x8dc1af53e39e07ae39bf50998fa407, 0x004686 ] } , - BigNum { limbs: [ 0x33e245d22b042fdf0ff0e077e600ca, 0x78468f37f795022461abcc7e0370b5, 0x003436 ] } , - BigNum { limbs: [ 0x89c1bd2dd357cf20f00f1e8819ff37, 0x2f0c9a6585b33115765c3d23d4949e, 0x003fb7 ] } , - BigNum { limbs: [ 0xe05db7e375ee86fbd310a26d1cce6c, 0x51d7b5e598bd0f16826188eac00fcc, 0x004e0f ] } , - BigNum { limbs: [ 0xdd464b1c886d78042cef5c92e33195, 0x557b73b7e48b242355a680b717f586, 0x0025de ] } , - BigNum { limbs: [ 0xcfaf6910cde540bb8a3b2ad485b4c9, 0x4729d4a170a178f3d3dbcc6f73fe79, 0x001f0f ] } , - BigNum { limbs: [ 0xedf499ef3076be4475c4d42b7a4b38, 0x602954fc0ca6ba46042c3d326406d9, 0x0054de ] } , - BigNum { limbs: [ 0xc0d0e78fd085783b8197ec325ea3e8, 0xb47ecf33eb1c82990742cf3687d963, 0x001b8b ] } , - BigNum { limbs: [ 0xfcd31b702dd686c47e6812cda15c19, 0xf2d45a69922bb0a0d0c53a6b502bef, 0x005861 ] } , - BigNum { limbs: [ 0x397ea1d516758ddc84002bfb1b01b1, 0xad611232a12aea50b5077b3ffe3fc5, 0x003385 ] } , - BigNum { limbs: [ 0x8425612ae7e671237bffd304e4fe50, 0xf9f2176adc1d48e923008e61d9c58e, 0x004067 ] } , - BigNum { limbs: [ 0x0362f1e803401e44eb0b0b9a3e4a01, 0x4e9674490468fec5cc5a26899d272b, 0x0070b8 ] } , - BigNum { limbs: [ 0xba411117fb1be0bb14f4f365c1b600, 0x58bcb55478df34740bade3183ade28, 0x000335 ] } , - BigNum { limbs: [ 0x1dd7b6248f4fee578fb63e4a768788, 0x132ef74a6587a6a22616bb3764f286, 0x0010c4 ] } , - BigNum { limbs: [ 0x9fcc4cdb6f0c10a87049c0b5897879, 0x9424325317c08c97b1f14e6a7312cd, 0x006329 ] } , - BigNum { limbs: [ 0x1e1a6bfcf82e1e2c455e524b1a4f0c, 0x9e48c18c6db7a093a40ba4d2e2e399, 0x000e02 ] } , - BigNum { limbs: [ 0x9f899703062de0d3baa1acb4e5b0f5, 0x090a68110f9092a633fc64cef521ba, 0x0065eb ] } , - BigNum { limbs: [ 0xe4341032732cd0b8d349e52553b42f, 0x98256d5409c63f2802e90233939e74, 0x001cb3 ] } , - BigNum { limbs: [ 0xd96ff2cd8b2f2e472cb619daac4bd2, 0x0f2dbc497381f411d51f076e4466de, 0x00573a ] } , - BigNum { limbs: [ 0x0557aeb787b2377655734c979c6933, 0x0421ed19688e75854acd974b777ea3, 0x000631 ] } , - BigNum { limbs: [ 0xb84c544876a9c789aa8cb2686396ce, 0xa3313c8414b9bdb48d3a72566086b0, 0x006dbc ] } , - BigNum { limbs: [ 0xd642ca6b54a6369ccc21031e150139, 0xba9f79a5fb1a6a2a047b5be3ed4fd4, 0x00224c ] } , - BigNum { limbs: [ 0xe7613894a9b5c86333defbe1eafec8, 0xecb3aff7822dc90fd38cadbdeab57e, 0x0051a0 ] } , - BigNum { limbs: [ 0x000a2c08272f66da36ccf2e993cd4b, 0x41e9a4f570435bba8fb2e09f6beef7, 0x006afa ] } , - BigNum { limbs: [ 0xbd99d6f7d72c9825c9330c166c32b6, 0x656984a80d04d77f485529026c165c, 0x0008f3 ] } , - BigNum { limbs: [ 0xbcf785dcdf4e328808e9517b13c0b3, 0x409be07b0180970e859cb664f191e6, 0x0061b7 ] } , - BigNum { limbs: [ 0x00ac7d231f0dcc77f716ad84ec3f4e, 0x66b749227bc79c2b526b533ce6736d, 0x001236 ] } , - BigNum { limbs: [ 0x78c4bdcf9bc483ca5781d76f4e559e, 0x36ae045a7a20a073d4d045c3beb72b, 0x002749 ] } , - BigNum { limbs: [ 0x44df453062977b35a87e2790b1aa63, 0x70a52543032792c60337c3de194e28, 0x004ca4 ] } , - BigNum { limbs: [ 0xbd07bf07c3447388b9c737630a23e2, 0x67e4a7679099fa34c274b0c1047698, 0x006329 ] } , - BigNum { limbs: [ 0x009c43f83b178b774638c79cf5dc1f, 0x3f6e8235ecae3905159358e0d38ebb, 0x0010c4 ] } , - BigNum { limbs: [ 0x931c9fae3bb9dda8a614cffe125c7a, 0xdc15fde5f343f0127db7a6df4e56f9, 0x00223e ] } , - BigNum { limbs: [ 0x2a876351c2a2215759eb2f01eda387, 0xcb3d2bb78a0443275a5062c289ae5a, 0x0051ae ] } , - BigNum { limbs: [ 0x15005b0d6d37abfde128a69e40ea4f, 0xf16fc09ed8024721545355d82c1794, 0x002121 ] } , - BigNum { limbs: [ 0xa8a3a7f2912453021ed75861bf15b2, 0xb5e368fea545ec1883b4b3c9abedbf, 0x0052cb ] } , - BigNum { limbs: [ 0x23e4c65209e6feb99be60e5325becf, 0x97a825dfd84f013ee58a04c05b1238, 0x002bbc ] } , - BigNum { limbs: [ 0x99bf3cadf47500466419f0acda4132, 0x0fab03bda4f931faf27e04e17cf31b, 0x004831 ] } , - BigNum { limbs: [ 0x92b0c71537657e791422ab0d1fa475, 0x8e737ba8e6b9c7011799b6ac26732b, 0x00349b ] } , - BigNum { limbs: [ 0x2af33beac6f68086ebdd53f2e05b8c, 0x18dfadf4968e6c38c06e52f5b19228, 0x003f52 ] } , - BigNum { limbs: [ 0x6a7922e7a83dee9dcbcd42681999e0, 0x29dda824854795fc5d88196ec7c833, 0x0037ad ] } , - BigNum { limbs: [ 0x532ae018561e10623432bc97e66621, 0x7d758178f8009d3d7a7ff033103d20, 0x003c40 ] } , - BigNum { limbs: [ 0x5dc87d9d11ad1b7f6aaf9450d12b19, 0x66588b0ae62cf7f58fc006cf477672, 0x0020c6 ] } , - BigNum { limbs: [ 0x5fdb8562ecaee38095506aaf2ed4e8, 0x40fa9e92971b3b44484802d2908ee1, 0x005327 ] } , - BigNum { limbs: [ 0xfd9e7bab7d04be833d3e49aebddc79, 0x831f7ed103e1e3648d02b64300acf9, 0x006d29 ] } , - BigNum { limbs: [ 0xc00587548157407cc2c1b551422388, 0x2433aacc79664fd54b05535ed75859, 0x0006c4 ] } , - BigNum { limbs: [ 0x11aa53881673c8aa46fedd8a5733c6, 0xbed352e860abf11334d33265ec3a28, 0x00687a ] } , - BigNum { limbs: [ 0xabf9af77e7e83655b9012175a8cc3b, 0xe87fd6b51c9c4226a334d73bebcb2b, 0x000b72 ] } , - BigNum { limbs: [ 0x9de727acba114354fe7e4233ead48f, 0xb98ed4682ac06c7aa6c0e0aa70e4ef, 0x000b09 ] } , - BigNum { limbs: [ 0x1fbcdb53444abbab0181bccc152b72, 0xedc455355287c6bf314728f7672064, 0x0068e3 ] } , - BigNum { limbs: [ 0x67a0e092307f59eb82e18c2d4a2f93, 0xe6277af5413f13df9e22c199ab7d4c, 0x000f49 ] } , - BigNum { limbs: [ 0x5603226dcddca5147d1e72d2b5d06e, 0xc12baea83c091f5a39e548082c8807, 0x0064a3 ] } , - BigNum { limbs: [ 0x8ecbb2fc779498b7371af24c69e915, 0xb7ebefc2ea8bdc9f2f2d8d631bdace, 0x0019bb ] } , - BigNum { limbs: [ 0x2ed8500386c76648c8e50cb39616ec, 0xef6739da92bc569aa8da7c3ebc2a85, 0x005a31 ] } , - BigNum { limbs: [ 0xbf69d4846895b869cf30c3f74acc2d, 0x7cc3fb72f7b698679992371f25319c, 0x000beb ] } , - BigNum { limbs: [ 0xfe3a2e7b95c6469630cf3b08b533d4, 0x2a8f2e2a85919ad23e75d282b2d3b6, 0x006802 ] } , - BigNum { limbs: [ 0xf2baf504c25b9a39edc05aa04d73d3, 0xd287d6fa2f0abe2070fb003e94ce7e, 0x00501e ] } , - BigNum { limbs: [ 0xcae90dfb3c0064c6123fa45fb28c2e, 0xd4cb52a34e3d7519670d09634336d4, 0x0023ce ] } , - BigNum { limbs: [ 0x61030f7a6df8cd67febb6c8cbe4070, 0xc60d84f924f255bef584e05d609204, 0x000a88 ] } , - BigNum { limbs: [ 0x5ca0f385906331980144927341bf91, 0xe145a4a45855dd7ae283294477734f, 0x006964 ] } , - BigNum { limbs: [ 0x192612437c0d705dd8aa1f184468b1, 0xac20308d7fa75d32092f3b381bf3aa, 0x002d1d ] } , - BigNum { limbs: [ 0xa47df0bc824e8ea22755dfe7bb9750, 0xfb32f90ffda0d607ced8ce69bc11a9, 0x0046cf ] } , - BigNum { limbs: [ 0xd10e7623a9b5c2385693e2fcd877bc, 0x930d0b536c1638fea19a2f6d48ccbf, 0x006c5c ] } , - BigNum { limbs: [ 0xec958cdc54a63cc7a96c1c03278845, 0x14461e4a1131fa3b366dda348f3893, 0x000791 ] } , - BigNum { limbs: [ 0x07f80a3c191747313bf2252bfe6544, 0xc3710f7d372068f5ddce3a6ac23aa6, 0x0048dd ] } , - BigNum { limbs: [ 0xb5abf8c3e544b7cec40dd9d4019abd, 0xe3e21a204627ca43fa39cf3715caad, 0x002b0f ] } , - BigNum { limbs: [ 0x7d31d54a5b5e0bf66850fc4356cc38, 0x5090296540c55c8ea24dbc4424135c, 0x000b63 ] } , - BigNum { limbs: [ 0x40722db5a2fdf30997af02bca933c9, 0x56c300383c82d6ab35ba4d5db3f1f7, 0x00688a ] } , - BigNum { limbs: [ 0x6754373db6852853633cba573000a7, 0xbbd2ed7a061996cedcf10a4bedd504, 0x0028da ] } , - BigNum { limbs: [ 0x564fcbc247d6d6ac9cc344a8cfff5a, 0xeb803c23772e9c6afb16ff55ea304f, 0x004b12 ] } , - BigNum { limbs: [ 0xefd2ccb27161336c0774388484c8e0, 0x40f3fe19d6697b3c0956d65c80f6ed, 0x005149 ] } , - BigNum { limbs: [ 0xcdd1364d8cfacb93f88bc67b7b3721, 0x665f2b83a6deb7fdceb13345570e65, 0x0022a4 ] } , - BigNum { limbs: [ 0xaf06cd4910e551088ec10c7b3f9602, 0xd80f951236ac65f6c38129c1631553, 0x004683 ] } , - BigNum { limbs: [ 0x0e9d35b6ed76adf7713ef284c069ff, 0xcf43948b469bcd431486dfe074f000, 0x002d69 ] } , - BigNum { limbs: [ 0x55cbf4fc7d9221d6816541aa07b714, 0x36935603e9159f28a666a615905a5d, 0x0043f2 ] } , - BigNum { limbs: [ 0x67d80e0380c9dd297e9abd55f848ed, 0x70bfd3999432941131a1638c47aaf6, 0x002ffb ] } , - BigNum { limbs: [ 0x3d713401b12579ff39b32afc7b0bc8, 0xbfc21f080b804db92c2e4bb771d4c2, 0x00566d ] } , - BigNum { limbs: [ 0x8032cefe4d368500c64cd40384f439, 0xe7910a9571c7e580abd9bdea663091, 0x001d7f ] } , - BigNum { limbs: [ 0xab8672e395976ddc3fce2d7273d9b8, 0xce96912a183ea6587ecd8746ffc65e, 0x000424 ] } , - BigNum { limbs: [ 0x121d901c68c49123c031d18d8c2649, 0xd8bc987365098ce1593a825ad83ef5, 0x006fc8 ] } , - BigNum { limbs: [ 0xd3cae6a6c85eb50b49338d697169d1, 0xfbbeff1e545584842b429aacfafecc, 0x003fd8 ] } , - BigNum { limbs: [ 0xe9d91c5935fd49f4b6cc71968e9630, 0xab942a7f28f2aeb5acc56ef4dd0686, 0x003414 ] } , - BigNum { limbs: [ 0x7cd05c252cdf03a7dac369758af536, 0xd634c2939a3328200b75d372ed58da, 0x0023af ] } , - BigNum { limbs: [ 0x40d3a6dad17cfb58253c958a750acb, 0xd11e6709e3150b19cc92362eeaac79, 0x00503d ] } , - BigNum { limbs: [ 0x981ce7693de7d08ae9eb8b6995ac0a, 0xa4253becc4b5eb2b624ae2bcf538a0, 0x0065ab ] } , - BigNum { limbs: [ 0x25871b96c0742e75161473966a53f7, 0x032dedb0b892480e75bd26e4e2ccb3, 0x000e42 ] } , - BigNum { limbs: [ 0x8d13ae231a5bdcc9fea91649dcfec3, 0xec6589730d57a091ebada7f04c5566, 0x00406b ] } , - BigNum { limbs: [ 0x309054dce40022360156e8b623013e, 0xbaeda02a6ff092a7ec5a61b18bafed, 0x003381 ] } , - BigNum { limbs: [ 0x13cf484f4959217912415ab836bd2c, 0x9d1f8742b93e0c418fd6b7d55b84cb, 0x00134b ] } , - BigNum { limbs: [ 0xa9d4bab0b502dd86edbea447c942d5, 0x0a33a25ac40a26f8483151cc7c8088, 0x0060a2 ] } , - BigNum { limbs: [ 0x97082543d2be0a3165acb7ba4029ee, 0xbbfa9954466c540e4ea7938b5f4ce7, 0x005448 ] } , - BigNum { limbs: [ 0x269bddbc2b9df4ce9a534745bfd613, 0xeb58904936dbdf2b8960761678b86c, 0x001fa4 ] } , - BigNum { limbs: [ 0xf8db8f62b9e688a40f1700385650df, 0xd3af97013194cff7b6d0a1aea46d99, 0x0047a0 ] } , - BigNum { limbs: [ 0xc4c8739d4475765bf0e8fec7a9af22, 0xd3a3929c4bb36342213767f33397b9, 0x002c4c ] } , - BigNum { limbs: [ 0x3129692575239a8f8cf7befeeb90de, 0x12cac8686c064244cec8b2e392eca6, 0x0068e9 ] } , - BigNum { limbs: [ 0x8c7a99da8938647073084001146f23, 0x948861351141f0f5093f56be4518ad, 0x000b04 ] } , - BigNum { limbs: [ 0x121bcca49e268a7218bcb84d7c3ebc, 0xff2e2a28d2d40b336334dc00d24146, 0x002455 ] } , - BigNum { limbs: [ 0xab88365b6035748de74346b283c145, 0xa824ff74aa74280674d32da105c40d, 0x004f97 ] } , - BigNum { limbs: [ 0x46d17864183203961a252dd8543362, 0x2856c609b4784ae25ffab9dc598650, 0x00391b ] } , - BigNum { limbs: [ 0x76d28a9be629fb69e5dad127abcc9f, 0x7efc6393c8cfe857780d4fc57e7f03, 0x003ad2 ] } -]; diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/smaller_config.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/smaller_config.nr index 40521353f01..23ad7978e4b 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/smaller_config.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/smaller_config.nr @@ -2,35 +2,68 @@ use dep::bigint::{BigNum, fields::bls12_381Fr::BLS12_381_Fr_Params}; type F = BigNum<3, BLS12_381_Fr_Params>; -global FIELDS_PER_BLOB: u64 = 8; // actually 4096 -global LOG_FIELDS_PER_BLOB: u64 = 3; // actually 12 +global FIELDS_PER_BLOB: u32 = 8; // actually 4096 +global LOG_FIELDS_PER_BLOB: u32 = 3; // actually 12 // The following three fields are more meaningful computation in the proper config.nr: -global EXTRA_FIELDS_PER_BLOB: u64 = 0; // 0 = floor(8 FIELDS_PER_BLOB / 254 noir_field_bits). +global EXTRA_FIELDS_PER_BLOB: u32 = 0; // 0 = floor(8 FIELDS_PER_BLOB / 254 noir_field_bits). global NOIR_FIELDS_PER_BLOB = FIELDS_PER_BLOB + EXTRA_FIELDS_PER_BLOB; // It's a more meaningful computation in the proper config.nr. -global FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB: u64 = 0; // EXTRA_FIELDS_PER_BLOB * 254 = 0. It's a more meaningful computation in the proper config.nr. +global FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB: u32 = 0; // EXTRA_FIELDS_PER_BLOB * 254 = 0. It's a more meaningful computation in the proper config.nr. global D: F = BigNum { limbs: [8, 0, 0] }; -global D_INV = BigNum { limbs: [0x45ef829ffe907f1fffffff20000001, 0xf268c469cd9f2cd29d07086d9d04a9, 0x656f] }; +global D_INV = + BigNum { limbs: [0x45ef829ffe907f1fffffff20000001, 0xf268c469cd9f2cd29d07086d9d04a9, 0x656f] }; -global ROOTS: [F; FIELDS_PER_BLOB] = [ - BigNum { limbs: [ 0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000 ] } , - BigNum { limbs: [ 0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed ] } , - BigNum { limbs: [ 0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000 ] } , - BigNum { limbs: [ 0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed ] } , - BigNum { limbs: [ 0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457 ] } , - BigNum { limbs: [ 0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96 ] } , - BigNum { limbs: [ 0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333 ] } , - BigNum { limbs: [ 0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9 ] } +global ROOTS: [F; FIELDS_PER_BLOB] = [ + BigNum { + limbs: [0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000], + }, + BigNum { + limbs: [0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed], + }, + BigNum { + limbs: [0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000], + }, + BigNum { + limbs: [0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed], + }, + BigNum { + limbs: [0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457], + }, + BigNum { + limbs: [0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96], + }, + BigNum { + limbs: [0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333], + }, + BigNum { + limbs: [0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9], + }, ]; global NEGATIVE_ROOTS = [ - BigNum { limbs: [ 0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed ] } , - BigNum { limbs: [ 0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000 ] } , - BigNum { limbs: [ 0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed ] } , - BigNum { limbs: [ 0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000 ] } , - BigNum { limbs: [ 0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96 ] } , - BigNum { limbs: [ 0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457 ] } , - BigNum { limbs: [ 0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9 ] } , - BigNum { limbs: [ 0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333 ] } + BigNum { + limbs: [0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed], + }, + BigNum { + limbs: [0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000], + }, + BigNum { + limbs: [0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed], + }, + BigNum { + limbs: [0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000], + }, + BigNum { + limbs: [0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96], + }, + BigNum { + limbs: [0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457], + }, + BigNum { + limbs: [0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9], + }, + BigNum { + limbs: [0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333], + }, ]; diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/unconstrained_config.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/unconstrained_config.nr new file mode 100644 index 00000000000..34c2f6811ca --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/unconstrained_config.nr @@ -0,0 +1,106 @@ +use bigint::{BigNum, fields::bls12_381Fr::BLS12_381_Fr_Params}; +use types::constants::FIELDS_PER_BLOB; + +// TODO(#9982): Delete this file and go back to using config.nr - calculating ROOTS in unconstrained is insecure. + +type F = BigNum<3, 255, BLS12_381_Fr_Params>; + +global LOG_FIELDS_PER_BLOB: u32 = 12; +global EXTRA_FIELDS_PER_BLOB: u32 = 16; // 16 = floor(4096 FIELDS_PER_BLOB / 254 noir_field_bits), wasting only 32 bits. +global NOIR_FIELDS_PER_BLOB: u32 = FIELDS_PER_BLOB + EXTRA_FIELDS_PER_BLOB; +global FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB: u32 = EXTRA_FIELDS_PER_BLOB * 254; // EXTRA_FIELDS_PER_BLOB * 254 = 4064. So the first 4064 bls Fr fields in the blob will carry an extra bit in their 255th bit position, that will be used to reconstitute 16 extra fields. +global D: F = BigNum { limbs: [4096, 0, 0] }; +global D_INV: F = + BigNum { limbs: [0x686828bfce5c19400fffff00100001, 0x6878b46ae3705eb6a46a89213de7d3, 0x73e6] }; + +unconstrained fn compute_level(idx_: u32) -> u32 { + // Count the number of trailing ones. + let mut count = 0; + let mut idx = idx_; + for _i in 0..LOG_FIELDS_PER_BLOB { + if (idx & 1 == 0) { + break; + } else { + count += 1; + idx >>= 1; + } + } + + count +} + +unconstrained fn compute_big_minus_arr( + _big_minus: u32, + _next_diff: u32, +) -> [u32; LOG_FIELDS_PER_BLOB - 2] { + let mut res: [u32; LOG_FIELDS_PER_BLOB - 2] = [0; LOG_FIELDS_PER_BLOB - 2]; + let mut big_minus = _big_minus; + let mut next_diff = _next_diff; + res[0] = big_minus; + for i in 1..LOG_FIELDS_PER_BLOB - 2 { + next_diff >>= 1; + big_minus += next_diff; + res[i] = big_minus; + } + assert(next_diff == 3); + res +} + +unconstrained fn bit_reversal_permutation(arr: [F; FIELDS_PER_BLOB]) -> [F; FIELDS_PER_BLOB] { + let mut arr_brp: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; + let PLUS = FIELDS_PER_BLOB >> 1; + let MINUS = PLUS >> 1; + let mut I = 0; + let mut next_diff = PLUS - (MINUS >> 1); + let mut big_minus = next_diff + MINUS; + + let big_minus_arr = compute_big_minus_arr(big_minus, next_diff); + + arr_brp[0] = arr[0]; + I += PLUS; + arr_brp[1] = arr[I]; + I -= MINUS; + arr_brp[2] = arr[I]; + I += PLUS; + arr_brp[3] = arr[I]; + + for i in 0..FIELDS_PER_BLOB / 4 - 1 { + let j = 4 * i + 4; + let level = compute_level(i); + I -= big_minus_arr[level]; + arr_brp[j] = arr[I]; + I += PLUS; + arr_brp[j + 1] = arr[I]; + I -= MINUS; + arr_brp[j + 2] = arr[I]; + I += PLUS; + arr_brp[j + 3] = arr[I]; + } + arr_brp +} + +// x ^ i for i in 0..4096 +unconstrained fn compute_powers(x: F) -> [F; FIELDS_PER_BLOB] { + let mut powers: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; + let mut current_power: F = BigNum::one(); + for i in 0..FIELDS_PER_BLOB { + powers[i] = current_power; + current_power = current_power.__mul(x); + } + powers +} + +pub unconstrained fn compute_roots_of_unity() -> [F; FIELDS_PER_BLOB] { + // The below const is found from: + // let order: F = BigNum { limbs: [ FIELDS_PER_BLOB, 0, 0 ]; + // let exp = BLS_MODULUS_SUB_1.udiv_mod(order); + // let exp: F = BigNum { limbs: [ 0x553bda402fffe5bfeffffffff00000, 0x3eda753299d7d483339d80809a1d80, 0x000007 ] }; // (MODULUS - 1) // 4096 + // let root_of_unity = PRIMITIVE_ROOT_OF_UNITY.__pow(exp); + let root_of_unity: F = BigNum { + limbs: [0xd1347b378fbf96e206da11a5d36306, 0x0a11a0f704f4fc3e8acfe0f8245f0a, 0x00564c], + }; + let mut roots_of_unity = compute_powers(root_of_unity); + bit_reversal_permutation(roots_of_unity) + // bit_reversal_permutation(&mut roots_of_unity); + // roots_of_unity +} diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_initial_values.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_initial_values.nr index 3faeab0e8ab..108b59c776f 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_initial_values.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_initial_values.nr @@ -20,10 +20,10 @@ fn validate_initial_values_constants_mismatch_chain_id_fails() { } #[test(should_fail_with = "mismatch historical_header")] -fn validate_initial_values_constants_mismatch_txs_effects_hash_fails() { +fn validate_initial_values_constants_mismatch_out_hash_fails() { let mut builder = PrivateKernelCircuitOutputValidatorBuilder::new(); - builder.output.historical_header.content_commitment.txs_effects_hash += 1; + builder.output.historical_header.content_commitment.out_hash += 1; builder.validate_as_first_call(); } diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_propagated_from_previous_kernel.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_propagated_from_previous_kernel.nr index b7bb2d4ea67..62785c9bc98 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_propagated_from_previous_kernel.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_propagated_from_previous_kernel.nr @@ -18,15 +18,6 @@ fn validate_propagated_from_previous_kernel_constants_mismatch_chain_id_fails() builder.validate_as_inner_call(); } -#[test(should_fail_with = "mismatch constants")] -fn validate_propagated_from_previous_kernel_constants_mismatch_txs_effects_hash_fails() { - let mut builder = PrivateKernelCircuitOutputValidatorBuilder::new(); - - builder.output.historical_header.content_commitment.txs_effects_hash += 1; - - builder.validate_as_inner_call(); -} - #[test(should_fail_with = "mismatch constants")] fn validate_propagated_from_previous_kernel_constants_mismatch_protocol_contract_tree_root_fails() { let mut builder = PrivateKernelCircuitOutputValidatorBuilder::new(); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml b/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml index 9f7956eb265..3cab422d3f6 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml @@ -7,3 +7,4 @@ compiler_version = ">=0.18.0" [dependencies] types = { path = "../types" } parity_lib = { path = "../parity-lib" } +blob = { path = "../blob" } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr index c591c30cdfa..8b31646a46b 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr @@ -1,5 +1,6 @@ use crate::abis::constant_rollup_data::ConstantRollupData; use dep::types::{ + abis::sponge_blob::SpongeBlob, constants::BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH, partial_state_reference::PartialStateReference, traits::{Deserialize, Empty, Serialize}, @@ -19,12 +20,15 @@ pub struct BaseOrMergeRollupPublicInputs { start: PartialStateReference, end: PartialStateReference, + // A poseidon sponge of all tx effects to be unpacked in block root, then added to a blob + // In sponge form so we can check left.end == right.start, rather than recreate a tree later + start_sponge_blob: SpongeBlob, + end_sponge_blob: SpongeBlob, + // We hash public inputs to make them constant-sized (to then be unpacked on-chain) // U128 isn't safe if it's an input to the circuit (it won't automatically constrain the witness) // So we want to constrain it when casting these fields to U128 - // We hash public inputs to make them constant-sized (to then be unpacked on-chain) - txs_effects_hash: Field, out_hash: Field, accumulated_fees: Field, @@ -38,7 +42,8 @@ impl Empty for BaseOrMergeRollupPublicInputs { constants: ConstantRollupData::empty(), start: PartialStateReference::empty(), end: PartialStateReference::empty(), - txs_effects_hash: 0, + start_sponge_blob: SpongeBlob::empty(), + end_sponge_blob: SpongeBlob::empty(), out_hash: 0, accumulated_fees: 0, } @@ -52,7 +57,8 @@ impl Eq for BaseOrMergeRollupPublicInputs { & (self.constants.eq(other.constants)) & (self.start.eq(other.start)) & (self.end.eq(other.end)) - & (self.txs_effects_hash == other.txs_effects_hash) + & (self.start_sponge_blob.eq(other.start_sponge_blob)) + & (self.end_sponge_blob.eq(other.end_sponge_blob)) & (self.out_hash == other.out_hash) & (self.accumulated_fees == other.accumulated_fees) } @@ -67,7 +73,8 @@ impl Serialize for BaseOrMergeRollupPublicIn fields.extend_from_array(self.constants.serialize()); fields.extend_from_array(self.start.serialize()); fields.extend_from_array(self.end.serialize()); - fields.push(self.txs_effects_hash as Field); + fields.extend_from_array(self.start_sponge_blob.serialize()); + fields.extend_from_array(self.end_sponge_blob.serialize()); fields.push(self.out_hash as Field); fields.push(self.accumulated_fees as Field); @@ -88,7 +95,8 @@ impl Deserialize for BaseOrMergeRollupPublic constants: reader.read_struct(ConstantRollupData::deserialize), start: reader.read_struct(PartialStateReference::deserialize), end: reader.read_struct(PartialStateReference::deserialize), - txs_effects_hash: reader.read(), + start_sponge_blob: reader.read_struct(SpongeBlob::deserialize), + end_sponge_blob: reader.read_struct(SpongeBlob::deserialize), out_hash: reader.read(), accumulated_fees: reader.read(), }; diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr index d325e1d2ed3..2035c9c4030 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr @@ -8,6 +8,7 @@ use dep::types::{ traits::{Deserialize, Empty, Serialize}, utils::reader::Reader, }; +use blob::blob_public_inputs::BlockBlobPublicInputs; pub struct FeeRecipient { recipient: EthAddress, @@ -17,7 +18,7 @@ pub struct FeeRecipient { // TODO(#7346): Should the default empty value be MAX_FIELD? The zero addr may be a valid recipient impl Empty for FeeRecipient { fn empty() -> Self { - FeeRecipient { recipient: EthAddress::zero(), value: 0 } + Self { recipient: EthAddress::zero(), value: 0 } } } @@ -53,6 +54,7 @@ pub struct BlockRootOrBlockMergePublicInputs { vk_tree_root: Field, // Root of allowed vk tree protocol_contract_tree_root: Field, // Root of protocol contract tree prover_id: Field, // TODO(#7346): Temporarily added prover_id while we verify block-root proofs on L1 + blob_public_inputs: [BlockBlobPublicInputs; AZTEC_MAX_EPOCH_DURATION], // z, y, and C s.t. p(z) = y and C commits to p, for blob verification } impl BlockRootOrBlockMergePublicInputs { @@ -75,6 +77,7 @@ impl Empty for BlockRootOrBlockMergePublicInputs { vk_tree_root: 0, protocol_contract_tree_root: 0, prover_id: 0, + blob_public_inputs: [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION], } } } @@ -92,6 +95,7 @@ impl Eq for BlockRootOrBlockMergePublicInputs { & (self.vk_tree_root == other.vk_tree_root) & (self.protocol_contract_tree_root == other.protocol_contract_tree_root) & (self.prover_id == other.prover_id) + & (self.blob_public_inputs.eq(other.blob_public_inputs)) } } @@ -113,6 +117,9 @@ impl Serialize for BlockRootOrBl fields.push(self.vk_tree_root); fields.push(self.protocol_contract_tree_root); fields.push(self.prover_id as Field); + for i in 0..AZTEC_MAX_EPOCH_DURATION { + fields.extend_from_array(self.blob_public_inputs[i].serialize()); + } assert_eq(fields.len(), BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH); fields.storage() @@ -139,6 +146,10 @@ impl Deserialize for BlockRootOr vk_tree_root: reader.read(), protocol_contract_tree_root: reader.read(), prover_id: reader.read(), + blob_public_inputs: reader.read_struct_array( + BlockBlobPublicInputs::deserialize, + [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION], + ), }; reader.finish(); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr index 30b20e4b88f..4d18cdfb7f4 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr @@ -11,13 +11,13 @@ use crate::{ }, state_diff_hints::PrivateBaseStateDiffHints, }, - components::{compute_kernel_out_hash, compute_tx_effects_hash}, + components::{append_tx_effects_for_blob, compute_kernel_out_hash}, }; use dep::types::{ abis::{ append_only_tree_snapshot::AppendOnlyTreeSnapshot, nullifier_leaf_preimage::NullifierLeafPreimage, public_data_write::PublicDataWrite, - tube::PrivateTubeData, + sponge_blob::SpongeBlob, tube::PrivateTubeData, }, constants::{ ARCHIVE_HEIGHT, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_HASH_SUBTREE_HEIGHT, @@ -39,6 +39,7 @@ pub struct PrivateBaseRollupInputs { tube_data: PrivateTubeData, start: PartialStateReference, + start_sponge_blob: SpongeBlob, state_diff_hints: PrivateBaseStateDiffHints, fee_payer_fee_juice_balance_read_hint: PublicDataHint, @@ -112,12 +113,13 @@ impl PrivateBaseRollupInputs { ), ); let out_hash = compute_kernel_out_hash(siloed_l2_to_l1_msgs); - let tx_effects_hash = compute_tx_effects_hash( + let end_sponge_blob = append_tx_effects_for_blob( self.tube_data.public_inputs.end, self.tube_data.public_inputs.revert_code, transaction_fee, all_public_data_update_requests, - out_hash, + siloed_l2_to_l1_msgs, + self.start_sponge_blob, ); // Perform membership checks that the notes provided exist within the historical trees data @@ -137,7 +139,8 @@ impl PrivateBaseRollupInputs { nullifier_tree: end_nullifier_tree_snapshot, public_data_tree: end_public_data_tree_snapshot, }, - txs_effects_hash: tx_effects_hash, + start_sponge_blob: self.start_sponge_blob, + end_sponge_blob, out_hash, accumulated_fees: transaction_fee, } @@ -229,20 +232,26 @@ mod tests { private_base_rollup::PrivateBaseRollupInputs, state_diff_hints::PrivateBaseStateDiffHints, }, - components::TX_EFFECTS_HASH_INPUT_FIELDS, + components::{append_tx_effects_for_blob, TX_EFFECTS_BLOB_HASH_INPUT_FIELDS}, }; use dep::types::{ abis::{ + accumulated_data::CombinedAccumulatedData, append_only_tree_snapshot::AppendOnlyTreeSnapshot, gas::Gas, gas_fees::GasFees, kernel_circuit_public_inputs::KernelCircuitPublicInputs, - nullifier_leaf_preimage::NullifierLeafPreimage, + nullifier_leaf_preimage::NullifierLeafPreimage, public_data_write::PublicDataWrite, + sponge_blob::SpongeBlob, }, address::{AztecAddress, EthAddress}, constants::{ - ARCHIVE_HEIGHT, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, + ARCHIVE_HEIGHT, CONTRACT_CLASS_LOGS_PREFIX, ENCRYPTED_LOGS_PREFIX, L2_L1_MSGS_PREFIX, + MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, + MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_ENCRYPTED_LOGS_PREFIX, NOTE_HASH_SUBTREE_HEIGHT, NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NOTE_HASH_TREE_HEIGHT, - NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, - PRIVATE_KERNEL_EMPTY_INDEX, PUBLIC_DATA_TREE_HEIGHT, TUBE_VK_INDEX, + NOTES_PREFIX, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, + NULLIFIER_TREE_HEIGHT, NULLIFIERS_PREFIX, PRIVATE_KERNEL_EMPTY_INDEX, + PUBLIC_DATA_TREE_HEIGHT, REVERT_CODE_PREFIX, TUBE_VK_INDEX, TX_FEE_PREFIX, + TX_START_PREFIX, UNENCRYPTED_LOGS_PREFIX, }, data::{public_data_hint::PublicDataHint, PublicDataTreeLeaf, PublicDataTreeLeafPreimage}, hash::silo_l2_to_l1_message, @@ -252,8 +261,8 @@ mod tests { tests::{fixture_builder::FixtureBuilder, fixtures, merkle_tree_utils::NonEmptyMerkleTree}, traits::{Empty, is_empty}, utils::{ - arrays::get_sorted_tuple::get_sorted_tuple, - field::{field_from_bytes_32_trunc, full_field_less_than}, + arrays::{array_concat, get_sorted_tuple::get_sorted_tuple}, + field::{field_from_bytes, full_field_less_than}, }, }; @@ -375,6 +384,36 @@ mod tests { ) } + fn compute_transaction_fee(self) -> Field { + let gas_fees = self.constants.global_variables.gas_fees; + let gas_used = self.tube_data.gas_used; + gas_used.compute_fee(gas_fees) + } + + fn build_pre_existing_tx_effects( + self, + ) -> (CombinedAccumulatedData, [PublicDataWrite; MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX]) { + let mut res = CombinedAccumulatedData::empty(); + res.note_hashes = self.pre_existing_notes; + res.nullifiers = self.pre_existing_nullifiers.map(|nullifier: NullifierLeafPreimage| { + nullifier.nullifier + }); + let all_public_data_update_requests = self.pre_existing_public_data.map( + |leaf_preimage: PublicDataTreeLeafPreimage| { + PublicDataWrite { leaf_slot: leaf_preimage.slot, value: leaf_preimage.value } + }, + ); + let padded_all_public_data_update_requests = array_concat( + all_public_data_update_requests, + [ + PublicDataWrite::empty(); MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX + - PRE_EXISTING_PUBLIC_DATA_LEAVES + ], + ); + + (res, padded_all_public_data_update_requests) + } + fn extract_subtree_sibling_path( path: [Field; FULL_HEIGHT], mut sibling_path: [Field; SIBLING_PATH_LENGTH], @@ -538,6 +577,18 @@ mod tests { public_data_tree: start_public_data_tree_snapshot, }; + let (pre_existing_tx_effects, pre_existing_public_data_update_requests) = + self.build_pre_existing_tx_effects(); + + let start_sponge_blob = append_tx_effects_for_blob( + pre_existing_tx_effects, + 0, + 0, + pre_existing_public_data_update_requests, + [0; MAX_L2_TO_L1_MSGS_PER_TX], + SpongeBlob::new(TX_EFFECTS_BLOB_HASH_INPUT_FIELDS), + ); + let state_diff_hints = PrivateBaseStateDiffHints { nullifier_predecessor_preimages, nullifier_predecessor_membership_witnesses, @@ -553,6 +604,7 @@ mod tests { PrivateBaseRollupInputs { tube_data, start, + start_sponge_blob, state_diff_hints, archive_root_membership_witness: MembershipWitness { leaf_index: 0, @@ -767,13 +819,177 @@ mod tests { } #[test] - unconstrained fn empty_tx_effects_hash() { + unconstrained fn empty_tx_effects_sponge() { let outputs = PrivateBaseRollupInputsBuilder::new().execute(); + let mut expected_sponge = outputs.start_sponge_blob; + assert(outputs.end_sponge_blob.eq(expected_sponge)); + } + + #[test] + unconstrained fn non_empty_tx_effects_sponge() { + let mut builder = PrivateBaseRollupInputsBuilder::new(); + builder.tube_data.append_note_hashes(50); + let outputs = builder.execute(); + let mut tx_effects = [0; 53]; + // TODO(#8954): This test uses 50 notes and 3 extra absorbed fields + // This may change when logs are deconstructed + // Initial field = TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // The first 3 are: i=0 init field, i=1: tx fee, i=2: note prefix + tx_effects[0] = field_from_bytes( + array_concat( + TX_START_PREFIX.to_be_bytes::<8>(), + [0, 0, tx_effects.len() as u8, 0, REVERT_CODE_PREFIX, 0, 0], + ), + true, + ); + tx_effects[1] = field_from_bytes( + array_concat([TX_FEE_PREFIX, 0], (0).to_be_bytes::<29>()), + true, + ); + tx_effects[2] = field_from_bytes([NOTES_PREFIX, 0, 50 as u8], true); + for i in 0..50 { + tx_effects[i + 3] = builder.tube_data.note_hashes.storage()[i].value(); + } + let mut expected_sponge = outputs.start_sponge_blob; + + expected_sponge.absorb(tx_effects, tx_effects.len()); + assert(outputs.end_sponge_blob.eq(expected_sponge)); + } + + #[test] + unconstrained fn fuller_tx_effects_sponge() { + let NUM_NOTES = 50; + let NUM_NULLIFIERS = 3; + let NUM_MSGS = 5; + let NUM_ENC_LOGS = 4; + let NUM_UNENC_LOGS = 6; + let NUM_CC_LOGS = 1; + let mut builder = PrivateBaseRollupInputsBuilder::new(); + builder.tube_data.set_gas_used(100, 200); + builder.constants.global_variables.gas_fees.fee_per_da_gas = 1; + builder.constants.global_variables.gas_fees.fee_per_l2_gas = 1; + let tx_fee = builder.compute_transaction_fee(); + // builder.transaction_fee = tx_fee; + builder.tube_data.append_note_hashes_with_logs(NUM_NOTES); + // Copied from nullifier tests above: + builder.pre_existing_nullifiers[0] = + NullifierLeafPreimage { nullifier: 0, next_nullifier: 7, next_index: 1 }; + builder.pre_existing_nullifiers[1] = + NullifierLeafPreimage { nullifier: 7, next_nullifier: 0, next_index: 0 }; + for i in 0..NUM_NULLIFIERS { + builder.nullifiers.push( + NullifierInsertion { existing_index: 1, value: (8 + i) as Field }, + ); + } + builder.tube_data.append_l2_to_l1_msgs(NUM_MSGS); + // Copied from public data test below: + builder.pre_existing_public_data[0] = + PublicDataTreeLeafPreimage { slot: 20, value: 40, next_slot: 0, next_index: 0 }; + builder.tube_data.append_encrypted_log_hashes(NUM_ENC_LOGS); + builder.tube_data.append_unencrypted_log_hashes(NUM_UNENC_LOGS); + // Below will only work with NUM_CC_LOGS=1 + builder.tube_data.add_contract_class_log_hash(1, 2); + let outputs = builder.execute(); + + let mut reconstructed_tx_effects = [0; TX_EFFECTS_BLOB_HASH_INPUT_FIELDS]; + // Initial field = TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // revert code = 0 + // fields appended here = 128 = offset once appending complete + reconstructed_tx_effects[0] = field_from_bytes( + array_concat( + TX_START_PREFIX.to_be_bytes::<8>(), + [0, 0, 128, 0, REVERT_CODE_PREFIX, 0, 0], + ), + true, + ); + // tx fee + reconstructed_tx_effects[1] = field_from_bytes( + array_concat([TX_FEE_PREFIX, 0], tx_fee.to_be_bytes::<29>()), + true, + ); + // notes + let mut offset = 2; + let notes_prefix = field_from_bytes([NOTES_PREFIX, 0, NUM_NOTES as u8], true); + reconstructed_tx_effects[offset] = notes_prefix; + offset += 1; + for i in 0..NUM_NOTES { + reconstructed_tx_effects[offset + i] = + builder.tube_data.note_hashes.storage()[i].value(); + } + offset += NUM_NOTES; + // nullifiers + let nullifiers_prefix = + field_from_bytes([NULLIFIERS_PREFIX, 0, NUM_NULLIFIERS as u8], true); + reconstructed_tx_effects[offset] = nullifiers_prefix; + offset += 1; + for i in 0..NUM_NULLIFIERS { + reconstructed_tx_effects[offset + i] = builder.nullifiers.storage()[i].value; + } + offset += NUM_NULLIFIERS; + // l2 to l1 msgs + let l2_to_l1_msgs_prefix = field_from_bytes([L2_L1_MSGS_PREFIX, 0, NUM_MSGS as u8], true); + reconstructed_tx_effects[offset] = l2_to_l1_msgs_prefix; + offset += 1; + for i in 0..NUM_MSGS { + reconstructed_tx_effects[offset + i] = silo_l2_to_l1_message( + builder.tube_data.l2_to_l1_msgs.storage()[i], + builder.tube_data.tx_context.version, + builder.tube_data.tx_context.chain_id, + ); + } + offset += NUM_MSGS; + // note logs + let note_encrypted_logs_prefix = + field_from_bytes([NOTE_ENCRYPTED_LOGS_PREFIX, 0, NUM_NOTES as u8], true); + reconstructed_tx_effects[offset] = note_encrypted_logs_prefix; + offset += 1; + for i in 0..NUM_NOTES { + reconstructed_tx_effects[offset + i] = + builder.tube_data.note_encrypted_logs_hashes.storage()[i].value(); + } + offset += NUM_NOTES; + // enc logs + let encrypted_logs_prefix = + field_from_bytes([ENCRYPTED_LOGS_PREFIX, 0, NUM_ENC_LOGS as u8], true); + reconstructed_tx_effects[offset] = encrypted_logs_prefix; + offset += 1; + for i in 0..NUM_ENC_LOGS { + reconstructed_tx_effects[offset + i] = types::hash::silo_encrypted_log_hash(builder + .tube_data + .encrypted_logs_hashes + .storage()[i] + .expose_to_public()); + } + offset += NUM_ENC_LOGS; + // unenc logs + let unencrypted_logs_prefix = + field_from_bytes([UNENCRYPTED_LOGS_PREFIX, 0, NUM_UNENC_LOGS as u8], true); + reconstructed_tx_effects[offset] = unencrypted_logs_prefix; + offset += 1; + for i in 0..NUM_UNENC_LOGS { + reconstructed_tx_effects[offset + i] = types::hash::silo_unencrypted_log_hash( + builder.tube_data.unencrypted_logs_hashes.storage()[i], + ); + } + offset += NUM_UNENC_LOGS; + // cc logs + let contract_class_logs_prefix = + field_from_bytes([CONTRACT_CLASS_LOGS_PREFIX, 0, NUM_CC_LOGS as u8], true); + reconstructed_tx_effects[offset] = contract_class_logs_prefix; + offset += 1; + for i in 0..NUM_CC_LOGS { + reconstructed_tx_effects[offset + i] = types::hash::silo_unencrypted_log_hash( + builder.tube_data.contract_class_logs_hashes.storage()[i], + ); + } + offset += NUM_CC_LOGS; + + // Sanity check - if this fails change the above use of 128 + assert(offset == 128); - let hash_input_flattened = [0; TX_EFFECTS_HASH_INPUT_FIELDS * 32]; - let sha_digest = std::hash::sha256(hash_input_flattened); - let expected_tx_effects_hash = field_from_bytes_32_trunc(sha_digest); - assert_eq(outputs.txs_effects_hash, expected_tx_effects_hash); + let mut expected_sponge = outputs.start_sponge_blob; + expected_sponge.absorb(reconstructed_tx_effects, offset); + assert(outputs.end_sponge_blob.eq(expected_sponge)); } #[test] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr index 1fff4bb07ff..f095b81b5d2 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr @@ -11,7 +11,7 @@ use crate::{ }, state_diff_hints::PublicBaseStateDiffHints, }, - components::{compute_kernel_out_hash, compute_tx_effects_hash}, + components::{append_tx_effects_for_blob, compute_kernel_out_hash}, }; use dep::types::{ abis::{ @@ -22,6 +22,7 @@ use dep::types::{ log_hash::{LogHash, ScopedLogHash}, nullifier_leaf_preimage::NullifierLeafPreimage, public_data_write::PublicDataWrite, + sponge_blob::SpongeBlob, tube::PublicTubeData, }, constants::{ @@ -44,6 +45,7 @@ pub struct PublicBaseRollupInputs { avm_proof_data: AvmProofData, start: PartialStateReference, + start_sponge_blob: SpongeBlob, state_diff_hints: PublicBaseStateDiffHints, fee_payer_fee_juice_balance_read_hint: PublicDataHint, @@ -185,12 +187,13 @@ impl PublicBaseRollupInputs { let revert_code = if reverted { 1 } else { 0 }; - let tx_effects_hash = compute_tx_effects_hash( + let end_sponge_blob = append_tx_effects_for_blob( combined_accumulated_data, revert_code, self.avm_proof_data.public_inputs.transaction_fee, all_public_data_update_requests, - out_hash, + siloed_l2_to_l1_msgs, + self.start_sponge_blob, ); // Perform membership checks that the notes provided exist within the historical trees data @@ -210,7 +213,8 @@ impl PublicBaseRollupInputs { nullifier_tree: end_nullifier_tree_snapshot, public_data_tree: end_public_data_tree_snapshot, }, - txs_effects_hash: tx_effects_hash, + start_sponge_blob: self.start_sponge_blob, + end_sponge_blob, out_hash, accumulated_fees: self.avm_proof_data.public_inputs.transaction_fee, } @@ -371,22 +375,27 @@ mod tests { components::fees::compute_fee_payer_fee_juice_balance_leaf_slot, public_base_rollup::PublicBaseRollupInputs, state_diff_hints::PublicBaseStateDiffHints, }, - components::TX_EFFECTS_HASH_INPUT_FIELDS, + components::{append_tx_effects_for_blob, TX_EFFECTS_BLOB_HASH_INPUT_FIELDS}, }; use dep::types::{ abis::{ + accumulated_data::CombinedAccumulatedData, append_only_tree_snapshot::AppendOnlyTreeSnapshot, nullifier_leaf_preimage::NullifierLeafPreimage, public_data_write::PublicDataWrite, + sponge_blob::SpongeBlob, }, address::{AztecAddress, EthAddress}, constants::{ - ARCHIVE_HEIGHT, AVM_VK_INDEX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, + ARCHIVE_HEIGHT, AVM_VK_INDEX, CONTRACT_CLASS_LOGS_PREFIX, ENCRYPTED_LOGS_PREFIX, + L2_L1_MSGS_PREFIX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_HASH_SUBTREE_HEIGHT, - NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NOTE_HASH_TREE_HEIGHT, NULLIFIER_SUBTREE_HEIGHT, - NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, - PRIVATE_KERNEL_EMPTY_INDEX, PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, - PUBLIC_DATA_TREE_HEIGHT, TUBE_VK_INDEX, + NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NOTE_HASH_TREE_HEIGHT, NOTES_PREFIX, + NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, + NULLIFIERS_PREFIX, PRIVATE_KERNEL_EMPTY_INDEX, + PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PUBLIC_DATA_TREE_HEIGHT, + PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, REVERT_CODE_PREFIX, TUBE_VK_INDEX, TX_FEE_PREFIX, + TX_START_PREFIX, UNENCRYPTED_LOGS_PREFIX, }, data::{public_data_hint::PublicDataHint, PublicDataTreeLeaf, PublicDataTreeLeafPreimage}, hash::silo_l2_to_l1_message, @@ -396,8 +405,8 @@ mod tests { tests::{fixture_builder::FixtureBuilder, fixtures, merkle_tree_utils::NonEmptyMerkleTree}, traits::{Empty, is_empty}, utils::{ - arrays::get_sorted_tuple::get_sorted_tuple, - field::{field_from_bytes_32_trunc, full_field_less_than}, + arrays::{array_concat, get_sorted_tuple::get_sorted_tuple}, + field::{field_from_bytes, full_field_less_than}, }, }; @@ -537,6 +546,30 @@ mod tests { ) } + fn build_pre_existing_tx_effects( + self, + ) -> (CombinedAccumulatedData, [PublicDataWrite; MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX]) { + let mut res = CombinedAccumulatedData::empty(); + res.note_hashes = self.pre_existing_notes; + res.nullifiers = self.pre_existing_nullifiers.map(|nullifier: NullifierLeafPreimage| { + nullifier.nullifier + }); + let all_public_data_update_requests = self.pre_existing_public_data.map( + |leaf_preimage: PublicDataTreeLeafPreimage| { + PublicDataWrite { leaf_slot: leaf_preimage.slot, value: leaf_preimage.value } + }, + ); + let padded_all_public_data_update_requests = array_concat( + all_public_data_update_requests, + [ + PublicDataWrite::empty(); MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX + - PRE_EXISTING_PUBLIC_DATA_LEAVES + ], + ); + + (res, padded_all_public_data_update_requests) + } + fn extract_subtree_sibling_path( path: [Field; FULL_HEIGHT], mut sibling_path: [Field; SIBLING_PATH_LENGTH], @@ -726,6 +759,18 @@ mod tests { public_data_tree: start_public_data_tree_snapshot, }; + let (pre_existing_tx_effects, pre_existing_public_data_update_requests) = + self.build_pre_existing_tx_effects(); + + let start_sponge_blob = append_tx_effects_for_blob( + pre_existing_tx_effects, + 0, + 0, + pre_existing_public_data_update_requests, + [0; MAX_L2_TO_L1_MSGS_PER_TX], + SpongeBlob::new(TX_EFFECTS_BLOB_HASH_INPUT_FIELDS), + ); + let state_diff_hints = PublicBaseStateDiffHints { nullifier_predecessor_preimages, nullifier_predecessor_membership_witnesses, @@ -742,6 +787,7 @@ mod tests { tube_data, avm_proof_data, start, + start_sponge_blob, state_diff_hints, archive_root_membership_witness: MembershipWitness { leaf_index: 0, @@ -963,13 +1009,178 @@ mod tests { } #[test] - unconstrained fn empty_tx_effects_hash() { + unconstrained fn empty_tx_effects_sponge() { let outputs = PublicBaseRollupInputsBuilder::new().execute(); + let mut expected_sponge = outputs.start_sponge_blob; + assert(outputs.end_sponge_blob.eq(expected_sponge)); + } + + #[test] + unconstrained fn non_empty_tx_effects_sponge() { + let mut builder = PublicBaseRollupInputsBuilder::new(); + builder.avm_data.append_note_hashes(50); + let outputs = builder.execute(); + let mut tx_effects = [0; 53]; + // TODO(#8954): This test uses 50 notes and 3 extra absorbed fields + // This may change when logs are deconstructed + // Initial field = TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // The first 3 are: i=0 init field, i=1: tx fee, i=2: note prefix + tx_effects[0] = field_from_bytes( + array_concat( + TX_START_PREFIX.to_be_bytes::<8>(), + [0, 0, tx_effects.len() as u8, 0, REVERT_CODE_PREFIX, 0, 0], + ), + true, + ); + tx_effects[1] = field_from_bytes( + array_concat([TX_FEE_PREFIX, 0], (0).to_be_bytes::<29>()), + true, + ); + tx_effects[2] = field_from_bytes([NOTES_PREFIX, 0, 50 as u8], true); + for i in 0..50 { + tx_effects[i + 3] = builder.avm_data.note_hashes.storage()[i].value(); + } + let mut expected_sponge = outputs.start_sponge_blob; + + expected_sponge.absorb(tx_effects, tx_effects.len()); + assert(outputs.end_sponge_blob.eq(expected_sponge)); + } + + #[test] + unconstrained fn fuller_tx_effects_sponge() { + let NUM_NOTES = 50; + let NUM_NULLIFIERS = 3; + let NUM_MSGS = 5; + let NUM_ENC_LOGS = 4; + let NUM_UNENC_LOGS = 6; + let NUM_CC_LOGS = 1; + let PUB_DATA_SLOT = 25; + let PUB_DATA_VALUE = 60; + let tx_fee = 100_000; + let mut builder = PublicBaseRollupInputsBuilder::new(); + builder.transaction_fee = tx_fee; + builder.avm_data.append_note_hashes(NUM_NOTES); + // Copied from nullifier tests above: + builder.pre_existing_nullifiers[0] = + NullifierLeafPreimage { nullifier: 0, next_nullifier: 7, next_index: 1 }; + builder.pre_existing_nullifiers[1] = + NullifierLeafPreimage { nullifier: 7, next_nullifier: 0, next_index: 0 }; + for i in 0..NUM_NULLIFIERS { + builder.nullifiers.push( + NullifierInsertion { existing_index: 1, value: (8 + i) as Field }, + ); + } + builder.avm_data.append_l2_to_l1_msgs(NUM_MSGS); + // Copied from public data test below: + builder.pre_existing_public_data[0] = + PublicDataTreeLeafPreimage { slot: 20, value: 40, next_slot: 0, next_index: 0 }; + builder.public_data_writes.push(( + 0, PublicDataTreeLeaf { slot: PUB_DATA_SLOT, value: PUB_DATA_VALUE }, + )); + builder.tube_data.append_encrypted_log_hashes(NUM_ENC_LOGS); + builder.avm_data.append_unencrypted_log_hashes(NUM_UNENC_LOGS); + // Below will only work with NUM_CC_LOGS=1 + builder.tube_data.add_contract_class_log_hash(1, 2); + let outputs = builder.execute(); + + let mut reconstructed_tx_effects = [0; TX_EFFECTS_BLOB_HASH_INPUT_FIELDS]; + // Initial field = TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // revert code = 0 + // fields appended here = 80 = offset once appending complete + reconstructed_tx_effects[0] = field_from_bytes( + array_concat( + TX_START_PREFIX.to_be_bytes::<8>(), + [0, 0, 80, 0, REVERT_CODE_PREFIX, 0, 0], + ), + true, + ); + // tx fee + reconstructed_tx_effects[1] = field_from_bytes( + array_concat([TX_FEE_PREFIX, 0], tx_fee.to_be_bytes::<29>()), + true, + ); + // notes + let mut offset = 2; + let notes_prefix = field_from_bytes([NOTES_PREFIX, 0, NUM_NOTES as u8], true); + reconstructed_tx_effects[offset] = notes_prefix; + offset += 1; + for i in 0..NUM_NOTES { + reconstructed_tx_effects[offset + i] = + builder.avm_data.note_hashes.storage()[i].value(); + } + offset += NUM_NOTES; + // nullifiers + let nullifiers_prefix = + field_from_bytes([NULLIFIERS_PREFIX, 0, NUM_NULLIFIERS as u8], true); + reconstructed_tx_effects[offset] = nullifiers_prefix; + offset += 1; + for i in 0..NUM_NULLIFIERS { + reconstructed_tx_effects[offset + i] = builder.nullifiers.storage()[i].value; + } + offset += NUM_NULLIFIERS; + // l2 to l1 msgs + let l2_to_l1_msgs_prefix = field_from_bytes([L2_L1_MSGS_PREFIX, 0, NUM_MSGS as u8], true); + reconstructed_tx_effects[offset] = l2_to_l1_msgs_prefix; + offset += 1; + for i in 0..NUM_MSGS { + reconstructed_tx_effects[offset + i] = silo_l2_to_l1_message( + builder.avm_data.l2_to_l1_msgs.storage()[i], + builder.avm_data.tx_context.version, + builder.avm_data.tx_context.chain_id, + ); + } + offset += NUM_MSGS; + // public data update + let public_data_update_requests_prefix = + field_from_bytes([PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, 0, 2], true); + reconstructed_tx_effects[offset] = public_data_update_requests_prefix; + offset += 1; + reconstructed_tx_effects[offset] = PUB_DATA_SLOT; + reconstructed_tx_effects[offset + 1] = PUB_DATA_VALUE; + offset += 2; + // TODO(#8954): The below will change with log deconstruction + // enc logs + let encrypted_logs_prefix = + field_from_bytes([ENCRYPTED_LOGS_PREFIX, 0, NUM_ENC_LOGS as u8], true); + reconstructed_tx_effects[offset] = encrypted_logs_prefix; + offset += 1; + for i in 0..NUM_ENC_LOGS { + reconstructed_tx_effects[offset + i] = types::hash::silo_encrypted_log_hash(builder + .tube_data + .encrypted_logs_hashes + .storage()[i] + .expose_to_public()); + } + offset += NUM_ENC_LOGS; + // unenc logs + let unencrypted_logs_prefix = + field_from_bytes([UNENCRYPTED_LOGS_PREFIX, 0, NUM_UNENC_LOGS as u8], true); + reconstructed_tx_effects[offset] = unencrypted_logs_prefix; + offset += 1; + for i in 0..NUM_UNENC_LOGS { + reconstructed_tx_effects[offset + i] = types::hash::silo_unencrypted_log_hash( + builder.avm_data.unencrypted_logs_hashes.storage()[i], + ); + } + offset += NUM_UNENC_LOGS; + // cc logs + let contract_class_logs_prefix = + field_from_bytes([CONTRACT_CLASS_LOGS_PREFIX, 0, NUM_CC_LOGS as u8], true); + reconstructed_tx_effects[offset] = contract_class_logs_prefix; + offset += 1; + for i in 0..NUM_CC_LOGS { + reconstructed_tx_effects[offset + i] = types::hash::silo_unencrypted_log_hash( + builder.tube_data.contract_class_logs_hashes.storage()[i], + ); + } + offset += NUM_CC_LOGS; + + // Sanity check - if this fails change the above use of 80 + assert(offset == 80); - let hash_input_flattened = [0; TX_EFFECTS_HASH_INPUT_FIELDS * 32]; - let sha_digest = std::hash::sha256(hash_input_flattened); - let expected_tx_effects_hash = field_from_bytes_32_trunc(sha_digest); - assert_eq(outputs.txs_effects_hash, expected_tx_effects_hash); + let mut expected_sponge = outputs.start_sponge_blob; + expected_sponge.absorb(reconstructed_tx_effects, offset); + assert(outputs.end_sponge_blob.eq(expected_sponge)); } #[test] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr index 50b956e01a8..553a2ab1848 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr @@ -44,6 +44,12 @@ impl BlockMergeRollupInputs { let fees = components::accumulate_blocks_fees(left, right); + // TODO: We need to eventually accumulate blob info to a single BlobPublicInputs instance which will verify multiple blobs in one call + // For now, we do them individually + // How we accumulate is being worked on by @Mike + // let blob_public_inputs = left.blob_public_inputs.accumulate(right.blob_public_inputs); + let blob_public_inputs = components::accumulate_blob_public_inputs(left, right); + BlockRootOrBlockMergePublicInputs { previous_archive: left.previous_archive, new_archive: right.new_archive, @@ -56,6 +62,7 @@ impl BlockMergeRollupInputs { vk_tree_root: left.vk_tree_root, protocol_contract_tree_root: left.protocol_contract_tree_root, prover_id: left.prover_id, // TODO(#7346): Temporarily added prover_id while we verify block-root proofs on L1 + blob_public_inputs, } } } @@ -146,6 +153,25 @@ mod tests { ); } + #[test] + fn blob_inputs_are_accumulated() { + let mut inputs = default_block_merge_rollup_inputs(); + let outputs = inputs.block_merge_rollup_circuit(); + + assert_eq( + outputs.blob_public_inputs[0], + inputs.previous_rollup_data[0] + .block_root_or_block_merge_public_inputs + .blob_public_inputs[0], + ); + assert_eq( + outputs.blob_public_inputs[1], + inputs.previous_rollup_data[1] + .block_root_or_block_merge_public_inputs + .blob_public_inputs[0], + ); + } + #[test] fn valid_previous_circuit_block_root() { let mut inputs = default_block_merge_rollup_inputs(); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr index bd2ee6a1cb6..73da5991875 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr @@ -5,12 +5,13 @@ use crate::{ }, components, }; +use blob::{blob::evaluate_blobs, blob_public_inputs::{BlobCommitment, BlockBlobPublicInputs}}; use parity_lib::root::root_rollup_parity_input::RootRollupParityInput; use types::{ abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::{ - ARCHIVE_HEIGHT, AZTEC_MAX_EPOCH_DURATION, L1_TO_L2_MSG_SUBTREE_HEIGHT, - L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, MERGE_ROLLUP_INDEX, + ARCHIVE_HEIGHT, AZTEC_MAX_EPOCH_DURATION, BLOBS_PER_BLOCK, FIELDS_PER_BLOB, + L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, MERGE_ROLLUP_INDEX, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, PRIVATE_BASE_ROLLUP_VK_INDEX, PUBLIC_BASE_ROLLUP_VK_INDEX, }, @@ -20,7 +21,6 @@ use types::{ state_reference::StateReference, traits::Empty, }; -use types::debug_log::debug_log_format; global ALLOWED_PREVIOUS_CIRCUITS = [MERGE_ROLLUP_INDEX, PRIVATE_BASE_ROLLUP_VK_INDEX, PUBLIC_BASE_ROLLUP_VK_INDEX]; @@ -47,6 +47,14 @@ pub struct BlockRootRollupInputs { previous_block_hash: Field, // TODO(#7346): Temporarily added prover_id while we verify block-root proofs on L1 prover_id: Field, + // Fields for blob verification made of all tx effects in this block + // (will likely change to be accumulated and sent up to the final root) + blobs_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], + // see blob/src/main.nr -> main() - these are used for creating the challenge z + blob_commitments: [BlobCommitment; BLOBS_PER_BLOCK], + // Flat sha256 hash of the EVM blob hashes, can be injected here as the contract check its validity vs the blob_public_inputs below + // NB: to fit it into a field, we truncate to 31 bytes + blobs_hash: Field, } impl BlockRootRollupInputs { @@ -70,6 +78,7 @@ impl BlockRootRollupInputs { components::assert_txs_filled_from_left(left, right); components::assert_equal_constants(left, right); components::assert_prev_rollups_follow_on_from_each_other(left, right); + components::assert_first_sponge_blob_empty(left); // Insert subtree into the l1 to l2 data tree let empty_l1_to_l2_subtree_root = calculate_empty_tree_root(L1_TO_L2_MSG_SUBTREE_HEIGHT); @@ -90,30 +99,13 @@ impl BlockRootRollupInputs { let content_commitment = ContentCommitment { num_txs: (left.num_txs + right.num_txs) as Field, - txs_effects_hash: components::compute_txs_effects_hash(self.previous_rollup_data), + blobs_hash: self.blobs_hash, in_hash: self.l1_to_l2_roots.public_inputs.sha_root, out_hash: components::compute_out_hash(self.previous_rollup_data), }; let total_fees = components::accumulate_fees(left, right); - // unsafe { - // debug_log_format("Assembling header in block root rollup", []); - // debug_log_format( - // "header.last_archive={}", - // left.constants.last_archive.serialize() - // ); - // debug_log_format( - // "header.content_commitment={}", - // content_commitment.serialize() - // ); - // debug_log_format("header.state={}", state.serialize()); - // debug_log_format( - // "header.global_variables={}", - // left.constants.global_variables.serialize() - // ); - // debug_log_format("header.total_fees={0}", [total_fees]); - // } let header = Header { last_archive: left.constants.last_archive, content_commitment, @@ -138,6 +130,13 @@ impl BlockRootRollupInputs { fee_arr[0] = FeeRecipient { recipient: left.constants.global_variables.coinbase, value: total_fees }; + let mut blob_public_inputs = [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION]; + blob_public_inputs[0] = evaluate_blobs( + self.blobs_fields, + self.blob_commitments, + right.end_sponge_blob, + ); + BlockRootOrBlockMergePublicInputs { previous_archive: left.constants.last_archive, // archive before this block was added new_archive: archive, // archive once this block was added @@ -150,6 +149,7 @@ impl BlockRootRollupInputs { vk_tree_root: left.constants.vk_tree_root, protocol_contract_tree_root: left.constants.protocol_contract_tree_root, prover_id: self.prover_id, + blob_public_inputs, } } } @@ -166,6 +166,9 @@ impl Empty for BlockRootRollupInputs { new_archive_sibling_path: [0; ARCHIVE_HEIGHT], previous_block_hash: 0, prover_id: 0, + blobs_fields: [0; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], + blob_commitments: [BlobCommitment::empty(); BLOBS_PER_BLOCK], + blobs_hash: 0, } } } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr index bbd263c34e0..6c7223dab66 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr @@ -1,5 +1,7 @@ -use crate::abis::block_root_or_block_merge_public_inputs::BlockRootOrBlockMergePublicInputs; -use crate::abis::block_root_or_block_merge_public_inputs::FeeRecipient; +use crate::abis::block_root_or_block_merge_public_inputs::{ + BlockRootOrBlockMergePublicInputs, FeeRecipient, +}; +use blob::blob_public_inputs::BlockBlobPublicInputs; use types::abis::{ append_only_tree_snapshot::AppendOnlyTreeSnapshot, global_variables::GlobalVariables, }; @@ -29,6 +31,7 @@ impl EmptyBlockRootRollupInputs { vk_tree_root: self.vk_tree_root, protocol_contract_tree_root: self.protocol_contract_tree_root, prover_id: self.prover_id, + blob_public_inputs: [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION], } } } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr index dd7f71030b0..f9c527cf425 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr @@ -9,6 +9,7 @@ pub use empty_block_root_rollup_inputs::EmptyBlockRootRollupInputs; mod tests { use crate::tests::block_root_rollup_inputs::default_block_root_rollup_inputs; use dep::types::hash::accumulate_sha256; + use std::hash::poseidon2::Poseidon2; #[test] fn check_block_hashes_empty_blocks() { @@ -39,4 +40,38 @@ mod tests { .global_variables, )); } + + #[test] + unconstrained fn check_blob() { + let inputs = default_block_root_rollup_inputs(); + let outputs = inputs.block_root_rollup_circuit(); + + let mut expected_sponge = + inputs.previous_rollup_data[0].base_or_merge_rollup_public_inputs.start_sponge_blob; + expected_sponge.absorb([1, 2], expected_sponge.expected_fields); + + assert(expected_sponge.eq( + inputs.previous_rollup_data[1].base_or_merge_rollup_public_inputs.end_sponge_blob, + )); + + let hashed_tx_effects = expected_sponge.squeeze(); + let expected_z = Poseidon2::hash( + [ + hashed_tx_effects, + inputs.blob_commitments[0].inner[0], + inputs.blob_commitments[0].inner[1], + ], + 3, + ); + + assert(outputs.blob_public_inputs[0].inner[0].z == expected_z); + } + + #[test(should_fail_with = "block's first blob sponge was not empty")] + unconstrained fn check_blob_empty() { + let mut inputs = default_block_root_rollup_inputs(); + inputs.previous_rollup_data[0].base_or_merge_rollup_public_inputs.start_sponge_blob.fields = + 1; + let _ = inputs.block_root_rollup_circuit(); + } } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr index 7dbe6021d88..9fb87848685 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr @@ -1,28 +1,33 @@ use crate::abis::{ base_or_merge_rollup_public_inputs::BaseOrMergeRollupPublicInputs, block_root_or_block_merge_public_inputs::{BlockRootOrBlockMergePublicInputs, FeeRecipient}, -}; -use crate::abis::{ - previous_rollup_block_data::PreviousRollupBlockData, previous_rollup_data::PreviousRollupData, + previous_rollup_block_data::PreviousRollupBlockData, + previous_rollup_data::PreviousRollupData, }; use dep::types::{ abis::{ accumulated_data::CombinedAccumulatedData, log_hash::{LogHash, ScopedLogHash}, public_data_write::PublicDataWrite, + sponge_blob::SpongeBlob, }, constants::{ - AZTEC_MAX_EPOCH_DURATION, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, - MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, - MAX_UNENCRYPTED_LOGS_PER_TX, + AZTEC_MAX_EPOCH_DURATION, CONTRACT_CLASS_LOGS_PREFIX, ENCRYPTED_LOGS_PREFIX, + L2_L1_MSGS_PREFIX, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENCRYPTED_LOGS_PER_TX, + MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_HASHES_PER_TX, + MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, + MAX_UNENCRYPTED_LOGS_PER_TX, NOTE_ENCRYPTED_LOGS_PREFIX, NOTES_PREFIX, NULLIFIERS_PREFIX, + PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, REVERT_CODE_PREFIX, TX_FEE_PREFIX, TX_START_PREFIX, + UNENCRYPTED_LOGS_PREFIX, }, hash::{ accumulate_sha256, compute_tx_logs_hash, silo_encrypted_log_hash, silo_unencrypted_log_hash, }, merkle_tree::VariableMerkleTree, traits::is_empty, - utils::arrays::{array_length, array_merge}, + utils::{arrays::{array_concat, array_length, array_merge}, field::field_from_bytes}, }; +use blob::blob_public_inputs::BlockBlobPublicInputs; /** * Asserts that the tree formed by rollup circuits is filled greedily from L to R @@ -65,7 +70,7 @@ pub fn assert_equal_constants( } // asserts that the end snapshot of previous_rollup 0 equals the start snapshot of previous_rollup 1 (i.e. ensure they -// follow on from one-another). Ensures that right uses the tres that was updated by left. +// follow on from one-another). Ensures that right uses the tree that was updated by left. pub fn assert_prev_rollups_follow_on_from_each_other( left: BaseOrMergeRollupPublicInputs, right: BaseOrMergeRollupPublicInputs, @@ -82,9 +87,12 @@ pub fn assert_prev_rollups_follow_on_from_each_other( left.end.public_data_tree.eq(right.start.public_data_tree), "input proofs have different public data tree snapshots", ); + assert( + left.end_sponge_blob.eq(right.start_sponge_blob), + "input proofs have different blob data sponges", + ); } -// TODO(Miranda): split out? pub fn assert_prev_block_rollups_follow_on_from_each_other( left: BlockRootOrBlockMergePublicInputs, right: BlockRootOrBlockMergePublicInputs, @@ -156,6 +164,33 @@ pub fn accumulate_blocks_fees( array_merge(left.fees, right.fees) } +// TODO: This fn will be obselete once we have integrated accumulation of blob PIs +// The goal is to acc. the commitments and openings s.t. one set verifies the opening of many blobs +// How we accumulate is being worked on by @Mike +pub fn accumulate_blob_public_inputs( + left: BlockRootOrBlockMergePublicInputs, + right: BlockRootOrBlockMergePublicInputs, +) -> [BlockBlobPublicInputs; AZTEC_MAX_EPOCH_DURATION] { + let left_len = array_length(left.blob_public_inputs); + let right_len = array_length(right.blob_public_inputs); + assert( + left_len + right_len <= AZTEC_MAX_EPOCH_DURATION, + "too many blob public input structs accumulated in rollup", + ); + // NB: For some reason, the below is around 150k gates cheaper than array_merge + let mut add_from_left = true; + let mut result = [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION]; + for i in 0..result.len() { + add_from_left &= i != left_len; + if (add_from_left) { + result[i] = left.blob_public_inputs[i]; + } else { + result[i] = right.blob_public_inputs[i - left_len]; + } + } + result +} + /** * @brief From two previous rollup data, compute a single out hash * @@ -168,7 +203,7 @@ pub fn compute_out_hash(previous_rollup_data: [PreviousRollupData; 2]) -> Field previous_rollup_data[1].base_or_merge_rollup_public_inputs.out_hash, ]) } -// TODO(Miranda): combine fns? + pub fn compute_blocks_out_hash(previous_rollup_data: [PreviousRollupBlockData; 2]) -> Field { if previous_rollup_data[1].block_root_or_block_merge_public_inputs.is_padding() { previous_rollup_data[0].block_root_or_block_merge_public_inputs.out_hash @@ -186,19 +221,6 @@ pub fn compute_kernel_out_hash(l2_to_l1_msgs: [Field; MAX_L2_TO_L1_MSGS_PER_TX]) merkle_tree.get_root() } -/** - * @brief From two previous rollup data, compute a single txs effects hash - * - * @param previous_rollup_data - * @return The hash of the transaction effects stored in 2 fields - */ -pub fn compute_txs_effects_hash(previous_rollup_data: [PreviousRollupData; 2]) -> Field { - accumulate_sha256([ - previous_rollup_data[0].base_or_merge_rollup_public_inputs.txs_effects_hash, - previous_rollup_data[1].base_or_merge_rollup_public_inputs.txs_effects_hash, - ]) -} - fn silo_and_hash_unencrypted_logs( unencrypted_logs_hashes: [ScopedLogHash; N], ) -> Field { @@ -213,7 +235,7 @@ fn silo_and_hash_unencrypted_logs( } fn silo_and_hash_encrypted_logs( - encrypted_logs_hashes: [ScopedLogHash; MAX_UNENCRYPTED_LOGS_PER_TX], + encrypted_logs_hashes: [ScopedLogHash; MAX_ENCRYPTED_LOGS_PER_TX], ) -> Field { let siloed_encrypted_logs = encrypted_logs_hashes.map(|log: ScopedLogHash| { LogHash { @@ -225,41 +247,51 @@ fn silo_and_hash_encrypted_logs( compute_tx_logs_hash(siloed_encrypted_logs) } -// Tx effects hash consists of +/** + * Asserts that the first sponge blob was empty to begin with. + * This prevents injecting unchecked tx effects in the first base of a rollup. + */ +pub fn assert_first_sponge_blob_empty(left: BaseOrMergeRollupPublicInputs) { + let expected_sponge_blob = SpongeBlob::new(left.start_sponge_blob.expected_fields); + assert( + left.start_sponge_blob.eq(expected_sponge_blob), + "block's first blob sponge was not empty", + ); +} + +// Tx effects consist of // 1 field for revert code // 1 field for transaction fee // MAX_NOTE_HASHES_PER_TX fields for note hashes // MAX_NULLIFIERS_PER_TX fields for nullifiers -// 1 field for L2 to L1 messages (represented by the out_hash) +// MAX_L2_TO_L1_MSGS_PER_TX for L2 to L1 messages // MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX public data update requests -> MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * 2 fields -// __ -// 1 note encrypted logs length --> 1 field | -// 1 encrypted logs length --> 1 field | -> 4 types of logs - 4 fields for its lengths -// 1 unencrypted logs length --> 1 field | -// 1 contract class logs length --> 1 field __| -// __ -// 1 note encrypted logs hash --> 1 sha256 hash -> 31 bytes -> 1 fields | Beware when populating bytes that we fill (prepend) to 32! | -// 1 encrypted logs hash --> 1 sha256 hash -> 31 bytes -> 1 fields | Beware when populating bytes that we fill (prepend) to 32! | -> 4 types of logs - 4 fields for its hashes -// 1 unencrypted logs hash --> 1 sha256 hash -> 31 bytes -> 1 fields | Beware when populating bytes that we fill (prepend) to 32! | -// 1 contract class logs hash --> 1 sha256 hash -> 31 bytes -> 1 fields | Beware when populating bytes that we fill (prepend) to 32! __| -global TX_EFFECTS_HASH_INPUT_FIELDS = 1 +// TODO(#8954): When logs are refactored into fields, we will append the values here, for now appending the log hashes: +// MAX_NOTE_ENCRYPTED_LOGS_PER_TX fields for note encrypted logs +// MAX_ENCRYPTED_LOGS_PER_TX fields for encrypted logs +// MAX_UNENCRYPTED_LOGS_PER_TX fields for unencrypted logs +// MAX_CONTRACT_CLASS_LOGS_PER_TX fields for contract class logs +// 8 fields for prefixes for each of the above categories +global TX_EFFECTS_BLOB_HASH_INPUT_FIELDS: u32 = 1 + 1 + MAX_NOTE_HASHES_PER_TX + MAX_NULLIFIERS_PER_TX - + 1 + + MAX_L2_TO_L1_MSGS_PER_TX + MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * 2 - + 4 - + 4; - -// Computes the tx effects hash for a base rollup (a single transaction) -pub fn compute_tx_effects_hash( + + MAX_NOTE_ENCRYPTED_LOGS_PER_TX + + MAX_ENCRYPTED_LOGS_PER_TX + + MAX_UNENCRYPTED_LOGS_PER_TX + + MAX_CONTRACT_CLASS_LOGS_PER_TX + + 8; +pub fn append_tx_effects_for_blob( combined: CombinedAccumulatedData, revert_code: u8, transaction_fee: Field, all_public_data_update_requests: [PublicDataWrite; MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX], - out_hash: Field, -) -> Field { - let mut tx_effects_hash_input = [0; TX_EFFECTS_HASH_INPUT_FIELDS]; + l2_to_l1_msgs: [Field; MAX_L2_TO_L1_MSGS_PER_TX], + start_sponge_blob: SpongeBlob, +) -> SpongeBlob { + let mut tx_effects_hash_input = [0; TX_EFFECTS_BLOB_HASH_INPUT_FIELDS]; let note_hashes = combined.note_hashes; let nullifiers = combined.nullifiers; @@ -268,94 +300,175 @@ pub fn compute_tx_effects_hash( // The incoming all_public_data_update_requests may have empty update requests in the middle, so we move those to the end of the array. let public_data_update_requests = get_all_update_requests_for_tx_effects(all_public_data_update_requests); - let note_logs_length = combined.note_encrypted_log_preimages_length; - let encrypted_logs_length = combined.encrypted_log_preimages_length; - let unencrypted_logs_length = combined.unencrypted_log_preimages_length; - let contract_class_logs_length = combined.contract_class_log_preimages_length; - let note_encrypted_logs_hash = compute_tx_logs_hash(combined.note_encrypted_logs_hashes); - let encrypted_logs_hash = silo_and_hash_encrypted_logs(combined.encrypted_logs_hashes); - let unencrypted_logs_hash = silo_and_hash_unencrypted_logs(combined.unencrypted_logs_hashes); - let contract_class_logs_hash = - silo_and_hash_unencrypted_logs(combined.contract_class_logs_hashes); + let note_encrypted_logs = combined.note_encrypted_logs_hashes.map(|log: LogHash| log.value); + let encrypted_logs = + combined.encrypted_logs_hashes.map(|log: ScopedLogHash| silo_encrypted_log_hash(log)); + let unencrypted_logs = + combined.unencrypted_logs_hashes.map(|log: ScopedLogHash| silo_unencrypted_log_hash(log)); + let contract_class_logs = combined.contract_class_logs_hashes.map(|log: ScopedLogHash| { + silo_unencrypted_log_hash(log) + }); let mut offset = 0; + let mut array_len = 0; - // REVERT CODE - // upcast to Field to have the same size for the purposes of the hash - tx_effects_hash_input[offset] = revert_code as Field; + // NB: for publishing fields of blob data we use the first element of the blob to encode: + // TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // Two bytes are used to encode the number of fields appended here, given by 'offset' + // We only know the value once the appending is complete, hence we overwrite input[0] below + tx_effects_hash_input[offset] = 0; offset += 1; // TX FEE - tx_effects_hash_input[offset] = transaction_fee; + // TODO(Miranda): how many bytes do we expect tx fee to be? Using 29 for now + tx_effects_hash_input[offset] = field_from_bytes( + array_concat([TX_FEE_PREFIX, 0], transaction_fee.to_be_bytes::<29>()), + true, + ); offset += 1; + // NB: The array_length function does NOT constrain we have a sorted left-packed array. + // We can use it because all inputs here come from the kernels which DO contrain left-packing. + // If that ever changes, we will have to constrain it by counting items differently. // NOTE HASHES - for j in 0..MAX_NOTE_HASHES_PER_TX { - tx_effects_hash_input[offset + j] = note_hashes[j]; + array_len = array_length(note_hashes); + if array_len != 0 { + let notes_prefix = field_from_bytes([NOTES_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = notes_prefix; + offset += 1; + + for j in 0..MAX_NOTE_HASHES_PER_TX { + tx_effects_hash_input[offset + j] = note_hashes[j]; + } + offset += array_len; } - offset += MAX_NOTE_HASHES_PER_TX; // NULLIFIERS - for j in 0..MAX_NULLIFIERS_PER_TX { - tx_effects_hash_input[offset + j] = nullifiers[j]; + array_len = array_length(nullifiers); + if array_len != 0 { + let nullifiers_prefix = field_from_bytes([NULLIFIERS_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = nullifiers_prefix; + offset += 1; + + for j in 0..MAX_NULLIFIERS_PER_TX { + tx_effects_hash_input[offset + j] = nullifiers[j]; + } + offset += array_len; } - offset += MAX_NULLIFIERS_PER_TX; // L2 TO L1 MESSAGES - tx_effects_hash_input[offset] = out_hash; - offset += 1; + array_len = array_length(l2_to_l1_msgs); + if array_len != 0 { + let l2_to_l1_msgs_prefix = field_from_bytes([L2_L1_MSGS_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = l2_to_l1_msgs_prefix; + offset += 1; + + for j in 0..MAX_L2_TO_L1_MSGS_PER_TX { + tx_effects_hash_input[offset + j] = l2_to_l1_msgs[j]; + } + offset += array_len; + } // PUBLIC DATA UPDATE REQUESTS - for j in 0..MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX { - tx_effects_hash_input[offset + j * 2] = public_data_update_requests[j].leaf_slot; - tx_effects_hash_input[offset + j * 2 + 1] = public_data_update_requests[j].value; + array_len = array_length(public_data_update_requests); + if array_len != 0 { + let public_data_update_requests_prefix = field_from_bytes( + [PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, 0, (array_len as u8) * 2], + true, + ); + tx_effects_hash_input[offset] = public_data_update_requests_prefix; + offset += 1; + for j in 0..MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX { + tx_effects_hash_input[offset + j * 2] = public_data_update_requests[j].leaf_slot; + tx_effects_hash_input[offset + j * 2 + 1] = public_data_update_requests[j].value; + } + offset += array_len * 2; } - offset += MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * 2; - // NOTE ENCRYPTED LOGS LENGTH - tx_effects_hash_input[offset] = note_logs_length; - offset += 1; + // TODO(#8954): When logs are refactored into fields, we will append the values here + // Currently appending the single log hash as an interim solution + // NOTE ENCRYPTED LOGS + array_len = array_length(note_encrypted_logs); + if array_len != 0 { + let note_encrypted_logs_prefix = + field_from_bytes([NOTE_ENCRYPTED_LOGS_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = note_encrypted_logs_prefix; + offset += 1; + + for j in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX { + tx_effects_hash_input[offset + j] = note_encrypted_logs[j]; + } + offset += array_len; + } - // ENCRYPTED LOGS LENGTH - tx_effects_hash_input[offset] = encrypted_logs_length; - offset += 1; + // ENCRYPTED LOGS + array_len = array_length(encrypted_logs); + if array_len != 0 { + let encrypted_logs_prefix = + field_from_bytes([ENCRYPTED_LOGS_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = encrypted_logs_prefix; + offset += 1; - // UNENCRYPTED LOGS LENGTH - tx_effects_hash_input[offset] = unencrypted_logs_length; - offset += 1; + for j in 0..MAX_ENCRYPTED_LOGS_PER_TX { + tx_effects_hash_input[offset + j] = encrypted_logs[j]; + } + offset += array_len; + } - // CONTRACT CLASS LOGS LENGTH - tx_effects_hash_input[offset] = contract_class_logs_length; - offset += 1; + // UNENCRYPTED LOGS + array_len = array_length(unencrypted_logs); + if array_len != 0 { + let unencrypted_logs_prefix = + field_from_bytes([UNENCRYPTED_LOGS_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = unencrypted_logs_prefix; + offset += 1; - // NOTE ENCRYPTED LOGS HASH - tx_effects_hash_input[offset] = note_encrypted_logs_hash; - offset += 1; + for j in 0..MAX_UNENCRYPTED_LOGS_PER_TX { + tx_effects_hash_input[offset + j] = unencrypted_logs[j]; + } + offset += array_len; + } - // ENCRYPTED LOGS HASH - tx_effects_hash_input[offset] = encrypted_logs_hash; - offset += 1; + // CONTRACT CLASS LOGS + array_len = array_length(contract_class_logs); + if array_len != 0 { + let contract_class_logs_prefix = + field_from_bytes([CONTRACT_CLASS_LOGS_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = contract_class_logs_prefix; + offset += 1; - // UNENCRYPTED LOGS HASH - tx_effects_hash_input[offset] = unencrypted_logs_hash; - offset += 1; + for j in 0..MAX_CONTRACT_CLASS_LOGS_PER_TX { + tx_effects_hash_input[offset + j] = contract_class_logs[j]; + } + offset += array_len; + } - // CONTRACT CLASS LOGS HASH - tx_effects_hash_input[offset] = contract_class_logs_hash; - offset += 1; + // Now we know the number of fields appended, we can assign the first value: + // TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // Start prefix is "tx_start".to_field() => 8 bytes + let prefix_bytes = TX_START_PREFIX.to_be_bytes::<8>(); + // Assigning length to 2 bytes, since we may go over 255 fields + let length_bytes = (offset as Field).to_be_bytes::<2>(); + // REVERT CODE + tx_effects_hash_input[0] = field_from_bytes( + array_concat( + prefix_bytes, + [0, length_bytes[0], length_bytes[1], 0, REVERT_CODE_PREFIX, 0, revert_code], + ), + true, + ); - assert_eq(offset, TX_EFFECTS_HASH_INPUT_FIELDS); // Sanity check - let mut hash_input_flattened = [0; TX_EFFECTS_HASH_INPUT_FIELDS * 32]; - for offset in 0..TX_EFFECTS_HASH_INPUT_FIELDS { - // TODO: This is not checking that the decomposition is smaller than P - let input_as_bytes: [u8; 32] = tx_effects_hash_input[offset].to_be_radix(256); - for byte_index in 0..32 { - hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index]; - } + // NB: using start.absorb & returning start caused issues in ghost values appearing in + // base_rollup_inputs.start when using a fresh sponge. These only appeared when simulating via wasm. + let mut out_sponge = start_sponge_blob; + + // If we have an empty tx (usually a padding tx), we don't want to absorb anything + // An empty tx will only have 2 effects - revert code and fee - hence offset = 2 + if offset != 2 { + out_sponge.absorb(tx_effects_hash_input, offset); } - let sha_digest = dep::types::hash::sha256_to_field(hash_input_flattened); - sha_digest + out_sponge } fn get_all_update_requests_for_tx_effects( @@ -371,18 +484,3 @@ fn get_all_update_requests_for_tx_effects( all_update_requests.storage() } -#[test] -fn consistent_TX_EFFECTS_HASH_INPUT_FIELDS() { - let expected_size = 1 // revert code - + 1 // transaction fee - + MAX_NOTE_HASHES_PER_TX - + MAX_NULLIFIERS_PER_TX - + MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * 2 - + 1 // out hash - + 4 // logs lengths - + 4; // logs hashes - assert( - TX_EFFECTS_HASH_INPUT_FIELDS == expected_size, - "tx effects hash input size is incorrect", - ); -} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/merge/merge_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/merge/merge_rollup_inputs.nr index c2338609672..c58c6e0d081 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/merge/merge_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/merge/merge_rollup_inputs.nr @@ -42,8 +42,6 @@ impl MergeRollupInputs { components::assert_equal_constants(left, right); components::assert_prev_rollups_follow_on_from_each_other(left, right); - // compute calldata hash: - let txs_effects_hash = components::compute_txs_effects_hash(self.previous_rollup_data); let out_hash = components::compute_out_hash(self.previous_rollup_data); let accumulated_fees = components::accumulate_fees(left, right); @@ -54,7 +52,8 @@ impl MergeRollupInputs { constants: left.constants, start: left.start, end: right.end, - txs_effects_hash, + start_sponge_blob: left.start_sponge_blob, + end_sponge_blob: right.end_sponge_blob, out_hash, accumulated_fees, }; @@ -68,7 +67,6 @@ mod tests { use dep::types::constants::{ MERGE_ROLLUP_INDEX, PRIVATE_BASE_ROLLUP_VK_INDEX, ROOT_PARITY_INDEX, }; - use dep::types::hash::accumulate_sha256; use types::merkle_tree::merkle_tree::MerkleTree; use types::tests::fixtures; @@ -110,6 +108,16 @@ mod tests { let _output = inputs.merge_rollup_circuit(); } + #[test(should_fail_with = "input proofs have different blob data sponges")] + fn previous_rollups_dont_follow_sponge() { + let mut inputs = default_merge_rollup_inputs(); + inputs.previous_rollup_data[0].base_or_merge_rollup_public_inputs.end_sponge_blob.sponge.state[0] = + 0; + inputs.previous_rollup_data[1].base_or_merge_rollup_public_inputs.start_sponge_blob.sponge.state[0] = + 1; + let _output = inputs.merge_rollup_circuit(); + } + #[test] fn rollup_fields_are_set_correctly() { let mut inputs = default_merge_rollup_inputs(); @@ -167,12 +175,13 @@ mod tests { } #[test] - fn txs_effects_hash() { + fn txs_effects_sponge() { let mut inputs = default_merge_rollup_inputs(); - let expected_hash = accumulate_sha256([1, 2]); let outputs = inputs.merge_rollup_circuit(); + let mut expected_sponge = outputs.start_sponge_blob; + expected_sponge.absorb([1, 2], 2); - assert_eq(outputs.txs_effects_hash, expected_hash); + assert_eq(outputs.end_sponge_blob, expected_sponge); } #[test] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr index 619aed711df..b358900ba3a 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr @@ -51,6 +51,12 @@ impl RootRollupInputs { let fees = components::accumulate_blocks_fees(left, right); + // TODO: We need to eventually accumulate blob info to a single BlobPublicInputs instance which will verify multiple blobs in one call + // For now, we do them individually + // How we accumulate is being worked on by @Mike + // let blob_public_inputs = left.blob_public_inputs.accumulate(right.blob_public_inputs); + let blob_public_inputs = components::accumulate_blob_public_inputs(left, right); + RootRollupPublicInputs { previous_archive: left.previous_archive, end_archive: right.new_archive, @@ -63,6 +69,7 @@ impl RootRollupInputs { vk_tree_root: left.vk_tree_root, protocol_contract_tree_root: left.protocol_contract_tree_root, prover_id: self.prover_id, + blob_public_inputs, } } } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr index 2383e1481e1..a54ce7c1e3e 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr @@ -1,7 +1,7 @@ use crate::abis::block_root_or_block_merge_public_inputs::FeeRecipient; use dep::types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot; use dep::types::constants::AZTEC_MAX_EPOCH_DURATION; - +use blob::blob_public_inputs::BlockBlobPublicInputs; pub struct RootRollupPublicInputs { // Snapshot of archive tree before/after this rollup has been processed previous_archive: AppendOnlyTreeSnapshot, @@ -15,4 +15,5 @@ pub struct RootRollupPublicInputs { vk_tree_root: Field, protocol_contract_tree_root: Field, prover_id: Field, + blob_public_inputs: [BlockBlobPublicInputs; AZTEC_MAX_EPOCH_DURATION], } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/block_root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/block_root_rollup_inputs.nr index 7a213dc35da..556d308b3f3 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/block_root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/block_root_rollup_inputs.nr @@ -58,5 +58,8 @@ pub fn default_block_root_rollup_inputs() -> BlockRootRollupInputs { inputs.previous_rollup_data = default_previous_rollup_data(); + inputs.blobs_fields[0] = 1; + inputs.blobs_fields[1] = 2; + inputs } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_block_data.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_block_data.nr index 7b70fb93e17..714c410eef9 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_block_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_block_data.nr @@ -55,5 +55,10 @@ pub fn default_previous_rollup_block_data() -> [PreviousRollupBlockData; 2] { previous_rollup_data[0].block_root_or_block_merge_public_inputs.fees[0].value = 10; previous_rollup_data[1].block_root_or_block_merge_public_inputs.fees[0].value = 15; + previous_rollup_data[0].block_root_or_block_merge_public_inputs.blob_public_inputs[0].inner[0].z = + 1; + previous_rollup_data[1].block_root_or_block_merge_public_inputs.blob_public_inputs[0].inner[0].z = + 2; + previous_rollup_data } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_data.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_data.nr index 962ff736dfa..98eb969713e 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_data.nr @@ -4,6 +4,7 @@ use dep::types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot; use dep::types::constants::PUBLIC_BASE_ROLLUP_VK_INDEX; use dep::types::merkle_tree::MembershipWitness; use dep::types::tests::fixtures; +use types::abis::sponge_blob::SpongeBlob; use types::merkle_tree::merkle_tree::MerkleTree; pub fn default_previous_rollup_data() -> [PreviousRollupData; 2] { @@ -46,6 +47,14 @@ pub fn default_previous_rollup_data() -> [PreviousRollupData; 2] { previous_rollup_data[1].base_or_merge_rollup_public_inputs.end.nullifier_tree = AppendOnlyTreeSnapshot { root: 2, next_available_leaf_index: 2 }; + previous_rollup_data[0].base_or_merge_rollup_public_inputs.start.public_data_tree = + AppendOnlyTreeSnapshot { root: 0, next_available_leaf_index: 1 }; + previous_rollup_data[0].base_or_merge_rollup_public_inputs.end.public_data_tree = + AppendOnlyTreeSnapshot { root: 1, next_available_leaf_index: 2 }; + previous_rollup_data[1].base_or_merge_rollup_public_inputs.start.public_data_tree = + AppendOnlyTreeSnapshot { root: 1, next_available_leaf_index: 2 }; + previous_rollup_data[1].base_or_merge_rollup_public_inputs.end.public_data_tree = + AppendOnlyTreeSnapshot { root: 2, next_available_leaf_index: 3 }; previous_rollup_data[0].base_or_merge_rollup_public_inputs.start.public_data_tree = AppendOnlyTreeSnapshot { root: 0, next_available_leaf_index: 1 }; previous_rollup_data[0].base_or_merge_rollup_public_inputs.end.public_data_tree = @@ -61,8 +70,15 @@ pub fn default_previous_rollup_data() -> [PreviousRollupData; 2] { previous_rollup_data[0].base_or_merge_rollup_public_inputs.num_txs = 1; previous_rollup_data[1].base_or_merge_rollup_public_inputs.num_txs = 1; - previous_rollup_data[0].base_or_merge_rollup_public_inputs.txs_effects_hash = 1; - previous_rollup_data[1].base_or_merge_rollup_public_inputs.txs_effects_hash = 2; + let mut sponge_blob = SpongeBlob::new(2); + previous_rollup_data[0].base_or_merge_rollup_public_inputs.start_sponge_blob = sponge_blob; + + sponge_blob.absorb([1], 1); + previous_rollup_data[0].base_or_merge_rollup_public_inputs.end_sponge_blob = sponge_blob; + previous_rollup_data[1].base_or_merge_rollup_public_inputs.start_sponge_blob = sponge_blob; + + sponge_blob.absorb([2], 1); + previous_rollup_data[1].base_or_merge_rollup_public_inputs.end_sponge_blob = sponge_blob; previous_rollup_data[0].base_or_merge_rollup_public_inputs.out_hash = 1; previous_rollup_data[1].base_or_merge_rollup_public_inputs.out_hash = 2; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/mod.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/mod.nr index 890d2d4429d..2d79791848e 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/mod.nr @@ -36,6 +36,7 @@ pub mod call_context; pub mod private_circuit_public_inputs; +pub mod sponge_blob; pub mod gas_fees; pub mod gas_settings; pub mod gas; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr new file mode 100644 index 00000000000..fc65d14e083 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr @@ -0,0 +1,143 @@ +use crate::{ + constants::{BLOBS_PER_BLOCK, FIELDS_PER_BLOB, SPONGE_BLOB_LENGTH}, + hash::poseidon2_absorb_chunks_existing_sponge, + traits::{Deserialize, Empty, Serialize}, +}; +use std::hash::poseidon2::Poseidon2; + +// A Poseidon2 sponge used to accumulate data that will be added to a blob +// (More accurately called BlobSponge, but that's not as fun) + +// Each base rollup circuit has a start and end SpongeBlob instance, like a PartialStateReference. +// Tx data is accumulated by calling absorb() on each field, and incrementing the number of fields. +// To save gates, we do not check after every absorb whether we have filled a blob (we do this in block root). + +// Each merge rollup circuit checks that the left rollup input's end SpongeBlob == the right rollup input's start SpongeBlob. + +// Finally, the block_root is given the list of all fields to be included in the blob. +// We hash these ^ and check that the hash matches the one given by the block_root's right input's end SpongeBlob.squeeze(). +// The hash is used as part of the blob challenge, as we've proven it encompasses all elts of the blob. + +// Init is given by input len * 2^64 (see noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr -> hash_internal) +global IV: Field = (FIELDS_PER_BLOB * BLOBS_PER_BLOCK) as Field * 18446744073709551616; + +pub struct SpongeBlob { + pub sponge: Poseidon2, + pub fields: u32, + pub expected_fields: u32, // The hinted number of tx effects this will absorb +} + +impl SpongeBlob { + pub fn new_full_blobs() -> Self { + Self { sponge: Poseidon2::new(IV), fields: 0, expected_fields: 0 } + } + + pub fn new(expected_fields_hint: u32) -> Self { + Self { + sponge: Poseidon2::new((expected_fields_hint as Field) * 18446744073709551616), + fields: 0, + expected_fields: expected_fields_hint, + } + } + + // Add fields to the sponge + pub fn absorb(&mut self, input: [Field; N], in_len: u32) { + // We skip the 0 check below, as most use cases (e.g. base rollup) constrain that the input array + // is contructed from i=0->in_len from an empty array, so no need to check. + self.sponge = poseidon2_absorb_chunks_existing_sponge(self.sponge, input, in_len, true); + self.fields += in_len; + } + + // Finalise the sponge and output poseidon2 hash of all fields absorbed + pub fn squeeze(&mut self) -> Field { + // If the blob sponge is not 'full', we append 1 to match Poseidon2::hash_internal() + // NB: There is currently no use case in which we don't 'fill' a blob sponge, but adding for completeness + if self.fields != self.expected_fields { + self.sponge.absorb(1); + } + self.sponge.squeeze() + } +} + +impl Eq for SpongeBlob { + // TODO: should Poseidon2 struct have a .eq() impl? + fn eq(self, other: Self) -> bool { + (self.fields == other.fields) + & (self.sponge.cache == other.sponge.cache) + & (self.sponge.state == other.sponge.state) + & (self.sponge.cache_size == other.sponge.cache_size) + & (self.sponge.squeeze_mode == other.sponge.squeeze_mode) + } +} + +impl Serialize for SpongeBlob { + fn serialize(self) -> [Field; SPONGE_BLOB_LENGTH] { + let mut fields: BoundedVec = BoundedVec::new(); + fields.extend_from_array(self.sponge.cache); + fields.extend_from_array(self.sponge.state); + fields.push(self.sponge.cache_size as Field); + fields.push(self.sponge.squeeze_mode as Field); + fields.push(self.fields as Field); + fields.push(self.expected_fields as Field); + + fields.storage + } +} + +impl Deserialize for SpongeBlob { + fn deserialize(fields: [Field; SPONGE_BLOB_LENGTH]) -> Self { + Self { + sponge: Poseidon2 { + cache: [fields[0], fields[1], fields[2]], + state: [fields[3], fields[4], fields[5], fields[6]], + cache_size: fields[7] as u32, + squeeze_mode: fields[8] as bool, + }, + fields: fields[9] as u32, + expected_fields: fields[10] as u32, + } + } +} + +impl Empty for SpongeBlob { + fn empty() -> Self { + Self { sponge: Poseidon2::new(0), fields: 0, expected_fields: 0 } + } +} + +#[test] +fn serialization_of_empty() { + let item = SpongeBlob::empty(); + let serialized = item.serialize(); + let deserialized = SpongeBlob::deserialize(serialized); + assert(item.eq(deserialized)); +} + +use crate::utils::arrays::array_concat; + +#[test] +unconstrained fn absorb() { + // This tests that absorbing two arrays separately then squeezing matches an ordinary hash + let mut spongeblob = SpongeBlob::new(7); + let input_3 = [1, 2, 3]; + spongeblob.absorb(input_3, input_3.len()); + // Assert that we have correctly absorbed the first 3 inputs + assert(spongeblob.sponge.cache.eq(input_3)); + assert(spongeblob.fields == input_3.len()); + // Absorb the next 4 in a new call... + let input_4 = [4, 5, 6, 7]; + spongeblob.absorb(input_4, input_4.len()); + // ...and create a normal poseidon2 hash of the same input + let input: [Field; 7] = array_concat(input_3, input_4); + let expected = Poseidon2::hash(input, input.len()); + assert(spongeblob.squeeze() == expected); +} + +#[test(should_fail_with = "Given in_len to absorb is larger than the input array len")] +unconstrained fn absorb_incorrect_in_len() { + let mut spongeblob = SpongeBlob::new(10); + let input_3 = [1, 2, 3]; + // The below should fail, as we try to absorb 10 inputs but only provide 3 + spongeblob.absorb(input_3, 10); +} + diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index fcf4127112f..cd8feceacaf 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -129,8 +129,9 @@ pub global FUNCTION_SELECTOR_NUM_BYTES: Field = 4; // to be large enough so that it's ensured that it doesn't collide with storage slots of other variables. pub global INITIALIZATION_SLOT_SEPARATOR: Field = 1000_000_000; pub global INITIAL_L2_BLOCK_NUM: Field = 1; +pub global FIELDS_PER_BLOB: u32 = 4096; +pub global BLOBS_PER_BLOCK: u32 = 3; pub global PRIVATE_LOG_SIZE_IN_BYTES: u32 = 576; // This is currently defined by aztec-nr/aztec/src/encrypted_logs/payload.nr. See the comment there for how this value is calculated. -pub global BLOB_SIZE_IN_BYTES: Field = 31 * 4096; pub global AZTEC_MAX_EPOCH_DURATION: u32 = 32; // The following is taken from building a block and looking at the `lastArchive` value in it. // You can run the `integration_l1_publisher.test.ts` and look at the first blocks in the fixtures. @@ -259,6 +260,9 @@ pub global FUNCTION_DATA_LENGTH: u32 = 2; pub global FUNCTION_LEAF_PREIMAGE_LENGTH: u32 = 5; pub global GLOBAL_VARIABLES_LENGTH: u32 = 7 + GAS_FEES_LENGTH; pub global APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u32 = 2; +pub global APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES: u32 = 36; +pub global SPONGE_BLOB_LENGTH: u32 = 11; +pub global BLOB_PUBLIC_INPUTS: u32 = 6; pub global L1_TO_L2_MESSAGE_LENGTH: u32 = 6; pub global L2_TO_L1_MESSAGE_LENGTH: u32 = 3; pub global SCOPED_L2_TO_L1_MESSAGE_LENGTH: u32 = L2_TO_L1_MESSAGE_LENGTH + 1; @@ -303,6 +307,13 @@ pub global HEADER_LENGTH: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH + STATE_REFERENCE_LENGTH + GLOBAL_VARIABLES_LENGTH + TOTAL_FEES_LENGTH; +// Global variables are all 32 bytes, apart from coinbase which is 20, hence -12. A state reference is just 4 snapshots. +pub global HEADER_LENGTH_BYTES: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES + + 32 * CONTENT_COMMITMENT_LENGTH + + 4 * APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES + + 32 * GLOBAL_VARIABLES_LENGTH + - 12 + + 32 * TOTAL_FEES_LENGTH; pub global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: u32 = CALL_CONTEXT_LENGTH + 4 + MAX_BLOCK_NUMBER_LENGTH @@ -442,11 +453,12 @@ pub global CONSTANT_ROLLUP_DATA_LENGTH: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH + 1 /* protocol_contract_tree_root */ + GLOBAL_VARIABLES_LENGTH; -// + 5 for rollup_type, height_in_block_tree, txs_effects_hash, out_hash, accumulated_fees +// + 4 for rollup_type, num_txs, out_hash, accumulated_fees pub global BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH: u32 = CONSTANT_ROLLUP_DATA_LENGTH + PARTIAL_STATE_REFERENCE_LENGTH + PARTIAL_STATE_REFERENCE_LENGTH - + 5; + + 2 * SPONGE_BLOB_LENGTH + + 4; pub global BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH: u32 = 2 * APPEND_ONLY_TREE_SNAPSHOT_LENGTH + 1 /* previous_block_hash */ @@ -456,10 +468,13 @@ pub global BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH: u32 = 2 + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH + 1 /* vk_tree_root */ + 1 /* protocol_contract_tree_root */ - + 1 /* prover_id */; -pub global ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH: u32 = - 2 * APPEND_ONLY_TREE_SNAPSHOT_LENGTH + 8 + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH; - + + 1 /* prover_id */ + + AZTEC_MAX_EPOCH_DURATION * BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK; +// + 8 for previous_block_hash, end_block_hash, end_timestamp, end_block_number, out_hash, vk_tree_root, protocol_contract_tree_root, prover_id +pub global ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH: u32 = 2 * APPEND_ONLY_TREE_SNAPSHOT_LENGTH + + 8 + + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH + + AZTEC_MAX_EPOCH_DURATION * BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK; pub global GET_NOTES_ORACLE_RETURN_LENGTH: u32 = 674; pub global NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP: u32 = 32 * MAX_NOTE_HASHES_PER_TX; pub global NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: u32 = 32 * MAX_NULLIFIERS_PER_TX; @@ -695,6 +710,20 @@ pub global AVM_SENDL2TOL1MSG_BASE_DA_GAS: u32 = DA_BYTES_PER_FIELD * DA_GAS_PER_ // a single increment here corresponds to an entire additional field (hence x32 bytes per field) pub global AVM_EMITUNENCRYPTEDLOG_DYN_DA_GAS: u32 = DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE; +// BLOB PREFIXES +// Used when decoding blobs of tightly packed effects +pub global TX_START_PREFIX: Field = 0x74785f7374617274; // = "tx_start".to_field() in nr +pub global REVERT_CODE_PREFIX: u8 = 1; +pub global TX_FEE_PREFIX: u8 = 2; +pub global NOTES_PREFIX: u8 = 3; +pub global NULLIFIERS_PREFIX: u8 = 4; +pub global L2_L1_MSGS_PREFIX: u8 = 5; +pub global PUBLIC_DATA_UPDATE_REQUESTS_PREFIX: u8 = 6; +pub global NOTE_ENCRYPTED_LOGS_PREFIX: u8 = 7; +pub global ENCRYPTED_LOGS_PREFIX: u8 = 8; +pub global UNENCRYPTED_LOGS_PREFIX: u8 = 9; +pub global CONTRACT_CLASS_LOGS_PREFIX: u8 = 10; + // Constants related to proof type of a recursive proof verification. // Keep following constants in sync with the enum acir_format::PROOF_TYPE in recursion_constraint.hpp pub global PROOF_TYPE_PLONK: u32 = 0; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr b/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr index a02e7f8e46c..05948539625 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr @@ -2,7 +2,7 @@ use crate::{constants::CONTENT_COMMITMENT_LENGTH, traits::{Deserialize, Empty, S pub struct ContentCommitment { num_txs: Field, - txs_effects_hash: Field, + blobs_hash: Field, in_hash: Field, out_hash: Field, } @@ -12,7 +12,7 @@ impl Serialize for ContentCommitment { let mut fields: BoundedVec = BoundedVec::new(); fields.push(self.num_txs); - fields.push(self.txs_effects_hash); + fields.push(self.blobs_hash); fields.push(self.in_hash); fields.push(self.out_hash); @@ -24,26 +24,26 @@ impl Deserialize for ContentCommitment { fn deserialize(serialized: [Field; CONTENT_COMMITMENT_LENGTH]) -> Self { let num_txs = serialized[0]; - let txs_effects_hash = serialized[1]; + let blobs_hash = serialized[1]; let in_hash = serialized[2]; let out_hash = serialized[3]; - Self { num_txs, txs_effects_hash, in_hash, out_hash } + Self { num_txs, blobs_hash, in_hash, out_hash } } } impl Empty for ContentCommitment { fn empty() -> Self { - Self { num_txs: 0, txs_effects_hash: 0, in_hash: 0, out_hash: 0 } + Self { num_txs: 0, blobs_hash: 0, in_hash: 0, out_hash: 0 } } } impl Eq for ContentCommitment { fn eq(self, other: Self) -> bool { (self.num_txs == other.num_txs) - & (self.txs_effects_hash == other.txs_effects_hash) + & (self.blobs_hash == other.blobs_hash) & (self.in_hash == other.in_hash) & (self.out_hash == other.out_hash) } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr b/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr index 4aee1c46d57..3e709b9e176 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr @@ -252,6 +252,177 @@ where sponge.squeeze() } +// Performs a fixed length hash with a subarray of the given input. +// Useful for SpongeBlob in which we aborb M things and want to check it vs a hash of M elts of an N-len array. +// Using stdlib poseidon, this will always absorb an extra 1 as a 'variable' hash, and not match spongeblob.squeeze() +// or any ts implementation. Also checks that any remaining elts not hashed are empty. +#[no_predicates] +pub fn poseidon2_hash_subarray(input: [Field; N], in_len: u32) -> Field { + let mut sponge = poseidon2_absorb_chunks(input, in_len, false); + sponge.squeeze() +} + +// NB the below is the same as std::hash::poseidon2::Poseidon2::hash(), but replacing a range check with a bit check, +// and absorbing in chunks of 3 below. +#[no_predicates] +pub fn poseidon2_cheaper_variable_hash(input: [Field; N], in_len: u32) -> Field { + let mut sponge = poseidon2_absorb_chunks(input, in_len, true); + // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish + // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures + // fixed-length and variable-length hashes do not collide) + if in_len != N { + sponge.absorb(1); + } + sponge.squeeze() +} + +// The below fn reduces gates of a conditional poseidon2 hash by approx 3x (thank you ~* Giant Brain Dev @IlyasRidhuan *~ for the idea) +// Why? Because when we call stdlib poseidon, we call absorb for each item. When absorbing is conditional, it seems the compiler does not know +// what cache_size will be when calling absorb, so it assigns the permutation gates for /each i/ rather than /every 3rd i/, which is actually required. +// The below code forces the compiler to: +// - absorb normally up to 2 times to set cache_size to 1 +// - absorb in chunks of 3 to ensure perm. only happens every 3rd absorb +// - absorb normally up to 2 times to add any remaining values to the hash +// In fixed len hashes, the compiler is able to tell that it will only need to perform the permutation every 3 absorbs. +// NB: it also replaces unnecessary range checks (i < thing) with a bit check (&= i != thing), which alone reduces the gates of a var. hash by half. + +#[no_predicates] +fn poseidon2_absorb_chunks( + input: [Field; N], + in_len: u32, + variable: bool, +) -> std::hash::poseidon2::Poseidon2 { + let two_pow_64 = 18446744073709551616; + let iv: Field = (in_len as Field) * two_pow_64; + let mut sponge = std::hash::poseidon2::Poseidon2::new(iv); + // Even though shift is always 1 here, if we input in_len = 0 we get an underflow + // since we cannot isolate computation branches. The below is just to avoid that. + let shift = if in_len == 0 { 0 } else { 1 }; + if in_len != 0 { + // cache_size = 0, init absorb + sponge.cache[0] = input[0]; + sponge.cache_size = 1; + // shift = num elts already added to make cache_size 1 = 1 for a fresh sponge + // M = max_chunks = (N - 1 - (N - 1) % 3) / 3: (must be written as a fn of N to compile) + // max_remainder = (N - 1) % 3; + // max_chunks = (N - 1 - max_remainder) / 3; + sponge = poseidon2_absorb_chunks_loop::( + sponge, + input, + in_len, + variable, + shift, + ); + } + sponge +} + +// NB: If it's not required to check that the non-absorbed elts of 'input' are 0s, set skip_0_check=true +#[no_predicates] +pub fn poseidon2_absorb_chunks_existing_sponge( + in_sponge: std::hash::poseidon2::Poseidon2, + input: [Field; N], + in_len: u32, + skip_0_check: bool, +) -> std::hash::poseidon2::Poseidon2 { + let mut sponge = in_sponge; + // 'shift' is to account for already added inputs + let mut shift = 0; + // 'stop' is to avoid an underflow when inputting in_len = 0 + let mut stop = false; + for i in 0..3 { + if shift == in_len { + stop = true; + } + if (sponge.cache_size != 1) & (!stop) { + sponge.absorb(input[i]); + shift += 1; + } + } + sponge = if stop { + sponge + } else { + // max_chunks = (N - (N % 3)) / 3; + poseidon2_absorb_chunks_loop::( + sponge, + input, + in_len, + skip_0_check, + shift, + ) + }; + sponge +} + +// The below is the loop to absorb elts into a poseidon sponge in chunks of 3 +// shift - the num of elts already absorbed to ensure the sponge's cache_size = 1 +// M - the max number of chunks required to absorb N things (must be comptime to compile) +// NB: The 0 checks ('Found non-zero field...') are messy, but having a separate loop over N to check +// for 0s costs 3N gates. Current approach is approx 2N gates. +#[no_predicates] +fn poseidon2_absorb_chunks_loop( + in_sponge: std::hash::poseidon2::Poseidon2, + input: [Field; N], + in_len: u32, + variable: bool, + shift: u32, +) -> std::hash::poseidon2::Poseidon2 { + assert(in_len <= N, "Given in_len to absorb is larger than the input array len"); + // When we have an existing sponge, we may have a shift of 0, and the final 'k+2' below = N + // The below avoids an overflow + let skip_last = 3 * M == N; + // Writing in_sponge: &mut does not compile + let mut sponge = in_sponge; + let mut should_add = true; + // The num of things left over after absorbing in 3s + let remainder = (in_len - shift) % 3; + // The num of chunks of 3 to absorb (maximum M) + let chunks = (in_len - shift - remainder) / 3; + for i in 0..M { + // Now we loop through cache size = 1 -> 3 + should_add &= i != chunks; + // This is the index at the start of the chunk (for readability) + let k = 3 * i + shift; + if should_add { + // cache_size = 1, 2 => just assign + sponge.cache[1] = input[k]; + sponge.cache[2] = input[k + 1]; + // cache_size = 3 => duplex + perm + for j in 0..3 { + sponge.state[j] += sponge.cache[j]; + } + sponge.state = std::hash::poseidon2_permutation(sponge.state, 4); + sponge.cache[0] = input[k + 2]; + // cache_size is now 1 again, repeat loop + } else if (!variable) & (i != chunks) { + // if we are hashing a fixed len array which is a subarray, we check the remaining elts are 0 + // NB: we don't check at i == chunks, because that chunk contains elts to be absorbed or checked below + let last_0 = if (i == M - 1) & (skip_last) { + 0 + } else { + input[k + 2] + }; + let all_0 = (input[k] == 0) & (input[k + 1] == 0) & (last_0 == 0); + assert(all_0, "Found non-zero field after breakpoint"); + } + } + // we have 'remainder' num of items left to absorb + should_add = true; + // below is to avoid overflows (i.e. if inlen is close to N) + let mut should_check = !variable; + for i in 0..3 { + should_add &= i != remainder; + should_check &= in_len - remainder + i != N; + if should_add { + // we want to absorb the final 'remainder' items + sponge.absorb(input[in_len - remainder + i]); + } else if should_check { + assert(input[in_len - remainder + i] == 0, "Found non-zero field after breakpoint"); + } + } + sponge +} + pub fn poseidon2_hash_with_separator_slice(inputs: [Field], separator: T) -> Field where T: ToField, @@ -299,6 +470,61 @@ pub fn poseidon2_hash_bytes(inputs: [u8; N]) -> Field { sponge.squeeze() } +#[test] +fn poseidon_chunks_matches_fixed() { + let in_len = 501; + let mut input: [Field; 4096] = [0; 4096]; + let mut fixed_input = [3; 501]; + assert(in_len == fixed_input.len()); // sanity check + for i in 0..in_len { + input[i] = 3; + } + let sub_chunk_hash = poseidon2_hash_subarray(input, in_len); + let fixed_len_hash = std::hash::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len()); + assert(sub_chunk_hash == fixed_len_hash); +} + +#[test] +fn poseidon_chunks_matches_variable() { + let in_len = 501; + let mut input: [Field; 4096] = [0; 4096]; + for i in 0..in_len { + input[i] = 3; + } + let variable_chunk_hash = poseidon2_cheaper_variable_hash(input, in_len); + let variable_len_hash = std::hash::poseidon2::Poseidon2::hash(input, in_len); + assert(variable_chunk_hash == variable_len_hash); +} + +#[test] +fn existing_sponge_poseidon_chunks_matches_fixed() { + let in_len = 501; + let mut input: [Field; 4096] = [0; 4096]; + let mut fixed_input = [3; 501]; + assert(in_len == fixed_input.len()); // sanity check + for i in 0..in_len { + input[i] = 3; + } + // absorb 250 of the 501 things + let two_pow_64 = 18446744073709551616; + let empty_sponge = std::hash::poseidon2::Poseidon2::new((in_len as Field) * two_pow_64); + let first_sponge = poseidon2_absorb_chunks_existing_sponge(empty_sponge, input, 250, true); + // now absorb the final 251 (since they are all 3s, im being lazy and not making a new array) + let mut final_sponge = poseidon2_absorb_chunks_existing_sponge(first_sponge, input, 251, true); + let fixed_len_hash = std::hash::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len()); + assert(final_sponge.squeeze() == fixed_len_hash); +} + +#[test] +fn poseidon_chunks_empty_inputs() { + let in_len = 0; + let mut input: [Field; 4096] = [0; 4096]; + let mut contructed_empty_sponge = poseidon2_absorb_chunks(input, in_len, true); + let mut first_sponge = + poseidon2_absorb_chunks_existing_sponge(contructed_empty_sponge, input, in_len, true); + assert(first_sponge.squeeze() == contructed_empty_sponge.squeeze()); +} + #[test] fn smoke_sha256_to_field() { let full_buffer = [ diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/header.nr b/noir-projects/noir-protocol-circuits/crates/types/src/header.nr index 23e9c6a2a87..d7b6e42714d 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/header.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/header.nr @@ -116,7 +116,7 @@ fn empty_hash_is_zero() { let header = Header::empty(); let hash = header.hash(); - // Value from new_contract_data.test.ts "computes empty hash" test + // Value from header.test.ts "computes empty hash" test let test_data_empty_hash = 0x1c97ed6fbc35f8b400d31bd38ce5cc938921e0cf2e20159d316f8c7011f9f42c; assert_eq(hash, test_data_empty_hash); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/tests/fixture_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/tests/fixture_builder.nr index 94294b65c16..6ca3b4e5774 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/tests/fixture_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/tests/fixture_builder.nr @@ -919,6 +919,10 @@ impl FixtureBuilder { self.contract_address } + pub fn set_gas_used(&mut self, da_gas: u32, l2_gas: u32) { + self.gas_used = Gas { da_gas, l2_gas }; + } + pub fn set_public_teardown_call_request(&mut self) { self.public_teardown_call_request = self.mock_public_teardown_call_request(); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr b/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr index 638cc76ecce..fd9812bcca5 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr @@ -135,6 +135,19 @@ where result } +// Helper fn to create a subarray from a given array +pub fn array_splice(array: [T; N], offset: u32) -> [T; M] +where + T: Empty, +{ + assert(M + offset <= N, "Subarray length larger than array length"); + let mut result: [T; M] = [T::empty(); M]; + for i in 0..M { + result[i] = array[offset + i]; + } + result +} + pub fn check_permutation( original_array: [T; N], permuted_array: [T; N], diff --git a/scripts/ci/get_e2e_jobs.sh b/scripts/ci/get_e2e_jobs.sh index 2dbdb42ac40..26d3853b320 100755 --- a/scripts/ci/get_e2e_jobs.sh +++ b/scripts/ci/get_e2e_jobs.sh @@ -25,7 +25,8 @@ allow_list=( "e2e_cross_chain_messaging" "e2e_crowdfunding_and_claim" "e2e_deploy_contract" - "e2e_epochs" + # TODO(#10177): reenable + # "e2e_epochs" "e2e_fees" "e2e_fees_failures" "e2e_fees_gas_estimation" diff --git a/yarn-project/archiver/src/archiver/archiver.test.ts b/yarn-project/archiver/src/archiver/archiver.test.ts index b542ee2475f..2a9b2f0d310 100644 --- a/yarn-project/archiver/src/archiver/archiver.test.ts +++ b/yarn-project/archiver/src/archiver/archiver.test.ts @@ -8,6 +8,7 @@ import { } from '@aztec/circuit-types'; import { GENESIS_ARCHIVE_ROOT } from '@aztec/circuits.js'; import { DefaultL1ContractsConfig } from '@aztec/ethereum'; +import { Blob } from '@aztec/foundation/blob'; import { EthAddress } from '@aztec/foundation/eth-address'; import { Fr } from '@aztec/foundation/fields'; import { sleep } from '@aztec/foundation/sleep'; @@ -451,12 +452,13 @@ function makeMessageSentEventWithIndexInL2BlockSubtree( function makeRollupTx(l2Block: L2Block) { const header = toHex(l2Block.header.toBuffer()); const body = toHex(l2Block.body.toBuffer()); + const blobInput = Blob.getEthBlobEvaluationInputs(Blob.getBlobs(l2Block.body.toBlobFields())); const archive = toHex(l2Block.archive.root.toBuffer()); const blockHash = toHex(l2Block.header.hash().toBuffer()); const input = encodeFunctionData({ abi: RollupAbi, functionName: 'propose', - args: [{ header, archive, blockHash, txHashes: [] }, [], body], + args: [{ header, archive, blockHash, txHashes: [] }, [], body, blobInput], }); return { input } as Transaction; } diff --git a/yarn-project/archiver/src/archiver/data_retrieval.ts b/yarn-project/archiver/src/archiver/data_retrieval.ts index ce3c6cadbd5..294b6a486ee 100644 --- a/yarn-project/archiver/src/archiver/data_retrieval.ts +++ b/yarn-project/archiver/src/archiver/data_retrieval.ts @@ -1,5 +1,6 @@ import { Body, InboxLeaf, L2Block } from '@aztec/circuit-types'; import { AppendOnlyTreeSnapshot, Fr, Header, Proof } from '@aztec/circuits.js'; +import { Blob } from '@aztec/foundation/blob'; import { type EthAddress } from '@aztec/foundation/eth-address'; import { type ViemSignature } from '@aztec/foundation/eth-signature'; import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log'; @@ -139,7 +140,8 @@ async function getBlockFromRollupTx( if (!allowedMethods.includes(functionName)) { throw new Error(`Unexpected method called ${functionName}`); } - const [decodedArgs, , bodyHex] = args! as readonly [ + // TODO(#9101): 'bodyHex' will be removed from below + const [decodedArgs, , bodyHex, blobInputs] = args! as readonly [ { header: Hex; archive: Hex; @@ -148,11 +150,44 @@ async function getBlockFromRollupTx( }, ViemSignature[], Hex, + Hex, ]; const header = Header.fromBuffer(Buffer.from(hexToBytes(decodedArgs.header))); + // TODO(#9101): Retreiving the block body from calldata is a temporary soln before we have + // either a beacon chain client or link to some blob store. Web2 is ok because we will + // verify the block body vs the blob as below. const blockBody = Body.fromBuffer(Buffer.from(hexToBytes(bodyHex))); + const blockFields = blockBody.toBlobFields(); + // TODO(#9101): The below reconstruction is currently redundant, but once we extract blobs will be the way to construct blocks. + // The blob source will give us blockFields, and we must construct the body from them: + // TODO(#8954): When logs are refactored into fields, we won't need to inject them here. + const reconstructedBlock = Body.fromBlobFields( + blockFields, + blockBody.noteEncryptedLogs, + blockBody.encryptedLogs, + blockBody.unencryptedLogs, + blockBody.contractClassLogs, + ); + + if (!reconstructedBlock.toBuffer().equals(blockBody.toBuffer())) { + // TODO(#9101): Remove below check (without calldata there will be nothing to check against) + throw new Error(`Block reconstructed from blob fields does not match`); + } + + // TODO(#9101): Once we stop publishing calldata, we will still need the blobCheck below to ensure that the block we are building does correspond to the blob fields + const blobCheck = Blob.getBlobs(blockFields); + if (Blob.getEthBlobEvaluationInputs(blobCheck) !== blobInputs) { + // NB: We can just check the blobhash here, which is the first 32 bytes of blobInputs + // A mismatch means that the fields published in the blob in propose() do NOT match those in the extracted block. + throw new Error( + `Block body mismatched with blob for block number ${l2BlockNum}. \nExpected: ${Blob.getEthBlobEvaluationInputs( + blobCheck, + )} \nGot: ${blobInputs}`, + ); + } + const blockNumberFromHeader = header.globalVariables.blockNumber.toBigInt(); if (blockNumberFromHeader !== l2BlockNum) { @@ -287,10 +322,10 @@ export async function getProofFromSubmitProofTx( let proof: Proof; if (functionName === 'submitEpochRootProof') { - const [_epochSize, nestedArgs, _fees, aggregationObjectHex, proofHex] = args!; + const [submitArgs, aggregationObjectHex, proofHex] = args!; aggregationObject = Buffer.from(hexToBytes(aggregationObjectHex)); - proverId = Fr.fromString(nestedArgs[6]); - archiveRoot = Fr.fromString(nestedArgs[1]); + proverId = Fr.fromString(submitArgs.args[6]); + archiveRoot = Fr.fromString(submitArgs.args[1]); proof = Proof.fromBuffer(Buffer.from(hexToBytes(proofHex))); } else { throw new Error(`Unexpected proof method called ${functionName}`); diff --git a/yarn-project/bb-prover/src/test/test_circuit_prover.ts b/yarn-project/bb-prover/src/test/test_circuit_prover.ts index 506728a6558..6441ca1ac60 100644 --- a/yarn-project/bb-prover/src/test/test_circuit_prover.ts +++ b/yarn-project/bb-prover/src/test/test_circuit_prover.ts @@ -38,6 +38,7 @@ import { import { createDebugLogger } from '@aztec/foundation/log'; import { sleep } from '@aztec/foundation/sleep'; import { Timer } from '@aztec/foundation/timer'; +import { fileURLToPath } from '@aztec/foundation/url'; import { ProtocolCircuitVks, type ServerProtocolArtifact, @@ -63,10 +64,16 @@ import { convertSimulatedPublicBaseRollupInputsToWitnessMap, convertSimulatedPublicBaseRollupOutputsFromWitnessMap, } from '@aztec/noir-protocol-circuits-types'; -import { type SimulationProvider, WASMSimulator, emitCircuitSimulationStats } from '@aztec/simulator'; +import { + NativeACVMSimulator, + type SimulationProvider, + WASMSimulator, + emitCircuitSimulationStats, +} from '@aztec/simulator'; import { type TelemetryClient, trackSpan } from '@aztec/telemetry-client'; import { type WitnessMap } from '@noir-lang/types'; +import path from 'path'; import { ProverInstrumentation } from '../instrumentation.js'; import { mapProtocolArtifactNameToCircuitName } from '../stats.js'; @@ -313,7 +320,21 @@ export class TestCircuitProver implements ServerCircuitProver { const witnessMap = convertInput(input); const circuitName = mapProtocolArtifactNameToCircuitName(artifactName); - const simulationProvider = this.simulationProvider ?? this.wasmSimulator; + let simulationProvider = this.simulationProvider ?? this.wasmSimulator; + // With the blob circuit, we require a long array of constants and lots of unconstrained. + // Unfortunately, this overflows wasm limits, so cannot be simulated via wasm. + // The below forces use of the native simulator just for this circuit: + if (artifactName == 'BlockRootRollupArtifact' && !(simulationProvider instanceof NativeACVMSimulator)) { + simulationProvider = new NativeACVMSimulator( + process.env.TEMP_DIR || `/tmp`, + process.env.ACVM_BINARY_PATH || + `${path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + '../../../../noir/', + process.env.NOIR_RELEASE_DIRECTORY || 'noir-repo/target/release', + )}/acvm`, + ); + } const witness = await simulationProvider.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts[artifactName]); const result = convertOutput(witness); diff --git a/yarn-project/circuit-types/src/body.test.ts b/yarn-project/circuit-types/src/body.test.ts new file mode 100644 index 00000000000..5ed7188fdf2 --- /dev/null +++ b/yarn-project/circuit-types/src/body.test.ts @@ -0,0 +1,40 @@ +import { Fr } from '@aztec/circuits.js'; + +import { Body } from './body.js'; + +describe('Body', () => { + it('converts to and from buffer', () => { + const body = Body.random(); + const buf = body.toBuffer(); + expect(Body.fromBuffer(buf)).toEqual(body); + }); + + it('converts to and from fields', () => { + const body = Body.random(); + const fields = body.toBlobFields(); + // TODO(#8954): When logs are refactored into fields, we won't need to inject them here + expect( + Body.fromBlobFields( + fields, + body.noteEncryptedLogs, + body.encryptedLogs, + body.unencryptedLogs, + body.contractClassLogs, + ), + ).toEqual(body); + }); + + it('converts empty to and from fields', () => { + const body = Body.empty(); + const fields = body.toBlobFields(); + expect(Body.fromBlobFields(fields)).toEqual(body); + }); + + it('fails with invalid fields', () => { + const body = Body.random(); + const fields = body.toBlobFields(); + // Replace the initial field with an invalid encoding + fields[0] = new Fr(12); + expect(() => Body.fromBlobFields(fields)).toThrow('Invalid fields'); + }); +}); diff --git a/yarn-project/circuit-types/src/body.ts b/yarn-project/circuit-types/src/body.ts index 48617fa2016..dbaf41b33d6 100644 --- a/yarn-project/circuit-types/src/body.ts +++ b/yarn-project/circuit-types/src/body.ts @@ -1,5 +1,5 @@ +import { type Fr } from '@aztec/circuits.js'; import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; -import { computeUnbalancedMerkleRoot } from '@aztec/foundation/trees'; import { inspect } from 'util'; import { z } from 'zod'; @@ -51,26 +51,60 @@ export class Body { return new this(reader.readVector(TxEffect)); } + /** + * Returns a flat packed array of fields of all tx effects - used for blobs. + */ + toBlobFields() { + let flattened: Fr[] = []; + this.txEffects.forEach((effect: TxEffect) => { + flattened = flattened.concat(effect.toBlobFields()); + }); + return flattened; + } + + /** + * Decodes a block from blob fields. + * TODO(#8954): When logs are refactored into fields, we won't need to inject them here, instead just reading from fields in TxEffect.fromBlobFields. + * Logs are best input by gathering from the getters below, as they don't remove empty log arrays. + */ + static fromBlobFields( + fields: Fr[], + noteEncryptedLogs?: EncryptedNoteL2BlockL2Logs, + encryptedLogs?: EncryptedL2BlockL2Logs, + unencryptedLogs?: UnencryptedL2BlockL2Logs, + contractClassLogs?: ContractClass2BlockL2Logs, + ) { + const txEffectsFields: Fr[][] = []; + let checkedFields = 0; + while (checkedFields !== fields.length) { + if (!TxEffect.isFirstField(fields[checkedFields])) { + throw new Error('Invalid fields given to Body.fromBlobFields(): First field invalid.'); + } + const len = TxEffect.decodeFirstField(fields[checkedFields]).length; + txEffectsFields.push(fields.slice(checkedFields, checkedFields + len)); + checkedFields += len; + } + const txEffects = txEffectsFields + .filter(effect => effect.length) + .map((effect, i) => + TxEffect.fromBlobFields( + effect, + noteEncryptedLogs?.txLogs[i], + encryptedLogs?.txLogs[i], + unencryptedLogs?.txLogs[i], + contractClassLogs?.txLogs[i], + ), + ); + return new this(txEffects); + } + [inspect.custom]() { return `Body { txEffects: ${inspect(this.txEffects)}, emptyTxEffectsCount: ${this.numberOfTxsIncludingPadded}, - emptyTxEffectHash: ${TxEffect.empty().hash().toString('hex')}, - txsEffectsHash: ${this.getTxsEffectsHash().toString('hex')}, }`; } - /** - * Computes the transactions effects hash for the L2 block - * This hash is also computed in the `TxDecoder`. - * @returns The txs effects hash. - */ - getTxsEffectsHash() { - const emptyTxEffectHash = TxEffect.empty().hash(); - const leaves: Buffer[] = this.txEffects.map(txEffect => txEffect.hash()); - return computeUnbalancedMerkleRoot(leaves, emptyTxEffectHash); - } - get noteEncryptedLogs(): EncryptedNoteL2BlockL2Logs { const logs = this.txEffects.map(txEffect => txEffect.noteEncryptedLogs); @@ -97,7 +131,6 @@ export class Body { /** * Computes the number of transactions in the block including padding transactions. - * @dev Modified code from TxsDecoder.computeNumTxEffectsToPad */ get numberOfTxsIncludingPadded() { const numTxEffects = this.txEffects.length; diff --git a/yarn-project/circuit-types/src/interfaces/block-builder.ts b/yarn-project/circuit-types/src/interfaces/block-builder.ts index bad2bcda99b..3a0cfc05c14 100644 --- a/yarn-project/circuit-types/src/interfaces/block-builder.ts +++ b/yarn-project/circuit-types/src/interfaces/block-builder.ts @@ -8,17 +8,16 @@ import { type ProcessedTxHandler } from './processed-tx-handler.js'; export interface BlockBuilder extends ProcessedTxHandler { /** * Prepares to build a new block. Updates the L1 to L2 message tree. - * @param numTxs - The complete size of the block. * @param globalVariables - The global variables for this block. * @param l1ToL2Messages - The set of L1 to L2 messages to be included in this block. */ - startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise; + startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise; /** - * Adds a processed tx to the block. Updates world state with the effects from this tx. - * @param tx - The transaction to be added. + * Adds all processed txs to the block. Updates world state with the effects from this tx. + * @param txs - The transactions to be added. */ - addNewTx(tx: ProcessedTx): Promise; + addTxs(txs: ProcessedTx[]): Promise; /** * Pads the block with empty txs if it hasn't reached the declared number of txs. diff --git a/yarn-project/circuit-types/src/interfaces/processed-tx-handler.ts b/yarn-project/circuit-types/src/interfaces/processed-tx-handler.ts index 2793b35bbef..6b215bc294b 100644 --- a/yarn-project/circuit-types/src/interfaces/processed-tx-handler.ts +++ b/yarn-project/circuit-types/src/interfaces/processed-tx-handler.ts @@ -3,8 +3,8 @@ import { type ProcessedTx } from '../tx/processed_tx.js'; /** Receives processed txs as part of block simulation or proving. */ export interface ProcessedTxHandler { /** - * Handles a processed txs. - * @param tx - The transaction to be handled. + * Handles processed txs. + * @param txs - The transactions to be handled. */ - addNewTx(tx: ProcessedTx): Promise; + addTxs(txs: ProcessedTx[]): Promise; } diff --git a/yarn-project/circuit-types/src/l2_block.ts b/yarn-project/circuit-types/src/l2_block.ts index bf5f8bffe33..82ac73e88fd 100644 --- a/yarn-project/circuit-types/src/l2_block.ts +++ b/yarn-project/circuit-types/src/l2_block.ts @@ -106,11 +106,9 @@ export class L2Block { numUnencryptedLogsPerCall, ); - const txsEffectsHash = body.getTxsEffectsHash(); - return new L2Block( makeAppendOnlyTreeSnapshot(l2BlockNum + 1), - makeHeader(0, l2BlockNum, slotNumber ?? l2BlockNum, txsEffectsHash, inHash), + makeHeader(0, txsPerBlock, l2BlockNum, slotNumber ?? l2BlockNum, inHash), body, ); } @@ -138,6 +136,7 @@ export class L2Block { /** * Computes the public inputs hash for the L2 block. * The same output as the hash of RootRollupPublicInputs. + * TODO(Miranda): Check where/if this is used (v diff now with epochs and blobs) * @returns The public input hash for the L2 block as a field element. */ // TODO(#4844) @@ -154,7 +153,6 @@ export class L2Block { this.header.state.partial.publicDataTree, this.header.state.l1ToL2MessageTree, this.archive, - this.body.getTxsEffectsHash(), ]; return sha256ToField(preimage); diff --git a/yarn-project/circuit-types/src/l2_block_code_to_purge.ts b/yarn-project/circuit-types/src/l2_block_code_to_purge.ts index 68b0cc3528a..d40979bd62e 100644 --- a/yarn-project/circuit-types/src/l2_block_code_to_purge.ts +++ b/yarn-project/circuit-types/src/l2_block_code_to_purge.ts @@ -19,14 +19,14 @@ import { toBufferBE } from '@aztec/foundation/bigint-buffer'; */ export function makeHeader( seed = 0, + numTxs: number | undefined = undefined, blockNumber: number | undefined = undefined, slotNumber: number | undefined = undefined, - txsEffectsHash: Buffer | undefined = undefined, inHash: Buffer | undefined = undefined, ): Header { return new Header( makeAppendOnlyTreeSnapshot(seed + 0x100), - makeContentCommitment(seed + 0x200, txsEffectsHash, inHash), + makeContentCommitment(seed + 0x200, numTxs, inHash), makeStateReference(seed + 0x600), makeGlobalVariables((seed += 0x700), blockNumber, slotNumber ?? blockNumber), fr(seed + 0x800), @@ -47,12 +47,12 @@ export function makeAppendOnlyTreeSnapshot(seed = 1): AppendOnlyTreeSnapshot { */ function makeContentCommitment( seed = 0, - txsEffectsHash: Buffer | undefined = undefined, + numTxs: number | undefined = undefined, inHash: Buffer | undefined = undefined, ): ContentCommitment { return new ContentCommitment( - new Fr(seed), - txsEffectsHash ?? toBufferBE(BigInt(seed + 0x100), NUM_BYTES_PER_SHA256), + numTxs ? new Fr(numTxs) : new Fr(seed), + toBufferBE(BigInt(seed + 0x100), NUM_BYTES_PER_SHA256), inHash ?? toBufferBE(BigInt(seed + 0x200), NUM_BYTES_PER_SHA256), toBufferBE(BigInt(seed + 0x300), NUM_BYTES_PER_SHA256), ); diff --git a/yarn-project/circuit-types/src/tx/processed_tx.ts b/yarn-project/circuit-types/src/tx/processed_tx.ts index 69da14b2f12..793c4f1e9e0 100644 --- a/yarn-project/circuit-types/src/tx/processed_tx.ts +++ b/yarn-project/circuit-types/src/tx/processed_tx.ts @@ -166,6 +166,12 @@ export function makeProcessedTxFromPrivateOnlyTx( }; } +export function toNumBlobFields(txs: ProcessedTx[]): number { + return txs.reduce((acc, tx) => { + return acc + tx.txEffect.toBlobFields().length; + }, 0); +} + export function makeProcessedTxFromTxWithPublicCalls( tx: Tx, avmProvingRequest: AvmProvingRequest, diff --git a/yarn-project/circuit-types/src/tx_effect.test.ts b/yarn-project/circuit-types/src/tx_effect.test.ts index 18df05d6dc4..9b50180e852 100644 --- a/yarn-project/circuit-types/src/tx_effect.test.ts +++ b/yarn-project/circuit-types/src/tx_effect.test.ts @@ -1,15 +1,74 @@ +import { Fr } from '@aztec/circuits.js'; + import { TxEffect } from './tx_effect.js'; describe('TxEffect', () => { - it('convert to and from buffer', () => { + it('converts to and from buffer', () => { const txEffect = TxEffect.random(); const buf = txEffect.toBuffer(); expect(TxEffect.fromBuffer(buf)).toEqual(txEffect); }); - it('hash of empty tx effect matches snapshot', () => { - const txEffectHash = TxEffect.empty().hash().toString('hex'); - // If you change this you have to change the hardcoded value in TxsDecoder.sol! - expect(txEffectHash).toMatchInlineSnapshot(`"00c2dece9c9f14c67b8aafabdcb80793f1cffe95a801e15d648fd214a0522ee8"`); + it('converts to and from fields', () => { + const txEffect = TxEffect.random(); + const fields = txEffect.toBlobFields(); + // TODO(#8954): When logs are refactored into fields, we won't need to inject them here + expect( + TxEffect.fromBlobFields( + fields, + txEffect.noteEncryptedLogs, + txEffect.encryptedLogs, + txEffect.unencryptedLogs, + txEffect.contractClassLogs, + ), + ).toEqual(txEffect); + }); + + it('converts empty to and from fields', () => { + const txEffect = TxEffect.empty(); + const fields = txEffect.toBlobFields(); + expect(TxEffect.fromBlobFields(fields)).toEqual(txEffect); + }); + + it('fails with invalid fields', () => { + let txEffect = TxEffect.random(); + let fields = txEffect.toBlobFields(); + // Replace the initial field with an invalid encoding + fields[0] = new Fr(12); + expect(() => TxEffect.fromBlobFields(fields)).toThrow('Invalid fields'); + + txEffect = TxEffect.random(); + fields = txEffect.toBlobFields(); + // Add an extra field + fields.push(new Fr(7)); + // TODO(#8954): When logs are refactored into fields, we won't need to inject them here + expect(() => + TxEffect.fromBlobFields( + fields, + txEffect.noteEncryptedLogs, + txEffect.encryptedLogs, + txEffect.unencryptedLogs, + txEffect.contractClassLogs, + ), + ).toThrow('Too many fields'); + + txEffect = TxEffect.random(); + fields = txEffect.toBlobFields(); + const buf = Buffer.alloc(3); + buf.writeUint8(6); + buf.writeUint8(0, 2); + // Add an extra field which looks like a valid prefix + const fakePrefix = new Fr(buf); + fields.push(fakePrefix); + // TODO(#8954): When logs are refactored into fields, we won't need to inject them here + expect(() => + TxEffect.fromBlobFields( + fields, + txEffect.noteEncryptedLogs, + txEffect.encryptedLogs, + txEffect.unencryptedLogs, + txEffect.contractClassLogs, + ), + ).toThrow('Invalid fields'); }); }); diff --git a/yarn-project/circuit-types/src/tx_effect.ts b/yarn-project/circuit-types/src/tx_effect.ts index 8a06a7fb09b..3c84eb6ae96 100644 --- a/yarn-project/circuit-types/src/tx_effect.ts +++ b/yarn-project/circuit-types/src/tx_effect.ts @@ -1,23 +1,54 @@ import { + CONTRACT_CLASS_LOGS_PREFIX, + ENCRYPTED_LOGS_PREFIX, Fr, + L2_L1_MSGS_PREFIX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, + NOTES_PREFIX, + NOTE_ENCRYPTED_LOGS_PREFIX, + NULLIFIERS_PREFIX, + PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, PublicDataWrite, + REVERT_CODE_PREFIX, RevertCode, + TX_FEE_PREFIX, + TX_START_PREFIX, + UNENCRYPTED_LOGS_PREFIX, } from '@aztec/circuits.js'; import { makeTuple } from '@aztec/foundation/array'; +import { toBufferBE } from '@aztec/foundation/bigint-buffer'; import { padArrayEnd } from '@aztec/foundation/collection'; import { sha256Trunc } from '@aztec/foundation/crypto'; import { hexSchemaFor } from '@aztec/foundation/schemas'; -import { BufferReader, serializeArrayOfBufferableToVector, serializeToBuffer } from '@aztec/foundation/serialize'; +import { + BufferReader, + FieldReader, + serializeArrayOfBufferableToVector, + serializeToBuffer, +} from '@aztec/foundation/serialize'; import { inspect } from 'util'; -import { ContractClassTxL2Logs, EncryptedNoteTxL2Logs, EncryptedTxL2Logs, UnencryptedTxL2Logs } from './logs/index.js'; +import { + ContractClassTxL2Logs, + type EncryptedL2Log, + EncryptedL2NoteLog, + EncryptedNoteTxL2Logs, + EncryptedTxL2Logs, + type TxL2Logs, + type UnencryptedL2Log, + UnencryptedTxL2Logs, +} from './logs/index.js'; import { TxHash } from './tx/tx_hash.js'; +// These are helper constants to decode tx effects from blob encoded fields +const TX_START_PREFIX_BYTES_LENGTH = TX_START_PREFIX.toString(16).length / 2; +// 7 bytes for: | 0 | txlen[0] | txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revertCode | +const TX_EFFECT_PREFIX_BYTE_LENGTH = TX_START_PREFIX_BYTES_LENGTH + 7; + export class TxEffect { constructor( /** @@ -143,51 +174,10 @@ export class TxEffect { ); } - /** - * Computes the hash of the TxEffect object. - * @returns The hash of the TxEffect object. - * @dev This function must correspond with compute_tx_effects_hash() in Noir and TxsDecoder.sol decode(). - */ - hash() { - const padBuffer = (buf: Buffer, length: number) => Buffer.concat([buf, Buffer.alloc(length - buf.length)]); - - const noteHashesBuffer = padBuffer(serializeToBuffer(this.noteHashes), Fr.SIZE_IN_BYTES * MAX_NOTE_HASHES_PER_TX); - const nullifiersBuffer = padBuffer(serializeToBuffer(this.nullifiers), Fr.SIZE_IN_BYTES * MAX_NULLIFIERS_PER_TX); - const outHashBuffer = this.txOutHash(); - const publicDataWritesBuffer = padBuffer( - serializeToBuffer(this.publicDataWrites), - PublicDataWrite.SIZE_IN_BYTES * MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, - ); - - const noteEncryptedLogsHashKernel0 = this.noteEncryptedLogs.hash(); - const encryptedLogsHashKernel0 = this.encryptedLogs.hash(); - const unencryptedLogsHashKernel0 = this.unencryptedLogs.hash(); - const contractClassLogsHashKernel0 = this.contractClassLogs.hash(); - - const inputValue = Buffer.concat([ - this.revertCode.toHashPreimage(), - this.transactionFee.toBuffer(), - noteHashesBuffer, - nullifiersBuffer, - outHashBuffer, - publicDataWritesBuffer, - this.noteEncryptedLogsLength.toBuffer(), - this.encryptedLogsLength.toBuffer(), - this.unencryptedLogsLength.toBuffer(), - this.contractClassLogsLength.toBuffer(), - noteEncryptedLogsHashKernel0, - encryptedLogsHashKernel0, - unencryptedLogsHashKernel0, - contractClassLogsHashKernel0, - ]); - - return sha256Trunc(inputValue); - } - /** * Computes txOutHash of this tx effect. * TODO(#7218): Revert to fixed height tree for outbox - * @dev Follows computeTxOutHash in TxsDecoder.sol and new_sha in variable_merkle_tree.nr + * @dev Follows new_sha in variable_merkle_tree.nr */ txOutHash() { const { l2ToL1Msgs } = this; @@ -224,7 +214,7 @@ export class TxEffect { const contractClassLogs = ContractClassTxL2Logs.random(1, 1); return new TxEffect( RevertCode.random(), - Fr.random(), + new Fr(Math.floor(Math.random() * 100_000)), makeTuple(MAX_NOTE_HASHES_PER_TX, Fr.random), makeTuple(MAX_NULLIFIERS_PER_TX, Fr.random), makeTuple(MAX_L2_TO_L1_MSGS_PER_TX, Fr.random), @@ -268,6 +258,273 @@ export class TxEffect { return this.toBuffer().toString('hex'); } + /** + * Returns the prefix as used in a blob. + * Used to prefix a 'block' of tx effects with its type and length. + */ + private toPrefix(type: number, length: number): Fr { + const buf = Buffer.alloc(3); + buf.writeUint8(type); + buf.writeUint8(length, 2); + return new Fr(buf); + } + + /** + * Decodes the prefix as used in a blob to tx effect type and length. + */ + static fromPrefix(prefix: Fr) { + const buf = prefix.toBuffer().subarray(-3); + return { type: buf[0], length: buf[2] }; + } + + /** + * Encodes the first field of a tx effect as used in a blob: + * TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + */ + private encodeFirstField(length: number, revertCode: RevertCode) { + const lengthBuf = Buffer.alloc(2); + lengthBuf.writeUInt16BE(length, 0); + return new Fr( + Buffer.concat([ + toBufferBE(TX_START_PREFIX, TX_START_PREFIX_BYTES_LENGTH), + Buffer.alloc(1), + lengthBuf, + Buffer.alloc(1), + Buffer.from([REVERT_CODE_PREFIX]), + Buffer.alloc(1), + revertCode.toBuffer(), + ]), + ); + } + + /** + * Decodes the first field of a tx effect as used in a blob: + * TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + * Assumes that isFirstField has been called already. + */ + static decodeFirstField(field: Fr) { + const buf = field.toBuffer().subarray(-TX_EFFECT_PREFIX_BYTE_LENGTH); + return { + length: new Fr(buf.subarray(TX_START_PREFIX_BYTES_LENGTH + 1, TX_START_PREFIX_BYTES_LENGTH + 3)).toNumber(), + revertCode: buf[buf.length - 1], + }; + } + + /** + * Determines whether a field is the first field of a tx effect + */ + static isFirstField(field: Fr) { + const buf = field.toBuffer(); + if ( + !buf + .subarray(0, field.size - TX_EFFECT_PREFIX_BYTE_LENGTH) + .equals(Buffer.alloc(field.size - TX_EFFECT_PREFIX_BYTE_LENGTH)) + ) { + return false; + } + const sliced = buf.subarray(-TX_EFFECT_PREFIX_BYTE_LENGTH); + if ( + // Checking we start with the correct prefix... + !new Fr(sliced.subarray(0, TX_START_PREFIX_BYTES_LENGTH)).equals(new Fr(TX_START_PREFIX)) || + // ...and include the revert code prefix.. + sliced[sliced.length - 3] !== REVERT_CODE_PREFIX || + // ...and the following revert code is valid. + sliced[sliced.length - 1] > 4 + ) { + return false; + } + return true; + } + + /** + * Returns a flat packed array of prefixed fields of all tx effects, used for blobs. + */ + toBlobFields(): Fr[] { + if (this.isEmpty()) { + return []; + } + const flattened: Fr[] = []; + // We reassign the first field when we know the length of all effects - see below + flattened.push(Fr.ZERO); + // TODO: how long should tx fee be? For now, not using toPrefix() + flattened.push( + new Fr( + Buffer.concat([Buffer.from([TX_FEE_PREFIX]), Buffer.alloc(1), this.transactionFee.toBuffer().subarray(3)]), + ), + ); + if (this.noteHashes.length) { + flattened.push(this.toPrefix(NOTES_PREFIX, this.noteHashes.length)); + flattened.push(...this.noteHashes); + } + if (this.nullifiers.length) { + flattened.push(this.toPrefix(NULLIFIERS_PREFIX, this.nullifiers.length)); + flattened.push(...this.nullifiers); + } + if (this.l2ToL1Msgs.length) { + flattened.push(this.toPrefix(L2_L1_MSGS_PREFIX, this.l2ToL1Msgs.length)); + flattened.push(...this.l2ToL1Msgs); + } + if (this.publicDataWrites.length) { + flattened.push(this.toPrefix(PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, this.publicDataWrites.length * 2)); + flattened.push(...this.publicDataWrites.map(w => [w.leafSlot, w.value]).flat()); + } + // TODO(#8954): When logs are refactored into fields, we will append the values here + // Currently appending the single log hash as an interim solution + if (this.noteEncryptedLogs.unrollLogs().length) { + flattened.push(this.toPrefix(NOTE_ENCRYPTED_LOGS_PREFIX, this.noteEncryptedLogs.unrollLogs().length)); + flattened.push(...this.noteEncryptedLogs.unrollLogs().map(log => Fr.fromBuffer(log.hash()))); + } + if (this.encryptedLogs.unrollLogs().length) { + flattened.push(this.toPrefix(ENCRYPTED_LOGS_PREFIX, this.encryptedLogs.unrollLogs().length)); + flattened.push(...this.encryptedLogs.unrollLogs().map(log => Fr.fromBuffer(log.getSiloedHash()))); + } + if (this.unencryptedLogs.unrollLogs().length) { + flattened.push(this.toPrefix(UNENCRYPTED_LOGS_PREFIX, this.unencryptedLogs.unrollLogs().length)); + flattened.push(...this.unencryptedLogs.unrollLogs().map(log => Fr.fromBuffer(log.getSiloedHash()))); + } + if (this.contractClassLogs.unrollLogs().length) { + flattened.push(this.toPrefix(CONTRACT_CLASS_LOGS_PREFIX, this.contractClassLogs.unrollLogs().length)); + flattened.push(...this.contractClassLogs.unrollLogs().map(log => Fr.fromBuffer(log.getSiloedHash()))); + } + + // The first value appended to each list of fields representing a tx effect is: + // TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // Tx start and len are to aid decomposing/ identifying when we reach a new tx effect + // The remaining bytes are used for revert code, since that only requires 3 bytes + flattened[0] = this.encodeFirstField(flattened.length, this.revertCode); + return flattened; + } + + /** + * Decodes a flat packed array of prefixed fields to TxEffect + * TODO(#8954): When logs are refactored into fields, we won't need to inject them here, instead just reading from fields as below + */ + static fromBlobFields( + fields: Fr[] | FieldReader, + noteEncryptedLogs?: EncryptedNoteTxL2Logs, + encryptedLogs?: EncryptedTxL2Logs, + unencryptedLogs?: UnencryptedTxL2Logs, + contractClassLogs?: ContractClassTxL2Logs, + ) { + const ensureEmpty = (arr: Array) => { + if (arr.length) { + throw new Error('Invalid fields given to TxEffect.fromBlobFields(): Attempted to assign property twice.'); + } + }; + const effect = this.empty(); + if (!(fields instanceof FieldReader) && !fields.length) { + return effect; + } + const reader = FieldReader.asReader(fields); + const firstField = reader.readField(); + if (!this.isFirstField(firstField)) { + throw new Error('Invalid fields given to TxEffect.fromBlobFields(): First field invalid.'); + } + const { length: _, revertCode } = this.decodeFirstField(firstField); + effect.revertCode = RevertCode.fromField(new Fr(revertCode)); + // TODO: how long should tx fee be? For now, not using fromPrefix() + const prefixedFee = reader.readField(); + // NB: Fr.fromBuffer hangs here if you provide a buffer less than 32 in len + effect.transactionFee = Fr.fromBuffer(Buffer.concat([Buffer.alloc(3), prefixedFee.toBuffer().subarray(3)])); + while (!reader.isFinished()) { + const { type, length } = this.fromPrefix(reader.readField()); + switch (type) { + case NOTES_PREFIX: + ensureEmpty(effect.noteHashes); + effect.noteHashes = reader.readFieldArray(length); + break; + case NULLIFIERS_PREFIX: + ensureEmpty(effect.nullifiers); + effect.nullifiers = reader.readFieldArray(length); + break; + case L2_L1_MSGS_PREFIX: + ensureEmpty(effect.l2ToL1Msgs); + effect.l2ToL1Msgs = reader.readFieldArray(length); + break; + case PUBLIC_DATA_UPDATE_REQUESTS_PREFIX: { + ensureEmpty(effect.publicDataWrites); + const publicDataPairs = reader.readFieldArray(length); + for (let i = 0; i < length; i += 2) { + effect.publicDataWrites.push(new PublicDataWrite(publicDataPairs[i], publicDataPairs[i + 1])); + } + break; + } + // TODO(#8954): When logs are refactored into fields, we will append the read fields here + case NOTE_ENCRYPTED_LOGS_PREFIX: + // effect.noteEncryptedLogs = EncryptedNoteTxL2Logs.fromFields(reader.readFieldArray(length)); + ensureEmpty(effect.noteEncryptedLogs.functionLogs); + if (!noteEncryptedLogs) { + throw new Error(`Tx effect has note logs, but they were not passed raw to .fromBlobFields()`); + } + this.checkInjectedLogs(noteEncryptedLogs, reader.readFieldArray(length)); + effect.noteEncryptedLogs = noteEncryptedLogs; + effect.noteEncryptedLogsLength = new Fr(noteEncryptedLogs.getKernelLength()); + break; + case ENCRYPTED_LOGS_PREFIX: + // effect.encryptedLogs = EncryptedTxL2Logs.fromFields(reader.readFieldArray(length)); + ensureEmpty(effect.encryptedLogs.functionLogs); + if (!encryptedLogs) { + throw new Error(`Tx effect has encrypted logs, but they were not passed raw to .fromBlobFields()`); + } + this.checkInjectedLogs(encryptedLogs, reader.readFieldArray(length)); + effect.encryptedLogs = encryptedLogs; + effect.encryptedLogsLength = new Fr(encryptedLogs.getKernelLength()); + break; + case UNENCRYPTED_LOGS_PREFIX: + // effect.unencryptedLogs = UnencryptedTxL2Logs.fromFields(reader.readFieldArray(length)); + ensureEmpty(effect.unencryptedLogs.functionLogs); + if (!unencryptedLogs) { + throw new Error(`Tx effect has unencrypted logs, but they were not passed raw to .fromBlobFields()`); + } + this.checkInjectedLogs(unencryptedLogs, reader.readFieldArray(length)); + effect.unencryptedLogs = unencryptedLogs; + effect.unencryptedLogsLength = new Fr(unencryptedLogs.getKernelLength()); + break; + case CONTRACT_CLASS_LOGS_PREFIX: + // effect.contractClassLogs = ContractClassTxL2Logs.fromFields(reader.readFieldArray(length)); + ensureEmpty(effect.contractClassLogs.functionLogs); + if (!contractClassLogs) { + throw new Error(`Tx effect has contractClassLogs logs, but they were not passed raw to .fromBlobFields()`); + } + this.checkInjectedLogs(contractClassLogs, reader.readFieldArray(length)); + effect.contractClassLogs = contractClassLogs; + effect.contractClassLogsLength = new Fr(contractClassLogs.getKernelLength()); + break; + case REVERT_CODE_PREFIX: + default: + throw new Error(`Too many fields to decode given to TxEffect.fromBlobFields()`); + } + } + + // If the input fields have no logs, ensure we match the original struct by reassigning injected logs + effect.noteEncryptedLogs = + !effect.noteEncryptedLogs.getTotalLogCount() && noteEncryptedLogs ? noteEncryptedLogs : effect.noteEncryptedLogs; + effect.encryptedLogs = + !effect.encryptedLogs.getTotalLogCount() && encryptedLogs ? encryptedLogs : effect.encryptedLogs; + effect.unencryptedLogs = + !effect.unencryptedLogs.getTotalLogCount() && unencryptedLogs ? unencryptedLogs : effect.unencryptedLogs; + effect.contractClassLogs = + !effect.contractClassLogs.getTotalLogCount() && contractClassLogs ? contractClassLogs : effect.contractClassLogs; + return effect; + } + + // TODO(#8954): Remove below when logs are refactored into fields + private static checkInjectedLogs( + injected: TxL2Logs, + expectedHashes: Fr[], + ) { + injected.unrollLogs().forEach((log, i) => { + const logHash = log instanceof EncryptedL2NoteLog ? log.hash() : log.getSiloedHash(); + if (!Fr.fromBuffer(logHash).equals(expectedHashes[i])) { + throw new Error( + `Log hash mismatch when reconstructing tx effect. Expected: ${Fr.fromBuffer(logHash)}, Got: ${ + expectedHashes[i] + }`, + ); + } + }); + } + toJSON() { return this.toString(); } diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index ff6911cf4f3..08f07a540bb 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -79,8 +79,9 @@ export const PRIVATE_KERNEL_RESET_INDEX = 20; export const FUNCTION_SELECTOR_NUM_BYTES = 4; export const INITIALIZATION_SLOT_SEPARATOR = 1000000000; export const INITIAL_L2_BLOCK_NUM = 1; +export const FIELDS_PER_BLOB = 4096; +export const BLOBS_PER_BLOCK = 3; export const PRIVATE_LOG_SIZE_IN_BYTES = 576; -export const BLOB_SIZE_IN_BYTES = 126976; export const AZTEC_MAX_EPOCH_DURATION = 32; export const GENESIS_ARCHIVE_ROOT = 19007378675971183768036762391356802220352606103602592933942074152320327194720n; export const FEE_JUICE_INITIAL_MINT = 200000000000000; @@ -148,6 +149,9 @@ export const FUNCTION_DATA_LENGTH = 2; export const FUNCTION_LEAF_PREIMAGE_LENGTH = 5; export const GLOBAL_VARIABLES_LENGTH = 9; export const APPEND_ONLY_TREE_SNAPSHOT_LENGTH = 2; +export const APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES = 36; +export const SPONGE_BLOB_LENGTH = 11; +export const BLOB_PUBLIC_INPUTS = 6; export const L1_TO_L2_MESSAGE_LENGTH = 6; export const L2_TO_L1_MESSAGE_LENGTH = 3; export const SCOPED_L2_TO_L1_MESSAGE_LENGTH = 4; @@ -180,6 +184,7 @@ export const TX_CONTEXT_LENGTH = 8; export const TX_REQUEST_LENGTH = 12; export const TOTAL_FEES_LENGTH = 1; export const HEADER_LENGTH = 24; +export const HEADER_LENGTH_BYTES = 616; export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 490; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 866; export const PRIVATE_CONTEXT_INPUTS_LENGTH = 37; @@ -201,9 +206,9 @@ export const PRIVATE_TO_PUBLIC_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1140; export const KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 605; export const AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1006; export const CONSTANT_ROLLUP_DATA_LENGTH = 13; -export const BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 30; -export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 90; -export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 76; +export const BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 51; +export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 666; +export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 652; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; @@ -317,6 +322,17 @@ export const AVM_EMITNOTEHASH_BASE_DA_GAS = 512; export const AVM_EMITNULLIFIER_BASE_DA_GAS = 512; export const AVM_SENDL2TOL1MSG_BASE_DA_GAS = 512; export const AVM_EMITUNENCRYPTEDLOG_DYN_DA_GAS = 512; +export const TX_START_PREFIX = 8392562855083340404n; +export const REVERT_CODE_PREFIX = 1; +export const TX_FEE_PREFIX = 2; +export const NOTES_PREFIX = 3; +export const NULLIFIERS_PREFIX = 4; +export const L2_L1_MSGS_PREFIX = 5; +export const PUBLIC_DATA_UPDATE_REQUESTS_PREFIX = 6; +export const NOTE_ENCRYPTED_LOGS_PREFIX = 7; +export const ENCRYPTED_LOGS_PREFIX = 8; +export const UNENCRYPTED_LOGS_PREFIX = 9; +export const CONTRACT_CLASS_LOGS_PREFIX = 10; export const PROOF_TYPE_PLONK = 0; export const PROOF_TYPE_HONK = 1; export const PROOF_TYPE_OINK = 2; diff --git a/yarn-project/circuits.js/src/structs/blob_public_inputs.test.ts b/yarn-project/circuits.js/src/structs/blob_public_inputs.test.ts new file mode 100644 index 00000000000..9dc9c42d7be --- /dev/null +++ b/yarn-project/circuits.js/src/structs/blob_public_inputs.test.ts @@ -0,0 +1,79 @@ +import { Blob } from '@aztec/foundation/blob'; +import { randomInt } from '@aztec/foundation/crypto'; + +import { BLOBS_PER_BLOCK, BLOB_PUBLIC_INPUTS } from '../constants.gen.js'; +import { makeBlobPublicInputs, makeBlockBlobPublicInputs } from '../tests/factories.js'; +import { BlobPublicInputs, BlockBlobPublicInputs } from './blob_public_inputs.js'; +import { Fr } from './index.js'; + +describe('BlobPublicInputs', () => { + let blobPI: BlobPublicInputs; + + beforeAll(() => { + blobPI = makeBlobPublicInputs(randomInt(1000)); + }); + + it('serializes to buffer and deserializes it back', () => { + const buffer = blobPI.toBuffer(); + const res = BlobPublicInputs.fromBuffer(buffer); + expect(res).toEqual(blobPI); + }); + + it('converts correctly from Blob class', () => { + const blob = new Blob(Array(400).fill(new Fr(3))); + const converted = BlobPublicInputs.fromBlob(blob); + expect(converted.z).toEqual(blob.challengeZ); + expect(Buffer.from(converted.y.toString(16), 'hex')).toEqual(blob.evaluationY); + expect(converted.kzgCommitment).toEqual(blob.commitmentToFields()); + expect(converted.commitmentToBuffer()).toEqual(blob.commitment); + }); + + it('serializes to field array and deserializes it back', () => { + const fieldArray = blobPI.toFields(); + const res = BlobPublicInputs.fromFields(fieldArray); + expect(res).toEqual(blobPI); + }); + + // NB: In noir, blob.y is represented as a BigNum = 3x Fr fields. In ts, we use bigint for ease of calcs. + it('number of fields matches constant', () => { + const fields = blobPI.toFields(); + expect(fields.length).toBe(BLOB_PUBLIC_INPUTS); + }); +}); + +describe('BlockBlobPublicInputs', () => { + let blobPI: BlockBlobPublicInputs; + + beforeAll(() => { + blobPI = makeBlockBlobPublicInputs(randomInt(1000)); + }); + + it('serializes to buffer and deserializes it back', () => { + const buffer = blobPI.toBuffer(); + const res = BlockBlobPublicInputs.fromBuffer(buffer); + expect(res).toEqual(blobPI); + }); + + it('converts correctly from Blob class', () => { + const blobs = Array.from({ length: BLOBS_PER_BLOCK }, (_, i) => new Blob(Array(400).fill(new Fr(i + 1)))); + const converted = BlockBlobPublicInputs.fromBlobs(blobs); + converted.inner.forEach((blobPI, i) => { + expect(blobPI.z).toEqual(blobs[i].challengeZ); + expect(Buffer.from(blobPI.y.toString(16), 'hex')).toEqual(blobs[i].evaluationY); + expect(blobPI.kzgCommitment).toEqual(blobs[i].commitmentToFields()); + expect(blobPI.commitmentToBuffer()).toEqual(blobs[i].commitment); + }); + }); + + it('serializes to field array and deserializes it back', () => { + const fieldArray = blobPI.toFields(); + const res = BlockBlobPublicInputs.fromFields(fieldArray); + expect(res).toEqual(blobPI); + }); + + // NB: In noir, blob.y is represented as a BigNum = 3x Fr fields. In ts, we use bigint for ease of calcs. + it('number of fields matches constant', () => { + const fields = blobPI.toFields(); + expect(fields.length).toBe(BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK); + }); +}); diff --git a/yarn-project/circuits.js/src/structs/blob_public_inputs.ts b/yarn-project/circuits.js/src/structs/blob_public_inputs.ts new file mode 100644 index 00000000000..bbec9f51eaf --- /dev/null +++ b/yarn-project/circuits.js/src/structs/blob_public_inputs.ts @@ -0,0 +1,161 @@ +import { makeTuple } from '@aztec/foundation/array'; +import { toBigIntBE, toBufferBE, toHex } from '@aztec/foundation/bigint-buffer'; +import { type Blob } from '@aztec/foundation/blob'; +import { sha256, sha256Trunc } from '@aztec/foundation/crypto'; +import { Fr } from '@aztec/foundation/fields'; +import { BufferReader, FieldReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; +import { type FieldsOf } from '@aztec/foundation/types'; + +import { BLOBS_PER_BLOCK } from '../constants.gen.js'; + +// The prefix to the EVM blobHash, defined here: https://eips.ethereum.org/EIPS/eip-4844#specification +// Also defined in yarn-project/foundation/src/blob/index.ts, which can't take in our circuits.js constants +export const VERSIONED_HASH_VERSION_KZG = 0x01; + +/** + * Public inputs required to be passed from our rollup circuits to verify a blob. + */ +export class BlobPublicInputs { + constructor( + /** Challenge point z (= H(H(tx_effects), kzgCommmitment). */ + public z: Fr, + /** Evaluation y = p(z), where p() is the blob polynomial. */ + public y: bigint, + /** Commitment to the blob C. */ + public kzgCommitment: Tuple, + ) {} + + static empty(): BlobPublicInputs { + return new BlobPublicInputs(Fr.ZERO, 0n, [Fr.ZERO, Fr.ZERO]); + } + + isEmpty(): boolean { + return this.z.isZero() && this.y == 0n && this.kzgCommitment[0].isZero() && this.kzgCommitment[1].isZero(); + } + + static fromBuffer(buffer: Buffer | BufferReader): BlobPublicInputs { + const reader = BufferReader.asReader(buffer); + return new BlobPublicInputs(Fr.fromBuffer(reader), toBigIntBE(reader.readBytes(32)), reader.readArray(2, Fr)); + } + + toBuffer() { + return serializeToBuffer(...BlobPublicInputs.getFields(this)); + } + + static fromFields(fields: Fr[] | FieldReader): BlobPublicInputs { + const reader = FieldReader.asReader(fields); + // TODO: Create a BigNum to fields conversion we can use here and in type_conversion.ts + const fromBigNum = (fieldArr: Fr[]) => { + return BigInt( + fieldArr[2].toString().concat(fieldArr[1].toString().substring(2), fieldArr[0].toString().substring(2)), + ); + }; + return new BlobPublicInputs(reader.readField(), fromBigNum(reader.readFieldArray(3)), reader.readFieldArray(2)); + } + + // NB: y is NOT a BN254 field, it's a larger BLS field, we cannot use serialiseToFields here as it assumes bigints will fit + // TODO: Create a BigNum to fields conversion we can use here and in type_conversion.ts + toFields() { + const hex = toHex(this.y, true); + const bigNum = [ + Fr.fromString('0x' + hex.substring(36)), + Fr.fromString('0x' + hex.substring(6, 36)), + Fr.fromString(hex.substring(0, 6)), + ]; + return [this.z, ...bigNum, ...this.kzgCommitment]; + } + + static getFields(fields: FieldsOf) { + return [fields.z, fields.y, fields.kzgCommitment] as const; + } + + static fromBlob(input: Blob): BlobPublicInputs { + return new BlobPublicInputs(input.challengeZ, toBigIntBE(input.evaluationY), input.commitmentToFields()); + } + + getBlobHash(): Buffer { + const hash = sha256(this.commitmentToBuffer()); + hash[0] = VERSIONED_HASH_VERSION_KZG; + return hash; + } + + // Performs the reverse conversion of blob.commitmentToFields() + // 48 bytes encoded in fields as [Fr, Fr] = [0->31, 31->48] + commitmentToBuffer(): Buffer { + return Buffer.concat([ + this.kzgCommitment[0].toBuffer().subarray(1), + this.kzgCommitment[1].toBuffer().subarray(-17), + ]); + } + + equals(other: BlobPublicInputs) { + return ( + this.z.equals(other.z) && + this.y == other.y && + this.kzgCommitment[0].equals(other.kzgCommitment[0]) && + this.kzgCommitment[1].equals(other.kzgCommitment[1]) + ); + } +} + +// NB: it is much cleaner throughout the protocol circuits to define this struct rather than use a nested array. +// Once we accumulate blob inputs, it should be removed, and we just use BlobPublicInputs::accumulate everywhere. +export class BlockBlobPublicInputs { + constructor(public inner: Tuple) {} + + static empty(): BlockBlobPublicInputs { + return new BlockBlobPublicInputs(makeTuple(BLOBS_PER_BLOCK, BlobPublicInputs.empty)); + } + + static fromBuffer(buffer: Buffer | BufferReader): BlockBlobPublicInputs { + const reader = BufferReader.asReader(buffer); + return new BlockBlobPublicInputs(reader.readArray(BLOBS_PER_BLOCK, BlobPublicInputs)); + } + + toBuffer() { + return serializeToBuffer(...BlockBlobPublicInputs.getFields(this)); + } + + static fromFields(fields: Fr[] | FieldReader): BlockBlobPublicInputs { + const reader = FieldReader.asReader(fields); + return new BlockBlobPublicInputs(reader.readArray(BLOBS_PER_BLOCK, BlobPublicInputs)); + } + + toFields() { + return this.inner.map(i => i.toFields()).flat(); + } + + static getFields(fields: FieldsOf) { + return [fields.inner] as const; + } + + static fromBlobs(inputs: Blob[]): BlockBlobPublicInputs { + const inner = makeTuple(BLOBS_PER_BLOCK, BlobPublicInputs.empty); + if (inputs.length > BLOBS_PER_BLOCK) { + throw new Error(`Can only fit ${BLOBS_PER_BLOCK} in one BlockBlobPublicInputs instance (given ${inputs.length})`); + } + inputs.forEach((input, i) => { + inner[i] = BlobPublicInputs.fromBlob(input); + }); + return new BlockBlobPublicInputs(inner); + } + + getBlobsHash() { + const blobHashes = this.inner.map(item => (item.isEmpty() ? Buffer.alloc(0) : item.getBlobHash())); + return sha256Trunc(serializeToBuffer(blobHashes)); + } + + // The below is used to send to L1 for proof verification + toString() { + const nonEmptyBlobs = this.inner.filter(item => !item.isEmpty()); + // Write the number of blobs for L1 to verify + let buf = Buffer.alloc(1); + buf.writeUInt8(nonEmptyBlobs.length); + // Using standard toBuffer() does not correctly encode the commitment + // On L1, it's a 48 byte number, which we convert to 2 fields for use in the circuits + nonEmptyBlobs.forEach(blob => { + buf = Buffer.concat([buf, blob.z.toBuffer(), toBufferBE(blob.y, 32), blob.commitmentToBuffer()]); + }); + return buf.toString('hex'); + } +} diff --git a/yarn-project/circuits.js/src/structs/content_commitment.ts b/yarn-project/circuits.js/src/structs/content_commitment.ts index 578a6831ff5..2eb8846ec60 100644 --- a/yarn-project/circuits.js/src/structs/content_commitment.ts +++ b/yarn-project/circuits.js/src/structs/content_commitment.ts @@ -9,12 +9,13 @@ import { CONTENT_COMMITMENT_LENGTH } from '../constants.gen.js'; export const NUM_BYTES_PER_SHA256 = 32; export class ContentCommitment { - constructor(public numTxs: Fr, public txsEffectsHash: Buffer, public inHash: Buffer, public outHash: Buffer) { - if (txsEffectsHash.length !== NUM_BYTES_PER_SHA256) { - throw new Error(`txsEffectsHash buffer must be ${NUM_BYTES_PER_SHA256} bytes`); + constructor(public numTxs: Fr, public blobsHash: Buffer, public inHash: Buffer, public outHash: Buffer) { + // NB: we do not calculate blobHash in the circuit, but we still truncate it so it fits in a field + if (blobsHash.length !== NUM_BYTES_PER_SHA256) { + throw new Error(`blobHash buffer must be ${NUM_BYTES_PER_SHA256} bytes`); } - if (txsEffectsHash[0] !== 0) { - throw new Error(`txsEffectsHash buffer should be truncated and left padded`); + if (blobsHash[0] !== 0) { + throw new Error(`blobHash buffer should be truncated and left padded`); } if (inHash.length !== NUM_BYTES_PER_SHA256) { throw new Error(`inHash buffer must be ${NUM_BYTES_PER_SHA256} bytes`); @@ -34,19 +35,17 @@ export class ContentCommitment { return z .object({ numTxs: schemas.Fr, - txsEffectsHash: schemas.BufferHex, + blobsHash: schemas.BufferHex, inHash: schemas.BufferHex, outHash: schemas.BufferHex, }) - .transform( - ({ numTxs, txsEffectsHash, inHash, outHash }) => new ContentCommitment(numTxs, txsEffectsHash, inHash, outHash), - ); + .transform(({ numTxs, blobsHash, inHash, outHash }) => new ContentCommitment(numTxs, blobsHash, inHash, outHash)); } toJSON() { return { numTxs: this.numTxs, - txsEffectsHash: this.txsEffectsHash.toString('hex'), + blobsHash: this.blobsHash.toString('hex'), inHash: this.inHash.toString('hex'), outHash: this.outHash.toString('hex'), }; @@ -57,18 +56,20 @@ export class ContentCommitment { } toBuffer() { - return serializeToBuffer(this.numTxs, this.txsEffectsHash, this.inHash, this.outHash); + return serializeToBuffer(this.numTxs, this.blobsHash, this.inHash, this.outHash); } toFields(): Fr[] { const serialized = [ this.numTxs, - Fr.fromBuffer(this.txsEffectsHash), + Fr.fromBuffer(this.blobsHash), Fr.fromBuffer(this.inHash), Fr.fromBuffer(this.outHash), ]; if (serialized.length !== CONTENT_COMMITMENT_LENGTH) { - throw new Error(`Expected content commitment to have 4 fields, but it has ${serialized.length} fields`); + throw new Error( + `Expected content commitment to have ${CONTENT_COMMITMENT_LENGTH} fields, but it has ${serialized.length} fields`, + ); } return serialized; } @@ -106,7 +107,7 @@ export class ContentCommitment { isEmpty(): boolean { return ( this.numTxs.isZero() && - this.txsEffectsHash.equals(Buffer.alloc(NUM_BYTES_PER_SHA256)) && + this.blobsHash.equals(Buffer.alloc(NUM_BYTES_PER_SHA256)) && this.inHash.equals(Buffer.alloc(NUM_BYTES_PER_SHA256)) && this.outHash.equals(Buffer.alloc(NUM_BYTES_PER_SHA256)) ); @@ -126,7 +127,7 @@ export class ContentCommitment { this.inHash.equals(other.inHash) && this.outHash.equals(other.outHash) && this.numTxs.equals(other.numTxs) && - this.txsEffectsHash.equals(other.txsEffectsHash) + this.blobsHash.equals(other.blobsHash) ); } } diff --git a/yarn-project/circuits.js/src/structs/header.ts b/yarn-project/circuits.js/src/structs/header.ts index f31f85a2ef9..5648c55ff85 100644 --- a/yarn-project/circuits.js/src/structs/header.ts +++ b/yarn-project/circuits.js/src/structs/header.ts @@ -155,8 +155,8 @@ export class Header { [inspect.custom]() { return `Header { lastArchive: ${inspect(this.lastArchive)}, - contentCommitment.numTx: ${this.contentCommitment.numTxs.toNumber()}, - contentCommitment.txsEffectsHash: ${this.contentCommitment.txsEffectsHash.toString('hex')}, + contentCommitment.numTxs: ${this.contentCommitment.numTxs.toNumber()}, + contentCommitment.blobsHash: ${this.contentCommitment.blobsHash.toString('hex')}, contentCommitment.inHash: ${this.contentCommitment.inHash.toString('hex')}, contentCommitment.outHash: ${this.contentCommitment.outHash.toString('hex')}, state.l1ToL2MessageTree: ${inspect(this.state.l1ToL2MessageTree)}, diff --git a/yarn-project/circuits.js/src/structs/index.ts b/yarn-project/circuits.js/src/structs/index.ts index 96b87bbbc6f..614c6815feb 100644 --- a/yarn-project/circuits.js/src/structs/index.ts +++ b/yarn-project/circuits.js/src/structs/index.ts @@ -2,6 +2,7 @@ export * from '@aztec/foundation/eth-address'; export * from './avm/avm.js'; export * from './avm/avm_accumulated_data.js'; export * from './avm/avm_circuit_public_inputs.js'; +export * from './blob_public_inputs.js'; export * from './call_context.js'; export * from './client_ivc_proof.js'; export * from './complete_address.js'; @@ -87,6 +88,7 @@ export * from './rollup/state_diff_hints.js'; export * from './rollup/tube_inputs.js'; export * from './rollup_validation_requests.js'; export * from './scoped_key_validation_request_and_generator.js'; +export * from './sponge_blob.js'; export * from './shared.js'; export * from './state_reference.js'; export * from './tree_leaf_read_request.js'; diff --git a/yarn-project/circuits.js/src/structs/kernel/private_kernel_tail_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/kernel/private_kernel_tail_circuit_public_inputs.ts index 7ce5ae26c0d..9a0775d7a93 100644 --- a/yarn-project/circuits.js/src/structs/kernel/private_kernel_tail_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/kernel/private_kernel_tail_circuit_public_inputs.ts @@ -240,6 +240,16 @@ export class PrivateKernelTailCircuitPublicInputs { return nullifiers.filter(n => !n.isZero()); } + getNonEmptyL2toL1Msgs() { + const msgs = this.forPublic + ? mergeAccumulatedData( + this.forPublic.nonRevertibleAccumulatedData.l2ToL1Msgs, + this.forPublic.revertibleAccumulatedData.l2ToL1Msgs, + ) + : this.forRollup!.end.l2ToL1Msgs; + return msgs.filter(n => !n.isEmpty()); + } + static fromBuffer(buffer: Buffer | BufferReader): PrivateKernelTailCircuitPublicInputs { const reader = BufferReader.asReader(buffer); const isForPublic = reader.readBoolean(); diff --git a/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.ts b/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.ts index 981d1f0faa6..db6d645e168 100644 --- a/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.ts @@ -4,6 +4,7 @@ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { PartialStateReference } from '../partial_state_reference.js'; import { RollupTypes } from '../shared.js'; +import { SpongeBlob } from '../sponge_blob.js'; import { ConstantRollupData } from './constant_rollup_data.js'; /** @@ -32,16 +33,18 @@ export class BaseOrMergeRollupPublicInputs { */ public end: PartialStateReference, /** - * SHA256 hash of transactions effects. Used to make public inputs constant-sized (to then be unpacked on-chain). - * Note: Truncated to 31 bytes to fit in Fr. + * Sponge state to absorb blob inputs at the start of the rollup circuit. + */ + public startSpongeBlob: SpongeBlob, + /** + * Sponge state to absorb blob inputs at the end of the rollup circuit. */ - public txsEffectsHash: Fr, + public endSpongeBlob: SpongeBlob, /** * SHA256 hash of outhash. Used to make public inputs constant-sized (to then be unpacked on-chain). * Note: Truncated to 31 bytes to fit in Fr. */ public outHash: Fr, - /** * The summed `transaction_fee` of the constituent transactions. */ @@ -56,7 +59,8 @@ export class BaseOrMergeRollupPublicInputs { ConstantRollupData.empty(), PartialStateReference.empty(), PartialStateReference.empty(), - Fr.zero(), + SpongeBlob.empty(), + SpongeBlob.empty(), Fr.zero(), Fr.zero(), ); @@ -76,8 +80,8 @@ export class BaseOrMergeRollupPublicInputs { reader.readObject(ConstantRollupData), reader.readObject(PartialStateReference), reader.readObject(PartialStateReference), - //TODO check - Fr.fromBuffer(reader), + reader.readObject(SpongeBlob), + reader.readObject(SpongeBlob), Fr.fromBuffer(reader), Fr.fromBuffer(reader), ); @@ -96,7 +100,9 @@ export class BaseOrMergeRollupPublicInputs { this.start, this.end, - this.txsEffectsHash, + this.startSpongeBlob, + this.endSpongeBlob, + this.outHash, this.accumulatedFees, diff --git a/yarn-project/circuits.js/src/structs/rollup/base_rollup_hints.ts b/yarn-project/circuits.js/src/structs/rollup/base_rollup_hints.ts index d9176c82f6d..42d728911d2 100644 --- a/yarn-project/circuits.js/src/structs/rollup/base_rollup_hints.ts +++ b/yarn-project/circuits.js/src/structs/rollup/base_rollup_hints.ts @@ -5,6 +5,7 @@ import { ARCHIVE_HEIGHT } from '../../constants.gen.js'; import { MembershipWitness } from '../membership_witness.js'; import { PartialStateReference } from '../partial_state_reference.js'; import { PublicDataHint } from '../public_data_hint.js'; +import { SpongeBlob } from '../sponge_blob.js'; import { ConstantRollupData } from './constant_rollup_data.js'; import { PrivateBaseStateDiffHints, PublicBaseStateDiffHints } from './state_diff_hints.js'; @@ -14,6 +15,8 @@ export class PrivateBaseRollupHints { constructor( /** Partial state reference at the start of the rollup. */ public start: PartialStateReference, + /** Sponge state to absorb blob inputs at the start of the rollup. */ + public startSpongeBlob: SpongeBlob, /** Hints used while proving state diff validity. */ public stateDiffHints: PrivateBaseStateDiffHints, /** Public data read hint for accessing the balance of the fee payer. */ @@ -36,6 +39,7 @@ export class PrivateBaseRollupHints { static getFields(fields: FieldsOf) { return [ fields.start, + fields.startSpongeBlob, fields.stateDiffHints, fields.feePayerFeeJuiceBalanceReadHint, fields.archiveRootMembershipWitness, @@ -63,6 +67,7 @@ export class PrivateBaseRollupHints { const reader = BufferReader.asReader(buffer); return new PrivateBaseRollupHints( reader.readObject(PartialStateReference), + reader.readObject(SpongeBlob), reader.readObject(PrivateBaseStateDiffHints), reader.readObject(PublicDataHint), MembershipWitness.fromBuffer(reader, ARCHIVE_HEIGHT), @@ -77,6 +82,7 @@ export class PrivateBaseRollupHints { static empty() { return new PrivateBaseRollupHints( PartialStateReference.empty(), + SpongeBlob.empty(), PrivateBaseStateDiffHints.empty(), PublicDataHint.empty(), MembershipWitness.empty(ARCHIVE_HEIGHT), @@ -89,6 +95,8 @@ export class PublicBaseRollupHints { constructor( /** Partial state reference at the start of the rollup. */ public start: PartialStateReference, + /** Sponge state to absorb blob inputs at the start of the rollup. */ + public startSpongeBlob: SpongeBlob, /** Hints used while proving state diff validity. */ public stateDiffHints: PublicBaseStateDiffHints, /** Public data read hint for accessing the balance of the fee payer. */ @@ -110,6 +118,7 @@ export class PublicBaseRollupHints { static getFields(fields: FieldsOf) { return [ fields.start, + fields.startSpongeBlob, fields.stateDiffHints, fields.feePayerFeeJuiceBalanceReadHint, fields.archiveRootMembershipWitness, @@ -137,6 +146,7 @@ export class PublicBaseRollupHints { const reader = BufferReader.asReader(buffer); return new PublicBaseRollupHints( reader.readObject(PartialStateReference), + reader.readObject(SpongeBlob), reader.readObject(PublicBaseStateDiffHints), reader.readObject(PublicDataHint), MembershipWitness.fromBuffer(reader, ARCHIVE_HEIGHT), @@ -151,6 +161,7 @@ export class PublicBaseRollupHints { static empty() { return new PublicBaseRollupHints( PartialStateReference.empty(), + SpongeBlob.empty(), PublicBaseStateDiffHints.empty(), PublicDataHint.empty(), MembershipWitness.empty(ARCHIVE_HEIGHT), diff --git a/yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs_test.ts b/yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs.test.ts similarity index 100% rename from yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs_test.ts rename to yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs.test.ts diff --git a/yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs.ts b/yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs.ts index 639f335b760..0b27aee6104 100644 --- a/yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs.ts @@ -5,6 +5,7 @@ import { BufferReader, type Tuple, serializeToBuffer, serializeToFields } from ' import { type FieldsOf } from '@aztec/foundation/types'; import { AZTEC_MAX_EPOCH_DURATION } from '../../constants.gen.js'; +import { BlockBlobPublicInputs } from '../blob_public_inputs.js'; import { GlobalVariables } from '../global_variables.js'; import { AppendOnlyTreeSnapshot } from './append_only_tree_snapshot.js'; @@ -58,6 +59,10 @@ export class BlockRootOrBlockMergePublicInputs { * TODO(#7346): Temporarily added prover_id while we verify block-root proofs on L1 */ public proverId: Fr, + /** + * Public inputs required to verify a blob (challenge point z, evaluation y = p(z), and the commitment to p() for each blob) + */ + public blobPublicInputs: Tuple, ) {} /** @@ -79,6 +84,7 @@ export class BlockRootOrBlockMergePublicInputs { Fr.fromBuffer(reader), Fr.fromBuffer(reader), Fr.fromBuffer(reader), + reader.readArray(AZTEC_MAX_EPOCH_DURATION, BlockBlobPublicInputs), ); } @@ -99,6 +105,7 @@ export class BlockRootOrBlockMergePublicInputs { this.vkTreeRoot, this.protocolContractTreeRoot, this.proverId, + this.blobPublicInputs, ); } diff --git a/yarn-project/circuits.js/src/structs/rollup/block_root_rollup.ts b/yarn-project/circuits.js/src/structs/rollup/block_root_rollup.ts index 3a63c40ddb3..d469ada1216 100644 --- a/yarn-project/circuits.js/src/structs/rollup/block_root_rollup.ts +++ b/yarn-project/circuits.js/src/structs/rollup/block_root_rollup.ts @@ -5,6 +5,8 @@ import { type FieldsOf } from '@aztec/foundation/types'; import { ARCHIVE_HEIGHT, + BLOBS_PER_BLOCK, + FIELDS_PER_BLOB, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, NESTED_RECURSIVE_PROOF_LENGTH, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, @@ -54,6 +56,22 @@ export class BlockRootRollupInputs { * TODO(#7346): Temporarily added prover_id while we verify block-root proofs on L1 */ public proverId: Fr, + /** + * Flat list of all tx effects which will be added to the blob. + * Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)' + * Tuple + */ + public blobFields: Fr[], + /** + * KZG commitments representing the blob (precomputed in ts, injected to use inside circuit). + * TODO(Miranda): Rename to kzg_commitment to match BlobPublicInputs? + */ + public blobCommitments: Tuple, typeof BLOBS_PER_BLOCK>, + /** + * The hash of eth blob hashes for this block + * See yarn-project/foundation/src/blob/index.ts or body.ts for calculation + */ + public blobsHash: Fr, ) {} /** @@ -97,6 +115,9 @@ export class BlockRootRollupInputs { fields.newArchiveSiblingPath, fields.previousBlockHash, fields.proverId, + fields.blobFields, + fields.blobCommitments, + fields.blobsHash, ] as const; } @@ -117,6 +138,11 @@ export class BlockRootRollupInputs { reader.readArray(ARCHIVE_HEIGHT, Fr), Fr.fromBuffer(reader), Fr.fromBuffer(reader), + // Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)' + // reader.readArray(FIELDS_PER_BLOB, Fr), + Array.from({ length: FIELDS_PER_BLOB * BLOBS_PER_BLOCK }, () => Fr.fromBuffer(reader)), + reader.readArray(BLOBS_PER_BLOCK, { fromBuffer: () => reader.readArray(2, Fr) }), + Fr.fromBuffer(reader), ); } diff --git a/yarn-project/circuits.js/src/structs/rollup/root_rollup.test.ts b/yarn-project/circuits.js/src/structs/rollup/root_rollup.test.ts index 3b26ccb1cf9..7a10ef1d431 100644 --- a/yarn-project/circuits.js/src/structs/rollup/root_rollup.test.ts +++ b/yarn-project/circuits.js/src/structs/rollup/root_rollup.test.ts @@ -1,3 +1,4 @@ +import { ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH } from '../../constants.gen.js'; import { makeRootRollupPublicInputs } from '../../tests/factories.js'; import { RootRollupPublicInputs } from './root_rollup.js'; @@ -15,4 +16,10 @@ describe('structs/root_rollup', () => { const res = RootRollupPublicInputs.fromString(str); expect(res).toEqual(expected); }); + + it(`serializes a RootRollupPublicInputs to fields and matches constant`, () => { + const expected = makeRootRollupPublicInputs(); + const fields = expected.toFields(); + expect(fields.length).toBe(ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH); + }); }); diff --git a/yarn-project/circuits.js/src/structs/rollup/root_rollup.ts b/yarn-project/circuits.js/src/structs/rollup/root_rollup.ts index a8eb8b433e5..c59ab16a71e 100644 --- a/yarn-project/circuits.js/src/structs/rollup/root_rollup.ts +++ b/yarn-project/circuits.js/src/structs/rollup/root_rollup.ts @@ -4,6 +4,7 @@ import { BufferReader, type Tuple, serializeToBuffer, serializeToFields } from ' import { type FieldsOf } from '@aztec/foundation/types'; import { AZTEC_MAX_EPOCH_DURATION } from '../../constants.gen.js'; +import { BlockBlobPublicInputs } from '../blob_public_inputs.js'; import { AppendOnlyTreeSnapshot } from './append_only_tree_snapshot.js'; import { FeeRecipient } from './block_root_or_block_merge_public_inputs.js'; import { PreviousRollupBlockData } from './previous_rollup_block_data.js'; @@ -110,6 +111,7 @@ export class RootRollupPublicInputs { public vkTreeRoot: Fr, public protocolContractTreeRoot: Fr, public proverId: Fr, + public blobPublicInputs: Tuple, ) {} static getFields(fields: FieldsOf) { @@ -125,6 +127,7 @@ export class RootRollupPublicInputs { fields.vkTreeRoot, fields.protocolContractTreeRoot, fields.proverId, + fields.blobPublicInputs, ] as const; } @@ -159,6 +162,7 @@ export class RootRollupPublicInputs { Fr.fromBuffer(reader), Fr.fromBuffer(reader), Fr.fromBuffer(reader), + reader.readArray(AZTEC_MAX_EPOCH_DURATION, BlockBlobPublicInputs), ); } diff --git a/yarn-project/circuits.js/src/structs/sponge_blob.test.ts b/yarn-project/circuits.js/src/structs/sponge_blob.test.ts new file mode 100644 index 00000000000..b5f7d195b67 --- /dev/null +++ b/yarn-project/circuits.js/src/structs/sponge_blob.test.ts @@ -0,0 +1,56 @@ +import { poseidon2Hash } from '@aztec/foundation/crypto'; +import { Fr } from '@aztec/foundation/fields'; + +import { SPONGE_BLOB_LENGTH } from '../constants.gen.js'; +import { makeSpongeBlob } from '../tests/factories.js'; +import { SpongeBlob } from './sponge_blob.js'; + +describe('SpongeBlob', () => { + let spongeBlob: SpongeBlob; + + beforeAll(() => { + spongeBlob = makeSpongeBlob(1); + }); + + it('serializes to buffer and deserializes it back', () => { + const buffer = spongeBlob.toBuffer(); + const res = SpongeBlob.fromBuffer(buffer); + expect(res).toEqual(spongeBlob); + }); + + // TODO(Miranda): reinstate if we need to/from fields + // it('serializes to field array and deserializes it back', () => { + // const fieldArray = spongeBlob.toFields(); + // const res = SpongeBlob.fromFields(fieldArray); + // expect(res).toEqual(spongeBlob); + // }); + + it('number of fields matches constant', () => { + const fields = spongeBlob.sponge.cache.concat([ + ...spongeBlob.sponge.state, + new Fr(spongeBlob.sponge.cacheSize), + new Fr(spongeBlob.sponge.squeezeMode), + new Fr(spongeBlob.fields), + new Fr(spongeBlob.expectedFields), + ]); + expect(fields.length).toBe(SPONGE_BLOB_LENGTH); + }); + + it('matches an ordinary short poseidon2 hash', () => { + spongeBlob = SpongeBlob.init(4); + const input = [Fr.ONE, new Fr(2), new Fr(3), new Fr(4)]; + spongeBlob.absorb(input); + const expectedHash = poseidon2Hash(input); + const res = spongeBlob.squeeze(); + expect(res).toEqual(expectedHash); + }); + + it('matches an ordinary long poseidon2 hash', () => { + spongeBlob = SpongeBlob.init(4096); + const input = Array(4096).fill(new Fr(3)); + spongeBlob.absorb(input); + const expectedHash = poseidon2Hash(input); + const res = spongeBlob.squeeze(); + expect(res).toEqual(expectedHash); + }); +}); diff --git a/yarn-project/circuits.js/src/structs/sponge_blob.ts b/yarn-project/circuits.js/src/structs/sponge_blob.ts new file mode 100644 index 00000000000..5189909b956 --- /dev/null +++ b/yarn-project/circuits.js/src/structs/sponge_blob.ts @@ -0,0 +1,137 @@ +import { makeTuple } from '@aztec/foundation/array'; +import { poseidon2Permutation } from '@aztec/foundation/crypto'; +import { Fr } from '@aztec/foundation/fields'; +import { BufferReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; + +/** + * A Poseidon2 sponge used to accumulate data that will be added to a blob. + * See noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr. + */ +export class SpongeBlob { + constructor( + /** Sponge with absorbed tx effects that will go into a blob. */ + public readonly sponge: Poseidon2Sponge, + /** Number of effects absorbed so far. */ + public fields: number, + /** Number of effects that will be absorbed. */ + public readonly expectedFields: number, + ) {} + + static fromBuffer(buffer: Buffer | BufferReader): SpongeBlob { + const reader = BufferReader.asReader(buffer); + return new SpongeBlob(reader.readObject(Poseidon2Sponge), reader.readNumber(), reader.readNumber()); + } + + toBuffer() { + return serializeToBuffer(this.sponge, this.fields, this.expectedFields); + } + + clone() { + return SpongeBlob.fromBuffer(this.toBuffer()); + } + + absorb(fields: Fr[]) { + if (this.fields + fields.length > this.expectedFields) { + throw new Error( + `Attempted to fill spongeblob with ${this.fields + fields.length}, but it has a max of ${this.expectedFields}`, + ); + } + this.sponge.absorb(fields); + this.fields += fields.length; + } + + squeeze(): Fr { + // If the blob sponge is not 'full', we append 1 to match Poseidon2::hash_internal() + // NB: There is currently no use case in which we don't 'fill' a blob sponge, but adding for completeness + if (this.fields != this.expectedFields) { + this.sponge.absorb([Fr.ONE]); + } + return this.sponge.squeeze(); + } + + static empty(): SpongeBlob { + return new SpongeBlob(Poseidon2Sponge.empty(), 0, 0); + } + + static init(expectedFields: number): SpongeBlob { + return new SpongeBlob(Poseidon2Sponge.init(expectedFields), 0, expectedFields); + } +} + +// This is just noir's stdlib version of the poseidon2 sponge. We use it for a blob-specific implmentation of the hasher. +export class Poseidon2Sponge { + constructor( + public cache: Tuple, + public state: Tuple, + public cacheSize: number, + public squeezeMode: boolean, + ) {} + + static fromBuffer(buffer: Buffer | BufferReader): Poseidon2Sponge { + const reader = BufferReader.asReader(buffer); + return new Poseidon2Sponge( + reader.readArray(3, Fr), + reader.readArray(4, Fr), + reader.readNumber(), + reader.readBoolean(), + ); + } + + toBuffer() { + return serializeToBuffer(this.cache, this.state, this.cacheSize, this.squeezeMode); + } + + static empty(): Poseidon2Sponge { + return new Poseidon2Sponge( + makeTuple(3, () => Fr.ZERO), + makeTuple(4, () => Fr.ZERO), + 0, + false, + ); + } + + static init(expectedFields: number): Poseidon2Sponge { + const iv = new Fr(expectedFields).mul(new Fr(BigInt('18446744073709551616'))); + const sponge = Poseidon2Sponge.empty(); + sponge.state[3] = iv; + return sponge; + } + + // Note: there isn't currently an impl in ts that allows for a custom aborption via an + // existing sponge. + // A custom blob-based impl of noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr + performDuplex() { + for (let i = 0; i < this.cache.length; i++) { + if (i < this.cacheSize) { + this.state[i] = this.state[i].add(this.cache[i]); + } + } + const perm = poseidon2Permutation(this.state); + // ts doesn't understand that the above always gives 4 + this.state = [perm[0], perm[1], perm[2], perm[3]]; + } + + absorb(fields: Fr[]) { + if (this.squeezeMode) { + throw new Error(`Poseidon sponge is not able to absorb more inputs.`); + } + fields.forEach(field => { + if (this.cacheSize == this.cache.length) { + this.performDuplex(); + this.cache[0] = field; + this.cacheSize = 1; + } else { + this.cache[this.cacheSize++] = field; + } + }); + } + + squeeze(): Fr { + if (this.squeezeMode) { + throw new Error(`Poseidon sponge has already been squeezed.`); + } + this.performDuplex(); + this.squeezeMode = true; + return this.state[0]; + } +} diff --git a/yarn-project/circuits.js/src/tests/factories.ts b/yarn-project/circuits.js/src/tests/factories.ts index 3a2da20f3e9..c96b8c3b740 100644 --- a/yarn-project/circuits.js/src/tests/factories.ts +++ b/yarn-project/circuits.js/src/tests/factories.ts @@ -26,6 +26,7 @@ import { AvmExecutionHints, AvmExternalCallHint, AvmKeyValueHint, + BLOBS_PER_BLOCK, BaseOrMergeRollupPublicInputs, BaseParityInputs, CallContext, @@ -35,6 +36,7 @@ import { ContractStorageRead, ContractStorageUpdateRequest, EncryptedLogHash, + FIELDS_PER_BLOB, Fr, FunctionData, FunctionSelector, @@ -137,7 +139,10 @@ import { AvmProofData, AvmPublicDataReadTreeHint, AvmPublicDataWriteTreeHint, + BlobPublicInputs, + BlockBlobPublicInputs, CountedPublicCallRequest, + Poseidon2Sponge, PrivateBaseRollupHints, PrivateBaseRollupInputs, PrivateBaseStateDiffHints, @@ -152,6 +157,7 @@ import { PublicDataWrite, PublicTubeData, ScopedL2ToL1Message, + SpongeBlob, TreeSnapshots, TxConstantData, VkWitnessData, @@ -635,6 +641,36 @@ export function makeAppendOnlyTreeSnapshot(seed = 1): AppendOnlyTreeSnapshot { return new AppendOnlyTreeSnapshot(fr(seed), seed); } +/** + * Makes arbitrary poseidon sponge for blob inputs. + * Note: will not verify inside the circuit. + * @param seed - The seed to use for generating the sponge. + * @returns A sponge blob instance. + */ +export function makeSpongeBlob(seed = 1): SpongeBlob { + return new SpongeBlob(new Poseidon2Sponge(makeTuple(3, fr), makeTuple(4, fr), 1, false), seed, seed + 1); +} + +/** + * Makes arbitrary blob public inputs. + * Note: will not verify inside the circuit. + * @param seed - The seed to use for generating the blob inputs. + * @returns A blob public inputs instance. + */ +export function makeBlobPublicInputs(seed = 1): BlobPublicInputs { + return new BlobPublicInputs(fr(seed), BigInt(seed + 1), makeTuple(2, fr)); +} + +/** + * Makes arbitrary block blob public inputs. + * Note: will not verify inside the circuit. + * @param seed - The seed to use for generating the blob inputs. + * @returns A block blob public inputs instance. + */ +export function makeBlockBlobPublicInputs(seed = 1): BlockBlobPublicInputs { + return new BlockBlobPublicInputs(makeTuple(BLOBS_PER_BLOCK, () => makeBlobPublicInputs(seed))); +} + /** * Makes arbitrary eth address. * @param seed - The seed to use for generating the eth address. @@ -688,9 +724,10 @@ export function makeBaseOrMergeRollupPublicInputs( makeConstantBaseRollupData(seed + 0x200, globalVariables), makePartialStateReference(seed + 0x300), makePartialStateReference(seed + 0x400), + makeSpongeBlob(seed + 0x500), + makeSpongeBlob(seed + 0x600), fr(seed + 0x901), fr(seed + 0x902), - fr(seed + 0x903), ); } @@ -716,6 +753,7 @@ export function makeBlockRootOrBlockMergeRollupPublicInputs( fr(seed + 0x800), fr(seed + 0x801), fr(seed + 0x900), + makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeBlockBlobPublicInputs(seed), 0x100), ); } @@ -785,6 +823,9 @@ export function makeBlockRootRollupInputs(seed = 0, globalVariables?: GlobalVari makeTuple(ARCHIVE_HEIGHT, fr, 0x2300), fr(seed + 0x2400), fr(seed + 0x2500), + makeTuple(FIELDS_PER_BLOB * BLOBS_PER_BLOCK, fr, 0x2400), + makeTuple(BLOBS_PER_BLOCK, () => makeTuple(2, fr, 0x2500)), + fr(seed + 0x2600), ); } @@ -861,16 +902,17 @@ export function makeRootRollupPublicInputs(seed = 0): RootRollupPublicInputs { fr(seed + 0x100), fr(seed + 0x101), fr(seed + 0x200), + makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeBlockBlobPublicInputs(seed), 0x300), ); } /** * Makes content commitment */ -export function makeContentCommitment(seed = 0, txsEffectsHash: Buffer | undefined = undefined): ContentCommitment { +export function makeContentCommitment(seed = 0): ContentCommitment { return new ContentCommitment( new Fr(seed), - txsEffectsHash ?? toBufferBE(BigInt(seed + 0x100), NUM_BYTES_PER_SHA256), + toBufferBE(BigInt(seed + 0x100), NUM_BYTES_PER_SHA256), toBufferBE(BigInt(seed + 0x200), NUM_BYTES_PER_SHA256), toBufferBE(BigInt(seed + 0x300), NUM_BYTES_PER_SHA256), ); @@ -883,11 +925,10 @@ export function makeHeader( seed = 0, blockNumber: number | undefined = undefined, slotNumber: number | undefined = undefined, - txsEffectsHash: Buffer | undefined = undefined, ): Header { return new Header( makeAppendOnlyTreeSnapshot(seed + 0x100), - makeContentCommitment(seed + 0x200, txsEffectsHash), + makeContentCommitment(seed + 0x200), makeStateReference(seed + 0x600), makeGlobalVariables((seed += 0x700), { ...(blockNumber ? { blockNumber: new Fr(blockNumber) } : {}), @@ -1091,6 +1132,8 @@ function makePrivateTubeData(seed = 1, kernelPublicInputs?: KernelCircuitPublicI function makePrivateBaseRollupHints(seed = 1) { const start = makePartialStateReference(seed + 0x100); + const startSpongeBlob = makeSpongeBlob(seed + 0x200); + const stateDiffHints = makePrivateBaseStateDiffHints(seed + 0x600); const archiveRootMembershipWitness = makeMembershipWitness(ARCHIVE_HEIGHT, seed + 0x9000); @@ -1101,6 +1144,7 @@ function makePrivateBaseRollupHints(seed = 1) { return PrivateBaseRollupHints.from({ start, + startSpongeBlob, stateDiffHints, archiveRootMembershipWitness, constants, @@ -1111,6 +1155,8 @@ function makePrivateBaseRollupHints(seed = 1) { function makePublicBaseRollupHints(seed = 1) { const start = makePartialStateReference(seed + 0x100); + const startSpongeBlob = makeSpongeBlob(seed + 0x200); + const stateDiffHints = makePublicBaseStateDiffHints(seed + 0x600); const archiveRootMembershipWitness = makeMembershipWitness(ARCHIVE_HEIGHT, seed + 0x9000); @@ -1121,6 +1167,7 @@ function makePublicBaseRollupHints(seed = 1) { return PublicBaseRollupHints.from({ start, + startSpongeBlob, stateDiffHints, archiveRootMembershipWitness, constants, diff --git a/yarn-project/end-to-end/scripts/e2e_test_config.yml b/yarn-project/end-to-end/scripts/e2e_test_config.yml index ffee94e2933..d126d8e259e 100644 --- a/yarn-project/end-to-end/scripts/e2e_test_config.yml +++ b/yarn-project/end-to-end/scripts/e2e_test_config.yml @@ -35,7 +35,8 @@ tests: e2e_devnet_smoke: {} docs_examples: use_compose: true - e2e_epochs: {} + # TODO(#10177): reenable + # e2e_epochs: {} e2e_escrow_contract: {} e2e_fees_account_init: test_path: 'e2e_fees/account_init.test.ts' diff --git a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts index 7b47386c6ac..eb5f5b69b22 100644 --- a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts @@ -10,6 +10,7 @@ import { } from '@aztec/circuit-types'; import { makeBloatedProcessedTx } from '@aztec/circuit-types/test'; import { + BlockBlobPublicInputs, EthAddress, GENESIS_ARCHIVE_ROOT, GasFees, @@ -20,6 +21,8 @@ import { import { fr } from '@aztec/circuits.js/testing'; import { type L1ContractAddresses, createEthereumChain } from '@aztec/ethereum'; import { range } from '@aztec/foundation/array'; +import { Blob } from '@aztec/foundation/blob'; +import { sha256, sha256ToField } from '@aztec/foundation/crypto'; import { openTmpStore } from '@aztec/kv-store/utils'; import { OutboxAbi, RollupAbi } from '@aztec/l1-artifacts'; import { SHA256Trunc, StandardTree } from '@aztec/merkle-tree'; @@ -214,6 +217,7 @@ describe('L1Publisher integration', () => { fileName: string, block: L2Block, l1ToL2Content: Fr[], + blobs: Blob[], recipientAddress: AztecAddress, deployerAddress: `0x${string}`, ): void => { @@ -240,13 +244,12 @@ describe('L1Publisher integration', () => { archive: `0x${block.archive.root.toBuffer().toString('hex').padStart(64, '0')}`, blockHash: `0x${block.hash().toBuffer().toString('hex').padStart(64, '0')}`, body: `0x${block.body.toBuffer().toString('hex')}`, - txsEffectsHash: `0x${block.body.getTxsEffectsHash().toString('hex').padStart(64, '0')}`, decodedHeader: { contentCommitment: { + blobsHash: `0x${block.header.contentCommitment.blobsHash.toString('hex').padStart(64, '0')}`, inHash: `0x${block.header.contentCommitment.inHash.toString('hex').padStart(64, '0')}`, outHash: `0x${block.header.contentCommitment.outHash.toString('hex').padStart(64, '0')}`, numTxs: Number(block.header.contentCommitment.numTxs), - txsEffectsHash: `0x${block.header.contentCommitment.txsEffectsHash.toString('hex').padStart(64, '0')}`, }, globalVariables: { blockNumber: block.number, @@ -291,6 +294,7 @@ describe('L1Publisher integration', () => { }, header: `0x${block.header.toBuffer().toString('hex')}`, publicInputsHash: `0x${block.getPublicInputsHash().toBuffer().toString('hex').padStart(64, '0')}`, + blobInputs: Blob.getEthBlobEvaluationInputs(blobs), numTxs: block.body.txEffects.length, }, }; @@ -300,10 +304,8 @@ describe('L1Publisher integration', () => { }; const buildBlock = async (globalVariables: GlobalVariables, txs: ProcessedTx[], l1ToL2Messages: Fr[]) => { - await builder.startNewBlock(txs.length, globalVariables, l1ToL2Messages); - for (const tx of txs) { - await builder.addNewTx(tx); - } + await builder.startNewBlock(globalVariables, l1ToL2Messages); + await builder.addTxs(txs); return builder.setBlockCompleted(); }; @@ -365,7 +367,19 @@ describe('L1Publisher integration', () => { // Check that we have not yet written a root to this blocknumber expect(BigInt(emptyRoot)).toStrictEqual(0n); - writeJson(`mixed_block_${block.number}`, block, l1ToL2Content, recipientAddress, deployerAccount.address); + const blobs = Blob.getBlobs(block.body.toBlobFields()); + expect(block.header.contentCommitment.blobsHash).toEqual( + sha256ToField(blobs.map(b => b.getEthVersionedBlobHash())).toBuffer(), + ); + + writeJson( + `mixed_block_${block.number}`, + block, + l1ToL2Content, + blobs, + recipientAddress, + deployerAccount.address, + ); await publisher.proposeL2Block(block); @@ -384,6 +398,10 @@ describe('L1Publisher integration', () => { hash: logs[i].transactionHash!, }); + const blobPublicInputsHash = await rollup.read.blobPublicInputsHashes([BigInt(i + 1)]); + const expectedHash = sha256(Buffer.from(BlockBlobPublicInputs.fromBlobs(blobs).toString().substring(2), 'hex')); + expect(blobPublicInputsHash).toEqual(`0x${expectedHash.toString('hex')}`); + const expectedData = encodeFunctionData({ abi: RollupAbi, functionName: 'propose', @@ -395,7 +413,9 @@ describe('L1Publisher integration', () => { txHashes: [], }, [], + // TODO(#9101): Extract blobs from beacon chain => calldata will only contain what's needed to verify blob: `0x${block.body.toBuffer().toString('hex')}`, + Blob.getEthBlobEvaluationInputs(blobs), ], }); expect(ethTx.input).toEqual(expectedData); @@ -464,7 +484,12 @@ describe('L1Publisher integration', () => { blockSource.getL1ToL2Messages.mockResolvedValueOnce(l1ToL2Messages); blockSource.getBlocks.mockResolvedValueOnce([block]); - writeJson(`empty_block_${block.number}`, block, [], AztecAddress.ZERO, deployerAccount.address); + const blobs = Blob.getBlobs(block.body.toBlobFields()); + expect(block.header.contentCommitment.blobsHash).toEqual( + sha256ToField(blobs.map(b => b.getEthVersionedBlobHash())).toBuffer(), + ); + + writeJson(`empty_block_${block.number}`, block, [], blobs, AztecAddress.ZERO, deployerAccount.address); await publisher.proposeL2Block(block); @@ -483,6 +508,10 @@ describe('L1Publisher integration', () => { hash: logs[i].transactionHash!, }); + const blobPublicInputsHash = await rollup.read.blobPublicInputsHashes([BigInt(i + 1)]); + const expectedHash = sha256(Buffer.from(BlockBlobPublicInputs.fromBlobs(blobs).toString().substring(2), 'hex')); + expect(blobPublicInputsHash).toEqual(`0x${expectedHash.toString('hex')}`); + const expectedData = encodeFunctionData({ abi: RollupAbi, functionName: 'propose', @@ -494,7 +523,9 @@ describe('L1Publisher integration', () => { txHashes: [], }, [], + // TODO(#9101): Extract blobs from beacon chain => calldata will only contain what's needed to verify blob: `0x${block.body.toBuffer().toString('hex')}`, + Blob.getEthBlobEvaluationInputs(blobs), ], }); expect(ethTx.input).toEqual(expectedData); diff --git a/yarn-project/end-to-end/src/e2e_epochs.test.ts b/yarn-project/end-to-end/src/e2e_epochs.test.ts index 3ac4e07afd8..ea5a38bbbcb 100644 --- a/yarn-project/end-to-end/src/e2e_epochs.test.ts +++ b/yarn-project/end-to-end/src/e2e_epochs.test.ts @@ -25,7 +25,7 @@ describe('e2e_epochs', () => { let handle: NodeJS.Timeout; const EPOCH_DURATION = 4; - const L1_BLOCK_TIME = 5; + const L1_BLOCK_TIME = 25; const L2_SLOT_DURATION_IN_L1_BLOCKS = 2; beforeAll(async () => { @@ -98,6 +98,7 @@ describe('e2e_epochs', () => { afterAll(async () => { clearInterval(handle); + // TODO(#10177): The below times out await context.teardown(); }); @@ -111,7 +112,7 @@ describe('e2e_epochs', () => { /** Waits until the given L2 block number is mined. */ const waitUntilL2BlockNumber = async (target: number) => { - await retryUntil(() => Promise.resolve(target === l2BlockNumber), `Wait until L2 block ${l2BlockNumber}`, 60, 0.1); + await retryUntil(() => Promise.resolve(target === l2BlockNumber), `Wait until L2 block ${target}`, 200, 0.1); }; it('does not allow submitting proof after epoch end', async () => { @@ -129,6 +130,8 @@ describe('e2e_epochs', () => { sequencerDelayer.pauseNextTxUntilTimestamp(epoch2Start + BigInt(L1_BLOCK_TIME)); // Next sequencer to publish a block should trigger a rollback to block 1 + // The below is a bit of a hack - to avoid the waitUntilL1Timestamp timing out, I wait until the reorg back to block 1 is complete + await waitUntilL2BlockNumber(1); await waitUntilL1Timestamp(l1Client, epoch2Start + BigInt(L1_BLOCK_TIME)); expect(await rollup.getBlockNumber()).toEqual(1n); expect(await rollup.getSlotNumber()).toEqual(8n); @@ -142,5 +145,5 @@ describe('e2e_epochs', () => { const lastL2BlockTxReceipt = await l1Client.getTransactionReceipt({ hash: lastL2BlockTxHash! }); expect(lastL2BlockTxReceipt.status).toEqual('success'); expect(lastL2BlockTxReceipt.blockNumber).toBeGreaterThan(lastProverTxReceipt!.blockNumber); - }); + }, 400_000); }); diff --git a/yarn-project/end-to-end/src/e2e_prover/full.test.ts b/yarn-project/end-to-end/src/e2e_prover/full.test.ts index 6bc9e3f3005..6e6c197d66e 100644 --- a/yarn-project/end-to-end/src/e2e_prover/full.test.ts +++ b/yarn-project/end-to-end/src/e2e_prover/full.test.ts @@ -6,7 +6,7 @@ import { type Chain, type GetContractReturnType, type HttpTransport, type Public import { FullProverTest } from './e2e_prover_test.js'; -const TIMEOUT = 1_800_000; +const TIMEOUT = 3_000_000; // This makes AVM proving throw if there's a failure. process.env.AVM_PROVING_STRICT = '1'; diff --git a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json index c7ba001966f..97470ed164d 100644 --- a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json +++ b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json @@ -1 +1 @@ -{"proof":"00003f64000001fb0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000119dc71af02455fd7b437af6a07b08fbe005c18b2f4be65c19bf1eb7cc0c884ad0000000000000000000000000000000000000000000000000000000000000002224a70c36120d8e08b02885ec88395e57c7db919607b2b26d7b1a761a85d3ba100000000000000000000000000000000000000000000000000000000000000040d500ce5eea424fc5dbedd9d2e20273f74ef1093210ecddec74c65b7fbec3a9d032a9a79c14883dbdd78fe7bab0394b0491e66bc66bfaac2edb5d1c5a5994f70000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160f89744843c7ed99f717a7b6285740719b13fc8c71cc781b2b7bc669662a6a0d560ad12f14dd5026070bc037ac343535db339212f0904dfc96c4aea4dcc8ab000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000834a970c905b9562b00000000000000000000000000000000000000000000000c7d5c02a95a9a337e000000000000000000000000000000000000000000000005ceda57613203dd4f0000000000000000000000000000000000000000000000000000c1c503300e3e000000000000000000000000000000000000000000000008082065a4a84a90e500000000000000000000000000000000000000000000000bb2b0f32aafcd2bff00000000000000000000000000000000000000000000000d67b884a1de8ecb920000000000000000000000000000000000000000000000000000fce7c0913d0a000000000000000000000000000000000000000000000002034d9338bd3d6ab7000000000000000000000000000000000000000000000008dcce0d1678c9907700000000000000000000000000000000000000000000000cf585a862aea5dd3d0000000000000000000000000000000000000000000000000000df8d6ba9e6b30000000000000000000000000000000000000000000000086294e2ab67d8865a000000000000000000000000000000000000000000000002ab59cc5bea75cef1000000000000000000000000000000000000000000000008b5087c2441388a6500000000000000000000000000000000000000000000000000002a1274ba4c66000000000000000000000000000000815438d32a9c665412bb63add5a5a3f35700000000000000000000000000000000001f69b29e9a7572dc5c068b26b81845000000000000000000000000000000d51931e4f65d90de5d3d1d7f51b4f5af9000000000000000000000000000000000001709882923c6136e725f50342baeb9000000000000000000000000000000eb683b39a96aa101869de13857b72f820400000000000000000000000000000000000a55283b4c720b959a7ecb72d77ee300000000000000000000000000000001a1d7e8e0cc06db48350f6dbe0cdd07850000000000000000000000000000000000046c847fe41f2349bdf2a9daaa62410000000000000000000000000000003fc174cc1e8138051cb9fe591e64be2f6f0000000000000000000000000000000000167ba0ea3e1b7617e0a3fe380d949e0000000000000000000000000000005a8f95cd9c2f71d1bdda70f82208c1c097000000000000000000000000000000000014be29da3c73a7cea72d0291594a5c00000000000000000000000000000024eba1cbffaf8f4196d7f6f82bd5bed62f00000000000000000000000000000000002e44b96fb9dc942c716766c5098d9600000000000000000000000000000071772aaa9d0de4691948882169ee308d430000000000000000000000000000000000084a44c23aeffc619c84d1f84df2720000000000000000000000000000008b094f2e2fbd2bfc9d0123d26c9a2fdca8000000000000000000000000000000000003b4f947cd0f6a54760e5df757134600000000000000000000000000000023e3f180615c14ae4eef7711ae7be4ab13000000000000000000000000000000000005e3308e8d1ad9cd86677acc1fc38a000000000000000000000000000000f6be300b828d885f1b77c5b1c5b3ab222800000000000000000000000000000000001251067fcf0ea9e69ad16a1ad576890000000000000000000000000000004a6257d9d6f0128f8482b92f0c8b95dc57000000000000000000000000000000000012d2725382847994628a8529f0a58d000000000000000000000000000000ae9ecf3f5472945da551ee4ff8543d64ad000000000000000000000000000000000000b21ccbda3256445ec970c016cbf000000000000000000000000000000080c24c54bc38f160c4cc5f6dc5f9fd4aa8000000000000000000000000000000000026037434a8c386531db65fafeb05c4000000000000000000000000000000c0a53b12577b4e8b96572a453261647b0e0000000000000000000000000000000000045617b9f8aba63a37ed91ef75174a000000000000000000000000000000649d3c201e7717b1729ef780274e715b2c00000000000000000000000000000000000cab2441a6c3879dc40976c37cdb7a056680c34d76bcd98f0137a4fb0ca95631fdfe8ab05916f574954cf2e7216f422afdcdaf93bae350294f0e118674af06f635e9bdc960599bcf4ca8a108de90bf0560d6087d6ea4c18b47883a22dbe84b56fbdc268ce787b1d6ae8912fb9cc2d71d73c0f88f27e449ec237e43be3e5c176ce40c46fb99fda058bab59c7e98952d015f76dda337eecc31d02c22fef79b53005d0177372d9495a921a4fecb8412b829fa56b116dc189245218cd08d6a76a4d34da00889372cef9ebf4bd713e51b133021ed58c231516ba3001a0a28f13f47c1312806404debe453e765207bd00d50176980aac4d5b564fc42ffc9d2a086fcbd6bb179ed47cd4ccaa9ace0a88b1a3d2196cfa5bba7c8441a19363af4c69f77f69e189ec77eb5b4f08b6aa47cd76ab72d310eb54beb06b5a035323b0d48a5871bfe19d7ed64fbc7128f586814ea8b181fc3f145066eee6589b045e34a0607097104b17e68636b0244c58a70c1d0b3a1097a1e158290570bc00c813cd33f1ef1122154e33b14b1af66f0f70a8cc130521906e6317d749728aa4565c01005a97c736cbbfb0ae9b1067e81e06bbe0624dd029e87080742fb8b66e349d69b404dd075226d82e849c65ec52eadda7c7c23340b449cb736ca47a116301d6b035155fa871645042ed38eee3030a74ea45a49422a4eb8236ab31db9b57bb6658dfec1a6397f3215ee55c23774597040993980951629ae3690fc60f87a95a85201d7b31d068efcb525ea603aab6f37ff21bdbd391c095a6ce972b0668f6a74ae3d9db3dd7dce63ed6f86f4aab902a9b3e0602ecb10b56a5c1c85d3e000ad9b1dcb66f5f5a2114744fd7033d5a8a9692f5b8f1b1118c4c5c9f73fc1064c22a41dae1c6961540a318f309c0d02db188dd44616fd9020126a5027cffa0e85fa56e93846e892864f8c5f9a6b11ef0883b009f7b0a8060c5b9acaa669825490067ec821d756228bff04f4ea2af65ba846779969595610011fe57ee3f0361ef72e60cb80c47015b47b52d1d4297d09181d8e597ffbddb92682fa60acf769cfe1e3486446839bdc3a5209bf694da2501167ed3eb863a2e92ffbf0154aa99c955f7b8ca53bacbc2e8b32ac013cd4cdd0a8cb6f65330bcd6328ce73b329dc97744499ed884d2c0d84b76cdb36d205819e7b3ec547745940fd0f94f69f19364dabf9e68a186eea14860c0ecff138da769e9198aaf5ec793472296b794c55eaef4469cf6730bb7a5958acd0a24b0d5856924f8136fb57af452b2c29732315e923938cd9dad83c4e79d169812c6adf8edae5e434ba1f5a71042c0530029c187c01d0dda2849f5673953f6789c9ec331ad0f0df5836d92834625e1fc97de6a83b3345a2fc583372f6d5b135a98292c155a1442a1e2e338b9929561defc27e1edfae36f0924ab82e221c623002e74488f7ec5443a888702b1d1e26101620abcbc79e777dfc58eeb69cf04d4d159a9584d242707f3c27eff7165c3d18e116d5e4fa21a1fe5ef1ff15c7a0d2edd2c2a0cc527b76c18adf3e9d8bf4380ef82ee1f7f1a709ea80e03a77b4eeb19590fe47028a1b395e832ad35fcf87841b6c94e930858746d46c1e557da06d88cb37081b5a5584a92fbaf35322af8092225ed900cec2d0b84b02730db921aa021926e63461c3fecd5783a5f259e3850c00fd9b4283a288e41f339b9a8e35d01b83957b2effc58aa7aa76c3c369ecbef02a1816c79934b3812596f467ad946c804e1246fdf32f4a18bef0cd7341f0a5791e3f1acbebf456af3ab16598c9ae6262c0d58dc67c1bc9c65ca4a60dda0002e219b248de765cd9811eda04c9680a092460db9a52c16e1109e076339601d681fe1eada3f9b645d1137fbf62ecd207b0bcb998127ab50f1c1fe30275d41e7ab41f1a9d752b53166228690f571717346085d90a5d2c620ee7f3b3f2e584dd23d223102c26931d4230800176a6e3e2df9412b1a073d083d624c920fa97cf0c24d01e2949903b511df4ede0914c945f1c3f91c1e75635de46d24b02d5e5bb2d16bfe3141c32803e9ec1ae774b3d1579fbd7ef01aa8429a773065a2a58bf78fa55c74124719f75c265599507a4b3496ab8ed0f4aa66ed0c56d7594d9576f19bdc60f2022b7236c6e35c65c922aa4ac430a27822a29ae39757d58de80ff4fd355b2a64b0b9fd2bb8d70e3f62dee506e7ae25df5fa1d004945f6dc7aee2c0cfe388c1dd10eaaa0d5faf75664d1891b866298024890ff041dc974865bf91e229e2df311111c4f2affd23bd3188f4d3661cff51c4120ff223883566e24be635939a36e920c1fbe5df0df0757b2e8ed41a73f3e67b9ed105702818bcac56cb72ff7990bd72b21ebf5a3bb60eee2e4ec77904d3df4fe36e16df2b37a5f373d4f07617f98338d2c44a3549f8bea983e343d512def355e07b24e16421b2e420d27a410abba810e1b1a171d98d03f04b6890ace2311eb6081ad05c67c07408a47784789b1634a2d073903f801f271c1ec2f8015bc85aa57c33fc03708b00ceac23c88f3def4dacf2c61fb5e1ae1075b0bb693ef315ea2ab7cb2651c710bcea3c7efc2ceb68f38ae13157311ebfba02f76e6755d09cdecec7c690c0b50786ffd2f27ebb641e7f41e1c7e70de65ea91e8ef2c07edcff57b33f0dce6a3898754048cfcaf6adce04db82cd96746130f154b0ac41b262ecab78cecc01554a8f79b2015ed8ab907aacf2c0fd9177a674cf381d48132d5ca350521ad0a9ff0fffdc0b80eff87d7a93e38cf0be20a8634d7b0086bb4c0647c0b9177d8637ffc52d1f3b000e98bbf3b82c67627a59bc28b1d5eed73df87e99bf1b6d5e5104c16f9e152ecbee45a592ac119af155e6e989e9db1a43643f84ba4d1f2164ca1285cfaa1c32f543867dfac7c99750e33156d21cfe439920056426908813d33955b8dcc56f7feb65bd74ecea391a31b15e885c6b8ce92b2626d32780179b4861f48433fbfcad20e9f959d6521d7ae03a1cbd120e0a559289f0b512a039117c97ee01d956bb7db867e3ae10df3d40a02ebb273078303ca8aec244f01e42ba39fdc8ac8d3234692e1450fcccfc4fd4211b9198c9c0d73052d3c61e2ec398371fb2fdb44f087149f7e1935f52e5d2c5012e66522d88d55351d7c90e8c2af4a1eece22c780f704af1481bbbae095ae8170d15226ddae72111f2e8efca4b3cee852f5a5bd7ea175246b16c0db582425c101480ce3dbf3f0c027929b61c1be491fd9904346cccb769db8e88d5e465c6e7161c5c955e54e2de59af4cb398ca17f83ab5c431f65ed713e8fffa53600143e0b21ab431b49c9ceaa3490a08f8e27324513f969aefedf9d394d48e635d2f158eb7117e82027fa262cd95f3a405f2a9a26cf62eaedf4dd85eead5fb7c546f20a2ea2aa1736e6af14ff49c8c2c39adad4d5c275cc3fd9c3f429db91fcd163b2eeb9c05c107c85eff294c8cfd32401f140e84984afd0f2ad015b0fe9a1dbdc3b190b816a88238822ec98717fa4ef757d93f1f7c553f84515479347b231ebf9a1e62d80c69964449414058923123754060cd7664209ca446405324d91edb3ab51f4bad2e0cd8b1ce22ca55b7e18bfa7e0d73394c6b6360602b89a2891df0e3ab3f97a81740cdddfc0732af881ea9a895a26bdcfae644d80a0cdd9728416df0be35f811218d2617a5008ac0e2e500d49b3462973162c7c50a72b691cf39c15817271f8d1bb962600afa00d2b545b296b9aaad418d7de95c3b8fa9b29b7407d330179b7222496bd3ef097eeaaa22ce94b0d3a3e685ad26b14b182f3cc2b024c33d982ac30679aa2120b99ce059abececd25817e9a0f7cdf9f45908f4e0eb57d984a00b601944a5b6d89192ae7a3da290f6b25c3b092dbd33bc8c4d90aa9f39a7ce6b8984250e84d0a949131da1b9ca5d2b6191a7ebb519cdd9191c991168d650f0814a7925faac7420767b339493c8800e3b7ae60f9c2f057c766e372b30a5f5a354d453137a3a74b822d13381b8ce7585039780da30f80cf9772fdf8889e96ae81a222426fd41dd51bb299aa342f76e78f1bfee84ea5d7a6c9f45a0103d0d04c824ddd21c748b8054dc7c817b9e544acfef01008a538320f16cd4e28847b3c5d58a918a228339750e806845a2cfb6caf2f376c14ba812aff17eb3bc3f3600fdcccc21162249e32424938ff11337d8d502d1bc3998942daab251eae3aacd758676c2cb5f2e915287894314c7806ad433897242e42e275cfc488af516f878881299e8d6451cf2098ad66ad7ef852e6efff7dcffd5bbf21faa63fc58b780b15dd7d1c7a2630211183ea91697718badca03a4da5355ae0b36a92f332ce6929f170dfe81b4101d08baf870347221afca53ae366071832c0dd253ccaf2cb65a3e7cef1462364622e0efa826243d49b60bf260c2c81d7c526047d5c79d7ed80a491b9b26c5bcd723a5d1a3b2149c6a32112c1345eedd2dcf307df0f8c4472c3c5cb0c5e5b6a03029ac1ab93f42eb3290da9caeb42504890bef82e4575e424f7641630dcc4b76002d4ecb799603ef5b21525ca3ca3181a4cf9c80a222f32dee584a136b4ab7eac41dab70e109ad4d478b2be79f23f417adddeab2d24a6aa0d6329e3e410a05738b04bb3814f0100d5d9437757f03ffc41ee1a04f7498ac0e9eac6bbd05ed1fedb51fb22a4bdeb1e837a68600c7c6977f8b7c8a555c8698e71cabdb869c75f44ca917595d20af2c25f24cf36f39cdf82a7558945a09c2878fe62a4b1bb1a895c84c03c53728bd6043f9ca1de6a92534d62720f9783efbc509e3221d074207a3db2e166f19215d4e4608fb6ff6bf21f70d019ec9eb80414cd13cfa882866cf33163a0356404967e67dfc99c119af4b6d19705da54c312a1836d50e7d1311584029d80f25ff2f2b30ed9856602b9ad550472ac77f2de92a8c7a063a1c78cd4bfa771610fff6b311f7e1b053ed69fa7a94ba39e462fb3bccd82937395dde56e0f791bc2d450f00ce020f218c443f9b744c4f8253ae445e9e7e2129ea0eca8c7ef7a2111bd87e8d1f0bdd2a31b1019add7f003d74a68b50ddedc5165895a4d8cf3a7e600c2c5645d1befb7ec8c989b489ef16818ea1d22c192d13c0abe6c603abb270692cf905b59bcd392bb6b2bf05ac778510eadf7bac3709272af90726cf3a35eb162a91c2365ac05e796f1d9628061db93e0e3b987e5a00837b9c9c045985bec32d099cd3d2a7923fe97caf6893b477f70e63545b4a1254d54bbae47f6b3845a94a28ef83b224deb69a8ff46c08f9065d06418fe75775f443befebd75d36d68bb562cc42de4ce5709663c605feea8712aa07cb6361b5596f0867ef0d30dadf9b6db02e5e06bc09e03f2682ab2a20bdcac8d0b1d5be9c71df873bbd9d72b3605f08203e8f6bf09c64c897d2e12e29adbf95399d3510373c97caa467a002b601623162a080613228fe088581bdb7ff1032eaa16f8dd73aa145aede9081e5cb9f645d32fa5dd1d6b553d7f9b224746cee59b035cfdc8a0a6babb420af12774eb113e242b3779e7b43fe5b9e24bf0ae965b357b0c08900a95c36ab50de660d446fc86930f38c3cb068d3054d8590596e0b1b8012f16fc8b6b9db4b678337b46d0f793572c11516df2c0e95757b295447bcc5ecc510210c914d30f7cc4d0feb4e4e9318c265dd0634e6e15d282c43d2b1e8dc503c9ae51ee7195c7731f5f4fde8e43d4fb0890f3c744b775f4b42f7932b503304fae42ee83ca2727d05b826be2e3a2e89721c97bed35c38bb8b946120f7ac9494537e442422271e6941685e12827c509d019e0484adff2c5613069925a8897dac838aa3628a0bbcfa63786bc8967a5d193076ee39d992e49d16a031643ca61b0f242f8ab797b07e2f292d746538d749b5c1e879a7abfb18f13d67b2e17f78a481e7c1e59e21aab58c0d9d9c953e85542341d7244510bc555f0b45c1c02c7e501e22e98b4a41976004f309e5564c4d4b09b22e8bd636668260e8fab34c986d4ae2145b1b188d1c23ed26e26660519beb0ef014c87d236b49066173fd5b58daea40f7dbc05692bd05ea0f164c451f26771a5276ab7fd34a84d1148632d560d0fce5bbd368dc04291e497312d7563204f16b117b430e558b4b5ab62e6e0666b9ff633d2fc719954f4a9b27f6bc0d85a7dd14e2b3dd35dfb3fec0a240e7752e5ffd4458c72a0eabb74838a038105a8baa284b907d4cafaa76d5b1514ce08731f6765c3a22e3c3689f89905efd62e12505aa0742046aef3e0e3f9168364f928a2e31b10d31c4df762752ab37c1727a46ee193bf0a2b4d884f2e5d41052b7f46cab545b3b189bbf6cafb61d53b7872be6b4e8ff61ff7a59efb4fc669521afd7c6bc05492db59daf5165e5c2edd99e432fd8bebb30a92cf5126efbe2f9443386826ddb05ca8ea5c018581a31b81c543427eed0392252d3b4a0aed3535dab3a44ebd46d7d256a9587e96db23550bf56d3eaacf40e92529095cb5130b1ea9ebcc6a3fb80c156a24fde3e42d217c62a2b012ed1ec75208da59d7f80314cab02dea1905691dd005353cfa45abd6d683e9de8fd535481e22df7dc4c4a1865d3a2d351486f4f20193dd8f1bfd3c9841f81bd3d01022a3462c01c7e1f70209631355452134cfa688155379ca9f19dfdb6a0b01d2b3b9d0df00b629f2af61f82cb80d918e443e01c98b272685d09316b65a7d780247f75c8b19d825486338b2a134309366f6caace6625e7e5fa35101779891244515628c240501a66c658717f5ccbc72a8b7b2ed7a04343acc7f914f853fd6f173145df37a0050899e0d2cd2312add28e523f951d9339a40937c703d2777b45d7426b6dd2324a9377a5403b441944ab9b8755c59951138b7fd95fe8d2cc3bd2303a346d04710b9fc8519da6af88b27ddeaad054cf34b8e819ed0932d73f0c40f70b9884f051688316db3f3e881e7f38c84f64af879e77fd60233e715eab4e631d0587932552a7ff53290ddd259e566fa547fc9b19114ef1f64d3fe32283734b6da099e4cae11f6745d94c2c224705f712040e33086233803aa3c9b482f7a5e9ff9afe59d8104d33dc6e86fcf551502a6b3e4a9633ffd968b0014c83846d09e977c1011d0781ccedd6da350b90fb9b8bdc8d9ae8b21e3d025624e1e4474a4f0ea777f2dd0f428553edb50baebc7fd7e3478c24d90bc357b3d012a102ca36ae59d9fe81eba9e03a0daa81fbba19d860a3ba8d6157a0bde3e8bf0121462b5e488c1656968bcd9054075d813740d03cf622e1fe358e1fb4e79e929423415fd19c7abc7140b0b691c2a655363e824d46f97201dcc6cc3540c653cdd008bb9b17e5a7d1a2cbf95a20ce8dd3adfd2a6ba00bb1fc9526c324c7e8cde668ae8664bdc9a593ad2eae3ab182f4319808798eac0aad1bb02c78886541218bb96351eaf0eae3c4e38429cef20bdcf55870d946c785a60fe77f6174a802f2afa17a1478bf57346d812d5ad0419953e087770a6213594f908c644b43c447b528784cca69eabb8ff47a016d8f00de77fe590bd012d7671e189d1895da73d65f7cedda30c386b0f655d890386182fba3ba61b5b0d5e1c721dba8afea640fb7d8d783ac2cfbc9866c1dcb5409f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000299179abb56149560ed425c742bcb879811d3cf56071a479240e6108ffa6e131196edb574f4f8aadfa13d7e62fb99692e2e0fa43e6a54aa260c6d73fa1c4b30c1cb8df94b2d75c9fe6186fee49d3d9bc9520b5f980b68840f2e9e90be7e0b7f21c2904fb68813c3cdf8d382f80217c097f273b7d29064395fc683d53957c0d1b2d3aef80bb7d5396655edf72c6f9140670d783ac5dccb62b849f45af4a83e0ee23b35c3e9146662d8dc4a95928c57b71055fb2f077a36f3d65b20497867eaeb118dc253f6ed05239a407097e7d47768b08196aee4fd667dba80ff3dcfae66bf12060d77d50d38563d140d068dfdb10fbd8ea0f9d9682d68b7fd47878495b3f4216812a01bb27b89a07a146e1b22041d30ad8943fede9c71615a0637f2365aabe05048b371461e89a8552b6263b3359f68a3d8f4c00964fbcdbc703d13c837ad421c7ea0c8d3d13e8e5caa87bdbdb3d5a3319f89a6e01f55d5e526668a108a2b51f6a5f09a3fe264caeb7b3d9be6f18a7ff4be543cf7fa9aa6bf431bd26befdc72e02658f2328fcbcd74504d89e6f902234c6990c91cbea2425a8ad117b6f1bc4108c4d695b929454a048b4e60585dc1a0600619091340df45225a4c2f5de52cd1b0fc74f6af97cf5abc0df3cf93ef42b5ff9e387438a2805e5b9ee9ddf11d1ba1627888a418a71c8ee884fa5a61e2dd9d263d56a34321b359a878167f90fb0da22301fda5326289b7ad05633c00662dd4f6d438e48a63cce05e240575081066e2da263c7eeceaa3fa1996abe31daa005292db627d55f2c6f38a4441587525fa5215ae7f9a0fe09b07d47cec9487f021600714ff0772cac700270fbe6acc649fb294b306281b954f5d656d25dbd98c7e555b568f41bf21dff2a51ea96b9aabce708da306640224916198e73fb702a0895438155bf1f6f6167a9834e4532819911076e0b9b053be6d43a6f64821f665536cb356c0fcfc78d9870879e34a500c8ca1ead9bde7a5cdcd3388c7e2a356da23fabee65e1e4343a7c1aff58fc045fdc5d2effefbff062de159411942091d17f413795d7f564cf68e0d75a106e0d27d92509b9fbaf5100bacce4b6472d27174b85d1f65d0f82d819f9a74c1f62e03686ea1f38e29d6c37603356a2b4a58dba6c55db04ab7d9085e063c93d207a228ba6bd1b090beaf62e2c9223818642ec77a0936e4d3c937bae589a4df604d354c005951bc0cf093f4c46c7560ffec609e13fbcd21e019949c25eef6883ed30cd074b1f0eb835faf204891c1de6ca2ca159d514793776692f4ad1728a595ae670126e10154f590429d792afecfd2012dd607eb78366ec786a1ce9e45d4797e1d38d4082087f2be81fa4f338b979a9da6ece7ca24ba14595eb03d4c1d921f8c663b659930b647fe50351254950025b142ac6c41b653d4a103eabaf111defbc2ee1af56831325785c96572909c8c5664fe06d51717555462d92be073dcc0e19d37ff3b44e2a5102f3984771702abd115eae19b76d82d73614aaf665e8ba4b3a7c5575eb8326bd7c3f70db6924a833a5407d899f76c6c11efe33ff579cd9fb59b5915859bf1b3497278699f0f1562e49a6ecc45d091960cd440946dcfd59694d1612efa2d12f2fc9bb9499cb1019a8177346f49309bb69500cf849c58a922f1e9c9bd7210a2995e5699a307302115880edff6d068e91c61da9c7d123de7db435cfc8f78bce0f82fc7d4c3e7082d2a3f7f9b2675a56d723cc8f49cf648cb687bddd6c18add40b405c0e278c319aa7640c4941d30414fb5eb38baa23c7770717c4612b7c28382b621243320f945a50d26b10669236ccb3db47f70ab21854d0b7c0ba52ceefcd30111d2dda27762f06d7a78e812705088600748483eddf419a297a739c6c6d56190343291e732b096b3b0306e7844f708800fdee8c364253d8b9864cb3df109f0fe9edecf6da250feedbea86a921d8d844b022efc49ed46d29da4b74e3eacd9000000000000000000000000000000096d91c5fbcd9fa3f3c9c40376a5afcbc320000000000000000000000000000000000265110b7d31ca42e8272053eecc5f20000000000000000000000000000000a0a97acf20edd350325c3329ba77cc8df00000000000000000000000000000000000d19a7a1262a9c4baf3bfbb65045940000000000000000000000000000009c69ddd455e989f4084513595ca5dd14a5000000000000000000000000000000000014fe155cfadace223a4d9545bc9f6800000000000000000000000000000046bb732c16e0846bbcd158b61765e672a20000000000000000000000000000000000144accd117ba2915177973c6663f3a0000000000000000000000000000004acd3cb46ff38df9a81e8e5a7d5b123dff0000000000000000000000000000000000045df89ec8311432c488d379b0aa2d0000000000000000000000000000004a9b9f18f4ea8a68e7f8ef77364bf9af6e00000000000000000000000000000000002296a3c393a43befaa77b404ee521f0000000000000000000000000000007220ed1e5f16b3f8f0529c524d2b12414f00000000000000000000000000000000002e62d4271481355349b0d0189646e2000000000000000000000000000000e13bc6c670b6c72b2d2fc789bc04c71f470000000000000000000000000000000000002a3cd313014291a4695f75e410ef000000000000000000000000000000bcecb2a9d89c07a357c265035ddaff3e8100000000000000000000000000000000001b389f346d7cf2462cf2dec385e128000000000000000000000000000000a2154b076826e6bef085d73c13f49129310000000000000000000000000000000000031b6702b7cfb4be0f6692a3bac7b3000000000000000000000000000000dacd79a097522d56620088968f3bde767000000000000000000000000000000000001d0e74be751f05cc4b81a3fb6a422f0000000000000000000000000000003e8df4bb037daa92246b9ce5ddd0aac080000000000000000000000000000000000000f2b3440bbd00c687a407494a7dcc000000000000000000000000000000c0cce09b54f55ae72ff7b9d43e2fda988c00000000000000000000000000000000002b98d77e4b13864e69ebbaa48365e5000000000000000000000000000000fc3edae5ec8a24b61f0a07127c719bd9c900000000000000000000000000000000002ed7e6e96bdfbb4237def720a116e7000000000000000000000000000000525bc1f11cf0c314cd742bb2407c18adb700000000000000000000000000000000000ea314edb4407eddd6145319198d8d00000000000000000000000000000072310e9b94e317638eae85b8894596239800000000000000000000000000000000000bba580fb1b031fc0667552c430b9a0000000000000000000000000000009d268709493a2d6fd13967ff258469bc4000000000000000000000000000000000000f06c089dcda094fcad125e1ee91cf0000000000000000000000000000008df08f94dd49c762d588a09bdfb0dd72710000000000000000000000000000000000197df83785ff8906641cea13c2b6ca00000000000000000000000000000026f4cca45edbf52f9a297cd71beccfd15b0000000000000000000000000000000000302b83330392e9bc13cb1325598336000000000000000000000000000000dbe51a88266a67fa97161ffd0e67552fa50000000000000000000000000000000000038b8448a99858a1bfced9be9bd9bd000000000000000000000000000000f26857ed6499c96268dc09ec3b8024fb5a000000000000000000000000000000000014c05b26f75faf3d8f139bd609d1bc000000000000000000000000000000ec812c68c9a117e90de0ca9cd054a3d9b800000000000000000000000000000000002e62eff69e6e54d8f8abddbcf671c7000000000000000000000000000000dfae4bc64e124586b6da46a09fc536653d00000000000000000000000000000000001b9a470640d0be8f192d0cc3e4061d00000000000000000000000000000086ac1ae9d29f80c61275b685edd9d48c3400000000000000000000000000000000000fee993c976c5195ecedbac43db04b00000000000000000000000000000002d4e17f5dd313b0324586456514ba5f080000000000000000000000000000000000071e3ea502be114aa538455bbc319d0000000000000000000000000000004bea6399737139b8ce17fbe9f7b4c7607f000000000000000000000000000000000028ef9112bac3a48705f2d5c5991092000000000000000000000000000000a4765ec1e6e082bdb287a26f279cfbfe6600000000000000000000000000000000001817a75825ecff001deedc6d7c03f20000000000000000000000000000003d9c16043b4efcb3c1ccc01c73c0a5e5a100000000000000000000000000000000001850358f1b10eecd15d14cda40391d000000000000000000000000000000117dd106a740f124481f79c2e00dc0b517000000000000000000000000000000000022af6c8e792946f9ab0ece9f411942000000000000000000000000000000f626a621417487bba7182d071365f8e1d0000000000000000000000000000000000011ccea3a87b6944d2a2b4dea9de4a0000000000000000000000000000000d635f5b2342fda66e8d0d987d7772927de00000000000000000000000000000000001ff3095f983e3514ea01906271a49900000000000000000000000000000073e235ebd8bf9268b066ad05ba33792ecb000000000000000000000000000000000024e49fd470b55e99c25398393e2434000000000000000000000000000000b198d860097d71b1929f407d2066ee0dac000000000000000000000000000000000007941f15d06c8f65b144b7fa48dd03000000000000000000000000000000204923effd9d10b5727f667c50409f22ac000000000000000000000000000000000004a552c385e9e827284e948dd642e700000000000000000000000000000013ab17fc0be263fa84f71a27f77b3cb41500000000000000000000000000000000002b09b2ffbb071932461e8914f15572000000000000000000000000000000c09d31b362c36baf02bf9245ed044a0187000000000000000000000000000000000014f2af9791ca84baec34b4620024e0000000000000000000000000000000977eb643265e229fcd1485aa86890fedf5000000000000000000000000000000000025376db2aa47392181e97a46569a870000000000000000000000000000000103773f5e32275aa48148a6dde00ab912000000000000000000000000000000000022df157a2c015d47277241de82c2ba00000000000000000000000000000044509218df19dce556686e305fba5f51fc00000000000000000000000000000000001e52a95ede5c93d8eb151a8e462b52000000000000000000000000000000b395f548eb0cc1b64b12eb27229e8ce0d000000000000000000000000000000000001df0d2549017ea43d36f15c584154200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001d06d7c70fe39f4428f9759377ca84abd836c5962cf1585b9f551494a87771102011da31edb85766e836fc406c73f72dc84c90c338cadb8b0899cf4616dcb5350fa15ccbaf228f713cff3bb68a4e4679deeb156dbc4df4ca1669606e9f0a562f25a206b33e77861e1b562fed029453124a28588ef688ad7dd03f4ce24d54ad6a00071c3097afe8ad968e88550dab4f3330cbeb82fd9545eebb05ff72ccd0fad42867e4a60721834aaf9886194bb1e7e52ccfcbe8ff1d830d3f3e80074c4c86070c26992ef8619f0dda29daa6b77e3883f09980b2db8aef89ee792a7307aff99918a15ac4195de595cce8f90126dc475a9bf9470f1312a236edc760f6b9775d3808c2fa3a43e223ff44d383b9a15583b2d544a413c9eeb68712869120be1bde9e1b2e8f4759e322b32170f0f5b011a8e0bfffd3028a4b62a257e6543e39b03be402416c537aa8439fd8ae591c1a87b4558261dcc6c7c5e550ed62a67bdbb6d7e3005d15dd3b37fd10b4003ce9ec6a317ba9316bb550934e5f393bdf97381503c72d7a193185bb81ec73b39cad371e031a98cdd670e78cc0509fc39d0e9080f0cc17b1359d7211020b00bd867abe8d6876fd5b06791890bad16a923cd2408c28ca293c3f2b8535451e50186dedb36f1cef89afadcd502985b1683607a3e28d4313270b69abc41fa89654650a7baff92e515b6b6110a208aa3e05db1023deae679f1b33775bf329cdf22135cff5d71fef2fe91100e58c2155c610fc94717f07824e22203ebf5bcb50ae4c9c1ff3f29e2c9120e643fde1cddad7f94a8b213bd135aa28e5576baa55571c2acdc8d1c695c0667c0a880d67da8353622779f6984ab0220dad20b4105789c821521334826a43274146cff6f86c7ddee79925975d564c620852c38dadd36f4d64046c1c25cfb565825782ca80a26efb7ca44eaf06d3f5a900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008db5060c8593df5608bd34ed5b021d1fb500000000000000000000000000000000000d964ebc77169d8ec65d38514421570000000000000000000000000000000a12d4a34607550641fd28c5dcf9c0b838000000000000000000000000000000000011ffa635b0d0c3410cbb8a2a6d7d32000000000000000000000000000000fa8e3ffe254c3bf4493a985bb2189c2e2c00000000000000000000000000000000000fa62dba3c96f2975fc88082aec4ea00000000000000000000000000000021472a58a601d94a319e0278603713afdc0000000000000000000000000000000000070a0839e4e42c6d5cf49680ceaee50000003c","publicInputs":"19dc71af02455fd7b437af6a07b08fbe005c18b2f4be65c19bf1eb7cc0c884ad00000002224a70c36120d8e08b02885ec88395e57c7db919607b2b26d7b1a761a85d3ba1000000040d500ce5eea424fc5dbedd9d2e20273f74ef1093210ecddec74c65b7fbec3a9d032a9a79c14883dbdd78fe7bab0394b0491e66bc66bfaac2edb5d1c5a5994f70000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160f89744843c7ed99f717a7b6285740719b13fc8c71cc781b2b7bc669662a6a0d560ad12f14dd5026070bc037ac343535db339212f0904dfc96c4aea4dcc8ab0000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file +{"proof":"00008b640000045b0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000000102569a59ee1ac7a8d3d639e5b0ce3d403b83817fad4ef0ce64ae2befa3e5b9880000000000000000000000000000000000000000000000000000000000000002125c927dd0de76f063cb388b0eb79006a71c2c467d77347c912716e226214d6300000000000000000000000000000000000000000000000000000000000000041bdef12b868de34c7158964699584da32b1e7f038d2db9e86937f4320f0b209b1fe377018287e4433534dd3e41c258ecfb4f45d32c6bc672cfd0207185fde0fe000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000193267463615cd9b4ecaa6f720f5802327eac0b7313912d4f33b80b572fbc14508ba3c9b66832b1f42f21e1fbcca04fe95cc97b2c32a66f24f16e42853993a0e00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012189e27304c838e300000000000000000000000000000000000000000000000985c06289c30a6a9f000000000000000000000000000000000000000000000009420ce02918efb1880000000000000000000000000000000000000000000000000000f48c23066f5e000000000000000000000000000000000000000000000008f73303fb5521728500000000000000000000000000000000000000000000000441d894a4da4b43270000000000000000000000000000000000000000000000097e112b4dad2e16b80000000000000000000000000000000000000000000000000002d4845277c71d000000000000000000000000000000000000000000000003532fda527bef209b00000000000000000000000000000000000000000000000018fb29dde3adc50c00000000000000000000000000000000000000000000000a3284a388739fc7620000000000000000000000000000000000000000000000000002bcbb9a83ebda0000000000000000000000000000000000000000000000051b88c6a06c0f8d6300000000000000000000000000000000000000000000000d2275b2fb2e01048e00000000000000000000000000000000000000000000000041ea5add096a879e00000000000000000000000000000000000000000000000000022998a28814a800000000000000000000000000000020a4c09b8157a83ede3e933a0c8a17cb0800000000000000000000000000000000000e10b37afd746f69689ef702a863470000000000000000000000000000003bdc6f25064046c31fac6815ad6d834f52000000000000000000000000000000000015532f1394158280e9c5b262495bca000000000000000000000000000000200f5a8c403c3ae98e465ece5d93565808000000000000000000000000000000000001b3d265f330ec060e354e19932941000000000000000000000000000000d9adf8961780b226c47c87476786a04bf200000000000000000000000000000000000741a698ce4d0bc1f593ce7ceece51000000000000000000000000000000a259417e85fda5c9d3a13a85e88c0b5ac9000000000000000000000000000000000011ed0b39603c1b8b252e73385367c0000000000000000000000000000000467158cda2d8a4beabb695c6e7e1672ae30000000000000000000000000000000000142e068301743e86fba4f53335f92200000000000000000000000000000096650cbf350fd79e4e21a3a53f084e5359000000000000000000000000000000000025e86237c45eeb6939f852e4019e10000000000000000000000000000000870ec61adc23bc1294a793de7d329135e300000000000000000000000000000000000d59e4f667228b55d76d57b80cbb4a000000000000000000000000000000dfa123d263c27f5e0a447510bbbf014a24000000000000000000000000000000000014c0e9197abcac09fcca8aa3f56231000000000000000000000000000000693200aaa7a1cf111060bfd9649742812e00000000000000000000000000000000000a64ac6619042e406467e1ef5c7d8000000000000000000000000000000017242d34ae4d5bc824da2a7b879251db3000000000000000000000000000000000001bd2c1cfb5141b0e5a5be4b94e65da00000000000000000000000000000065d868bbcd8b74f45dd8f024f2428cdeca0000000000000000000000000000000000222d34b257386cc9497f829dddaee8000000000000000000000000000000d50105a74dbf09f4818c455b6d7b0fa27000000000000000000000000000000000002abdf5ec09815d6c5bf9f88e0d26fd000000000000000000000000000000d34505e69518c155621b27dea90d44c862000000000000000000000000000000000028e927dd263b5a5eecbab80b4f0ac30000000000000000000000000000003087be9b771666928f848dd7bfc5e957dc000000000000000000000000000000000010bfc3e0fdecef090eb1705d77ec2b000000000000000000000000000000c9e70926e040e8728ad4d1678beeb4670400000000000000000000000000000000002946af12346abfd95caf6699b543a21a3793a9a941b6e4dd953b737235778140fbba9ac9c36b531d371bda74aa1fd6162cbac937efe944dabb0a430f4be0dbe7382dadaff6053e26aad9b97b55e02b16ab9efed44bea0071b2c05a093c31e7252538ed8f53dc730a04cf16b0d55c5c261022d541b8676341ddadb61f9626f05abd6f656ee4e1929e5c303916ae7f3404f11061e011161df0cf1a31e084d3e1c37135d45364d2ab1e39253d689f31b419965fb39c9829702afe0681cb3b58b5a46648d6f17cbe45aee13165b3de25bd1f63ee0ce13aa8e5f2e42b8bf6dddc6abdb38ca12c38a7f90035779fb3560a3402106c22f7743b27312fcd5fa39c0c5ef9393192bda7d86ba51f3fc1ea331f670ae7ab9a7d83a39a1d56b5833afaf6d2486f780a64adb200fd1cedd76e9aa7501c6b958892a372a0d31ee97c25b27585ab615ded56c7b202709bcea02f4ad746029b9c89243932aceb3c6eabc08ed44c4e78ee760e2cebe204bd87a737cf0c100fa6a19b5f300b28e99add95c4db87945001bc77380e632387fc9bf8fb4e75360d1c2e5b00ee6a997b86d6bec1aa58b5db4b8dc4bc1f73ebca7168c3510a57a12cee9edd53478ef81fb7d56355ad2bafa78ef21455a7f43e36b8a7b2b0d7ee0a2bf7ca51c74be0d52657e6f5024b8775ef36292b7e9bda109b817efbcec84dca11c5c3429a6e7988aef74142045258c7e64ac77baf33d46464526342c2def8f51d464bdd9a17f986db9e0912e407c4ebef64aef6ba1f744cabe3b104a02236ba0d27a85b2b04a4136d9671c9aaea77fadb0d8854564f52f52df2dd7baee926d5075458dd715570fe26f268f5221fa866dfbd587d8abb0943cde1554914d3d2d2232660003c75d1e9c4c3c00f72bee367dda32110b8a14dad1858313439fb43ec014be463c31af0bac5b0ce597e94aec7f6705a699712f3eace15164f39b938752a3b86ad3e1da20fdb6fd54c397acb300738a37afe6611c84e2f22d5d54919830259eab18f0ea42f1dab14f042813bd28133a815680798b4442ae3c32cf595140bfe7e793f4ed5678c627740779f3bd5404ff3cc6ec717e181732cafd2e22d6724bbdaf40a45f95640d65ae5da5b4a17dbff2b2bc66b0076f00ab24dc1a6d9aa2bc874886a704b74ff967cd2fd1ad8bb42cae90ab0f79b9e246642e4b7f9ddf10cf2f9e44db39561406b4cba8bd2c86356d024782bfc1976323bd5e4616946631ae25763db7c26ebdf5e4a427835a7966d5d87cb56978d6a92d8873a27e9800a07a29c7f148a82dcb8ad4c2088078769ee20753de841d6e51c27080a9259737d2ffb6e31dd85ea0c8e2f369edc0b37debaf3c08acc8dbb825b7a3bc6206c99560a3257319e4b1803cc5aca51f7a18867333b0a8dd6c743e38da249bfdf6ae587059fd4ec89f4a9d0fce1779e9e9e5206f66b8d8f0b1152d734fc15e313e5824b0aabc25cd1ba5ece0d708c2a9cb2f3974e5e99adc10c9ce5eae4024740cbf85c2bcf74ff536c8f020e992a6627f007a1bf522776d89dc1e1073cf92ff50c1f962ef279021f6f7c6a281d66d0f6507f031c9fc54c4d9d8e1b04b9619f7ac1dbe517bd743e57a03e8e69299e4ef50a9ca13f60d5043c9de40b5c235018cadd07e21f7896d9d17f5ee0ac3babd4006f560a0e123e3d4f51345f80c7a50ec8d2b0d42f4fcdb6ff7e6f365073b38ba45f810eb785ce3b8683da42a8d58e57e6220b8f056833b6e5bcc887d513c9351fbda047a348b816d30442089059716029ece25c26638ec9a41291a49263bc047cb70c3bed2f937e9ffd56509a3b6efd2eb5b56d13fb29a78a0083a85772eda91f76c9d372af4e894cc7c6424a9e5bb95d2408f60f8125a22e746efb0dd5036f9d15a0044b0ce6824d1dce055ff164612182bb77039363e4aa1714cc81cc02818e0d0a05023aa1c6d49a31810bc98a1f418f496a019924b173fcf343b986ed489ab82d7149ac4347ca31815712a9b7470b8950912d4969ae35ad30bdbda3c2578e7a3bf663be902dfb30040da4505b3ec3d7951419b3ac856ddbac7e3c33b5f31379948c59930e7b3e70e19144cc011088abfa231195cc3f057c533d83f0bdbe0d46df6c5f106400a29b354337b178a6cf16c2d52f34b73766e0cda98376dd9eef548a02e6f7dd5739c7ced639fbbf8add45225309dad42e760821bb781540dd9488e7a094a300234d27eeb19335db02f7b35221055e1f0bccfff895ffcb852d42ed5dad249228b01a99c9124e771056b2011699065a6ae251d889b74ebe4c8a081285c05a333772be976242e7794d8ce1292ea02c34ddf89e06afe7fcafacbe3ff380c4c6ac2d8c6f0ebcbeea31b6dcbd8f883c1491a73470cc6ed2a64c85ebf85650c980d6455c4161c0c590e27a00be97ea682dabf2c027be8c392a33e2e0e327117de8baef83c2b16e73e5e564591da163e2295544427ef991ba9eae1d6c4145e9b3a3e9f78d1b2bdac68c1e14e1a661108f1c46723ffd82434bfc32c2a5eefd71d3d30f00fb3ac9e1ea3b2afd555cfd57a72277d571f6f5e15a8104f75f809c350606a6b2675318cde836a924a8c6a2187414f3bef92347292bd3a81b69d955774c112ee996f33235dd028087fb5f56a75d0ee679a841c6a822ef2235e5107f5a1414556bf0d4a67870de5806fb2a35d0370bca02651b89f0fd6ae04e52a5c0bcfdbde8096299a5116d21214839d7ef56a720b6e3b394c9e7c77816bd24b143d9a6f5f5e7f378dcc3c41549d10cdc10a33d21ab96de1843f9729a7e4c6b499b628a2e3c51f1e51855bd0a8623ae1b701cdf0db1c53dc3b3ad63e79efae4826c9a4022b673327a1e5a99a021961e1f9877460b5627961b25b3f1c3beb9da1d00735c5fe3eda62872be3bc1aa7ff0c9caa4b71f00284219ed4e00691cb8d38c4d4e0c699e86479b0ba11fbb4597ac44b34e4700375b434bea848b21b3533f3552d119140224305204b5b89c08ce981c5165c6045a1ba261fd66bac1c7e1f42131262156aa7a52466c9504c3736c10571b6e6319e56ce2f62387fea59df9c9545cf3b8deddfd2d5c4abaf3de7cf08e95889c3426797310c5adb5b12bdf53d8de0b409fb365ec1ad572b41a406e213b3086930b0fd4e837d1aa46aca7faa17b077653c4398253f7c7f6f5d16fb36c314a63087a2501378020b090395c15a36915ee144fdc5eeb1e02b199159baacfafc4b84fa3112d3d8930b50776e5da242f29446de0200bd77dd54ad8a1aa2589e30673029606fd00ea75886a050975bcaec46eb2c5733bb026c5920c05ed28ba4a063135371d912736b053d46439bf9a68ba6eedf941357abc5d878e6e53008c9db59aad5629a06e5ffa90c911f366cba8d2f7104a742b03cb96e8cae8c78c50584e9bc8550fc8fd8e4ac147d101d78390d18c60d1f5f291b554227b48384d1a6300ddca56154d320dd43c82f0ea5aecdc4f176eb5f3d9d87faf33ce9e7e180f991d8f5060095fad700e44198822b0af7978e17599f1e06ea0575e298ead4692ab44a9489b1d8d9bf4436a2b863b88b39d0b9cc8354dc6d0c15e17b402adcaf06ea66be07606234912f0fd32ed8f6a8ea485d30486fe12c80224c4d9aa6831d2e2d9423a6610473387f5624a055835e6a6dccd324d7d5262daca77019febd171497d53652a1180e1c76c53e3dfe126576b8b173f9a545fdacfb6dfac476f2440d8f193bc411be4e0f7351dfd2ec6fd2f8a5421639a49ec4fc6a156c452dbf7045d5477bbca2ab4673d80f6ed21d500f64627a758005179607b119bc057ce0fa0c47eb9094e1b88b5694786e591a5ec7d4dda0f51fd7cd25580483f4d571542930da8cf87150ce769ce7207787e7b11b9a2a9ebc0a449e85d18193662a20a7b06fee8ecd7b22b12e7ef98f6d6b928d4a332c89688f4357bf66d3145918c944a6d9737ce69c20176ac1dd368c287891ccb6ac708383d7e19a4c0bb550b37ef43109c701aaf6b060986e5de4aaa19d55c0f4d2bcb28c8fa2bf8198252cbba7d438005eaadfafb25a3945fd9bbbbc2f733c35b8f52ee47e6328b0c4cfbe1a55892f69504629362107de9c1ea93ce5f6f9fe4ea153a0c34b82468da7ad603fa47300620163fa79f05e65b742f9d108eb8c165a17aa59205146388b4b041f96c820bc049bc12017c194e299b08850a6962d72f86adecf38662c1b887cdc00c630de454cd5e0eadd52cd0543c898dc78c9c41647b1c644aec36905b8b48754ed28c9c1642315d532f13d6a7e246f5ed1a420e648d1420e249ef591db854790f13ff8472e9d5716db2225c3fdc86b1b9ae0f49a737776f663e0961b5a3d097273ea025993f8eddb6ed166524ff7013a9505ab0697ab9656ef8df024288eb0246f3d479b98d49dac14824da7f57e458c9e692792e3665e686a92517fd3d85e8095de86a55545b6bf7280a4a5961688b9976d48667a3eafa29e4ab85e42f73f903cfb282f82fe85a095913b5bfb988aefb5372ead5968301f97473a39827adfc0d639d19b72ec91e2530159cf73c74aa49cbcba799c8142dbc663dad8fad71d871180c640e5c09a48cb60d12539e1f0854a22a7ceadcd92c6757bf81277bfdf73387d93057d0dc17306c294309b187ae6f3b963e6eda567bb25568630739eae17d03a1583fd03a363d8e2f39ef61fd7f473cadf59e34fe571599aa265912d19d36995029ce08eeb0ae5e122c87ad8b0eeb81742015bbaa9b1ad1cde0d314925eb1dfe999f96b9b73f2de2b1df5e24336e7045710dd2a598e8cdc9b4a60fd2e495a386101975cec2b730125c4b612696d968093ef30d7798ff3d89750ee37d27ccff3c165541fdcb71cd92a2b5a8b69a9c7cbbaca4ed8619122b031d01746d98b328d5125c342b3542a1a27b2de2cf6ee19aca504fdbed41b82acfd2e35f9fe21b2cbf48923de49ce94a10308c12fbaf3a006dd8480579aa3dc67fd606d30f8ffb6c72af37a9b975f0d230fa5c900868d929ca5debc440fea04da76707f55aa2711b6c2e705283e62c43e081e4ce2964478cb7a407061331548eedcdc943649de08e219f3735d60245136117b6e4974845c04a553ba17577012ca708c9e0778dc04dd9bde3607b552b2450f8ecee6aae366ebf27daf9e73a7a5ff1f41e1e58859f3516fe506fbc52306422459bc5cb9b5160babe71ed79b8299794d3e84e85043d655cbc0c865048a4bf602b7fdef6eb81cf63d875280a36af50e800b9b2018ac74dcd813ddb556ba55d51e3a1b0484d38bf0b332ea375887c5a9bc4abbfee35f3a2b7036927ec6e4d5700ffcb728d107c93b0463e84f7afaa535eef609f49a1ba9d6b5323fd3c6257ade2486fddef5f12453bda4afdf58af6fa1d87b9604d2ba76dacc0a29e61abdfe3b2f40670d057dd13208d1a8d1fe980868adea0c98bdff8a923df4bfaae14c0f6f04f260b9b8dd86fe2e4bfc5f588fc38afc222cf0681abe5cacf6a8d9d01fea962889a1fc5e40fdd2a2aaa5f28aab864b72471c65744f08df7e4c22bfdfb12e6608caa0510fb51c74047a8e4959794d97d196fd3def2a82f42c18c3e28dc3f0c221017f784c6e9c87374fe2abb69f8dcead7e8f461e3b851e760f985a8fc888991811b2e3460c96f4e57f47fb79eb0126fc3b491dc654a5718e2b76d17f7ccc5a23b6591f7488fd295acfc4af9a0846a0229bbd4a9323920bcef5c39acf8b96940a5e9d3fa3cb770937a86385f956af6596c466fbc8bdd7ce6cb922dad7d5340c0a483fab0a66cc6298833a72e67770e184efe1ea85b84996368100035f8a599927cba10ed7514a95f87c85eff8c2f73031178117c94a5d75b98babdcc77a1e3715cdbd25640175e07f6d48862479306927c96a985ccde9211c899016b9b76312088a3a8d95aad87d74332a765c46c48ec88f964da624744bc1dbc9e5767d5e4a1b03081838cbc541d72daf68c9acc5cdb556b48b9986099525879c96fa54b0071f9c314d017ae49cb966e5e99ac832beee1405a22742c9d92f4923a07dabc88c0771311e26af2c044d4ab793e2e5edf9e23e23702c313f91d9355519e3bcc77e0a17a498f05b63bc72955e597c35603b015bf00fbeb766b7b079d4cc3bccd95321d79afaf7242b08d5d8468e7662453561e87c4cc0add16c4c193abe86b1c84e126c910075b2b11bd5eafbfdb02e4322ea28dbdfeae3e7f80ae1bead12c6c98804387c23debeed15fd9cf14a859c1888e90b606bab746308eee70b77dd5b234e0b6e9ade85584168a385dbfdb666a6d32c4087ab1d8b2d5ac1e9b9c76c2f178927ef87a3fe660fc38511db450e423f69e3af5f287d02ac32ff5ef6be0c37211d101e8b407891319927949adf5fa2187f046d04b7271bfa4c15b679d30d67432204c7018a3bcb0ab57dce794c0dc7aa1a391e085b18ec07956640ec2d2e8535a1223650e1a8595310c152cd6ba4edebf3bc74224c752840d2387a72f7a91b750418eb5053ebbaf44c686f7f1eab04d936010b39e0ab380746925af72f034a94831188b55d60605c1f11d444159c4b6b76ea3a380e8830b2f7510de6a69abd1c7e20fee8b86649318150383b52707d2879b64bea7a78b30f4f038213bdbe4f179b23b4811128cc53717aca1e949ec0db406ac1fd4132ba8a50460c28b2a900adbd03a71aa7a47bed45b42a6ee50ef07fa754f42b83917899cb189628b8ed1c08ce2442f78e792d36c0727579fd95e2761a45e48c1b3152740fa65e676eb45ed2a3184d3b40d9620b53d748bcd365809fa8f1cfb6fadf16f76e21167ba17b61724c13dc78c7eaebdf2b1f7a353b81f198f4614ff9b674540f275ddbdab00a6ad50e00ff3fa0ab62677be7b24d1989d7e491a2d40b541ab31e0f2f845313e6d58133254ec3b7fdc5a657767922b1f95e8e27dd24d98704e9aad298618a666f5b9f001dd453fd334f0efd4474f50afe94f5910e272fa88bd0ef642a52bb32bfcc1bd60d4e9a6643795aa9d3b35569a0bca6a2baa7e4363e54ae7cb2017616d15f2d910515692752df16e4026d00b7de61fb5416581c627c296cf20cbcf7141f7728ab15f5c1cd527ca111e217de87b07fde9e297592e82e446eed82d4ff6eebcd135f148e6ba7491f31f73588d9b19bf480138d96e2c74b8cf69eff55af499b71eabb1bf39091abcd27f00a7d21661d138f66c2def69535bc456099f770030d162c8822a3b5bd1a8d2ae07f3d563f27e4d27a45ac1d9b1e37123ca2d1d538700e747b2a9b41e5c19aee15c5cbcef302f5d4f784943cd709db1d595977e9fd8b217247297df5252225af7e0c8d46c9dbc638e9680a172f8ba923bcfe84f507c234e8da1efa2d9c1a61f0922860bd2bc949f8d94dbbc7ba8268aa4e0d491d31fd9d741c305444e8510cfc7dc53eff164228892196a3316501e45138edd7ccf5499d03ac17473cb8c960910c5662caf159d5b10573c825736a0d3e9538d6e3b0c7ea955f2bdd1c1492ad8cfd0323401ba4eaafd8995421356caa3f7c8da40f6eea88a34f0be976eb318393872322087d8619a822c6ea17494df22619d59ba956986460da2e38f0fa65203a9db98ba0e903286d68b1bf1490aad7bc93921ef3e4b787da2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006aa6080e2e0426a7ab1f68a05c174e8bc01866330086dca2248ab3b3731ff26003949201707b407a0f67de1b95b4fc091bf19111f4437188732ef16eea1a6b6020c4975d1ea76a8e96cb18c92941fa00d0c2efb76803b9112074fbbae2cb9f42b7d8fc760038e2c5c24d2dc10e04404d9f6906a1673de95df84921810a21e5e1d7c23d4c1f5c218388cadf0e8da4c243c6e6ee54340729901d76d32cf1ae17f2e213dd9f61ccf1bf3ff4f5c1790084fe2575704477d346096df1273e5976e84079a5fdb9620f0de62b617ab0bb45aa3e4d87b45632d05ac95ef16a14fa60b27030cca2b7a9e94ba354d03489fdcdfa16d8af1fdcabb53be4112636d7267affc2f1e34508a24318a79fcc433579c97b701496f8c79c1068e198eac96ddf826c60d70c2b305b9f895ccb79ca919329a4299ebbea320cf57d3125a990a4bad9c830d7c7b357ea202fcd10bd9a07dc304c48e48dba2b1e70a653c60a93621192b5c2f22e09d7126391835cb630533690ba9618ddc4e2b6105e3bb929431c1870e781654c43c7885922a4bee8b2bbe7ed296fa2d34e737bc5c1f1d17a10bc652cc980b344f4dd31f25a48b7d45e37e09280c6bb8b17e37715e341f6107d8ef5864731322aee5f839697b7c916d3f321bea17e94fbaee8349c4a75949837fba2805802f9c51a89797ddbf4e9384d68d5cbbc9cdef5dc41af215c74e4ccc22247bda181e8316132a6fc947a533ba66ab3e9a5c6268025eddbe85f15bb9ff853dd9bc012ea3f216a358c4b7e1838484d6f24ccd7192342ffe7e30f7e73b617eada1fe32301e3162a484531d7a44677d4a435ecca0249c3f735f2ecb2b2fd41cee14874a1f49fe2f5f3a20ac51e93e37084ba1f57eeb671dd085ecd319597ee5f66bc5ca11e7a2ca111f5308c3467230c3f0d4ed3e6a25ff171da0289015649ab46f251e0e83c4b37415d77cf92169c4d17008118a0e8fda870bfd2d8d71b706009a277a2fd06ef22bd28770dde752c12c269d771abd22971ec728c24d394b677ad677c0053ae2d18fe754e8537481ac49e2f20ac97fed84fb1fcfa0fa946e7a0086dce7099053a22392bf331f1ce01be8f72a8dbc7d2570b1b2504c1cc3e97a8c0dc04b0039da1f917cb23c7ce9c37d900919eb8c43194d9652fe97e9328436770d6a0f1090b95ec5aae37820ae544c4570ab44fe732c6b59f1839a44dacfd66fb82e511a0387fb4e12908b53de55e1d29eacd588d6b8dff658c804404e27f72a434bbd039887f27d43af85cb8fd572f63cd49f4c2dc49102b4c8be8df393e7d789ba23189bc621566c9f642b0f5714d6bcc141372ce9bd7408762037c4a70925d84bdd298602f3f1015ce659643ac4ab7ec26ba2080dee04413a19fc3dd345e135f0d40857f2874659cfb3bec91bb4d85cc799e16252f39236ca2120d25db8d47c094a0919d2eb4ed07350880b9f887eeb9040882136ed03c33a6870ffe79a8eaf0fb911cde6ecb3f7c468c864b82905376d49dd409996660b85efb7cac1798700eb920645261885277c62b6d9fb29e0a797daec4442071965306fef93e421cb928020243775aa72809864b0d2d68e737eb085fed6744654b4b947ff18017773a9a0710a28ccb0da53d77d181fd0aa3062e35fe65a5ed56cc8ebe57dad940393e025522816b1d1d97fdfa28af6c748d317080b4499409d2efdcf8f1b6273a5f5faff412d190ee38bb1a7924590f2a74d08eac36ca8081589af0b1fea392cf3337474c8107f9a59f56ef65719b1f1521489af9f21d6546b20bedc2e617b3b9d2e3c5dbf03306b320ade8dca97a3110dc761f2faa9843c7aa0c0d92427c64ccb6ba92fdc290bba04878b6274106d6395fc4b24e340dd02a10e01d5acaefde133f93efeff07628206218c2407335307640faba6aa649c216dc6b1fc980ad2856f54068baf1b799de76265cf605c086c49b735ee3b315dd157384dc136cdb6f54e7e0cfcba0000000000000000000000000000006a75c485cf87be4c92744f7df0a2eaeeba000000000000000000000000000000000000f2d07648da4fcd65d82617d173a400000000000000000000000000000038f6bf97c50dd6a375e7cf762fc67c6a0a00000000000000000000000000000000001b93f5f761c9455f73bda5e4edfe900000000000000000000000000000000bf432e3efd16e7ff66f81a2dd12aa730a000000000000000000000000000000000009d05f9292ddf99e80707fadffb0bc000000000000000000000000000000d4e97ed86b6a6fdd1926753b08c2fc638c00000000000000000000000000000000000fe866ac3a6809213c08dc15f11ba9000000000000000000000000000000e0c52820ebc863d2dbcbd777fe77b02c4500000000000000000000000000000000000e3f707fd46be5e0074fbae0989ba2000000000000000000000000000000ac9344428bfb0c9217f7c4626c7b317fc4000000000000000000000000000000000012629e191041c6ea93e5c0aae0f755000000000000000000000000000000d1c0a2db28bc1894e3d8a2d22dc60e8c970000000000000000000000000000000000304c99def73a55ae1c3ebd9d4d7009000000000000000000000000000000e54f6413a82290147564fb057cfa789b0400000000000000000000000000000000002583673b3ecd28404eeef0f8d9d0d4000000000000000000000000000000af6c2adde50398cedf2089031e2291dc520000000000000000000000000000000000056d69be1fb381aedebf7de8bca03200000000000000000000000000000025148637aca922a6e3b3cc79c318b2fd25000000000000000000000000000000000007eb04afb8bf7f6dbe2736f662f337000000000000000000000000000000767769c9f7492f460d4e30d8dd7b8a83c9000000000000000000000000000000000027070450cedd24e4039fa316ca1290000000000000000000000000000000701de0578eb2c6188da4d522c8984b8a6b00000000000000000000000000000000003042027948358066c2e49a4409bb68000000000000000000000000000000f1300b2c2e0a9e10795b044615d88e9438000000000000000000000000000000000003c2ad4b58ddbae60dd4143c765b6600000000000000000000000000000066f9d8176ef2177148bc3baa83462c9a5300000000000000000000000000000000002314f62e871c26d03a4448071ddefa000000000000000000000000000000d2e877f9e3968766f08b068f38c5781082000000000000000000000000000000000026a0de05ed713dd3b67e579d147e23000000000000000000000000000000e6f4695b853d46cda09ceb24719a78376d0000000000000000000000000000000000174665fba01ebaa4e5f0353c8521e5000000000000000000000000000000af8c81347e1d282627d5835d921ccc0511000000000000000000000000000000000011989e4a9332d9d034cab27923d0b9000000000000000000000000000000d6c49d309f441cdfa1d1ba5da2abbb85d3000000000000000000000000000000000011a480e1a0f8140ed9984b83a7facb000000000000000000000000000000204ee3af0f077c1e20afeb1f22ba8dea3b00000000000000000000000000000000001cc114cd66e97fc4fac20ef47bbf03000000000000000000000000000000a5575335ae35f1a417ead6e54b52589431000000000000000000000000000000000023e2c9fc4acbc6a97445fbbbe6dace000000000000000000000000000000b81bcd56f66e1d60048a7abfa2ac63e07100000000000000000000000000000000001909118832ad01e1276d3055672a2700000000000000000000000000000095337ca1eaa682bd5572994e119cc39828000000000000000000000000000000000007006cb1bb8aa584fb992ce1657307000000000000000000000000000000015e035f523f149f2bc71ee1a0604e69280000000000000000000000000000000000269a1c5429d7e738e852d12e5b2b63000000000000000000000000000000226fa99b18cb6d8044c98bc8f6498bab170000000000000000000000000000000000094d10f2d45d21656244c7af981225000000000000000000000000000000c849ade589b7f6238fe559c8931d46554200000000000000000000000000000000002f2adbe2217506a9e84472c243925d00000000000000000000000000000025bd045bd02c5a4da42c9d856ebaa1ffcc000000000000000000000000000000000010fe648f46df182c985146b90d5ee200000000000000000000000000000005e10400efe15441967580ac93a295f4d10000000000000000000000000000000000093ad3274859a19238f1a48fef0f53000000000000000000000000000000969d87a40cb83590c542a52c81c43b311e000000000000000000000000000000000019fd918dd63ef760a7d71120162b80000000000000000000000000000000ddc1368e48261d537fee14e9776d1ffc090000000000000000000000000000000000123b1e637b4057652320d424a224ae000000000000000000000000000000bd0fc4f32ecba6ea917593bd9283672614000000000000000000000000000000000021e8455de8ec340bcae353deaedb4b000000000000000000000000000000e2a0730f81a0faf77795cfd01d431c9a7400000000000000000000000000000000002f4fa7e14edca2efcc49b146a55a3700000000000000000000000000000017560a101e4e62a17b7ba85d76ccd1132e000000000000000000000000000000000018404b2834d98aedf3df71cd08de6f000000000000000000000000000000dec37e48cde642b80c272d4b2417cb112200000000000000000000000000000000002b02b6fa16a8a4e9d049031152a13800000000000000000000000000000069c2ea187fc5527d577e1c0b0421c7af860000000000000000000000000000000000024d712941f81e82492ffa716b23fd000000000000000000000000000000a03b0a28ec2ebdc96ff63d22b1b9546286000000000000000000000000000000000019d47bb2be4d1f474b039769c43daf000000000000000000000000000000648e22ac49d53b073e51099b4e155290ad000000000000000000000000000000000020232516630aea7abd4bf3f59f2f2a000000000000000000000000000000d7b56dae0b6b4fb2ca8dc4c6877388d6c400000000000000000000000000000000000020ae5182691dd99cd00db855bd2d0000000000000000000000000000009065bbf34a82043b945219dda959e9e7e20000000000000000000000000000000000190b95174efda20ee247c51390009700000000000000000000000000000039b3c3a59cbb81dc3e5bd7db84bf37f0f800000000000000000000000000000000001050b9a04b0be3196344f7b3bd5a6d000000000000000000000000000000ede920772a1cf5c75399b3b3ac0fa6e24000000000000000000000000000000000000a762b1f7a0e36cbb858ad616305bc0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000027161cd7d94ba07d570dc05049367c18d5216051070f00266e3d38e5683ab93129387a1590eae334e1d4338dcb8c82ca96fbf7942473b2383002261d8c3c8851ab7869a89bf3a502a8b56f9776cb290c4c9a4ec3e034e9f981a68f89ba5cc1027bc23eb01977528cdefa37841a12e8f22df810b5e95f3ca98869475dd527bf428bedbfc26f5cf9a5df1bdf8432c8a7908bb3612b9bfb0a6befbcb2118235e6c0f78585666f9f1e0442a55f4a57f1f83c02c956b6c917e57ac38036ae38941d3263916eb4c67179ee88a44fcd6b6c98f002f4fe2cdeadd7065f4ed66b3fa6a481d106837378da9b357a9ce58820d8b8bbcb6f66ce661a02bb93f71bc532916b003ac85f048fb3724836b6a024cdaef9166a7adf87ab185d093a0817daf05009320ee862a3af62fd94a74ad64f6fe04c6cc316b36269b45c10aef262194d312cd09675217eb8dc68b2cd141eacf973e9ce7434cca47f6d5c58295b60e7b201c172f084069512ddc88e3ff33c34c5c48f6b26ca233ef89f6d33e1062a156ea86a914e68ee034c8c1554244303975d6786cc9897b44db6c02d44d677a71674a6e1504ce2768010cb18423e55f064448b9cdcd45fe3b8e4b58dfd542d9c5e3d355181c4bd4fe1c6cadece19fd14e76f19451fc60f4e8f8bc6935fc0786ca88e0a3d419bcd8ab0f019655ff3109aaedb49f0e6f0888e99f18da4c799bf905a7d3f9360d5ec93b851acc7ada9510dc383a0dd7f9b9baee59d0e6f0e310b4a3e89b929711f561890ed8ad279dd2bfe648e6ed056c195d1c5d8de9b30cb1c5b13e1783c8029ba89ac82b835f1059e6ed9e47f5f3889c8fde43ca956ae3fcbf319654eaf711d7ef8096e220d644654342dee2bbafe5ead303e17d136e6b010d921b9aa0030abba364f85bde187d35e2587dabf837cd2fd214ac5a93c40153e30857cbc7890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e384122fa6ef39cd678c54b3acf21ccc0800000000000000000000000000000000001fe645c24f836a5f9f2e7f2bfb64c80000000000000000000000000000005aa1afa7f068421f97e7b135bbcc72f72c0000000000000000000000000000000000231051ed83ade2ca091843c6e106ef000000000000000000000000000000a8a5ddd351e975251400bd35e402d946f200000000000000000000000000000000000449a718d48f5adddb0c289bc672a20000000000000000000000000000005912b23ff4f97982c1b6b19081bce393620000000000000000000000000000000000086eec3524f43ea66f02b65c18d4620000029c","publicInputs":"02569a59ee1ac7a8d3d639e5b0ce3d403b83817fad4ef0ce64ae2befa3e5b98800000002125c927dd0de76f063cb388b0eb79006a71c2c467d77347c912716e226214d63000000041bdef12b868de34c7158964699584da32b1e7f038d2db9e86937f4320f0b209b1fe377018287e4433534dd3e41c258ecfb4f45d32c6bc672cfd0207185fde0fe000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000193267463615cd9b4ecaa6f720f5802327eac0b7313912d4f33b80b572fbc14508ba3c9b66832b1f42f21e1fbcca04fe95cc97b2c32a66f24f16e42853993a0e00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file diff --git a/yarn-project/ethereum/src/deploy_l1_contracts.ts b/yarn-project/ethereum/src/deploy_l1_contracts.ts index fae1608e821..81c532341d6 100644 --- a/yarn-project/ethereum/src/deploy_l1_contracts.ts +++ b/yarn-project/ethereum/src/deploy_l1_contracts.ts @@ -21,11 +21,8 @@ import { RewardDistributorBytecode, RollupAbi, RollupBytecode, - RollupLinkReferences, TestERC20Abi, TestERC20Bytecode, - TxsDecoderAbi, - TxsDecoderBytecode, } from '@aztec/l1-artifacts'; import type { Abi, Narrow } from 'abitype'; @@ -166,15 +163,6 @@ export const l1Artifacts: L1ContractArtifactsForDeployment = { rollup: { contractAbi: RollupAbi, contractBytecode: RollupBytecode, - libraries: { - linkReferences: RollupLinkReferences, - libraryCode: { - TxsDecoder: { - contractAbi: TxsDecoderAbi, - contractBytecode: TxsDecoderBytecode, - }, - }, - }, }, feeJuice: { contractAbi: TestERC20Abi, diff --git a/yarn-project/foundation/package.json b/yarn-project/foundation/package.json index 46cc1d6d96b..25533ff256f 100644 --- a/yarn-project/foundation/package.json +++ b/yarn-project/foundation/package.json @@ -40,6 +40,7 @@ "./wasm": "./dest/wasm/index.js", "./worker": "./dest/worker/index.js", "./bigint-buffer": "./dest/bigint-buffer/index.js", + "./blob": "./dest/blob/index.js", "./types": "./dest/types/index.js", "./schemas": "./dest/schemas/index.js", "./url": "./dest/url/index.js", @@ -102,6 +103,7 @@ "@koa/cors": "^5.0.0", "@noble/curves": "^1.2.0", "bn.js": "^5.2.1", + "c-kzg": "4.0.0-alpha.1", "debug": "^4.3.4", "detect-node": "^2.1.0", "elliptic": "^6.5.4", diff --git a/yarn-project/foundation/src/blob/blob.test.ts b/yarn-project/foundation/src/blob/blob.test.ts new file mode 100644 index 00000000000..e4a5746ec06 --- /dev/null +++ b/yarn-project/foundation/src/blob/blob.test.ts @@ -0,0 +1,135 @@ +import cKzg from 'c-kzg'; +import type { Blob as BlobBuffer, Bytes48, KZGProof } from 'c-kzg'; + +import { poseidon2Hash } from '../crypto/index.js'; +import { Fr } from '../fields/index.js'; +import { Blob } from './index.js'; + +// Importing directly from 'c-kzg' does not work, ignoring import/no-named-as-default-member err: +/* eslint-disable import/no-named-as-default-member */ + +const { + BYTES_PER_BLOB, + FIELD_ELEMENTS_PER_BLOB, + blobToKzgCommitment, + computeBlobKzgProof, + computeKzgProof, + loadTrustedSetup, + verifyBlobKzgProofBatch, + verifyKzgProof, +} = cKzg; + +try { + loadTrustedSetup(); +} catch (error: any) { + if (error.message.includes('trusted setup is already loaded')) { + // NB: The c-kzg lib has no way of checking whether the setup is loaded or not, + // and it throws an error if it's already loaded, even though nothing is wrong. + // This is a rudimentary way of ensuring we load the trusted setup if we need it. + } else { + throw new Error(error); + } +} + +describe('blob', () => { + it('c-kzg lib should verify a batch of blobs', () => { + // This test is taken from the blob-lib repo + const BATCH_SIZE = 3; + const blobs: BlobBuffer[] = []; + const commitments: Bytes48[] = []; + const kzgProofs: KZGProof[] = []; + + for (let i = 0; i < BATCH_SIZE; i++) { + blobs.push(Buffer.alloc(BYTES_PER_BLOB)); + (blobs[i] as Buffer).write('potato', 0, 'utf8'); + (blobs[i] as Buffer).write('potato', BYTES_PER_BLOB - 50, 'utf8'); + commitments.push(blobToKzgCommitment(blobs[i])); + kzgProofs.push(computeBlobKzgProof(blobs[i], commitments[i])); + } + const isValid = verifyBlobKzgProofBatch(blobs, commitments, kzgProofs); + + expect(isValid).toBe(true); + }); + + it('should verify a kzg precise proof', () => { + // This test is taken from the blob-lib repo + const zBytes = Buffer.alloc(32); + + // blobs[0][31] = x, and z = 0x01 results in y = x. + // So the first blob field is evaluated at 0x01. + (zBytes as Buffer).write('01', 31, 'hex'); + + // This is the 2nd root of unity, after 1, because we actually get the bit_reversal_permutation of the root of unity. And although `7` is the primitive root of unity, the roots of unity are derived as 7 ^ ((BLS_MODULUS - 1) / FIELD_ELEMENTS_PER_BLOB) mod BLS_MODULUS. + (zBytes as Buffer).write('73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000000', 0, 'hex'); // equiv to 52435875175126190479447740508185965837690552500527637822603658699938581184512 which is actually -1 in the scalar field! + + const blob = Buffer.alloc(BYTES_PER_BLOB); + (blob as Buffer).write('09', 31, 'hex'); + (blob as Buffer).write('07', 31 + 32, 'hex'); + + const proofResult = computeKzgProof(blob, zBytes); + const commitment = blobToKzgCommitment(blob); + + const isValid = verifyKzgProof(commitment, zBytes, proofResult[1], proofResult[0]); + + expect(isValid).toBe(true); + }); + + it('should evaluate a blob of 400 items', () => { + // This test ensures that the Blob class correctly matches the c-kzg lib + // The values here are used to test Noir's blob evaluation in noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr -> test_400 + const blobItems = Array(400).fill(new Fr(3)); + const ourBlob = new Blob(blobItems); + const blobItemsHash = poseidon2Hash(Array(400).fill(new Fr(3))); + expect(blobItemsHash).toEqual(ourBlob.fieldsHash); + expect(blobToKzgCommitment(ourBlob.data)).toEqual(ourBlob.commitment); + + const z = poseidon2Hash([blobItemsHash, ...ourBlob.commitmentToFields()]); + expect(z).toEqual(ourBlob.challengeZ); + + const res = computeKzgProof(ourBlob.data, ourBlob.challengeZ.toBuffer()); + expect(res[0]).toEqual(ourBlob.proof); + expect(res[1]).toEqual(ourBlob.evaluationY); + + const isValid = verifyKzgProof( + ourBlob.commitment, + ourBlob.challengeZ.toBuffer(), + ourBlob.evaluationY, + ourBlob.proof, + ); + expect(isValid).toBe(true); + }); + + it('should evaluate full blobs', () => { + // This test ensures that the Blob class correctly matches the c-kzg lib + // The values here are used to test Noir's blob evaluation in noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr -> test_full_blobs + + const blobItems = []; + for (let j = 0; j < 3; j++) { + for (let i = 0; i < FIELD_ELEMENTS_PER_BLOB; i++) { + blobItems[j * FIELD_ELEMENTS_PER_BLOB + i] = new Fr(i + 2); + } + } + const blobItemsHash = poseidon2Hash(blobItems); + const blobs = Blob.getBlobs(blobItems); + blobs.forEach(ourBlob => { + // const ourBlob = new Blob(blobItems.slice(j * FIELD_ELEMENTS_PER_BLOB, (j + 1) * FIELD_ELEMENTS_PER_BLOB), blobItemsHash); + expect(blobItemsHash).toEqual(ourBlob.fieldsHash); + expect(blobToKzgCommitment(ourBlob.data)).toEqual(ourBlob.commitment); + + const z = poseidon2Hash([blobItemsHash, ...ourBlob.commitmentToFields()]); + expect(z).toEqual(ourBlob.challengeZ); + + const res = computeKzgProof(ourBlob.data, ourBlob.challengeZ.toBuffer()); + expect(res[0]).toEqual(ourBlob.proof); + expect(res[1]).toEqual(ourBlob.evaluationY); + + const isValid = verifyKzgProof( + ourBlob.commitment, + ourBlob.challengeZ.toBuffer(), + ourBlob.evaluationY, + ourBlob.proof, + ); + expect(isValid).toBe(true); + }); + }); +}); diff --git a/yarn-project/foundation/src/blob/index.ts b/yarn-project/foundation/src/blob/index.ts new file mode 100644 index 00000000000..6c1651f4c56 --- /dev/null +++ b/yarn-project/foundation/src/blob/index.ts @@ -0,0 +1,152 @@ +import cKzg from 'c-kzg'; +import type { Blob as BlobBuffer } from 'c-kzg'; + +import { poseidon2Hash, sha256 } from '../crypto/index.js'; +import { Fr } from '../fields/index.js'; +import { serializeToBuffer } from '../serialize/index.js'; + +// Importing directly from 'c-kzg' does not work, ignoring import/no-named-as-default-member err: +/* eslint-disable import/no-named-as-default-member */ + +const { + BYTES_PER_BLOB, + FIELD_ELEMENTS_PER_BLOB, + blobToKzgCommitment, + computeKzgProof, + loadTrustedSetup, + verifyKzgProof, +} = cKzg; + +try { + loadTrustedSetup(); +} catch (error: any) { + if (error.message.includes('trusted setup is already loaded')) { + // NB: The c-kzg lib has no way of checking whether the setup is loaded or not, + // and it throws an error if it's already loaded, even though nothing is wrong. + // This is a rudimentary way of ensuring we load the trusted setup if we need it. + } else { + throw new Error(error); + } +} + +// The prefix to the EVM blobHash, defined here: https://eips.ethereum.org/EIPS/eip-4844#specification +export const VERSIONED_HASH_VERSION_KZG = 0x01; + +/** + * A class to create, manage, and prove EVM blobs. + */ +export class Blob { + /** The blob to be broadcast on L1 in bytes form. */ + public readonly data: BlobBuffer; + /** The hash of all tx effects inside the blob. Used in generating the challenge z and proving that we have included all required effects. */ + public readonly fieldsHash: Fr; + /** Challenge point z (= H(H(tx_effects), kzgCommmitment). Used such that p(z) = y. */ + public readonly challengeZ: Fr; + /** Evaluation y = p(z), where p() is the blob polynomial. BLS12 field element, rep. as BigNum in nr, bigint in ts. */ + public readonly evaluationY: Buffer; + /** Commitment to the blob C. Used in compressed BLS12 point format (48 bytes). */ + public readonly commitment: Buffer; + /** KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes). */ + public readonly proof: Buffer; + + constructor( + /** All fields to be broadcast in the blob. */ + fields: Fr[], + /** If we want to broadcast more fields than fit into a blob, we hash those and used it as the fieldsHash across all blobs. + * This is much simpler and cheaper in the circuit to do, but MUST BE CHECKED before injecting here. + */ + multiBlobFieldsHash?: Fr, + ) { + if (fields.length > FIELD_ELEMENTS_PER_BLOB) { + throw new Error( + `Attempted to overfill blob with ${fields.length} elements. The maximum is ${FIELD_ELEMENTS_PER_BLOB}`, + ); + } + this.data = Buffer.concat([serializeToBuffer(fields)], BYTES_PER_BLOB); + // This matches the output of SpongeBlob.squeeze() in the blob circuit + this.fieldsHash = multiBlobFieldsHash ? multiBlobFieldsHash : poseidon2Hash(fields); + this.commitment = Buffer.from(blobToKzgCommitment(this.data)); + this.challengeZ = poseidon2Hash([this.fieldsHash, ...this.commitmentToFields()]); + const res = computeKzgProof(this.data, this.challengeZ.toBuffer()); + if (!verifyKzgProof(this.commitment, this.challengeZ.toBuffer(), res[1], res[0])) { + throw new Error(`KZG proof did not verify.`); + } + this.proof = Buffer.from(res[0]); + this.evaluationY = Buffer.from(res[1]); + } + + // 48 bytes encoded in fields as [Fr, Fr] = [0->31, 31->48] + commitmentToFields(): [Fr, Fr] { + return [new Fr(this.commitment.subarray(0, 31)), new Fr(this.commitment.subarray(31, 48))]; + } + + // Returns ethereum's versioned blob hash, following kzg_to_versioned_hash: https://eips.ethereum.org/EIPS/eip-4844#helpers + getEthVersionedBlobHash(): Buffer { + const hash = sha256(this.commitment); + hash[0] = VERSIONED_HASH_VERSION_KZG; + return hash; + } + + static getEthVersionedBlobHash(commitment: Buffer): Buffer { + const hash = sha256(commitment); + hash[0] = VERSIONED_HASH_VERSION_KZG; + return hash; + } + + // Returns a proof of opening of the blob to verify on L1 using the point evaluation precompile: + // * input[:32] - versioned_hash + // * input[32:64] - z + // * input[64:96] - y + // * input[96:144] - commitment C + // * input[144:192] - proof (a commitment to the quotient polynomial q(X)) + // See https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile + getEthBlobEvaluationInputs(): `0x${string}` { + const buf = Buffer.concat([ + this.getEthVersionedBlobHash(), + this.challengeZ.toBuffer(), + this.evaluationY, + this.commitment, + this.proof, + ]); + return `0x${buf.toString('hex')}`; + } + + static getEthBlobEvaluationInputs(blobs: Blob[]): `0x${string}` { + let buf = Buffer.alloc(0); + blobs.forEach(blob => { + buf = Buffer.concat([ + buf, + blob.getEthVersionedBlobHash(), + blob.challengeZ.toBuffer(), + blob.evaluationY, + blob.commitment, + blob.proof, + ]); + }); + // For multiple blobs, we prefix the number of blobs: + const lenBuf = Buffer.alloc(1); + lenBuf.writeUint8(blobs.length); + buf = Buffer.concat([lenBuf, buf]); + return `0x${buf.toString('hex')}`; + } + + static getViemKzgInstance() { + return { + blobToKzgCommitment: cKzg.blobToKzgCommitment, + computeBlobKzgProof: cKzg.computeBlobKzgProof, + }; + } + + // Returns as many blobs as we require to broadcast the given fields + // Assumes we share the fields hash between all blobs + static getBlobs(fields: Fr[]): Blob[] { + const numBlobs = Math.max(Math.ceil(fields.length / FIELD_ELEMENTS_PER_BLOB), 1); + const multiBlobFieldsHash = poseidon2Hash(fields); + const res = []; + for (let i = 0; i < numBlobs; i++) { + const end = fields.length < (i + 1) * FIELD_ELEMENTS_PER_BLOB ? fields.length : (i + 1) * FIELD_ELEMENTS_PER_BLOB; + res.push(new Blob(fields.slice(i * FIELD_ELEMENTS_PER_BLOB, end), multiBlobFieldsHash)); + } + return res; + } +} diff --git a/yarn-project/foundation/src/index.ts b/yarn-project/foundation/src/index.ts index 78694f262f8..e8a8348de1f 100644 --- a/yarn-project/foundation/src/index.ts +++ b/yarn-project/foundation/src/index.ts @@ -3,6 +3,7 @@ export * as abi from './abi/index.js'; export * as asyncMap from './async-map/index.js'; export * as aztecAddress from './aztec-address/index.js'; export * as bigintBuffer from './bigint-buffer/index.js'; +export * as blob from './blob/index.js'; export * as collection from './collection/index.js'; export * as committable from './committable/index.js'; export * as crypto from './crypto/index.js'; diff --git a/yarn-project/foundation/src/serialize/field_reader.ts b/yarn-project/foundation/src/serialize/field_reader.ts index 1c1242457b4..98e80c80909 100644 --- a/yarn-project/foundation/src/serialize/field_reader.ts +++ b/yarn-project/foundation/src/serialize/field_reader.ts @@ -140,4 +140,12 @@ export class FieldReader { }): T { return deserializer.fromFields(this); } + + /** + * Returns whether the reader has finished reading all fields. + * @returns A bool. + */ + public isFinished(): boolean { + return this.index === this.length; + } } diff --git a/yarn-project/l1-artifacts/scripts/generate-artifacts.sh b/yarn-project/l1-artifacts/scripts/generate-artifacts.sh index 4ddefda991c..b3d2eb00a57 100755 --- a/yarn-project/l1-artifacts/scripts/generate-artifacts.sh +++ b/yarn-project/l1-artifacts/scripts/generate-artifacts.sh @@ -28,7 +28,6 @@ CONTRACTS=( "l1-contracts:GovernanceProposer" "l1-contracts:Governance" "l1-contracts:NewGovernanceProposerPayload" - "l1-contracts:TxsDecoder" ) diff --git a/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts b/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts index 27391eb641f..1123498d680 100644 --- a/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts @@ -7,8 +7,11 @@ import { type AvmCircuitPublicInputs, type AvmProofData, AztecAddress, + BLOBS_PER_BLOCK, BaseOrMergeRollupPublicInputs, type BaseParityInputs, + BlobPublicInputs, + BlockBlobPublicInputs, type BlockMergeRollupInputs, BlockRootOrBlockMergePublicInputs, type BlockRootRollupInputs, @@ -74,6 +77,7 @@ import { PartialStateReference, type PendingReadHint, Point, + Poseidon2Sponge, type PreviousRollupBlockData, type PreviousRollupData, PrivateAccumulatedData, @@ -119,6 +123,7 @@ import { ScopedNullifier, ScopedReadRequest, type SettledReadHint, + SpongeBlob, StateReference, type TUBE_PROOF_LENGTH, type TransientDataIndexHint, @@ -129,7 +134,7 @@ import { type VerificationKeyAsFields, type VkWitnessData, } from '@aztec/circuits.js'; -import { toBufferBE } from '@aztec/foundation/bigint-buffer'; +import { toBufferBE, toHex } from '@aztec/foundation/bigint-buffer'; import { type Tuple, mapTuple, toTruncField } from '@aztec/foundation/serialize'; import type { @@ -139,6 +144,10 @@ import type { AvmProofData as AvmProofDataNoir, BaseOrMergeRollupPublicInputs as BaseOrMergeRollupPublicInputsNoir, BaseParityInputs as BaseParityInputsNoir, + BigNum, + BlobCommitment as BlobCommitmentNoir, + BlobPublicInputs as BlobPublicInputsNoir, + BlockBlobPublicInputs as BlockBlobPublicInputsNoir, BlockMergeRollupInputs as BlockMergeRollupInputsNoir, BlockRootOrBlockMergePublicInputs as BlockRootOrBlockMergePublicInputsNoir, BlockRootRollupInputs as BlockRootRollupInputsNoir, @@ -189,6 +198,7 @@ import type { RootParityInput as ParityRootParityInputNoir, PartialStateReference as PartialStateReferenceNoir, PendingReadHint as PendingReadHintNoir, + Poseidon2 as Poseidon2SpongeNoir, PreviousRollupBlockData as PreviousRollupBlockDataNoir, PreviousRollupData as PreviousRollupDataNoir, PrivateAccumulatedData as PrivateAccumulatedDataNoir, @@ -229,6 +239,7 @@ import type { ScopedNoteHash as ScopedNoteHashNoir, ScopedNullifier as ScopedNullifierNoir, ScopedReadRequest as ScopedReadRequestNoir, + SpongeBlob as SpongeBlobNoir, StateReference as StateReferenceNoir, TransientDataIndexHint as TransientDataIndexHintNoir, TreeSnapshots as TreeSnapshotsNoir, @@ -282,6 +293,29 @@ export function mapNumberToNoir(number: number): NoirField { return new Fr(BigInt(number)).toString(); } +/** + * Maps a BigNum coming to/from noir. + * TODO(): Is BigInt the best way to represent this? + * @param number - The BigNum representing the number. + * @returns The number + */ +export function mapBLS12BigNumFromNoir(bignum: BigNum): bigint { + // TODO(Miranda): there's gotta be a better way to convert this + const paddedLimbs = [ + `0x` + bignum.limbs[2].substring(2).padStart(4, '0'), + bignum.limbs[1].substring(2).padStart(30, '0'), + bignum.limbs[0].substring(2).padStart(30, '0'), + ]; + return BigInt(paddedLimbs[0].concat(paddedLimbs[1], paddedLimbs[2])); +} + +export function mapBLS12BigNumToNoir(number: bigint): BigNum { + const hex = toHex(number, true); + return { + limbs: ['0x' + hex.substring(36), '0x' + hex.substring(6, 36), hex.substring(0, 6)], + }; +} + /** * Maps a point to a noir point. * @param point - The point. @@ -1598,6 +1632,123 @@ export function mapFeeRecipientFromNoir(feeRecipient: FeeRecipientNoir): FeeReci return new FeeRecipient(mapEthAddressFromNoir(feeRecipient.recipient), mapFieldFromNoir(feeRecipient.value)); } +/** + * Maps poseidon sponge to noir. + * @param sponge - The circuits.js poseidon sponge. + * @returns The noir poseidon sponge. + */ +export function mapPoseidon2SpongeToNoir(sponge: Poseidon2Sponge): Poseidon2SpongeNoir { + return { + cache: mapTuple(sponge.cache, mapFieldToNoir), + state: mapTuple(sponge.state, mapFieldToNoir), + cache_size: mapNumberToNoir(sponge.cacheSize), + squeeze_mode: sponge.squeezeMode, + }; +} + +/** + * Maps poseidon sponge from noir. + * @param sponge - The noir poseidon sponge. + * @returns The circuits.js poseidon sponge. + */ +export function mapPoseidon2SpongeFromNoir(sponge: Poseidon2SpongeNoir): Poseidon2Sponge { + return new Poseidon2Sponge( + mapTupleFromNoir(sponge.cache, 3, mapFieldFromNoir), + mapTupleFromNoir(sponge.state, 4, mapFieldFromNoir), + mapNumberFromNoir(sponge.cache_size), + sponge.squeeze_mode, + ); +} + +/** + * Maps sponge blob to noir. + * @param spongeBlob - The circuits.js sponge blob. + * @returns The noir sponge blob. + */ +export function mapSpongeBlobToNoir(spongeBlob: SpongeBlob): SpongeBlobNoir { + return { + sponge: mapPoseidon2SpongeToNoir(spongeBlob.sponge), + fields: mapNumberToNoir(spongeBlob.fields), + expected_fields: mapNumberToNoir(spongeBlob.expectedFields), + }; +} + +/** + * Maps sponge blob from noir. + * @param spongeBlob - The noir sponge blob. + * @returns The circuits.js sponge blob. + */ +export function mapSpongeBlobFromNoir(spongeBlob: SpongeBlobNoir): SpongeBlob { + return new SpongeBlob( + mapPoseidon2SpongeFromNoir(spongeBlob.sponge), + mapNumberFromNoir(spongeBlob.fields), + mapNumberFromNoir(spongeBlob.expected_fields), + ); +} + +/** + * Maps blob commitment to noir. + * @param commitment - The circuits.js commitment. + * @returns The noir commitment. + */ +export function mapBlobCommitmentToNoir(commitment: [Fr, Fr]): BlobCommitmentNoir { + return { + inner: mapTuple(commitment, mapFieldToNoir), + }; +} + +/** + * Maps blob public inputs to noir. + * @param blobPublicInputs - The circuits.js blob public inputs. + * @returns The noir blob public inputs. + */ +export function mapBlobPublicInputsToNoir(blobPublicInputs: BlobPublicInputs): BlobPublicInputsNoir { + return { + z: mapFieldToNoir(blobPublicInputs.z), + y: mapBLS12BigNumToNoir(blobPublicInputs.y), + kzg_commitment: mapBlobCommitmentToNoir(blobPublicInputs.kzgCommitment), + }; +} + +/** + * Maps blob public inputs from noir. + * @param blobPublicInputs - The noir blob public inputs. + * @returns The circuits.js blob public inputs. + */ +export function mapBlobPublicInputsFromNoir(blobPublicInputs: BlobPublicInputsNoir): BlobPublicInputs { + return new BlobPublicInputs( + mapFieldFromNoir(blobPublicInputs.z), + mapBLS12BigNumFromNoir(blobPublicInputs.y), + mapTupleFromNoir(blobPublicInputs.kzg_commitment.inner, 2, mapFieldFromNoir), + ); +} + +/** + * Maps block blob public inputs to noir. + * @param blockBlobPublicInputs - The circuits.js block blob public inputs. + * @returns The noir block blob public inputs. + */ +export function mapBlockBlobPublicInputsToNoir( + blockBlobPublicInputs: BlockBlobPublicInputs, +): BlockBlobPublicInputsNoir { + return { + inner: mapTuple(blockBlobPublicInputs.inner, mapBlobPublicInputsToNoir), + }; +} + +/** + * Maps block blob public inputs from noir. + * @param blockBlobPublicInputs - The noir block blob public inputs. + * @returns The circuits.js block blob public inputs. + */ +export function mapBlockBlobPublicInputsFromNoir( + blockBlobPublicInputs: BlockBlobPublicInputsNoir, +): BlockBlobPublicInputs { + return new BlockBlobPublicInputs( + mapTupleFromNoir(blockBlobPublicInputs.inner, BLOBS_PER_BLOCK, mapBlobPublicInputsFromNoir), + ); +} + /** * Maps a constant rollup data to a noir constant rollup data. * @param constantRollupData - The circuits.js constant rollup data. @@ -1640,7 +1791,8 @@ export function mapBaseOrMergeRollupPublicInputsToNoir( constants: mapConstantRollupDataToNoir(baseOrMergeRollupPublicInputs.constants), start: mapPartialStateReferenceToNoir(baseOrMergeRollupPublicInputs.start), end: mapPartialStateReferenceToNoir(baseOrMergeRollupPublicInputs.end), - txs_effects_hash: mapFieldToNoir(baseOrMergeRollupPublicInputs.txsEffectsHash), + start_sponge_blob: mapSpongeBlobToNoir(baseOrMergeRollupPublicInputs.startSpongeBlob), + end_sponge_blob: mapSpongeBlobToNoir(baseOrMergeRollupPublicInputs.endSpongeBlob), out_hash: mapFieldToNoir(baseOrMergeRollupPublicInputs.outHash), accumulated_fees: mapFieldToNoir(baseOrMergeRollupPublicInputs.accumulatedFees), }; @@ -1666,6 +1818,7 @@ export function mapBlockRootOrBlockMergePublicInputsToNoir( vk_tree_root: mapFieldToNoir(blockRootOrBlockMergePublicInputs.vkTreeRoot), protocol_contract_tree_root: mapFieldToNoir(blockRootOrBlockMergePublicInputs.protocolContractTreeRoot), prover_id: mapFieldToNoir(blockRootOrBlockMergePublicInputs.proverId), + blob_public_inputs: mapTuple(blockRootOrBlockMergePublicInputs.blobPublicInputs, mapBlockBlobPublicInputsToNoir), }; } @@ -1712,7 +1865,8 @@ export function mapBaseOrMergeRollupPublicInputsFromNoir( mapConstantRollupDataFromNoir(baseOrMergeRollupPublicInputs.constants), mapPartialStateReferenceFromNoir(baseOrMergeRollupPublicInputs.start), mapPartialStateReferenceFromNoir(baseOrMergeRollupPublicInputs.end), - mapFieldFromNoir(baseOrMergeRollupPublicInputs.txs_effects_hash), + mapSpongeBlobFromNoir(baseOrMergeRollupPublicInputs.start_sponge_blob), + mapSpongeBlobFromNoir(baseOrMergeRollupPublicInputs.end_sponge_blob), mapFieldFromNoir(baseOrMergeRollupPublicInputs.out_hash), mapFieldFromNoir(baseOrMergeRollupPublicInputs.accumulated_fees), ); @@ -1738,6 +1892,11 @@ export function mapBlockRootOrBlockMergePublicInputsFromNoir( mapFieldFromNoir(blockRootOrBlockMergePublicInputs.vk_tree_root), mapFieldFromNoir(blockRootOrBlockMergePublicInputs.protocol_contract_tree_root), mapFieldFromNoir(blockRootOrBlockMergePublicInputs.prover_id), + mapTupleFromNoir( + blockRootOrBlockMergePublicInputs.blob_public_inputs, + AZTEC_MAX_EPOCH_DURATION, + mapBlockBlobPublicInputsFromNoir, + ), ); } @@ -1837,6 +1996,10 @@ export function mapBlockRootRollupInputsToNoir(rootRollupInputs: BlockRootRollup new_archive_sibling_path: mapTuple(rootRollupInputs.newArchiveSiblingPath, mapFieldToNoir), previous_block_hash: mapFieldToNoir(rootRollupInputs.previousBlockHash), prover_id: mapFieldToNoir(rootRollupInputs.proverId), + // @ts-expect-error - below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)' + blobs_fields: mapTuple(rootRollupInputs.blobFields, mapFieldToNoir), + blob_commitments: mapTuple(rootRollupInputs.blobCommitments, mapBlobCommitmentToNoir), + blobs_hash: mapFieldToNoir(rootRollupInputs.blobsHash), }; } @@ -1915,6 +2078,11 @@ export function mapRootRollupPublicInputsFromNoir( mapFieldFromNoir(rootRollupPublicInputs.vk_tree_root), mapFieldFromNoir(rootRollupPublicInputs.protocol_contract_tree_root), mapFieldFromNoir(rootRollupPublicInputs.prover_id), + mapTupleFromNoir( + rootRollupPublicInputs.blob_public_inputs, + AZTEC_MAX_EPOCH_DURATION, + mapBlockBlobPublicInputsFromNoir, + ), ); } @@ -1968,7 +2136,7 @@ export function mapHeaderFromNoir(header: HeaderNoir): Header { export function mapContentCommitmentToNoir(contentCommitment: ContentCommitment): ContentCommitmentNoir { return { num_txs: mapFieldToNoir(contentCommitment.numTxs), - txs_effects_hash: mapSha256HashToNoir(contentCommitment.txsEffectsHash), + blobs_hash: mapSha256HashToNoir(contentCommitment.blobsHash), in_hash: mapSha256HashToNoir(contentCommitment.inHash), out_hash: mapSha256HashToNoir(contentCommitment.outHash), }; @@ -1981,7 +2149,7 @@ export function mapContentCommitmentToNoir(contentCommitment: ContentCommitment) export function mapContentCommitmentFromNoir(contentCommitment: ContentCommitmentNoir): ContentCommitment { return new ContentCommitment( mapFieldFromNoir(contentCommitment.num_txs), - mapSha256HashFromNoir(contentCommitment.txs_effects_hash), + mapSha256HashFromNoir(contentCommitment.blobs_hash), mapSha256HashFromNoir(contentCommitment.in_hash), mapSha256HashFromNoir(contentCommitment.out_hash), ); @@ -2208,8 +2376,8 @@ function mapPrivateTubeDataToNoir(data: PrivateTubeData): PrivateTubeDataNoir { export function mapPrivateBaseRollupInputsToNoir(inputs: PrivateBaseRollupInputs): PrivateBaseRollupInputsNoir { return { tube_data: mapPrivateTubeDataToNoir(inputs.tubeData), - start: mapPartialStateReferenceToNoir(inputs.hints.start), + start_sponge_blob: mapSpongeBlobToNoir(inputs.hints.startSpongeBlob), state_diff_hints: mapPrivateBaseStateDiffHintsToNoir(inputs.hints.stateDiffHints), archive_root_membership_witness: mapMembershipWitnessToNoir(inputs.hints.archiveRootMembershipWitness), @@ -2238,8 +2406,8 @@ export function mapPublicBaseRollupInputsToNoir(inputs: PublicBaseRollupInputs): return { tube_data: mapPublicTubeDataToNoir(inputs.tubeData), avm_proof_data: mapAvmProofDataToNoir(inputs.avmProofData), - start: mapPartialStateReferenceToNoir(inputs.hints.start), + start_sponge_blob: mapSpongeBlobToNoir(inputs.hints.startSpongeBlob), state_diff_hints: mapPublicBaseStateDiffHintsToNoir(inputs.hints.stateDiffHints), archive_root_membership_witness: mapMembershipWitnessToNoir(inputs.hints.archiveRootMembershipWitness), diff --git a/yarn-project/prover-client/src/mocks/test_context.ts b/yarn-project/prover-client/src/mocks/test_context.ts index ebecd07801a..8c94750da39 100644 --- a/yarn-project/prover-client/src/mocks/test_context.ts +++ b/yarn-project/prover-client/src/mocks/test_context.ts @@ -2,7 +2,6 @@ import { type BBProverConfig } from '@aztec/bb-prover'; import { type MerkleTreeWriteOperations, type ProcessedTx, - type ProcessedTxHandler, type PublicExecutionRequest, type ServerCircuitProver, type Tx, @@ -147,12 +146,7 @@ export class TestContext { } } - public async processPublicFunctions( - txs: Tx[], - maxTransactions: number, - txHandler?: ProcessedTxHandler, - txValidator?: TxValidator, - ) { + public async processPublicFunctions(txs: Tx[], maxTransactions: number, txValidator?: TxValidator) { const defaultExecutorImplementation = ( _stateManager: AvmPersistableStateManager, executionRequest: PublicExecutionRequest, @@ -177,7 +171,6 @@ export class TestContext { return await this.processPublicFunctionsWithMockExecutorImplementation( txs, maxTransactions, - txHandler, txValidator, defaultExecutorImplementation, ); @@ -186,7 +179,6 @@ export class TestContext { private async processPublicFunctionsWithMockExecutorImplementation( txs: Tx[], maxTransactions: number, - txHandler?: ProcessedTxHandler, txValidator?: TxValidator, executorMock?: ( stateManager: AvmPersistableStateManager, @@ -214,6 +206,6 @@ export class TestContext { if (executorMock) { simulateInternal.mockImplementation(executorMock); } - return await this.publicProcessor.process(txs, maxTransactions, txHandler, txValidator); + return await this.publicProcessor.process(txs, maxTransactions, txValidator); } } diff --git a/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts b/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts index 121d13a00d2..889605aece6 100644 --- a/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts +++ b/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts @@ -45,15 +45,17 @@ import { PublicDataTreeLeafPreimage, type RecursiveProof, RootRollupInputs, + type SpongeBlob, StateReference, VK_TREE_HEIGHT, type VerificationKeyAsFields, } from '@aztec/circuits.js'; import { makeTuple } from '@aztec/foundation/array'; +import { Blob } from '@aztec/foundation/blob'; import { padArrayEnd } from '@aztec/foundation/collection'; import { sha256Trunc } from '@aztec/foundation/crypto'; import { type DebugLogger } from '@aztec/foundation/log'; -import { type Tuple, assertLength, toFriendlyJSON } from '@aztec/foundation/serialize'; +import { type Tuple, assertLength, serializeToBuffer, toFriendlyJSON } from '@aztec/foundation/serialize'; import { computeUnbalancedMerkleRoot } from '@aztec/foundation/trees'; import { getVKIndex, getVKSiblingPath, getVKTreeRoot } from '@aztec/noir-protocol-circuits-types'; import { protocolContractTreeRoot } from '@aztec/protocol-contracts'; @@ -76,6 +78,7 @@ export async function buildBaseRollupHints( tx: ProcessedTx, globalVariables: GlobalVariables, db: MerkleTreeWriteOperations, + startSpongeBlob: SpongeBlob, ) { // Get trees info before any changes hit const constants = await getConstantRollupData(globalVariables, db); @@ -139,6 +142,10 @@ export async function buildBaseRollupHints( i < nullifierSubtreeSiblingPathArray.length ? nullifierSubtreeSiblingPathArray[i] : Fr.ZERO, ); + // Append new data to startSpongeBlob + const inputSpongeBlob = startSpongeBlob.clone(); + startSpongeBlob.absorb(tx.txEffect.toBlobFields()); + if (tx.avmProvingRequest) { // Build public base rollup hints const stateDiffHints = PublicBaseStateDiffHints.from({ @@ -183,6 +190,7 @@ export async function buildBaseRollupHints( return PublicBaseRollupHints.from({ start, + startSpongeBlob: inputSpongeBlob, stateDiffHints, feePayerFeeJuiceBalanceReadHint: feePayerFeeJuiceBalanceReadHint, archiveRootMembershipWitness, @@ -236,6 +244,7 @@ export async function buildBaseRollupHints( return PrivateBaseRollupHints.from({ start, + startSpongeBlob: inputSpongeBlob, stateDiffHints, feePayerFeeJuiceBalanceReadHint: feePayerFeeJuiceBalanceReadHint, archiveRootMembershipWitness, @@ -301,11 +310,10 @@ export function buildHeaderFromCircuitOutputs( updatedL1ToL2TreeSnapshot: AppendOnlyTreeSnapshot, logger?: DebugLogger, ) { + const blobsHash = rootRollupOutputs.blobPublicInputs[0].getBlobsHash(); const contentCommitment = new ContentCommitment( new Fr(previousMergeData[0].numTxs + previousMergeData[1].numTxs), - sha256Trunc( - Buffer.concat([previousMergeData[0].txsEffectsHash.toBuffer(), previousMergeData[1].txsEffectsHash.toBuffer()]), - ), + blobsHash, parityPublicInputs.shaRoot.toBuffer(), sha256Trunc(Buffer.concat([previousMergeData[0].outHash.toBuffer(), previousMergeData[1].outHash.toBuffer()])), ); @@ -356,10 +364,11 @@ export async function buildHeaderFromTxEffects( const parityShaRoot = new MerkleTreeCalculator(parityHeight, Fr.ZERO.toBuffer(), hasher).computeTreeRoot( l1ToL2Messages.map(msg => msg.toBuffer()), ); + const blobsHash = getBlobsHashFromBlobs(Blob.getBlobs(body.toBlobFields())); const contentCommitment = new ContentCommitment( new Fr(body.numberOfTxsIncludingPadded), - body.getTxsEffectsHash(), + blobsHash, parityShaRoot, outHash, ); @@ -368,6 +377,11 @@ export async function buildHeaderFromTxEffects( return new Header(previousArchive, contentCommitment, stateReference, globalVariables, fees); } +export function getBlobsHashFromBlobs(inputs: Blob[]): Buffer { + const blobHashes = serializeToBuffer(inputs.map(b => b.getEthVersionedBlobHash())); + return sha256Trunc(serializeToBuffer(blobHashes)); +} + // Validate that the roots of all local trees match the output of the root circuit simulation export async function validateBlockRootOutput( blockRootOutput: BlockRootOrBlockMergePublicInputs, diff --git a/yarn-project/prover-client/src/orchestrator/block-proving-state.ts b/yarn-project/prover-client/src/orchestrator/block-proving-state.ts index fd6b3626ca1..75f7afa809a 100644 --- a/yarn-project/prover-client/src/orchestrator/block-proving-state.ts +++ b/yarn-project/prover-client/src/orchestrator/block-proving-state.ts @@ -14,6 +14,7 @@ import { type RECURSIVE_PROOF_LENGTH, type RecursiveProof, type RootParityInput, + SpongeBlob, type VerificationKeyAsFields, } from '@aztec/circuits.js'; import { type Tuple } from '@aztec/foundation/serialize'; @@ -44,12 +45,13 @@ export class BlockProvingState { public blockRootRollupStarted: boolean = false; public finalProof: Proof | undefined; public block: L2Block | undefined; + public spongeBlobState: SpongeBlob | undefined = undefined; + public totalNumTxs: number | undefined; private txs: TxProvingState[] = []; public error: string | undefined; constructor( public readonly index: number, - public readonly totalNumTxs: number, public readonly globalVariables: GlobalVariables, public readonly newL1ToL2Messages: Tuple, public readonly messageTreeSnapshot: AppendOnlyTreeSnapshot, @@ -69,7 +71,7 @@ export class BlockProvingState { // Returns the number of levels of merge rollups public get numMergeLevels() { - return BigInt(Math.ceil(Math.log2(this.totalNumTxs)) - 1); + return BigInt(Math.ceil(Math.log2(this.totalNumTxs!)) - 1); } // Calculates the index and level of the parent rollup circuit @@ -83,7 +85,7 @@ export class BlockProvingState { index >>= 1n; return { thisLevelSize: levelSize, thisIndex: index, shiftUp: nodeToShift }; }; - let [thisLevelSize, shiftUp] = this.totalNumTxs & 1 ? [this.totalNumTxs - 1, true] : [this.totalNumTxs, false]; + let [thisLevelSize, shiftUp] = this.totalNumTxs! & 1 ? [this.totalNumTxs! - 1, true] : [this.totalNumTxs!, false]; const maxLevel = this.numMergeLevels + 1n; let placeholder = currentIndex; for (let i = 0; i < maxLevel - currentLevel; i++) { @@ -98,8 +100,21 @@ export class BlockProvingState { return [mergeLevel - 1n, thisIndex >> 1n, thisIndex & 1n]; } + public startNewBlock(numTxs: number, numBlobFields: number) { + if (this.spongeBlobState) { + throw new Error(`Must end previous block before starting a new one`); + } + // Initialise the sponge which will eventually absorb all tx effects to be added to the blob. + // Like l1 to l2 messages, we need to know beforehand how many effects will be absorbed. + this.spongeBlobState = SpongeBlob.init(numBlobFields); + this.totalNumTxs = numTxs; + } + // Adds a transaction to the proving state, returns it's index public addNewTx(tx: TxProvingState) { + if (!this.spongeBlobState) { + throw new Error(`Invalid block proving state, call startNewBlock before adding transactions.`); + } this.txs.push(tx); return this.txs.length - 1; } @@ -199,11 +214,6 @@ export class BlockProvingState { return this.rootParityInputs.findIndex(p => !p) === -1; } - // Returns true if we are still able to accept transactions, false otherwise - public isAcceptingTransactions() { - return this.totalNumTxs > this.txs.length; - } - // Returns whether the proving state is still valid public verifyState() { return this.parentEpoch.verifyState(); diff --git a/yarn-project/prover-client/src/orchestrator/epoch-proving-state.ts b/yarn-project/prover-client/src/orchestrator/epoch-proving-state.ts index a13a8d600dc..a2793bb54ea 100644 --- a/yarn-project/prover-client/src/orchestrator/epoch-proving-state.ts +++ b/yarn-project/prover-client/src/orchestrator/epoch-proving-state.ts @@ -101,7 +101,6 @@ export class EpochProvingState { // Adds a block to the proving state, returns its index // Will update the proving life cycle if this is the last block public startNewBlock( - numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[], messageTreeSnapshot: AppendOnlyTreeSnapshot, @@ -113,7 +112,6 @@ export class EpochProvingState { ) { const block = new BlockProvingState( this.blocks.length, - numTxs, globalVariables, padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP), messageTreeSnapshot, diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator.ts b/yarn-project/prover-client/src/orchestrator/orchestrator.ts index 84cfa185945..6acb7833e52 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator.ts @@ -6,6 +6,7 @@ import { type ServerCircuitProver, type TxEffect, makeEmptyProcessedTx, + toNumBlobFields, } from '@aztec/circuit-types'; import { type EpochProver, @@ -16,12 +17,15 @@ import { type CircuitName } from '@aztec/circuit-types/stats'; import { AVM_PROOF_LENGTH_IN_FIELDS, AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, + BLOBS_PER_BLOCK, type BaseOrMergeRollupPublicInputs, BaseParityInputs, type BaseRollupHints, + BlobPublicInputs, type BlockRootOrBlockMergePublicInputs, BlockRootRollupInputs, EmptyBlockRootRollupInputs, + FIELDS_PER_BLOB, Fr, type GlobalVariables, type Header, @@ -40,7 +44,9 @@ import { makeEmptyRecursiveProof, } from '@aztec/circuits.js'; import { makeTuple } from '@aztec/foundation/array'; +import { Blob } from '@aztec/foundation/blob'; import { padArrayEnd } from '@aztec/foundation/collection'; +import { sha256ToField } from '@aztec/foundation/crypto'; import { AbortError } from '@aztec/foundation/error'; import { createDebugLogger } from '@aztec/foundation/log'; import { promiseWithResolvers } from '@aztec/foundation/promise'; @@ -138,17 +144,14 @@ export class ProvingOrchestrator implements EpochProver { /** * Starts off a new block - * @param numTxs - The total number of transactions in the block. * @param globalVariables - The global variables for the block * @param l1ToL2Messages - The l1 to l2 messages for the block - * @param verificationKeys - The private kernel verification keys * @returns A proving ticket, containing a promise notifying of proving completion */ - @trackSpan('ProvingOrchestrator.startNewBlock', (numTxs, globalVariables) => ({ - [Attributes.BLOCK_SIZE]: numTxs, + @trackSpan('ProvingOrchestrator.startNewBlock', globalVariables => ({ [Attributes.BLOCK_NUMBER]: globalVariables.blockNumber.toNumber(), })) - public async startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]) { + public async startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[]) { if (!this.provingState) { throw new Error(`Invalid proving state, call startNewEpoch before starting a block`); } @@ -157,10 +160,6 @@ export class ProvingOrchestrator implements EpochProver { throw new Error(`Epoch not accepting further blocks`); } - if (!Number.isInteger(numTxs) || numTxs < 2) { - throw new Error(`Invalid number of txs for block (got ${numTxs})`); - } - if (this.provingState.currentBlock && !this.provingState.currentBlock.block) { throw new Error(`Must end previous block before starting a new one`); } @@ -175,9 +174,7 @@ export class ProvingOrchestrator implements EpochProver { ); } - logger.info( - `Starting block ${globalVariables.blockNumber} for slot ${globalVariables.slotNumber} with ${numTxs} transactions`, - ); + logger.info(`Starting block ${globalVariables.blockNumber} for slot ${globalVariables.slotNumber}`); // we start the block by enqueueing all of the base parity circuits let baseParityInputs: BaseParityInputs[] = []; @@ -219,7 +216,6 @@ export class ProvingOrchestrator implements EpochProver { ); this.provingState!.startNewBlock( - numTxs, globalVariables, l1ToL2MessagesPadded, messageTreeSnapshot, @@ -237,38 +233,41 @@ export class ProvingOrchestrator implements EpochProver { } /** - * The interface to add a simulated transaction to the scheduler - * @param tx - The transaction to be proven + * The interface to add simulated transactions to the scheduler + * @param txs - The transactions to be proven */ - @trackSpan('ProvingOrchestrator.addNewTx', tx => ({ - [Attributes.TX_HASH]: tx.hash.toString(), + @trackSpan('ProvingOrchestrator.addTxs', txs => ({ + [Attributes.BLOCK_TXS_COUNT]: txs.length, })) - public async addNewTx(tx: ProcessedTx): Promise { + public async addTxs(txs: ProcessedTx[]): Promise { const provingState = this?.provingState?.currentBlock; if (!provingState) { throw new Error(`Invalid proving state, call startNewBlock before adding transactions`); } - if (!provingState.isAcceptingTransactions()) { - throw new Error(`Rollup not accepting further transactions`); - } - - if (!provingState.verifyState()) { - throw new Error(`Invalid proving state when adding a tx`); - } + const numBlobFields = toNumBlobFields(txs); + provingState.startNewBlock(Math.max(2, txs.length), numBlobFields); - validateTx(tx); + logger.info( + `Adding ${txs.length} transactions with ${numBlobFields} effects to block ${provingState?.blockNumber}`, + ); + for (const tx of txs) { + if (!provingState.verifyState()) { + throw new Error(`Invalid proving state when adding a tx`); + } - logger.info(`Received transaction: ${tx.hash}`); + validateTx(tx); - if (tx.isEmpty) { - logger.warn(`Ignoring empty transaction ${tx.hash} - it will not be added to this block`); - return; - } + logger.info(`Received transaction: ${tx.hash}`); - const [hints, treeSnapshots] = await this.prepareTransaction(tx, provingState); - this.enqueueFirstProofs(hints, treeSnapshots, tx, provingState); + if (tx.isEmpty) { + logger.warn(`Ignoring empty transaction ${tx.hash} - it will not be added to this block`); + return; + } + const [hints, treeSnapshots] = await this.prepareTransaction(tx, provingState); + this.enqueueFirstProofs(hints, treeSnapshots, tx, provingState); + } if (provingState.transactionsReceived === provingState.totalNumTxs) { logger.verbose(`All transactions received for block ${provingState.globalVariables.blockNumber}.`); } @@ -279,7 +278,7 @@ export class ProvingOrchestrator implements EpochProver { * Computes the block header and updates the archive tree. */ @trackSpan('ProvingOrchestrator.setBlockCompleted', function () { - const block = this.provingState?.currentBlock; + const block: BlockProvingState | undefined = this.provingState?.currentBlock; if (!block) { return {}; } @@ -291,7 +290,7 @@ export class ProvingOrchestrator implements EpochProver { }) public async setBlockCompleted(expectedHeader?: Header): Promise { const provingState = this.provingState?.currentBlock; - if (!provingState) { + if (!provingState || !provingState.totalNumTxs) { throw new Error(`Invalid proving state, call startNewBlock before adding transactions or completing the block`); } @@ -442,14 +441,6 @@ export class ProvingOrchestrator implements EpochProver { const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db); const l2Block = new L2Block(newArchive, header, body); - if (!l2Block.body.getTxsEffectsHash().equals(header.contentCommitment.txsEffectsHash)) { - throw new Error( - `Txs effects hash mismatch, ${l2Block.body - .getTxsEffectsHash() - .toString('hex')} == ${header.contentCommitment.txsEffectsHash.toString('hex')} `, - ); - } - logger.verbose(`Orchestrator finalised block ${l2Block.number}`); provingState.block = l2Block; } @@ -559,6 +550,22 @@ export class ProvingOrchestrator implements EpochProver { ); } + /** + * Collect all new nullifiers, commitments, and contracts from all txs in a block + * @returns The array of non empty tx effects. + */ + private extractTxEffects(provingState: BlockProvingState) { + // Note: this check should ensure that we have all txs and their effects ready. + if (!provingState.finalRootParityInput?.publicInputs.shaRoot) { + throw new Error(`Invalid proving state, a block must be ready to be proven before its effects can be extracted.`); + } + const nonEmptyTxEffects: TxEffect[] = provingState.allTxs + .map(txProvingState => txProvingState.processedTx.txEffect) + .filter(txEffect => !txEffect.isEmpty()); + + return nonEmptyTxEffects; + } + /** * Returns the proof for the current epoch. */ @@ -692,14 +699,16 @@ export class ProvingOrchestrator implements EpochProver { provingState: BlockProvingState | undefined, tx: ProcessedTx, ): Promise<[BaseRollupHints, TreeSnapshots] | undefined> { - if (!provingState?.verifyState()) { + if (!provingState?.verifyState() || !provingState.spongeBlobState) { logger.debug('Not preparing base rollup inputs, state invalid'); return; } // We build the base rollup inputs using a mock proof and verification key. // These will be overwritten later once we have proven the tube circuit and any public kernels - const [ms, hints] = await elapsed(buildBaseRollupHints(tx, provingState.globalVariables, this.db)); + const [ms, hints] = await elapsed( + buildBaseRollupHints(tx, provingState.globalVariables, this.db, provingState.spongeBlobState), + ); if (!tx.isEmpty) { this.metrics.recordBaseRollupInputs(ms); @@ -772,7 +781,7 @@ export class ProvingOrchestrator implements EpochProver { ); } - // Enqueues the tub circuit for a given transaction index + // Enqueues the tube circuit for a given transaction index // Once completed, will enqueue the next circuit, either a public kernel or the base rollup private enqueueTube(provingState: BlockProvingState, txIndex: number) { if (!provingState?.verifyState()) { @@ -854,9 +863,14 @@ export class ProvingOrchestrator implements EpochProver { provingState.blockRootRollupStarted = true; const mergeInputData = provingState.getMergeInputs(0); const rootParityInput = provingState.finalRootParityInput!; + const blobFields = this.extractTxEffects(provingState) + .map(tx => tx.toBlobFields()) + .flat(); + const blobs = Blob.getBlobs(blobFields); + const blobsHash = sha256ToField(blobs.map(b => b.getEthVersionedBlobHash())); logger.debug( - `Enqueuing block root rollup for block ${provingState.blockNumber} with ${provingState.newL1ToL2Messages.length} l1 to l2 msgs`, + `Enqueuing block root rollup for block ${provingState.blockNumber} with ${provingState.newL1ToL2Messages.length} l1 to l2 msgs and ${blobs.length} blobs.`, ); const previousRollupData: BlockRootRollupInputs['previousRollupData'] = makeTuple(2, i => @@ -877,6 +891,13 @@ export class ProvingOrchestrator implements EpochProver { newArchiveSiblingPath: provingState.archiveTreeRootSiblingPath, previousBlockHash: provingState.previousBlockHash, proverId: this.proverId, + blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_BLOCK), + blobCommitments: padArrayEnd( + blobs.map(b => b.commitmentToFields()), + [Fr.ZERO, Fr.ZERO], + BLOBS_PER_BLOCK, + ), + blobsHash: blobsHash, }); this.deferredProving( @@ -901,6 +922,17 @@ export class ProvingOrchestrator implements EpochProver { provingState.blockRootRollupPublicInputs = result.inputs; provingState.finalProof = result.proof.binaryProof; + const blobOutputs = result.inputs.blobPublicInputs[0]; + blobOutputs.inner.forEach((blobOutput, i) => { + if (!blobOutput.isEmpty() && !blobOutput.equals(BlobPublicInputs.fromBlob(blobs[i]))) { + throw new Error( + `Rollup circuits produced mismatched blob evaluation: + z: ${blobOutput.z} == ${blobs[i].challengeZ}, + y: ${blobOutput.y.toString(16)} == ${blobs[i].evaluationY.toString('hex')}, + C: ${blobOutput.kzgCommitment} == ${blobs[i].commitmentToFields()}`, + ); + } + }); logger.debug(`Completed proof for block root rollup for ${provingState.block?.number}`); // validatePartialState(result.inputs.end, tx.treeSnapshots); // TODO(palla/prover) diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts index 56bb5996868..765249b814a 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts @@ -37,14 +37,11 @@ describe('prover/orchestrator/errors', () => { ]; context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(txs.length, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); + await context.orchestrator.addTxs(txs); - for (const tx of txs) { - await context.orchestrator.addNewTx(tx); - } - - await expect(async () => await context.orchestrator.addNewTx(makeEmptyProcessedTestTx())).rejects.toThrow( - 'Rollup not accepting further transactions', + await expect(async () => await context.orchestrator.addTxs([makeEmptyProcessedTestTx()])).rejects.toThrow( + 'Must end previous block before starting a new one', ); const block = await context.orchestrator.setBlockCompleted(); @@ -54,23 +51,24 @@ describe('prover/orchestrator/errors', () => { it('throws if adding too many blocks', async () => { context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(2, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); + await context.orchestrator.addTxs([]); await context.orchestrator.setBlockCompleted(); - await expect( - async () => await context.orchestrator.startNewBlock(2, context.globalVariables, []), - ).rejects.toThrow('Epoch not accepting further blocks'); + await expect(async () => await context.orchestrator.startNewBlock(context.globalVariables, [])).rejects.toThrow( + 'Epoch not accepting further blocks', + ); }); it('throws if adding a transaction before starting epoch', async () => { - await expect(async () => await context.orchestrator.addNewTx(makeEmptyProcessedTestTx())).rejects.toThrow( + await expect(async () => await context.orchestrator.addTxs([makeEmptyProcessedTestTx()])).rejects.toThrow( `Invalid proving state, call startNewBlock before adding transactions`, ); }); it('throws if adding a transaction before starting block', async () => { context.orchestrator.startNewEpoch(1, 1); - await expect(async () => await context.orchestrator.addNewTx(makeEmptyProcessedTestTx())).rejects.toThrow( + await expect(async () => await context.orchestrator.addTxs([makeEmptyProcessedTestTx()])).rejects.toThrow( `Invalid proving state, call startNewBlock before adding transactions`, ); }); @@ -84,32 +82,22 @@ describe('prover/orchestrator/errors', () => { it('throws if setting an incomplete block as completed', async () => { context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(3, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); await expect(async () => await context.orchestrator.setBlockCompleted()).rejects.toThrow( - `Block not ready for completion: expecting ${3} more transactions.`, + `Invalid proving state, call startNewBlock before adding transactions or completing the block`, ); }); it('throws if adding to a cancelled block', async () => { context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(2, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); context.orchestrator.cancel(); - await expect(async () => await context.orchestrator.addNewTx(makeEmptyProcessedTestTx())).rejects.toThrow( + await expect(async () => await context.orchestrator.addTxs([makeEmptyProcessedTestTx()])).rejects.toThrow( 'Invalid proving state when adding a tx', ); }); - it.each([[-4], [0], [1], [8.1]] as const)( - 'fails to start a block with %i transactions', - async (blockSize: number) => { - context.orchestrator.startNewEpoch(1, 1); - await expect( - async () => await context.orchestrator.startNewBlock(blockSize, context.globalVariables, []), - ).rejects.toThrow(`Invalid number of txs for block (got ${blockSize})`); - }, - ); - it.each([[-4], [0], [8.1]] as const)('fails to start an epoch with %i blocks', (epochSize: number) => { context.orchestrator.startNewEpoch(1, 1); expect(() => context.orchestrator.startNewEpoch(1, epochSize)).toThrow( @@ -121,7 +109,7 @@ describe('prover/orchestrator/errors', () => { const l1ToL2Messages = new Array(100).fill(new Fr(0n)); context.orchestrator.startNewEpoch(1, 1); await expect( - async () => await context.orchestrator.startNewBlock(2, context.globalVariables, l1ToL2Messages), + async () => await context.orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages), ).rejects.toThrow('Too many L1 to L2 messages'); }); }); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_failures.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_failures.test.ts index 40dd1b10901..e8536d8aeb3 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_failures.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_failures.test.ts @@ -56,15 +56,13 @@ describe('prover/orchestrator/failures', () => { const msgs = [new Fr(i + 100)]; // these operations could fail if the target circuit fails before adding all blocks or txs try { - await orchestrator.startNewBlock(txs.length, globalVariables, msgs); + await orchestrator.startNewBlock(globalVariables, msgs); let allTxsAdded = true; - for (const tx of txs) { - try { - await orchestrator.addNewTx(tx); - } catch (err) { - allTxsAdded = false; - break; - } + try { + await orchestrator.addTxs(txs); + } catch (err) { + allTxsAdded = false; + break; } if (!allTxsAdded) { diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_lifecycle.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_lifecycle.test.ts index ba76c3d0c23..3fe53076c69 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_lifecycle.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_lifecycle.test.ts @@ -39,7 +39,7 @@ describe('prover/orchestrator/lifecycle', () => { }); orchestrator.startNewEpoch(1, 1); - await orchestrator.startNewBlock(2, makeGlobalVariables(1), []); + await orchestrator.startNewBlock(makeGlobalVariables(1), []); await sleep(1); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_mixed_blocks.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_mixed_blocks.test.ts index 9aa8a2e793e..1657472d97b 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_mixed_blocks.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_mixed_blocks.test.ts @@ -37,10 +37,8 @@ describe('prover/orchestrator/mixed-blocks', () => { const l1ToL2Messages = range(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 1 + 0x400).map(fr); context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(3, context.globalVariables, l1ToL2Messages); - for (const tx of txs) { - await context.orchestrator.addNewTx(tx); - } + await context.orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages); + await context.orchestrator.addTxs(txs); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); @@ -53,11 +51,9 @@ describe('prover/orchestrator/mixed-blocks', () => { const l1ToL2Messages = range(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 1 + 0x400).map(fr); context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(txs.length, context.globalVariables, l1ToL2Messages); + await context.orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages); - for (const tx of txs) { - await context.orchestrator.addNewTx(tx); - } + await context.orchestrator.addTxs(txs); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_multi_public_functions.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_multi_public_functions.test.ts index e805a15dd3b..181578f6418 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_multi_public_functions.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_multi_public_functions.test.ts @@ -1,4 +1,4 @@ -import { EmptyTxValidator, mockTx } from '@aztec/circuit-types'; +import { mockTx } from '@aztec/circuit-types'; import { times } from '@aztec/foundation/collection'; import { createDebugLogger } from '@aztec/foundation/log'; import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types'; @@ -41,20 +41,13 @@ describe('prover/orchestrator/public-functions', () => { } context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(numTransactions, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); - const [processed, failed] = await context.processPublicFunctions( - txs, - numTransactions, - undefined, - new EmptyTxValidator(), - ); + const [processed, failed] = await context.processPublicFunctions(txs, numTransactions); expect(processed.length).toBe(numTransactions); expect(failed.length).toBe(0); - for (const tx of processed) { - await context.orchestrator.addNewTx(tx); - } + await context.orchestrator.addTxs(processed); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts index 5919fa383bf..9a85103351d 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts @@ -36,12 +36,11 @@ describe('prover/orchestrator/multi-block', () => { const blockNum = i + 1000; const globals = makeGlobals(blockNum); - // This will need to be a 2 tx block - await context.orchestrator.startNewBlock(2, globals, []); + await context.orchestrator.startNewBlock(globals, []); - await context.orchestrator.addNewTx(tx); + await context.orchestrator.addTxs([tx]); - // we need to complete the block as we have not added a full set of txs + // Completing the block will set off padding tx logic, as we only have 1 tx const block = await context.orchestrator.setBlockCompleted(); header = block!.header; } diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_public_functions.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_public_functions.test.ts index 91c34a355f2..e6607fdbdc3 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_public_functions.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_public_functions.test.ts @@ -39,15 +39,13 @@ describe('prover/orchestrator/public-functions', () => { tx.data.constants.vkTreeRoot = getVKTreeRoot(); tx.data.constants.protocolContractTreeRoot = protocolContractTreeRoot; - const [processed, _] = await context.processPublicFunctions([tx], 1, undefined); + const [processed, _] = await context.processPublicFunctions([tx], 1); // This will need to be a 2 tx block context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(2, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); - for (const processedTx of processed) { - await context.orchestrator.addNewTx(processedTx); - } + await context.orchestrator.addTxs(processed); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts index 5c82382d054..4ef7b2bbfe1 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts @@ -2,7 +2,6 @@ import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/circuits.js'; import { fr } from '@aztec/circuits.js/testing'; import { range } from '@aztec/foundation/array'; import { createDebugLogger } from '@aztec/foundation/log'; -import { sleep } from '@aztec/foundation/sleep'; import { makeBloatedProcessedTxWithVKRoot } from '../mocks/fixtures.js'; import { TestContext } from '../mocks/test_context.js'; @@ -23,7 +22,9 @@ describe('prover/orchestrator/blocks', () => { describe('blocks', () => { it('builds an empty L2 block', async () => { context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(2, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); + + await context.orchestrator.addTxs([]); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); @@ -35,11 +36,9 @@ describe('prover/orchestrator/blocks', () => { // This will need to be a 2 tx block context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(2, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); - for (const tx of txs) { - await context.orchestrator.addNewTx(tx); - } + await context.orchestrator.addTxs(txs); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); @@ -57,12 +56,9 @@ describe('prover/orchestrator/blocks', () => { const l1ToL2Messages = range(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 1 + 0x400).map(fr); context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(txs.length, context.globalVariables, l1ToL2Messages); + await context.orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages); - for (const tx of txs) { - await context.orchestrator.addNewTx(tx); - await sleep(1000); - } + await context.orchestrator.addTxs(txs); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_workflow.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_workflow.test.ts index 7675933f239..31c8957f7ae 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_workflow.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_workflow.test.ts @@ -79,7 +79,7 @@ describe('prover/orchestrator', () => { }); orchestrator.startNewEpoch(1, 1); - await orchestrator.startNewBlock(2, globalVariables, [message]); + await orchestrator.startNewBlock(globalVariables, [message]); await sleep(10); expect(mockProver.getBaseParityProof).toHaveBeenCalledTimes(NUM_BASE_PARITY_PER_ROOT_PARITY); @@ -108,9 +108,12 @@ describe('prover/orchestrator', () => { it('waits for block to be completed before enqueueing block root proof', async () => { orchestrator.startNewEpoch(1, 1); - await orchestrator.startNewBlock(2, globalVariables, []); - await orchestrator.addNewTx(makeBloatedProcessedTxWithVKRoot(actualDb, 1)); - await orchestrator.addNewTx(makeBloatedProcessedTxWithVKRoot(actualDb, 2)); + const txs = [ + makeBloatedProcessedTxWithVKRoot(context.actualDb, 1), + makeBloatedProcessedTxWithVKRoot(actualDb, 2), + ]; + await orchestrator.startNewBlock(globalVariables, []); + await orchestrator.addTxs(txs); // wait for the block root proof to try to be enqueued await sleep(1000); diff --git a/yarn-project/prover-client/src/test/bb_prover_base_rollup.test.ts b/yarn-project/prover-client/src/test/bb_prover_base_rollup.test.ts index e8b644a8a26..5ab93d750a2 100644 --- a/yarn-project/prover-client/src/test/bb_prover_base_rollup.test.ts +++ b/yarn-project/prover-client/src/test/bb_prover_base_rollup.test.ts @@ -6,6 +6,7 @@ import { PrivateBaseRollupInputs, PrivateKernelEmptyInputData, PrivateTubeData, + SpongeBlob, VkWitnessData, } from '@aztec/circuits.js'; import { createDebugLogger } from '@aztec/foundation/log'; @@ -41,6 +42,7 @@ describe('prover/bb_prover/base-rollup', () => { const vkTreeRoot = getVKTreeRoot(); const tx = makeEmptyProcessedTx(header, chainId, version, vkTreeRoot, protocolContractTreeRoot); + const startSpongeBlob = SpongeBlob.init(tx.txEffect.toBlobFields().length); logger.verbose('Building empty private proof'); const privateInputs = new PrivateKernelEmptyInputData( @@ -59,7 +61,7 @@ describe('prover/bb_prover/base-rollup', () => { const tubeData = new PrivateTubeData(tubeProof.inputs, tubeProof.proof, vkData); - const baseRollupHints = await buildBaseRollupHints(tx, context.globalVariables, context.actualDb); + const baseRollupHints = await buildBaseRollupHints(tx, context.globalVariables, context.actualDb, startSpongeBlob); const baseRollupInputs = new PrivateBaseRollupInputs(tubeData, baseRollupHints as PrivateBaseRollupHints); logger.verbose('Proving base rollups'); diff --git a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts index ee3dc99956d..b0ef9763fee 100644 --- a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts +++ b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts @@ -53,11 +53,13 @@ describe('prover/bb_prover/full-rollup', () => { }); log.info(`Starting new block #${blockNum}`); - await context.orchestrator.startNewBlock(totalTxs, globals, l1ToL2Messages); + + await context.orchestrator.startNewBlock(globals, l1ToL2Messages); log.info(`Processing public functions`); - const [processed, failed] = await context.processPublicFunctions(txs, nonEmptyTxs, context.epochProver); + const [processed, failed] = await context.processPublicFunctions(txs, nonEmptyTxs); expect(processed.length).toBe(nonEmptyTxs); expect(failed.length).toBe(0); + await context.orchestrator.addTxs(processed); log.info(`Setting block as completed`); await context.orchestrator.setBlockCompleted(); @@ -99,13 +101,15 @@ describe('prover/bb_prover/full-rollup', () => { context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(numTransactions, context.globalVariables, l1ToL2Messages); + await context.orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages); - const [processed, failed] = await context.processPublicFunctions(txs, numTransactions, context.epochProver); + const [processed, failed] = await context.processPublicFunctions(txs, numTransactions); expect(processed.length).toBe(numTransactions); expect(failed.length).toBe(0); + await context.orchestrator.addTxs(processed); + await context.orchestrator.setBlockCompleted(); const result = await context.orchestrator.finaliseEpoch(); diff --git a/yarn-project/prover-node/src/job/epoch-proving-job.ts b/yarn-project/prover-node/src/job/epoch-proving-job.ts index c50e6682be4..7728c4e72ba 100644 --- a/yarn-project/prover-node/src/job/epoch-proving-job.ts +++ b/yarn-project/prover-node/src/job/epoch-proving-job.ts @@ -100,13 +100,13 @@ export class EpochProvingJob { uuid: this.uuid, ...globalVariables, }); - // Start block proving - await this.prover.startNewBlock(txCount, globalVariables, l1ToL2Messages); + await this.prover.startNewBlock(globalVariables, l1ToL2Messages); // Process public fns const publicProcessor = this.publicProcessorFactory.create(this.db, previousHeader, globalVariables); - await this.processTxs(publicProcessor, txs, txCount); + const processed = await this.processTxs(publicProcessor, txs, txCount); + await this.prover.addTxs(processed); this.log.verbose(`Processed all txs for block`, { blockNumber: block.number, blockHash: block.hash().toString(), @@ -170,12 +170,7 @@ export class EpochProvingJob { txs: Tx[], totalNumberOfTxs: number, ): Promise { - const [processedTxs, failedTxs] = await publicProcessor.process( - txs, - totalNumberOfTxs, - this.prover, - new EmptyTxValidator(), - ); + const [processedTxs, failedTxs] = await publicProcessor.process(txs, totalNumberOfTxs, new EmptyTxValidator()); if (failedTxs.length) { throw new Error( diff --git a/yarn-project/sequencer-client/src/block_builder/light.test.ts b/yarn-project/sequencer-client/src/block_builder/light.test.ts index 43cbd91a83b..299a8bd77e1 100644 --- a/yarn-project/sequencer-client/src/block_builder/light.test.ts +++ b/yarn-project/sequencer-client/src/block_builder/light.test.ts @@ -5,13 +5,21 @@ import { type ProcessedTx, type ServerCircuitProver, makeEmptyProcessedTx, + toNumBlobFields, } from '@aztec/circuit-types'; import { makeBloatedProcessedTx } from '@aztec/circuit-types/test'; import { + AZTEC_MAX_EPOCH_DURATION, type AppendOnlyTreeSnapshot, + BLOBS_PER_BLOCK, type BaseOrMergeRollupPublicInputs, BaseParityInputs, + BlockBlobPublicInputs, + BlockRootOrBlockMergePublicInputs, BlockRootRollupInputs, + EthAddress, + FIELDS_PER_BLOB, + FeeRecipient, Fr, type GlobalVariables, L1_TO_L2_MSG_SUBTREE_HEIGHT, @@ -29,6 +37,7 @@ import { type RecursiveProof, RootParityInput, RootParityInputs, + SpongeBlob, TUBE_VK_INDEX, VK_TREE_HEIGHT, type VerificationKeyAsFields, @@ -36,7 +45,9 @@ import { makeEmptyRecursiveProof, } from '@aztec/circuits.js'; import { makeGlobalVariables } from '@aztec/circuits.js/testing'; +import { Blob } from '@aztec/foundation/blob'; import { padArrayEnd, times } from '@aztec/foundation/collection'; +import { sha256ToField } from '@aztec/foundation/crypto'; import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log'; import { type Tuple, assertLength } from '@aztec/foundation/serialize'; import { @@ -194,11 +205,8 @@ describe('LightBlockBuilder', () => { // Builds the block header using the ts block builder const buildHeader = async (txs: ProcessedTx[], l1ToL2Messages: Fr[]) => { - const txCount = Math.max(2, txs.length); - await builder.startNewBlock(txCount, globalVariables, l1ToL2Messages); - for (const tx of txs) { - await builder.addNewTx(tx); - } + await builder.startNewBlock(globalVariables, l1ToL2Messages); + await builder.addTxs(txs); const { header } = await builder.setBlockCompleted(); return header; }; @@ -235,7 +243,7 @@ describe('LightBlockBuilder', () => { const l1ToL2Snapshot = await getL1ToL2Snapshot(l1ToL2Messages); const parityOutput = await getParityOutput(l1ToL2Messages); const messageTreeSnapshot = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, expectsFork); - const rootOutput = await getBlockRootOutput(mergeLeft, mergeRight, parityOutput, l1ToL2Snapshot); + const rootOutput = await getBlockRootOutput(mergeLeft, mergeRight, parityOutput, l1ToL2Snapshot, txs); const expectedHeader = buildHeaderFromCircuitOutputs( [mergeLeft, mergeRight], parityOutput, @@ -263,12 +271,13 @@ describe('LightBlockBuilder', () => { const getPrivateBaseRollupOutputs = async (txs: ProcessedTx[]) => { const rollupOutputs = []; + const spongeBlobState = SpongeBlob.init(toNumBlobFields(txs)); for (const tx of txs) { const vkIndex = TUBE_VK_INDEX; const vkPath = getVKSiblingPath(vkIndex); const vkData = new VkWitnessData(TubeVk, vkIndex, vkPath); const tubeData = new PrivateTubeData(tx.data.toKernelCircuitPublicInputs(), emptyProof, vkData); - const hints = await buildBaseRollupHints(tx, globalVariables, expectsFork); + const hints = await buildBaseRollupHints(tx, globalVariables, expectsFork, spongeBlobState); const inputs = new PrivateBaseRollupInputs(tubeData, hints as PrivateBaseRollupHints); const result = await simulator.getPrivateBaseRollupProof(inputs); rollupOutputs.push(result.inputs); @@ -314,6 +323,7 @@ describe('LightBlockBuilder', () => { newL1ToL2MessageTreeRootSiblingPath: Tuple; messageTreeSnapshot: AppendOnlyTreeSnapshot; }, + txs: ProcessedTx[], ) => { const mergeRollupVk = ProtocolCircuitVks['MergeRollupArtifact'].keyAsFields; const mergeRollupVkWitness = getVkMembershipWitness(mergeRollupVk); @@ -324,7 +334,9 @@ describe('LightBlockBuilder', () => { const newArchiveSiblingPath = await getRootTreeSiblingPath(MerkleTreeId.ARCHIVE, expectsFork); const previousBlockHashLeafIndex = BigInt(startArchiveSnapshot.nextAvailableLeafIndex - 1); const previousBlockHash = (await expectsFork.getLeafValue(MerkleTreeId.ARCHIVE, previousBlockHashLeafIndex))!; - + const blobFields = txs.map(tx => tx.txEffect.toBlobFields()).flat(); + const blobs = Blob.getBlobs(blobFields); + const blobsHash = sha256ToField(blobs.map(b => b.getEthVersionedBlobHash())); const rootParityVk = ProtocolCircuitVks['RootParityArtifact'].keyAsFields; const rootParityVkWitness = getVkMembershipWitness(rootParityVk); @@ -345,10 +357,53 @@ describe('LightBlockBuilder', () => { newArchiveSiblingPath, previousBlockHash, proverId: Fr.ZERO, + blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_BLOCK), + blobCommitments: padArrayEnd( + blobs.map(b => b.commitmentToFields()), + [Fr.ZERO, Fr.ZERO], + BLOBS_PER_BLOCK, + ), + blobsHash, }); - const result = await simulator.getBlockRootRollupProof(inputs); - return result.inputs; + // TODO(Miranda): the wasm simulator can't run block root due to the bignum-based blob lib (stack too deep). + // For this test only I'm building outputs in ts. For other tests, I force the simulator to use native ACVM (not wasm). + // const result = await simulator.getBlockRootRollupProof(inputs); + + const newArchiveSnapshot = await getTreeSnapshot(MerkleTreeId.ARCHIVE, fork); + const newBlockHash = await fork.getLeafValue( + MerkleTreeId.ARCHIVE, + BigInt(newArchiveSnapshot.nextAvailableLeafIndex - 1), + ); + const fees = [ + new FeeRecipient( + rollupLeft.baseOrMergeRollupPublicInputs.constants.globalVariables.coinbase, + rollupLeft.baseOrMergeRollupPublicInputs.accumulatedFees.add( + rollupRight.baseOrMergeRollupPublicInputs.accumulatedFees, + ), + ), + ]; + + const blobPublicInputs = [BlockBlobPublicInputs.fromBlobs(blobs)]; + const outputs = new BlockRootOrBlockMergePublicInputs( + inputs.startArchiveSnapshot, + newArchiveSnapshot, + previousBlockHash, + newBlockHash!, + rollupLeft.baseOrMergeRollupPublicInputs.constants.globalVariables, + rollupLeft.baseOrMergeRollupPublicInputs.constants.globalVariables, + sha256ToField([ + rollupLeft.baseOrMergeRollupPublicInputs.outHash, + rollupRight.baseOrMergeRollupPublicInputs.outHash, + ]), + padArrayEnd(fees, new FeeRecipient(EthAddress.ZERO, Fr.ZERO), AZTEC_MAX_EPOCH_DURATION), + rollupLeft.baseOrMergeRollupPublicInputs.constants.vkTreeRoot, + rollupLeft.baseOrMergeRollupPublicInputs.constants.protocolContractTreeRoot, + inputs.proverId, + padArrayEnd(blobPublicInputs, BlockBlobPublicInputs.empty(), AZTEC_MAX_EPOCH_DURATION), + ); + + return outputs; }; function getVkMembershipWitness(vk: VerificationKeyAsFields) { diff --git a/yarn-project/sequencer-client/src/block_builder/light.ts b/yarn-project/sequencer-client/src/block_builder/light.ts index 44d92ca2a23..b8d6c014836 100644 --- a/yarn-project/sequencer-client/src/block_builder/light.ts +++ b/yarn-project/sequencer-client/src/block_builder/light.ts @@ -8,8 +8,9 @@ import { type ProcessedTx, type TxEffect, makeEmptyProcessedTx, + toNumBlobFields, } from '@aztec/circuit-types'; -import { Fr, type GlobalVariables, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/circuits.js'; +import { Fr, type GlobalVariables, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, SpongeBlob } from '@aztec/circuits.js'; import { padArrayEnd } from '@aztec/foundation/collection'; import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types'; import { protocolContractTreeRoot } from '@aztec/protocol-contracts'; @@ -22,36 +23,43 @@ import { NoopTelemetryClient } from '@aztec/telemetry-client/noop'; */ export class LightweightBlockBuilder implements BlockBuilder { private numTxs?: number; + private spongeBlobState?: SpongeBlob; private globalVariables?: GlobalVariables; private l1ToL2Messages?: Fr[]; - private readonly txs: ProcessedTx[] = []; + private txs: ProcessedTx[] = []; private readonly logger = createDebugLogger('aztec:sequencer-client:block_builder_light'); constructor(private db: MerkleTreeWriteOperations, private telemetry: TelemetryClient) {} - async startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise { - this.logger.verbose('Starting new block', { numTxs, globalVariables: globalVariables.toJSON(), l1ToL2Messages }); - this.numTxs = numTxs; + async startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise { + this.logger.verbose('Starting new block', { globalVariables: globalVariables.toJSON(), l1ToL2Messages }); this.globalVariables = globalVariables; this.l1ToL2Messages = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP); + this.txs = []; + this.numTxs = 0; + this.spongeBlobState = undefined; // Update L1 to L2 tree await this.db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, this.l1ToL2Messages!); } - async addNewTx(tx: ProcessedTx): Promise { - this.logger.verbose('Adding new tx to block', { txHash: tx.hash.toString() }); - this.txs.push(tx); - await buildBaseRollupHints(tx, this.globalVariables!, this.db); + async addTxs(txs: ProcessedTx[]): Promise { + this.numTxs = Math.max(2, txs.length); + this.spongeBlobState = SpongeBlob.init(toNumBlobFields(txs)); + for (const tx of txs) { + this.logger.verbose('Adding new tx to block', { txHash: tx.hash.toString() }); + this.txs.push(tx); + await buildBaseRollupHints(tx, this.globalVariables!, this.db, this.spongeBlobState!); + } } async setBlockCompleted(): Promise { const paddingTxCount = this.numTxs! - this.txs.length; this.logger.verbose(`Setting block as completed and adding ${paddingTxCount} padding txs`); for (let i = 0; i < paddingTxCount; i++) { - await this.addNewTx( + await this.addTxs([ makeEmptyProcessedTx( this.db.getInitialHeader(), this.globalVariables!.chainId, @@ -59,7 +67,7 @@ export class LightweightBlockBuilder implements BlockBuilder { getVKTreeRoot(), protocolContractTreeRoot, ), - ); + ]); } return this.buildBlock(); diff --git a/yarn-project/sequencer-client/src/block_builder/orchestrator.ts b/yarn-project/sequencer-client/src/block_builder/orchestrator.ts index 862963f10fe..ad0501d5a58 100644 --- a/yarn-project/sequencer-client/src/block_builder/orchestrator.ts +++ b/yarn-project/sequencer-client/src/block_builder/orchestrator.ts @@ -23,14 +23,14 @@ export class OrchestratorBlockBuilder implements BlockBuilder { this.orchestrator = new ProvingOrchestrator(db, testProver, telemetry); } - startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise { - return this.orchestrator.startNewBlock(numTxs, globalVariables, l1ToL2Messages); + startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise { + return this.orchestrator.startNewBlock(globalVariables, l1ToL2Messages); } setBlockCompleted(): Promise { return this.orchestrator.setBlockCompleted(); } - addNewTx(tx: ProcessedTx): Promise { - return this.orchestrator.addNewTx(tx); + addTxs(txs: ProcessedTx[]): Promise { + return this.orchestrator.addTxs(txs); } } diff --git a/yarn-project/sequencer-client/src/publisher/l1-publisher.test.ts b/yarn-project/sequencer-client/src/publisher/l1-publisher.test.ts index 6c817d70a2c..e7c024421ce 100644 --- a/yarn-project/sequencer-client/src/publisher/l1-publisher.test.ts +++ b/yarn-project/sequencer-client/src/publisher/l1-publisher.test.ts @@ -1,13 +1,20 @@ import { L2Block } from '@aztec/circuit-types'; -import { EthAddress } from '@aztec/circuits.js'; +import { EthAddress, Fr } from '@aztec/circuits.js'; import { type L1ContractsConfig, getL1ContractsConfigEnvVars } from '@aztec/ethereum'; +import { Blob } from '@aztec/foundation/blob'; import { type ViemSignature } from '@aztec/foundation/eth-signature'; import { sleep } from '@aztec/foundation/sleep'; import { RollupAbi } from '@aztec/l1-artifacts'; import { NoopTelemetryClient } from '@aztec/telemetry-client/noop'; import { type MockProxy, mock } from 'jest-mock-extended'; -import { type GetTransactionReceiptReturnType, type PrivateKeyAccount } from 'viem'; +import { + type GetTransactionReceiptReturnType, + type Kzg, + type PrivateKeyAccount, + type SendTransactionReturnType, + encodeFunctionData, +} from 'viem'; import { type PublisherConfig, type TxSenderConfig } from './config.js'; import { L1Publisher } from './l1-publisher.js'; @@ -16,14 +23,24 @@ interface MockPublicClient { getTransactionReceipt: ({ hash }: { hash: '0x${string}' }) => Promise; getBlock(): Promise<{ timestamp: bigint }>; getTransaction: ({ hash }: { hash: '0x${string}' }) => Promise<{ input: `0x${string}`; hash: `0x${string}` }>; - estimateGas: ({ to, data }: { to: '0x${string}'; data: '0x${string}' }) => Promise; } -interface MockRollupContractWrite { - propose: ( - args: readonly [`0x${string}`, `0x${string}`] | readonly [`0x${string}`, `0x${string}`, `0x${string}`], - options: { account: PrivateKeyAccount }, - ) => Promise<`0x${string}`>; +interface MockWalletClient { + sendTransaction: ({ + data, + account, + to, + blobs, + kzg, + maxFeePerBlobGas, + }: { + data: '0x${string}'; + account: '0x${string}'; + to: '0x${string}'; + blobs: [Buffer]; + kzg: Kzg; + maxFeePerBlobGas: bigint; + }) => Promise; } interface MockRollupContractRead { @@ -41,15 +58,19 @@ interface MockRollupContractRead { } class MockRollupContract { - constructor(public write: MockRollupContractWrite, public read: MockRollupContractRead, public abi = RollupAbi) {} + constructor( + public read: MockRollupContractRead, + public abi = RollupAbi, + public address = EthAddress.fromField(new Fr(1)).toString(), + ) {} } describe('L1Publisher', () => { let rollupContractRead: MockProxy; - let rollupContractWrite: MockProxy; let rollupContract: MockRollupContract; let publicClient: MockProxy; + let walletClient: MockProxy; let proposeTxHash: `0x${string}`; let proposeTxReceipt: GetTransactionReceiptReturnType; @@ -64,8 +85,6 @@ describe('L1Publisher', () => { let publisher: L1Publisher; - const GAS_GUESS = 300_000n; - beforeEach(() => { l2Block = L2Block.random(42); @@ -82,17 +101,19 @@ describe('L1Publisher', () => { logs: [], } as unknown as GetTransactionReceiptReturnType; - rollupContractWrite = mock(); rollupContractRead = mock(); - rollupContract = new MockRollupContract(rollupContractWrite, rollupContractRead); + rollupContract = new MockRollupContract(rollupContractRead); publicClient = mock(); + walletClient = mock(); const config = { l1RpcUrl: `http://127.0.0.1:8545`, l1ChainId: 1, publisherPrivateKey: `0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80`, - l1Contracts: { rollupAddress: EthAddress.ZERO.toString() }, + l1Contracts: { + rollupAddress: rollupContract.address, + }, l1PublishRetryIntervalMS: 1, ethereumSlotDuration: getL1ContractsConfigEnvVars().ethereumSlotDuration, } as unknown as TxSenderConfig & PublisherConfig & Pick; @@ -101,17 +122,17 @@ describe('L1Publisher', () => { (publisher as any)['rollupContract'] = rollupContract; (publisher as any)['publicClient'] = publicClient; + (publisher as any)['walletClient'] = walletClient; account = (publisher as any)['account']; rollupContractRead.getCurrentSlot.mockResolvedValue(l2Block.header.globalVariables.slotNumber.toBigInt()); publicClient.getBlock.mockResolvedValue({ timestamp: 12n }); - publicClient.estimateGas.mockResolvedValue(GAS_GUESS); }); it('publishes and propose l2 block to l1', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockResolvedValueOnce(proposeTxHash); + walletClient.sendTransaction.mockResolvedValueOnce(proposeTxHash); publicClient.getTransactionReceipt.mockResolvedValueOnce(proposeTxReceipt); @@ -119,6 +140,10 @@ describe('L1Publisher', () => { expect(result).toEqual(true); + const blobs = Blob.getBlobs(l2Block.body.toBlobFields()); + + const blobInput = Blob.getEthBlobEvaluationInputs(blobs); + const args = [ { header: `0x${header.toString('hex')}`, @@ -128,22 +153,35 @@ describe('L1Publisher', () => { }, [], `0x${body.toString('hex')}`, + blobInput, ] as const; - expect(rollupContractWrite.propose).toHaveBeenCalledWith(args, { - account: account, - gas: L1Publisher.PROPOSE_GAS_GUESS + GAS_GUESS, + + const data = encodeFunctionData({ + abi: RollupAbi, + functionName: 'propose', + args, + }); + + const kzg = Blob.getViemKzgInstance(); + expect(walletClient.sendTransaction).toHaveBeenCalledWith({ + data, + account, + to: rollupContract.address, + blobs: blobs.map(blob => blob.data), + kzg, + maxFeePerBlobGas: 10000000000n, }); expect(publicClient.getTransactionReceipt).toHaveBeenCalledWith({ hash: proposeTxHash }); }); it('does not retry if sending a propose tx fails', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockRejectedValueOnce(new Error()).mockResolvedValueOnce(proposeTxHash); + walletClient.sendTransaction.mockRejectedValueOnce(new Error()).mockResolvedValueOnce(proposeTxHash); const result = await publisher.proposeL2Block(l2Block); expect(result).toEqual(false); - expect(rollupContractWrite.propose).toHaveBeenCalledTimes(1); + expect(walletClient.sendTransaction).toHaveBeenCalledTimes(1); }); it('does not retry if simulating a publish and propose tx fails', async () => { @@ -153,22 +191,22 @@ describe('L1Publisher', () => { await expect(publisher.proposeL2Block(l2Block)).rejects.toThrow(); expect(rollupContractRead.validateHeader).toHaveBeenCalledTimes(1); - expect(rollupContractWrite.propose).toHaveBeenCalledTimes(0); + expect(walletClient.sendTransaction).toHaveBeenCalledTimes(0); }); it('does not retry if sending a publish and propose tx fails', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockRejectedValueOnce(new Error()); + walletClient.sendTransaction.mockRejectedValueOnce(new Error()); const result = await publisher.proposeL2Block(l2Block); expect(result).toEqual(false); - expect(rollupContractWrite.propose).toHaveBeenCalledTimes(1); + expect(walletClient.sendTransaction).toHaveBeenCalledTimes(1); }); it('retries if fetching the receipt fails (propose)', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockResolvedValueOnce(proposeTxHash); + walletClient.sendTransaction.mockResolvedValueOnce(proposeTxHash); publicClient.getTransactionReceipt.mockRejectedValueOnce(new Error()).mockResolvedValueOnce(proposeTxReceipt); const result = await publisher.proposeL2Block(l2Block); @@ -179,7 +217,7 @@ describe('L1Publisher', () => { it('retries if fetching the receipt fails (publish propose)', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockResolvedValueOnce(proposeTxHash as `0x${string}`); + walletClient.sendTransaction.mockResolvedValueOnce(proposeTxHash as `0x${string}`); publicClient.getTransactionReceipt.mockRejectedValueOnce(new Error()).mockResolvedValueOnce(proposeTxReceipt); const result = await publisher.proposeL2Block(l2Block); @@ -190,7 +228,7 @@ describe('L1Publisher', () => { it('returns false if publish and propose tx reverts', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockResolvedValueOnce(proposeTxHash); + walletClient.sendTransaction.mockResolvedValueOnce(proposeTxHash); publicClient.getTransactionReceipt.mockResolvedValueOnce({ ...proposeTxReceipt, status: 'reverted' }); const result = await publisher.proposeL2Block(l2Block); @@ -210,7 +248,7 @@ describe('L1Publisher', () => { it('returns false if sending publish and progress tx is interrupted', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockImplementationOnce(() => sleep(10, proposeTxHash) as Promise<`0x${string}`>); + walletClient.sendTransaction.mockImplementationOnce(() => sleep(10, proposeTxHash) as Promise<`0x${string}`>); const resultPromise = publisher.proposeL2Block(l2Block); publisher.interrupt(); @@ -222,7 +260,7 @@ describe('L1Publisher', () => { it('returns false if sending propose tx is interrupted', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockImplementationOnce(() => sleep(10, proposeTxHash) as Promise<`0x${string}`>); + walletClient.sendTransaction.mockImplementationOnce(() => sleep(10, proposeTxHash) as Promise<`0x${string}`>); const resultPromise = publisher.proposeL2Block(l2Block); publisher.interrupt(); diff --git a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts index 9226059ab6c..7bb4d259070 100644 --- a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts +++ b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts @@ -19,6 +19,8 @@ import { } from '@aztec/circuits.js'; import { type EthereumChain, type L1ContractsConfig, createEthereumChain } from '@aztec/ethereum'; import { makeTuple } from '@aztec/foundation/array'; +import { toHex } from '@aztec/foundation/bigint-buffer'; +import { Blob } from '@aztec/foundation/blob'; import { areArraysEqual, compactArray, times } from '@aztec/foundation/collection'; import { type Signature } from '@aztec/foundation/eth-signature'; import { Fr } from '@aztec/foundation/fields'; @@ -32,7 +34,7 @@ import { type TelemetryClient } from '@aztec/telemetry-client'; import pick from 'lodash.pick'; import { inspect } from 'util'; import { - type BaseError, + BaseError, type Chain, type Client, type ContractFunctionExecutionError, @@ -53,6 +55,7 @@ import { getAbiItem, getAddress, getContract, + getContractError, hexToBytes, http, publicActions, @@ -61,7 +64,7 @@ import { privateKeyToAccount } from 'viem/accounts'; import { type PublisherConfig, type TxSenderConfig } from './config.js'; import { L1PublisherMetrics } from './l1-publisher-metrics.js'; -import { prettyLogViemError, prettyLogViemErrorMsg } from './utils.js'; +import { prettyLogViemErrorMsg } from './utils.js'; /** * Stats for a sent transaction. @@ -103,8 +106,10 @@ type L1ProcessArgs = { archive: Buffer; /** The L2 block's leaf in the archive tree. */ blockHash: Buffer; - /** L2 block body. */ + /** L2 block body. TODO(#9101): Remove block body once we can extract blobs. */ body: Buffer; + /** L2 block blobs containing all tx effects. */ + blobs: Blob[]; /** L2 block tx hashes */ txHashes: TxHash[]; /** Attestations */ @@ -321,7 +326,10 @@ export class L1Publisher { try { await this.rollupContract.read.validateEpochProofRightClaimAtTime(args, { account: this.account }); } catch (err) { - const errorName = tryGetCustomErrorName(err); + let errorName = tryGetCustomErrorName(err); + if (!errorName) { + errorName = tryGetCustomErrorNameContractFunction(err as ContractFunctionExecutionError); + } this.log.warn(`Proof quote validation failed: ${errorName}`); return undefined; } @@ -354,7 +362,7 @@ export class L1Publisher { formattedSignatures, `0x${attestationData.digest.toString('hex')}`, ts, - `0x${header.contentCommitment.txsEffectsHash.toString('hex')}`, + `0x${header.contentCommitment.blobsHash.toString('hex')}`, flags, ] as const; @@ -481,10 +489,10 @@ export class L1Publisher { archive: block.archive.root.toBuffer(), blockHash: block.header.hash().toBuffer(), body: block.body.toBuffer(), + blobs: Blob.getBlobs(block.body.toBlobFields()), attestations, txHashes: txHashes ?? [], }; - // Publish body and propose block (if not already published) if (this.interrupted) { this.log.verbose('L2 block data syncing interrupted while processing blocks.', ctx); @@ -513,7 +521,21 @@ export class L1Publisher { return false; } - const { hash: txHash, args, functionName, gasLimit } = tx; + const { hash: txHash, args, functionName, err } = tx; + + if (err instanceof BaseError) { + const errorMsg = await this.tryGetErrorFromRevertedTx(txHash, { + args, + functionName, + abi: RollupAbi, + address: this.rollupContract.address, + }); + this.log.error(`Rollup process tx reverted. ${errorMsg}`, undefined, { + ...ctx, + }); + this.metrics.recordFailedTx('process'); + return false; + } const receipt = await this.getTransactionReceipt(txHash); if (!receipt) { @@ -536,44 +558,55 @@ export class L1Publisher { return true; } - this.metrics.recordFailedTx('process'); - - const errorMsg = await this.tryGetErrorFromRevertedTx({ - args, - functionName, - gasLimit, - abi: RollupAbi, - address: this.rollupContract.address, - blockNumber: receipt.blockNumber, - }); - this.log.error(`Rollup process tx reverted. ${errorMsg}`, undefined, { - ...ctx, - txHash: receipt.transactionHash, - }); await this.sleepOrInterrupted(); return false; } - private async tryGetErrorFromRevertedTx(args: { - args: any[]; - functionName: string; - gasLimit: bigint; - abi: any; - address: Hex; - blockNumber: bigint | undefined; - }) { + private async tryGetErrorFromRevertedTx( + err: any, + args: { + args: any[]; + functionName: string; + abi: any; + address: Hex; + }, + ) { + // We keep the input err since the below is not able to catch blob errors try { - await this.publicClient.simulateContract({ ...args, account: this.walletClient.account }); - return undefined; - } catch (err: any) { - if (err.name === 'ContractFunctionExecutionError') { - const execErr = err as ContractFunctionExecutionError; - return compactArray([ - execErr.shortMessage, - ...(execErr.metaMessages ?? []).slice(0, 2).map(s => s.trim()), - ]).join(' '); + // NB: If this fn starts unexpectedly giving incorrect blob hash errors, it may be because the checkBlob + // bool is no longer at the slot below. To find the slot, run: forge inspect src/core/Rollup.sol:Rollup storage + const checkBlobSlot = 20n; + await this.publicClient.simulateContract({ + ...args, + account: this.walletClient.account, + stateOverride: [ + { + address: args.address, + stateDiff: [ + { + slot: toHex(checkBlobSlot, true), + value: toHex(0n, true), + }, + ], + }, + ], + }); + // If the above passes, then the original error was due to blobs, and we throw it here: + throw err; + } catch (simulationErr: any) { + const contractErr = + simulationErr.name === 'ContractFunctionExecutionError' + ? simulationErr + : getContractError(simulationErr as BaseError, { + ...args, + sender: this.account.address, + docsPath: '/docs/contract/simulateContract', + }); + if (contractErr.name === 'ContractFunctionExecutionError') { + const execErr = contractErr as ContractFunctionExecutionError; + return tryGetCustomErrorNameContractFunction(execErr); } - this.log.error(`Error getting error from simulation`, err); + this.log.error(`Error getting error from viem`, err); } } @@ -715,24 +748,17 @@ export class L1Publisher { } } - private async prepareProposeTx(encodedData: L1ProcessArgs, gasGuess: bigint) { + private prepareProposeTx(encodedData: L1ProcessArgs, gasGuess: bigint) { // We have to jump a few hoops because viem is not happy around estimating gas for view functions - const computeTxsEffectsHashGas = await this.publicClient.estimateGas({ - to: this.rollupContract.address, - data: encodeFunctionData({ - abi: this.rollupContract.abi, - functionName: 'computeTxsEffectsHash', - args: [`0x${encodedData.body.toString('hex')}`], - }), - }); + // NB: Viem does not allow state overrides or blobs in estimate gas calls, so any est gas call will fail + const proposeGas = 300000n; // @note We perform this guesstimate instead of the usual `gasEstimate` since // viem will use the current state to simulate against, which means that // we will fail estimation in the case where we are simulating for the // first ethereum block within our slot (as current time is not in the // slot yet). - const gasGuesstimate = computeTxsEffectsHashGas + gasGuess; - + const gasGuesstimate = proposeGas + gasGuess; const attestations = encodedData.attestations ? encodedData.attestations.map(attest => attest.toViemSignature()) : []; @@ -745,7 +771,9 @@ export class L1Publisher { txHashes, }, attestations, + // TODO(#9101): Extract blobs from beacon chain => calldata will only contain what's needed to verify blob and body input can be removed `0x${encodedData.body.toString('hex')}`, + Blob.getEthBlobEvaluationInputs(encodedData.blobs), ] as const; return { args, gasGuesstimate }; @@ -758,78 +786,112 @@ export class L1Publisher { proof: Proof; }) { return [ - BigInt(args.toBlock - args.fromBlock + 1), - [ - args.publicInputs.previousArchive.root.toString(), - args.publicInputs.endArchive.root.toString(), - args.publicInputs.previousBlockHash.toString(), - args.publicInputs.endBlockHash.toString(), - args.publicInputs.endTimestamp.toString(), - args.publicInputs.outHash.toString(), - args.publicInputs.proverId.toString(), - ], - makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, i => - i % 2 === 0 - ? args.publicInputs.fees[i / 2].recipient.toField().toString() - : args.publicInputs.fees[(i - 1) / 2].value.toString(), - ), + { + epochSize: BigInt(args.toBlock - args.fromBlock + 1), + args: [ + args.publicInputs.previousArchive.root.toString(), + args.publicInputs.endArchive.root.toString(), + args.publicInputs.previousBlockHash.toString(), + args.publicInputs.endBlockHash.toString(), + args.publicInputs.endTimestamp.toString(), + args.publicInputs.outHash.toString(), + args.publicInputs.proverId.toString(), + ], + fees: makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, i => + i % 2 === 0 + ? args.publicInputs.fees[i / 2].recipient.toField().toString() + : args.publicInputs.fees[(i - 1) / 2].value.toString(), + ), + blobPublicInputs: `0x${args.publicInputs.blobPublicInputs + .filter((_, i) => i < args.toBlock - args.fromBlock + 1) + .map(b => b.toString()) + .join(``)}`, + }, `0x${serializeToBuffer(args.proof.extractAggregationObject()).toString('hex')}`, ] as const; } private async sendProposeTx( encodedData: L1ProcessArgs, - ): Promise<{ hash: string; args: any; functionName: string; gasLimit: bigint } | undefined> { + ): Promise<{ hash: string; args: any; functionName: string; err: any | undefined } | undefined> { if (this.interrupted) { return undefined; } + const { args } = this.prepareProposeTx(encodedData, L1Publisher.PROPOSE_GAS_GUESS); try { - const { args, gasGuesstimate } = await this.prepareProposeTx(encodedData, L1Publisher.PROPOSE_GAS_GUESS); + const data = encodeFunctionData({ + abi: this.rollupContract.abi, + functionName: 'propose', + args, + }); + + const kzg = Blob.getViemKzgInstance(); + // Viem does not allow sending a blob via contract.write() return { - hash: await this.rollupContract.write.propose(args, { + hash: await this.walletClient.sendTransaction({ + data, account: this.account, - gas: gasGuesstimate, + to: this.rollupContract.address, + blobs: encodedData.blobs.map(b => b.data), + kzg, + maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS }), args, functionName: 'propose', - gasLimit: gasGuesstimate, + err: undefined, + }; + } catch (err: any) { + return { + hash: `0x00`, + args, + functionName: 'propose', + err, }; - } catch (err) { - prettyLogViemError(err, this.log); - this.log.error(`Rollup publish failed`, err); - return undefined; } } private async sendProposeAndClaimTx( encodedData: L1ProcessArgs, quote: EpochProofQuote, - ): Promise<{ hash: string; args: any; functionName: string; gasLimit: bigint } | undefined> { + ): Promise<{ hash: string; args: any; functionName: string; err: any | undefined } | undefined> { if (this.interrupted) { return undefined; } + const { args } = this.prepareProposeTx(encodedData, L1Publisher.PROPOSE_AND_CLAIM_GAS_GUESS); try { - const { args, gasGuesstimate } = await this.prepareProposeTx( - encodedData, - L1Publisher.PROPOSE_AND_CLAIM_GAS_GUESS, - ); this.log.info(`ProposeAndClaim`); this.log.info(inspect(quote.payload)); + const data = encodeFunctionData({ + abi: this.rollupContract.abi, + functionName: 'proposeAndClaim', + args: [...args, quote.toViemArgs()], + }); + + const kzg = Blob.getViemKzgInstance(); + + // Viem does not allow sending a blob via contract.write() return { - hash: await this.rollupContract.write.proposeAndClaim([...args, quote.toViemArgs()], { + hash: await this.walletClient.sendTransaction({ + data, account: this.account, - gas: gasGuesstimate, + to: this.rollupContract.address, + blobs: encodedData.blobs.map(b => b.data), + kzg, + maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS }), + args: [...args, quote.toViemArgs()], functionName: 'proposeAndClaim', - args, - gasLimit: gasGuesstimate, + err: undefined, }; } catch (err) { - prettyLogViemError(err, this.log); - this.log.error(`Rollup publish failed`, err); - return undefined; + return { + hash: `0x00`, + args, + functionName: 'proposeAndClaim', + err, + }; } } @@ -883,6 +945,10 @@ function getCalldataGasUsage(data: Uint8Array) { return data.filter(byte => byte === 0).length * 4 + data.filter(byte => byte !== 0).length * 16; } +function tryGetCustomErrorNameContractFunction(err: ContractFunctionExecutionError) { + return compactArray([err.shortMessage, ...(err.metaMessages ?? []).slice(0, 2).map(s => s.trim())]).join(' '); +} + function tryGetCustomErrorName(err: any) { try { // See https://viem.sh/docs/contract/simulateContract#handling-custom-errors diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts index e1b3f8bb71a..36072d9080c 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts @@ -217,7 +217,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 2, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -290,7 +289,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 2, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -324,7 +322,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 2, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -353,7 +350,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 2, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -384,7 +380,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 2, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -424,7 +419,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 4, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -465,10 +459,10 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledTimes(1); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 2, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); + expect(blockBuilder.addTxs).toHaveBeenCalledWith([]); expect(publisher.proposeL2Block).toHaveBeenCalledTimes(1); expect(publisher.proposeL2Block).toHaveBeenCalledWith(block, getSignatures(), [], undefined); }); @@ -508,7 +502,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledTimes(1); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 3, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.ts index 17e371c0738..15a5b42f32d 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.ts @@ -513,21 +513,17 @@ export class Sequencer { const processor = this.publicProcessorFactory.create(publicProcessorFork, historicalHeader, newGlobalVariables); const blockBuildingTimer = new Timer(); const blockBuilder = this.blockBuilderFactory.create(orchestratorFork); - await blockBuilder.startNewBlock(blockSize, newGlobalVariables, l1ToL2Messages); + await blockBuilder.startNewBlock(newGlobalVariables, l1ToL2Messages); const [publicProcessorDuration, [processedTxs, failedTxs]] = await elapsed(() => - processor.process( - validTxs, - blockSize, - blockBuilder, - this.txValidatorFactory.validatorForProcessedTxs(publicProcessorFork), - ), + processor.process(validTxs, blockSize, this.txValidatorFactory.validatorForProcessedTxs(publicProcessorFork)), ); if (failedTxs.length > 0) { const failedTxData = failedTxs.map(fail => fail.tx); this.log.debug(`Dropping failed txs ${Tx.getHashes(failedTxData).join(', ')}`); await this.p2pClient.deleteTxs(Tx.getHashes(failedTxData)); } + await blockBuilder.addTxs(processedTxs); await interrupt?.(processedTxs); @@ -612,19 +608,14 @@ export class Sequencer { await this.publisher.validateBlockForSubmission(block.header); const workDuration = workTimer.ms(); - this.log.info( - `Assembled block ${block.number} (txEffectsHash: ${block.header.contentCommitment.txsEffectsHash.toString( - 'hex', - )})`, - { - eventName: 'l2-block-built', - creator: this.publisher.getSenderAddress().toString(), - duration: workDuration, - publicProcessDuration: publicProcessorDuration, - rollupCircuitsDuration: blockBuildingTimer.ms(), - ...block.getStats(), - } satisfies L2BlockBuiltStats, - ); + this.log.info(`Assembled block ${block.number} (with hash: ${block.header.hash().toString()})`, { + eventName: 'l2-block-built', + creator: this.publisher.getSenderAddress().toString(), + duration: workDuration, + publicProcessDuration: publicProcessorDuration, + rollupCircuitsDuration: blockBuildingTimer.ms(), + ...block.getStats(), + } satisfies L2BlockBuiltStats); if (this.isFlushing) { this.log.info(`Flushing completed`); diff --git a/yarn-project/simulator/src/public/public_processor.test.ts b/yarn-project/simulator/src/public/public_processor.test.ts index 7db6b283dc8..ecff4354e92 100644 --- a/yarn-project/simulator/src/public/public_processor.test.ts +++ b/yarn-project/simulator/src/public/public_processor.test.ts @@ -1,7 +1,6 @@ import { type MerkleTreeWriteOperations, type ProcessedTx, - type ProcessedTxHandler, ProvingRequestType, SimulationError, type TreeInfo, @@ -35,7 +34,6 @@ describe('public_processor', () => { let db: MockProxy; let worldStateDB: MockProxy; let publicTxProcessor: MockProxy; - let handler: MockProxy; let root: Buffer; let mockedEnqueuedCallsResult: PublicTxResult; @@ -56,7 +54,6 @@ describe('public_processor', () => { db = mock(); worldStateDB = mock(); publicTxProcessor = mock(); - handler = mock(); root = Buffer.alloc(32, 5); @@ -97,20 +94,18 @@ describe('public_processor', () => { it('process private-only txs', async function () { const tx = mockPrivateOnlyTx(); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed.length).toBe(1); expect(processed[0].hash).toEqual(tx.getTxHash()); expect(processed[0].data).toEqual(tx.data); expect(failed).toEqual([]); - - expect(handler.addNewTx).toHaveBeenCalledWith(processed[0]); }); it('runs a tx with enqueued public calls', async function () { const tx = mockTxWithPublicCalls(); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed.length).toBe(1); expect(processed[0].hash).toEqual(tx.getTxHash()); @@ -126,7 +121,7 @@ describe('public_processor', () => { mockedEnqueuedCallsResult.revertCode = RevertCode.APP_LOGIC_REVERTED; mockedEnqueuedCallsResult.revertReason = new SimulationError(`Failed`, []); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed.length).toBe(1); expect(processed[0].hash).toEqual(tx.getTxHash()); @@ -139,7 +134,7 @@ describe('public_processor', () => { publicTxProcessor.simulate.mockRejectedValue(new SimulationError(`Failed`, [])); const tx = mockTxWithPublicCalls(); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed).toEqual([]); expect(failed.length).toBe(1); @@ -147,14 +142,13 @@ describe('public_processor', () => { expect(failed[0].error).toEqual(new SimulationError(`Failed`, [])); expect(worldStateDB.commit).toHaveBeenCalledTimes(0); - expect(handler.addNewTx).toHaveBeenCalledTimes(0); }); it('does not attempt to overfill a block', async function () { const txs = Array.from([1, 2, 3], seed => mockPrivateOnlyTx({ seed })); // We are passing 3 txs but only 2 can fit in the block - const [processed, failed] = await processor.process(txs, 2, handler); + const [processed, failed] = await processor.process(txs, 2); expect(processed.length).toBe(2); expect(processed[0].hash).toEqual(txs[0].getTxHash()); @@ -162,9 +156,6 @@ describe('public_processor', () => { expect(failed).toEqual([]); expect(worldStateDB.commit).toHaveBeenCalledTimes(2); - - expect(handler.addNewTx).toHaveBeenCalledWith(processed[0]); - expect(handler.addNewTx).toHaveBeenCalledWith(processed[1]); }); it('does not send a transaction to the prover if validation fails', async function () { @@ -173,13 +164,11 @@ describe('public_processor', () => { const txValidator: MockProxy> = mock(); txValidator.validateTxs.mockRejectedValue([[], [tx]]); - const [processed, failed] = await processor.process([tx], 1, handler, txValidator); + const [processed, failed] = await processor.process([tx], 1, txValidator); expect(processed).toEqual([]); expect(failed.length).toBe(1); expect(failed[0].tx).toEqual(tx); - - expect(handler.addNewTx).toHaveBeenCalledTimes(0); }); }); @@ -205,7 +194,7 @@ describe('public_processor', () => { const txFee = privateGasUsed.computeFee(globalVariables.gasFees); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed).toHaveLength(1); expect(processed[0].data.feePayer).toEqual(feePayer); @@ -216,8 +205,6 @@ describe('public_processor', () => { expect(worldStateDB.commit).toHaveBeenCalledTimes(1); expect(worldStateDB.storageWrite).toHaveBeenCalledTimes(1); - - expect(handler.addNewTx).toHaveBeenCalledWith(processed[0]); }); it('injects balance update with public enqueued call', async function () { @@ -228,7 +215,7 @@ describe('public_processor', () => { feePayer, }); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed).toHaveLength(1); expect(processed[0].hash).toEqual(tx.getTxHash()); @@ -241,8 +228,6 @@ describe('public_processor', () => { expect(worldStateDB.commit).toHaveBeenCalledTimes(1); expect(worldStateDB.storageWrite).toHaveBeenCalledTimes(1); - - expect(handler.addNewTx).toHaveBeenCalledWith(processed[0]); }); it('tweaks existing balance update from claim', async function () { @@ -262,7 +247,7 @@ describe('public_processor', () => { feePayer, }); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed).toHaveLength(1); expect(processed[0].hash).toEqual(tx.getTxHash()); @@ -277,8 +262,6 @@ describe('public_processor', () => { expect(worldStateDB.commit).toHaveBeenCalledTimes(1); expect(worldStateDB.storageWrite).toHaveBeenCalledTimes(1); - - expect(handler.addNewTx).toHaveBeenCalledWith(processed[0]); }); it('rejects tx if fee payer has not enough balance', async function () { @@ -289,7 +272,7 @@ describe('public_processor', () => { feePayer, }); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed).toEqual([]); expect(failed).toHaveLength(1); diff --git a/yarn-project/simulator/src/public/public_processor.ts b/yarn-project/simulator/src/public/public_processor.ts index 7e1e35b8710..f077af80b1c 100644 --- a/yarn-project/simulator/src/public/public_processor.ts +++ b/yarn-project/simulator/src/public/public_processor.ts @@ -4,7 +4,6 @@ import { type MerkleTreeWriteOperations, NestedProcessReturnValues, type ProcessedTx, - type ProcessedTxHandler, Tx, TxExecutionPhase, type TxValidator, @@ -98,7 +97,6 @@ export class PublicProcessor { public async process( txs: Tx[], maxTransactions = txs.length, - processedTxHandler?: ProcessedTxHandler, txValidator?: TxValidator, ): Promise<[ProcessedTx[], FailedTx[], NestedProcessReturnValues[]]> { // The processor modifies the tx objects in place, so we need to clone them. @@ -137,10 +135,6 @@ export class PublicProcessor { throw new Error(`Transaction ${invalid[0].hash} invalid after processing public functions`); } } - // if we were given a handler then send the transaction to it for block building or proving - if (processedTxHandler) { - await processedTxHandler.addNewTx(processedTx); - } // Update the state so that the next tx in the loop has the correct .startState // NB: before this change, all .startStates were actually incorrect, but the issue was never caught because we either: // a) had only 1 tx with public calls per block, so this loop had len 1 diff --git a/yarn-project/telemetry-client/src/attributes.ts b/yarn-project/telemetry-client/src/attributes.ts index 32ce263917a..06bbc1a66b7 100644 --- a/yarn-project/telemetry-client/src/attributes.ts +++ b/yarn-project/telemetry-client/src/attributes.ts @@ -50,7 +50,7 @@ export const BLOCK_PARENT = 'aztec.block.parent'; export const BLOCK_CANDIDATE_TXS_COUNT = 'aztec.block.candidate_txs_count'; /** How many actual txs were included in this block */ export const BLOCK_TXS_COUNT = 'aztec.block.txs_count'; -/** The block size (power of 2) */ +/** The block size */ export const BLOCK_SIZE = 'aztec.block.size'; /** How many blocks are included in this epoch */ export const EPOCH_SIZE = 'aztec.epoch.size'; diff --git a/yarn-project/yarn.lock b/yarn-project/yarn.lock index 5acda1df8ca..5b8a7113f6a 100644 --- a/yarn-project/yarn.lock +++ b/yarn-project/yarn.lock @@ -665,6 +665,7 @@ __metadata: "@typescript-eslint/eslint-plugin": ^6.2.1 "@typescript-eslint/parser": ^6.2.1 bn.js: ^5.2.1 + c-kzg: 4.0.0-alpha.1 comlink: ^4.4.1 debug: ^4.3.4 detect-node: ^2.1.0 @@ -4027,24 +4028,6 @@ __metadata: languageName: node linkType: hard -"@puppeteer/browsers@npm:2.2.3": - version: 2.2.3 - resolution: "@puppeteer/browsers@npm:2.2.3" - dependencies: - debug: 4.3.4 - extract-zip: 2.0.1 - progress: 2.0.3 - proxy-agent: 6.4.0 - semver: 7.6.0 - tar-fs: 3.0.5 - unbzip2-stream: 1.4.3 - yargs: 17.7.2 - bin: - browsers: lib/cjs/main-cli.js - checksum: 44d496e2c4d717e472b40473fd916b1aa3b1a6024b9e4f571ca1521172ae38d090b5f331ccc6694593f41eb0b667865d72e4c9bc29d6a705a369ade53dacbd5c - languageName: node - linkType: hard - "@puppeteer/browsers@npm:2.3.0": version: 2.3.0 resolution: "@puppeteer/browsers@npm:2.3.0" @@ -6930,6 +6913,17 @@ __metadata: languageName: node linkType: hard +"c-kzg@npm:4.0.0-alpha.1": + version: 4.0.0-alpha.1 + resolution: "c-kzg@npm:4.0.0-alpha.1" + dependencies: + bindings: ^1.5.0 + node-addon-api: ^5.0.0 + node-gyp: latest + checksum: abb07eb3e253ea10aef4ce3a04090f9940de4f3ffa8ef19de9bff8cae1d6bc0aa80d716d998b72d46365f6565445d89592e303fd0951f8ebe8a4d233912dd66f + languageName: node + linkType: hard + "cacache@npm:^18.0.0": version: 18.0.3 resolution: "cacache@npm:18.0.3" @@ -7171,19 +7165,6 @@ __metadata: languageName: node linkType: hard -"chromium-bidi@npm:0.5.19": - version: 0.5.19 - resolution: "chromium-bidi@npm:0.5.19" - dependencies: - mitt: 3.0.1 - urlpattern-polyfill: 10.0.0 - zod: 3.22.4 - peerDependencies: - devtools-protocol: "*" - checksum: aec876416dc856150c2fe4af1eb0328497c6859af8f9e5be0e0275435d7c0996654bfff68ea1fcd6125bf605957f16ad431c1961f47897542f0cb927ceb93e31 - languageName: node - linkType: hard - "chromium-bidi@npm:0.6.3": version: 0.6.3 resolution: "chromium-bidi@npm:0.6.3" @@ -7793,7 +7774,7 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:9.0.0, cosmiconfig@npm:^9.0.0": +"cosmiconfig@npm:^9.0.0": version: 9.0.0 resolution: "cosmiconfig@npm:9.0.0" dependencies: @@ -8181,7 +8162,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -8661,13 +8642,6 @@ __metadata: languageName: node linkType: hard -"devtools-protocol@npm:0.0.1273771": - version: 0.0.1273771 - resolution: "devtools-protocol@npm:0.0.1273771" - checksum: 2a88694ec0f2f167f826cea8c3d6030ede911c2db79d2a62d76d1be450bcb395e8283ca03f225fa308710ab06182dced47eed8cece56b377d1946403a321b64f - languageName: node - linkType: hard - "devtools-protocol@npm:0.0.1312386": version: 0.0.1312386 resolution: "devtools-protocol@npm:0.0.1312386" @@ -9740,7 +9714,7 @@ __metadata: languageName: node linkType: hard -"extract-zip@npm:2.0.1, extract-zip@npm:^2.0.1": +"extract-zip@npm:^2.0.1": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" dependencies: @@ -13147,15 +13121,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - "lru-cache@npm:^7.14.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" @@ -14016,6 +13981,15 @@ __metadata: languageName: node linkType: hard +"node-addon-api@npm:^5.0.0": + version: 5.1.0 + resolution: "node-addon-api@npm:5.1.0" + dependencies: + node-gyp: latest + checksum: 2508bd2d2981945406243a7bd31362fc7af8b70b8b4d65f869c61731800058fb818cc2fd36c8eac714ddd0e568cc85becf5e165cebbdf7b5024d5151bbc75ea1 + languageName: node + linkType: hard + "node-addon-api@npm:^6.1.0": version: 6.1.0 resolution: "node-addon-api@npm:6.1.0" @@ -15040,7 +15014,7 @@ __metadata: languageName: node linkType: hard -"progress@npm:2.0.3, progress@npm:^2.0.3": +"progress@npm:^2.0.3": version: 2.0.3 resolution: "progress@npm:2.0.3" checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 @@ -15118,7 +15092,7 @@ __metadata: languageName: node linkType: hard -"proxy-agent@npm:6.4.0, proxy-agent@npm:^6.4.0": +"proxy-agent@npm:^6.4.0": version: 6.4.0 resolution: "proxy-agent@npm:6.4.0" dependencies: @@ -15214,34 +15188,7 @@ __metadata: languageName: node linkType: hard -"puppeteer-core@npm:22.8.0": - version: 22.8.0 - resolution: "puppeteer-core@npm:22.8.0" - dependencies: - "@puppeteer/browsers": 2.2.3 - chromium-bidi: 0.5.19 - debug: 4.3.4 - devtools-protocol: 0.0.1273771 - ws: 8.17.0 - checksum: f4250c87c09eb9c73d737ccf08e548babd57e749c9bfc241a7251f2e5e5f3ef2bf3dcb99b7b606763db3a914c866c97cc6714961900566280414b0fad5a330a8 - languageName: node - linkType: hard - -"puppeteer@npm:^22.2": - version: 22.8.0 - resolution: "puppeteer@npm:22.8.0" - dependencies: - "@puppeteer/browsers": 2.2.3 - cosmiconfig: 9.0.0 - devtools-protocol: 0.0.1273771 - puppeteer-core: 22.8.0 - bin: - puppeteer: lib/esm/puppeteer/node/cli.js - checksum: da4855a71b6355e96196b9838fc255fa39f6bdd09cb0b9a6d3cfc377ba839eecef01e40ad7bbff48ef17a5784266bfac5dbf94e1b298f447ce8983f72ff90185 - languageName: node - linkType: hard - -"puppeteer@npm:^22.4.1": +"puppeteer@npm:^22.2, puppeteer@npm:^22.4.1": version: 22.15.0 resolution: "puppeteer@npm:22.15.0" dependencies: @@ -15972,17 +15919,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.6.0": - version: 7.6.0 - resolution: "semver@npm:7.6.0" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 7427f05b70786c696640edc29fdd4bc33b2acf3bbe1740b955029044f80575fc664e1a512e4113c3af21e767154a94b4aa214bf6cd6e42a1f6dba5914e0b208c - languageName: node - linkType: hard - "semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" @@ -16986,23 +16922,6 @@ __metadata: languageName: node linkType: hard -"tar-fs@npm:3.0.5": - version: 3.0.5 - resolution: "tar-fs@npm:3.0.5" - dependencies: - bare-fs: ^2.1.1 - bare-path: ^2.1.0 - pump: ^3.0.0 - tar-stream: ^3.1.5 - dependenciesMeta: - bare-fs: - optional: true - bare-path: - optional: true - checksum: e31c7e3e525fec0afecdec1cac58071809e396187725f2eba442f08a4c5649c8cd6b7ce25982f9a91bb0f055628df47c08177dd2ea4f5dafd3c22f42f8da8f00 - languageName: node - linkType: hard - "tar-fs@npm:^3.0.6": version: 3.0.6 resolution: "tar-fs@npm:3.0.6" @@ -17783,7 +17702,7 @@ __metadata: languageName: node linkType: hard -"unbzip2-stream@npm:1.4.3, unbzip2-stream@npm:^1.4.3": +"unbzip2-stream@npm:^1.4.3": version: 1.4.3 resolution: "unbzip2-stream@npm:1.4.3" dependencies: @@ -18595,7 +18514,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.17.0, ws@npm:^8.13.0": +"ws@npm:^8.13.0": version: 8.17.0 resolution: "ws@npm:8.17.0" peerDependencies: @@ -18679,7 +18598,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:17.7.2, yargs@npm:^17.3.1, yargs@npm:^17.7.2": +"yargs@npm:^17.3.1, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -18732,13 +18651,6 @@ __metadata: languageName: node linkType: hard -"zod@npm:3.22.4": - version: 3.22.4 - resolution: "zod@npm:3.22.4" - checksum: 80bfd7f8039b24fddeb0718a2ec7c02aa9856e4838d6aa4864335a047b6b37a3273b191ef335bf0b2002e5c514ef261ffcda5a589fb084a48c336ffc4cdbab7f - languageName: node - linkType: hard - "zod@npm:3.23.8, zod@npm:^3.23.8": version: 3.23.8 resolution: "zod@npm:3.23.8"