From c1aa624bf61b67164558d4b6309870a553e61c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Fri, 15 Nov 2024 20:17:45 +0100 Subject: [PATCH 01/21] feature: add e2e tests --- e2e/.czrc | 3 + e2e/.editorconfig | 16 + e2e/.env.example | 9 + e2e/.gitignore | 26 + e2e/.gitpod.yml | 10 + e2e/.prettierignore | 22 + e2e/.prettierrc.yml | 23 + e2e/.solcover.js | 11 + e2e/.solhint.json | 24 + e2e/.solhintignore | 3 + e2e/LICENSE.md | 16 + e2e/Makefile | 50 + e2e/README.md | 232 + e2e/contracts/EncryptedERC20.sol | 150 + e2e/contracts/Increment.sol | 21 + e2e/eslint.config.mjs | 17 + e2e/hardhat.config.ts | 124 + e2e/package.json | 96 + e2e/pnpm-lock.yaml | 6805 +++++++++++++++++ e2e/tasks/accounts.ts | 9 + e2e/tasks/checkNodeVersion.js | 2 + e2e/tasks/deployERC20.ts | 10 + e2e/tasks/getEthereumAddress.ts | 34 + .../encryptedERC20/EncryptedERC20.fixture.ts | 14 + e2e/test/encryptedERC20/EncryptedERC20.ts | 273 + e2e/test/increment/Increment.fixture.ts | 14 + e2e/test/increment/Increment.ts | 71 + e2e/test/instance.ts | 185 + e2e/test/signers.ts | 29 + e2e/test/types.ts | 19 + e2e/test/utils.ts | 97 + e2e/tsconfig.json | 22 + 32 files changed, 8437 insertions(+) create mode 100644 e2e/.czrc create mode 100644 e2e/.editorconfig create mode 100644 e2e/.env.example create mode 100644 e2e/.gitignore create mode 100644 e2e/.gitpod.yml create mode 100644 e2e/.prettierignore create mode 100644 e2e/.prettierrc.yml create mode 100644 e2e/.solcover.js create mode 100644 e2e/.solhint.json create mode 100644 e2e/.solhintignore create mode 100644 e2e/LICENSE.md create mode 100644 e2e/Makefile create mode 100644 e2e/README.md create mode 100644 e2e/contracts/EncryptedERC20.sol create mode 100644 e2e/contracts/Increment.sol create mode 100644 e2e/eslint.config.mjs create mode 100644 e2e/hardhat.config.ts create mode 100644 e2e/package.json create mode 100644 e2e/pnpm-lock.yaml create mode 100644 e2e/tasks/accounts.ts create mode 100644 e2e/tasks/checkNodeVersion.js create mode 100644 e2e/tasks/deployERC20.ts create mode 100644 e2e/tasks/getEthereumAddress.ts create mode 100644 e2e/test/encryptedERC20/EncryptedERC20.fixture.ts create mode 100644 e2e/test/encryptedERC20/EncryptedERC20.ts create mode 100644 e2e/test/increment/Increment.fixture.ts create mode 100644 e2e/test/increment/Increment.ts create mode 100644 e2e/test/instance.ts create mode 100644 e2e/test/signers.ts create mode 100644 e2e/test/types.ts create mode 100644 e2e/test/utils.ts create mode 100644 e2e/tsconfig.json diff --git a/e2e/.czrc b/e2e/.czrc new file mode 100644 index 0000000..d1bcc20 --- /dev/null +++ b/e2e/.czrc @@ -0,0 +1,3 @@ +{ + "path": "cz-conventional-changelog" +} diff --git a/e2e/.editorconfig b/e2e/.editorconfig new file mode 100644 index 0000000..6fd96c1 --- /dev/null +++ b/e2e/.editorconfig @@ -0,0 +1,16 @@ +# EditorConfig http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# All files +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.sol] +indent_size = 4 diff --git a/e2e/.env.example b/e2e/.env.example new file mode 100644 index 0000000..efe23ff --- /dev/null +++ b/e2e/.env.example @@ -0,0 +1,9 @@ +export MNEMONIC="adapt mosquito move limb mobile illegal tree voyage juice mosquito burger raise father hope layer" + +export TFHE_EXECUTOR_CONTRACT_ADDRESS=0x596E6682c72946AF006B27C131793F2b62527A4b +export ACL_CONTRACT_ADDRESS=0x339EcE85B9E11a3A3AA557582784a15d7F82AAf2 +export PAYMENT_CONTRACT_ADDRESS=0x6d5A11aC509C707c00bc3A0a113ACcC26c532547 +export KMS_VERIFIER_CONTRACT_ADDRESS=0x208De73316E44722e16f6dDFF40881A3e4F86104 +export GATEWAY_CONTRACT_ADDRESS=0x096b4679d45fB675d4e2c1E4565009Cec99A12B1 + +export GATEWAY_URL="http://localhost:7077" \ No newline at end of file diff --git a/e2e/.gitignore b/e2e/.gitignore new file mode 100644 index 0000000..7e98e67 --- /dev/null +++ b/e2e/.gitignore @@ -0,0 +1,26 @@ +# directories +.coverage_artifacts +.coverage_cache +.coverage_contracts +artifacts +build +cache +coverage +dist +node_modules +types +deployments +kms-fhe-keys/ +network-fhe-keys/ +fhevmTemp/ +abi/ + +# files +*.env +*.log +.env.docker +.DS_Store +.pnp.* +coverage.json +package-lock.json +yarn.lock diff --git a/e2e/.gitpod.yml b/e2e/.gitpod.yml new file mode 100644 index 0000000..dd2444f --- /dev/null +++ b/e2e/.gitpod.yml @@ -0,0 +1,10 @@ +image: "gitpod/workspace-node:latest" + +tasks: + - init: "pnpm install" + +vscode: + extensions: + - "esbenp.prettier-vscode" + - "NomicFoundation.hardhat-solidity" + - "ritwickdey.LiveServer" diff --git a/e2e/.prettierignore b/e2e/.prettierignore new file mode 100644 index 0000000..d1401c9 --- /dev/null +++ b/e2e/.prettierignore @@ -0,0 +1,22 @@ +# directories +.coverage_artifacts +.coverage_cache +.coverage_contracts +artifacts +build +cache +coverage +dist +node_modules +types + +# files +*.env +*.log +.DS_Store +.pnp.* +coverage.json +package-lock.json +pnpm-lock.yaml +yarn.lock +README.md \ No newline at end of file diff --git a/e2e/.prettierrc.yml b/e2e/.prettierrc.yml new file mode 100644 index 0000000..56221e3 --- /dev/null +++ b/e2e/.prettierrc.yml @@ -0,0 +1,23 @@ +bracketSpacing: true +plugins: + - "@trivago/prettier-plugin-sort-imports" + - "prettier-plugin-solidity" +printWidth: 120 +proseWrap: "always" +singleQuote: false +tabWidth: 2 +trailingComma: "all" + +overrides: + - files: "*.sol" + options: + compiler: "0.8.24" + parser: "solidity-parse" + tabWidth: 4 + - files: "*.ts" + options: + importOrder: ["", "^[./]"] + importOrderParserPlugins: ["typescript"] + importOrderSeparation: true + importOrderSortSpecifiers: true + parser: "typescript" diff --git a/e2e/.solcover.js b/e2e/.solcover.js new file mode 100644 index 0000000..938b911 --- /dev/null +++ b/e2e/.solcover.js @@ -0,0 +1,11 @@ +module.exports = { + istanbulReporter: ["html", "lcov"], + providerOptions: { + mnemonic: process.env.MNEMONIC, + }, + skipFiles: ["test", "fhevmTemp"], + mocha: { + fgrep: "[skip-on-coverage]", + invert: true, + }, +}; diff --git a/e2e/.solhint.json b/e2e/.solhint.json new file mode 100644 index 0000000..826fe4e --- /dev/null +++ b/e2e/.solhint.json @@ -0,0 +1,24 @@ +{ + "extends": "solhint:recommended", + "plugins": ["prettier"], + "rules": { + "const-name-snakecase": "off", + "no-global-import": "off", + "reason-string": "off", + "state-visibility": "off", + "custom-errors": "off", + "code-complexity": ["error", 8], + "compiler-version": ["error", ">=0.8.4"], + "func-visibility": ["error", { "ignoreConstructors": true }], + "max-line-length": ["error", 120], + "named-parameters-mapping": "off", + "no-console": "off", + "not-rely-on-time": "off", + "prettier/prettier": [ + "error", + { + "endOfLine": "auto" + } + ] + } +} diff --git a/e2e/.solhintignore b/e2e/.solhintignore new file mode 100644 index 0000000..16dc0c0 --- /dev/null +++ b/e2e/.solhintignore @@ -0,0 +1,3 @@ +# directories +**/artifacts +**/node_modules diff --git a/e2e/LICENSE.md b/e2e/LICENSE.md new file mode 100644 index 0000000..88a2b87 --- /dev/null +++ b/e2e/LICENSE.md @@ -0,0 +1,16 @@ +MIT License + +Copyright (c) 2023 Paul Razvan Berg + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/e2e/Makefile b/e2e/Makefile new file mode 100644 index 0000000..26c1727 --- /dev/null +++ b/e2e/Makefile @@ -0,0 +1,50 @@ +#!/usr/bin/make -f + +include .env + +KEY_GEN = false +BINDIR ?= $(GOPATH)/bin +ETHERMINT_BINARY = ethermintd +ETHERMINT_DIR = ethermint + + +# This version must the same as in docker-compose-full.yml +# TODO add check +KMS_DEV_VERSION ?= v0.7.1 + +export GO111MODULE = on + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY: default_target + +# process build tags + +############################################################################### +### Single validator ### +############################################################################### + + + +generate-fhe-keys: + @bash ./scripts/copy_fhe_keys.sh $(KMS_DEV_VERSION) $(PWD)/network-fhe-keys $(PWD)/kms-fhe-keys + +run-full: + $(MAKE) generate-fhe-keys + @docker compose --env-file .env.docker -f docker-compose/docker-compose-full.yml up --detach + @echo 'sleep a little to let the docker start up' + sleep 5 + +stop-full: + @docker compose --env-file .env.docker -f docker-compose/docker-compose-full.yml down + + +clean: + $(MAKE) stop-full + rm -rf network-fhe-keys + rm -rf kms-fhe-keys + + +print-info: + @echo 'KMS_DEV_VERSION: $(KMS_DEV_VERSION) for KEY_GEN---extracted from Makefile' diff --git a/e2e/README.md b/e2e/README.md new file mode 100644 index 0000000..23fa720 --- /dev/null +++ b/e2e/README.md @@ -0,0 +1,232 @@ +# Hardhat Template [![Open in Gitpod][gitpod-badge]][gitpod] [![Github Actions][gha-badge]][gha] [![Hardhat][hardhat-badge]][hardhat] [![License: MIT][license-badge]][license] + +[gitpod]: https://gitpod.io/#https://github.com/zama-ai/fhevm-hardhat-template +[gitpod-badge]: https://img.shields.io/badge/Gitpod-Open%20in%20Gitpod-FFB45B?logo=gitpod +[gha]: https://github.com/zama-ai/fhevm-hardhat-template/actions +[gha-badge]: https://github.com/zama-ai/fhevm-hardhat-template/actions/workflows/ci.yml/badge.svg +[hardhat]: https://hardhat.org/ +[hardhat-badge]: https://img.shields.io/badge/Built%20with-Hardhat-FFDB1C.svg +[license]: https://opensource.org/licenses/MIT +[license-badge]: https://img.shields.io/badge/License-MIT-blue.svg + +A Hardhat-based template for developing Solidity smart contracts, with sensible defaults. + +- [Hardhat](https://github.com/nomiclabs/hardhat): compile, run and test smart contracts +- [TypeChain](https://github.com/ethereum-ts/TypeChain): generate TypeScript bindings for smart contracts +- [Ethers](https://github.com/ethers-io/ethers.js/): renowned Ethereum library and wallet implementation +- [Solhint](https://github.com/protofire/solhint): code linter +- [Solcover](https://github.com/sc-forks/solidity-coverage): code coverage +- [Prettier Plugin Solidity](https://github.com/prettier-solidity/prettier-plugin-solidity): code formatter + +## Getting Started + +Click the [`Use this template`](https://github.com/zama-ai/fhevm-hardhat-template/generate) button at the top of the +page to create a new repository with this repo as the initial state. + +## Features + +This template builds upon the frameworks and libraries mentioned above, so for details about their specific features, +please consult their respective documentations. + +For example, for Hardhat, you can refer to the [Hardhat Tutorial](https://hardhat.org/tutorial) and the +[Hardhat Docs](https://hardhat.org/docs). You might be in particular interested in reading the +[Testing Contracts](https://hardhat.org/tutorial/testing-contracts) section. + +### Sensible Defaults + +This template comes with sensible default configurations in the following files: + +```text +├── .editorconfig +├── .eslintignore +├── .eslintrc.yml +├── .gitignore +├── .prettierignore +├── .prettierrc.yml +├── .solcover.js +├── .solhint.json +└── hardhat.config.ts +``` + +### VSCode Integration + +This template is IDE agnostic, but for the best user experience, you may want to use it in VSCode alongside Nomic +Foundation's [Solidity extension](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity). + +### GitHub Actions + +This template comes with GitHub Actions pre-configured. Your contracts will be linted and tested on every push and pull +request made to the `main` branch. + +Note though that to make this work, you must use your `INFURA_API_KEY` and your `MNEMONIC` as GitHub secrets. + +You can edit the CI script in [.github/workflows/ci.yml](./.github/workflows/ci.yml). + +## Usage + +### Pre Requisites + +Install [docker](https://docs.docker.com/engine/install/) + +Install [pnpm](https://pnpm.io/installation) + +Before being able to run any command, you need to create a `.env` file and set a BIP-39 compatible mnemonic as an +environment variable. You can follow the example in `.env.example` and start with the following command: + +```sh +cp .env.example .env +``` + +If you don't already have a mnemonic, you can use this [website](https://iancoleman.io/bip39/) to generate one. + +Then, proceed with installing dependencies - please **_make sure to use Node v20_** or more recent or this will fail: + +```sh +pnpm install +``` + +### Start fhEVM + +During installation (see previous section) we recommend you for easier setup to not change the default `.env` : simply +copy the original `.env.example` file to a new `.env` file in the root of the repo. + +Then, start a local fhEVM docker compose that inlcudes everything needed to deploy FHE encrypted smart contracts using: + +```sh +# In one terminal, keep it opened +# The node logs are printed +pnpm fhevm:start +``` + +Previous command will take 2 to 3 minutes to do the whole initial setup - wait until the blockchain logs appear to make +sure setup is complete (we are working on making initial deployment faster). + +You can then run the tests simply in a new terminal via : + +``` +pnpm test +``` + +Once your done with your tests, to stop the node: + +```sh +pnpm fhevm:stop +``` + +### Compile + +Compile the smart contracts with Hardhat: + +```sh +pnpm compile +``` + +### TypeChain + +Compile the smart contracts and generate TypeChain bindings: + +```sh +pnpm typechain +``` + +### List accounts + +From the mnemonic in .env file, list all the derived Ethereum adresses: + +```sh +pnpm task:accounts +``` + +### Get some native coins + +In order to interact with the blockchain, one need some coins. This command will give coins to the first 5 addresses +derived from the mnemonic in .env file. + +```sh +pnpm fhevm:faucet +``` + +
+
+ To get the first derived address from mnemonic +
+ +```sh +pnpm task:getEthereumAddress +``` + +
+
+ +### Test + +Run the tests with Hardhat: + +```sh +pnpm test +``` + +### Lint Solidity + +Lint the Solidity code: + +```sh +pnpm lint:sol +``` + +### Lint TypeScript + +Lint the TypeScript code: + +```sh +pnpm lint:ts +``` + +### Report Gas + +See the gas usage per unit test and average gas per method call: + +```sh +REPORT_GAS=true pnpm test +``` + +### Clean + +Delete the smart contract artifacts, the coverage reports and the Hardhat cache: + +```sh +pnpm clean +``` + +### Mocked mode + +The mocked mode allows faster testing and the ability to analyze coverage of the tests. In this mocked version, +encrypted types are not really encrypted, and the tests are run on the original version of the EVM, on a local hardhat +network instance. To run the tests in mocked mode, you can use directly the following command: + +```bash +pnpm test:mock +``` + +To analyze the coverage of the tests (in mocked mode necessarily, as this cannot be done on the real fhEVM node), you +can use this command : + +```bash +pnpm coverage:mock +``` + +Then open the file `coverage/index.html`. You can see there which line or branch for each contract which has been +covered or missed by your test suite. This allows increased security by pointing out missing branches not covered yet by +the current tests. + +> [!Note] +> Due to intrinsic limitations of the original EVM, the mocked version differ in few corner cases from the real fhEVM, the main difference is the difference in gas prices for the FHE operations. This means that before deploying to production, developers still need to run the tests with the original fhEVM node, as a final check in non-mocked mode, with `pnpm test`. + +### Syntax Highlighting + +If you use VSCode, you can get Solidity syntax highlighting with the +[hardhat-solidity](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity) extension. + +## License + +This project is licensed under MIT. diff --git a/e2e/contracts/EncryptedERC20.sol b/e2e/contracts/EncryptedERC20.sol new file mode 100644 index 0000000..ce4305b --- /dev/null +++ b/e2e/contracts/EncryptedERC20.sol @@ -0,0 +1,150 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear + +pragma solidity ^0.8.24; + +import "fhevm/lib/TFHE.sol"; +import "@openzeppelin/contracts/access/Ownable2Step.sol"; + +contract EncryptedERC20 is Ownable2Step { + event Transfer(address indexed from, address indexed to); + event Approval(address indexed owner, address indexed spender); + event Mint(address indexed to, uint64 amount); + + uint64 private _totalSupply; + string private _name; + string private _symbol; + uint8 public constant decimals = 6; + + // A mapping from address to an encrypted balance. + mapping(address => euint64) internal balances; + + // A mapping of the form mapping(owner => mapping(spender => allowance)). + mapping(address => mapping(address => euint64)) internal allowances; + + constructor(string memory name_, string memory symbol_) Ownable(msg.sender) { + _name = name_; + _symbol = symbol_; + } + + // Returns the name of the token. + function name() public view virtual returns (string memory) { + return _name; + } + + // Returns the symbol of the token, usually a shorter version of the name. + function symbol() public view virtual returns (string memory) { + return _symbol; + } + + // Returns the total supply of the token + function totalSupply() public view virtual returns (uint64) { + return _totalSupply; + } + + // Sets the balance of the owner to the given encrypted balance. + function mint(uint64 mintedAmount) public virtual onlyOwner { + balances[owner()] = TFHE.add(balances[owner()], mintedAmount); // overflow impossible because of next line + TFHE.allow(balances[owner()], address(this)); + TFHE.allow(balances[owner()], owner()); + _totalSupply = _totalSupply + mintedAmount; + emit Mint(owner(), mintedAmount); + } + + // Transfers an encrypted amount from the message sender address to the `to` address. + function transfer(address to, einput encryptedAmount, bytes calldata inputProof) public virtual returns (bool) { + transfer(to, TFHE.asEuint64(encryptedAmount, inputProof)); + return true; + } + + // Transfers an amount from the message sender address to the `to` address. + function transfer(address to, euint64 amount) public virtual returns (bool) { + require(TFHE.isSenderAllowed(amount)); + // makes sure the owner has enough tokens + ebool canTransfer = TFHE.le(amount, balances[msg.sender]); + _transfer(msg.sender, to, amount, canTransfer); + return true; + } + + // Returns the balance handle of the caller. + function balanceOf(address wallet) public view virtual returns (euint64) { + return balances[wallet]; + } + + // Sets the `encryptedAmount` as the allowance of `spender` over the caller's tokens. + function approve(address spender, einput encryptedAmount, bytes calldata inputProof) public virtual returns (bool) { + approve(spender, TFHE.asEuint64(encryptedAmount, inputProof)); + return true; + } + + // Sets the `amount` as the allowance of `spender` over the caller's tokens. + function approve(address spender, euint64 amount) public virtual returns (bool) { + require(TFHE.isSenderAllowed(amount)); + address owner = msg.sender; + _approve(owner, spender, amount); + emit Approval(owner, spender); + return true; + } + + // Returns the remaining number of tokens that `spender` is allowed to spend + // on behalf of the caller. + function allowance(address owner, address spender) public view virtual returns (euint64) { + return _allowance(owner, spender); + } + + // Transfers `encryptedAmount` tokens using the caller's allowance. + function transferFrom( + address from, + address to, + einput encryptedAmount, + bytes calldata inputProof + ) public virtual returns (bool) { + transferFrom(from, to, TFHE.asEuint64(encryptedAmount, inputProof)); + return true; + } + + // Transfers `amount` tokens using the caller's allowance. + function transferFrom(address from, address to, euint64 amount) public virtual returns (bool) { + require(TFHE.isSenderAllowed(amount)); + address spender = msg.sender; + ebool isTransferable = _updateAllowance(from, spender, amount); + _transfer(from, to, amount, isTransferable); + return true; + } + + function _approve(address owner, address spender, euint64 amount) internal virtual { + allowances[owner][spender] = amount; + TFHE.allow(amount, address(this)); + TFHE.allow(amount, owner); + TFHE.allow(amount, spender); + } + + function _allowance(address owner, address spender) internal view virtual returns (euint64) { + return allowances[owner][spender]; + } + + function _updateAllowance(address owner, address spender, euint64 amount) internal virtual returns (ebool) { + euint64 currentAllowance = _allowance(owner, spender); + // makes sure the allowance suffices + ebool allowedTransfer = TFHE.le(amount, currentAllowance); + // makes sure the owner has enough tokens + ebool canTransfer = TFHE.le(amount, balances[owner]); + ebool isTransferable = TFHE.and(canTransfer, allowedTransfer); + _approve(owner, spender, TFHE.select(isTransferable, TFHE.sub(currentAllowance, amount), currentAllowance)); + return isTransferable; + } + + // Transfers an encrypted amount. + function _transfer(address from, address to, euint64 amount, ebool isTransferable) internal virtual { + // Add to the balance of `to` and subract from the balance of `from`. + euint64 transferValue = TFHE.select(isTransferable, amount, TFHE.asEuint64(0)); + euint64 newBalanceTo = TFHE.add(balances[to], transferValue); + balances[to] = newBalanceTo; + TFHE.allow(newBalanceTo, address(this)); + TFHE.allow(newBalanceTo, to); + euint64 newBalanceFrom = TFHE.sub(balances[from], transferValue); + balances[from] = newBalanceFrom; + TFHE.allow(newBalanceFrom, address(this)); + TFHE.allow(newBalanceFrom, from); + emit Transfer(from, to); + } +} diff --git a/e2e/contracts/Increment.sol b/e2e/contracts/Increment.sol new file mode 100644 index 0000000..c664290 --- /dev/null +++ b/e2e/contracts/Increment.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear + +pragma solidity ^0.8.24; + +import "fhevm/lib/TFHE.sol"; + +contract Increment { + euint8 public counter; + + constructor() { + counter = TFHE.asEuint8(0); + TFHE.allow(counter, address(this)); + TFHE.allow(counter, msg.sender); + } + + function increment() public { + counter = TFHE.add(counter, 1); + TFHE.allow(counter, address(this)); + TFHE.allow(counter, msg.sender); + } +} diff --git a/e2e/eslint.config.mjs b/e2e/eslint.config.mjs new file mode 100644 index 0000000..03e3173 --- /dev/null +++ b/e2e/eslint.config.mjs @@ -0,0 +1,17 @@ +import eslint from "@eslint/js"; +import globals from "globals"; +import tseslint from "typescript-eslint"; + +export default [ + { + languageOptions: { + globals: globals.node, + }, + linterOptions: { + reportUnusedDisableDirectives: "off", + }, + ignores: ["abi/", "artifacts/", "cache/", "res/", "types/*"], + }, + eslint.configs.recommended, + ...tseslint.configs.recommended, +]; diff --git a/e2e/hardhat.config.ts b/e2e/hardhat.config.ts new file mode 100644 index 0000000..aa116e5 --- /dev/null +++ b/e2e/hardhat.config.ts @@ -0,0 +1,124 @@ +import "@nomicfoundation/hardhat-toolbox"; +import dotenv from "dotenv"; +import "hardhat-deploy"; +import "hardhat-ignore-warnings"; +import type { HardhatUserConfig } from "hardhat/config"; +import { task } from "hardhat/config"; +import type { NetworkUserConfig } from "hardhat/types"; +import { resolve } from "path"; + +// Adjust the import path as needed +import "./tasks/accounts"; +import "./tasks/getEthereumAddress"; + +const dotenvConfigPath: string = process.env.DOTENV_CONFIG_PATH || "./.env"; +dotenv.config({ path: resolve(__dirname, dotenvConfigPath) }); + +// Ensure that we have all the environment variables we need. +const mnemonic: string | undefined = process.env.MNEMONIC; +if (!mnemonic) { + throw new Error("Please set your MNEMONIC in a .env file"); +} + +const chainIds = { + zama: 9000, + local: 9000, + ethereum: 1, + sepolia: 11155111, +}; + +function getChainConfig(chain: keyof typeof chainIds): NetworkUserConfig { + let jsonRpcUrl: string; + switch (chain) { + case "local": + jsonRpcUrl = "http://localhost:8545"; + break; + case "zama": + jsonRpcUrl = "https://devnet.zama.ai"; + break; + case "sepolia": + jsonRpcUrl = "https://eth-sepolia.public.blastapi.io"; + break; + case "ethereum": + jsonRpcUrl = "https://eth-mainnet.public.blastapi.io"; + break; + } + return { + accounts: { + count: 10, + mnemonic, + path: "m/44'/60'/0'/0", + }, + chainId: chainIds[chain], + url: jsonRpcUrl, + }; +} + +task("coverage").setAction(async (taskArgs, hre, runSuper) => { + hre.config.networks.hardhat.allowUnlimitedContractSize = true; + hre.config.networks.hardhat.blockGasLimit = 1099511627775; + await runSuper(taskArgs); +}); + +const config: HardhatUserConfig = { + defaultNetwork: "local", + namedAccounts: { + deployer: 0, + }, + mocha: { + timeout: 500000, + }, + gasReporter: { + currency: "USD", + enabled: process.env.REPORT_GAS ? true : false, + excludeContracts: [], + src: "./contracts", + }, + networks: { + hardhat: { + accounts: { + count: 10, + mnemonic, + path: "m/44'/60'/0'/0", + }, + }, + zama: getChainConfig("zama"), + local: getChainConfig("local"), + sepolia: getChainConfig("sepolia"), + ethereum: getChainConfig("ethereum"), + }, + paths: { + artifacts: "./artifacts", + cache: "./cache", + sources: "./contracts", + tests: "./test", + }, + solidity: { + version: "0.8.24", + settings: { + metadata: { + // Not including the metadata hash + // https://github.com/paulrberg/hardhat-template/issues/31 + bytecodeHash: "none", + }, + // Disable the optimizer when debugging + // https://hardhat.org/hardhat-network/#solidity-optimizer-support + optimizer: { + enabled: true, + runs: 800, + }, + evmVersion: "cancun", + }, + }, + warnings: { + "*": { + "transient-storage": false, + }, + }, + typechain: { + outDir: "types", + target: "ethers-v6", + }, +}; + +export default config; diff --git a/e2e/package.json b/e2e/package.json new file mode 100644 index 0000000..da1e358 --- /dev/null +++ b/e2e/package.json @@ -0,0 +1,96 @@ +{ + "name": "@zama-ai/fhevm-hardhat-template", + "description": "fhEVM hardhat template", + "version": "1.0.0", + "engines": { + "node": ">=20.0.0" + }, + "author": { + "name": "zama-ai", + "url": "https://github.com/zama-ai" + }, + "devDependencies": { + "@eslint/js": "^9.9.0", + "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.6", + "@nomicfoundation/hardhat-toolbox": "^3.0.0", + "@nomicfoundation/hardhat-verify": "^1.0.0", + "@openzeppelin/contracts": "^5.0.2", + "@trivago/prettier-plugin-sort-imports": "^4.0.0", + "@typechain/ethers-v6": "^0.4.0", + "@typechain/hardhat": "^8.0.0", + "@types/chai": "^4.3.4", + "@types/eslint__js": "^8.42.3", + "@types/fs-extra": "^9.0.13", + "@types/mocha": "^10.0.0", + "@types/node": "^18.11.9", + "@typescript-eslint/eslint-plugin": "^8.0.1", + "@typescript-eslint/parser": "^8.0.1", + "chai": "^4.3.7", + "cross-env": "^7.0.3", + "dotenv": "^16.0.3", + "eslint": "^9.9.0", + "eslint-config-prettier": "^8.5.0", + "ethers": "^6.8.0", + "fhevm": "^0.5.9", + "fhevmjs": "0.6.0-8", + "fs-extra": "^10.1.0", + "globals": "^15.9.0", + "hardhat": "^2.22.8", + "hardhat-deploy": "^0.12.4", + "hardhat-gas-reporter": "^1.0.9", + "hardhat-ignore-warnings": "^0.2.11", + "hardhat-preprocessor": "^0.1.5", + "lodash": "^4.17.21", + "mocha": "^10.1.0", + "prettier": "^2.8.4", + "prettier-plugin-solidity": "^1.1.2", + "rimraf": "^4.1.2", + "solhint": "^3.4.0", + "solhint-plugin-prettier": "^0.0.5", + "solidity-coverage": "0.8.12", + "ts-generator": "^0.1.1", + "ts-node": "^10.9.1", + "typechain": "^8.2.0", + "typescript": "^5.5.4", + "typescript-eslint": "^8.0.1" + }, + "files": [ + "contracts" + ], + "keywords": [ + "blockchain", + "ethers", + "ethereum", + "hardhat", + "smart-contracts", + "solidity", + "template", + "typescript", + "typechain" + ], + "publishConfig": { + "access": "public" + }, + "scripts": { + "preinstall": "node tasks/checkNodeVersion.js", + "clean": "rimraf ./artifacts ./cache ./coverage ./types ./coverage.json && pnpm typechain", + "compile": "cross-env TS_NODE_TRANSPILE_ONLY=true hardhat compile", + "deploy:contracts": "hardhat deploy", + "lint": "pnpm lint:sol && pnpm lint:ts && pnpm prettier:check", + "lint:sol": "solhint --max-warnings 25 \"contracts/**/*.sol\"", + "lint:ts": "eslint .", + "postinstall": "DOTENV_CONFIG_PATH=./.env.example pnpm typechain", + "prettier:check": "prettier --check \"**/*.{js,json,md,sol,ts,yml}\"", + "prettier:write": "prettier --write \"**/*.{js,json,md,sol,ts,yml}\"", + "typechain": "cross-env TS_NODE_TRANSPILE_ONLY=true hardhat typechain", + "test": "hardhat test --network sepolia", + "task:getEthereumAddress": "hardhat task:getEthereumAddress", + "task:accounts": "hardhat task:accounts" + }, + "dependencies": { + "extra-bigint": "^1.1.18", + "sqlite3": "^5.1.7" + } +} diff --git a/e2e/pnpm-lock.yaml b/e2e/pnpm-lock.yaml new file mode 100644 index 0000000..74bed86 --- /dev/null +++ b/e2e/pnpm-lock.yaml @@ -0,0 +1,6805 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + extra-bigint: + specifier: ^1.1.18 + version: 1.2.0 + sqlite3: + specifier: ^5.1.7 + version: 5.1.7 + devDependencies: + '@eslint/js': + specifier: ^9.9.0 + version: 9.13.0 + '@nomicfoundation/hardhat-chai-matchers': + specifier: ^2.0.0 + version: 2.0.8(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)))(chai@4.5.0)(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + '@nomicfoundation/hardhat-ethers': + specifier: ^3.0.0 + version: 3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + '@nomicfoundation/hardhat-network-helpers': + specifier: ^1.0.6 + version: 1.0.12(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + '@nomicfoundation/hardhat-toolbox': + specifier: ^3.0.0 + version: 3.0.0(fjzr5sm4cyfazeo2vaqmv3tkyy) + '@nomicfoundation/hardhat-verify': + specifier: ^1.0.0 + version: 1.1.1(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + '@openzeppelin/contracts': + specifier: ^5.0.2 + version: 5.1.0 + '@trivago/prettier-plugin-sort-imports': + specifier: ^4.0.0 + version: 4.3.0(prettier@2.8.8) + '@typechain/ethers-v6': + specifier: ^0.4.0 + version: 0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3) + '@typechain/hardhat': + specifier: ^8.0.0 + version: 8.0.3(@typechain/ethers-v6@0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3))(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))(typechain@8.3.2(typescript@5.6.3)) + '@types/chai': + specifier: ^4.3.4 + version: 4.3.20 + '@types/eslint__js': + specifier: ^8.42.3 + version: 8.42.3 + '@types/fs-extra': + specifier: ^9.0.13 + version: 9.0.13 + '@types/mocha': + specifier: ^10.0.0 + version: 10.0.9 + '@types/node': + specifier: ^18.11.9 + version: 18.19.57 + '@typescript-eslint/eslint-plugin': + specifier: ^8.0.1 + version: 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/parser': + specifier: ^8.0.1 + version: 8.10.0(eslint@9.13.0)(typescript@5.6.3) + chai: + specifier: ^4.3.7 + version: 4.5.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + dotenv: + specifier: ^16.0.3 + version: 16.4.5 + eslint: + specifier: ^9.9.0 + version: 9.13.0 + eslint-config-prettier: + specifier: ^8.5.0 + version: 8.10.0(eslint@9.13.0) + ethers: + specifier: ^6.8.0 + version: 6.13.4 + fhevm: + specifier: ^0.5.9 + version: 0.5.9 + fhevmjs: + specifier: 0.6.0-8 + version: 0.6.0-8 + fs-extra: + specifier: ^10.1.0 + version: 10.1.0 + globals: + specifier: ^15.9.0 + version: 15.11.0 + hardhat: + specifier: ^2.22.8 + version: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) + hardhat-deploy: + specifier: ^0.12.4 + version: 0.12.4 + hardhat-gas-reporter: + specifier: ^1.0.9 + version: 1.0.10(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + hardhat-ignore-warnings: + specifier: ^0.2.11 + version: 0.2.11 + hardhat-preprocessor: + specifier: ^0.1.5 + version: 0.1.5(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + lodash: + specifier: ^4.17.21 + version: 4.17.21 + mocha: + specifier: ^10.1.0 + version: 10.7.3 + prettier: + specifier: ^2.8.4 + version: 2.8.8 + prettier-plugin-solidity: + specifier: ^1.1.2 + version: 1.4.1(prettier@2.8.8) + rimraf: + specifier: ^4.1.2 + version: 4.4.1 + solhint: + specifier: ^3.4.0 + version: 3.6.2(typescript@5.6.3) + solhint-plugin-prettier: + specifier: ^0.0.5 + version: 0.0.5(prettier-plugin-solidity@1.4.1(prettier@2.8.8))(prettier@2.8.8) + solidity-coverage: + specifier: 0.8.12 + version: 0.8.12(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + ts-generator: + specifier: ^0.1.1 + version: 0.1.1 + ts-node: + specifier: ^10.9.1 + version: 10.9.2(@types/node@18.19.57)(typescript@5.6.3) + typechain: + specifier: ^8.2.0 + version: 8.3.2(typescript@5.6.3) + typescript: + specifier: ^5.5.4 + version: 5.6.3 + typescript-eslint: + specifier: ^8.0.1 + version: 8.10.0(eslint@9.13.0)(typescript@5.6.3) + +packages: + + '@adraffy/ens-normalize@1.10.1': + resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + + '@babel/code-frame@7.25.7': + resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.17.7': + resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.7': + resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-environment-visitor@7.24.7': + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.24.7': + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.24.7': + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.24.7': + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.7': + resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.7': + resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.25.7': + resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.8': + resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/template@7.25.7': + resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.23.2': + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.17.0': + resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.8': + resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} + engines: {node: '>=6.9.0'} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.1': + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.7.0': + resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.13.0': + resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.1': + resolution: {integrity: sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ethereumjs/rlp@4.0.1': + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + + '@ethereumjs/util@8.1.0': + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + + '@ethersproject/abi@5.7.0': + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + + '@ethersproject/abstract-provider@5.7.0': + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + + '@ethersproject/abstract-signer@5.7.0': + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + + '@ethersproject/address@5.7.0': + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + + '@ethersproject/base64@5.7.0': + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + + '@ethersproject/basex@5.7.0': + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + + '@ethersproject/bignumber@5.7.0': + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + + '@ethersproject/constants@5.7.0': + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + + '@ethersproject/contracts@5.7.0': + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + + '@ethersproject/hash@5.7.0': + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + + '@ethersproject/hdnode@5.7.0': + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + + '@ethersproject/json-wallets@5.7.0': + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + + '@ethersproject/keccak256@5.7.0': + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + + '@ethersproject/networks@5.7.1': + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + + '@ethersproject/pbkdf2@5.7.0': + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + + '@ethersproject/properties@5.7.0': + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + + '@ethersproject/providers@5.7.2': + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + + '@ethersproject/random@5.7.0': + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + + '@ethersproject/rlp@5.7.0': + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + + '@ethersproject/sha2@5.7.0': + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + + '@ethersproject/signing-key@5.7.0': + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + + '@ethersproject/solidity@5.7.0': + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + + '@ethersproject/strings@5.7.0': + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + + '@ethersproject/transactions@5.7.0': + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + + '@ethersproject/units@5.7.0': + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + + '@ethersproject/wallet@5.7.0': + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + + '@ethersproject/web@5.7.1': + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + + '@ethersproject/wordlists@5.7.0': + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + + '@gar/promisify@1.1.3': + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + + '@humanfs/core@0.19.0': + resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.5': + resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@metamask/eth-sig-util@4.0.1': + resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} + engines: {node: '>=12.0.0'} + + '@noble/curves@1.2.0': + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + + '@noble/curves@1.4.2': + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + + '@noble/hashes@1.2.0': + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + + '@noble/hashes@1.3.2': + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/secp256k1@1.7.1': + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nomicfoundation/edr-darwin-arm64@0.6.4': + resolution: {integrity: sha512-QNQErISLgssV9+qia8sIjRANqtbW8snSDvjspixT/kSQ5ZSGxxctTg7x72wPSrcu8+EBEveIe5uqENIp5GH8HQ==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-darwin-x64@0.6.4': + resolution: {integrity: sha512-cjVmREiwByyc9+oGfvAh49IAw+oVJHF9WWYRD+Tm/ZlSpnEVWxrGNBak2bd/JSYjn+mZE7gmWS4SMRi4nKaLUg==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-arm64-gnu@0.6.4': + resolution: {integrity: sha512-96o9kRIVD6W5VkgKvUOGpWyUGInVQ5BRlME2Fa36YoNsRQMaKtmYJEU0ACosYES6ZTpYC8U5sjMulvPtVoEfOA==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-arm64-musl@0.6.4': + resolution: {integrity: sha512-+JVEW9e5plHrUfQlSgkEj/UONrIU6rADTEk+Yp9pbe+mzNkJdfJYhs5JYiLQRP4OjxH4QOrXI97bKU6FcEbt5Q==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-x64-gnu@0.6.4': + resolution: {integrity: sha512-nzYWW+fO3EZItOeP4CrdMgDXfaGBIBkKg0Y/7ySpUxLqzut40O4Mb0/+quqLAFkacUSWMlFp8nsmypJfOH5zoA==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-x64-musl@0.6.4': + resolution: {integrity: sha512-QFRoE9qSQ2boRrVeQ1HdzU+XN7NUgwZ1SIy5DQt4d7jCP+5qTNsq8LBNcqhRBOATgO63nsweNUhxX/Suj5r1Sw==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-win32-x64-msvc@0.6.4': + resolution: {integrity: sha512-2yopjelNkkCvIjUgBGhrn153IBPLwnsDeNiq6oA0WkeM8tGmQi4td+PGi9jAriUDAkc59Yoi2q9hYA6efiY7Zw==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr@0.6.4': + resolution: {integrity: sha512-YgrSuT3yo5ZQkbvBGqQ7hG+RDvz3YygSkddg4tb1Z0Y6pLXFzwrcEwWaJCFAVeeZxdxGfCgGMUYgRVneK+WXkw==} + engines: {node: '>= 18'} + + '@nomicfoundation/ethereumjs-common@4.0.4': + resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} + + '@nomicfoundation/ethereumjs-rlp@5.0.4': + resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} + engines: {node: '>=18'} + hasBin: true + + '@nomicfoundation/ethereumjs-tx@5.0.4': + resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + + '@nomicfoundation/ethereumjs-util@9.0.4': + resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + + '@nomicfoundation/hardhat-chai-matchers@2.0.8': + resolution: {integrity: sha512-Z5PiCXH4xhNLASROlSUOADfhfpfhYO6D7Hn9xp8PddmHey0jq704cr6kfU8TRrQ4PUZbpfsZadPj+pCfZdjPIg==} + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.0 + chai: ^4.2.0 + ethers: ^6.1.0 + hardhat: ^2.9.4 + + '@nomicfoundation/hardhat-ethers@3.0.8': + resolution: {integrity: sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA==} + peerDependencies: + ethers: ^6.1.0 + hardhat: ^2.0.0 + + '@nomicfoundation/hardhat-network-helpers@1.0.12': + resolution: {integrity: sha512-xTNQNI/9xkHvjmCJnJOTyqDSl8uq1rKb2WOVmixQxFtRd7Oa3ecO8zM0cyC2YmOK+jHB9WPZ+F/ijkHg1CoORA==} + peerDependencies: + hardhat: ^2.9.5 + + '@nomicfoundation/hardhat-toolbox@3.0.0': + resolution: {integrity: sha512-MsteDXd0UagMksqm9KvcFG6gNKYNa3GGNCy73iQ6bEasEgg2v8Qjl6XA5hjs8o5UD5A3153B6W2BIVJ8SxYUtA==} + peerDependencies: + '@nomicfoundation/hardhat-chai-matchers': ^2.0.0 + '@nomicfoundation/hardhat-ethers': ^3.0.0 + '@nomicfoundation/hardhat-network-helpers': ^1.0.0 + '@nomicfoundation/hardhat-verify': ^1.0.0 + '@typechain/ethers-v6': ^0.4.0 + '@typechain/hardhat': ^8.0.0 + '@types/chai': ^4.2.0 + '@types/mocha': '>=9.1.0' + '@types/node': '>=12.0.0' + chai: ^4.2.0 + ethers: ^6.4.0 + hardhat: ^2.11.0 + hardhat-gas-reporter: ^1.0.8 + solidity-coverage: ^0.8.1 + ts-node: '>=8.0.0' + typechain: ^8.2.0 + typescript: '>=4.5.0' + + '@nomicfoundation/hardhat-verify@1.1.1': + resolution: {integrity: sha512-9QsTYD7pcZaQFEA3tBb/D/oCStYDiEVDN7Dxeo/4SCyHRSm86APypxxdOMEPlGmXsAvd+p1j/dTODcpxb8aztA==} + peerDependencies: + hardhat: ^2.0.4 + + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': + resolution: {integrity: sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2': + resolution: {integrity: sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2': + resolution: {integrity: sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2': + resolution: {integrity: sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2': + resolution: {integrity: sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2': + resolution: {integrity: sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2': + resolution: {integrity: sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer@0.1.2': + resolution: {integrity: sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==} + engines: {node: '>= 12'} + + '@npmcli/fs@1.1.1': + resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} + + '@npmcli/move-file@1.1.2': + resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} + engines: {node: '>=10'} + deprecated: This functionality has been moved to @npmcli/fs + + '@openzeppelin/contracts@5.1.0': + resolution: {integrity: sha512-p1ULhl7BXzjjbha5aqst+QMLY+4/LCWADXOCsmLHRM77AqiPjnd9vvUN9sosUfhL9JGKpZ0TjEGxgvnizmWGSA==} + + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + + '@scure/bip32@1.1.5': + resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} + + '@scure/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + + '@scure/bip39@1.1.1': + resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + + '@sentry/core@5.30.0': + resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} + engines: {node: '>=6'} + + '@sentry/hub@5.30.0': + resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} + engines: {node: '>=6'} + + '@sentry/minimal@5.30.0': + resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} + engines: {node: '>=6'} + + '@sentry/node@5.30.0': + resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} + engines: {node: '>=6'} + + '@sentry/tracing@5.30.0': + resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} + engines: {node: '>=6'} + + '@sentry/types@5.30.0': + resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} + engines: {node: '>=6'} + + '@sentry/utils@5.30.0': + resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} + engines: {node: '>=6'} + + '@solidity-parser/parser@0.14.5': + resolution: {integrity: sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==} + + '@solidity-parser/parser@0.16.2': + resolution: {integrity: sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==} + + '@solidity-parser/parser@0.18.0': + resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==} + + '@tootallnate/once@1.1.2': + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + + '@trivago/prettier-plugin-sort-imports@4.3.0': + resolution: {integrity: sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==} + peerDependencies: + '@vue/compiler-sfc': 3.x + prettier: 2.x - 3.x + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@typechain/ethers-v6@0.4.3': + resolution: {integrity: sha512-TrxBsyb4ryhaY9keP6RzhFCviWYApcLCIRMPyWaKp2cZZrfaM3QBoxXTnw/eO4+DAY3l+8O0brNW0WgeQeOiDA==} + peerDependencies: + ethers: 6.x + typechain: ^8.3.1 + typescript: '>=4.7.0' + + '@typechain/hardhat@8.0.3': + resolution: {integrity: sha512-MytSmJJn+gs7Mqrpt/gWkTCOpOQ6ZDfRrRT2gtZL0rfGe4QrU4x9ZdW15fFbVM/XTa+5EsKiOMYXhRABibNeng==} + peerDependencies: + '@typechain/ethers-v6': ^0.4.3 + ethers: ^6.1.0 + hardhat: ^2.9.9 + typechain: ^8.3.1 + + '@types/bn.js@4.11.6': + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + + '@types/bn.js@5.1.6': + resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} + + '@types/chai-as-promised@7.1.8': + resolution: {integrity: sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==} + + '@types/chai@4.3.20': + resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} + + '@types/concat-stream@1.6.1': + resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/eslint__js@8.42.3': + resolution: {integrity: sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/form-data@0.0.33': + resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==} + + '@types/fs-extra@9.0.13': + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + + '@types/glob-to-regexp@0.4.4': + resolution: {integrity: sha512-nDKoaKJYbnn1MZxUY0cA1bPmmgZbg0cTq7Rh13d0KWYNOiKbqoR+2d89SnRPszGh7ROzSwZ/GOjZ4jPbmmZ6Eg==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/keccak@3.0.5': + resolution: {integrity: sha512-Mvu4StIJ9KyfPXDVRv3h0fWNBAjHPBQZ8EPcxhqA8FG6pLzxtytVXU5owB6J2/8xZ+ZspWTXJEUjAHt0pk0I1Q==} + + '@types/lru-cache@5.1.1': + resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/mkdirp@0.5.2': + resolution: {integrity: sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==} + + '@types/mocha@10.0.9': + resolution: {integrity: sha512-sicdRoWtYevwxjOHNMPTl3vSfJM6oyW8o1wXeI7uww6b6xHg8eBznQDNSGBCDJmsE8UMxP05JgZRtsKbTqt//Q==} + + '@types/node@10.17.60': + resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} + + '@types/node@18.19.57': + resolution: {integrity: sha512-I2ioBd/IPrYDMv9UNR5NlPElOZ68QB7yY5V2EsLtSrTO0LM0PnCEFF9biLWHf5k+sIy4ohueCV9t4gk1AEdlVA==} + + '@types/node@22.7.5': + resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + + '@types/node@8.10.66': + resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} + + '@types/pbkdf2@3.1.2': + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + + '@types/qs@6.9.16': + resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} + + '@types/resolve@0.0.8': + resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==} + + '@types/secp256k1@4.0.6': + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + + '@typescript-eslint/eslint-plugin@8.10.0': + resolution: {integrity: sha512-phuB3hoP7FFKbRXxjl+DRlQDuJqhpOnm5MmtROXyWi3uS/Xg2ZXqiQfcG2BJHiN4QKyzdOJi3NEn/qTnjUlkmQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@8.10.0': + resolution: {integrity: sha512-E24l90SxuJhytWJ0pTQydFT46Nk0Z+bsLKo/L8rtQSL93rQ6byd1V/QbDpHUTdLPOMsBCcYXZweADNCfOCmOAg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@8.10.0': + resolution: {integrity: sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.10.0': + resolution: {integrity: sha512-PCpUOpyQSpxBn230yIcK+LeCQaXuxrgCm2Zk1S+PTIRJsEfU6nJ0TtwyH8pIwPK/vJoA+7TZtzyAJSGBz+s/dg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@8.10.0': + resolution: {integrity: sha512-k/E48uzsfJCRRbGLapdZgrX52csmWJ2rcowwPvOZ8lwPUv3xW6CcFeJAXgx4uJm+Ge4+a4tFOkdYvSpxhRhg1w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.10.0': + resolution: {integrity: sha512-3OE0nlcOHaMvQ8Xu5gAfME3/tWVDpb/HxtpUZ1WeOAksZ/h/gwrBzCklaGzwZT97/lBbbxJ16dMA98JMEngW4w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@8.10.0': + resolution: {integrity: sha512-Oq4uZ7JFr9d1ZunE/QKy5egcDRXT/FrS2z/nlxzPua2VHFtmMvFNDvpq1m/hq0ra+T52aUezfcjGRIB7vNJF9w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@typescript-eslint/visitor-keys@8.10.0': + resolution: {integrity: sha512-k8nekgqwr7FadWk548Lfph6V3r9OVqjzAIVskE7orMZR23cGJjAOVazsZSJW+ElyjfTM4wx/1g88Mi70DDtG9A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + abbrev@1.0.9: + resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.13.0: + resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} + engines: {node: '>=0.4.0'} + hasBin: true + + adm-zip@0.4.16: + resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} + engines: {node: '>=0.3.0'} + + aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + + aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + antlr4@4.13.2: + resolution: {integrity: sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==} + engines: {node: '>=16'} + + antlr4ts@0.5.0-alpha.4: + resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-back@3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + + array-back@4.0.2: + resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} + engines: {node: '>=8'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + ast-parents@0.0.1: + resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async@1.5.2: + resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axios@0.21.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@3.0.10: + resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + + bigint-buffer@1.1.5: + resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} + engines: {node: '>= 10.0.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + + bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + + bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cacache@15.3.0: + resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} + engines: {node: '>= 10'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + cbor@8.1.0: + resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} + engines: {node: '>=12.19'} + + chai-as-promised@7.1.2: + resolution: {integrity: sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==} + peerDependencies: + chai: '>= 2.1.2 < 6' + + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + + cli-table3@0.5.1: + resolution: {integrity: sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==} + engines: {node: '>=6'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + + command-line-args@5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + + command-line-usage@6.1.3: + resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} + engines: {node: '>=8.0.0'} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + death@1.1.0: + resolution: {integrity: sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + difflib@0.2.4: + resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + + elliptic@6.5.7: + resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escodegen@1.8.1: + resolution: {integrity: sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==} + engines: {node: '>=0.12.0'} + hasBin: true + + eslint-config-prettier@8.10.0: + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-scope@8.1.0: + resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.1.0: + resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.13.0: + resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.2.0: + resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esprima@2.7.3: + resolution: {integrity: sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==} + engines: {node: '>=0.10.0'} + hasBin: true + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@1.9.3: + resolution: {integrity: sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==} + engines: {node: '>=0.10.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eth-gas-reporter@0.2.27: + resolution: {integrity: sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==} + peerDependencies: + '@codechecks/client': ^0.1.0 + peerDependenciesMeta: + '@codechecks/client': + optional: true + + ethereum-bloom-filters@1.2.0: + resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} + + ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + + ethereum-cryptography@1.2.0: + resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + + ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + + ethereumjs-abi@0.6.8: + resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + + ethereumjs-util@6.2.1: + resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} + + ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} + + ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + + ethers@6.13.4: + resolution: {integrity: sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==} + engines: {node: '>=14.0.0'} + + ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + + ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + + extra-bigint@1.2.0: + resolution: {integrity: sha512-F9T/pcT5xPZTjlFMKGCZgBY2/jKqEPxXHT4kLSwsa7gp7D05nQq8z9NzRTzVy5Z4AOO1E/iD9r9OBz4csGD7nw==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fetch-mock@11.1.5: + resolution: {integrity: sha512-KHmZDnZ1ry0pCTrX4YG5DtThHi0MH+GNI9caESnzX/nMJBrvppUHMvLx47M0WY9oAtKOMiPfZDRpxhlHg89BOA==} + engines: {node: '>=8.0.0'} + peerDependencies: + node-fetch: '*' + peerDependenciesMeta: + node-fetch: + optional: true + + fhevm@0.5.9: + resolution: {integrity: sha512-9cSfmAa4AJUuROd4kESvtNYJpnea1PUvjU7yaNnrJsaHqPkVGQvpnIDEnO4KTsJ36Etup1ksPs8PvyGNYwkatQ==} + engines: {node: '>=20.0.0'} + + fhevmjs@0.6.0-8: + resolution: {integrity: sha512-B8djVV67W6iyGld0U/t+yfeYmvSX9KtkuzTYBZ6CQVQCcmQ+K8Ye6jWO5WsqjmHj5JU9g7DdioBqzx7NV11FQg==} + engines: {node: '>=20'} + hasBin: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-replace@3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} + + find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + fmix@0.1.0: + resolution: {integrity: sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + form-data@2.5.2: + resolution: {integrity: sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==} + engines: {node: '>= 0.12'} + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + fp-ts@1.19.3: + resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-readdir-recursive@1.1.0: + resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-port@3.2.0: + resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} + engines: {node: '>=4'} + + ghost-testrpc@0.0.2: + resolution: {integrity: sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==} + hasBin: true + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@5.0.15: + resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.11.0: + resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} + engines: {node: '>=18'} + + globby@10.0.2: + resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} + engines: {node: '>=8'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + hardhat-deploy@0.12.4: + resolution: {integrity: sha512-bYO8DIyeGxZWlhnMoCBon9HNZb6ji0jQn7ngP1t5UmGhC8rQYhji7B73qETMOFhzt5ECZPr+U52duj3nubsqdQ==} + + hardhat-gas-reporter@1.0.10: + resolution: {integrity: sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==} + peerDependencies: + hardhat: ^2.0.2 + + hardhat-ignore-warnings@0.2.11: + resolution: {integrity: sha512-+nHnRbP6COFZaXE7HAY7TZNE3au5vHe5dkcnyq0XaP07ikT2fJ3NhFY0vn7Deh4Qbz0Z/9Xpnj2ki6Ktgk61pg==} + + hardhat-preprocessor@0.1.5: + resolution: {integrity: sha512-j8m44mmPxpxAAd0G8fPHRHOas/INZdzptSur0TNJvMEGcFdLDhbHHxBcqZVQ/bmiW42q4gC60AP4CXn9EF018g==} + peerDependencies: + hardhat: ^2.0.5 + + hardhat@2.22.13: + resolution: {integrity: sha512-psVJX4FSXDpSXwsU8OcKTJN04pQEj9cFBMX5OPko+OFwbIoiOpvRmafa954/UaA1934npTj8sV3gaTSdx9bPbA==} + hasBin: true + peerDependencies: + ts-node: '*' + typescript: '*' + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + + has-flag@1.0.0: + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} + engines: {node: '>=0.10.0'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + heap@0.2.7: + resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + http-basic@8.1.3: + resolution: {integrity: sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==} + engines: {node: '>=6.0.0'} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + + http-response-object@3.0.2: + resolution: {integrity: sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imul@1.0.1: + resolution: {integrity: sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==} + engines: {node: '>=0.10.0'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + + io-ts@1.10.4: + resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + + is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-subset@0.1.1: + resolution: {integrity: sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + javascript-natural-sort@0.7.1: + resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stream-stringify@3.1.6: + resolution: {integrity: sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==} + engines: {node: '>=7.10.1'} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonschema@1.4.1: + resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} + + keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru_map@0.3.3: + resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + make-fetch-happen@9.1.0: + resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} + engines: {node: '>= 10'} + + markdown-table@1.1.3: + resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} + + match-all@1.2.6: + resolution: {integrity: sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + + minipass-fetch@1.4.1: + resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} + engines: {node: '>=8'} + + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + + minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mnemonist@0.38.5: + resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} + + mocha@10.7.3: + resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} + engines: {node: '>= 14.0.0'} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + murmur-128@0.2.1: + resolution: {integrity: sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==} + + napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + node-abi@3.71.0: + resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} + engines: {node: '>=10'} + + node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-emoji@1.11.0: + resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} + + node-gyp-build@4.8.2: + resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} + hasBin: true + + node-gyp@8.4.1: + resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} + engines: {node: '>= 10.12.0'} + hasBin: true + + node-interval-tree@2.1.2: + resolution: {integrity: sha512-bJ9zMDuNGzVQg1xv0bCPzyEDxHgbrx7/xGj6CDokvizZZmastPsOh0JJLuY8wA5q2SfX1TLNMk7XNV8WxbGxzA==} + engines: {node: '>= 14.0.0'} + + node-tfhe@0.9.1: + resolution: {integrity: sha512-M2CbUVX4DQneaaK/4fygy9lW0zjOOzM8yGWAgbKGRt/Gd07zaloFEGGHW7dbmUaHo022q1uo7nzxyYhe4UgqCw==} + + node-tkms@0.9.0-rc27: + resolution: {integrity: sha512-lRCgH5pHewK5IRkczX1zpDpU0BidGHKDtaN812Yh9fhR97aqKVDWdSidQrOqX7RSstDkHeJ1dDyN6fx2wkQ+4Q==} + + nofilter@3.1.0: + resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} + engines: {node: '>=12.19'} + + nopt@3.0.6: + resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} + hasBin: true + + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + obliterator@2.0.4: + resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ordinal@1.0.3: + resolution: {integrity: sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-cache-control@1.0.1: + resolution: {integrity: sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + prebuild-install@7.1.2: + resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + engines: {node: '>=10'} + hasBin: true + + prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier-plugin-solidity@1.4.1: + resolution: {integrity: sha512-Mq8EtfacVZ/0+uDKTtHZGW3Aa7vEbX/BNx63hmVg6YTiTXSiuKP0amj0G6pGwjmLaOfymWh3QgXEZkjQbU8QRg==} + engines: {node: '>=16'} + peerDependencies: + prettier: '>=2.3.0' + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + + promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + + recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} + + reduce-flatten@2.0.0: + resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} + engines: {node: '>=6'} + + regexparam@3.0.0: + resolution: {integrity: sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==} + engines: {node: '>=8'} + + req-cwd@2.0.0: + resolution: {integrity: sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==} + engines: {node: '>=4'} + + req-from@2.0.0: + resolution: {integrity: sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==} + engines: {node: '>=4'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.1.7: + resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} + + resolve@1.17.0: + resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@4.4.1: + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} + engines: {node: '>=14'} + hasBin: true + + ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + + rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sc-istanbul@0.4.6: + resolution: {integrity: sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==} + hasBin: true + + scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + + secp256k1@4.0.4: + resolution: {integrity: sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==} + engines: {node: '>=18.0.0'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + + sha1@1.1.1: + resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} + + sha3@2.1.4: + resolution: {integrity: sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==} + + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks-proxy-agent@6.2.1: + resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} + engines: {node: '>= 10'} + + socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + solc@0.8.26: + resolution: {integrity: sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==} + engines: {node: '>=10.0.0'} + hasBin: true + + solhint-plugin-prettier@0.0.5: + resolution: {integrity: sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA==} + peerDependencies: + prettier: ^1.15.0 || ^2.0.0 + prettier-plugin-solidity: ^1.0.0-alpha.14 + + solhint@3.6.2: + resolution: {integrity: sha512-85EeLbmkcPwD+3JR7aEMKsVC9YrRSxd4qkXuMzrlf7+z2Eqdfm1wHWq1ffTuo5aDhoZxp2I9yF3QkxZOxOL7aQ==} + hasBin: true + + solidity-comments-darwin-arm64@0.0.2: + resolution: {integrity: sha512-HidWkVLSh7v+Vu0CA7oI21GWP/ZY7ro8g8OmIxE8oTqyMwgMbE8F1yc58Sj682Hj199HCZsjmtn1BE4PCbLiGA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + solidity-comments-darwin-x64@0.0.2: + resolution: {integrity: sha512-Zjs0Ruz6faBTPT6fBecUt6qh4CdloT8Bwoc0+qxRoTn9UhYscmbPQkUgQEbS0FQPysYqVzzxJB4h1Ofbf4wwtA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + solidity-comments-freebsd-x64@0.0.2: + resolution: {integrity: sha512-8Qe4mpjuAxFSwZJVk7B8gAoLCdbtS412bQzBwk63L8dmlHogvE39iT70aAk3RHUddAppT5RMBunlPUCFYJ3ZTw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + solidity-comments-linux-arm64-gnu@0.0.2: + resolution: {integrity: sha512-spkb0MZZnmrP+Wtq4UxP+nyPAVRe82idOjqndolcNR0S9Xvu4ebwq+LvF4HiUgjTDmeiqYiFZQ8T9KGdLSIoIg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + solidity-comments-linux-arm64-musl@0.0.2: + resolution: {integrity: sha512-guCDbHArcjE+JDXYkxx5RZzY1YF6OnAKCo+sTC5fstyW/KGKaQJNPyBNWuwYsQiaEHpvhW1ha537IvlGek8GqA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + solidity-comments-linux-x64-gnu@0.0.2: + resolution: {integrity: sha512-zIqLehBK/g7tvrFmQljrfZXfkEeLt2v6wbe+uFu6kH/qAHZa7ybt8Vc0wYcmjo2U0PeBm15d79ee3AkwbIjFdQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + solidity-comments-linux-x64-musl@0.0.2: + resolution: {integrity: sha512-R9FeDloVlFGTaVkOlELDVC7+1Tjx5WBPI5L8r0AGOPHK3+jOcRh6sKYpI+VskSPDc3vOO46INkpDgUXrKydlIw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + solidity-comments-win32-arm64-msvc@0.0.2: + resolution: {integrity: sha512-QnWJoCQcJj+rnutULOihN9bixOtYWDdF5Rfz9fpHejL1BtNjdLW1om55XNVHGAHPqBxV4aeQQ6OirKnp9zKsug==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + solidity-comments-win32-ia32-msvc@0.0.2: + resolution: {integrity: sha512-vUg4nADtm/NcOtlIymG23NWJUSuMsvX15nU7ynhGBsdKtt8xhdP3C/zA6vjDk8Jg+FXGQL6IHVQ++g/7rSQi0w==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + solidity-comments-win32-x64-msvc@0.0.2: + resolution: {integrity: sha512-36j+KUF4V/y0t3qatHm/LF5sCUCBx2UndxE1kq5bOzh/s+nQgatuyB+Pd5BfuPQHdWu2KaExYe20FlAa6NL7+Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + solidity-comments@0.0.2: + resolution: {integrity: sha512-G+aK6qtyUfkn1guS8uzqUeua1dURwPlcOjoTYW/TwmXAcE7z/1+oGCfZUdMSe4ZMKklNbVZNiG5ibnF8gkkFfw==} + engines: {node: '>= 12'} + + solidity-coverage@0.8.12: + resolution: {integrity: sha512-8cOB1PtjnjFRqOgwFiD8DaUsYJtVJ6+YdXQtSZDrLGf8cdhhh8xzTtGzVTGeBf15kTv0v7lYPJlV/az7zLEPJw==} + hasBin: true + peerDependencies: + hardhat: ^2.11.0 + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.2.0: + resolution: {integrity: sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==} + engines: {node: '>=0.8.0'} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + sqlite3@5.1.7: + resolution: {integrity: sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==} + + ssri@8.0.1: + resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} + engines: {node: '>= 8'} + + stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + string-format@2.0.0: + resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==} + + string-width@2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@3.2.3: + resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} + engines: {node: '>=0.8.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + sync-request@6.1.0: + resolution: {integrity: sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==} + engines: {node: '>=8.0.0'} + + sync-rpc@1.3.6: + resolution: {integrity: sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==} + + table-layout@1.0.2: + resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} + engines: {node: '>=8.0.0'} + + table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} + engines: {node: '>=10.0.0'} + + tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + tfhe@0.9.1: + resolution: {integrity: sha512-kmtl7KfCCZJaFhm9lUYsTtat+yT0qzOiO6bOidM2Pt7/7jptkbS2/myeGHxb9qi2/aJ30g2joo1euKZPa207tg==} + + then-request@6.0.2: + resolution: {integrity: sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==} + engines: {node: '>=6.0.0'} + + tkms@0.9.0-rc27: + resolution: {integrity: sha512-sSO1jb4/gw0FjS+AubW35/KnJfx1qBp2EuIb0gLg7247DS2VlsBh2iNlBtHKKBevhkgfvjdOt0YZT1J0y9Bv/Q==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-command-line-args@2.5.1: + resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==} + hasBin: true + + ts-essentials@1.0.4: + resolution: {integrity: sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ==} + + ts-essentials@7.0.3: + resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} + peerDependencies: + typescript: '>=3.7.0' + + ts-generator@0.1.1: + resolution: {integrity: sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ==} + hasBin: true + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + tsort@0.0.1: + resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + typechain@8.3.2: + resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} + hasBin: true + peerDependencies: + typescript: '>=4.3.0' + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript-eslint@8.10.0: + resolution: {integrity: sha512-YIu230PeN7z9zpu/EtqCIuRVHPs4iSlqW6TEvjbyDAE3MZsSl2RXBo+5ag+lbABCG8sFM1WVKEXhlQ8Ml8A3Fw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + typical@4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} + + typical@5.2.0: + resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} + engines: {node: '>=8'} + + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} + engines: {node: '>=14.0'} + + unique-filename@1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + + unique-slug@2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} + + utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + web3-errors@1.3.0: + resolution: {integrity: sha512-j5JkAKCtuVMbY3F5PYXBqg1vWrtF4jcyyMY1rlw8a4PV67AkqlepjGgpzWJZd56Mt+TvHy6DA1F/3Id8LatDSQ==} + engines: {node: '>=14', npm: '>=6.12.0'} + + web3-types@1.8.0: + resolution: {integrity: sha512-Z51wFLPGhZM/1uDxrxE8gzju3t2aEdRGn+YmLX463id5UjTuMEmP/9in1GFjqrsPB3m86czs8RnGBUt3ovueMw==} + engines: {node: '>=14', npm: '>=6.12.0'} + + web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} + + web3-validator@2.0.6: + resolution: {integrity: sha512-qn9id0/l1bWmvH4XfnG/JtGKKwut2Vokl6YXP5Kfg424npysmtRLe9DgiNBM9Op7QL/aSiaA0TVXibuIuWcizg==} + engines: {node: '>=14', npm: '>=6.12.0'} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wordwrapjs@4.0.1: + resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} + engines: {node: '>=8.0.0'} + + workerpool@6.5.1: + resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zksync-ethers@5.9.2: + resolution: {integrity: sha512-Y2Mx6ovvxO6UdC2dePLguVzvNToOY8iLWeq5ne+jgGSJxAi/f4He/NF6FNsf6x1aWX0o8dy4Df8RcOQXAkj5qw==} + engines: {node: '>=16.0.0'} + peerDependencies: + ethers: ~5.7.0 + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + +snapshots: + + '@adraffy/ens-normalize@1.10.1': {} + + '@babel/code-frame@7.25.7': + dependencies: + '@babel/highlight': 7.25.7 + picocolors: 1.1.1 + + '@babel/generator@7.17.7': + dependencies: + '@babel/types': 7.17.0 + jsesc: 2.5.2 + source-map: 0.5.7 + + '@babel/generator@7.25.7': + dependencies: + '@babel/types': 7.25.8 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + + '@babel/helper-environment-visitor@7.24.7': + dependencies: + '@babel/types': 7.25.8 + + '@babel/helper-function-name@7.24.7': + dependencies: + '@babel/template': 7.25.7 + '@babel/types': 7.25.8 + + '@babel/helper-hoist-variables@7.24.7': + dependencies: + '@babel/types': 7.25.8 + + '@babel/helper-split-export-declaration@7.24.7': + dependencies: + '@babel/types': 7.25.8 + + '@babel/helper-string-parser@7.25.7': {} + + '@babel/helper-validator-identifier@7.25.7': {} + + '@babel/highlight@7.25.7': + dependencies: + '@babel/helper-validator-identifier': 7.25.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/parser@7.25.8': + dependencies: + '@babel/types': 7.25.8 + + '@babel/template@7.25.7': + dependencies: + '@babel/code-frame': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/types': 7.25.8 + + '@babel/traverse@7.23.2': + dependencies: + '@babel/code-frame': 7.25.7 + '@babel/generator': 7.25.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.25.8 + '@babel/types': 7.25.8 + debug: 4.3.7(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.17.0': + dependencies: + '@babel/helper-validator-identifier': 7.25.7 + to-fast-properties: 2.0.0 + + '@babel/types@7.25.8': + dependencies: + '@babel/helper-string-parser': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + to-fast-properties: 2.0.0 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@eslint-community/eslint-utils@4.4.0(eslint@9.13.0)': + dependencies: + eslint: 9.13.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.1': {} + + '@eslint/config-array@0.18.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.7(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.7.0': {} + + '@eslint/eslintrc@3.1.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.7(supports-color@8.1.1) + espree: 10.2.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.13.0': {} + + '@eslint/object-schema@2.1.4': {} + + '@eslint/plugin-kit@0.2.1': + dependencies: + levn: 0.4.1 + + '@ethereumjs/rlp@4.0.1': {} + + '@ethereumjs/util@8.1.0': + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.2.1 + micro-ftch: 0.3.1 + + '@ethersproject/abi@5.7.0': + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/abstract-provider@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + + '@ethersproject/abstract-signer@5.7.0': + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + + '@ethersproject/address@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 + + '@ethersproject/base64@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + + '@ethersproject/basex@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/properties': 5.7.0 + + '@ethersproject/bignumber@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 + + '@ethersproject/bytes@5.7.0': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/constants@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + + '@ethersproject/contracts@5.7.0': + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + + '@ethersproject/hash@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/hdnode@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + + '@ethersproject/json-wallets@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + + '@ethersproject/keccak256@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + js-sha3: 0.8.0 + + '@ethersproject/logger@5.7.0': {} + + '@ethersproject/networks@5.7.1': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/pbkdf2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/sha2': 5.7.0 + + '@ethersproject/properties@5.7.0': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/providers@5.7.2': + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bech32: 1.1.4 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@ethersproject/random@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/rlp@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/sha2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + + '@ethersproject/signing-key@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 + + '@ethersproject/solidity@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/strings@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/transactions@5.7.0': + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + + '@ethersproject/units@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/wallet@5.7.0': + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + + '@ethersproject/web@5.7.1': + dependencies: + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/wordlists@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@fastify/busboy@2.1.1': {} + + '@gar/promisify@1.1.3': + optional: true + + '@humanfs/core@0.19.0': {} + + '@humanfs/node@0.16.5': + dependencies: + '@humanfs/core': 0.19.0 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@metamask/eth-sig-util@4.0.1': + dependencies: + ethereumjs-abi: 0.6.8 + ethereumjs-util: 6.2.1 + ethjs-util: 0.1.6 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + + '@noble/curves@1.2.0': + dependencies: + '@noble/hashes': 1.3.2 + + '@noble/curves@1.4.2': + dependencies: + '@noble/hashes': 1.4.0 + + '@noble/hashes@1.2.0': {} + + '@noble/hashes@1.3.2': {} + + '@noble/hashes@1.4.0': {} + + '@noble/hashes@1.5.0': {} + + '@noble/secp256k1@1.7.1': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@nomicfoundation/edr-darwin-arm64@0.6.4': {} + + '@nomicfoundation/edr-darwin-x64@0.6.4': {} + + '@nomicfoundation/edr-linux-arm64-gnu@0.6.4': {} + + '@nomicfoundation/edr-linux-arm64-musl@0.6.4': {} + + '@nomicfoundation/edr-linux-x64-gnu@0.6.4': {} + + '@nomicfoundation/edr-linux-x64-musl@0.6.4': {} + + '@nomicfoundation/edr-win32-x64-msvc@0.6.4': {} + + '@nomicfoundation/edr@0.6.4': + dependencies: + '@nomicfoundation/edr-darwin-arm64': 0.6.4 + '@nomicfoundation/edr-darwin-x64': 0.6.4 + '@nomicfoundation/edr-linux-arm64-gnu': 0.6.4 + '@nomicfoundation/edr-linux-arm64-musl': 0.6.4 + '@nomicfoundation/edr-linux-x64-gnu': 0.6.4 + '@nomicfoundation/edr-linux-x64-musl': 0.6.4 + '@nomicfoundation/edr-win32-x64-msvc': 0.6.4 + + '@nomicfoundation/ethereumjs-common@4.0.4': + dependencies: + '@nomicfoundation/ethereumjs-util': 9.0.4 + transitivePeerDependencies: + - c-kzg + + '@nomicfoundation/ethereumjs-rlp@5.0.4': {} + + '@nomicfoundation/ethereumjs-tx@5.0.4': + dependencies: + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + ethereum-cryptography: 0.1.3 + + '@nomicfoundation/ethereumjs-util@9.0.4': + dependencies: + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + ethereum-cryptography: 0.1.3 + + '@nomicfoundation/hardhat-chai-matchers@2.0.8(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)))(chai@4.5.0)(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))': + dependencies: + '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + '@types/chai-as-promised': 7.1.8 + chai: 4.5.0 + chai-as-promised: 7.1.2(chai@4.5.0) + deep-eql: 4.1.4 + ethers: 6.13.4 + hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) + ordinal: 1.0.3 + + '@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))': + dependencies: + debug: 4.3.7(supports-color@8.1.1) + ethers: 6.13.4 + hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) + lodash.isequal: 4.5.0 + transitivePeerDependencies: + - supports-color + + '@nomicfoundation/hardhat-network-helpers@1.0.12(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))': + dependencies: + ethereumjs-util: 7.1.5 + hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) + + '@nomicfoundation/hardhat-toolbox@3.0.0(fjzr5sm4cyfazeo2vaqmv3tkyy)': + dependencies: + '@nomicfoundation/hardhat-chai-matchers': 2.0.8(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)))(chai@4.5.0)(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + '@nomicfoundation/hardhat-network-helpers': 1.0.12(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + '@nomicfoundation/hardhat-verify': 1.1.1(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + '@typechain/ethers-v6': 0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3) + '@typechain/hardhat': 8.0.3(@typechain/ethers-v6@0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3))(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))(typechain@8.3.2(typescript@5.6.3)) + '@types/chai': 4.3.20 + '@types/mocha': 10.0.9 + '@types/node': 18.19.57 + chai: 4.5.0 + ethers: 6.13.4 + hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) + hardhat-gas-reporter: 1.0.10(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + solidity-coverage: 0.8.12(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) + ts-node: 10.9.2(@types/node@18.19.57)(typescript@5.6.3) + typechain: 8.3.2(typescript@5.6.3) + typescript: 5.6.3 + + '@nomicfoundation/hardhat-verify@1.1.1(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))': + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/address': 5.7.0 + cbor: 8.1.0 + chalk: 2.4.2 + debug: 4.3.7(supports-color@8.1.1) + hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) + lodash.clonedeep: 4.5.0 + semver: 6.3.1 + table: 6.8.2 + undici: 5.28.4 + transitivePeerDependencies: + - supports-color + + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer@0.1.2': + optionalDependencies: + '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.2 + '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.2 + '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.2 + + '@npmcli/fs@1.1.1': + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.6.3 + optional: true + + '@npmcli/move-file@1.1.2': + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + optional: true + + '@openzeppelin/contracts@5.1.0': {} + + '@scure/base@1.1.9': {} + + '@scure/bip32@1.1.5': + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/base': 1.1.9 + + '@scure/bip32@1.4.0': + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.1.1': + dependencies: + '@noble/hashes': 1.2.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.3.0': + dependencies: + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + + '@sentry/core@5.30.0': + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + + '@sentry/hub@5.30.0': + dependencies: + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + + '@sentry/minimal@5.30.0': + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/types': 5.30.0 + tslib: 1.14.1 + + '@sentry/node@5.30.0': + dependencies: + '@sentry/core': 5.30.0 + '@sentry/hub': 5.30.0 + '@sentry/tracing': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + cookie: 0.4.2 + https-proxy-agent: 5.0.1 + lru_map: 0.3.3 + tslib: 1.14.1 + transitivePeerDependencies: + - supports-color + + '@sentry/tracing@5.30.0': + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + + '@sentry/types@5.30.0': {} + + '@sentry/utils@5.30.0': + dependencies: + '@sentry/types': 5.30.0 + tslib: 1.14.1 + + '@solidity-parser/parser@0.14.5': + dependencies: + antlr4ts: 0.5.0-alpha.4 + + '@solidity-parser/parser@0.16.2': + dependencies: + antlr4ts: 0.5.0-alpha.4 + + '@solidity-parser/parser@0.18.0': {} + + '@tootallnate/once@1.1.2': + optional: true + + '@trivago/prettier-plugin-sort-imports@4.3.0(prettier@2.8.8)': + dependencies: + '@babel/generator': 7.17.7 + '@babel/parser': 7.25.8 + '@babel/traverse': 7.23.2 + '@babel/types': 7.17.0 + javascript-natural-sort: 0.7.1 + lodash: 4.17.21 + prettier: 2.8.8 + transitivePeerDependencies: + - supports-color + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@typechain/ethers-v6@0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3)': + dependencies: + ethers: 6.13.4 + lodash: 4.17.21 + ts-essentials: 7.0.3(typescript@5.6.3) + typechain: 8.3.2(typescript@5.6.3) + typescript: 5.6.3 + + '@typechain/hardhat@8.0.3(@typechain/ethers-v6@0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3))(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))(typechain@8.3.2(typescript@5.6.3))': + dependencies: + '@typechain/ethers-v6': 0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3) + ethers: 6.13.4 + fs-extra: 9.1.0 + hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) + typechain: 8.3.2(typescript@5.6.3) + + '@types/bn.js@4.11.6': + dependencies: + '@types/node': 18.19.57 + + '@types/bn.js@5.1.6': + dependencies: + '@types/node': 18.19.57 + + '@types/chai-as-promised@7.1.8': + dependencies: + '@types/chai': 4.3.20 + + '@types/chai@4.3.20': {} + + '@types/concat-stream@1.6.1': + dependencies: + '@types/node': 18.19.57 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + + '@types/eslint__js@8.42.3': + dependencies: + '@types/eslint': 9.6.1 + + '@types/estree@1.0.6': {} + + '@types/form-data@0.0.33': + dependencies: + '@types/node': 18.19.57 + + '@types/fs-extra@9.0.13': + dependencies: + '@types/node': 18.19.57 + + '@types/glob-to-regexp@0.4.4': {} + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 18.19.57 + + '@types/json-schema@7.0.15': {} + + '@types/keccak@3.0.5': + dependencies: + '@types/node': 18.19.57 + + '@types/lru-cache@5.1.1': {} + + '@types/minimatch@5.1.2': {} + + '@types/mkdirp@0.5.2': + dependencies: + '@types/node': 18.19.57 + + '@types/mocha@10.0.9': {} + + '@types/node@10.17.60': {} + + '@types/node@18.19.57': + dependencies: + undici-types: 5.26.5 + + '@types/node@22.7.5': + dependencies: + undici-types: 6.19.8 + + '@types/node@8.10.66': {} + + '@types/pbkdf2@3.1.2': + dependencies: + '@types/node': 18.19.57 + + '@types/prettier@2.7.3': {} + + '@types/qs@6.9.16': {} + + '@types/resolve@0.0.8': + dependencies: + '@types/node': 18.19.57 + + '@types/secp256k1@4.0.6': + dependencies: + '@types/node': 18.19.57 + + '@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3)': + dependencies: + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 8.10.0(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.10.0 + '@typescript-eslint/type-utils': 8.10.0(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.10.0 + eslint: 9.13.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.10.0(eslint@9.13.0)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.10.0 + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.10.0 + debug: 4.3.7(supports-color@8.1.1) + eslint: 9.13.0 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.10.0': + dependencies: + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/visitor-keys': 8.10.0 + + '@typescript-eslint/type-utils@8.10.0(eslint@9.13.0)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0)(typescript@5.6.3) + debug: 4.3.7(supports-color@8.1.1) + ts-api-utils: 1.3.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - eslint + - supports-color + + '@typescript-eslint/types@8.10.0': {} + + '@typescript-eslint/typescript-estree@8.10.0(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/visitor-keys': 8.10.0 + debug: 4.3.7(supports-color@8.1.1) + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.10.0(eslint@9.13.0)(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0) + '@typescript-eslint/scope-manager': 8.10.0 + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) + eslint: 9.13.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@8.10.0': + dependencies: + '@typescript-eslint/types': 8.10.0 + eslint-visitor-keys: 3.4.3 + + abbrev@1.0.9: {} + + abbrev@1.1.1: + optional: true + + acorn-jsx@5.3.2(acorn@8.13.0): + dependencies: + acorn: 8.13.0 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.13.0 + + acorn@8.13.0: {} + + adm-zip@0.4.16: {} + + aes-js@3.0.0: {} + + aes-js@4.0.0-beta.5: {} + + agent-base@6.0.2: + dependencies: + debug: 4.3.7(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + agentkeepalive@4.5.0: + dependencies: + humanize-ms: 1.2.1 + optional: true + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + amdefine@1.0.1: + optional: true + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@3.0.1: {} + + ansi-regex@5.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + antlr4@4.13.2: {} + + antlr4ts@0.5.0-alpha.4: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + aproba@2.0.0: + optional: true + + are-we-there-yet@3.0.1: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + optional: true + + arg@4.1.3: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-back@3.1.0: {} + + array-back@4.0.2: {} + + array-union@2.1.0: {} + + array-uniq@1.0.3: {} + + asap@2.0.6: {} + + assertion-error@1.1.0: {} + + ast-parents@0.0.1: {} + + astral-regex@2.0.0: {} + + async@1.5.2: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + axios@0.21.4(debug@4.3.7): + dependencies: + follow-redirects: 1.15.9(debug@4.3.7) + transitivePeerDependencies: + - debug + + axios@1.7.7: + dependencies: + follow-redirects: 1.15.9(debug@4.3.7) + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + base-x@3.0.10: + dependencies: + safe-buffer: 5.2.1 + + base64-js@1.5.1: {} + + bech32@1.1.4: {} + + bigint-buffer@1.1.5: + dependencies: + bindings: 1.5.0 + + binary-extensions@2.3.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + blakejs@1.2.1: {} + + bn.js@4.11.6: {} + + bn.js@4.12.0: {} + + bn.js@5.2.1: {} + + boxen@5.1.2: + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + brorand@1.1.0: {} + + browser-stdout@1.3.1: {} + + browserify-aes@1.2.0: + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + bs58@4.0.1: + dependencies: + base-x: 3.0.10 + + bs58check@2.1.2: + dependencies: + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + + buffer-from@1.1.2: {} + + buffer-xor@1.0.3: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bytes@3.1.2: {} + + cacache@15.3.0: + dependencies: + '@npmcli/fs': 1.1.1 + '@npmcli/move-file': 1.1.2 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 7.2.3 + infer-owner: 1.0.4 + lru-cache: 6.0.0 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 8.0.1 + tar: 6.2.1 + unique-filename: 1.1.1 + transitivePeerDependencies: + - bluebird + optional: true + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + callsites@3.1.0: {} + + camelcase@6.3.0: {} + + caseless@0.12.0: {} + + cbor@8.1.0: + dependencies: + nofilter: 3.1.0 + + chai-as-promised@7.1.2(chai@4.5.0): + dependencies: + chai: 4.5.0 + check-error: 1.0.3 + + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + charenc@0.0.2: {} + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.1: + dependencies: + readdirp: 4.0.2 + + chownr@1.1.4: {} + + chownr@2.0.0: {} + + ci-info@2.0.0: {} + + cipher-base@1.0.4: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + clean-stack@2.2.0: {} + + cli-boxes@2.2.1: {} + + cli-table3@0.5.1: + dependencies: + object-assign: 4.1.1 + string-width: 2.1.1 + optionalDependencies: + colors: 1.4.0 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-support@1.1.3: + optional: true + + colors@1.4.0: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + command-exists@1.2.9: {} + + command-line-args@5.2.1: + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + + command-line-usage@6.1.3: + dependencies: + array-back: 4.0.2 + chalk: 2.4.2 + table-layout: 1.0.2 + typical: 5.2.0 + + commander@10.0.1: {} + + commander@11.1.0: {} + + commander@8.3.0: {} + + concat-map@0.0.1: {} + + concat-stream@1.6.2: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + + console-control-strings@1.1.0: + optional: true + + cookie@0.4.2: {} + + core-util-is@1.0.3: {} + + cosmiconfig@8.3.6(typescript@5.6.3): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.6.3 + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + create-require@1.1.1: {} + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.3 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypt@0.0.2: {} + + death@1.1.0: {} + + debug@4.3.7(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@4.0.0: {} + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + + deep-extend@0.6.0: {} + + deep-is@0.1.4: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + delayed-stream@1.0.0: {} + + delegates@1.0.0: + optional: true + + depd@2.0.0: {} + + dequal@2.0.3: {} + + detect-libc@2.0.3: {} + + diff@4.0.2: {} + + diff@5.2.0: {} + + difflib@0.2.4: + dependencies: + heap: 0.2.7 + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dotenv@16.4.5: {} + + elliptic@6.5.4: + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + elliptic@6.5.7: + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + emoji-regex@8.0.0: {} + + encode-utf8@1.0.3: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + env-paths@2.2.1: {} + + err-code@2.0.3: + optional: true + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escodegen@1.8.1: + dependencies: + esprima: 2.7.3 + estraverse: 1.9.3 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.2.0 + + eslint-config-prettier@8.10.0(eslint@9.13.0): + dependencies: + eslint: 9.13.0 + + eslint-scope@8.1.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.1.0: {} + + eslint@9.13.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0) + '@eslint-community/regexpp': 4.11.1 + '@eslint/config-array': 0.18.0 + '@eslint/core': 0.7.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.13.0 + '@eslint/plugin-kit': 0.2.1 + '@humanfs/node': 0.16.5 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.7(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint-scope: 8.1.0 + eslint-visitor-keys: 4.1.0 + espree: 10.2.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@10.2.0: + dependencies: + acorn: 8.13.0 + acorn-jsx: 5.3.2(acorn@8.13.0) + eslint-visitor-keys: 4.1.0 + + esprima@2.7.3: {} + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@1.9.3: {} + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + eth-gas-reporter@0.2.27: + dependencies: + '@solidity-parser/parser': 0.14.5 + axios: 1.7.7 + cli-table3: 0.5.1 + colors: 1.4.0 + ethereum-cryptography: 1.2.0 + ethers: 5.7.2 + fs-readdir-recursive: 1.1.0 + lodash: 4.17.21 + markdown-table: 1.1.3 + mocha: 10.7.3 + req-cwd: 2.0.0 + sha1: 1.1.1 + sync-request: 6.1.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + ethereum-bloom-filters@1.2.0: + dependencies: + '@noble/hashes': 1.5.0 + + ethereum-cryptography@0.1.3: + dependencies: + '@types/pbkdf2': 3.1.2 + '@types/secp256k1': 4.0.6 + blakejs: 1.2.1 + browserify-aes: 1.2.0 + bs58check: 2.1.2 + create-hash: 1.2.0 + create-hmac: 1.1.7 + hash.js: 1.1.7 + keccak: 3.0.4 + pbkdf2: 3.1.2 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + scrypt-js: 3.0.1 + secp256k1: 4.0.4 + setimmediate: 1.0.5 + + ethereum-cryptography@1.2.0: + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/bip32': 1.1.5 + '@scure/bip39': 1.1.1 + + ethereum-cryptography@2.2.1: + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + + ethereumjs-abi@0.6.8: + dependencies: + bn.js: 4.12.0 + ethereumjs-util: 6.2.1 + + ethereumjs-util@6.2.1: + dependencies: + '@types/bn.js': 4.11.6 + bn.js: 4.12.0 + create-hash: 1.2.0 + elliptic: 6.5.7 + ethereum-cryptography: 0.1.3 + ethjs-util: 0.1.6 + rlp: 2.2.7 + + ethereumjs-util@7.1.5: + dependencies: + '@types/bn.js': 5.1.6 + bn.js: 5.2.1 + create-hash: 1.2.0 + ethereum-cryptography: 0.1.3 + rlp: 2.2.7 + + ethers@5.7.2: + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/units': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@ethersproject/web': 5.7.1 + '@ethersproject/wordlists': 5.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + ethers@6.13.4: + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 22.7.5 + aes-js: 4.0.0-beta.5 + tslib: 2.7.0 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + ethjs-unit@0.1.6: + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + + ethjs-util@0.1.6: + dependencies: + is-hex-prefixed: 1.0.0 + strip-hex-prefix: 1.0.0 + + evp_bytestokey@1.0.3: + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + + expand-template@2.0.3: {} + + extra-bigint@1.2.0: {} + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.3: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + fetch-mock@11.1.5: + dependencies: + '@types/glob-to-regexp': 0.4.4 + dequal: 2.0.3 + glob-to-regexp: 0.4.1 + is-subset: 0.1.1 + regexparam: 3.0.0 + + fhevm@0.5.9: + dependencies: + '@openzeppelin/contracts': 5.1.0 + + fhevmjs@0.6.0-8: + dependencies: + '@types/keccak': 3.0.5 + bigint-buffer: 1.1.5 + commander: 11.1.0 + fetch-mock: 11.1.5 + node-tfhe: 0.9.1 + node-tkms: 0.9.0-rc27 + sha3: 2.1.4 + tfhe: 0.9.1 + tkms: 0.9.0-rc27 + url: 0.11.4 + web3-validator: 2.0.6 + transitivePeerDependencies: + - node-fetch + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-uri-to-path@1.0.0: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-replace@3.0.0: + dependencies: + array-back: 3.1.0 + + find-up@2.1.0: + dependencies: + locate-path: 2.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + + flat@5.0.2: {} + + flatted@3.3.1: {} + + fmix@0.1.0: + dependencies: + imul: 1.0.1 + + follow-redirects@1.15.9(debug@4.3.7): + optionalDependencies: + debug: 4.3.7(supports-color@8.1.1) + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + form-data@2.5.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + safe-buffer: 5.2.1 + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + fp-ts@1.19.3: {} + + fs-constants@1.0.0: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-readdir-recursive@1.1.0: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gauge@4.0.4: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + optional: true + + get-caller-file@2.0.5: {} + + get-func-name@2.0.2: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-port@3.2.0: {} + + ghost-testrpc@0.0.2: + dependencies: + chalk: 2.4.2 + node-emoji: 1.11.0 + + github-from-package@0.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@5.0.15: + dependencies: + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@7.1.7: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@7.2.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + glob@9.3.5: + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.11.1 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globals@15.11.0: {} + + globby@10.0.2: + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + glob: 7.2.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + + hardhat-deploy@0.12.4: + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@types/qs': 6.9.16 + axios: 0.21.4(debug@4.3.7) + chalk: 4.1.2 + chokidar: 3.6.0 + debug: 4.3.7(supports-color@8.1.1) + enquirer: 2.4.1 + ethers: 5.7.2 + form-data: 4.0.1 + fs-extra: 10.1.0 + match-all: 1.2.6 + murmur-128: 0.2.1 + qs: 6.13.0 + zksync-ethers: 5.9.2(ethers@5.7.2) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + hardhat-gas-reporter@1.0.10(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)): + dependencies: + array-uniq: 1.0.3 + eth-gas-reporter: 0.2.27 + hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) + sha1: 1.1.1 + transitivePeerDependencies: + - '@codechecks/client' + - bufferutil + - debug + - utf-8-validate + + hardhat-ignore-warnings@0.2.11: + dependencies: + minimatch: 5.1.6 + node-interval-tree: 2.1.2 + solidity-comments: 0.0.2 + + hardhat-preprocessor@0.1.5(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)): + dependencies: + hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) + murmur-128: 0.2.1 + + hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3): + dependencies: + '@ethersproject/abi': 5.7.0 + '@metamask/eth-sig-util': 4.0.1 + '@nomicfoundation/edr': 0.6.4 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-tx': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + '@nomicfoundation/solidity-analyzer': 0.1.2 + '@sentry/node': 5.30.0 + '@types/bn.js': 5.1.6 + '@types/lru-cache': 5.1.1 + adm-zip: 0.4.16 + aggregate-error: 3.1.0 + ansi-escapes: 4.3.2 + boxen: 5.1.2 + chalk: 2.4.2 + chokidar: 4.0.1 + ci-info: 2.0.0 + debug: 4.3.7(supports-color@8.1.1) + enquirer: 2.4.1 + env-paths: 2.2.1 + ethereum-cryptography: 1.2.0 + ethereumjs-abi: 0.6.8 + find-up: 2.1.0 + fp-ts: 1.19.3 + fs-extra: 7.0.1 + glob: 7.2.0 + immutable: 4.3.7 + io-ts: 1.10.4 + json-stream-stringify: 3.1.6 + keccak: 3.0.4 + lodash: 4.17.21 + mnemonist: 0.38.5 + mocha: 10.7.3 + p-map: 4.0.0 + raw-body: 2.5.2 + resolve: 1.17.0 + semver: 6.3.1 + solc: 0.8.26(debug@4.3.7) + source-map-support: 0.5.21 + stacktrace-parser: 0.1.10 + tsort: 0.0.1 + undici: 5.28.4 + uuid: 8.3.2 + ws: 7.5.10 + optionalDependencies: + ts-node: 10.9.2(@types/node@18.19.57)(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - bufferutil + - c-kzg + - supports-color + - utf-8-validate + + has-flag@1.0.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + has-unicode@2.0.1: + optional: true + + hash-base@3.1.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + heap@0.2.7: {} + + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + http-basic@8.1.3: + dependencies: + caseless: 0.12.0 + concat-stream: 1.6.2 + http-response-object: 3.0.2 + parse-cache-control: 1.0.1 + + http-cache-semantics@4.1.1: + optional: true + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy-agent@4.0.1: + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.3.7(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + optional: true + + http-response-object@3.0.2: + dependencies: + '@types/node': 10.17.60 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.7(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + optional: true + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + immutable@4.3.7: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imul@1.0.1: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + infer-owner@1.0.4: + optional: true + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + interpret@1.4.0: {} + + io-ts@1.10.4: + dependencies: + fp-ts: 1.19.3 + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + optional: true + + is-arguments@1.1.1: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-callable@1.2.7: {} + + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@2.0.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hex-prefixed@1.0.0: {} + + is-lambda@1.0.1: + optional: true + + is-number@7.0.0: {} + + is-plain-obj@2.1.0: {} + + is-subset@0.1.1: {} + + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + + is-unicode-supported@0.1.0: {} + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + javascript-natural-sort@0.7.1: {} + + js-sha3@0.8.0: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsbn@1.1.0: + optional: true + + jsesc@2.5.2: {} + + jsesc@3.0.2: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stream-stringify@3.1.6: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonschema@1.4.1: {} + + keccak@3.0.4: + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.2 + readable-stream: 3.6.2 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + levn@0.3.0: + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lines-and-columns@1.2.4: {} + + locate-path@2.0.0: + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.clonedeep@4.5.0: {} + + lodash.isequal@4.5.0: {} + + lodash.merge@4.6.2: {} + + lodash.truncate@4.4.2: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + lru-cache@10.4.3: {} + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + optional: true + + lru_map@0.3.3: {} + + make-error@1.3.6: {} + + make-fetch-happen@9.1.0: + dependencies: + agentkeepalive: 4.5.0 + cacache: 15.3.0 + http-cache-semantics: 4.1.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 6.0.0 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 1.4.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.4 + promise-retry: 2.0.1 + socks-proxy-agent: 6.2.1 + ssri: 8.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + optional: true + + markdown-table@1.1.3: {} + + match-all@1.2.6: {} + + md5.js@1.3.5: + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + memorystream@0.3.1: {} + + merge2@1.4.1: {} + + micro-ftch@0.3.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-response@3.1.0: {} + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@8.0.4: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass-collect@1.0.2: + dependencies: + minipass: 3.3.6 + optional: true + + minipass-fetch@1.4.1: + dependencies: + minipass: 3.3.6 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + optional: true + + minipass-flush@1.0.5: + dependencies: + minipass: 3.3.6 + optional: true + + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 + optional: true + + minipass-sized@1.0.3: + dependencies: + minipass: 3.3.6 + optional: true + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@4.2.8: {} + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mkdirp-classic@0.5.3: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + mnemonist@0.38.5: + dependencies: + obliterator: 2.0.4 + + mocha@10.7.3: + dependencies: + ansi-colors: 4.1.3 + browser-stdout: 1.3.1 + chokidar: 3.6.0 + debug: 4.3.7(supports-color@8.1.1) + diff: 5.2.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 8.1.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.1.6 + ms: 2.1.3 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.5.1 + yargs: 16.2.0 + yargs-parser: 20.2.9 + yargs-unparser: 2.0.0 + + ms@2.1.3: {} + + murmur-128@0.2.1: + dependencies: + encode-utf8: 1.0.3 + fmix: 0.1.0 + imul: 1.0.1 + + napi-build-utils@1.0.2: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.4: + optional: true + + neo-async@2.6.2: {} + + node-abi@3.71.0: + dependencies: + semver: 7.6.3 + + node-addon-api@2.0.2: {} + + node-addon-api@5.1.0: {} + + node-addon-api@7.1.1: {} + + node-emoji@1.11.0: + dependencies: + lodash: 4.17.21 + + node-gyp-build@4.8.2: {} + + node-gyp@8.4.1: + dependencies: + env-paths: 2.2.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + make-fetch-happen: 9.1.0 + nopt: 5.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.6.3 + tar: 6.2.1 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + optional: true + + node-interval-tree@2.1.2: + dependencies: + shallowequal: 1.1.0 + + node-tfhe@0.9.1: {} + + node-tkms@0.9.0-rc27: {} + + nofilter@3.1.0: {} + + nopt@3.0.6: + dependencies: + abbrev: 1.0.9 + + nopt@5.0.0: + dependencies: + abbrev: 1.1.1 + optional: true + + normalize-path@3.0.0: {} + + npmlog@6.0.2: + dependencies: + are-we-there-yet: 3.0.1 + console-control-strings: 1.1.0 + gauge: 4.0.4 + set-blocking: 2.0.0 + optional: true + + number-to-bn@1.7.0: + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + + object-assign@4.1.1: {} + + object-inspect@1.13.2: {} + + obliterator@2.0.4: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + optionator@0.8.3: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ordinal@1.0.3: {} + + os-tmpdir@1.0.2: {} + + p-limit@1.3.0: + dependencies: + p-try: 1.0.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@2.0.0: + dependencies: + p-limit: 1.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-try@1.0.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-cache-control@1.0.1: {} + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.25.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-type@4.0.0: {} + + pathval@1.1.1: {} + + pbkdf2@3.1.2: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pify@4.0.1: {} + + pluralize@8.0.0: {} + + possible-typed-array-names@1.0.0: {} + + prebuild-install@7.1.2: + dependencies: + detect-libc: 2.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.71.0 + pump: 3.0.2 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + + prelude-ls@1.1.2: {} + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier-plugin-solidity@1.4.1(prettier@2.8.8): + dependencies: + '@solidity-parser/parser': 0.18.0 + prettier: 2.8.8 + semver: 7.6.3 + + prettier@2.8.8: {} + + process-nextick-args@2.0.1: {} + + promise-inflight@1.0.1: + optional: true + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + optional: true + + promise@8.3.0: + dependencies: + asap: 2.0.6 + + proxy-from-env@1.1.0: {} + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@1.4.1: {} + + punycode@2.3.1: {} + + qs@6.13.0: + dependencies: + side-channel: 1.0.6 + + queue-microtask@1.2.3: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.0.2: {} + + rechoir@0.6.2: + dependencies: + resolve: 1.22.8 + + recursive-readdir@2.2.3: + dependencies: + minimatch: 3.1.2 + + reduce-flatten@2.0.0: {} + + regexparam@3.0.0: {} + + req-cwd@2.0.0: + dependencies: + req-from: 2.0.0 + + req-from@2.0.0: + dependencies: + resolve-from: 3.0.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-from@3.0.0: {} + + resolve-from@4.0.0: {} + + resolve@1.1.7: {} + + resolve@1.17.0: + dependencies: + path-parse: 1.0.7 + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + retry@0.12.0: + optional: true + + reusify@1.0.4: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + optional: true + + rimraf@4.4.1: + dependencies: + glob: 9.3.5 + + ripemd160@2.0.2: + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + + rlp@2.2.7: + dependencies: + bn.js: 5.2.1 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sc-istanbul@0.4.6: + dependencies: + abbrev: 1.0.9 + async: 1.5.2 + escodegen: 1.8.1 + esprima: 2.7.3 + glob: 5.0.15 + handlebars: 4.7.8 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + nopt: 3.0.6 + once: 1.4.0 + resolve: 1.1.7 + supports-color: 3.2.3 + which: 1.3.1 + wordwrap: 1.0.0 + + scrypt-js@3.0.1: {} + + secp256k1@4.0.4: + dependencies: + elliptic: 6.5.7 + node-addon-api: 5.1.0 + node-gyp-build: 4.8.2 + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.6.3: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + set-blocking@2.0.0: + optional: true + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + setimmediate@1.0.5: {} + + setprototypeof@1.2.0: {} + + sha.js@2.4.11: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + sha1@1.1.1: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + + sha3@2.1.4: + dependencies: + buffer: 6.0.3 + + shallowequal@1.1.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shelljs@0.8.5: + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + signal-exit@3.0.7: + optional: true + + simple-concat@1.0.1: {} + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + + slash@3.0.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + smart-buffer@4.2.0: + optional: true + + socks-proxy-agent@6.2.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.7(supports-color@8.1.1) + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + optional: true + + socks@2.8.3: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + optional: true + + solc@0.8.26(debug@4.3.7): + dependencies: + command-exists: 1.2.9 + commander: 8.3.0 + follow-redirects: 1.15.9(debug@4.3.7) + js-sha3: 0.8.0 + memorystream: 0.3.1 + semver: 5.7.2 + tmp: 0.0.33 + transitivePeerDependencies: + - debug + + solhint-plugin-prettier@0.0.5(prettier-plugin-solidity@1.4.1(prettier@2.8.8))(prettier@2.8.8): + dependencies: + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + prettier-plugin-solidity: 1.4.1(prettier@2.8.8) + + solhint@3.6.2(typescript@5.6.3): + dependencies: + '@solidity-parser/parser': 0.16.2 + ajv: 6.12.6 + antlr4: 4.13.2 + ast-parents: 0.0.1 + chalk: 4.1.2 + commander: 10.0.1 + cosmiconfig: 8.3.6(typescript@5.6.3) + fast-diff: 1.3.0 + glob: 8.1.0 + ignore: 5.3.2 + js-yaml: 4.1.0 + lodash: 4.17.21 + pluralize: 8.0.0 + semver: 7.6.3 + strip-ansi: 6.0.1 + table: 6.8.2 + text-table: 0.2.0 + optionalDependencies: + prettier: 2.8.8 + transitivePeerDependencies: + - typescript + + solidity-comments-darwin-arm64@0.0.2: + optional: true + + solidity-comments-darwin-x64@0.0.2: + optional: true + + solidity-comments-freebsd-x64@0.0.2: + optional: true + + solidity-comments-linux-arm64-gnu@0.0.2: + optional: true + + solidity-comments-linux-arm64-musl@0.0.2: + optional: true + + solidity-comments-linux-x64-gnu@0.0.2: + optional: true + + solidity-comments-linux-x64-musl@0.0.2: + optional: true + + solidity-comments-win32-arm64-msvc@0.0.2: + optional: true + + solidity-comments-win32-ia32-msvc@0.0.2: + optional: true + + solidity-comments-win32-x64-msvc@0.0.2: + optional: true + + solidity-comments@0.0.2: + optionalDependencies: + solidity-comments-darwin-arm64: 0.0.2 + solidity-comments-darwin-x64: 0.0.2 + solidity-comments-freebsd-x64: 0.0.2 + solidity-comments-linux-arm64-gnu: 0.0.2 + solidity-comments-linux-arm64-musl: 0.0.2 + solidity-comments-linux-x64-gnu: 0.0.2 + solidity-comments-linux-x64-musl: 0.0.2 + solidity-comments-win32-arm64-msvc: 0.0.2 + solidity-comments-win32-ia32-msvc: 0.0.2 + solidity-comments-win32-x64-msvc: 0.0.2 + + solidity-coverage@0.8.12(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)): + dependencies: + '@ethersproject/abi': 5.7.0 + '@solidity-parser/parser': 0.18.0 + chalk: 2.4.2 + death: 1.1.0 + difflib: 0.2.4 + fs-extra: 8.1.0 + ghost-testrpc: 0.0.2 + global-modules: 2.0.0 + globby: 10.0.2 + hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) + jsonschema: 1.4.1 + lodash: 4.17.21 + mocha: 10.7.3 + node-emoji: 1.11.0 + pify: 4.0.1 + recursive-readdir: 2.2.3 + sc-istanbul: 0.4.6 + semver: 7.6.3 + shelljs: 0.8.5 + web3-utils: 1.10.4 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.2.0: + dependencies: + amdefine: 1.0.1 + optional: true + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + sprintf-js@1.0.3: {} + + sprintf-js@1.1.3: + optional: true + + sqlite3@5.1.7: + dependencies: + bindings: 1.5.0 + node-addon-api: 7.1.1 + prebuild-install: 7.1.2 + tar: 6.2.1 + optionalDependencies: + node-gyp: 8.4.1 + transitivePeerDependencies: + - bluebird + - supports-color + + ssri@8.0.1: + dependencies: + minipass: 3.3.6 + optional: true + + stacktrace-parser@0.1.10: + dependencies: + type-fest: 0.7.1 + + statuses@2.0.1: {} + + string-format@2.0.0: {} + + string-width@2.1.1: + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@4.0.0: + dependencies: + ansi-regex: 3.0.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-hex-prefix@1.0.0: + dependencies: + is-hex-prefixed: 1.0.0 + + strip-json-comments@2.0.1: {} + + strip-json-comments@3.1.1: {} + + supports-color@3.2.3: + dependencies: + has-flag: 1.0.0 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + sync-request@6.1.0: + dependencies: + http-response-object: 3.0.2 + sync-rpc: 1.3.6 + then-request: 6.0.2 + + sync-rpc@1.3.6: + dependencies: + get-port: 3.2.0 + + table-layout@1.0.2: + dependencies: + array-back: 4.0.2 + deep-extend: 0.6.0 + typical: 5.2.0 + wordwrapjs: 4.0.1 + + table@6.8.2: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tar-fs@2.1.1: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.2 + tar-stream: 2.2.0 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + text-table@0.2.0: {} + + tfhe@0.9.1: {} + + then-request@6.0.2: + dependencies: + '@types/concat-stream': 1.6.1 + '@types/form-data': 0.0.33 + '@types/node': 8.10.66 + '@types/qs': 6.9.16 + caseless: 0.12.0 + concat-stream: 1.6.2 + form-data: 2.5.2 + http-basic: 8.1.3 + http-response-object: 3.0.2 + promise: 8.3.0 + qs: 6.13.0 + + tkms@0.9.0-rc27: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + ts-api-utils@1.3.0(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + + ts-command-line-args@2.5.1: + dependencies: + chalk: 4.1.2 + command-line-args: 5.2.1 + command-line-usage: 6.1.3 + string-format: 2.0.0 + + ts-essentials@1.0.4: {} + + ts-essentials@7.0.3(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + + ts-generator@0.1.1: + dependencies: + '@types/mkdirp': 0.5.2 + '@types/prettier': 2.7.3 + '@types/resolve': 0.0.8 + chalk: 2.4.2 + glob: 7.2.3 + mkdirp: 0.5.6 + prettier: 2.8.8 + resolve: 1.22.8 + ts-essentials: 1.0.4 + + ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.19.57 + acorn: 8.13.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.6.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + tslib@1.14.1: {} + + tslib@2.7.0: {} + + tsort@0.0.1: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tweetnacl-util@0.15.1: {} + + tweetnacl@1.0.3: {} + + type-check@0.3.2: + dependencies: + prelude-ls: 1.1.2 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.1.0: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.7.1: {} + + typechain@8.3.2(typescript@5.6.3): + dependencies: + '@types/prettier': 2.7.3 + debug: 4.3.7(supports-color@8.1.1) + fs-extra: 7.0.1 + glob: 7.1.7 + js-sha3: 0.8.0 + lodash: 4.17.21 + mkdirp: 1.0.4 + prettier: 2.8.8 + ts-command-line-args: 2.5.1 + ts-essentials: 7.0.3(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + typedarray@0.0.6: {} + + typescript-eslint@8.10.0(eslint@9.13.0)(typescript@5.6.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/parser': 8.10.0(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0)(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - eslint + - supports-color + + typescript@5.6.3: {} + + typical@4.0.0: {} + + typical@5.2.0: {} + + uglify-js@3.19.3: + optional: true + + undici-types@5.26.5: {} + + undici-types@6.19.8: {} + + undici@5.28.4: + dependencies: + '@fastify/busboy': 2.1.1 + + unique-filename@1.1.1: + dependencies: + unique-slug: 2.0.2 + optional: true + + unique-slug@2.0.2: + dependencies: + imurmurhash: 0.1.4 + optional: true + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url@0.11.4: + dependencies: + punycode: 1.4.1 + qs: 6.13.0 + + utf8@3.0.0: {} + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + + uuid@8.3.2: {} + + v8-compile-cache-lib@3.0.1: {} + + web3-errors@1.3.0: + dependencies: + web3-types: 1.8.0 + + web3-types@1.8.0: {} + + web3-utils@1.10.4: + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.2.0 + ethereum-cryptography: 2.2.1 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + + web3-validator@2.0.6: + dependencies: + ethereum-cryptography: 2.2.1 + util: 0.12.5 + web3-errors: 1.3.0 + web3-types: 1.8.0 + zod: 3.23.8 + + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + optional: true + + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + + word-wrap@1.2.5: {} + + wordwrap@1.0.0: {} + + wordwrapjs@4.0.1: + dependencies: + reduce-flatten: 2.0.0 + typical: 5.2.0 + + workerpool@6.5.1: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + ws@7.4.6: {} + + ws@7.5.10: {} + + ws@8.17.1: {} + + y18n@5.0.8: {} + + yallist@4.0.0: {} + + yargs-parser@20.2.9: {} + + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + zksync-ethers@5.9.2(ethers@5.7.2): + dependencies: + ethers: 5.7.2 + + zod@3.23.8: {} diff --git a/e2e/tasks/accounts.ts b/e2e/tasks/accounts.ts new file mode 100644 index 0000000..866b83a --- /dev/null +++ b/e2e/tasks/accounts.ts @@ -0,0 +1,9 @@ +import { task } from "hardhat/config"; + +task("task:accounts", "Prints the list of accounts", async (_taskArgs, hre) => { + const accounts = await hre.ethers.getSigners(); + + for (const account of accounts) { + console.log(account.address); + } +}); diff --git a/e2e/tasks/checkNodeVersion.js b/e2e/tasks/checkNodeVersion.js new file mode 100644 index 0000000..30fe582 --- /dev/null +++ b/e2e/tasks/checkNodeVersion.js @@ -0,0 +1,2 @@ +if (parseFloat(process.versions.node) < 20.0) + throw new Error("Unsupported Node.js version. Please use Node.js >= 20.0.0."); diff --git a/e2e/tasks/deployERC20.ts b/e2e/tasks/deployERC20.ts new file mode 100644 index 0000000..9eeafc4 --- /dev/null +++ b/e2e/tasks/deployERC20.ts @@ -0,0 +1,10 @@ +import { task } from "hardhat/config"; +import type { TaskArguments } from "hardhat/types"; + +task("task:deployERC20").setAction(async function (taskArguments: TaskArguments, { ethers }) { + const signers = await ethers.getSigners(); + const erc20Factory = await ethers.getContractFactory("MyERC20"); + const encryptedERC20 = await erc20Factory.connect(signers[0]).deploy(); + await encryptedERC20.waitForDeployment(); + console.log("MyERC20 deployed to: ", await encryptedERC20.getAddress()); +}); diff --git a/e2e/tasks/getEthereumAddress.ts b/e2e/tasks/getEthereumAddress.ts new file mode 100644 index 0000000..c3001a6 --- /dev/null +++ b/e2e/tasks/getEthereumAddress.ts @@ -0,0 +1,34 @@ +import dotenv from "dotenv"; +import { task } from "hardhat/config"; +import { HardhatRuntimeEnvironment } from "hardhat/types"; + +dotenv.config(); + +const getEthereumAddress = + (index: number = 0) => + async (_taskArgs: unknown, hre: HardhatRuntimeEnvironment) => { + const { ethers } = hre; + const words = process.env.MNEMONIC!; + const mnemonic = ethers.Mnemonic.fromPhrase(words); + if (!mnemonic) { + throw new Error("No MNEMONIC in .env file"); + } + const wallet = ethers.HDNodeWallet.fromMnemonic(mnemonic, `m/44'/60'/0'/0`); + console.log(wallet.deriveChild(index).address); + }; + +task( + "task:getEthereumAddress", + "Gets the first address derived from a mnemonic phrase defined in .env", + getEthereumAddress(0), +); + +const accounts = ["Alice", "Bob", "Carol", "Dave", "Eve"]; + +accounts.forEach((name, index) => { + task( + `task:getEthereumAddress${name}`, + "Gets the first address derived from a mnemonic phrase defined in .env", + getEthereumAddress(index), + ); +}); diff --git a/e2e/test/encryptedERC20/EncryptedERC20.fixture.ts b/e2e/test/encryptedERC20/EncryptedERC20.fixture.ts new file mode 100644 index 0000000..cd92f6a --- /dev/null +++ b/e2e/test/encryptedERC20/EncryptedERC20.fixture.ts @@ -0,0 +1,14 @@ +import { ethers } from "hardhat"; + +import type { EncryptedERC20 } from "../../types"; +import { getSigners } from "../signers"; + +export async function deployEncryptedERC20Fixture(): Promise { + const signers = await getSigners(); + + const contractFactory = await ethers.getContractFactory("EncryptedERC20"); + const contract = await contractFactory.connect(signers.alice).deploy("Naraggara", "NARA"); // City of Zama's battle + await contract.waitForDeployment(); + + return contract; +} diff --git a/e2e/test/encryptedERC20/EncryptedERC20.ts b/e2e/test/encryptedERC20/EncryptedERC20.ts new file mode 100644 index 0000000..d091177 --- /dev/null +++ b/e2e/test/encryptedERC20/EncryptedERC20.ts @@ -0,0 +1,273 @@ +import { expect } from "chai"; + +import { createInstances } from "../instance"; +import { getSigners, initSigners } from "../signers"; +import { deployEncryptedERC20Fixture } from "./EncryptedERC20.fixture"; + +describe("EncryptedERC20", function () { + before(async function () { + await initSigners(); + this.signers = await getSigners(); + }); + + beforeEach(async function () { + const contract = await deployEncryptedERC20Fixture(); + this.contractAddress = await contract.getAddress(); + this.erc20 = contract; + this.instances = await createInstances(this.signers); + }); + + it("should mint the contract", async function () { + const transaction = await this.erc20.mint(1000); + await transaction.wait(); + + // Reencrypt Alice's balance + const balanceHandleAlice = await this.erc20.balanceOf(this.signers.alice); + const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.instances.alice.generateKeypair(); + const eip712 = this.instances.alice.createEIP712(publicKeyAlice, this.contractAddress); + const signatureAlice = await this.signers.alice.signTypedData( + eip712.domain, + { Reencrypt: eip712.types.Reencrypt }, + eip712.message, + ); + const balanceAlice = await this.instances.alice.reencrypt( + balanceHandleAlice, + privateKeyAlice, + publicKeyAlice, + signatureAlice.replace("0x", ""), + this.contractAddress, + this.signers.alice.address, + ); + expect(balanceAlice).to.equal(1000); + const totalSupply = await this.erc20.totalSupply(); + expect(totalSupply).to.equal(1000); + }); + + it("should transfer tokens between two users", async function () { + const transaction = await this.erc20.mint(10000); + const t1 = await transaction.wait(); + expect(t1?.status).to.eq(1); + + const input = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add64(1337); + const encryptedTransferAmount = input.encrypt(); + const tx = await this.erc20["transfer(address,bytes32,bytes)"]( + this.signers.bob.address, + encryptedTransferAmount.handles[0], + encryptedTransferAmount.inputProof, + ); + const t2 = await tx.wait(); + expect(t2?.status).to.eq(1); + + // Reencrypt Alice's balance + const balanceHandleAlice = await this.erc20.balanceOf(this.signers.alice); + const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.instances.alice.generateKeypair(); + const eip712 = this.instances.alice.createEIP712(publicKeyAlice, this.contractAddress); + const signatureAlice = await this.signers.alice.signTypedData( + eip712.domain, + { Reencrypt: eip712.types.Reencrypt }, + eip712.message, + ); + const balanceAlice = await this.instances.alice.reencrypt( + balanceHandleAlice, + privateKeyAlice, + publicKeyAlice, + signatureAlice.replace("0x", ""), + this.contractAddress, + this.signers.alice.address, + ); + + expect(balanceAlice).to.equal(10000 - 1337); + + // Reencrypt Bob's balance + const balanceHandleBob = await this.erc20.balanceOf(this.signers.bob); + + const { publicKey: publicKeyBob, privateKey: privateKeyBob } = this.instances.bob.generateKeypair(); + const eip712Bob = this.instances.bob.createEIP712(publicKeyBob, this.contractAddress); + const signatureBob = await this.signers.bob.signTypedData( + eip712Bob.domain, + { Reencrypt: eip712Bob.types.Reencrypt }, + eip712Bob.message, + ); + const balanceBob = await this.instances.bob.reencrypt( + balanceHandleBob, + privateKeyBob, + publicKeyBob, + signatureBob.replace("0x", ""), + this.contractAddress, + this.signers.bob.address, + ); + + expect(balanceBob).to.equal(1337); + + // on the other hand, Bob should be unable to read Alice's balance + try { + await this.instances.bob.reencrypt( + balanceHandleAlice, + privateKeyBob, + publicKeyBob, + signatureBob.replace("0x", ""), + this.contractAddress, + this.signers.bob.address, + ); + expect.fail("Expected an error to be thrown - Bob should not be able to reencrypt Alice balance"); + } catch (error) { + expect(error.message).to.equal("User is not authorized to reencrypt this handle!"); + } + }); + + it("should not transfer tokens between two users", async function () { + const transaction = await this.erc20.mint(1000); + await transaction.wait(); + + const input = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add64(1337); + const encryptedTransferAmount = input.encrypt(); + const tx = await this.erc20["transfer(address,bytes32,bytes)"]( + this.signers.bob.address, + encryptedTransferAmount.handles[0], + encryptedTransferAmount.inputProof, + ); + await tx.wait(); + + const balanceHandleAlice = await this.erc20.balanceOf(this.signers.alice); + const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.instances.alice.generateKeypair(); + const eip712 = this.instances.alice.createEIP712(publicKeyAlice, this.contractAddress); + const signatureAlice = await this.signers.alice.signTypedData( + eip712.domain, + { Reencrypt: eip712.types.Reencrypt }, + eip712.message, + ); + const balanceAlice = await this.instances.alice.reencrypt( + balanceHandleAlice, + privateKeyAlice, + publicKeyAlice, + signatureAlice.replace("0x", ""), + this.contractAddress, + this.signers.alice.address, + ); + + expect(balanceAlice).to.equal(1000); + + // Reencrypt Bob's balance + const balanceHandleBob = await this.erc20.balanceOf(this.signers.bob); + + const { publicKey: publicKeyBob, privateKey: privateKeyBob } = this.instances.bob.generateKeypair(); + const eip712Bob = this.instances.bob.createEIP712(publicKeyBob, this.contractAddress); + const signatureBob = await this.signers.bob.signTypedData( + eip712Bob.domain, + { Reencrypt: eip712Bob.types.Reencrypt }, + eip712Bob.message, + ); + const balanceBob = await this.instances.bob.reencrypt( + balanceHandleBob, + privateKeyBob, + publicKeyBob, + signatureBob.replace("0x", ""), + this.contractAddress, + this.signers.bob.address, + ); + + expect(balanceBob).to.equal(0); + }); + + it("should be able to transferFrom only if allowance is sufficient", async function () { + const transaction = await this.erc20.mint(10000); + await transaction.wait(); + + const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + inputAlice.add64(1337); + const encryptedAllowanceAmount = inputAlice.encrypt(); + const tx = await this.erc20["approve(address,bytes32,bytes)"]( + this.signers.bob.address, + encryptedAllowanceAmount.handles[0], + encryptedAllowanceAmount.inputProof, + ); + await tx.wait(); + + const bobErc20 = this.erc20.connect(this.signers.bob); + const inputBob1 = this.instances.bob.createEncryptedInput(this.contractAddress, this.signers.bob.address); + inputBob1.add64(1338); // above allowance so next tx should actually not send any token + const encryptedTransferAmount = inputBob1.encrypt(); + const tx2 = await bobErc20["transferFrom(address,address,bytes32,bytes)"]( + this.signers.alice.address, + this.signers.bob.address, + encryptedTransferAmount.handles[0], + encryptedTransferAmount.inputProof, + ); + await tx2.wait(); + + // Decrypt Alice's balance + const balanceHandleAlice = await this.erc20.balanceOf(this.signers.alice); + const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.instances.alice.generateKeypair(); + const eip712 = this.instances.alice.createEIP712(publicKeyAlice, this.contractAddress); + const signatureAlice = await this.signers.alice.signTypedData( + eip712.domain, + { Reencrypt: eip712.types.Reencrypt }, + eip712.message, + ); + const balanceAlice = await this.instances.alice.reencrypt( + balanceHandleAlice, + privateKeyAlice, + publicKeyAlice, + signatureAlice.replace("0x", ""), + this.contractAddress, + this.signers.alice.address, + ); + expect(balanceAlice).to.equal(10000); // check that transfer did not happen, as expected + + // Decrypt Bob's balance + const balanceHandleBob = await this.erc20.balanceOf(this.signers.bob); + const { publicKey: publicKeyBob, privateKey: privateKeyBob } = this.instances.bob.generateKeypair(); + const eip712Bob = this.instances.bob.createEIP712(publicKeyBob, this.contractAddress); + const signatureBob = await this.signers.bob.signTypedData( + eip712Bob.domain, + { Reencrypt: eip712Bob.types.Reencrypt }, + eip712Bob.message, + ); + const balanceBob = await this.instances.bob.reencrypt( + balanceHandleBob, + privateKeyBob, + publicKeyBob, + signatureBob.replace("0x", ""), + this.contractAddress, + this.signers.bob.address, + ); + expect(balanceBob).to.equal(0); // check that transfer did not happen, as expected + + const inputBob2 = this.instances.bob.createEncryptedInput(this.contractAddress, this.signers.bob.address); + inputBob2.add64(1337); // below allowance so next tx should send token + const encryptedTransferAmount2 = inputBob2.encrypt(); + const tx3 = await bobErc20["transferFrom(address,address,bytes32,bytes)"]( + this.signers.alice.address, + this.signers.bob.address, + encryptedTransferAmount2.handles[0], + encryptedTransferAmount2.inputProof, + ); + await tx3.wait(); + + // Decrypt Alice's balance + const balanceHandleAlice2 = await this.erc20.balanceOf(this.signers.alice); + const balanceAlice2 = await this.instances.alice.reencrypt( + balanceHandleAlice2, + privateKeyAlice, + publicKeyAlice, + signatureAlice.replace("0x", ""), + this.contractAddress, + this.signers.alice.address, + ); + expect(balanceAlice2).to.equal(10000 - 1337); // check that transfer did happen this time + + // Decrypt Bob's balance + const balanceHandleBob2 = await this.erc20.balanceOf(this.signers.bob); + const balanceBob2 = await this.instances.bob.reencrypt( + balanceHandleBob2, + privateKeyBob, + publicKeyBob, + signatureBob.replace("0x", ""), + this.contractAddress, + this.signers.bob.address, + ); + expect(balanceBob2).to.equal(1337); // check that transfer did happen this time*/ + }); +}); diff --git a/e2e/test/increment/Increment.fixture.ts b/e2e/test/increment/Increment.fixture.ts new file mode 100644 index 0000000..f6e36c8 --- /dev/null +++ b/e2e/test/increment/Increment.fixture.ts @@ -0,0 +1,14 @@ +import { ethers } from "hardhat"; + +import type { Increment } from "../../types"; +import { getSigners } from "../signers"; + +export async function deployIncrementFixture(): Promise { + const signers = await getSigners(); + + const contractFactory = await ethers.getContractFactory("Increment"); + const contract = await contractFactory.connect(signers.alice).deploy(); + await contract.waitForDeployment(); + + return contract; +} diff --git a/e2e/test/increment/Increment.ts b/e2e/test/increment/Increment.ts new file mode 100644 index 0000000..3d1e26d --- /dev/null +++ b/e2e/test/increment/Increment.ts @@ -0,0 +1,71 @@ +import { expect } from "chai"; + +import { createInstances } from "../instance"; +import { getSigners, initSigners } from "../signers"; +import { deployIncrementFixture } from "./Increment.fixture"; + +describe("Increment", function () { + before(async function () { + await initSigners(); + this.signers = await getSigners(); + }); + + beforeEach(async function () { + const contract = await deployIncrementFixture(); + this.contractAddress = await contract.getAddress(); + this.increment = contract; + this.instances = await createInstances(this.signers); + }); + + it("should increment", async function () { + const transaction = await this.increment.increment(); + await transaction.wait(); + const transaction2 = await this.increment.increment(); + await transaction2.wait(); + + const counterHandle = await this.increment.counter(); + console.log(counterHandle); + const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.instances.alice.generateKeypair(); + const eip712 = this.instances.alice.createEIP712(publicKeyAlice, this.contractAddress); + const signatureAlice = await this.signers.alice.signTypedData( + eip712.domain, + { Reencrypt: eip712.types.Reencrypt }, + eip712.message, + ); + const counter = await this.instances.alice.reencrypt( + counterHandle, + privateKeyAlice, + publicKeyAlice, + signatureAlice.replace("0x", ""), + this.contractAddress, + this.signers.alice.address, + ); + expect(counter).to.equal(2); + }); + + // it("should increment", async function () { + // const transaction = await this.increment.increment(); + // await transaction.wait(); + // const transaction2 = await this.increment.increment(); + // await transaction2.wait(); + + // // Reencrypt counter + // const counterHandle = await this.increment.counter(); + // const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.instances.alice.generateKeypair(); + // const eip712 = this.instances.alice.createEIP712(publicKeyAlice, this.contractAddress); + // const signatureAlice = await this.signers.alice.signTypedData( + // eip712.domain, + // { Reencrypt: eip712.types.Reencrypt }, + // eip712.message, + // ); + // const counter = await this.instances.alice.reencrypt( + // counterHandle, + // privateKeyAlice, + // publicKeyAlice, + // signatureAlice.replace("0x", ""), + // this.contractAddress, + // this.signers.alice.address, + // ); + // expect(counter).to.equal(2); + // }); +}); diff --git a/e2e/test/instance.ts b/e2e/test/instance.ts new file mode 100644 index 0000000..1bf8075 --- /dev/null +++ b/e2e/test/instance.ts @@ -0,0 +1,185 @@ +import dotenv from "dotenv"; +import { clientKeyDecryptor, createInstance as createFhevmInstance, getCiphertextCallParams } from "fhevmjs/node"; +import { readFileSync } from "fs"; +import * as fs from "fs"; +import { ethers, ethers as hethers, network } from "hardhat"; +import { homedir } from "os"; +import path from "path"; + +import { createEncryptedInputMocked, reencryptRequestMocked } from "./fhevmjsMocked"; +import type { Signers } from "./signers"; +import { FhevmInstances } from "./types"; + +const parsedEnv = dotenv.parse(fs.readFileSync(".env")); + +const FHE_CLIENT_KEY_PATH = process.env.FHE_CLIENT_KEY_PATH; + +let clientKey: Uint8Array | undefined; + +export const createInstances = async (accounts: Signers): Promise => { + // Create instance + const instances: FhevmInstances = {} as FhevmInstances; + + await Promise.all( + Object.keys(accounts).map(async (k) => { + instances[k as keyof FhevmInstances] = await createInstance(); + }), + ); + + return instances; +}; + +export const createInstance = async () => { + const instance = await createFhevmInstance({ + networkUrl: network.config.url, + gatewayUrl: parsedEnv.GATEWAY_URL, + aclContractAddress: parsedEnv.ACL_CONTRACT_ADDRESS, + kmsContractAddress: parsedEnv.KMS_VERIFIER_CONTRACT_ADDRESS, + }); + return instance; +}; + +const getCiphertext = async (handle: bigint, ethers: typeof hethers): Promise => { + return ethers.provider.call(getCiphertextCallParams(handle)); +}; + +const getDecryptor = () => { + if (clientKey == null) { + if (FHE_CLIENT_KEY_PATH) { + clientKey = readFileSync(FHE_CLIENT_KEY_PATH); + } else { + const home = homedir(); + const clientKeyPath = path.join(home, "network-fhe-keys/cks"); + clientKey = readFileSync(clientKeyPath); + } + } + return clientKeyDecryptor(clientKey); +}; + +/** + * @debug + * This function is intended for debugging purposes only. + * It cannot be used in production code, since it requires the FHE private key for decryption. + * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. + * + * @param {bigint} a handle to decrypt + * @returns {bool} + */ +export const decryptBool = async (handle: bigint): Promise => { + if (network.name === "hardhat") { + await awaitCoprocessor(); + return (await getClearText(handle)) === "1"; + } else { + return getDecryptor().decryptBool(await getCiphertext(handle, ethers)); + } +}; + +/** + * @debug + * This function is intended for debugging purposes only. + * It cannot be used in production code, since it requires the FHE private key for decryption. + * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. + * + * @param {bigint} a handle to decrypt + * @returns {bigint} + */ +export const decrypt4 = async (handle: bigint): Promise => { + if (network.name === "hardhat") { + await awaitCoprocessor(); + return BigInt(await getClearText(handle)); + } else { + return getDecryptor().decrypt4(await getCiphertext(handle, ethers)); + } +}; + +/** + * @debug + * This function is intended for debugging purposes only. + * It cannot be used in production code, since it requires the FHE private key for decryption. + * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. + * + * @param {bigint} a handle to decrypt + * @returns {bigint} + */ +export const decrypt8 = async (handle: bigint): Promise => { + if (network.name === "hardhat") { + await awaitCoprocessor(); + return BigInt(await getClearText(handle)); + } else { + return getDecryptor().decrypt8(await getCiphertext(handle, ethers)); + } +}; + +/** + * @debug + * This function is intended for debugging purposes only. + * It cannot be used in production code, since it requires the FHE private key for decryption. + * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. + * + * @param {bigint} a handle to decrypt + * @returns {bigint} + */ +export const decrypt16 = async (handle: bigint): Promise => { + if (network.name === "hardhat") { + await awaitCoprocessor(); + return BigInt(await getClearText(handle)); + } else { + return getDecryptor().decrypt16(await getCiphertext(handle, ethers)); + } +}; + +/** + * @debug + * This function is intended for debugging purposes only. + * It cannot be used in production code, since it requires the FHE private key for decryption. + * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. + * + * @param {bigint} a handle to decrypt + * @returns {bigint} + */ +export const decrypt32 = async (handle: bigint): Promise => { + if (network.name === "hardhat") { + await awaitCoprocessor(); + return BigInt(await getClearText(handle)); + } else { + return getDecryptor().decrypt32(await getCiphertext(handle, ethers)); + } +}; + +/** + * @debug + * This function is intended for debugging purposes only. + * It cannot be used in production code, since it requires the FHE private key for decryption. + * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. + * + * @param {bigint} a handle to decrypt + * @returns {bigint} + */ +export const decrypt64 = async (handle: bigint): Promise => { + if (network.name === "hardhat") { + await awaitCoprocessor(); + return BigInt(await getClearText(handle)); + } else { + return getDecryptor().decrypt64(await getCiphertext(handle, ethers)); + } +}; + +/** + * @debug + * This function is intended for debugging purposes only. + * It cannot be used in production code, since it requires the FHE private key for decryption. + * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. + * + * @param {bigint} a handle to decrypt + * @returns {string} + */ +export const decryptAddress = async (handle: bigint): Promise => { + if (network.name === "hardhat") { + await awaitCoprocessor(); + const bigintAdd = BigInt(await getClearText(handle)); + const handleStr = "0x" + bigintAdd.toString(16).padStart(40, "0"); + return handleStr; + } else { + return getDecryptor().decryptAddress(await getCiphertext(handle, ethers)); + } +}; diff --git a/e2e/test/signers.ts b/e2e/test/signers.ts new file mode 100644 index 0000000..4715592 --- /dev/null +++ b/e2e/test/signers.ts @@ -0,0 +1,29 @@ +import { HardhatEthersSigner } from "@nomicfoundation/hardhat-ethers/signers"; +import { ethers } from "hardhat"; + +export interface Signers { + alice: HardhatEthersSigner; + bob: HardhatEthersSigner; + carol: HardhatEthersSigner; + dave: HardhatEthersSigner; + eve: HardhatEthersSigner; +} + +let signers: Signers; + +export const initSigners = async (): Promise => { + if (!signers) { + const eSigners = await ethers.getSigners(); + signers = { + alice: eSigners[0], + bob: eSigners[1], + carol: eSigners[2], + dave: eSigners[3], + eve: eSigners[4], + }; + } +}; + +export const getSigners = async (): Promise => { + return signers; +}; diff --git a/e2e/test/types.ts b/e2e/test/types.ts new file mode 100644 index 0000000..6afcffe --- /dev/null +++ b/e2e/test/types.ts @@ -0,0 +1,19 @@ +import type { FhevmInstance } from "fhevmjs"; + +import type { Signers } from "./signers"; + +declare module "mocha" { + export interface Context { + signers: Signers; + contractAddress: string; + instances: FhevmInstances; + } +} + +export interface FhevmInstances { + alice: FhevmInstance; + bob: FhevmInstance; + carol: FhevmInstance; + dave: FhevmInstance; + eve: FhevmInstance; +} diff --git a/e2e/test/utils.ts b/e2e/test/utils.ts new file mode 100644 index 0000000..5af310b --- /dev/null +++ b/e2e/test/utils.ts @@ -0,0 +1,97 @@ +import { toBufferLE } from "bigint-buffer"; +import { ContractMethodArgs, Typed } from "ethers"; +import { ethers, network } from "hardhat"; + +import { TypedContractMethod } from "../types/common"; + +export const waitForBlock = (blockNumber: bigint | number) => { + if (network.name === "hardhat") { + return new Promise((resolve, reject) => { + const intervalId = setInterval(async () => { + try { + const currentBlock = await ethers.provider.getBlockNumber(); + if (BigInt(currentBlock) >= blockNumber) { + clearInterval(intervalId); + resolve(currentBlock); + } + } catch (error) { + clearInterval(intervalId); + reject(error); + } + }, 50); // Check every 50 milliseconds + }); + } else { + return new Promise((resolve, reject) => { + const waitBlock = async (currentBlock: number) => { + if (blockNumber <= BigInt(currentBlock)) { + await ethers.provider.off("block", waitBlock); + resolve(blockNumber); + } + }; + ethers.provider.on("block", waitBlock).catch((err) => { + reject(err); + }); + }); + } +}; + +export const waitNBlocks = async (Nblocks: number) => { + const currentBlock = await ethers.provider.getBlockNumber(); + if (network.name === "hardhat") { + await produceDummyTransactions(Nblocks); + } + await waitForBlock(currentBlock + Nblocks); +}; + +export const waitForBalance = async (address: string): Promise => { + return new Promise((resolve, reject) => { + const checkBalance = async () => { + const balance = await ethers.provider.getBalance(address); + if (balance > 0) { + await ethers.provider.off("block", checkBalance); + resolve(); + } + }; + ethers.provider.on("block", checkBalance).catch((err) => { + reject(err); + }); + }); +}; + +export const createTransaction = async ( + method: TypedContractMethod, + ...params: A +) => { + const gasLimit = await method.estimateGas(...params); + const updatedParams: ContractMethodArgs = [ + ...params, + { gasLimit: Math.min(Math.round(+gasLimit.toString() * 1.2), 10000000) }, + ]; + return method(...updatedParams); +}; + +export const produceDummyTransactions = async (blockCount: number) => { + let counter = blockCount; + while (counter >= 0) { + counter--; + const [signer] = await ethers.getSigners(); + const nullAddress = "0x0000000000000000000000000000000000000000"; + const tx = { + to: nullAddress, + value: 0n, + }; + const receipt = await signer.sendTransaction(tx); + await receipt.wait(); + } +}; + +export const mineNBlocks = async (n: number) => { + for (let index = 0; index < n; index++) { + await ethers.provider.send("evm_mine"); + } +}; + +export const bigIntToBytes = (value: bigint) => { + const byteArrayLength = Math.ceil(value.toString(2).length / 8); + return new Uint8Array(toBufferLE(value, byteArrayLength)); +}; diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json new file mode 100644 index 0000000..734e21a --- /dev/null +++ b/e2e/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDecoratorMetadata": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "lib": ["es2020"], + "module": "commonjs", + "moduleResolution": "node", + "noImplicitAny": true, + "removeComments": true, + "resolveJsonModule": true, + "sourceMap": true, + "strict": true, + "target": "es2020" + }, + "exclude": ["node_modules"], + "files": ["./hardhat.config.ts"], + "include": ["src/**/*", "tasks/**/*", "test/**/*", "deploy/**/*", "types/"] +} From b67dc8759da7c7febf177dc6831aa73edfe24084 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Fri, 15 Nov 2024 22:06:45 +0100 Subject: [PATCH 02/21] fix: add setup for e2e test --- e2e/.env.example | 12 +- e2e/contracts/E2EFHEVMConfig.sol | 36 +++++ e2e/contracts/EncryptedERC20.sol | 3 +- e2e/contracts/Increment.sol | 4 +- e2e/hardhat.config.ts | 3 +- e2e/package.json | 8 +- e2e/pnpm-lock.yaml | 23 ++- e2e/tasks/deployERC20.ts | 6 +- e2e/test/encryptedERC20/EncryptedERC20.ts | 64 ++++---- e2e/test/increment/Increment.ts | 10 +- e2e/test/instance.ts | 176 +--------------------- 11 files changed, 116 insertions(+), 229 deletions(-) create mode 100644 e2e/contracts/E2EFHEVMConfig.sol diff --git a/e2e/.env.example b/e2e/.env.example index efe23ff..b374609 100644 --- a/e2e/.env.example +++ b/e2e/.env.example @@ -1,9 +1,9 @@ export MNEMONIC="adapt mosquito move limb mobile illegal tree voyage juice mosquito burger raise father hope layer" -export TFHE_EXECUTOR_CONTRACT_ADDRESS=0x596E6682c72946AF006B27C131793F2b62527A4b -export ACL_CONTRACT_ADDRESS=0x339EcE85B9E11a3A3AA557582784a15d7F82AAf2 -export PAYMENT_CONTRACT_ADDRESS=0x6d5A11aC509C707c00bc3A0a113ACcC26c532547 -export KMS_VERIFIER_CONTRACT_ADDRESS=0x208De73316E44722e16f6dDFF40881A3e4F86104 -export GATEWAY_CONTRACT_ADDRESS=0x096b4679d45fB675d4e2c1E4565009Cec99A12B1 +export TFHE_EXECUTOR_CONTRACT_ADDRESS=0x199fB61DFdfE46f9F90C9773769c28D9623Bb90e +export ACL_CONTRACT_ADDRESS=0x9479B455904dCccCf8Bc4f7dF8e9A1105cBa2A8e +export PAYMENT_CONTRACT_ADDRESS=0x25FE5d92Ae6f89AF37D177cF818bF27EDFe37F7c +export KMS_VERIFIER_CONTRACT_ADDRESS=0x904Af2B61068f686838bD6257E385C2cE7a09195 +export GATEWAY_CONTRACT_ADDRESS=0x7455c89669cdE1f7Cb6D026DFB87263422D821ca -export GATEWAY_URL="http://localhost:7077" \ No newline at end of file +export GATEWAY_URL="https://gateway-sepolia.kms-dev-v1.bc.zama.team/" \ No newline at end of file diff --git a/e2e/contracts/E2EFHEVMConfig.sol b/e2e/contracts/E2EFHEVMConfig.sol new file mode 100644 index 0000000..ed9aa56 --- /dev/null +++ b/e2e/contracts/E2EFHEVMConfig.sol @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import {FHEVMConfig, TFHE} from "fhevm/lib/TFHE.sol"; + +/** + * @title ZamaFHEVMConfig. + * @notice This library returns the TFHE config for different networks + * with the contract addresses for + * (1) ACL, (2) TFHEExecutor, (3) FHEPayment, (4) KMSVerifier, + * which are deployed & maintained by Zama. + */ +library DefaultFHEVMConfig { + function getConfig() internal pure returns (FHEVMConfig.FHEVMConfigStruct memory) { + return + FHEVMConfig.FHEVMConfigStruct({ + ACLAddress: 0x9479B455904dCccCf8Bc4f7dF8e9A1105cBa2A8e, + TFHEExecutorAddress: 0x199fB61DFdfE46f9F90C9773769c28D9623Bb90e, + FHEPaymentAddress: 0x25FE5d92Ae6f89AF37D177cF818bF27EDFe37F7c, + KMSVerifierAddress: 0x904Af2B61068f686838bD6257E385C2cE7a09195 + }); + } +} + +/** + * @title MockZamaFHEVMConfig. + * @dev This contract can be inherited by a contract wishing to use these contracts on the mock + * environment provided by Zama. + * Other providers may offer similar contracts deployed at different addresses. + * If you wish to use them, you should rely on the instructions from these providers. + */ +contract E2EFHEVMConfig { + constructor() { + TFHE.setFHEVM(DefaultFHEVMConfig.getConfig()); + } +} diff --git a/e2e/contracts/EncryptedERC20.sol b/e2e/contracts/EncryptedERC20.sol index ce4305b..87b7799 100644 --- a/e2e/contracts/EncryptedERC20.sol +++ b/e2e/contracts/EncryptedERC20.sol @@ -2,10 +2,11 @@ pragma solidity ^0.8.24; +import {E2EFHEVMConfig} from "./E2EFHEVMConfig.sol"; import "fhevm/lib/TFHE.sol"; import "@openzeppelin/contracts/access/Ownable2Step.sol"; -contract EncryptedERC20 is Ownable2Step { +contract EncryptedERC20 is E2EFHEVMConfig, Ownable2Step { event Transfer(address indexed from, address indexed to); event Approval(address indexed owner, address indexed spender); event Mint(address indexed to, uint64 amount); diff --git a/e2e/contracts/Increment.sol b/e2e/contracts/Increment.sol index c664290..89d62ac 100644 --- a/e2e/contracts/Increment.sol +++ b/e2e/contracts/Increment.sol @@ -2,12 +2,14 @@ pragma solidity ^0.8.24; +import { E2EFHEVMConfig } from "./E2EFHEVMConfig.sol"; import "fhevm/lib/TFHE.sol"; -contract Increment { +contract Increment is E2EFHEVMConfig { euint8 public counter; constructor() { + counter = TFHE.asEuint8(0); TFHE.allow(counter, address(this)); TFHE.allow(counter, msg.sender); diff --git a/e2e/hardhat.config.ts b/e2e/hardhat.config.ts index aa116e5..f92cd11 100644 --- a/e2e/hardhat.config.ts +++ b/e2e/hardhat.config.ts @@ -9,6 +9,7 @@ import { resolve } from "path"; // Adjust the import path as needed import "./tasks/accounts"; +import "./tasks/deployERC20"; import "./tasks/getEthereumAddress"; const dotenvConfigPath: string = process.env.DOTENV_CONFIG_PATH || "./.env"; @@ -61,7 +62,7 @@ task("coverage").setAction(async (taskArgs, hre, runSuper) => { }); const config: HardhatUserConfig = { - defaultNetwork: "local", + defaultNetwork: "sepolia", namedAccounts: { deployer: 0, }, diff --git a/e2e/package.json b/e2e/package.json index da1e358..a8b7be8 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -33,7 +33,8 @@ "eslint": "^9.9.0", "eslint-config-prettier": "^8.5.0", "ethers": "^6.8.0", - "fhevm": "^0.5.9", + "fhevm": "0.6.0-0", + "fhevm-core-contracts": "0.1.0-2", "fhevmjs": "0.6.0-8", "fs-extra": "^10.1.0", "globals": "^15.9.0", @@ -85,9 +86,10 @@ "prettier:check": "prettier --check \"**/*.{js,json,md,sol,ts,yml}\"", "prettier:write": "prettier --write \"**/*.{js,json,md,sol,ts,yml}\"", "typechain": "cross-env TS_NODE_TRANSPILE_ONLY=true hardhat typechain", - "test": "hardhat test --network sepolia", + "test": "hardhat test", "task:getEthereumAddress": "hardhat task:getEthereumAddress", - "task:accounts": "hardhat task:accounts" + "task:accounts": "hardhat task:accounts", + "task:deployERC20": "hardhat task:deployERC20" }, "dependencies": { "extra-bigint": "^1.1.18", diff --git a/e2e/pnpm-lock.yaml b/e2e/pnpm-lock.yaml index 74bed86..2a84aff 100644 --- a/e2e/pnpm-lock.yaml +++ b/e2e/pnpm-lock.yaml @@ -85,8 +85,11 @@ importers: specifier: ^6.8.0 version: 6.13.4 fhevm: - specifier: ^0.5.9 - version: 0.5.9 + specifier: 0.6.0-0 + version: 0.6.0-0 + fhevm-core-contracts: + specifier: 0.1.0-2 + version: 0.1.0-2 fhevmjs: specifier: 0.6.0-8 version: 0.6.0-8 @@ -1508,8 +1511,11 @@ packages: node-fetch: optional: true - fhevm@0.5.9: - resolution: {integrity: sha512-9cSfmAa4AJUuROd4kESvtNYJpnea1PUvjU7yaNnrJsaHqPkVGQvpnIDEnO4KTsJ36Etup1ksPs8PvyGNYwkatQ==} + fhevm-core-contracts@0.1.0-2: + resolution: {integrity: sha512-lTUodggGV4+pZVFRKRb22t3rWyfR8iFZLgNxRBozgAEUSsIDe16PI9vn8PkfJzJJdOlPk9XsTY6/s1pACDbwfA==} + + fhevm@0.6.0-0: + resolution: {integrity: sha512-Gvd7a5T7JTU3OFHy2eRrvRTTmXWwSalSSsBdE0X0C0nTnTow5sYsQYkQqIZcYZNpZq1dCcoCgp/gYbeNDHUDNw==} engines: {node: '>=20.0.0'} fhevmjs@0.6.0-8: @@ -4939,9 +4945,16 @@ snapshots: is-subset: 0.1.1 regexparam: 3.0.0 - fhevm@0.5.9: + fhevm-core-contracts@0.1.0-2: {} + + fhevm@0.6.0-0: dependencies: '@openzeppelin/contracts': 5.1.0 + extra-bigint: 1.2.0 + sqlite3: 5.1.7 + transitivePeerDependencies: + - bluebird + - supports-color fhevmjs@0.6.0-8: dependencies: diff --git a/e2e/tasks/deployERC20.ts b/e2e/tasks/deployERC20.ts index 9eeafc4..6031119 100644 --- a/e2e/tasks/deployERC20.ts +++ b/e2e/tasks/deployERC20.ts @@ -3,8 +3,8 @@ import type { TaskArguments } from "hardhat/types"; task("task:deployERC20").setAction(async function (taskArguments: TaskArguments, { ethers }) { const signers = await ethers.getSigners(); - const erc20Factory = await ethers.getContractFactory("MyERC20"); - const encryptedERC20 = await erc20Factory.connect(signers[0]).deploy(); + const erc20Factory = await ethers.getContractFactory("EncryptedERC20"); + const encryptedERC20 = await erc20Factory.connect(signers[0]).deploy("Naraggara", "NARA"); await encryptedERC20.waitForDeployment(); - console.log("MyERC20 deployed to: ", await encryptedERC20.getAddress()); + console.log("ERC20 deployed to: ", await encryptedERC20.getAddress()); }); diff --git a/e2e/test/encryptedERC20/EncryptedERC20.ts b/e2e/test/encryptedERC20/EncryptedERC20.ts index d091177..f14634b 100644 --- a/e2e/test/encryptedERC20/EncryptedERC20.ts +++ b/e2e/test/encryptedERC20/EncryptedERC20.ts @@ -1,6 +1,6 @@ import { expect } from "chai"; -import { createInstances } from "../instance"; +import { createInstance } from "../instance"; import { getSigners, initSigners } from "../signers"; import { deployEncryptedERC20Fixture } from "./EncryptedERC20.fixture"; @@ -14,7 +14,7 @@ describe("EncryptedERC20", function () { const contract = await deployEncryptedERC20Fixture(); this.contractAddress = await contract.getAddress(); this.erc20 = contract; - this.instances = await createInstances(this.signers); + this.fhevm = await createInstance(); }); it("should mint the contract", async function () { @@ -23,14 +23,14 @@ describe("EncryptedERC20", function () { // Reencrypt Alice's balance const balanceHandleAlice = await this.erc20.balanceOf(this.signers.alice); - const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.instances.alice.generateKeypair(); - const eip712 = this.instances.alice.createEIP712(publicKeyAlice, this.contractAddress); + const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.fhevm.generateKeypair(); + const eip712 = this.fhevm.createEIP712(publicKeyAlice, this.contractAddress); const signatureAlice = await this.signers.alice.signTypedData( eip712.domain, { Reencrypt: eip712.types.Reencrypt }, eip712.message, ); - const balanceAlice = await this.instances.alice.reencrypt( + const balanceAlice = await this.fhevm.reencrypt( balanceHandleAlice, privateKeyAlice, publicKeyAlice, @@ -48,7 +48,7 @@ describe("EncryptedERC20", function () { const t1 = await transaction.wait(); expect(t1?.status).to.eq(1); - const input = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + const input = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); input.add64(1337); const encryptedTransferAmount = input.encrypt(); const tx = await this.erc20["transfer(address,bytes32,bytes)"]( @@ -61,14 +61,14 @@ describe("EncryptedERC20", function () { // Reencrypt Alice's balance const balanceHandleAlice = await this.erc20.balanceOf(this.signers.alice); - const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.instances.alice.generateKeypair(); - const eip712 = this.instances.alice.createEIP712(publicKeyAlice, this.contractAddress); + const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.fhevm.generateKeypair(); + const eip712 = this.fhevm.createEIP712(publicKeyAlice, this.contractAddress); const signatureAlice = await this.signers.alice.signTypedData( eip712.domain, { Reencrypt: eip712.types.Reencrypt }, eip712.message, ); - const balanceAlice = await this.instances.alice.reencrypt( + const balanceAlice = await this.fhevm.reencrypt( balanceHandleAlice, privateKeyAlice, publicKeyAlice, @@ -82,14 +82,14 @@ describe("EncryptedERC20", function () { // Reencrypt Bob's balance const balanceHandleBob = await this.erc20.balanceOf(this.signers.bob); - const { publicKey: publicKeyBob, privateKey: privateKeyBob } = this.instances.bob.generateKeypair(); - const eip712Bob = this.instances.bob.createEIP712(publicKeyBob, this.contractAddress); + const { publicKey: publicKeyBob, privateKey: privateKeyBob } = this.fhevm.generateKeypair(); + const eip712Bob = this.fhevm.createEIP712(publicKeyBob, this.contractAddress); const signatureBob = await this.signers.bob.signTypedData( eip712Bob.domain, { Reencrypt: eip712Bob.types.Reencrypt }, eip712Bob.message, ); - const balanceBob = await this.instances.bob.reencrypt( + const balanceBob = await this.fhevm.reencrypt( balanceHandleBob, privateKeyBob, publicKeyBob, @@ -102,7 +102,7 @@ describe("EncryptedERC20", function () { // on the other hand, Bob should be unable to read Alice's balance try { - await this.instances.bob.reencrypt( + await this.fhevm.reencrypt( balanceHandleAlice, privateKeyBob, publicKeyBob, @@ -112,7 +112,7 @@ describe("EncryptedERC20", function () { ); expect.fail("Expected an error to be thrown - Bob should not be able to reencrypt Alice balance"); } catch (error) { - expect(error.message).to.equal("User is not authorized to reencrypt this handle!"); + expect((error as Error).message).to.equal("User is not authorized to reencrypt this handle!"); } }); @@ -120,7 +120,7 @@ describe("EncryptedERC20", function () { const transaction = await this.erc20.mint(1000); await transaction.wait(); - const input = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + const input = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); input.add64(1337); const encryptedTransferAmount = input.encrypt(); const tx = await this.erc20["transfer(address,bytes32,bytes)"]( @@ -131,14 +131,14 @@ describe("EncryptedERC20", function () { await tx.wait(); const balanceHandleAlice = await this.erc20.balanceOf(this.signers.alice); - const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.instances.alice.generateKeypair(); - const eip712 = this.instances.alice.createEIP712(publicKeyAlice, this.contractAddress); + const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.fhevm.generateKeypair(); + const eip712 = this.fhevm.createEIP712(publicKeyAlice, this.contractAddress); const signatureAlice = await this.signers.alice.signTypedData( eip712.domain, { Reencrypt: eip712.types.Reencrypt }, eip712.message, ); - const balanceAlice = await this.instances.alice.reencrypt( + const balanceAlice = await this.fhevm.reencrypt( balanceHandleAlice, privateKeyAlice, publicKeyAlice, @@ -152,14 +152,14 @@ describe("EncryptedERC20", function () { // Reencrypt Bob's balance const balanceHandleBob = await this.erc20.balanceOf(this.signers.bob); - const { publicKey: publicKeyBob, privateKey: privateKeyBob } = this.instances.bob.generateKeypair(); - const eip712Bob = this.instances.bob.createEIP712(publicKeyBob, this.contractAddress); + const { publicKey: publicKeyBob, privateKey: privateKeyBob } = this.fhevm.generateKeypair(); + const eip712Bob = this.fhevm.createEIP712(publicKeyBob, this.contractAddress); const signatureBob = await this.signers.bob.signTypedData( eip712Bob.domain, { Reencrypt: eip712Bob.types.Reencrypt }, eip712Bob.message, ); - const balanceBob = await this.instances.bob.reencrypt( + const balanceBob = await this.fhevm.reencrypt( balanceHandleBob, privateKeyBob, publicKeyBob, @@ -175,7 +175,7 @@ describe("EncryptedERC20", function () { const transaction = await this.erc20.mint(10000); await transaction.wait(); - const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + const inputAlice = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); inputAlice.add64(1337); const encryptedAllowanceAmount = inputAlice.encrypt(); const tx = await this.erc20["approve(address,bytes32,bytes)"]( @@ -186,7 +186,7 @@ describe("EncryptedERC20", function () { await tx.wait(); const bobErc20 = this.erc20.connect(this.signers.bob); - const inputBob1 = this.instances.bob.createEncryptedInput(this.contractAddress, this.signers.bob.address); + const inputBob1 = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.bob.address); inputBob1.add64(1338); // above allowance so next tx should actually not send any token const encryptedTransferAmount = inputBob1.encrypt(); const tx2 = await bobErc20["transferFrom(address,address,bytes32,bytes)"]( @@ -199,14 +199,14 @@ describe("EncryptedERC20", function () { // Decrypt Alice's balance const balanceHandleAlice = await this.erc20.balanceOf(this.signers.alice); - const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.instances.alice.generateKeypair(); - const eip712 = this.instances.alice.createEIP712(publicKeyAlice, this.contractAddress); + const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.fhevm.generateKeypair(); + const eip712 = this.fhevm.createEIP712(publicKeyAlice, this.contractAddress); const signatureAlice = await this.signers.alice.signTypedData( eip712.domain, { Reencrypt: eip712.types.Reencrypt }, eip712.message, ); - const balanceAlice = await this.instances.alice.reencrypt( + const balanceAlice = await this.fhevm.reencrypt( balanceHandleAlice, privateKeyAlice, publicKeyAlice, @@ -218,14 +218,14 @@ describe("EncryptedERC20", function () { // Decrypt Bob's balance const balanceHandleBob = await this.erc20.balanceOf(this.signers.bob); - const { publicKey: publicKeyBob, privateKey: privateKeyBob } = this.instances.bob.generateKeypair(); - const eip712Bob = this.instances.bob.createEIP712(publicKeyBob, this.contractAddress); + const { publicKey: publicKeyBob, privateKey: privateKeyBob } = this.fhevm.generateKeypair(); + const eip712Bob = this.fhevm.createEIP712(publicKeyBob, this.contractAddress); const signatureBob = await this.signers.bob.signTypedData( eip712Bob.domain, { Reencrypt: eip712Bob.types.Reencrypt }, eip712Bob.message, ); - const balanceBob = await this.instances.bob.reencrypt( + const balanceBob = await this.fhevm.reencrypt( balanceHandleBob, privateKeyBob, publicKeyBob, @@ -235,7 +235,7 @@ describe("EncryptedERC20", function () { ); expect(balanceBob).to.equal(0); // check that transfer did not happen, as expected - const inputBob2 = this.instances.bob.createEncryptedInput(this.contractAddress, this.signers.bob.address); + const inputBob2 = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.bob.address); inputBob2.add64(1337); // below allowance so next tx should send token const encryptedTransferAmount2 = inputBob2.encrypt(); const tx3 = await bobErc20["transferFrom(address,address,bytes32,bytes)"]( @@ -248,7 +248,7 @@ describe("EncryptedERC20", function () { // Decrypt Alice's balance const balanceHandleAlice2 = await this.erc20.balanceOf(this.signers.alice); - const balanceAlice2 = await this.instances.alice.reencrypt( + const balanceAlice2 = await this.fhevm.reencrypt( balanceHandleAlice2, privateKeyAlice, publicKeyAlice, @@ -260,7 +260,7 @@ describe("EncryptedERC20", function () { // Decrypt Bob's balance const balanceHandleBob2 = await this.erc20.balanceOf(this.signers.bob); - const balanceBob2 = await this.instances.bob.reencrypt( + const balanceBob2 = await this.fhevm.reencrypt( balanceHandleBob2, privateKeyBob, publicKeyBob, diff --git a/e2e/test/increment/Increment.ts b/e2e/test/increment/Increment.ts index 3d1e26d..db6ff5a 100644 --- a/e2e/test/increment/Increment.ts +++ b/e2e/test/increment/Increment.ts @@ -1,6 +1,6 @@ import { expect } from "chai"; -import { createInstances } from "../instance"; +import { createInstance } from "../instance"; import { getSigners, initSigners } from "../signers"; import { deployIncrementFixture } from "./Increment.fixture"; @@ -14,7 +14,7 @@ describe("Increment", function () { const contract = await deployIncrementFixture(); this.contractAddress = await contract.getAddress(); this.increment = contract; - this.instances = await createInstances(this.signers); + this.fhevm = await createInstance(); }); it("should increment", async function () { @@ -25,14 +25,14 @@ describe("Increment", function () { const counterHandle = await this.increment.counter(); console.log(counterHandle); - const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.instances.alice.generateKeypair(); - const eip712 = this.instances.alice.createEIP712(publicKeyAlice, this.contractAddress); + const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.fhevm.generateKeypair(); + const eip712 = this.fhevm.createEIP712(publicKeyAlice, this.contractAddress); const signatureAlice = await this.signers.alice.signTypedData( eip712.domain, { Reencrypt: eip712.types.Reencrypt }, eip712.message, ); - const counter = await this.instances.alice.reencrypt( + const counter = await this.fhevm.reencrypt( counterHandle, privateKeyAlice, publicKeyAlice, diff --git a/e2e/test/instance.ts b/e2e/test/instance.ts index 1bf8075..c89f656 100644 --- a/e2e/test/instance.ts +++ b/e2e/test/instance.ts @@ -1,185 +1,17 @@ import dotenv from "dotenv"; -import { clientKeyDecryptor, createInstance as createFhevmInstance, getCiphertextCallParams } from "fhevmjs/node"; -import { readFileSync } from "fs"; +import { createInstance as createFhevmInstance } from "fhevmjs/node"; import * as fs from "fs"; -import { ethers, ethers as hethers, network } from "hardhat"; -import { homedir } from "os"; -import path from "path"; - -import { createEncryptedInputMocked, reencryptRequestMocked } from "./fhevmjsMocked"; -import type { Signers } from "./signers"; -import { FhevmInstances } from "./types"; +import { network } from "hardhat"; +import { NetworkConfig } from "hardhat/types"; const parsedEnv = dotenv.parse(fs.readFileSync(".env")); -const FHE_CLIENT_KEY_PATH = process.env.FHE_CLIENT_KEY_PATH; - -let clientKey: Uint8Array | undefined; - -export const createInstances = async (accounts: Signers): Promise => { - // Create instance - const instances: FhevmInstances = {} as FhevmInstances; - - await Promise.all( - Object.keys(accounts).map(async (k) => { - instances[k as keyof FhevmInstances] = await createInstance(); - }), - ); - - return instances; -}; - export const createInstance = async () => { const instance = await createFhevmInstance({ - networkUrl: network.config.url, + networkUrl: (network.config as NetworkConfig & { url: string }).url, gatewayUrl: parsedEnv.GATEWAY_URL, aclContractAddress: parsedEnv.ACL_CONTRACT_ADDRESS, kmsContractAddress: parsedEnv.KMS_VERIFIER_CONTRACT_ADDRESS, }); return instance; }; - -const getCiphertext = async (handle: bigint, ethers: typeof hethers): Promise => { - return ethers.provider.call(getCiphertextCallParams(handle)); -}; - -const getDecryptor = () => { - if (clientKey == null) { - if (FHE_CLIENT_KEY_PATH) { - clientKey = readFileSync(FHE_CLIENT_KEY_PATH); - } else { - const home = homedir(); - const clientKeyPath = path.join(home, "network-fhe-keys/cks"); - clientKey = readFileSync(clientKeyPath); - } - } - return clientKeyDecryptor(clientKey); -}; - -/** - * @debug - * This function is intended for debugging purposes only. - * It cannot be used in production code, since it requires the FHE private key for decryption. - * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. - * - * @param {bigint} a handle to decrypt - * @returns {bool} - */ -export const decryptBool = async (handle: bigint): Promise => { - if (network.name === "hardhat") { - await awaitCoprocessor(); - return (await getClearText(handle)) === "1"; - } else { - return getDecryptor().decryptBool(await getCiphertext(handle, ethers)); - } -}; - -/** - * @debug - * This function is intended for debugging purposes only. - * It cannot be used in production code, since it requires the FHE private key for decryption. - * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. - * - * @param {bigint} a handle to decrypt - * @returns {bigint} - */ -export const decrypt4 = async (handle: bigint): Promise => { - if (network.name === "hardhat") { - await awaitCoprocessor(); - return BigInt(await getClearText(handle)); - } else { - return getDecryptor().decrypt4(await getCiphertext(handle, ethers)); - } -}; - -/** - * @debug - * This function is intended for debugging purposes only. - * It cannot be used in production code, since it requires the FHE private key for decryption. - * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. - * - * @param {bigint} a handle to decrypt - * @returns {bigint} - */ -export const decrypt8 = async (handle: bigint): Promise => { - if (network.name === "hardhat") { - await awaitCoprocessor(); - return BigInt(await getClearText(handle)); - } else { - return getDecryptor().decrypt8(await getCiphertext(handle, ethers)); - } -}; - -/** - * @debug - * This function is intended for debugging purposes only. - * It cannot be used in production code, since it requires the FHE private key for decryption. - * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. - * - * @param {bigint} a handle to decrypt - * @returns {bigint} - */ -export const decrypt16 = async (handle: bigint): Promise => { - if (network.name === "hardhat") { - await awaitCoprocessor(); - return BigInt(await getClearText(handle)); - } else { - return getDecryptor().decrypt16(await getCiphertext(handle, ethers)); - } -}; - -/** - * @debug - * This function is intended for debugging purposes only. - * It cannot be used in production code, since it requires the FHE private key for decryption. - * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. - * - * @param {bigint} a handle to decrypt - * @returns {bigint} - */ -export const decrypt32 = async (handle: bigint): Promise => { - if (network.name === "hardhat") { - await awaitCoprocessor(); - return BigInt(await getClearText(handle)); - } else { - return getDecryptor().decrypt32(await getCiphertext(handle, ethers)); - } -}; - -/** - * @debug - * This function is intended for debugging purposes only. - * It cannot be used in production code, since it requires the FHE private key for decryption. - * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. - * - * @param {bigint} a handle to decrypt - * @returns {bigint} - */ -export const decrypt64 = async (handle: bigint): Promise => { - if (network.name === "hardhat") { - await awaitCoprocessor(); - return BigInt(await getClearText(handle)); - } else { - return getDecryptor().decrypt64(await getCiphertext(handle, ethers)); - } -}; - -/** - * @debug - * This function is intended for debugging purposes only. - * It cannot be used in production code, since it requires the FHE private key for decryption. - * In production, decryption is only possible via an asyncronous on-chain call to the Gateway. - * - * @param {bigint} a handle to decrypt - * @returns {string} - */ -export const decryptAddress = async (handle: bigint): Promise => { - if (network.name === "hardhat") { - await awaitCoprocessor(); - const bigintAdd = BigInt(await getClearText(handle)); - const handleStr = "0x" + bigintAdd.toString(16).padStart(40, "0"); - return handleStr; - } else { - return getDecryptor().decryptAddress(await getCiphertext(handle, ethers)); - } -}; From 0571a5a430f3b04d7cec03f4ea156114dc0e3e05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Fri, 15 Nov 2024 22:15:31 +0100 Subject: [PATCH 03/21] fix: update README --- e2e/README.md | 233 ++++---------------------------------------------- 1 file changed, 15 insertions(+), 218 deletions(-) diff --git a/e2e/README.md b/e2e/README.md index 23fa720..a6dec46 100644 --- a/e2e/README.md +++ b/e2e/README.md @@ -1,232 +1,29 @@ -# Hardhat Template [![Open in Gitpod][gitpod-badge]][gitpod] [![Github Actions][gha-badge]][gha] [![Hardhat][hardhat-badge]][hardhat] [![License: MIT][license-badge]][license] +# e2e tests -[gitpod]: https://gitpod.io/#https://github.com/zama-ai/fhevm-hardhat-template -[gitpod-badge]: https://img.shields.io/badge/Gitpod-Open%20in%20Gitpod-FFB45B?logo=gitpod -[gha]: https://github.com/zama-ai/fhevm-hardhat-template/actions -[gha-badge]: https://github.com/zama-ai/fhevm-hardhat-template/actions/workflows/ci.yml/badge.svg -[hardhat]: https://hardhat.org/ -[hardhat-badge]: https://img.shields.io/badge/Built%20with-Hardhat-FFDB1C.svg -[license]: https://opensource.org/licenses/MIT -[license-badge]: https://img.shields.io/badge/License-MIT-blue.svg +## Install -A Hardhat-based template for developing Solidity smart contracts, with sensible defaults. - -- [Hardhat](https://github.com/nomiclabs/hardhat): compile, run and test smart contracts -- [TypeChain](https://github.com/ethereum-ts/TypeChain): generate TypeScript bindings for smart contracts -- [Ethers](https://github.com/ethers-io/ethers.js/): renowned Ethereum library and wallet implementation -- [Solhint](https://github.com/protofire/solhint): code linter -- [Solcover](https://github.com/sc-forks/solidity-coverage): code coverage -- [Prettier Plugin Solidity](https://github.com/prettier-solidity/prettier-plugin-solidity): code formatter - -## Getting Started - -Click the [`Use this template`](https://github.com/zama-ai/fhevm-hardhat-template/generate) button at the top of the -page to create a new repository with this repo as the initial state. - -## Features - -This template builds upon the frameworks and libraries mentioned above, so for details about their specific features, -please consult their respective documentations. - -For example, for Hardhat, you can refer to the [Hardhat Tutorial](https://hardhat.org/tutorial) and the -[Hardhat Docs](https://hardhat.org/docs). You might be in particular interested in reading the -[Testing Contracts](https://hardhat.org/tutorial/testing-contracts) section. - -### Sensible Defaults - -This template comes with sensible default configurations in the following files: - -```text -├── .editorconfig -├── .eslintignore -├── .eslintrc.yml -├── .gitignore -├── .prettierignore -├── .prettierrc.yml -├── .solcover.js -├── .solhint.json -└── hardhat.config.ts -``` - -### VSCode Integration - -This template is IDE agnostic, but for the best user experience, you may want to use it in VSCode alongside Nomic -Foundation's [Solidity extension](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity). - -### GitHub Actions - -This template comes with GitHub Actions pre-configured. Your contracts will be linted and tested on every push and pull -request made to the `main` branch. - -Note though that to make this work, you must use your `INFURA_API_KEY` and your `MNEMONIC` as GitHub secrets. - -You can edit the CI script in [.github/workflows/ci.yml](./.github/workflows/ci.yml). - -## Usage - -### Pre Requisites - -Install [docker](https://docs.docker.com/engine/install/) - -Install [pnpm](https://pnpm.io/installation) - -Before being able to run any command, you need to create a `.env` file and set a BIP-39 compatible mnemonic as an -environment variable. You can follow the example in `.env.example` and start with the following command: - -```sh -cp .env.example .env -``` - -If you don't already have a mnemonic, you can use this [website](https://iancoleman.io/bip39/) to generate one. - -Then, proceed with installing dependencies - please **_make sure to use Node v20_** or more recent or this will fail: - -```sh +```bash pnpm install ``` -### Start fhEVM - -During installation (see previous section) we recommend you for easier setup to not change the default `.env` : simply -copy the original `.env.example` file to a new `.env` file in the root of the repo. - -Then, start a local fhEVM docker compose that inlcudes everything needed to deploy FHE encrypted smart contracts using: - -```sh -# In one terminal, keep it opened -# The node logs are printed -pnpm fhevm:start -``` - -Previous command will take 2 to 3 minutes to do the whole initial setup - wait until the blockchain logs appear to make -sure setup is complete (we are working on making initial deployment faster). - -You can then run the tests simply in a new terminal via : - -``` -pnpm test -``` - -Once your done with your tests, to stop the node: - -```sh -pnpm fhevm:stop -``` - -### Compile - -Compile the smart contracts with Hardhat: - -```sh -pnpm compile -``` +## Configuration -### TypeChain +1. Copy `.env.example` to `.env` and edit addresses with the correct one. +2. Edit your `.env` file with correct values. +3. Edit `contracts/E2EFHEVMConfig.sol` and set correct addresses of your fhEVM. +4. Edit `hardhat.config.ts` to set the `defaultNetwork`. By default, it is set to Sepolia, but you can a different one + or add your own L1 address. 4. Fund your wallet +5. Fund the primary wallet derived from your mnemomic. If you don't know what is the public address, run + `pnpm run task:accounts` -Compile the smart contracts and generate TypeChain bindings: - -```sh -pnpm typechain -``` - -### List accounts - -From the mnemonic in .env file, list all the derived Ethereum adresses: - -```sh -pnpm task:accounts -``` - -### Get some native coins - -In order to interact with the blockchain, one need some coins. This command will give coins to the first 5 addresses -derived from the mnemonic in .env file. - -```sh -pnpm fhevm:faucet -``` - -
-
- To get the first derived address from mnemonic -
- -```sh -pnpm task:getEthereumAddress -``` - -
-
- -### Test - -Run the tests with Hardhat: - -```sh -pnpm test -``` - -### Lint Solidity - -Lint the Solidity code: - -```sh -pnpm lint:sol -``` - -### Lint TypeScript - -Lint the TypeScript code: - -```sh -pnpm lint:ts -``` - -### Report Gas - -See the gas usage per unit test and average gas per method call: - -```sh -REPORT_GAS=true pnpm test -``` - -### Clean - -Delete the smart contract artifacts, the coverage reports and the Hardhat cache: - -```sh -pnpm clean -``` - -### Mocked mode - -The mocked mode allows faster testing and the ability to analyze coverage of the tests. In this mocked version, -encrypted types are not really encrypted, and the tests are run on the original version of the EVM, on a local hardhat -network instance. To run the tests in mocked mode, you can use directly the following command: +## Run ```bash -pnpm test:mock +pnpm run test ``` -To analyze the coverage of the tests (in mocked mode necessarily, as this cannot be done on the real fhEVM node), you -can use this command : +or if you want to run only one test ```bash -pnpm coverage:mock +pnpm run test test/encryptedERC20/EncryptedERC20.ts ``` - -Then open the file `coverage/index.html`. You can see there which line or branch for each contract which has been -covered or missed by your test suite. This allows increased security by pointing out missing branches not covered yet by -the current tests. - -> [!Note] -> Due to intrinsic limitations of the original EVM, the mocked version differ in few corner cases from the real fhEVM, the main difference is the difference in gas prices for the FHE operations. This means that before deploying to production, developers still need to run the tests with the original fhEVM node, as a final check in non-mocked mode, with `pnpm test`. - -### Syntax Highlighting - -If you use VSCode, you can get Solidity syntax highlighting with the -[hardhat-solidity](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity) extension. - -## License - -This project is licensed under MIT. From fdfb5d8fd7c9f73293e99a5277738f56f3d55829 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Mon, 18 Nov 2024 16:24:04 +0100 Subject: [PATCH 04/21] test: add more tests --- e2e/contracts/Increment.sol | 1 - e2e/contracts/tests/TFHEManualTestSuite.sol | 383 ++ e2e/contracts/tests/TFHETestSuite1.sol | 652 +++ e2e/contracts/tests/TFHETestSuite10.sol | 652 +++ e2e/contracts/tests/TFHETestSuite11.sol | 442 ++ e2e/contracts/tests/TFHETestSuite2.sol | 652 +++ e2e/contracts/tests/TFHETestSuite3.sol | 652 +++ e2e/contracts/tests/TFHETestSuite4.sol | 652 +++ e2e/contracts/tests/TFHETestSuite5.sol | 652 +++ e2e/contracts/tests/TFHETestSuite6.sol | 652 +++ e2e/contracts/tests/TFHETestSuite7.sol | 652 +++ e2e/contracts/tests/TFHETestSuite8.sol | 652 +++ e2e/contracts/tests/TFHETestSuite9.sol | 652 +++ e2e/test/increment/Increment.ts | 1 - e2e/test/instance.ts | 23 +- e2e/test/tfheOperations/tfheOperations1.ts | 4667 +++++++++++++++++++ 16 files changed, 12034 insertions(+), 3 deletions(-) create mode 100644 e2e/contracts/tests/TFHEManualTestSuite.sol create mode 100644 e2e/contracts/tests/TFHETestSuite1.sol create mode 100644 e2e/contracts/tests/TFHETestSuite10.sol create mode 100644 e2e/contracts/tests/TFHETestSuite11.sol create mode 100644 e2e/contracts/tests/TFHETestSuite2.sol create mode 100644 e2e/contracts/tests/TFHETestSuite3.sol create mode 100644 e2e/contracts/tests/TFHETestSuite4.sol create mode 100644 e2e/contracts/tests/TFHETestSuite5.sol create mode 100644 e2e/contracts/tests/TFHETestSuite6.sol create mode 100644 e2e/contracts/tests/TFHETestSuite7.sol create mode 100644 e2e/contracts/tests/TFHETestSuite8.sol create mode 100644 e2e/contracts/tests/TFHETestSuite9.sol create mode 100644 e2e/test/tfheOperations/tfheOperations1.ts diff --git a/e2e/contracts/Increment.sol b/e2e/contracts/Increment.sol index 89d62ac..3f4a004 100644 --- a/e2e/contracts/Increment.sol +++ b/e2e/contracts/Increment.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.24; import { E2EFHEVMConfig } from "./E2EFHEVMConfig.sol"; import "fhevm/lib/TFHE.sol"; - contract Increment is E2EFHEVMConfig { euint8 public counter; diff --git a/e2e/contracts/tests/TFHEManualTestSuite.sol b/e2e/contracts/tests/TFHEManualTestSuite.sol new file mode 100644 index 0000000..7d2dc0c --- /dev/null +++ b/e2e/contracts/tests/TFHEManualTestSuite.sol @@ -0,0 +1,383 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; +import "fhevm/lib/TFHE.sol"; + + +contract TFHEManualTestSuite is E2EFHEVMConfig { + ebool public resb; + euint4 public res4; + euint8 public res8; + euint16 public res16; + euint32 public res32; + euint64 public res64; + euint128 public res128; + euint256 public res256; + eaddress public resAdd; + ebytes64 public resB64; + ebytes128 public resB128; + ebytes256 public resB256; + + function eqEbool(bool a, bool b) external { + ebool input1 = TFHE.asEbool(a); + ebool input2 = TFHE.asEbool(b); + ebool result = TFHE.eq(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function eqEboolScalarL(bool a, bool b) external { + ebool input2 = TFHE.asEbool(b); + ebool result = TFHE.eq(a, input2); + TFHE.allowThis(result); + resb = result; + } + + function eqEboolScalarR(bool a, bool b) external { + ebool input1 = TFHE.asEbool(a); + ebool result = TFHE.eq(input1, b); + TFHE.allowThis(result); + resb = result; + } + + function neEbool(bool a, bool b) external { + ebool input1 = TFHE.asEbool(a); + ebool input2 = TFHE.asEbool(b); + ebool result = TFHE.ne(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function neEboolScalarL(bool a, bool b) external { + ebool input2 = TFHE.asEbool(b); + ebool result = TFHE.ne(a, input2); + TFHE.allowThis(result); + resb = result; + } + + function neEboolScalarR(bool a, bool b) external { + ebool input1 = TFHE.asEbool(a); + ebool result = TFHE.ne(input1, b); + TFHE.allowThis(result); + resb = result; + } + + function eqEbytes256(einput inp1, bytes calldata inputProof1, einput inp2, bytes calldata inputProof2) external { + ebytes256 input1 = TFHE.asEbytes256(inp1, inputProof1); + ebytes256 input2 = TFHE.asEbytes256(inp2, inputProof2); + ebool result = TFHE.eq(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function neEbytes256(einput inp1, bytes calldata inputProof1, einput inp2, bytes calldata inputProof2) external { + ebytes256 input1 = TFHE.asEbytes256(inp1, inputProof1); + ebytes256 input2 = TFHE.asEbytes256(inp2, inputProof2); + ebool result = TFHE.ne(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function eqEbytes64(bytes memory a, bytes memory b) external { + ebytes64 input1 = TFHE.asEbytes64(TFHE.padToBytes64(a)); + ebytes64 input2 = TFHE.asEbytes64(TFHE.padToBytes64(b)); + ebool result = TFHE.eq(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function eqEbytes64ScalarL(bytes memory a, bytes memory b) external { + bytes memory input1 = TFHE.padToBytes64(a); + ebytes64 input2 = TFHE.asEbytes64(TFHE.padToBytes64(b)); + ebool result = TFHE.eq(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function eqEbytes64ScalarR(bytes memory a, bytes memory b) external { + ebytes64 input1 = TFHE.asEbytes64(TFHE.padToBytes64(a)); + bytes memory input2 = TFHE.padToBytes64(b); + ebool result = TFHE.eq(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function neEbytes64(bytes memory a, bytes memory b) external { + ebytes64 input1 = TFHE.asEbytes64(TFHE.padToBytes64(a)); + ebytes64 input2 = TFHE.asEbytes64(TFHE.padToBytes64(b)); + ebool result = TFHE.ne(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function neEbytes64ScalarL(bytes memory a, bytes memory b) external { + bytes memory input1 = TFHE.padToBytes64(a); + ebytes64 input2 = TFHE.asEbytes64(TFHE.padToBytes64(b)); + ebool result = TFHE.ne(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function neEbytes64ScalarR(bytes memory a, bytes memory b) external { + ebytes64 input1 = TFHE.asEbytes64(TFHE.padToBytes64(a)); + bytes memory input2 = TFHE.padToBytes64(b); + ebool result = TFHE.ne(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function eqEbytes128(bytes memory a, bytes memory b) external { + ebytes128 input1 = TFHE.asEbytes128(TFHE.padToBytes128(a)); + ebytes128 input2 = TFHE.asEbytes128(TFHE.padToBytes128(b)); + ebool result = TFHE.eq(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function eqEbytes128ScalarL(bytes memory a, bytes memory b) external { + bytes memory input1 = TFHE.padToBytes128(a); + ebytes128 input2 = TFHE.asEbytes128(TFHE.padToBytes128(b)); + ebool result = TFHE.eq(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function eqEbytes128ScalarR(bytes memory a, bytes memory b) external { + ebytes128 input1 = TFHE.asEbytes128(TFHE.padToBytes128(a)); + bytes memory input2 = TFHE.padToBytes128(b); + ebool result = TFHE.eq(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function neEbytes128(bytes memory a, bytes memory b) external { + ebytes128 input1 = TFHE.asEbytes128(TFHE.padToBytes128(a)); + ebytes128 input2 = TFHE.asEbytes128(TFHE.padToBytes128(b)); + ebool result = TFHE.ne(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function neEbytes128ScalarL(bytes memory a, bytes memory b) external { + bytes memory input1 = TFHE.padToBytes128(a); + ebytes128 input2 = TFHE.asEbytes128(TFHE.padToBytes128(b)); + ebool result = TFHE.ne(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function neEbytes128ScalarR(bytes memory a, bytes memory b) external { + ebytes128 input1 = TFHE.asEbytes128(TFHE.padToBytes128(a)); + bytes memory input2 = TFHE.padToBytes128(b); + ebool result = TFHE.ne(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function eqEbytes256ScalarL(bytes memory a, bytes memory b) external { + bytes memory input1 = TFHE.padToBytes256(a); + ebytes256 input2 = TFHE.asEbytes256(TFHE.padToBytes256(b)); + ebool result = TFHE.eq(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function eqEbytes256ScalarR(bytes memory a, bytes memory b) external { + ebytes256 input1 = TFHE.asEbytes256(TFHE.padToBytes256(a)); + bytes memory input2 = TFHE.padToBytes256(b); + ebool result = TFHE.eq(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function neEbytes256ScalarL(bytes memory a, bytes memory b) external { + bytes memory input1 = TFHE.padToBytes256(a); + ebytes256 input2 = TFHE.asEbytes256(TFHE.padToBytes256(b)); + ebool result = TFHE.ne(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function neEbytes256ScalarR(bytes memory a, bytes memory b) external { + ebytes256 input1 = TFHE.asEbytes256(TFHE.padToBytes256(a)); + bytes memory input2 = TFHE.padToBytes256(b); + ebool result = TFHE.ne(input1, input2); + TFHE.allowThis(result); + resb = result; + } + + function test_select_ebool(bool control, bool ifTrue, bool ifFalse) public { + ebool controlProc = TFHE.asEbool(control); + ebool ifTrueProc = TFHE.asEbool(ifTrue); + ebool ifFalseProc = TFHE.asEbool(ifFalse); + ebool result = TFHE.select(controlProc, ifTrueProc, ifFalseProc); + TFHE.allowThis(result); + resb = result; + } + + function test_select_ebytes64(bool control, bytes memory ifTrue, bytes memory ifFalse) public { + ebool controlProc = TFHE.asEbool(control); + ebytes64 ifTrueProc = TFHE.asEbytes64(TFHE.padToBytes64(ifTrue)); + ebytes64 ifFalseProc = TFHE.asEbytes64(TFHE.padToBytes64(ifFalse)); + ebytes64 result = TFHE.select(controlProc, ifTrueProc, ifFalseProc); + TFHE.allowThis(result); + resB64 = result; + } + + function test_select_ebytes128(bool control, bytes memory ifTrue, bytes memory ifFalse) public { + ebool controlProc = TFHE.asEbool(control); + ebytes128 ifTrueProc = TFHE.asEbytes128(TFHE.padToBytes128(ifTrue)); + ebytes128 ifFalseProc = TFHE.asEbytes128(TFHE.padToBytes128(ifFalse)); + ebytes128 result = TFHE.select(controlProc, ifTrueProc, ifFalseProc); + TFHE.allowThis(result); + resB128 = result; + } + + function test_select_ebytes256(bool control, bytes memory ifTrue, bytes memory ifFalse) public { + ebool controlProc = TFHE.asEbool(control); + ebytes256 ifTrueProc = TFHE.asEbytes256(TFHE.padToBytes256(ifTrue)); + ebytes256 ifFalseProc = TFHE.asEbytes256(TFHE.padToBytes256(ifFalse)); + ebytes256 result = TFHE.select(controlProc, ifTrueProc, ifFalseProc); + TFHE.allowThis(result); + resB256 = result; + } + + function test_select(einput control, einput ifTrue, einput ifFalse, bytes calldata inputProof) public { + ebool controlProc = TFHE.asEbool(control, inputProof); + euint32 ifTrueProc = TFHE.asEuint32(ifTrue, inputProof); + euint32 ifFalseProc = TFHE.asEuint32(ifFalse, inputProof); + euint32 result = TFHE.select(controlProc, ifTrueProc, ifFalseProc); + TFHE.allowThis(result); + res32 = result; + } + + function test_select_eaddress(einput control, einput ifTrue, einput ifFalse, bytes calldata inputProof) public { + ebool controlProc = TFHE.asEbool(control, inputProof); + eaddress ifTrueProc = TFHE.asEaddress(ifTrue, inputProof); + eaddress ifFalseProc = TFHE.asEaddress(ifFalse, inputProof); + eaddress result = TFHE.select(controlProc, ifTrueProc, ifFalseProc); + TFHE.allowThis(result); + resAdd = result; + } + + function test_eq_eaddress_eaddress(einput a, einput b, bytes calldata inputProof) public { + eaddress aProc = TFHE.asEaddress(a, inputProof); + eaddress bProc = TFHE.asEaddress(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + + function test_ne_eaddress_eaddress(einput a, einput b, bytes calldata inputProof) public { + eaddress aProc = TFHE.asEaddress(a, inputProof); + eaddress bProc = TFHE.asEaddress(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + + function test_eq_eaddress_address(einput a, address b, bytes calldata inputProof) public { + eaddress aProc = TFHE.asEaddress(a, inputProof); + ebool result = TFHE.eq(aProc, b); + TFHE.allowThis(result); + resb = result; + } + + function test_eq_address_eaddress(einput a, address b, bytes calldata inputProof) public { + eaddress aProc = TFHE.asEaddress(a, inputProof); + ebool result = TFHE.eq(b, aProc); + TFHE.allowThis(result); + resb = result; + } + + function test_ne_eaddress_address(einput a, address b, bytes calldata inputProof) public { + eaddress aProc = TFHE.asEaddress(a, inputProof); + ebool result = TFHE.ne(aProc, b); + TFHE.allowThis(result); + resb = result; + } + + function test_ne_address_eaddress(einput a, address b, bytes calldata inputProof) public { + eaddress aProc = TFHE.asEaddress(a, inputProof); + ebool result = TFHE.ne(b, aProc); + TFHE.allowThis(result); + resb = result; + } + + function test_ebool_to_euint4_cast(bool input) public { + res4 = TFHE.asEuint4(TFHE.asEbool(input)); + } + + function test_ebool_to_euint8_cast(bool input) public { + res8 = TFHE.asEuint8(TFHE.asEbool(input)); + } + + function test_ebool_to_euint16_cast(bool input) public { + res16 = TFHE.asEuint16(TFHE.asEbool(input)); + } + + function test_ebool_to_euint32_cast(bool input) public { + res32 = TFHE.asEuint32(TFHE.asEbool(input)); + } + + function test_ebool_to_euint64_cast(bool input) public { + res64 = TFHE.asEuint64(TFHE.asEbool(input)); + } + + function test_ebool_to_euint128_cast(bool input) public { + res128 = TFHE.asEuint128(TFHE.asEbool(input)); + } + + function test_ebool_to_euint256_cast(bool input) public { + res256 = TFHE.asEuint256(TFHE.asEbool(input)); + } + + function test_euint4_to_euint256_cast(uint8 input) public { + res256 = TFHE.asEuint256(TFHE.asEuint4(input)); + } + + function test_euint128_to_euint8_cast(uint128 input) public { + res8 = TFHE.asEuint8(TFHE.asEuint128(input)); + } + + function test_ebool_not(bool input) public { + resb = TFHE.not(TFHE.asEbool(input)); + } + + function test_ebool_and(bool a, bool b) public { + resb = TFHE.and(TFHE.asEbool(a), TFHE.asEbool(b)); + } + + function test_ebool_and_scalarL(bool a, bool b) public { + resb = TFHE.and(a, TFHE.asEbool(b)); + } + + function test_ebool_and_scalarR(bool a, bool b) public { + resb = TFHE.and(TFHE.asEbool(a), b); + } + + function test_ebool_or(bool a, bool b) public { + resb = TFHE.or(TFHE.asEbool(a), TFHE.asEbool(b)); + } + + function test_ebool_or_scalarL(bool a, bool b) public { + resb = TFHE.or(a, TFHE.asEbool(b)); + } + + function test_ebool_or_scalarR(bool a, bool b) public { + resb = TFHE.or(TFHE.asEbool(a), b); + } + + function test_ebool_xor(bool a, bool b) public { + resb = TFHE.xor(TFHE.asEbool(a), TFHE.asEbool(b)); + } + + function test_ebool_xor_scalarL(bool a, bool b) public { + resb = TFHE.xor(a, TFHE.asEbool(b)); + } + + function test_ebool_xor_scalarR(bool a, bool b) public { + resb = TFHE.xor(TFHE.asEbool(a), b); + } +} diff --git a/e2e/contracts/tests/TFHETestSuite1.sol b/e2e/contracts/tests/TFHETestSuite1.sol new file mode 100644 index 0000000..8c1ed38 --- /dev/null +++ b/e2e/contracts/tests/TFHETestSuite1.sol @@ -0,0 +1,652 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; +import "fhevm/lib/TFHE.sol"; + + +contract TFHETestSuite1 is E2EFHEVMConfig { + ebool public resb; + euint4 public res4; + euint8 public res8; + euint16 public res16; + euint32 public res32; + euint64 public res64; + euint128 public res128; + euint256 public res256; + + constructor() { + TFHE.setFHEVM(FHEVMConfig.defaultConfig()); + } + + function add_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function sub_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function mul_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function and_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function or_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function xor_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function eq_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function max_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function add_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function sub_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function mul_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function and_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function or_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function xor_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function eq_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function max_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function add_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function sub_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function mul_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function and_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function or_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function xor_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function eq_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function max_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function add_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function sub_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function mul_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function and_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function or_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function xor_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function eq_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function max_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function add_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function sub_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function mul_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function and_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function or_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function xor_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function eq_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function max_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function add_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function sub_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function mul_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function and_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function or_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function xor_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function eq_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function max_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function add_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } +} diff --git a/e2e/contracts/tests/TFHETestSuite10.sol b/e2e/contracts/tests/TFHETestSuite10.sol new file mode 100644 index 0000000..9d4db5c --- /dev/null +++ b/e2e/contracts/tests/TFHETestSuite10.sol @@ -0,0 +1,652 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; +import "fhevm/lib/TFHE.sol"; + + +contract TFHETestSuite10 is E2EFHEVMConfig { + ebool public resb; + euint4 public res4; + euint8 public res8; + euint16 public res16; + euint32 public res32; + euint64 public res64; + euint128 public res128; + euint256 public res256; + + constructor() { + TFHE.setFHEVM(FHEVMConfig.defaultConfig()); + } + + function add_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function eq_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function add_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function eq_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function add_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function eq_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function add_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function eq_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function add_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function add_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function div_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + euint256 result = TFHE.div(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function rem_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + euint256 result = TFHE.rem(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function eq_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function eq_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function min_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint256 bProc = b; + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { + uint256 aProc = a; + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function shl_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.shl(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function shr_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.shr(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function rotl_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.rotl(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function rotr_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.rotr(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } +} diff --git a/e2e/contracts/tests/TFHETestSuite11.sol b/e2e/contracts/tests/TFHETestSuite11.sol new file mode 100644 index 0000000..eea6105 --- /dev/null +++ b/e2e/contracts/tests/TFHETestSuite11.sol @@ -0,0 +1,442 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; +import "fhevm/lib/TFHE.sol"; + + +contract TFHETestSuite11 is E2EFHEVMConfig { + ebool public resb; + euint4 public res4; + euint8 public res8; + euint16 public res16; + euint32 public res32; + euint64 public res64; + euint128 public res128; + euint256 public res256; + + constructor() { + TFHE.setFHEVM(FHEVMConfig.defaultConfig()); + } + + function shl_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.shl(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function shl_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.shl(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function shr_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.shr(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function shr_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.shr(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function rotl_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.rotl(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function rotl_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.rotl(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function rotr_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.rotr(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function rotr_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.rotr(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function shl_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint16 result = TFHE.shl(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function shl_euint16_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint8 bProc = b; + euint16 result = TFHE.shl(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function shr_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint16 result = TFHE.shr(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function shr_euint16_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint8 bProc = b; + euint16 result = TFHE.shr(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function rotl_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint16 result = TFHE.rotl(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function rotl_euint16_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint8 bProc = b; + euint16 result = TFHE.rotl(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function rotr_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint16 result = TFHE.rotr(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function rotr_euint16_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint8 bProc = b; + euint16 result = TFHE.rotr(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function shl_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint32 result = TFHE.shl(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function shl_euint32_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint8 bProc = b; + euint32 result = TFHE.shl(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function shr_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint32 result = TFHE.shr(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function shr_euint32_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint8 bProc = b; + euint32 result = TFHE.shr(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function rotl_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint32 result = TFHE.rotl(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function rotl_euint32_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint8 bProc = b; + euint32 result = TFHE.rotl(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function rotr_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint32 result = TFHE.rotr(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function rotr_euint32_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint8 bProc = b; + euint32 result = TFHE.rotr(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function shl_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint64 result = TFHE.shl(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function shl_euint64_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint8 bProc = b; + euint64 result = TFHE.shl(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function shr_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint64 result = TFHE.shr(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function shr_euint64_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint8 bProc = b; + euint64 result = TFHE.shr(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function rotl_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint64 result = TFHE.rotl(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function rotl_euint64_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint8 bProc = b; + euint64 result = TFHE.rotl(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function rotr_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint64 result = TFHE.rotr(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function rotr_euint64_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint8 bProc = b; + euint64 result = TFHE.rotr(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function shl_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint128 result = TFHE.shl(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function shl_euint128_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint8 bProc = b; + euint128 result = TFHE.shl(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function shr_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint128 result = TFHE.shr(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function shr_euint128_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint8 bProc = b; + euint128 result = TFHE.shr(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function rotl_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint128 result = TFHE.rotl(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function rotl_euint128_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint8 bProc = b; + euint128 result = TFHE.rotl(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function rotr_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint128 result = TFHE.rotr(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function rotr_euint128_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint8 bProc = b; + euint128 result = TFHE.rotr(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function shl_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint256 result = TFHE.shl(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function shl_euint256_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint8 bProc = b; + euint256 result = TFHE.shl(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function shr_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint256 result = TFHE.shr(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function shr_euint256_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint8 bProc = b; + euint256 result = TFHE.shr(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function rotl_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint256 result = TFHE.rotl(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function rotl_euint256_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint8 bProc = b; + euint256 result = TFHE.rotl(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function rotr_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint256 result = TFHE.rotr(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function rotr_euint256_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + uint8 bProc = b; + euint256 result = TFHE.rotr(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function neg_euint4(einput a, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 result = TFHE.neg(aProc); + TFHE.allowThis(result); + res4 = result; + } + function not_euint4(einput a, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint4 result = TFHE.not(aProc); + TFHE.allowThis(result); + res4 = result; + } + function neg_euint8(einput a, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 result = TFHE.neg(aProc); + TFHE.allowThis(result); + res8 = result; + } + function not_euint8(einput a, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 result = TFHE.not(aProc); + TFHE.allowThis(result); + res8 = result; + } + function neg_euint16(einput a, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 result = TFHE.neg(aProc); + TFHE.allowThis(result); + res16 = result; + } + function not_euint16(einput a, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 result = TFHE.not(aProc); + TFHE.allowThis(result); + res16 = result; + } + function neg_euint32(einput a, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 result = TFHE.neg(aProc); + TFHE.allowThis(result); + res32 = result; + } + function not_euint32(einput a, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 result = TFHE.not(aProc); + TFHE.allowThis(result); + res32 = result; + } + function neg_euint64(einput a, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 result = TFHE.neg(aProc); + TFHE.allowThis(result); + res64 = result; + } + function not_euint64(einput a, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 result = TFHE.not(aProc); + TFHE.allowThis(result); + res64 = result; + } + function neg_euint128(einput a, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 result = TFHE.neg(aProc); + TFHE.allowThis(result); + res128 = result; + } + function not_euint128(einput a, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 result = TFHE.not(aProc); + TFHE.allowThis(result); + res128 = result; + } + function neg_euint256(einput a, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 result = TFHE.neg(aProc); + TFHE.allowThis(result); + res256 = result; + } + function not_euint256(einput a, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint256 result = TFHE.not(aProc); + TFHE.allowThis(result); + res256 = result; + } +} diff --git a/e2e/contracts/tests/TFHETestSuite2.sol b/e2e/contracts/tests/TFHETestSuite2.sol new file mode 100644 index 0000000..1655938 --- /dev/null +++ b/e2e/contracts/tests/TFHETestSuite2.sol @@ -0,0 +1,652 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; +import "fhevm/lib/TFHE.sol"; + + +contract TFHETestSuite2 is E2EFHEVMConfig { + ebool public resb; + euint4 public res4; + euint8 public res8; + euint16 public res16; + euint32 public res32; + euint64 public res64; + euint128 public res128; + euint256 public res256; + + constructor() { + TFHE.setFHEVM(FHEVMConfig.defaultConfig()); + } + + function eq_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function add_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function add_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function sub_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function sub_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function mul_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function mul_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function div_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.div(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function rem_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.rem(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function and_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function and_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function or_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function or_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function xor_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function xor_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function eq_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function eq_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function min_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function max_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint4 aProc = TFHE.asEuint4(a, inputProof); + uint8 bProc = b; + euint4 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function max_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint4 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res4 = result; + } + function add_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint8 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function sub_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint8 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function mul_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint8 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function and_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint8 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function or_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint8 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function xor_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint8 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function eq_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint8 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function max_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint8 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function add_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function sub_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function mul_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function and_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function or_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function xor_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function eq_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function max_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function add_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function sub_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function mul_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function and_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function or_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function xor_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function eq_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function max_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function add_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function sub_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function mul_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function and_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function or_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function xor_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function eq_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } +} diff --git a/e2e/contracts/tests/TFHETestSuite3.sol b/e2e/contracts/tests/TFHETestSuite3.sol new file mode 100644 index 0000000..a48b5a6 --- /dev/null +++ b/e2e/contracts/tests/TFHETestSuite3.sol @@ -0,0 +1,652 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; +import "fhevm/lib/TFHE.sol"; + + +contract TFHETestSuite3 is E2EFHEVMConfig { + ebool public resb; + euint4 public res4; + euint8 public res8; + euint16 public res16; + euint32 public res32; + euint64 public res64; + euint128 public res128; + euint256 public res256; + + constructor() { + TFHE.setFHEVM(FHEVMConfig.defaultConfig()); + } + + function le_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function max_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function add_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function sub_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function mul_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function and_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function or_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function xor_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function eq_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function max_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function add_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function sub_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function mul_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function and_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function or_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function xor_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function eq_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function max_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function add_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function eq_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function add_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function add_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function sub_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function sub_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function mul_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function mul_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function div_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.div(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function rem_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.rem(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function and_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function and_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function or_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function or_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function xor_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function xor_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function eq_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function eq_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function min_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function max_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { + euint8 aProc = TFHE.asEuint8(a, inputProof); + uint8 bProc = b; + euint8 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function max_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { + uint8 aProc = a; + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint8 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res8 = result; + } + function add_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint16 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function sub_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint16 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function mul_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint16 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function and_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint16 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function or_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint16 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function xor_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint16 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function eq_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint16 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function max_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint16 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } +} diff --git a/e2e/contracts/tests/TFHETestSuite4.sol b/e2e/contracts/tests/TFHETestSuite4.sol new file mode 100644 index 0000000..6aa2e36 --- /dev/null +++ b/e2e/contracts/tests/TFHETestSuite4.sol @@ -0,0 +1,652 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; +import "fhevm/lib/TFHE.sol"; + + +contract TFHETestSuite4 is E2EFHEVMConfig { + ebool public resb; + euint4 public res4; + euint8 public res8; + euint16 public res16; + euint32 public res32; + euint64 public res64; + euint128 public res128; + euint256 public res256; + + constructor() { + TFHE.setFHEVM(FHEVMConfig.defaultConfig()); + } + + function add_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint16 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function sub_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint16 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function mul_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint16 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function and_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint16 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function or_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint16 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function xor_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint16 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function eq_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint16 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function max_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint16 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function add_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function sub_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function mul_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function and_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function or_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function xor_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function eq_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function max_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function add_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function sub_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function mul_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function and_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function or_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function xor_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function eq_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function max_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function add_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function sub_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function mul_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function and_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function or_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function xor_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function eq_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function max_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function add_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function sub_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function mul_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function and_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function or_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function xor_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function eq_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function max_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function add_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function eq_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function add_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + euint16 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function add_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function sub_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + euint16 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function sub_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function mul_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + euint16 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function mul_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } +} diff --git a/e2e/contracts/tests/TFHETestSuite5.sol b/e2e/contracts/tests/TFHETestSuite5.sol new file mode 100644 index 0000000..e213344 --- /dev/null +++ b/e2e/contracts/tests/TFHETestSuite5.sol @@ -0,0 +1,652 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; +import "fhevm/lib/TFHE.sol"; + + +contract TFHETestSuite5 is E2EFHEVMConfig { + ebool public resb; + euint4 public res4; + euint8 public res8; + euint16 public res16; + euint32 public res32; + euint64 public res64; + euint128 public res128; + euint256 public res256; + + constructor() { + TFHE.setFHEVM(FHEVMConfig.defaultConfig()); + } + + function div_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + euint16 result = TFHE.div(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function rem_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + euint16 result = TFHE.rem(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function and_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + euint16 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function and_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function or_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + euint16 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function or_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function xor_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + euint16 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function xor_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function eq_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function eq_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + euint16 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function min_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function max_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { + euint16 aProc = TFHE.asEuint16(a, inputProof); + uint16 bProc = b; + euint16 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function max_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { + uint16 aProc = a; + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint16 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res16 = result; + } + function add_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint32 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function sub_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint32 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function mul_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint32 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function and_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint32 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function or_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint32 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function xor_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint32 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function eq_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint32 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function max_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint32 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function add_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint32 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function sub_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint32 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function mul_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint32 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function and_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint32 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function or_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint32 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function xor_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint32 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function eq_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint32 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function max_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint32 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function add_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint32 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function sub_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint32 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function mul_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint32 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function and_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint32 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function or_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint32 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function xor_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint32 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function eq_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint32 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function max_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint32 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function add_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function sub_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function mul_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function and_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function or_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function xor_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function eq_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function max_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function add_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function sub_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function mul_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function and_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function or_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function xor_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function eq_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } +} diff --git a/e2e/contracts/tests/TFHETestSuite6.sol b/e2e/contracts/tests/TFHETestSuite6.sol new file mode 100644 index 0000000..5c9d32f --- /dev/null +++ b/e2e/contracts/tests/TFHETestSuite6.sol @@ -0,0 +1,652 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; +import "fhevm/lib/TFHE.sol"; + + +contract TFHETestSuite6 is E2EFHEVMConfig { + ebool public resb; + euint4 public res4; + euint8 public res8; + euint16 public res16; + euint32 public res32; + euint64 public res64; + euint128 public res128; + euint256 public res256; + + constructor() { + TFHE.setFHEVM(FHEVMConfig.defaultConfig()); + } + + function le_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function max_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function add_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function sub_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function mul_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function and_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function or_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function xor_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function eq_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function max_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function add_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function eq_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function add_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + euint32 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function add_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function sub_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + euint32 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function sub_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function mul_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + euint32 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function mul_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function div_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + euint32 result = TFHE.div(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function rem_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + euint32 result = TFHE.rem(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function and_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + euint32 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function and_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function or_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + euint32 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function or_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function xor_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + euint32 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function xor_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function eq_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function eq_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + euint32 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function min_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function max_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { + euint32 aProc = TFHE.asEuint32(a, inputProof); + uint32 bProc = b; + euint32 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function max_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { + uint32 aProc = a; + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint32 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res32 = result; + } + function add_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint64 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function sub_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint64 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function mul_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint64 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function and_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint64 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function or_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint64 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function xor_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint64 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function eq_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint64 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function max_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint64 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function add_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint64 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function sub_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint64 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function mul_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint64 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function and_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint64 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function or_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint64 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function xor_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint64 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function eq_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint64 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function max_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint64 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } +} diff --git a/e2e/contracts/tests/TFHETestSuite7.sol b/e2e/contracts/tests/TFHETestSuite7.sol new file mode 100644 index 0000000..bd8bba1 --- /dev/null +++ b/e2e/contracts/tests/TFHETestSuite7.sol @@ -0,0 +1,652 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; +import "fhevm/lib/TFHE.sol"; + + +contract TFHETestSuite7 is E2EFHEVMConfig { + ebool public resb; + euint4 public res4; + euint8 public res8; + euint16 public res16; + euint32 public res32; + euint64 public res64; + euint128 public res128; + euint256 public res256; + + constructor() { + TFHE.setFHEVM(FHEVMConfig.defaultConfig()); + } + + function add_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint64 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function sub_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint64 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function mul_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint64 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function and_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint64 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function or_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint64 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function xor_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint64 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function eq_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint64 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function max_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint64 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function add_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint64 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function sub_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint64 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function mul_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint64 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function and_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint64 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function or_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint64 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function xor_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint64 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function eq_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint64 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function max_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint64 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function add_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function sub_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function mul_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function and_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function or_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function xor_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function eq_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function max_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function add_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function sub_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function mul_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function and_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function or_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function xor_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function eq_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function max_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function add_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function eq_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function add_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + euint64 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function add_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function sub_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + euint64 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function sub_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function mul_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + euint64 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function mul_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function div_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + euint64 result = TFHE.div(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function rem_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + euint64 result = TFHE.rem(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function and_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + euint64 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function and_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function or_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + euint64 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function or_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function xor_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + euint64 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function xor_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function eq_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function eq_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } +} diff --git a/e2e/contracts/tests/TFHETestSuite8.sol b/e2e/contracts/tests/TFHETestSuite8.sol new file mode 100644 index 0000000..a9d1ab7 --- /dev/null +++ b/e2e/contracts/tests/TFHETestSuite8.sol @@ -0,0 +1,652 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; +import "fhevm/lib/TFHE.sol"; + + +contract TFHETestSuite8 is E2EFHEVMConfig { + ebool public resb; + euint4 public res4; + euint8 public res8; + euint16 public res16; + euint32 public res32; + euint64 public res64; + euint128 public res128; + euint256 public res256; + + constructor() { + TFHE.setFHEVM(FHEVMConfig.defaultConfig()); + } + + function gt_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + euint64 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function min_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function max_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { + euint64 aProc = TFHE.asEuint64(a, inputProof); + uint64 bProc = b; + euint64 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function max_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { + uint64 aProc = a; + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint64 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res64 = result; + } + function add_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint128 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function sub_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint128 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function mul_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint128 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function and_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint128 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function or_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint128 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function xor_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint128 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function eq_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint128 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function max_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint128 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function add_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint128 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function sub_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint128 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function mul_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint128 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function and_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint128 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function or_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint128 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function xor_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint128 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function eq_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint128 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function max_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint128 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function add_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint128 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function sub_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint128 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function mul_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint128 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function and_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint128 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function or_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint128 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function xor_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint128 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function eq_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint128 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function max_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint128 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function add_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint128 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function sub_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint128 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function mul_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint128 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function and_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint128 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function or_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint128 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function xor_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint128 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function eq_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint128 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function max_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint32 bProc = TFHE.asEuint32(b, inputProof); + euint128 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function add_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint128 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function sub_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint128 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function mul_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint128 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function and_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint128 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function or_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint128 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function xor_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint128 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function eq_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint128 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function max_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint64 bProc = TFHE.asEuint64(b, inputProof); + euint128 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function add_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function sub_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function mul_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function and_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function or_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function xor_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function eq_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } +} diff --git a/e2e/contracts/tests/TFHETestSuite9.sol b/e2e/contracts/tests/TFHETestSuite9.sol new file mode 100644 index 0000000..b3fa282 --- /dev/null +++ b/e2e/contracts/tests/TFHETestSuite9.sol @@ -0,0 +1,652 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; +import "fhevm/lib/TFHE.sol"; + + +contract TFHETestSuite9 is E2EFHEVMConfig { + ebool public resb; + euint4 public res4; + euint8 public res8; + euint16 public res16; + euint32 public res32; + euint64 public res64; + euint128 public res128; + euint256 public res256; + + constructor() { + TFHE.setFHEVM(FHEVMConfig.defaultConfig()); + } + + function le_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function max_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function add_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function eq_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + euint256 bProc = TFHE.asEuint256(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function add_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + euint128 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function add_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function sub_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + euint128 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function sub_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function mul_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + euint128 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function mul_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function div_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + euint128 result = TFHE.div(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function rem_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + euint128 result = TFHE.rem(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function and_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + euint128 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function and_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function or_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + euint128 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function or_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function xor_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + euint128 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function xor_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function eq_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function eq_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + euint128 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function min_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function max_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { + euint128 aProc = TFHE.asEuint128(a, inputProof); + uint128 bProc = b; + euint128 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function max_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { + uint128 aProc = a; + euint128 bProc = TFHE.asEuint128(b, inputProof); + euint128 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res128 = result; + } + function add_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function eq_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint4 bProc = TFHE.asEuint4(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function add_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function eq_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint8 bProc = TFHE.asEuint8(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function add_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint256 result = TFHE.add(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function sub_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint256 result = TFHE.sub(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function mul_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint256 result = TFHE.mul(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function and_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint256 result = TFHE.and(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function or_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint256 result = TFHE.or(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function xor_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint256 result = TFHE.xor(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function eq_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.eq(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ne_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ne(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function ge_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.ge(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function gt_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.gt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function le_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.le(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function lt_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + ebool result = TFHE.lt(aProc, bProc); + TFHE.allowThis(result); + resb = result; + } + function min_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint256 result = TFHE.min(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } + function max_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { + euint256 aProc = TFHE.asEuint256(a, inputProof); + euint16 bProc = TFHE.asEuint16(b, inputProof); + euint256 result = TFHE.max(aProc, bProc); + TFHE.allowThis(result); + res256 = result; + } +} diff --git a/e2e/test/increment/Increment.ts b/e2e/test/increment/Increment.ts index db6ff5a..5e4ab12 100644 --- a/e2e/test/increment/Increment.ts +++ b/e2e/test/increment/Increment.ts @@ -24,7 +24,6 @@ describe("Increment", function () { await transaction2.wait(); const counterHandle = await this.increment.counter(); - console.log(counterHandle); const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.fhevm.generateKeypair(); const eip712 = this.fhevm.createEIP712(publicKeyAlice, this.contractAddress); const signatureAlice = await this.signers.alice.signTypedData( diff --git a/e2e/test/instance.ts b/e2e/test/instance.ts index c89f656..6e0a544 100644 --- a/e2e/test/instance.ts +++ b/e2e/test/instance.ts @@ -1,5 +1,6 @@ +import { HardhatEthersSigner } from "@nomicfoundation/hardhat-ethers/signers"; import dotenv from "dotenv"; -import { createInstance as createFhevmInstance } from "fhevmjs/node"; +import { FhevmInstance, createInstance as createFhevmInstance } from "fhevmjs/node"; import * as fs from "fs"; import { network } from "hardhat"; import { NetworkConfig } from "hardhat/types"; @@ -15,3 +16,23 @@ export const createInstance = async () => { }); return instance; }; + +export const createDecrypt = + (instance: FhevmInstance, signer: HardhatEthersSigner, contractAddress: string) => async (handle: bigint) => { + const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = instance.generateKeypair(); + const eip712 = instance.createEIP712(publicKeyAlice, contractAddress); + const signatureAlice = await signer.signTypedData( + eip712.domain, + { Reencrypt: eip712.types.Reencrypt }, + eip712.message, + ); + + return instance.reencrypt( + handle, + privateKeyAlice, + publicKeyAlice, + signatureAlice.replace("0x", ""), + contractAddress, + signer.address, + ); + }; diff --git a/e2e/test/tfheOperations/tfheOperations1.ts b/e2e/test/tfheOperations/tfheOperations1.ts new file mode 100644 index 0000000..8453607 --- /dev/null +++ b/e2e/test/tfheOperations/tfheOperations1.ts @@ -0,0 +1,4667 @@ +import { expect } from "chai"; +import { ethers } from "hardhat"; + +import type { TFHETestSuite1 } from "../../types/contracts/tests/TFHETestSuite1"; +import { createDecrypt, createInstance } from "../instance"; +import { getSigners, initSigners } from "../signers"; + +async function deployTfheTestFixture1(): Promise { + const signers = await getSigners(); + const admin = signers.alice; + + const contractFactory = await ethers.getContractFactory("TFHETestSuite1"); + const contract = await contractFactory.connect(admin).deploy(); + await contract.waitForDeployment(); + + return contract; +} + +type Decryptor = (handle: bigint) => Promise; + +describe("TFHE operations 1", function () { + let decryptBool: Decryptor, + decrypt4: Decryptor, + decrypt8: Decryptor, + decrypt16: Decryptor, + decrypt32: Decryptor, + decrypt64: Decryptor, + decrypt128: Decryptor; + before(async function () { + await initSigners(); + this.signers = await getSigners(); + + const contract = await deployTfheTestFixture1(); + this.contractAddress = await contract.getAddress(); + this.contract = contract; + + const instance = await createInstance(); + this.instance = instance; + decrypt4 = + decrypt8 = + decrypt16 = + decrypt32 = + decrypt64 = + decrypt128 = + createDecrypt(instance, this.signers.alice, this.contractAddress); + }); + + it('test operator "add" overload (euint4, euint4) => euint4 test 1 (2, 7)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(2n); + input.add4(7n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(9n); + }); + + it('test operator "add" overload (euint4, euint4) => euint4 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(12n); + }); + + it('test operator "add" overload (euint4, euint4) => euint4 test 3 (5, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add4(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(10n); + }); + + it('test operator "add" overload (euint4, euint4) => euint4 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(12n); + }); + + it('test operator "sub" overload (euint4, euint4) => euint4 test 1 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.sub_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(0n); + }); + + it('test operator "sub" overload (euint4, euint4) => euint4 test 2 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.sub_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(4n); + }); + + it('test operator "mul" overload (euint4, euint4) => euint4 test 1 (1, 7)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(1n); + input.add4(7n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(7n); + }); + + it('test operator "mul" overload (euint4, euint4) => euint4 test 2 (3, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add4(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(15n); + }); + + it('test operator "mul" overload (euint4, euint4) => euint4 test 3 (3, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add4(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(9n); + }); + + it('test operator "mul" overload (euint4, euint4) => euint4 test 4 (5, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add4(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(15n); + }); + + it('test operator "and" overload (euint4, euint4) => euint4 test 1 (14, 7)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add4(7n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(6n); + }); + + it('test operator "and" overload (euint4, euint4) => euint4 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(0n); + }); + + it('test operator "and" overload (euint4, euint4) => euint4 test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(8n); + }); + + it('test operator "and" overload (euint4, euint4) => euint4 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(0n); + }); + + it('test operator "or" overload (euint4, euint4) => euint4 test 1 (10, 6)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add4(6n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(14n); + }); + + it('test operator "or" overload (euint4, euint4) => euint4 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(12n); + }); + + it('test operator "or" overload (euint4, euint4) => euint4 test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(8n); + }); + + it('test operator "or" overload (euint4, euint4) => euint4 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(12n); + }); + + it('test operator "xor" overload (euint4, euint4) => euint4 test 1 (9, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add4(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(13n); + }); + + it('test operator "xor" overload (euint4, euint4) => euint4 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(12n); + }); + + it('test operator "xor" overload (euint4, euint4) => euint4 test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(0n); + }); + + it('test operator "xor" overload (euint4, euint4) => euint4 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(12n); + }); + + it('test operator "eq" overload (euint4, euint4) => ebool test 1 (2, 2)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(2n); + input.add4(2n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "eq" overload (euint4, euint4) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "eq" overload (euint4, euint4) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "eq" overload (euint4, euint4) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ne" overload (euint4, euint4) => ebool test 1 (1, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(1n); + input.add4(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ne" overload (euint4, euint4) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ne" overload (euint4, euint4) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ne" overload (euint4, euint4) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ge" overload (euint4, euint4) => ebool test 1 (6, 11)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(6n); + input.add4(11n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ge" overload (euint4, euint4) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ge" overload (euint4, euint4) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ge" overload (euint4, euint4) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "gt" overload (euint4, euint4) => ebool test 1 (12, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add4(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint4) => ebool test 2 (8, 12)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(12n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint4) => ebool test 3 (12, 12)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add4(12n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint4) => ebool test 4 (12, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint4) => ebool test 1 (6, 6)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(6n); + input.add4(6n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint4) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint4) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint4) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "lt" overload (euint4, euint4) => ebool test 1 (2, 6)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(2n); + input.add4(6n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "lt" overload (euint4, euint4) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "lt" overload (euint4, euint4) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "lt" overload (euint4, euint4) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add4(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "min" overload (euint4, euint4) => euint4 test 1 (14, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add4(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(13n); + }); + + it('test operator "min" overload (euint4, euint4) => euint4 test 2 (9, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add4(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(9n); + }); + + it('test operator "min" overload (euint4, euint4) => euint4 test 3 (13, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add4(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(13n); + }); + + it('test operator "min" overload (euint4, euint4) => euint4 test 4 (13, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add4(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(9n); + }); + + it('test operator "max" overload (euint4, euint4) => euint4 test 1 (9, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add4(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(13n); + }); + + it('test operator "max" overload (euint4, euint4) => euint4 test 2 (5, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add4(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(9n); + }); + + it('test operator "max" overload (euint4, euint4) => euint4 test 3 (9, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add4(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(9n); + }); + + it('test operator "max" overload (euint4, euint4) => euint4 test 4 (9, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add4(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint4( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt4(await this.contract.res4()); + expect(res).to.equal(9n); + }); + + it('test operator "add" overload (euint4, euint8) => euint8 test 1 (2, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(2n); + input.add8(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(12n); + }); + + it('test operator "add" overload (euint4, euint8) => euint8 test 2 (5, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add8(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(14n); + }); + + it('test operator "add" overload (euint4, euint8) => euint8 test 3 (5, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add8(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(10n); + }); + + it('test operator "add" overload (euint4, euint8) => euint8 test 4 (9, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add8(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(14n); + }); + + it('test operator "sub" overload (euint4, euint8) => euint8 test 1 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.sub_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(0n); + }); + + it('test operator "sub" overload (euint4, euint8) => euint8 test 2 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.sub_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(4n); + }); + + it('test operator "mul" overload (euint4, euint8) => euint8 test 1 (2, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(2n); + input.add8(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(10n); + }); + + it('test operator "mul" overload (euint4, euint8) => euint8 test 2 (3, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add8(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(15n); + }); + + it('test operator "mul" overload (euint4, euint8) => euint8 test 3 (3, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add8(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(9n); + }); + + it('test operator "mul" overload (euint4, euint8) => euint8 test 4 (5, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add8(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(15n); + }); + + it('test operator "and" overload (euint4, euint8) => euint8 test 1 (10, 116)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add8(116n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(0n); + }); + + it('test operator "and" overload (euint4, euint8) => euint8 test 2 (6, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(6n); + input.add8(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(2n); + }); + + it('test operator "and" overload (euint4, euint8) => euint8 test 3 (10, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add8(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(10n); + }); + + it('test operator "and" overload (euint4, euint8) => euint8 test 4 (10, 6)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add8(6n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(2n); + }); + + it('test operator "or" overload (euint4, euint8) => euint8 test 1 (8, 185)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(185n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(185n); + }); + + it('test operator "or" overload (euint4, euint8) => euint8 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(12n); + }); + + it('test operator "or" overload (euint4, euint8) => euint8 test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(8n); + }); + + it('test operator "or" overload (euint4, euint8) => euint8 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(12n); + }); + + it('test operator "xor" overload (euint4, euint8) => euint8 test 1 (10, 103)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add8(103n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(109n); + }); + + it('test operator "xor" overload (euint4, euint8) => euint8 test 2 (6, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(6n); + input.add8(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(12n); + }); + + it('test operator "xor" overload (euint4, euint8) => euint8 test 3 (10, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add8(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(0n); + }); + + it('test operator "xor" overload (euint4, euint8) => euint8 test 4 (10, 6)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add8(6n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(12n); + }); + + it('test operator "eq" overload (euint4, euint8) => ebool test 1 (14, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add8(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "eq" overload (euint4, euint8) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "eq" overload (euint4, euint8) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "eq" overload (euint4, euint8) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ne" overload (euint4, euint8) => ebool test 1 (8, 128)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(128n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ne" overload (euint4, euint8) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ne" overload (euint4, euint8) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ne" overload (euint4, euint8) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ge" overload (euint4, euint8) => ebool test 1 (3, 79)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add8(79n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ge" overload (euint4, euint8) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ge" overload (euint4, euint8) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ge" overload (euint4, euint8) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "gt" overload (euint4, euint8) => ebool test 1 (1, 59)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(1n); + input.add8(59n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint8) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint8) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint8) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint8) => ebool test 1 (1, 98)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(1n); + input.add8(98n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint8) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint8) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint8) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "lt" overload (euint4, euint8) => ebool test 1 (12, 31)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add8(31n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "lt" overload (euint4, euint8) => ebool test 2 (8, 12)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(12n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "lt" overload (euint4, euint8) => ebool test 3 (12, 12)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add8(12n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "lt" overload (euint4, euint8) => ebool test 4 (12, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "min" overload (euint4, euint8) => euint8 test 1 (5, 254)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add8(254n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(5n); + }); + + it('test operator "min" overload (euint4, euint8) => euint8 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(4n); + }); + + it('test operator "min" overload (euint4, euint8) => euint8 test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(8n); + }); + + it('test operator "min" overload (euint4, euint8) => euint8 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add8(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(4n); + }); + + it('test operator "max" overload (euint4, euint8) => euint8 test 1 (14, 226)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add8(226n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(226n); + }); + + it('test operator "max" overload (euint4, euint8) => euint8 test 2 (10, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add8(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(14n); + }); + + it('test operator "max" overload (euint4, euint8) => euint8 test 3 (14, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add8(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(14n); + }); + + it('test operator "max" overload (euint4, euint8) => euint8 test 4 (14, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add8(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint8( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt8(await this.contract.res8()); + expect(res).to.equal(14n); + }); + + it('test operator "add" overload (euint4, euint16) => euint16 test 1 (2, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(2n); + input.add16(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(11n); + }); + + it('test operator "add" overload (euint4, euint16) => euint16 test 2 (6, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(6n); + input.add16(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(14n); + }); + + it('test operator "add" overload (euint4, euint16) => euint16 test 3 (5, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add16(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(10n); + }); + + it('test operator "add" overload (euint4, euint16) => euint16 test 4 (8, 6)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add16(6n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(14n); + }); + + it('test operator "sub" overload (euint4, euint16) => euint16 test 1 (13, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add16(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.sub_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(0n); + }); + + it('test operator "sub" overload (euint4, euint16) => euint16 test 2 (13, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add16(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.sub_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(4n); + }); + + it('test operator "mul" overload (euint4, euint16) => euint16 test 1 (2, 6)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(2n); + input.add16(6n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(12n); + }); + + it('test operator "mul" overload (euint4, euint16) => euint16 test 2 (3, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add16(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(15n); + }); + + it('test operator "mul" overload (euint4, euint16) => euint16 test 3 (3, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add16(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(9n); + }); + + it('test operator "mul" overload (euint4, euint16) => euint16 test 4 (5, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add16(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(15n); + }); + + it('test operator "and" overload (euint4, euint16) => euint16 test 1 (3, 65312)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add16(65312n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(0n); + }); + + it('test operator "and" overload (euint4, euint16) => euint16 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add16(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(0n); + }); + + it('test operator "and" overload (euint4, euint16) => euint16 test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add16(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(8n); + }); + + it('test operator "and" overload (euint4, euint16) => euint16 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add16(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(0n); + }); + + it('test operator "or" overload (euint4, euint16) => euint16 test 1 (9, 28733)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add16(28733n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(28733n); + }); + + it('test operator "or" overload (euint4, euint16) => euint16 test 2 (5, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add16(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(13n); + }); + + it('test operator "or" overload (euint4, euint16) => euint16 test 3 (9, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add16(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(9n); + }); + + it('test operator "or" overload (euint4, euint16) => euint16 test 4 (9, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add16(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(13n); + }); + + it('test operator "xor" overload (euint4, euint16) => euint16 test 1 (14, 11463)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add16(11463n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(11465n); + }); + + it('test operator "xor" overload (euint4, euint16) => euint16 test 2 (10, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add16(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(4n); + }); + + it('test operator "xor" overload (euint4, euint16) => euint16 test 3 (14, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add16(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(0n); + }); + + it('test operator "xor" overload (euint4, euint16) => euint16 test 4 (14, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add16(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(4n); + }); + + it('test operator "eq" overload (euint4, euint16) => ebool test 1 (11, 40901)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(11n); + input.add16(40901n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "eq" overload (euint4, euint16) => ebool test 2 (7, 11)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(7n); + input.add16(11n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "eq" overload (euint4, euint16) => ebool test 3 (11, 11)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(11n); + input.add16(11n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "eq" overload (euint4, euint16) => ebool test 4 (11, 7)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(11n); + input.add16(7n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ne" overload (euint4, euint16) => ebool test 1 (14, 35568)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add16(35568n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ne" overload (euint4, euint16) => ebool test 2 (10, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add16(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ne" overload (euint4, euint16) => ebool test 3 (14, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add16(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ne" overload (euint4, euint16) => ebool test 4 (14, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add16(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ge" overload (euint4, euint16) => ebool test 1 (1, 53247)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(1n); + input.add16(53247n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ge" overload (euint4, euint16) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add16(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ge" overload (euint4, euint16) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add16(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ge" overload (euint4, euint16) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add16(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "gt" overload (euint4, euint16) => ebool test 1 (13, 43765)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add16(43765n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint16) => ebool test 2 (9, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add16(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint16) => ebool test 3 (13, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add16(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint16) => ebool test 4 (13, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add16(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint16) => ebool test 1 (14, 62468)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add16(62468n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint16) => ebool test 2 (10, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add16(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint16) => ebool test 3 (14, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add16(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint16) => ebool test 4 (14, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add16(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "lt" overload (euint4, euint16) => ebool test 1 (10, 24653)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add16(24653n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "lt" overload (euint4, euint16) => ebool test 2 (6, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(6n); + input.add16(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "lt" overload (euint4, euint16) => ebool test 3 (10, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add16(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "lt" overload (euint4, euint16) => ebool test 4 (10, 6)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add16(6n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "min" overload (euint4, euint16) => euint16 test 1 (1, 50108)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(1n); + input.add16(50108n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(1n); + }); + + it('test operator "min" overload (euint4, euint16) => euint16 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add16(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(4n); + }); + + it('test operator "min" overload (euint4, euint16) => euint16 test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add16(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(8n); + }); + + it('test operator "min" overload (euint4, euint16) => euint16 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add16(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(4n); + }); + + it('test operator "max" overload (euint4, euint16) => euint16 test 1 (14, 33411)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add16(33411n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(33411n); + }); + + it('test operator "max" overload (euint4, euint16) => euint16 test 2 (10, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add16(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(14n); + }); + + it('test operator "max" overload (euint4, euint16) => euint16 test 3 (14, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add16(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(14n); + }); + + it('test operator "max" overload (euint4, euint16) => euint16 test 4 (14, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add16(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint16( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt16(await this.contract.res16()); + expect(res).to.equal(14n); + }); + + it('test operator "add" overload (euint4, euint32) => euint32 test 1 (2, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(2n); + input.add32(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(11n); + }); + + it('test operator "add" overload (euint4, euint32) => euint32 test 2 (4, 6)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add32(6n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(10n); + }); + + it('test operator "add" overload (euint4, euint32) => euint32 test 3 (6, 6)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(6n); + input.add32(6n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(12n); + }); + + it('test operator "add" overload (euint4, euint32) => euint32 test 4 (6, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(6n); + input.add32(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(10n); + }); + + it('test operator "sub" overload (euint4, euint32) => euint32 test 1 (13, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add32(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.sub_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(0n); + }); + + it('test operator "sub" overload (euint4, euint32) => euint32 test 2 (13, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add32(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.sub_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(4n); + }); + + it('test operator "mul" overload (euint4, euint32) => euint32 test 1 (2, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(2n); + input.add32(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(10n); + }); + + it('test operator "mul" overload (euint4, euint32) => euint32 test 2 (3, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add32(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(12n); + }); + + it('test operator "mul" overload (euint4, euint32) => euint32 test 3 (3, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add32(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(9n); + }); + + it('test operator "mul" overload (euint4, euint32) => euint32 test 4 (4, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add32(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(12n); + }); + + it('test operator "and" overload (euint4, euint32) => euint32 test 1 (6, 3666388192)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(6n); + input.add32(3666388192n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(0n); + }); + + it('test operator "and" overload (euint4, euint32) => euint32 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(0n); + }); + + it('test operator "and" overload (euint4, euint32) => euint32 test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(8n); + }); + + it('test operator "and" overload (euint4, euint32) => euint32 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(0n); + }); + + it('test operator "or" overload (euint4, euint32) => euint32 test 1 (13, 371092847)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add32(371092847n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(371092847n); + }); + + it('test operator "or" overload (euint4, euint32) => euint32 test 2 (9, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add32(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(13n); + }); + + it('test operator "or" overload (euint4, euint32) => euint32 test 3 (13, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add32(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(13n); + }); + + it('test operator "or" overload (euint4, euint32) => euint32 test 4 (13, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add32(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(13n); + }); + + it('test operator "xor" overload (euint4, euint32) => euint32 test 1 (1, 1939413163)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(1n); + input.add32(1939413163n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(1939413162n); + }); + + it('test operator "xor" overload (euint4, euint32) => euint32 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(12n); + }); + + it('test operator "xor" overload (euint4, euint32) => euint32 test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(0n); + }); + + it('test operator "xor" overload (euint4, euint32) => euint32 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(12n); + }); + + it('test operator "eq" overload (euint4, euint32) => ebool test 1 (9, 1089894566)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add32(1089894566n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "eq" overload (euint4, euint32) => ebool test 2 (5, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add32(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "eq" overload (euint4, euint32) => ebool test 3 (9, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add32(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "eq" overload (euint4, euint32) => ebool test 4 (9, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add32(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ne" overload (euint4, euint32) => ebool test 1 (5, 2818677977)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add32(2818677977n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ne" overload (euint4, euint32) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ne" overload (euint4, euint32) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ne" overload (euint4, euint32) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ge" overload (euint4, euint32) => ebool test 1 (1, 2262617776)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(1n); + input.add32(2262617776n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ge" overload (euint4, euint32) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ge" overload (euint4, euint32) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ge" overload (euint4, euint32) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "gt" overload (euint4, euint32) => ebool test 1 (8, 1791761269)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(1791761269n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint32) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint32) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint32) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint32) => ebool test 1 (4, 1782114748)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add32(1782114748n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint32) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint32) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint32) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "lt" overload (euint4, euint32) => ebool test 1 (1, 3154883490)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(1n); + input.add32(3154883490n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "lt" overload (euint4, euint32) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "lt" overload (euint4, euint32) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "lt" overload (euint4, euint32) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "min" overload (euint4, euint32) => euint32 test 1 (9, 2831156674)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add32(2831156674n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(9n); + }); + + it('test operator "min" overload (euint4, euint32) => euint32 test 2 (5, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add32(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(5n); + }); + + it('test operator "min" overload (euint4, euint32) => euint32 test 3 (9, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add32(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(9n); + }); + + it('test operator "min" overload (euint4, euint32) => euint32 test 4 (9, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add32(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(5n); + }); + + it('test operator "max" overload (euint4, euint32) => euint32 test 1 (12, 623453237)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add32(623453237n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(623453237n); + }); + + it('test operator "max" overload (euint4, euint32) => euint32 test 2 (8, 12)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add32(12n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(12n); + }); + + it('test operator "max" overload (euint4, euint32) => euint32 test 3 (12, 12)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add32(12n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(12n); + }); + + it('test operator "max" overload (euint4, euint32) => euint32 test 4 (12, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add32(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint32( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt32(await this.contract.res32()); + expect(res).to.equal(12n); + }); + + it('test operator "add" overload (euint4, euint64) => euint64 test 1 (1, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(1n); + input.add64(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(10n); + }); + + it('test operator "add" overload (euint4, euint64) => euint64 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add64(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(12n); + }); + + it('test operator "add" overload (euint4, euint64) => euint64 test 3 (5, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add64(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(10n); + }); + + it('test operator "add" overload (euint4, euint64) => euint64 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add64(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(12n); + }); + + it('test operator "sub" overload (euint4, euint64) => euint64 test 1 (12, 12)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add64(12n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.sub_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(0n); + }); + + it('test operator "sub" overload (euint4, euint64) => euint64 test 2 (12, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add64(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.sub_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(4n); + }); + + it('test operator "mul" overload (euint4, euint64) => euint64 test 1 (2, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(2n); + input.add64(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(10n); + }); + + it('test operator "mul" overload (euint4, euint64) => euint64 test 2 (3, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add64(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(15n); + }); + + it('test operator "mul" overload (euint4, euint64) => euint64 test 3 (3, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add64(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(9n); + }); + + it('test operator "mul" overload (euint4, euint64) => euint64 test 4 (5, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add64(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(15n); + }); + + it('test operator "and" overload (euint4, euint64) => euint64 test 1 (6, 18438764365497303935)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(6n); + input.add64(18438764365497303935n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(6n); + }); + + it('test operator "and" overload (euint4, euint64) => euint64 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add64(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(0n); + }); + + it('test operator "and" overload (euint4, euint64) => euint64 test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add64(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(8n); + }); + + it('test operator "and" overload (euint4, euint64) => euint64 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add64(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(0n); + }); + + it('test operator "or" overload (euint4, euint64) => euint64 test 1 (14, 18440698678220010551)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add64(18440698678220010551n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(18440698678220010559n); + }); + + it('test operator "or" overload (euint4, euint64) => euint64 test 2 (10, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add64(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(14n); + }); + + it('test operator "or" overload (euint4, euint64) => euint64 test 3 (14, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add64(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(14n); + }); + + it('test operator "or" overload (euint4, euint64) => euint64 test 4 (14, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add64(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(14n); + }); + + it('test operator "xor" overload (euint4, euint64) => euint64 test 1 (2, 18438078325844207475)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(2n); + input.add64(18438078325844207475n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(18438078325844207473n); + }); + + it('test operator "xor" overload (euint4, euint64) => euint64 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add64(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(12n); + }); + + it('test operator "xor" overload (euint4, euint64) => euint64 test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add64(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(0n); + }); + + it('test operator "xor" overload (euint4, euint64) => euint64 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add64(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(12n); + }); + + it('test operator "eq" overload (euint4, euint64) => ebool test 1 (3, 18443050121569259433)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add64(18443050121569259433n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "eq" overload (euint4, euint64) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add64(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "eq" overload (euint4, euint64) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add64(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "eq" overload (euint4, euint64) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add64(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ne" overload (euint4, euint64) => ebool test 1 (7, 18446555094221865045)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(7n); + input.add64(18446555094221865045n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ne" overload (euint4, euint64) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add64(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ne" overload (euint4, euint64) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add64(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ne" overload (euint4, euint64) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add64(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ge" overload (euint4, euint64) => ebool test 1 (12, 18446558548033148537)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add64(18446558548033148537n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ge" overload (euint4, euint64) => ebool test 2 (8, 12)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add64(12n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ge" overload (euint4, euint64) => ebool test 3 (12, 12)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add64(12n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ge" overload (euint4, euint64) => ebool test 4 (12, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add64(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "gt" overload (euint4, euint64) => ebool test 1 (11, 18445624350177245281)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(11n); + input.add64(18445624350177245281n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint64) => ebool test 2 (7, 11)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(7n); + input.add64(11n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint64) => ebool test 3 (11, 11)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(11n); + input.add64(11n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint64) => ebool test 4 (11, 7)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(11n); + input.add64(7n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint64) => ebool test 1 (14, 18446414069240547725)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add64(18446414069240547725n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint64) => ebool test 2 (10, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add64(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint64) => ebool test 3 (14, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add64(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "le" overload (euint4, euint64) => ebool test 4 (14, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add64(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.le_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "lt" overload (euint4, euint64) => ebool test 1 (13, 18441885120383916401)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add64(18441885120383916401n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "lt" overload (euint4, euint64) => ebool test 2 (9, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add64(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "lt" overload (euint4, euint64) => ebool test 3 (13, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add64(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "lt" overload (euint4, euint64) => ebool test 4 (13, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add64(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.lt_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "min" overload (euint4, euint64) => euint64 test 1 (12, 18440035039683442233)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add64(18440035039683442233n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(12n); + }); + + it('test operator "min" overload (euint4, euint64) => euint64 test 2 (8, 12)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add64(12n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(8n); + }); + + it('test operator "min" overload (euint4, euint64) => euint64 test 3 (12, 12)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add64(12n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(12n); + }); + + it('test operator "min" overload (euint4, euint64) => euint64 test 4 (12, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(12n); + input.add64(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.min_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(8n); + }); + + it('test operator "max" overload (euint4, euint64) => euint64 test 1 (9, 18439762941056895609)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add64(18439762941056895609n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(18439762941056895609n); + }); + + it('test operator "max" overload (euint4, euint64) => euint64 test 2 (5, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add64(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(9n); + }); + + it('test operator "max" overload (euint4, euint64) => euint64 test 3 (9, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add64(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(9n); + }); + + it('test operator "max" overload (euint4, euint64) => euint64 test 4 (9, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add64(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.max_euint4_euint64( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt64(await this.contract.res64()); + expect(res).to.equal(9n); + }); + + it('test operator "add" overload (euint4, euint128) => euint128 test 1 (2, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(2n); + input.add128(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(11n); + }); + + it('test operator "add" overload (euint4, euint128) => euint128 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add128(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(12n); + }); + + it('test operator "add" overload (euint4, euint128) => euint128 test 3 (5, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(5n); + input.add128(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(10n); + }); + + it('test operator "add" overload (euint4, euint128) => euint128 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add128(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.add_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(12n); + }); + + it('test operator "sub" overload (euint4, euint128) => euint128 test 1 (13, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add128(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.sub_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(0n); + }); + + it('test operator "sub" overload (euint4, euint128) => euint128 test 2 (13, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add128(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.sub_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(4n); + }); + + it('test operator "mul" overload (euint4, euint128) => euint128 test 1 (2, 5)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(2n); + input.add128(5n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(10n); + }); + + it('test operator "mul" overload (euint4, euint128) => euint128 test 2 (3, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add128(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(9n); + }); + + it('test operator "mul" overload (euint4, euint128) => euint128 test 3 (3, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add128(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(9n); + }); + + it('test operator "mul" overload (euint4, euint128) => euint128 test 4 (3, 3)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add128(3n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.mul_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(9n); + }); + + it('test operator "and" overload (euint4, euint128) => euint128 test 1 (8, 340282366920938463463367802109078157213)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add128(340282366920938463463367802109078157213n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(8n); + }); + + it('test operator "and" overload (euint4, euint128) => euint128 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add128(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(0n); + }); + + it('test operator "and" overload (euint4, euint128) => euint128 test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add128(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(8n); + }); + + it('test operator "and" overload (euint4, euint128) => euint128 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add128(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.and_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(0n); + }); + + it('test operator "or" overload (euint4, euint128) => euint128 test 1 (4, 340282366920938463463366343089484611447)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add128(340282366920938463463366343089484611447n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(340282366920938463463366343089484611447n); + }); + + it('test operator "or" overload (euint4, euint128) => euint128 test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add128(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(12n); + }); + + it('test operator "or" overload (euint4, euint128) => euint128 test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add128(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(8n); + }); + + it('test operator "or" overload (euint4, euint128) => euint128 test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add128(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.or_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(12n); + }); + + it('test operator "xor" overload (euint4, euint128) => euint128 test 1 (13, 340282366920938463463366123999290070707)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add128(340282366920938463463366123999290070707n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(340282366920938463463366123999290070718n); + }); + + it('test operator "xor" overload (euint4, euint128) => euint128 test 2 (9, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add128(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(4n); + }); + + it('test operator "xor" overload (euint4, euint128) => euint128 test 3 (13, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add128(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(0n); + }); + + it('test operator "xor" overload (euint4, euint128) => euint128 test 4 (13, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add128(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.xor_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decrypt128(await this.contract.res128()); + expect(res).to.equal(4n); + }); + + it('test operator "eq" overload (euint4, euint128) => ebool test 1 (10, 340282366920938463463370073243865312497)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add128(340282366920938463463370073243865312497n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "eq" overload (euint4, euint128) => ebool test 2 (6, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(6n); + input.add128(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "eq" overload (euint4, euint128) => ebool test 3 (10, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add128(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "eq" overload (euint4, euint128) => ebool test 4 (10, 6)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add128(6n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.eq_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ne" overload (euint4, euint128) => ebool test 1 (13, 340282366920938463463368725666766226609)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add128(340282366920938463463368725666766226609n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ne" overload (euint4, euint128) => ebool test 2 (9, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(9n); + input.add128(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ne" overload (euint4, euint128) => ebool test 3 (13, 13)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add128(13n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ne" overload (euint4, euint128) => ebool test 4 (13, 9)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(13n); + input.add128(9n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ne_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ge" overload (euint4, euint128) => ebool test 1 (3, 340282366920938463463374467311851431135)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(3n); + input.add128(340282366920938463463374467311851431135n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ge" overload (euint4, euint128) => ebool test 2 (4, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(4n); + input.add128(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "ge" overload (euint4, euint128) => ebool test 3 (8, 8)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add128(8n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "ge" overload (euint4, euint128) => ebool test 4 (8, 4)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(8n); + input.add128(4n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.ge_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); + + it('test operator "gt" overload (euint4, euint128) => ebool test 1 (14, 340282366920938463463369565306924367885)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add128(340282366920938463463369565306924367885n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint128) => ebool test 2 (10, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(10n); + input.add128(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint128) => ebool test 3 (14, 14)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add128(14n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(false); + }); + + it('test operator "gt" overload (euint4, euint128) => ebool test 4 (14, 10)', async function () { + const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); + input.add4(14n); + input.add128(10n); + const encryptedAmount = await input.encrypt(); + const tx = await this.contract.gt_euint4_euint128( + encryptedAmount.handles[0], + encryptedAmount.handles[1], + encryptedAmount.inputProof, + ); + await tx.wait(); + const res = await decryptBool(await this.contract.resb()); + expect(res).to.equal(true); + }); +}); From 583fb0af12592c67f8494bb69492c2cdbc6b03d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Mon, 18 Nov 2024 18:17:02 +0100 Subject: [PATCH 05/21] feat: use public key id to use correct key --- e2e/package.json | 2 +- e2e/pnpm-lock.yaml | 10 +++++----- e2e/test/instance.ts | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/e2e/package.json b/e2e/package.json index a8b7be8..b161d05 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -35,7 +35,7 @@ "ethers": "^6.8.0", "fhevm": "0.6.0-0", "fhevm-core-contracts": "0.1.0-2", - "fhevmjs": "0.6.0-8", + "fhevmjs": "0.6.0-9", "fs-extra": "^10.1.0", "globals": "^15.9.0", "hardhat": "^2.22.8", diff --git a/e2e/pnpm-lock.yaml b/e2e/pnpm-lock.yaml index 2a84aff..61c4a28 100644 --- a/e2e/pnpm-lock.yaml +++ b/e2e/pnpm-lock.yaml @@ -91,8 +91,8 @@ importers: specifier: 0.1.0-2 version: 0.1.0-2 fhevmjs: - specifier: 0.6.0-8 - version: 0.6.0-8 + specifier: 0.6.0-9 + version: 0.6.0-9 fs-extra: specifier: ^10.1.0 version: 10.1.0 @@ -1518,8 +1518,8 @@ packages: resolution: {integrity: sha512-Gvd7a5T7JTU3OFHy2eRrvRTTmXWwSalSSsBdE0X0C0nTnTow5sYsQYkQqIZcYZNpZq1dCcoCgp/gYbeNDHUDNw==} engines: {node: '>=20.0.0'} - fhevmjs@0.6.0-8: - resolution: {integrity: sha512-B8djVV67W6iyGld0U/t+yfeYmvSX9KtkuzTYBZ6CQVQCcmQ+K8Ye6jWO5WsqjmHj5JU9g7DdioBqzx7NV11FQg==} + fhevmjs@0.6.0-9: + resolution: {integrity: sha512-DUGeX0xk/pQC9gG1byljxwEinLADRaWV4tsp0Crk8sbbCTEGTJ1rr3NSxvMPNggGFIwoaOeKT99KueKGaPn2gg==} engines: {node: '>=20'} hasBin: true @@ -4956,7 +4956,7 @@ snapshots: - bluebird - supports-color - fhevmjs@0.6.0-8: + fhevmjs@0.6.0-9: dependencies: '@types/keccak': 3.0.5 bigint-buffer: 1.1.5 diff --git a/e2e/test/instance.ts b/e2e/test/instance.ts index 6e0a544..e76e745 100644 --- a/e2e/test/instance.ts +++ b/e2e/test/instance.ts @@ -13,6 +13,7 @@ export const createInstance = async () => { gatewayUrl: parsedEnv.GATEWAY_URL, aclContractAddress: parsedEnv.ACL_CONTRACT_ADDRESS, kmsContractAddress: parsedEnv.KMS_VERIFIER_CONTRACT_ADDRESS, + publicKeyId: "beb70cb9fdbabf785242de498d6ec0ed282921d7", }); return instance; }; From 1f6cf205ecc7e2105a894e01b0b1f896b62f3822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Tue, 19 Nov 2024 17:48:52 +0100 Subject: [PATCH 06/21] test: add simple test for input --- e2e/test/gateway/createInput.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 e2e/test/gateway/createInput.ts diff --git a/e2e/test/gateway/createInput.ts b/e2e/test/gateway/createInput.ts new file mode 100644 index 0000000..43380e8 --- /dev/null +++ b/e2e/test/gateway/createInput.ts @@ -0,0 +1,24 @@ +import { expect } from "chai"; + +import { createInstance } from "../instance"; +import { getSigners, initSigners } from "../signers"; + +describe("Test input creation", function () { + before(async function () { + await initSigners(); + this.signers = await getSigners(); + this.fhevm = await createInstance(); + }); + + it("should create an input", async function () { + const input = this.fhevm.createEncryptedInput( + "0x1337680e44eb49ad81a588fc8a33335d9413818e", + this.signers.alice.address, + ); + input.add4(9n); + input.add128(13n); + const encryptedAmount = await input.encrypt(); + console.log(encryptedAmount); + expect(true).to.be.equal(true); + }); +}); From 2ba69c2c44c4c6b09316a9f98e3e5f21803426a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Tue, 19 Nov 2024 18:38:22 +0100 Subject: [PATCH 07/21] test: moving increment test --- .../Increment.fixture.ts | 0 .../Increment.ts => gateway/reencrypt.ts} | 36 +++---------------- 2 files changed, 4 insertions(+), 32 deletions(-) rename e2e/test/{increment => gateway}/Increment.fixture.ts (100%) rename e2e/test/{increment/Increment.ts => gateway/reencrypt.ts} (50%) diff --git a/e2e/test/increment/Increment.fixture.ts b/e2e/test/gateway/Increment.fixture.ts similarity index 100% rename from e2e/test/increment/Increment.fixture.ts rename to e2e/test/gateway/Increment.fixture.ts diff --git a/e2e/test/increment/Increment.ts b/e2e/test/gateway/reencrypt.ts similarity index 50% rename from e2e/test/increment/Increment.ts rename to e2e/test/gateway/reencrypt.ts index 5e4ab12..693af93 100644 --- a/e2e/test/increment/Increment.ts +++ b/e2e/test/gateway/reencrypt.ts @@ -4,24 +4,22 @@ import { createInstance } from "../instance"; import { getSigners, initSigners } from "../signers"; import { deployIncrementFixture } from "./Increment.fixture"; -describe("Increment", function () { +describe("Test reencrypt", function () { before(async function () { await initSigners(); this.signers = await getSigners(); + this.fhevm = await createInstance(); }); beforeEach(async function () { const contract = await deployIncrementFixture(); this.contractAddress = await contract.getAddress(); this.increment = contract; - this.fhevm = await createInstance(); }); - it("should increment", async function () { + it("should reencrypt", async function () { const transaction = await this.increment.increment(); await transaction.wait(); - const transaction2 = await this.increment.increment(); - await transaction2.wait(); const counterHandle = await this.increment.counter(); const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.fhevm.generateKeypair(); @@ -39,32 +37,6 @@ describe("Increment", function () { this.contractAddress, this.signers.alice.address, ); - expect(counter).to.equal(2); + expect(counter).to.equal(1); }); - - // it("should increment", async function () { - // const transaction = await this.increment.increment(); - // await transaction.wait(); - // const transaction2 = await this.increment.increment(); - // await transaction2.wait(); - - // // Reencrypt counter - // const counterHandle = await this.increment.counter(); - // const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.instances.alice.generateKeypair(); - // const eip712 = this.instances.alice.createEIP712(publicKeyAlice, this.contractAddress); - // const signatureAlice = await this.signers.alice.signTypedData( - // eip712.domain, - // { Reencrypt: eip712.types.Reencrypt }, - // eip712.message, - // ); - // const counter = await this.instances.alice.reencrypt( - // counterHandle, - // privateKeyAlice, - // publicKeyAlice, - // signatureAlice.replace("0x", ""), - // this.contractAddress, - // this.signers.alice.address, - // ); - // expect(counter).to.equal(2); - // }); }); From 04f12cdac444a5cc992938927ce322c71f04a998 Mon Sep 17 00:00:00 2001 From: Luis Montero <17201527+fd0r@users.noreply.github.com> Date: Tue, 19 Nov 2024 18:41:00 +0100 Subject: [PATCH 08/21] chore: fix createInput address --- e2e/test/gateway/createInput.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/e2e/test/gateway/createInput.ts b/e2e/test/gateway/createInput.ts index 43380e8..f1c213d 100644 --- a/e2e/test/gateway/createInput.ts +++ b/e2e/test/gateway/createInput.ts @@ -3,16 +3,16 @@ import { expect } from "chai"; import { createInstance } from "../instance"; import { getSigners, initSigners } from "../signers"; -describe("Test input creation", function () { - before(async function () { +describe("Test input creation", function() { + before(async function() { await initSigners(); this.signers = await getSigners(); this.fhevm = await createInstance(); }); - it("should create an input", async function () { + it("should create an input", async function() { const input = this.fhevm.createEncryptedInput( - "0x1337680e44eb49ad81a588fc8a33335d9413818e", + "0x1337AA343Db8D44238Fe40486aDeECdf354e1f60", this.signers.alice.address, ); input.add4(9n); From 179bd2d0ec447356d6b5923bac4a8d51999a7dff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Thu, 21 Nov 2024 20:52:21 +0100 Subject: [PATCH 09/21] test: add operations --- e2e/.gitignore | 2 +- e2e/contracts/operations/Add.sol | 101 + e2e/contracts/tests/TFHEManualTestSuite.sol | 383 -- e2e/contracts/tests/TFHETestSuite1.sol | 652 --- e2e/contracts/tests/TFHETestSuite10.sol | 652 --- e2e/contracts/tests/TFHETestSuite11.sol | 442 -- e2e/contracts/tests/TFHETestSuite2.sol | 652 --- e2e/contracts/tests/TFHETestSuite3.sol | 652 --- e2e/contracts/tests/TFHETestSuite4.sol | 652 --- e2e/contracts/tests/TFHETestSuite5.sol | 652 --- e2e/contracts/tests/TFHETestSuite6.sol | 652 --- e2e/contracts/tests/TFHETestSuite7.sol | 652 --- e2e/contracts/tests/TFHETestSuite8.sol | 652 --- e2e/contracts/tests/TFHETestSuite9.sol | 652 --- e2e/eslint.config.mjs | 3 + e2e/test/gateway/createInput.ts | 12 +- e2e/test/gateway/reencrypt.ts | 46 +- e2e/test/instance.ts | 40 +- .../Add.fixture.ts} | 6 +- e2e/test/operations/Add.ts | 165 + e2e/test/tfheOperations/tfheOperations1.ts | 4667 ----------------- e2e/test/types.ts | 6 +- e2e/test/utils.ts | 6 - 23 files changed, 323 insertions(+), 12076 deletions(-) create mode 100644 e2e/contracts/operations/Add.sol delete mode 100644 e2e/contracts/tests/TFHEManualTestSuite.sol delete mode 100644 e2e/contracts/tests/TFHETestSuite1.sol delete mode 100644 e2e/contracts/tests/TFHETestSuite10.sol delete mode 100644 e2e/contracts/tests/TFHETestSuite11.sol delete mode 100644 e2e/contracts/tests/TFHETestSuite2.sol delete mode 100644 e2e/contracts/tests/TFHETestSuite3.sol delete mode 100644 e2e/contracts/tests/TFHETestSuite4.sol delete mode 100644 e2e/contracts/tests/TFHETestSuite5.sol delete mode 100644 e2e/contracts/tests/TFHETestSuite6.sol delete mode 100644 e2e/contracts/tests/TFHETestSuite7.sol delete mode 100644 e2e/contracts/tests/TFHETestSuite8.sol delete mode 100644 e2e/contracts/tests/TFHETestSuite9.sol rename e2e/test/{gateway/Increment.fixture.ts => operations/Add.fixture.ts} (57%) create mode 100644 e2e/test/operations/Add.ts delete mode 100644 e2e/test/tfheOperations/tfheOperations1.ts diff --git a/e2e/.gitignore b/e2e/.gitignore index 7e98e67..8fe72ca 100644 --- a/e2e/.gitignore +++ b/e2e/.gitignore @@ -8,7 +8,7 @@ cache coverage dist node_modules -types +/types deployments kms-fhe-keys/ network-fhe-keys/ diff --git a/e2e/contracts/operations/Add.sol b/e2e/contracts/operations/Add.sol new file mode 100644 index 0000000..bda614d --- /dev/null +++ b/e2e/contracts/operations/Add.sol @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear + +pragma solidity ^0.8.24; + +import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; +import "fhevm/lib/TFHE.sol"; + +contract Add is E2EFHEVMConfig { + euint4 public result4; + euint8 public result8; + euint16 public result16; + euint32 public result32; + euint64 public result64; + euint128 public result128; + euint256 public result256; + + + function add4() public { + result4 = TFHE.add(TFHE.asEuint4(1), TFHE.asEuint4(2)); + TFHE.allow(result4, address(this)); + TFHE.allow(result4, msg.sender); + } + + function add4Scalar() public { + result4 = TFHE.add(TFHE.asEuint4(1), 2); + TFHE.allow(result4, address(this)); + TFHE.allow(result4, msg.sender); + } + + function add8() public { + result8 = TFHE.add(TFHE.asEuint8(1), TFHE.asEuint8(2)); + TFHE.allow(result8, address(this)); + TFHE.allow(result8, msg.sender); + } + + function add8Scalar() public { + result8 = TFHE.add(TFHE.asEuint8(1), 2); + TFHE.allow(result8, address(this)); + TFHE.allow(result8, msg.sender); + } + + function add16() public { + result16 = TFHE.add(TFHE.asEuint16(1), TFHE.asEuint16(2)); + TFHE.allow(result16, address(this)); + TFHE.allow(result16, msg.sender); + } + + function add16Scalar() public { + result16 = TFHE.add(TFHE.asEuint16(1), 2); + TFHE.allow(result16, address(this)); + TFHE.allow(result16, msg.sender); + } + + function add32() public { + result32 = TFHE.add(TFHE.asEuint32(1), TFHE.asEuint32(2)); + TFHE.allow(result32, address(this)); + TFHE.allow(result32, msg.sender); + } + + function add32Scalar() public { + result32 = TFHE.add(TFHE.asEuint32(1), 2); + TFHE.allow(result32, address(this)); + TFHE.allow(result32, msg.sender); + } + + function add64() public { + result64 = TFHE.add(TFHE.asEuint64(1), TFHE.asEuint64(2)); + TFHE.allow(result64, address(this)); + TFHE.allow(result64, msg.sender); + } + + function add64Scalar() public { + result64 = TFHE.add(TFHE.asEuint64(1), 2); + TFHE.allow(result64, address(this)); + TFHE.allow(result64, msg.sender); + } + + function add128() public { + result128 = TFHE.add(TFHE.asEuint128(1), TFHE.asEuint128(2)); + TFHE.allow(result128, address(this)); + TFHE.allow(result128, msg.sender); + } + + function add128Scalar() public { + result128 = TFHE.add(TFHE.asEuint128(1), 2); + TFHE.allow(result128, address(this)); + TFHE.allow(result128, msg.sender); + } + + function add256() public { + result256 = TFHE.add(TFHE.asEuint256(1), TFHE.asEuint256(2)); + TFHE.allow(result256, address(this)); + TFHE.allow(result256, msg.sender); + } + + function add256Scalar() public { + result256 = TFHE.add(TFHE.asEuint256(1), 2); + TFHE.allow(result256, address(this)); + TFHE.allow(result256, msg.sender); + } +} diff --git a/e2e/contracts/tests/TFHEManualTestSuite.sol b/e2e/contracts/tests/TFHEManualTestSuite.sol deleted file mode 100644 index 7d2dc0c..0000000 --- a/e2e/contracts/tests/TFHEManualTestSuite.sol +++ /dev/null @@ -1,383 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear -pragma solidity ^0.8.24; - -import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; -import "fhevm/lib/TFHE.sol"; - - -contract TFHEManualTestSuite is E2EFHEVMConfig { - ebool public resb; - euint4 public res4; - euint8 public res8; - euint16 public res16; - euint32 public res32; - euint64 public res64; - euint128 public res128; - euint256 public res256; - eaddress public resAdd; - ebytes64 public resB64; - ebytes128 public resB128; - ebytes256 public resB256; - - function eqEbool(bool a, bool b) external { - ebool input1 = TFHE.asEbool(a); - ebool input2 = TFHE.asEbool(b); - ebool result = TFHE.eq(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function eqEboolScalarL(bool a, bool b) external { - ebool input2 = TFHE.asEbool(b); - ebool result = TFHE.eq(a, input2); - TFHE.allowThis(result); - resb = result; - } - - function eqEboolScalarR(bool a, bool b) external { - ebool input1 = TFHE.asEbool(a); - ebool result = TFHE.eq(input1, b); - TFHE.allowThis(result); - resb = result; - } - - function neEbool(bool a, bool b) external { - ebool input1 = TFHE.asEbool(a); - ebool input2 = TFHE.asEbool(b); - ebool result = TFHE.ne(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function neEboolScalarL(bool a, bool b) external { - ebool input2 = TFHE.asEbool(b); - ebool result = TFHE.ne(a, input2); - TFHE.allowThis(result); - resb = result; - } - - function neEboolScalarR(bool a, bool b) external { - ebool input1 = TFHE.asEbool(a); - ebool result = TFHE.ne(input1, b); - TFHE.allowThis(result); - resb = result; - } - - function eqEbytes256(einput inp1, bytes calldata inputProof1, einput inp2, bytes calldata inputProof2) external { - ebytes256 input1 = TFHE.asEbytes256(inp1, inputProof1); - ebytes256 input2 = TFHE.asEbytes256(inp2, inputProof2); - ebool result = TFHE.eq(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function neEbytes256(einput inp1, bytes calldata inputProof1, einput inp2, bytes calldata inputProof2) external { - ebytes256 input1 = TFHE.asEbytes256(inp1, inputProof1); - ebytes256 input2 = TFHE.asEbytes256(inp2, inputProof2); - ebool result = TFHE.ne(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function eqEbytes64(bytes memory a, bytes memory b) external { - ebytes64 input1 = TFHE.asEbytes64(TFHE.padToBytes64(a)); - ebytes64 input2 = TFHE.asEbytes64(TFHE.padToBytes64(b)); - ebool result = TFHE.eq(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function eqEbytes64ScalarL(bytes memory a, bytes memory b) external { - bytes memory input1 = TFHE.padToBytes64(a); - ebytes64 input2 = TFHE.asEbytes64(TFHE.padToBytes64(b)); - ebool result = TFHE.eq(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function eqEbytes64ScalarR(bytes memory a, bytes memory b) external { - ebytes64 input1 = TFHE.asEbytes64(TFHE.padToBytes64(a)); - bytes memory input2 = TFHE.padToBytes64(b); - ebool result = TFHE.eq(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function neEbytes64(bytes memory a, bytes memory b) external { - ebytes64 input1 = TFHE.asEbytes64(TFHE.padToBytes64(a)); - ebytes64 input2 = TFHE.asEbytes64(TFHE.padToBytes64(b)); - ebool result = TFHE.ne(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function neEbytes64ScalarL(bytes memory a, bytes memory b) external { - bytes memory input1 = TFHE.padToBytes64(a); - ebytes64 input2 = TFHE.asEbytes64(TFHE.padToBytes64(b)); - ebool result = TFHE.ne(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function neEbytes64ScalarR(bytes memory a, bytes memory b) external { - ebytes64 input1 = TFHE.asEbytes64(TFHE.padToBytes64(a)); - bytes memory input2 = TFHE.padToBytes64(b); - ebool result = TFHE.ne(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function eqEbytes128(bytes memory a, bytes memory b) external { - ebytes128 input1 = TFHE.asEbytes128(TFHE.padToBytes128(a)); - ebytes128 input2 = TFHE.asEbytes128(TFHE.padToBytes128(b)); - ebool result = TFHE.eq(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function eqEbytes128ScalarL(bytes memory a, bytes memory b) external { - bytes memory input1 = TFHE.padToBytes128(a); - ebytes128 input2 = TFHE.asEbytes128(TFHE.padToBytes128(b)); - ebool result = TFHE.eq(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function eqEbytes128ScalarR(bytes memory a, bytes memory b) external { - ebytes128 input1 = TFHE.asEbytes128(TFHE.padToBytes128(a)); - bytes memory input2 = TFHE.padToBytes128(b); - ebool result = TFHE.eq(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function neEbytes128(bytes memory a, bytes memory b) external { - ebytes128 input1 = TFHE.asEbytes128(TFHE.padToBytes128(a)); - ebytes128 input2 = TFHE.asEbytes128(TFHE.padToBytes128(b)); - ebool result = TFHE.ne(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function neEbytes128ScalarL(bytes memory a, bytes memory b) external { - bytes memory input1 = TFHE.padToBytes128(a); - ebytes128 input2 = TFHE.asEbytes128(TFHE.padToBytes128(b)); - ebool result = TFHE.ne(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function neEbytes128ScalarR(bytes memory a, bytes memory b) external { - ebytes128 input1 = TFHE.asEbytes128(TFHE.padToBytes128(a)); - bytes memory input2 = TFHE.padToBytes128(b); - ebool result = TFHE.ne(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function eqEbytes256ScalarL(bytes memory a, bytes memory b) external { - bytes memory input1 = TFHE.padToBytes256(a); - ebytes256 input2 = TFHE.asEbytes256(TFHE.padToBytes256(b)); - ebool result = TFHE.eq(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function eqEbytes256ScalarR(bytes memory a, bytes memory b) external { - ebytes256 input1 = TFHE.asEbytes256(TFHE.padToBytes256(a)); - bytes memory input2 = TFHE.padToBytes256(b); - ebool result = TFHE.eq(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function neEbytes256ScalarL(bytes memory a, bytes memory b) external { - bytes memory input1 = TFHE.padToBytes256(a); - ebytes256 input2 = TFHE.asEbytes256(TFHE.padToBytes256(b)); - ebool result = TFHE.ne(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function neEbytes256ScalarR(bytes memory a, bytes memory b) external { - ebytes256 input1 = TFHE.asEbytes256(TFHE.padToBytes256(a)); - bytes memory input2 = TFHE.padToBytes256(b); - ebool result = TFHE.ne(input1, input2); - TFHE.allowThis(result); - resb = result; - } - - function test_select_ebool(bool control, bool ifTrue, bool ifFalse) public { - ebool controlProc = TFHE.asEbool(control); - ebool ifTrueProc = TFHE.asEbool(ifTrue); - ebool ifFalseProc = TFHE.asEbool(ifFalse); - ebool result = TFHE.select(controlProc, ifTrueProc, ifFalseProc); - TFHE.allowThis(result); - resb = result; - } - - function test_select_ebytes64(bool control, bytes memory ifTrue, bytes memory ifFalse) public { - ebool controlProc = TFHE.asEbool(control); - ebytes64 ifTrueProc = TFHE.asEbytes64(TFHE.padToBytes64(ifTrue)); - ebytes64 ifFalseProc = TFHE.asEbytes64(TFHE.padToBytes64(ifFalse)); - ebytes64 result = TFHE.select(controlProc, ifTrueProc, ifFalseProc); - TFHE.allowThis(result); - resB64 = result; - } - - function test_select_ebytes128(bool control, bytes memory ifTrue, bytes memory ifFalse) public { - ebool controlProc = TFHE.asEbool(control); - ebytes128 ifTrueProc = TFHE.asEbytes128(TFHE.padToBytes128(ifTrue)); - ebytes128 ifFalseProc = TFHE.asEbytes128(TFHE.padToBytes128(ifFalse)); - ebytes128 result = TFHE.select(controlProc, ifTrueProc, ifFalseProc); - TFHE.allowThis(result); - resB128 = result; - } - - function test_select_ebytes256(bool control, bytes memory ifTrue, bytes memory ifFalse) public { - ebool controlProc = TFHE.asEbool(control); - ebytes256 ifTrueProc = TFHE.asEbytes256(TFHE.padToBytes256(ifTrue)); - ebytes256 ifFalseProc = TFHE.asEbytes256(TFHE.padToBytes256(ifFalse)); - ebytes256 result = TFHE.select(controlProc, ifTrueProc, ifFalseProc); - TFHE.allowThis(result); - resB256 = result; - } - - function test_select(einput control, einput ifTrue, einput ifFalse, bytes calldata inputProof) public { - ebool controlProc = TFHE.asEbool(control, inputProof); - euint32 ifTrueProc = TFHE.asEuint32(ifTrue, inputProof); - euint32 ifFalseProc = TFHE.asEuint32(ifFalse, inputProof); - euint32 result = TFHE.select(controlProc, ifTrueProc, ifFalseProc); - TFHE.allowThis(result); - res32 = result; - } - - function test_select_eaddress(einput control, einput ifTrue, einput ifFalse, bytes calldata inputProof) public { - ebool controlProc = TFHE.asEbool(control, inputProof); - eaddress ifTrueProc = TFHE.asEaddress(ifTrue, inputProof); - eaddress ifFalseProc = TFHE.asEaddress(ifFalse, inputProof); - eaddress result = TFHE.select(controlProc, ifTrueProc, ifFalseProc); - TFHE.allowThis(result); - resAdd = result; - } - - function test_eq_eaddress_eaddress(einput a, einput b, bytes calldata inputProof) public { - eaddress aProc = TFHE.asEaddress(a, inputProof); - eaddress bProc = TFHE.asEaddress(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - - function test_ne_eaddress_eaddress(einput a, einput b, bytes calldata inputProof) public { - eaddress aProc = TFHE.asEaddress(a, inputProof); - eaddress bProc = TFHE.asEaddress(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - - function test_eq_eaddress_address(einput a, address b, bytes calldata inputProof) public { - eaddress aProc = TFHE.asEaddress(a, inputProof); - ebool result = TFHE.eq(aProc, b); - TFHE.allowThis(result); - resb = result; - } - - function test_eq_address_eaddress(einput a, address b, bytes calldata inputProof) public { - eaddress aProc = TFHE.asEaddress(a, inputProof); - ebool result = TFHE.eq(b, aProc); - TFHE.allowThis(result); - resb = result; - } - - function test_ne_eaddress_address(einput a, address b, bytes calldata inputProof) public { - eaddress aProc = TFHE.asEaddress(a, inputProof); - ebool result = TFHE.ne(aProc, b); - TFHE.allowThis(result); - resb = result; - } - - function test_ne_address_eaddress(einput a, address b, bytes calldata inputProof) public { - eaddress aProc = TFHE.asEaddress(a, inputProof); - ebool result = TFHE.ne(b, aProc); - TFHE.allowThis(result); - resb = result; - } - - function test_ebool_to_euint4_cast(bool input) public { - res4 = TFHE.asEuint4(TFHE.asEbool(input)); - } - - function test_ebool_to_euint8_cast(bool input) public { - res8 = TFHE.asEuint8(TFHE.asEbool(input)); - } - - function test_ebool_to_euint16_cast(bool input) public { - res16 = TFHE.asEuint16(TFHE.asEbool(input)); - } - - function test_ebool_to_euint32_cast(bool input) public { - res32 = TFHE.asEuint32(TFHE.asEbool(input)); - } - - function test_ebool_to_euint64_cast(bool input) public { - res64 = TFHE.asEuint64(TFHE.asEbool(input)); - } - - function test_ebool_to_euint128_cast(bool input) public { - res128 = TFHE.asEuint128(TFHE.asEbool(input)); - } - - function test_ebool_to_euint256_cast(bool input) public { - res256 = TFHE.asEuint256(TFHE.asEbool(input)); - } - - function test_euint4_to_euint256_cast(uint8 input) public { - res256 = TFHE.asEuint256(TFHE.asEuint4(input)); - } - - function test_euint128_to_euint8_cast(uint128 input) public { - res8 = TFHE.asEuint8(TFHE.asEuint128(input)); - } - - function test_ebool_not(bool input) public { - resb = TFHE.not(TFHE.asEbool(input)); - } - - function test_ebool_and(bool a, bool b) public { - resb = TFHE.and(TFHE.asEbool(a), TFHE.asEbool(b)); - } - - function test_ebool_and_scalarL(bool a, bool b) public { - resb = TFHE.and(a, TFHE.asEbool(b)); - } - - function test_ebool_and_scalarR(bool a, bool b) public { - resb = TFHE.and(TFHE.asEbool(a), b); - } - - function test_ebool_or(bool a, bool b) public { - resb = TFHE.or(TFHE.asEbool(a), TFHE.asEbool(b)); - } - - function test_ebool_or_scalarL(bool a, bool b) public { - resb = TFHE.or(a, TFHE.asEbool(b)); - } - - function test_ebool_or_scalarR(bool a, bool b) public { - resb = TFHE.or(TFHE.asEbool(a), b); - } - - function test_ebool_xor(bool a, bool b) public { - resb = TFHE.xor(TFHE.asEbool(a), TFHE.asEbool(b)); - } - - function test_ebool_xor_scalarL(bool a, bool b) public { - resb = TFHE.xor(a, TFHE.asEbool(b)); - } - - function test_ebool_xor_scalarR(bool a, bool b) public { - resb = TFHE.xor(TFHE.asEbool(a), b); - } -} diff --git a/e2e/contracts/tests/TFHETestSuite1.sol b/e2e/contracts/tests/TFHETestSuite1.sol deleted file mode 100644 index 8c1ed38..0000000 --- a/e2e/contracts/tests/TFHETestSuite1.sol +++ /dev/null @@ -1,652 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear -pragma solidity ^0.8.24; - -import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; -import "fhevm/lib/TFHE.sol"; - - -contract TFHETestSuite1 is E2EFHEVMConfig { - ebool public resb; - euint4 public res4; - euint8 public res8; - euint16 public res16; - euint32 public res32; - euint64 public res64; - euint128 public res128; - euint256 public res256; - - constructor() { - TFHE.setFHEVM(FHEVMConfig.defaultConfig()); - } - - function add_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function sub_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function mul_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function and_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function or_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function xor_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function eq_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function max_euint4_euint4(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function add_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function sub_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function mul_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function and_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function or_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function xor_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function eq_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function max_euint4_euint8(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function add_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function sub_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function mul_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function and_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function or_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function xor_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function eq_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function max_euint4_euint16(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function add_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function sub_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function mul_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function and_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function or_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function xor_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function eq_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function max_euint4_euint32(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function add_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function sub_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function mul_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function and_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function or_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function xor_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function eq_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function max_euint4_euint64(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function add_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function sub_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function mul_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function and_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function or_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function xor_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function eq_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function max_euint4_euint128(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function add_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } -} diff --git a/e2e/contracts/tests/TFHETestSuite10.sol b/e2e/contracts/tests/TFHETestSuite10.sol deleted file mode 100644 index 9d4db5c..0000000 --- a/e2e/contracts/tests/TFHETestSuite10.sol +++ /dev/null @@ -1,652 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear -pragma solidity ^0.8.24; - -import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; -import "fhevm/lib/TFHE.sol"; - - -contract TFHETestSuite10 is E2EFHEVMConfig { - ebool public resb; - euint4 public res4; - euint8 public res8; - euint16 public res16; - euint32 public res32; - euint64 public res64; - euint128 public res128; - euint256 public res256; - - constructor() { - TFHE.setFHEVM(FHEVMConfig.defaultConfig()); - } - - function add_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function eq_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint256_euint32(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function add_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function eq_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint256_euint64(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function add_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function eq_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint256_euint128(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function add_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function eq_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint256_euint256(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function add_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function add_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function div_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - euint256 result = TFHE.div(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function rem_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - euint256 result = TFHE.rem(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function eq_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function eq_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function min_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint256_uint256(einput a, uint256 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint256 bProc = b; - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_uint256_euint256(uint256 a, einput b, bytes calldata inputProof) public { - uint256 aProc = a; - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function shl_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.shl(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function shr_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.shr(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function rotl_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.rotl(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function rotr_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.rotr(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } -} diff --git a/e2e/contracts/tests/TFHETestSuite11.sol b/e2e/contracts/tests/TFHETestSuite11.sol deleted file mode 100644 index eea6105..0000000 --- a/e2e/contracts/tests/TFHETestSuite11.sol +++ /dev/null @@ -1,442 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear -pragma solidity ^0.8.24; - -import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; -import "fhevm/lib/TFHE.sol"; - - -contract TFHETestSuite11 is E2EFHEVMConfig { - ebool public resb; - euint4 public res4; - euint8 public res8; - euint16 public res16; - euint32 public res32; - euint64 public res64; - euint128 public res128; - euint256 public res256; - - constructor() { - TFHE.setFHEVM(FHEVMConfig.defaultConfig()); - } - - function shl_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.shl(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function shl_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.shl(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function shr_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.shr(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function shr_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.shr(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function rotl_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.rotl(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function rotl_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.rotl(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function rotr_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.rotr(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function rotr_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.rotr(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function shl_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint16 result = TFHE.shl(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function shl_euint16_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint8 bProc = b; - euint16 result = TFHE.shl(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function shr_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint16 result = TFHE.shr(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function shr_euint16_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint8 bProc = b; - euint16 result = TFHE.shr(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function rotl_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint16 result = TFHE.rotl(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function rotl_euint16_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint8 bProc = b; - euint16 result = TFHE.rotl(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function rotr_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint16 result = TFHE.rotr(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function rotr_euint16_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint8 bProc = b; - euint16 result = TFHE.rotr(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function shl_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint32 result = TFHE.shl(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function shl_euint32_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint8 bProc = b; - euint32 result = TFHE.shl(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function shr_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint32 result = TFHE.shr(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function shr_euint32_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint8 bProc = b; - euint32 result = TFHE.shr(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function rotl_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint32 result = TFHE.rotl(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function rotl_euint32_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint8 bProc = b; - euint32 result = TFHE.rotl(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function rotr_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint32 result = TFHE.rotr(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function rotr_euint32_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint8 bProc = b; - euint32 result = TFHE.rotr(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function shl_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint64 result = TFHE.shl(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function shl_euint64_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint8 bProc = b; - euint64 result = TFHE.shl(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function shr_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint64 result = TFHE.shr(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function shr_euint64_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint8 bProc = b; - euint64 result = TFHE.shr(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function rotl_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint64 result = TFHE.rotl(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function rotl_euint64_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint8 bProc = b; - euint64 result = TFHE.rotl(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function rotr_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint64 result = TFHE.rotr(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function rotr_euint64_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint8 bProc = b; - euint64 result = TFHE.rotr(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function shl_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint128 result = TFHE.shl(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function shl_euint128_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint8 bProc = b; - euint128 result = TFHE.shl(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function shr_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint128 result = TFHE.shr(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function shr_euint128_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint8 bProc = b; - euint128 result = TFHE.shr(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function rotl_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint128 result = TFHE.rotl(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function rotl_euint128_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint8 bProc = b; - euint128 result = TFHE.rotl(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function rotr_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint128 result = TFHE.rotr(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function rotr_euint128_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint8 bProc = b; - euint128 result = TFHE.rotr(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function shl_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint256 result = TFHE.shl(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function shl_euint256_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint8 bProc = b; - euint256 result = TFHE.shl(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function shr_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint256 result = TFHE.shr(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function shr_euint256_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint8 bProc = b; - euint256 result = TFHE.shr(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function rotl_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint256 result = TFHE.rotl(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function rotl_euint256_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint8 bProc = b; - euint256 result = TFHE.rotl(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function rotr_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint256 result = TFHE.rotr(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function rotr_euint256_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - uint8 bProc = b; - euint256 result = TFHE.rotr(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function neg_euint4(einput a, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 result = TFHE.neg(aProc); - TFHE.allowThis(result); - res4 = result; - } - function not_euint4(einput a, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint4 result = TFHE.not(aProc); - TFHE.allowThis(result); - res4 = result; - } - function neg_euint8(einput a, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 result = TFHE.neg(aProc); - TFHE.allowThis(result); - res8 = result; - } - function not_euint8(einput a, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 result = TFHE.not(aProc); - TFHE.allowThis(result); - res8 = result; - } - function neg_euint16(einput a, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 result = TFHE.neg(aProc); - TFHE.allowThis(result); - res16 = result; - } - function not_euint16(einput a, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 result = TFHE.not(aProc); - TFHE.allowThis(result); - res16 = result; - } - function neg_euint32(einput a, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 result = TFHE.neg(aProc); - TFHE.allowThis(result); - res32 = result; - } - function not_euint32(einput a, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 result = TFHE.not(aProc); - TFHE.allowThis(result); - res32 = result; - } - function neg_euint64(einput a, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 result = TFHE.neg(aProc); - TFHE.allowThis(result); - res64 = result; - } - function not_euint64(einput a, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 result = TFHE.not(aProc); - TFHE.allowThis(result); - res64 = result; - } - function neg_euint128(einput a, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 result = TFHE.neg(aProc); - TFHE.allowThis(result); - res128 = result; - } - function not_euint128(einput a, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 result = TFHE.not(aProc); - TFHE.allowThis(result); - res128 = result; - } - function neg_euint256(einput a, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 result = TFHE.neg(aProc); - TFHE.allowThis(result); - res256 = result; - } - function not_euint256(einput a, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint256 result = TFHE.not(aProc); - TFHE.allowThis(result); - res256 = result; - } -} diff --git a/e2e/contracts/tests/TFHETestSuite2.sol b/e2e/contracts/tests/TFHETestSuite2.sol deleted file mode 100644 index 1655938..0000000 --- a/e2e/contracts/tests/TFHETestSuite2.sol +++ /dev/null @@ -1,652 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear -pragma solidity ^0.8.24; - -import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; -import "fhevm/lib/TFHE.sol"; - - -contract TFHETestSuite2 is E2EFHEVMConfig { - ebool public resb; - euint4 public res4; - euint8 public res8; - euint16 public res16; - euint32 public res32; - euint64 public res64; - euint128 public res128; - euint256 public res256; - - constructor() { - TFHE.setFHEVM(FHEVMConfig.defaultConfig()); - } - - function eq_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint4_euint256(einput a, einput b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function add_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function add_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function sub_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function sub_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function mul_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function mul_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function div_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.div(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function rem_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.rem(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function and_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function and_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function or_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function or_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function xor_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function xor_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function eq_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function eq_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function min_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function max_euint4_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint4 aProc = TFHE.asEuint4(a, inputProof); - uint8 bProc = b; - euint4 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function max_uint8_euint4(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint4 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res4 = result; - } - function add_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint8 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function sub_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint8 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function mul_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint8 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function and_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint8 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function or_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint8 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function xor_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint8 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function eq_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint8 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function max_euint8_euint4(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint8 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function add_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function sub_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function mul_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function and_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function or_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function xor_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function eq_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function max_euint8_euint8(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function add_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function sub_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function mul_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function and_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function or_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function xor_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function eq_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function max_euint8_euint16(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function add_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function sub_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function mul_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function and_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function or_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function xor_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function eq_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } -} diff --git a/e2e/contracts/tests/TFHETestSuite3.sol b/e2e/contracts/tests/TFHETestSuite3.sol deleted file mode 100644 index a48b5a6..0000000 --- a/e2e/contracts/tests/TFHETestSuite3.sol +++ /dev/null @@ -1,652 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear -pragma solidity ^0.8.24; - -import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; -import "fhevm/lib/TFHE.sol"; - - -contract TFHETestSuite3 is E2EFHEVMConfig { - ebool public resb; - euint4 public res4; - euint8 public res8; - euint16 public res16; - euint32 public res32; - euint64 public res64; - euint128 public res128; - euint256 public res256; - - constructor() { - TFHE.setFHEVM(FHEVMConfig.defaultConfig()); - } - - function le_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function max_euint8_euint32(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function add_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function sub_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function mul_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function and_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function or_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function xor_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function eq_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function max_euint8_euint64(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function add_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function sub_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function mul_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function and_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function or_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function xor_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function eq_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function max_euint8_euint128(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function add_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function eq_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint8_euint256(einput a, einput b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function add_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function add_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function sub_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function sub_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function mul_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function mul_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function div_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.div(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function rem_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.rem(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function and_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function and_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function or_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function or_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function xor_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function xor_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function eq_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function eq_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function min_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function max_euint8_uint8(einput a, uint8 b, bytes calldata inputProof) public { - euint8 aProc = TFHE.asEuint8(a, inputProof); - uint8 bProc = b; - euint8 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function max_uint8_euint8(uint8 a, einput b, bytes calldata inputProof) public { - uint8 aProc = a; - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint8 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res8 = result; - } - function add_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint16 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function sub_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint16 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function mul_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint16 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function and_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint16 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function or_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint16 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function xor_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint16 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function eq_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint16 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function max_euint16_euint4(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint16 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } -} diff --git a/e2e/contracts/tests/TFHETestSuite4.sol b/e2e/contracts/tests/TFHETestSuite4.sol deleted file mode 100644 index 6aa2e36..0000000 --- a/e2e/contracts/tests/TFHETestSuite4.sol +++ /dev/null @@ -1,652 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear -pragma solidity ^0.8.24; - -import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; -import "fhevm/lib/TFHE.sol"; - - -contract TFHETestSuite4 is E2EFHEVMConfig { - ebool public resb; - euint4 public res4; - euint8 public res8; - euint16 public res16; - euint32 public res32; - euint64 public res64; - euint128 public res128; - euint256 public res256; - - constructor() { - TFHE.setFHEVM(FHEVMConfig.defaultConfig()); - } - - function add_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint16 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function sub_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint16 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function mul_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint16 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function and_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint16 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function or_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint16 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function xor_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint16 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function eq_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint16 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function max_euint16_euint8(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint16 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function add_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function sub_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function mul_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function and_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function or_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function xor_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function eq_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function max_euint16_euint16(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function add_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function sub_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function mul_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function and_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function or_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function xor_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function eq_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function max_euint16_euint32(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function add_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function sub_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function mul_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function and_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function or_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function xor_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function eq_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function max_euint16_euint64(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function add_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function sub_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function mul_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function and_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function or_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function xor_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function eq_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function max_euint16_euint128(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function add_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function eq_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint16_euint256(einput a, einput b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function add_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - euint16 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function add_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function sub_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - euint16 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function sub_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function mul_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - euint16 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function mul_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } -} diff --git a/e2e/contracts/tests/TFHETestSuite5.sol b/e2e/contracts/tests/TFHETestSuite5.sol deleted file mode 100644 index e213344..0000000 --- a/e2e/contracts/tests/TFHETestSuite5.sol +++ /dev/null @@ -1,652 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear -pragma solidity ^0.8.24; - -import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; -import "fhevm/lib/TFHE.sol"; - - -contract TFHETestSuite5 is E2EFHEVMConfig { - ebool public resb; - euint4 public res4; - euint8 public res8; - euint16 public res16; - euint32 public res32; - euint64 public res64; - euint128 public res128; - euint256 public res256; - - constructor() { - TFHE.setFHEVM(FHEVMConfig.defaultConfig()); - } - - function div_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - euint16 result = TFHE.div(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function rem_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - euint16 result = TFHE.rem(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function and_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - euint16 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function and_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function or_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - euint16 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function or_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function xor_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - euint16 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function xor_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function eq_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function eq_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - euint16 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function min_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function max_euint16_uint16(einput a, uint16 b, bytes calldata inputProof) public { - euint16 aProc = TFHE.asEuint16(a, inputProof); - uint16 bProc = b; - euint16 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function max_uint16_euint16(uint16 a, einput b, bytes calldata inputProof) public { - uint16 aProc = a; - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint16 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res16 = result; - } - function add_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint32 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function sub_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint32 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function mul_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint32 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function and_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint32 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function or_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint32 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function xor_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint32 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function eq_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint32 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function max_euint32_euint4(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint32 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function add_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint32 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function sub_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint32 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function mul_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint32 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function and_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint32 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function or_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint32 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function xor_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint32 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function eq_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint32 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function max_euint32_euint8(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint32 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function add_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint32 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function sub_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint32 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function mul_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint32 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function and_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint32 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function or_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint32 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function xor_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint32 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function eq_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint32 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function max_euint32_euint16(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint32 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function add_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function sub_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function mul_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function and_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function or_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function xor_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function eq_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function max_euint32_euint32(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function add_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function sub_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function mul_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function and_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function or_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function xor_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function eq_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } -} diff --git a/e2e/contracts/tests/TFHETestSuite6.sol b/e2e/contracts/tests/TFHETestSuite6.sol deleted file mode 100644 index 5c9d32f..0000000 --- a/e2e/contracts/tests/TFHETestSuite6.sol +++ /dev/null @@ -1,652 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear -pragma solidity ^0.8.24; - -import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; -import "fhevm/lib/TFHE.sol"; - - -contract TFHETestSuite6 is E2EFHEVMConfig { - ebool public resb; - euint4 public res4; - euint8 public res8; - euint16 public res16; - euint32 public res32; - euint64 public res64; - euint128 public res128; - euint256 public res256; - - constructor() { - TFHE.setFHEVM(FHEVMConfig.defaultConfig()); - } - - function le_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function max_euint32_euint64(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function add_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function sub_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function mul_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function and_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function or_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function xor_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function eq_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function max_euint32_euint128(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function add_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function eq_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint32_euint256(einput a, einput b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function add_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - euint32 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function add_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function sub_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - euint32 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function sub_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function mul_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - euint32 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function mul_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function div_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - euint32 result = TFHE.div(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function rem_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - euint32 result = TFHE.rem(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function and_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - euint32 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function and_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function or_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - euint32 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function or_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function xor_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - euint32 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function xor_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function eq_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function eq_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - euint32 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function min_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function max_euint32_uint32(einput a, uint32 b, bytes calldata inputProof) public { - euint32 aProc = TFHE.asEuint32(a, inputProof); - uint32 bProc = b; - euint32 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function max_uint32_euint32(uint32 a, einput b, bytes calldata inputProof) public { - uint32 aProc = a; - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint32 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res32 = result; - } - function add_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint64 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function sub_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint64 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function mul_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint64 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function and_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint64 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function or_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint64 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function xor_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint64 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function eq_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint64 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function max_euint64_euint4(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint64 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function add_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint64 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function sub_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint64 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function mul_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint64 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function and_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint64 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function or_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint64 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function xor_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint64 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function eq_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint64 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function max_euint64_euint8(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint64 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } -} diff --git a/e2e/contracts/tests/TFHETestSuite7.sol b/e2e/contracts/tests/TFHETestSuite7.sol deleted file mode 100644 index bd8bba1..0000000 --- a/e2e/contracts/tests/TFHETestSuite7.sol +++ /dev/null @@ -1,652 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear -pragma solidity ^0.8.24; - -import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; -import "fhevm/lib/TFHE.sol"; - - -contract TFHETestSuite7 is E2EFHEVMConfig { - ebool public resb; - euint4 public res4; - euint8 public res8; - euint16 public res16; - euint32 public res32; - euint64 public res64; - euint128 public res128; - euint256 public res256; - - constructor() { - TFHE.setFHEVM(FHEVMConfig.defaultConfig()); - } - - function add_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint64 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function sub_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint64 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function mul_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint64 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function and_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint64 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function or_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint64 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function xor_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint64 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function eq_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint64 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function max_euint64_euint16(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint64 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function add_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint64 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function sub_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint64 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function mul_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint64 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function and_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint64 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function or_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint64 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function xor_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint64 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function eq_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint64 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function max_euint64_euint32(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint64 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function add_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function sub_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function mul_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function and_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function or_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function xor_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function eq_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function max_euint64_euint64(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function add_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function sub_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function mul_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function and_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function or_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function xor_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function eq_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function max_euint64_euint128(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function add_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function eq_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint64_euint256(einput a, einput b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function add_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - euint64 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function add_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function sub_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - euint64 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function sub_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function mul_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - euint64 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function mul_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function div_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - euint64 result = TFHE.div(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function rem_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - euint64 result = TFHE.rem(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function and_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - euint64 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function and_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function or_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - euint64 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function or_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function xor_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - euint64 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function xor_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function eq_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function eq_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } -} diff --git a/e2e/contracts/tests/TFHETestSuite8.sol b/e2e/contracts/tests/TFHETestSuite8.sol deleted file mode 100644 index a9d1ab7..0000000 --- a/e2e/contracts/tests/TFHETestSuite8.sol +++ /dev/null @@ -1,652 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear -pragma solidity ^0.8.24; - -import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; -import "fhevm/lib/TFHE.sol"; - - -contract TFHETestSuite8 is E2EFHEVMConfig { - ebool public resb; - euint4 public res4; - euint8 public res8; - euint16 public res16; - euint32 public res32; - euint64 public res64; - euint128 public res128; - euint256 public res256; - - constructor() { - TFHE.setFHEVM(FHEVMConfig.defaultConfig()); - } - - function gt_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - euint64 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function min_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function max_euint64_uint64(einput a, uint64 b, bytes calldata inputProof) public { - euint64 aProc = TFHE.asEuint64(a, inputProof); - uint64 bProc = b; - euint64 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function max_uint64_euint64(uint64 a, einput b, bytes calldata inputProof) public { - uint64 aProc = a; - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint64 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res64 = result; - } - function add_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint128 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function sub_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint128 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function mul_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint128 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function and_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint128 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function or_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint128 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function xor_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint128 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function eq_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint128 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function max_euint128_euint4(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint128 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function add_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint128 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function sub_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint128 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function mul_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint128 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function and_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint128 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function or_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint128 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function xor_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint128 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function eq_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint128 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function max_euint128_euint8(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint128 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function add_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint128 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function sub_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint128 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function mul_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint128 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function and_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint128 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function or_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint128 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function xor_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint128 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function eq_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint128 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function max_euint128_euint16(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint128 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function add_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint128 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function sub_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint128 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function mul_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint128 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function and_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint128 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function or_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint128 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function xor_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint128 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function eq_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint128 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function max_euint128_euint32(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint32 bProc = TFHE.asEuint32(b, inputProof); - euint128 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function add_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint128 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function sub_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint128 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function mul_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint128 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function and_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint128 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function or_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint128 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function xor_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint128 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function eq_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint128 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function max_euint128_euint64(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint64 bProc = TFHE.asEuint64(b, inputProof); - euint128 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function add_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function sub_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function mul_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function and_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function or_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function xor_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function eq_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } -} diff --git a/e2e/contracts/tests/TFHETestSuite9.sol b/e2e/contracts/tests/TFHETestSuite9.sol deleted file mode 100644 index b3fa282..0000000 --- a/e2e/contracts/tests/TFHETestSuite9.sol +++ /dev/null @@ -1,652 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear -pragma solidity ^0.8.24; - -import { E2EFHEVMConfig } from "../E2EFHEVMConfig.sol"; -import "fhevm/lib/TFHE.sol"; - - -contract TFHETestSuite9 is E2EFHEVMConfig { - ebool public resb; - euint4 public res4; - euint8 public res8; - euint16 public res16; - euint32 public res32; - euint64 public res64; - euint128 public res128; - euint256 public res256; - - constructor() { - TFHE.setFHEVM(FHEVMConfig.defaultConfig()); - } - - function le_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function max_euint128_euint128(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function add_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function eq_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint128_euint256(einput a, einput b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - euint256 bProc = TFHE.asEuint256(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function add_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - euint128 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function add_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function sub_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - euint128 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function sub_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function mul_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - euint128 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function mul_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function div_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - euint128 result = TFHE.div(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function rem_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - euint128 result = TFHE.rem(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function and_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - euint128 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function and_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function or_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - euint128 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function or_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function xor_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - euint128 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function xor_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function eq_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function eq_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - euint128 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function min_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function max_euint128_uint128(einput a, uint128 b, bytes calldata inputProof) public { - euint128 aProc = TFHE.asEuint128(a, inputProof); - uint128 bProc = b; - euint128 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function max_uint128_euint128(uint128 a, einput b, bytes calldata inputProof) public { - uint128 aProc = a; - euint128 bProc = TFHE.asEuint128(b, inputProof); - euint128 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res128 = result; - } - function add_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function eq_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint256_euint4(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint4 bProc = TFHE.asEuint4(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function add_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function eq_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint256_euint8(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint8 bProc = TFHE.asEuint8(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function add_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint256 result = TFHE.add(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function sub_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint256 result = TFHE.sub(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function mul_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint256 result = TFHE.mul(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function and_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint256 result = TFHE.and(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function or_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint256 result = TFHE.or(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function xor_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint256 result = TFHE.xor(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function eq_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.eq(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ne_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ne(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function ge_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.ge(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function gt_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.gt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function le_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.le(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function lt_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - ebool result = TFHE.lt(aProc, bProc); - TFHE.allowThis(result); - resb = result; - } - function min_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint256 result = TFHE.min(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } - function max_euint256_euint16(einput a, einput b, bytes calldata inputProof) public { - euint256 aProc = TFHE.asEuint256(a, inputProof); - euint16 bProc = TFHE.asEuint16(b, inputProof); - euint256 result = TFHE.max(aProc, bProc); - TFHE.allowThis(result); - res256 = result; - } -} diff --git a/e2e/eslint.config.mjs b/e2e/eslint.config.mjs index 03e3173..8167543 100644 --- a/e2e/eslint.config.mjs +++ b/e2e/eslint.config.mjs @@ -11,6 +11,9 @@ export default [ reportUnusedDisableDirectives: "off", }, ignores: ["abi/", "artifacts/", "cache/", "res/", "types/*"], + rules: { + "@typescript-eslint/no-explicit-any": "0", + }, }, eslint.configs.recommended, ...tseslint.configs.recommended, diff --git a/e2e/test/gateway/createInput.ts b/e2e/test/gateway/createInput.ts index f1c213d..2214e10 100644 --- a/e2e/test/gateway/createInput.ts +++ b/e2e/test/gateway/createInput.ts @@ -3,22 +3,22 @@ import { expect } from "chai"; import { createInstance } from "../instance"; import { getSigners, initSigners } from "../signers"; -describe("Test input creation", function() { - before(async function() { +describe("Test input creation", function () { + before(async function () { await initSigners(); this.signers = await getSigners(); this.fhevm = await createInstance(); }); - it("should create an input", async function() { + it("should create an input and send it to the gateway", async function () { const input = this.fhevm.createEncryptedInput( "0x1337AA343Db8D44238Fe40486aDeECdf354e1f60", this.signers.alice.address, ); input.add4(9n); input.add128(13n); - const encryptedAmount = await input.encrypt(); - console.log(encryptedAmount); - expect(true).to.be.equal(true); + const { handles, inputProof } = await input.encrypt(); + expect(inputProof).to.be.not.null; + expect(handles.length).to.be.equal(2); }); }); diff --git a/e2e/test/gateway/reencrypt.ts b/e2e/test/gateway/reencrypt.ts index 693af93..52846ed 100644 --- a/e2e/test/gateway/reencrypt.ts +++ b/e2e/test/gateway/reencrypt.ts @@ -1,42 +1,34 @@ import { expect } from "chai"; +import { Context } from "mocha"; -import { createInstance } from "../instance"; +import { Add } from "../../types"; +import { Decrypt, createDecrypt, createInstance } from "../instance"; +import { deployAddFixture } from "../operations/Add.fixture"; import { getSigners, initSigners } from "../signers"; -import { deployIncrementFixture } from "./Increment.fixture"; + +interface AddContext extends Context { + contract: Add; +} describe("Test reencrypt", function () { - before(async function () { + let decrypt: Decrypt; + before(async function (this: AddContext) { await initSigners(); this.signers = await getSigners(); this.fhevm = await createInstance(); - }); - - beforeEach(async function () { - const contract = await deployIncrementFixture(); + const contract = await deployAddFixture(); this.contractAddress = await contract.getAddress(); - this.increment = contract; + this.contract = contract; + decrypt = createDecrypt(this.fhevm, this.signers.alice, this.contractAddress); }); - it("should reencrypt", async function () { - const transaction = await this.increment.increment(); + it("should reencrypt a 8bits value", async function (this: AddContext) { + const transaction = await this.contract.add8(); await transaction.wait(); - const counterHandle = await this.increment.counter(); - const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = this.fhevm.generateKeypair(); - const eip712 = this.fhevm.createEIP712(publicKeyAlice, this.contractAddress); - const signatureAlice = await this.signers.alice.signTypedData( - eip712.domain, - { Reencrypt: eip712.types.Reencrypt }, - eip712.message, - ); - const counter = await this.fhevm.reencrypt( - counterHandle, - privateKeyAlice, - publicKeyAlice, - signatureAlice.replace("0x", ""), - this.contractAddress, - this.signers.alice.address, - ); - expect(counter).to.equal(1); + const handle = await this.contract.result8(); + + const result = await decrypt(handle); + expect(result).to.equal(3); }); }); diff --git a/e2e/test/instance.ts b/e2e/test/instance.ts index e76e745..988a03a 100644 --- a/e2e/test/instance.ts +++ b/e2e/test/instance.ts @@ -13,27 +13,29 @@ export const createInstance = async () => { gatewayUrl: parsedEnv.GATEWAY_URL, aclContractAddress: parsedEnv.ACL_CONTRACT_ADDRESS, kmsContractAddress: parsedEnv.KMS_VERIFIER_CONTRACT_ADDRESS, - publicKeyId: "beb70cb9fdbabf785242de498d6ec0ed282921d7", + publicKeyId: "55729ddea48547ea837137d122e1c90043e94c41", }); return instance; }; -export const createDecrypt = - (instance: FhevmInstance, signer: HardhatEthersSigner, contractAddress: string) => async (handle: bigint) => { - const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = instance.generateKeypair(); - const eip712 = instance.createEIP712(publicKeyAlice, contractAddress); - const signatureAlice = await signer.signTypedData( - eip712.domain, - { Reencrypt: eip712.types.Reencrypt }, - eip712.message, - ); +export type Decrypt = (handle: bigint) => Promise; +export type CreateDecrypt = (instance: FhevmInstance, signer: HardhatEthersSigner, contractAddress: string) => Decrypt; - return instance.reencrypt( - handle, - privateKeyAlice, - publicKeyAlice, - signatureAlice.replace("0x", ""), - contractAddress, - signer.address, - ); - }; +export const createDecrypt: CreateDecrypt = (instance, signer, contractAddress) => async (handle) => { + const { publicKey: publicKeyAlice, privateKey: privateKeyAlice } = instance.generateKeypair(); + const eip712 = instance.createEIP712(publicKeyAlice, contractAddress); + const signatureAlice = await signer.signTypedData( + eip712.domain, + { Reencrypt: eip712.types.Reencrypt }, + eip712.message, + ); + + return instance.reencrypt( + handle, + privateKeyAlice, + publicKeyAlice, + signatureAlice.replace("0x", ""), + contractAddress, + signer.address, + ); +}; diff --git a/e2e/test/gateway/Increment.fixture.ts b/e2e/test/operations/Add.fixture.ts similarity index 57% rename from e2e/test/gateway/Increment.fixture.ts rename to e2e/test/operations/Add.fixture.ts index f6e36c8..1a054a9 100644 --- a/e2e/test/gateway/Increment.fixture.ts +++ b/e2e/test/operations/Add.fixture.ts @@ -1,12 +1,12 @@ import { ethers } from "hardhat"; -import type { Increment } from "../../types"; +import type { Add } from "../../types"; import { getSigners } from "../signers"; -export async function deployIncrementFixture(): Promise { +export async function deployAddFixture(): Promise { const signers = await getSigners(); - const contractFactory = await ethers.getContractFactory("Increment"); + const contractFactory = await ethers.getContractFactory("Add"); const contract = await contractFactory.connect(signers.alice).deploy(); await contract.waitForDeployment(); diff --git a/e2e/test/operations/Add.ts b/e2e/test/operations/Add.ts new file mode 100644 index 0000000..13575c5 --- /dev/null +++ b/e2e/test/operations/Add.ts @@ -0,0 +1,165 @@ +import { expect } from "chai"; +import { BaseContract } from "ethers"; +import { Context } from "mocha"; + +import { Add } from "../../types"; +import { Decrypt, createDecrypt, createInstance } from "../instance"; +import { getSigners, initSigners } from "../signers"; +import { deployAddFixture } from "./Add.fixture"; + +interface AddContext extends Context { + contract: Add; +} + +describe("Test add", function () { + let decrypt: Decrypt; + before(async function (this: AddContext) { + await initSigners(); + this.signers = await getSigners(); + this.fhevm = await createInstance(); + const contract = await deployAddFixture(); + this.contractAddress = await contract.getAddress(); + this.contract = contract; + decrypt = createDecrypt(this.fhevm, this.signers.alice, this.contractAddress); + }); + + it("should add 4 bits", async function (this: AddContext) { + const transaction = await this.contract.add4(); + await transaction.wait(); + + const handle = await this.contract.result4(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); + + it("should add 4 bits (scalar)", async function (this: AddContext) { + const transaction = await this.contract.add4Scalar(); + await transaction.wait(); + + const handle = await this.contract.result4(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); + + it("should add 8 bits", async function (this: AddContext) { + const transaction = await this.contract.add8(); + await transaction.wait(); + + const handle = await this.contract.result8(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); + + it("should add 8 bits (scalar)", async function (this: AddContext) { + const transaction = await this.contract.add8Scalar(); + await transaction.wait(); + + const handle = await this.contract.result8(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); + + it("should add 16 bits", async function (this: AddContext) { + const transaction = await this.contract.add16(); + await transaction.wait(); + + const handle = await this.contract.result16(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); + + it("should add 16 bits (scalar)", async function (this: AddContext) { + const transaction = await this.contract.add16Scalar(); + await transaction.wait(); + + const handle = await this.contract.result16(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); + + it("should add 32 bits", async function (this: AddContext) { + const transaction = await this.contract.add32(); + await transaction.wait(); + + const handle = await this.contract.result32(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); + + it("should add 32 bits (scalar)", async function (this: AddContext) { + const transaction = await this.contract.add32Scalar(); + await transaction.wait(); + + const handle = await this.contract.result32(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); + + it("should add 64 bits", async function (this: AddContext) { + const transaction = await this.contract.add64(); + await transaction.wait(); + + const handle = await this.contract.result64(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); + + it("should add 64 bits (scalar)", async function (this: AddContext) { + const transaction = await this.contract.add64Scalar(); + await transaction.wait(); + + const handle = await this.contract.result64(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); + + it("should add 128 bits", async function (this: AddContext) { + const transaction = await this.contract.add128(); + await transaction.wait(); + + const handle = await this.contract.result128(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); + + it("should add 128 bits (scalar)", async function (this: AddContext) { + const transaction = await this.contract.add128Scalar(); + await transaction.wait(); + + const handle = await this.contract.result128(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); + + it("should add 256 bits", async function (this: AddContext) { + const transaction = await this.contract.add256(); + await transaction.wait(); + + const handle = await this.contract.result256(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); + + it("should add 256 bits (scalar)", async function (this: AddContext) { + const transaction = await this.contract.add256Scalar(); + await transaction.wait(); + + const handle = await this.contract.result256(); + + const result = await decrypt(handle); + expect(result).to.equal(3); + }); +}); diff --git a/e2e/test/tfheOperations/tfheOperations1.ts b/e2e/test/tfheOperations/tfheOperations1.ts deleted file mode 100644 index 8453607..0000000 --- a/e2e/test/tfheOperations/tfheOperations1.ts +++ /dev/null @@ -1,4667 +0,0 @@ -import { expect } from "chai"; -import { ethers } from "hardhat"; - -import type { TFHETestSuite1 } from "../../types/contracts/tests/TFHETestSuite1"; -import { createDecrypt, createInstance } from "../instance"; -import { getSigners, initSigners } from "../signers"; - -async function deployTfheTestFixture1(): Promise { - const signers = await getSigners(); - const admin = signers.alice; - - const contractFactory = await ethers.getContractFactory("TFHETestSuite1"); - const contract = await contractFactory.connect(admin).deploy(); - await contract.waitForDeployment(); - - return contract; -} - -type Decryptor = (handle: bigint) => Promise; - -describe("TFHE operations 1", function () { - let decryptBool: Decryptor, - decrypt4: Decryptor, - decrypt8: Decryptor, - decrypt16: Decryptor, - decrypt32: Decryptor, - decrypt64: Decryptor, - decrypt128: Decryptor; - before(async function () { - await initSigners(); - this.signers = await getSigners(); - - const contract = await deployTfheTestFixture1(); - this.contractAddress = await contract.getAddress(); - this.contract = contract; - - const instance = await createInstance(); - this.instance = instance; - decrypt4 = - decrypt8 = - decrypt16 = - decrypt32 = - decrypt64 = - decrypt128 = - createDecrypt(instance, this.signers.alice, this.contractAddress); - }); - - it('test operator "add" overload (euint4, euint4) => euint4 test 1 (2, 7)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(2n); - input.add4(7n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(9n); - }); - - it('test operator "add" overload (euint4, euint4) => euint4 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(12n); - }); - - it('test operator "add" overload (euint4, euint4) => euint4 test 3 (5, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add4(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(10n); - }); - - it('test operator "add" overload (euint4, euint4) => euint4 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(12n); - }); - - it('test operator "sub" overload (euint4, euint4) => euint4 test 1 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.sub_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(0n); - }); - - it('test operator "sub" overload (euint4, euint4) => euint4 test 2 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.sub_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(4n); - }); - - it('test operator "mul" overload (euint4, euint4) => euint4 test 1 (1, 7)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(1n); - input.add4(7n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(7n); - }); - - it('test operator "mul" overload (euint4, euint4) => euint4 test 2 (3, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add4(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(15n); - }); - - it('test operator "mul" overload (euint4, euint4) => euint4 test 3 (3, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add4(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(9n); - }); - - it('test operator "mul" overload (euint4, euint4) => euint4 test 4 (5, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add4(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(15n); - }); - - it('test operator "and" overload (euint4, euint4) => euint4 test 1 (14, 7)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add4(7n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(6n); - }); - - it('test operator "and" overload (euint4, euint4) => euint4 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(0n); - }); - - it('test operator "and" overload (euint4, euint4) => euint4 test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(8n); - }); - - it('test operator "and" overload (euint4, euint4) => euint4 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(0n); - }); - - it('test operator "or" overload (euint4, euint4) => euint4 test 1 (10, 6)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add4(6n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(14n); - }); - - it('test operator "or" overload (euint4, euint4) => euint4 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(12n); - }); - - it('test operator "or" overload (euint4, euint4) => euint4 test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(8n); - }); - - it('test operator "or" overload (euint4, euint4) => euint4 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(12n); - }); - - it('test operator "xor" overload (euint4, euint4) => euint4 test 1 (9, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add4(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(13n); - }); - - it('test operator "xor" overload (euint4, euint4) => euint4 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(12n); - }); - - it('test operator "xor" overload (euint4, euint4) => euint4 test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(0n); - }); - - it('test operator "xor" overload (euint4, euint4) => euint4 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(12n); - }); - - it('test operator "eq" overload (euint4, euint4) => ebool test 1 (2, 2)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(2n); - input.add4(2n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "eq" overload (euint4, euint4) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "eq" overload (euint4, euint4) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "eq" overload (euint4, euint4) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ne" overload (euint4, euint4) => ebool test 1 (1, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(1n); - input.add4(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ne" overload (euint4, euint4) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ne" overload (euint4, euint4) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ne" overload (euint4, euint4) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ge" overload (euint4, euint4) => ebool test 1 (6, 11)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(6n); - input.add4(11n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ge" overload (euint4, euint4) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ge" overload (euint4, euint4) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ge" overload (euint4, euint4) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "gt" overload (euint4, euint4) => ebool test 1 (12, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add4(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint4) => ebool test 2 (8, 12)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(12n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint4) => ebool test 3 (12, 12)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add4(12n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint4) => ebool test 4 (12, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint4) => ebool test 1 (6, 6)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(6n); - input.add4(6n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint4) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint4) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint4) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "lt" overload (euint4, euint4) => ebool test 1 (2, 6)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(2n); - input.add4(6n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "lt" overload (euint4, euint4) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "lt" overload (euint4, euint4) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "lt" overload (euint4, euint4) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add4(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "min" overload (euint4, euint4) => euint4 test 1 (14, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add4(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(13n); - }); - - it('test operator "min" overload (euint4, euint4) => euint4 test 2 (9, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add4(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(9n); - }); - - it('test operator "min" overload (euint4, euint4) => euint4 test 3 (13, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add4(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(13n); - }); - - it('test operator "min" overload (euint4, euint4) => euint4 test 4 (13, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add4(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(9n); - }); - - it('test operator "max" overload (euint4, euint4) => euint4 test 1 (9, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add4(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(13n); - }); - - it('test operator "max" overload (euint4, euint4) => euint4 test 2 (5, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add4(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(9n); - }); - - it('test operator "max" overload (euint4, euint4) => euint4 test 3 (9, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add4(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(9n); - }); - - it('test operator "max" overload (euint4, euint4) => euint4 test 4 (9, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add4(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint4( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt4(await this.contract.res4()); - expect(res).to.equal(9n); - }); - - it('test operator "add" overload (euint4, euint8) => euint8 test 1 (2, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(2n); - input.add8(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(12n); - }); - - it('test operator "add" overload (euint4, euint8) => euint8 test 2 (5, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add8(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(14n); - }); - - it('test operator "add" overload (euint4, euint8) => euint8 test 3 (5, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add8(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(10n); - }); - - it('test operator "add" overload (euint4, euint8) => euint8 test 4 (9, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add8(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(14n); - }); - - it('test operator "sub" overload (euint4, euint8) => euint8 test 1 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.sub_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(0n); - }); - - it('test operator "sub" overload (euint4, euint8) => euint8 test 2 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.sub_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(4n); - }); - - it('test operator "mul" overload (euint4, euint8) => euint8 test 1 (2, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(2n); - input.add8(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(10n); - }); - - it('test operator "mul" overload (euint4, euint8) => euint8 test 2 (3, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add8(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(15n); - }); - - it('test operator "mul" overload (euint4, euint8) => euint8 test 3 (3, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add8(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(9n); - }); - - it('test operator "mul" overload (euint4, euint8) => euint8 test 4 (5, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add8(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(15n); - }); - - it('test operator "and" overload (euint4, euint8) => euint8 test 1 (10, 116)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add8(116n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(0n); - }); - - it('test operator "and" overload (euint4, euint8) => euint8 test 2 (6, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(6n); - input.add8(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(2n); - }); - - it('test operator "and" overload (euint4, euint8) => euint8 test 3 (10, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add8(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(10n); - }); - - it('test operator "and" overload (euint4, euint8) => euint8 test 4 (10, 6)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add8(6n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(2n); - }); - - it('test operator "or" overload (euint4, euint8) => euint8 test 1 (8, 185)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(185n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(185n); - }); - - it('test operator "or" overload (euint4, euint8) => euint8 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(12n); - }); - - it('test operator "or" overload (euint4, euint8) => euint8 test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(8n); - }); - - it('test operator "or" overload (euint4, euint8) => euint8 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(12n); - }); - - it('test operator "xor" overload (euint4, euint8) => euint8 test 1 (10, 103)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add8(103n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(109n); - }); - - it('test operator "xor" overload (euint4, euint8) => euint8 test 2 (6, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(6n); - input.add8(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(12n); - }); - - it('test operator "xor" overload (euint4, euint8) => euint8 test 3 (10, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add8(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(0n); - }); - - it('test operator "xor" overload (euint4, euint8) => euint8 test 4 (10, 6)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add8(6n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(12n); - }); - - it('test operator "eq" overload (euint4, euint8) => ebool test 1 (14, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add8(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "eq" overload (euint4, euint8) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "eq" overload (euint4, euint8) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "eq" overload (euint4, euint8) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ne" overload (euint4, euint8) => ebool test 1 (8, 128)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(128n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ne" overload (euint4, euint8) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ne" overload (euint4, euint8) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ne" overload (euint4, euint8) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ge" overload (euint4, euint8) => ebool test 1 (3, 79)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add8(79n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ge" overload (euint4, euint8) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ge" overload (euint4, euint8) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ge" overload (euint4, euint8) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "gt" overload (euint4, euint8) => ebool test 1 (1, 59)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(1n); - input.add8(59n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint8) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint8) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint8) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint8) => ebool test 1 (1, 98)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(1n); - input.add8(98n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint8) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint8) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint8) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "lt" overload (euint4, euint8) => ebool test 1 (12, 31)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add8(31n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "lt" overload (euint4, euint8) => ebool test 2 (8, 12)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(12n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "lt" overload (euint4, euint8) => ebool test 3 (12, 12)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add8(12n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "lt" overload (euint4, euint8) => ebool test 4 (12, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "min" overload (euint4, euint8) => euint8 test 1 (5, 254)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add8(254n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(5n); - }); - - it('test operator "min" overload (euint4, euint8) => euint8 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(4n); - }); - - it('test operator "min" overload (euint4, euint8) => euint8 test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(8n); - }); - - it('test operator "min" overload (euint4, euint8) => euint8 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add8(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(4n); - }); - - it('test operator "max" overload (euint4, euint8) => euint8 test 1 (14, 226)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add8(226n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(226n); - }); - - it('test operator "max" overload (euint4, euint8) => euint8 test 2 (10, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add8(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(14n); - }); - - it('test operator "max" overload (euint4, euint8) => euint8 test 3 (14, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add8(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(14n); - }); - - it('test operator "max" overload (euint4, euint8) => euint8 test 4 (14, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add8(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint8( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt8(await this.contract.res8()); - expect(res).to.equal(14n); - }); - - it('test operator "add" overload (euint4, euint16) => euint16 test 1 (2, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(2n); - input.add16(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(11n); - }); - - it('test operator "add" overload (euint4, euint16) => euint16 test 2 (6, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(6n); - input.add16(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(14n); - }); - - it('test operator "add" overload (euint4, euint16) => euint16 test 3 (5, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add16(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(10n); - }); - - it('test operator "add" overload (euint4, euint16) => euint16 test 4 (8, 6)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add16(6n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(14n); - }); - - it('test operator "sub" overload (euint4, euint16) => euint16 test 1 (13, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add16(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.sub_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(0n); - }); - - it('test operator "sub" overload (euint4, euint16) => euint16 test 2 (13, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add16(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.sub_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(4n); - }); - - it('test operator "mul" overload (euint4, euint16) => euint16 test 1 (2, 6)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(2n); - input.add16(6n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(12n); - }); - - it('test operator "mul" overload (euint4, euint16) => euint16 test 2 (3, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add16(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(15n); - }); - - it('test operator "mul" overload (euint4, euint16) => euint16 test 3 (3, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add16(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(9n); - }); - - it('test operator "mul" overload (euint4, euint16) => euint16 test 4 (5, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add16(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(15n); - }); - - it('test operator "and" overload (euint4, euint16) => euint16 test 1 (3, 65312)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add16(65312n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(0n); - }); - - it('test operator "and" overload (euint4, euint16) => euint16 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add16(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(0n); - }); - - it('test operator "and" overload (euint4, euint16) => euint16 test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add16(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(8n); - }); - - it('test operator "and" overload (euint4, euint16) => euint16 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add16(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(0n); - }); - - it('test operator "or" overload (euint4, euint16) => euint16 test 1 (9, 28733)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add16(28733n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(28733n); - }); - - it('test operator "or" overload (euint4, euint16) => euint16 test 2 (5, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add16(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(13n); - }); - - it('test operator "or" overload (euint4, euint16) => euint16 test 3 (9, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add16(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(9n); - }); - - it('test operator "or" overload (euint4, euint16) => euint16 test 4 (9, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add16(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(13n); - }); - - it('test operator "xor" overload (euint4, euint16) => euint16 test 1 (14, 11463)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add16(11463n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(11465n); - }); - - it('test operator "xor" overload (euint4, euint16) => euint16 test 2 (10, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add16(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(4n); - }); - - it('test operator "xor" overload (euint4, euint16) => euint16 test 3 (14, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add16(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(0n); - }); - - it('test operator "xor" overload (euint4, euint16) => euint16 test 4 (14, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add16(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(4n); - }); - - it('test operator "eq" overload (euint4, euint16) => ebool test 1 (11, 40901)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(11n); - input.add16(40901n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "eq" overload (euint4, euint16) => ebool test 2 (7, 11)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(7n); - input.add16(11n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "eq" overload (euint4, euint16) => ebool test 3 (11, 11)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(11n); - input.add16(11n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "eq" overload (euint4, euint16) => ebool test 4 (11, 7)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(11n); - input.add16(7n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ne" overload (euint4, euint16) => ebool test 1 (14, 35568)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add16(35568n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ne" overload (euint4, euint16) => ebool test 2 (10, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add16(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ne" overload (euint4, euint16) => ebool test 3 (14, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add16(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ne" overload (euint4, euint16) => ebool test 4 (14, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add16(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ge" overload (euint4, euint16) => ebool test 1 (1, 53247)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(1n); - input.add16(53247n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ge" overload (euint4, euint16) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add16(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ge" overload (euint4, euint16) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add16(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ge" overload (euint4, euint16) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add16(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "gt" overload (euint4, euint16) => ebool test 1 (13, 43765)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add16(43765n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint16) => ebool test 2 (9, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add16(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint16) => ebool test 3 (13, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add16(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint16) => ebool test 4 (13, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add16(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint16) => ebool test 1 (14, 62468)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add16(62468n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint16) => ebool test 2 (10, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add16(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint16) => ebool test 3 (14, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add16(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint16) => ebool test 4 (14, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add16(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "lt" overload (euint4, euint16) => ebool test 1 (10, 24653)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add16(24653n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "lt" overload (euint4, euint16) => ebool test 2 (6, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(6n); - input.add16(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "lt" overload (euint4, euint16) => ebool test 3 (10, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add16(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "lt" overload (euint4, euint16) => ebool test 4 (10, 6)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add16(6n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "min" overload (euint4, euint16) => euint16 test 1 (1, 50108)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(1n); - input.add16(50108n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(1n); - }); - - it('test operator "min" overload (euint4, euint16) => euint16 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add16(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(4n); - }); - - it('test operator "min" overload (euint4, euint16) => euint16 test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add16(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(8n); - }); - - it('test operator "min" overload (euint4, euint16) => euint16 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add16(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(4n); - }); - - it('test operator "max" overload (euint4, euint16) => euint16 test 1 (14, 33411)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add16(33411n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(33411n); - }); - - it('test operator "max" overload (euint4, euint16) => euint16 test 2 (10, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add16(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(14n); - }); - - it('test operator "max" overload (euint4, euint16) => euint16 test 3 (14, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add16(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(14n); - }); - - it('test operator "max" overload (euint4, euint16) => euint16 test 4 (14, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add16(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint16( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt16(await this.contract.res16()); - expect(res).to.equal(14n); - }); - - it('test operator "add" overload (euint4, euint32) => euint32 test 1 (2, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(2n); - input.add32(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(11n); - }); - - it('test operator "add" overload (euint4, euint32) => euint32 test 2 (4, 6)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add32(6n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(10n); - }); - - it('test operator "add" overload (euint4, euint32) => euint32 test 3 (6, 6)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(6n); - input.add32(6n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(12n); - }); - - it('test operator "add" overload (euint4, euint32) => euint32 test 4 (6, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(6n); - input.add32(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(10n); - }); - - it('test operator "sub" overload (euint4, euint32) => euint32 test 1 (13, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add32(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.sub_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(0n); - }); - - it('test operator "sub" overload (euint4, euint32) => euint32 test 2 (13, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add32(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.sub_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(4n); - }); - - it('test operator "mul" overload (euint4, euint32) => euint32 test 1 (2, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(2n); - input.add32(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(10n); - }); - - it('test operator "mul" overload (euint4, euint32) => euint32 test 2 (3, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add32(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(12n); - }); - - it('test operator "mul" overload (euint4, euint32) => euint32 test 3 (3, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add32(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(9n); - }); - - it('test operator "mul" overload (euint4, euint32) => euint32 test 4 (4, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add32(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(12n); - }); - - it('test operator "and" overload (euint4, euint32) => euint32 test 1 (6, 3666388192)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(6n); - input.add32(3666388192n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(0n); - }); - - it('test operator "and" overload (euint4, euint32) => euint32 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(0n); - }); - - it('test operator "and" overload (euint4, euint32) => euint32 test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(8n); - }); - - it('test operator "and" overload (euint4, euint32) => euint32 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(0n); - }); - - it('test operator "or" overload (euint4, euint32) => euint32 test 1 (13, 371092847)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add32(371092847n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(371092847n); - }); - - it('test operator "or" overload (euint4, euint32) => euint32 test 2 (9, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add32(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(13n); - }); - - it('test operator "or" overload (euint4, euint32) => euint32 test 3 (13, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add32(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(13n); - }); - - it('test operator "or" overload (euint4, euint32) => euint32 test 4 (13, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add32(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(13n); - }); - - it('test operator "xor" overload (euint4, euint32) => euint32 test 1 (1, 1939413163)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(1n); - input.add32(1939413163n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(1939413162n); - }); - - it('test operator "xor" overload (euint4, euint32) => euint32 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(12n); - }); - - it('test operator "xor" overload (euint4, euint32) => euint32 test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(0n); - }); - - it('test operator "xor" overload (euint4, euint32) => euint32 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(12n); - }); - - it('test operator "eq" overload (euint4, euint32) => ebool test 1 (9, 1089894566)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add32(1089894566n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "eq" overload (euint4, euint32) => ebool test 2 (5, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add32(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "eq" overload (euint4, euint32) => ebool test 3 (9, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add32(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "eq" overload (euint4, euint32) => ebool test 4 (9, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add32(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ne" overload (euint4, euint32) => ebool test 1 (5, 2818677977)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add32(2818677977n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ne" overload (euint4, euint32) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ne" overload (euint4, euint32) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ne" overload (euint4, euint32) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ge" overload (euint4, euint32) => ebool test 1 (1, 2262617776)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(1n); - input.add32(2262617776n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ge" overload (euint4, euint32) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ge" overload (euint4, euint32) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ge" overload (euint4, euint32) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "gt" overload (euint4, euint32) => ebool test 1 (8, 1791761269)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(1791761269n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint32) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint32) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint32) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint32) => ebool test 1 (4, 1782114748)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add32(1782114748n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint32) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint32) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint32) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "lt" overload (euint4, euint32) => ebool test 1 (1, 3154883490)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(1n); - input.add32(3154883490n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "lt" overload (euint4, euint32) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "lt" overload (euint4, euint32) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "lt" overload (euint4, euint32) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "min" overload (euint4, euint32) => euint32 test 1 (9, 2831156674)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add32(2831156674n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(9n); - }); - - it('test operator "min" overload (euint4, euint32) => euint32 test 2 (5, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add32(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(5n); - }); - - it('test operator "min" overload (euint4, euint32) => euint32 test 3 (9, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add32(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(9n); - }); - - it('test operator "min" overload (euint4, euint32) => euint32 test 4 (9, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add32(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(5n); - }); - - it('test operator "max" overload (euint4, euint32) => euint32 test 1 (12, 623453237)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add32(623453237n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(623453237n); - }); - - it('test operator "max" overload (euint4, euint32) => euint32 test 2 (8, 12)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add32(12n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(12n); - }); - - it('test operator "max" overload (euint4, euint32) => euint32 test 3 (12, 12)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add32(12n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(12n); - }); - - it('test operator "max" overload (euint4, euint32) => euint32 test 4 (12, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add32(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint32( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt32(await this.contract.res32()); - expect(res).to.equal(12n); - }); - - it('test operator "add" overload (euint4, euint64) => euint64 test 1 (1, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(1n); - input.add64(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(10n); - }); - - it('test operator "add" overload (euint4, euint64) => euint64 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add64(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(12n); - }); - - it('test operator "add" overload (euint4, euint64) => euint64 test 3 (5, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add64(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(10n); - }); - - it('test operator "add" overload (euint4, euint64) => euint64 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add64(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(12n); - }); - - it('test operator "sub" overload (euint4, euint64) => euint64 test 1 (12, 12)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add64(12n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.sub_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(0n); - }); - - it('test operator "sub" overload (euint4, euint64) => euint64 test 2 (12, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add64(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.sub_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(4n); - }); - - it('test operator "mul" overload (euint4, euint64) => euint64 test 1 (2, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(2n); - input.add64(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(10n); - }); - - it('test operator "mul" overload (euint4, euint64) => euint64 test 2 (3, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add64(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(15n); - }); - - it('test operator "mul" overload (euint4, euint64) => euint64 test 3 (3, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add64(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(9n); - }); - - it('test operator "mul" overload (euint4, euint64) => euint64 test 4 (5, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add64(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(15n); - }); - - it('test operator "and" overload (euint4, euint64) => euint64 test 1 (6, 18438764365497303935)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(6n); - input.add64(18438764365497303935n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(6n); - }); - - it('test operator "and" overload (euint4, euint64) => euint64 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add64(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(0n); - }); - - it('test operator "and" overload (euint4, euint64) => euint64 test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add64(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(8n); - }); - - it('test operator "and" overload (euint4, euint64) => euint64 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add64(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(0n); - }); - - it('test operator "or" overload (euint4, euint64) => euint64 test 1 (14, 18440698678220010551)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add64(18440698678220010551n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(18440698678220010559n); - }); - - it('test operator "or" overload (euint4, euint64) => euint64 test 2 (10, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add64(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(14n); - }); - - it('test operator "or" overload (euint4, euint64) => euint64 test 3 (14, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add64(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(14n); - }); - - it('test operator "or" overload (euint4, euint64) => euint64 test 4 (14, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add64(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(14n); - }); - - it('test operator "xor" overload (euint4, euint64) => euint64 test 1 (2, 18438078325844207475)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(2n); - input.add64(18438078325844207475n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(18438078325844207473n); - }); - - it('test operator "xor" overload (euint4, euint64) => euint64 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add64(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(12n); - }); - - it('test operator "xor" overload (euint4, euint64) => euint64 test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add64(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(0n); - }); - - it('test operator "xor" overload (euint4, euint64) => euint64 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add64(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(12n); - }); - - it('test operator "eq" overload (euint4, euint64) => ebool test 1 (3, 18443050121569259433)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add64(18443050121569259433n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "eq" overload (euint4, euint64) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add64(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "eq" overload (euint4, euint64) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add64(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "eq" overload (euint4, euint64) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add64(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ne" overload (euint4, euint64) => ebool test 1 (7, 18446555094221865045)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(7n); - input.add64(18446555094221865045n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ne" overload (euint4, euint64) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add64(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ne" overload (euint4, euint64) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add64(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ne" overload (euint4, euint64) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add64(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ge" overload (euint4, euint64) => ebool test 1 (12, 18446558548033148537)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add64(18446558548033148537n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ge" overload (euint4, euint64) => ebool test 2 (8, 12)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add64(12n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ge" overload (euint4, euint64) => ebool test 3 (12, 12)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add64(12n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ge" overload (euint4, euint64) => ebool test 4 (12, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add64(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "gt" overload (euint4, euint64) => ebool test 1 (11, 18445624350177245281)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(11n); - input.add64(18445624350177245281n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint64) => ebool test 2 (7, 11)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(7n); - input.add64(11n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint64) => ebool test 3 (11, 11)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(11n); - input.add64(11n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint64) => ebool test 4 (11, 7)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(11n); - input.add64(7n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint64) => ebool test 1 (14, 18446414069240547725)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add64(18446414069240547725n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint64) => ebool test 2 (10, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add64(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint64) => ebool test 3 (14, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add64(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "le" overload (euint4, euint64) => ebool test 4 (14, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add64(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.le_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "lt" overload (euint4, euint64) => ebool test 1 (13, 18441885120383916401)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add64(18441885120383916401n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "lt" overload (euint4, euint64) => ebool test 2 (9, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add64(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "lt" overload (euint4, euint64) => ebool test 3 (13, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add64(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "lt" overload (euint4, euint64) => ebool test 4 (13, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add64(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.lt_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "min" overload (euint4, euint64) => euint64 test 1 (12, 18440035039683442233)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add64(18440035039683442233n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(12n); - }); - - it('test operator "min" overload (euint4, euint64) => euint64 test 2 (8, 12)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add64(12n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(8n); - }); - - it('test operator "min" overload (euint4, euint64) => euint64 test 3 (12, 12)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add64(12n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(12n); - }); - - it('test operator "min" overload (euint4, euint64) => euint64 test 4 (12, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(12n); - input.add64(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.min_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(8n); - }); - - it('test operator "max" overload (euint4, euint64) => euint64 test 1 (9, 18439762941056895609)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add64(18439762941056895609n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(18439762941056895609n); - }); - - it('test operator "max" overload (euint4, euint64) => euint64 test 2 (5, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add64(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(9n); - }); - - it('test operator "max" overload (euint4, euint64) => euint64 test 3 (9, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add64(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(9n); - }); - - it('test operator "max" overload (euint4, euint64) => euint64 test 4 (9, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add64(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.max_euint4_euint64( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt64(await this.contract.res64()); - expect(res).to.equal(9n); - }); - - it('test operator "add" overload (euint4, euint128) => euint128 test 1 (2, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(2n); - input.add128(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(11n); - }); - - it('test operator "add" overload (euint4, euint128) => euint128 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add128(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(12n); - }); - - it('test operator "add" overload (euint4, euint128) => euint128 test 3 (5, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(5n); - input.add128(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(10n); - }); - - it('test operator "add" overload (euint4, euint128) => euint128 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add128(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.add_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(12n); - }); - - it('test operator "sub" overload (euint4, euint128) => euint128 test 1 (13, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add128(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.sub_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(0n); - }); - - it('test operator "sub" overload (euint4, euint128) => euint128 test 2 (13, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add128(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.sub_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(4n); - }); - - it('test operator "mul" overload (euint4, euint128) => euint128 test 1 (2, 5)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(2n); - input.add128(5n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(10n); - }); - - it('test operator "mul" overload (euint4, euint128) => euint128 test 2 (3, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add128(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(9n); - }); - - it('test operator "mul" overload (euint4, euint128) => euint128 test 3 (3, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add128(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(9n); - }); - - it('test operator "mul" overload (euint4, euint128) => euint128 test 4 (3, 3)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add128(3n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.mul_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(9n); - }); - - it('test operator "and" overload (euint4, euint128) => euint128 test 1 (8, 340282366920938463463367802109078157213)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add128(340282366920938463463367802109078157213n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(8n); - }); - - it('test operator "and" overload (euint4, euint128) => euint128 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add128(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(0n); - }); - - it('test operator "and" overload (euint4, euint128) => euint128 test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add128(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(8n); - }); - - it('test operator "and" overload (euint4, euint128) => euint128 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add128(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.and_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(0n); - }); - - it('test operator "or" overload (euint4, euint128) => euint128 test 1 (4, 340282366920938463463366343089484611447)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add128(340282366920938463463366343089484611447n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(340282366920938463463366343089484611447n); - }); - - it('test operator "or" overload (euint4, euint128) => euint128 test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add128(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(12n); - }); - - it('test operator "or" overload (euint4, euint128) => euint128 test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add128(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(8n); - }); - - it('test operator "or" overload (euint4, euint128) => euint128 test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add128(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.or_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(12n); - }); - - it('test operator "xor" overload (euint4, euint128) => euint128 test 1 (13, 340282366920938463463366123999290070707)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add128(340282366920938463463366123999290070707n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(340282366920938463463366123999290070718n); - }); - - it('test operator "xor" overload (euint4, euint128) => euint128 test 2 (9, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add128(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(4n); - }); - - it('test operator "xor" overload (euint4, euint128) => euint128 test 3 (13, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add128(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(0n); - }); - - it('test operator "xor" overload (euint4, euint128) => euint128 test 4 (13, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add128(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.xor_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decrypt128(await this.contract.res128()); - expect(res).to.equal(4n); - }); - - it('test operator "eq" overload (euint4, euint128) => ebool test 1 (10, 340282366920938463463370073243865312497)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add128(340282366920938463463370073243865312497n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "eq" overload (euint4, euint128) => ebool test 2 (6, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(6n); - input.add128(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "eq" overload (euint4, euint128) => ebool test 3 (10, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add128(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "eq" overload (euint4, euint128) => ebool test 4 (10, 6)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add128(6n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.eq_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ne" overload (euint4, euint128) => ebool test 1 (13, 340282366920938463463368725666766226609)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add128(340282366920938463463368725666766226609n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ne" overload (euint4, euint128) => ebool test 2 (9, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(9n); - input.add128(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ne" overload (euint4, euint128) => ebool test 3 (13, 13)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add128(13n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ne" overload (euint4, euint128) => ebool test 4 (13, 9)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(13n); - input.add128(9n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ne_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ge" overload (euint4, euint128) => ebool test 1 (3, 340282366920938463463374467311851431135)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(3n); - input.add128(340282366920938463463374467311851431135n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ge" overload (euint4, euint128) => ebool test 2 (4, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(4n); - input.add128(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "ge" overload (euint4, euint128) => ebool test 3 (8, 8)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add128(8n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "ge" overload (euint4, euint128) => ebool test 4 (8, 4)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(8n); - input.add128(4n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.ge_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); - - it('test operator "gt" overload (euint4, euint128) => ebool test 1 (14, 340282366920938463463369565306924367885)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add128(340282366920938463463369565306924367885n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint128) => ebool test 2 (10, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(10n); - input.add128(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint128) => ebool test 3 (14, 14)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add128(14n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(false); - }); - - it('test operator "gt" overload (euint4, euint128) => ebool test 4 (14, 10)', async function () { - const input = this.instance.createEncryptedInput(this.contractAddress, this.signers.alice.address); - input.add4(14n); - input.add128(10n); - const encryptedAmount = await input.encrypt(); - const tx = await this.contract.gt_euint4_euint128( - encryptedAmount.handles[0], - encryptedAmount.handles[1], - encryptedAmount.inputProof, - ); - await tx.wait(); - const res = await decryptBool(await this.contract.resb()); - expect(res).to.equal(true); - }); -}); diff --git a/e2e/test/types.ts b/e2e/test/types.ts index 6afcffe..91396ff 100644 --- a/e2e/test/types.ts +++ b/e2e/test/types.ts @@ -1,4 +1,5 @@ -import type { FhevmInstance } from "fhevmjs"; +import type { BaseContract } from "ethers"; +import type { FhevmInstance } from "fhevmjs/node"; import type { Signers } from "./signers"; @@ -6,7 +7,8 @@ declare module "mocha" { export interface Context { signers: Signers; contractAddress: string; - instances: FhevmInstances; + fhevm: FhevmInstance; + contract: any; } } diff --git a/e2e/test/utils.ts b/e2e/test/utils.ts index 5af310b..592504a 100644 --- a/e2e/test/utils.ts +++ b/e2e/test/utils.ts @@ -1,4 +1,3 @@ -import { toBufferLE } from "bigint-buffer"; import { ContractMethodArgs, Typed } from "ethers"; import { ethers, network } from "hardhat"; @@ -90,8 +89,3 @@ export const mineNBlocks = async (n: number) => { await ethers.provider.send("evm_mine"); } }; - -export const bigIntToBytes = (value: bigint) => { - const byteArrayLength = Math.ceil(value.toString(2).length / 8); - return new Uint8Array(toBufferLE(value, byteArrayLength)); -}; From 0061f020f771da2c74bb583a12e4e245ce308194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Fri, 22 Nov 2024 17:44:10 +0100 Subject: [PATCH 10/21] test: add more tests for async decrypt --- e2e/contracts/AsyncDecrypt.sol | 621 +++++++++++++++++++++++++++++++ e2e/contracts/E2EFHEVMConfig.sol | 4 + e2e/contracts/Increment.sol | 22 -- e2e/package.json | 1 + e2e/pnpm-lock.yaml | 3 + e2e/test/gateway/decrypt.ts | 359 ++++++++++++++++++ e2e/test/utils.ts | 13 + 7 files changed, 1001 insertions(+), 22 deletions(-) create mode 100644 e2e/contracts/AsyncDecrypt.sol delete mode 100644 e2e/contracts/Increment.sol create mode 100644 e2e/test/gateway/decrypt.ts diff --git a/e2e/contracts/AsyncDecrypt.sol b/e2e/contracts/AsyncDecrypt.sol new file mode 100644 index 0000000..24c9472 --- /dev/null +++ b/e2e/contracts/AsyncDecrypt.sol @@ -0,0 +1,621 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear + +pragma solidity ^0.8.24; + +import "fhevm/lib/TFHE.sol"; +import "fhevm/gateway/GatewayCaller.sol"; +import { E2EFHEVMConfig } from "./E2EFHEVMConfig.sol"; + +/// @notice Contract for testing asynchronous decryption using the Gateway +contract AsyncDecrypt is GatewayCaller, E2EFHEVMConfig { + /// @dev Encrypted state variables + ebool xBool; + euint4 xUint4; + euint8 xUint8; + euint16 xUint16; + euint32 xUint32; + euint64 xUint64; + euint64 xUint64_2; + euint64 xUint64_3; + euint128 xUint128; + eaddress xAddress; + eaddress xAddress2; + euint256 xUint256; + + /// @dev Decrypted state variables + bool public yBool; + uint8 public yUint4; + uint8 public yUint8; + uint16 public yUint16; + uint32 public yUint32; + uint64 public yUint64; + uint64 public yUint64_2; + uint64 public yUint64_3; + uint128 public yUint128; + address public yAddress; + address public yAddress2; + uint256 public yUint256; + bytes public yBytes64; + bytes public yBytes128; + bytes public yBytes256; + + /// @dev Tracks the latest decryption request ID + uint256 public latestRequestID; + + /// @notice Constructor to initialize the contract and set up encrypted values + constructor() { + /// @dev Initialize encrypted variables with sample values + xBool = TFHE.asEbool(true); + TFHE.allowThis(xBool); + xUint4 = TFHE.asEuint4(4); + TFHE.allowThis(xUint4); + xUint8 = TFHE.asEuint8(42); + TFHE.allowThis(xUint8); + xUint16 = TFHE.asEuint16(16); + TFHE.allowThis(xUint16); + xUint32 = TFHE.asEuint32(32); + TFHE.allowThis(xUint32); + xUint64 = TFHE.asEuint64(18446744073709551600); + TFHE.allowThis(xUint64); + xUint64_2 = TFHE.asEuint64(76575465786); + TFHE.allowThis(xUint64_2); + xUint64_3 = TFHE.asEuint64(6400); + TFHE.allowThis(xUint64_3); + xUint128 = TFHE.asEuint128(1267650600228229401496703205443); + TFHE.allowThis(xUint128); + xUint256 = TFHE.asEuint256(27606985387162255149739023449108101809804435888681546220650096895197251); + TFHE.allowThis(xUint256); + xAddress = TFHE.asEaddress(0x8ba1f109551bD432803012645Ac136ddd64DBA72); + TFHE.allowThis(xAddress); + xAddress2 = TFHE.asEaddress(0xf48b8840387ba3809DAE990c930F3b4766A86ca3); + TFHE.allowThis(xAddress2); + } + + /// @notice Function to request decryption of a boolean value with an infinite loop in the callback + function requestBoolInfinite() public { + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(xBool); + Gateway.requestDecryption(cts, this.callbackBoolInfinite.selector, 0, block.timestamp + 100, false); + } + + /// @notice Callback function for the infinite loop decryption request (WARNING: This function will never complete) + function callbackBoolInfinite(uint256 /*requestID*/, bool decryptedInput) public onlyGateway returns (bool) { + uint256 i = 0; + while (true) { + i++; + } + yBool = decryptedInput; + return yBool; + } + + /// @notice Function to request decryption with an excessive delay (should revert) + function requestBoolAboveDelay() public { + /// @dev This should revert due to the excessive delay + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(xBool); + Gateway.requestDecryption(cts, this.callbackBool.selector, 0, block.timestamp + 2 days, false); + } + + /// @notice Request decryption of a boolean value + function requestBool() public { + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(xBool); + /// @dev Request decryption with a 100-second deadline and non-trustless mode + Gateway.requestDecryption(cts, this.callbackBool.selector, 0, block.timestamp + 100, false); + } + + /// @notice Request decryption of a boolean value in trustless mode + function requestBoolTrustless() public { + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(xBool); + /// @dev Request decryption with a 100-second deadline and trustless mode (true) + uint256 requestID = Gateway.requestDecryption( + cts, + this.callbackBoolTrustless.selector, + 0, + block.timestamp + 100, + true + ); + latestRequestID = requestID; + /// @dev Save the requested handles for later verification + saveRequestedHandles(requestID, cts); + } + + /// @notice Attempt to request decryption of a fake boolean value (should revert) + function requestFakeBool() public { + uint256[] memory cts = new uint256[](1); + cts[0] = uint256(0x4200000000000000000000000000000000000000000000000000000000000000); + /// @dev This should revert because the previous ebool is not honestly obtained + Gateway.requestDecryption(cts, this.callbackBool.selector, 0, block.timestamp + 100, false); + } + + /// @notice Callback function for non-trustless boolean decryption + function callbackBool(uint256, bool decryptedInput) public onlyGateway returns (bool) { + yBool = decryptedInput; + return yBool; + } + + /// @notice Callback function for trustless boolean decryption + function callbackBoolTrustless( + uint256 requestID, + bool decryptedInput, + bytes[] memory signatures + ) public onlyGateway returns (bool) { + /// @dev Verify that the requestID matches the latest request + require(latestRequestID == requestID, "wrong requestID passed by Gateway"); + /// @dev Load the previously saved handles for verification + uint256[] memory requestedHandles = loadRequestedHandles(latestRequestID); + /// @dev Verify the signatures provided by the KMS (Key Management Service) + bool isKMSVerified = Gateway.verifySignatures(requestedHandles, signatures); + require(isKMSVerified, "KMS did not verify this decryption result"); + /// @dev If verification passes, store the decrypted value + yBool = decryptedInput; + return yBool; + } + + /// @notice Request decryption of a 4-bit unsigned integer + function requestUint4() public { + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(xUint4); + Gateway.requestDecryption(cts, this.callbackUint4.selector, 0, block.timestamp + 100, false); + } + + /// @notice Attempt to request decryption of a fake 4-bit unsigned integer (should revert) + function requestFakeUint4() public { + uint256[] memory cts = new uint256[](1); + cts[0] = uint256(0x4200000000000000000000000000000000000000000000000000000000000100); + /// @dev This should revert because the previous handle is not honestly obtained + Gateway.requestDecryption(cts, this.callbackUint4.selector, 0, block.timestamp + 100, false); + } + + /// @notice Callback function for 4-bit unsigned integer decryption + /// @param decryptedInput The decrypted 4-bit unsigned integer + /// @return The decrypted value + function callbackUint4(uint256, uint8 decryptedInput) public onlyGateway returns (uint8) { + yUint4 = decryptedInput; + return decryptedInput; + } + + /// @notice Request decryption of an 8-bit unsigned integer + function requestUint8() public { + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(xUint8); + Gateway.requestDecryption(cts, this.callbackUint8.selector, 0, block.timestamp + 100, false); + } + + /// @notice Attempt to request decryption of a fake 8-bit unsigned integer (should revert) + function requestFakeUint8() public { + uint256[] memory cts = new uint256[](1); + cts[0] = uint256(0x4200000000000000000000000000000000000000000000000000000000000200); + /// @dev This should revert because the previous handle is not honestly obtained + Gateway.requestDecryption(cts, this.callbackUint8.selector, 0, block.timestamp + 100, false); + } + + /// @notice Callback function for 8-bit unsigned integer decryption + /// @param decryptedInput The decrypted 8-bit unsigned integer + /// @return The decrypted value + function callbackUint8(uint256, uint8 decryptedInput) public onlyGateway returns (uint8) { + yUint8 = decryptedInput; + return decryptedInput; + } + + /// @notice Request decryption of a 16-bit unsigned integer + function requestUint16() public { + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(xUint16); + Gateway.requestDecryption(cts, this.callbackUint16.selector, 0, block.timestamp + 100, false); + } + + /// @notice Attempt to request decryption of a fake 16-bit unsigned integer (should revert) + function requestFakeUint16() public { + uint256[] memory cts = new uint256[](1); + cts[0] = uint256(0x4200000000000000000000000000000000000000000000000000000000000300); + /// @dev This should revert because the previous handle is not honestly obtained + Gateway.requestDecryption(cts, this.callbackUint16.selector, 0, block.timestamp + 100, false); + } + + /// @notice Callback function for 16-bit unsigned integer decryption + /// @param decryptedInput The decrypted 16-bit unsigned integer + /// @return The decrypted value + function callbackUint16(uint256, uint16 decryptedInput) public onlyGateway returns (uint16) { + yUint16 = decryptedInput; + return decryptedInput; + } + + /// @notice Request decryption of a 32-bit unsigned integer with additional inputs + /// @param input1 First additional input + /// @param input2 Second additional input + function requestUint32(uint32 input1, uint32 input2) public { + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(xUint32); + uint256 requestID = Gateway.requestDecryption( + cts, + this.callbackUint32.selector, + 0, + block.timestamp + 100, + false + ); + addParamsUint256(requestID, input1); + addParamsUint256(requestID, input2); + } + + /// @notice Attempt to request decryption of a fake 32-bit unsigned integer (should revert) + function requestFakeUint32() public { + uint256[] memory cts = new uint256[](1); + cts[0] = uint256(0x4200000000000000000000000000000000000000000000000000000000000400); + /// @dev This should revert because the previous handle is not honestly obtained + Gateway.requestDecryption(cts, this.callbackUint32.selector, 0, block.timestamp + 100, false); + } + + /// @notice Callback function for 32-bit unsigned integer decryption + /// @param requestID The ID of the decryption request + /// @param decryptedInput The decrypted 32-bit unsigned integer + /// @return The result of the computation + function callbackUint32(uint256 requestID, uint32 decryptedInput) public onlyGateway returns (uint32) { + uint256[] memory params = getParamsUint256(requestID); + unchecked { + uint32 result = uint32(params[0]) + uint32(params[1]) + decryptedInput; + yUint32 = result; + return result; + } + } + + /// @notice Request decryption of a 64-bit unsigned integer + function requestUint64() public { + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(xUint64); + Gateway.requestDecryption(cts, this.callbackUint64.selector, 0, block.timestamp + 100, false); + } + + /// @notice Attempt to request decryption of a fake 64-bit unsigned integer (should revert) + function requestFakeUint64() public { + uint256[] memory cts = new uint256[](1); + cts[0] = uint256(0x4200000000000000000000000000000000000000000000000000000000000500); + /// @dev This should revert because the previous handle is not honestly obtained + Gateway.requestDecryption(cts, this.callbackUint64.selector, 0, block.timestamp + 100, false); + } + + /// @notice Request decryption of a non-trivial 64-bit unsigned integer + /// @param inputHandle The input handle for the encrypted value + /// @param inputProof The input proof for the encrypted value + function requestUint64NonTrivial(einput inputHandle, bytes calldata inputProof) public { + euint64 inputNonTrivial = TFHE.asEuint64(inputHandle, inputProof); + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(inputNonTrivial); + Gateway.requestDecryption(cts, this.callbackUint64.selector, 0, block.timestamp + 100, false); + } + + /// @notice Callback function for 64-bit unsigned integer decryption + /// @param decryptedInput The decrypted 64-bit unsigned integer + /// @return The decrypted value + function callbackUint64(uint256, uint64 decryptedInput) public onlyGateway returns (uint64) { + yUint64 = decryptedInput; + return decryptedInput; + } + + function requestUint128() public { + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(xUint128); + Gateway.requestDecryption(cts, this.callbackUint128.selector, 0, block.timestamp + 100, false); + } + + function requestUint128NonTrivial(einput inputHandle, bytes calldata inputProof) public { + euint128 inputNonTrivial = TFHE.asEuint128(inputHandle, inputProof); + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(inputNonTrivial); + Gateway.requestDecryption(cts, this.callbackUint128.selector, 0, block.timestamp + 100, false); + } + + function callbackUint128(uint256, uint128 decryptedInput) public onlyGateway returns (uint128) { + yUint128 = decryptedInput; + return decryptedInput; + } + + function requestUint256() public { + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(xUint256); + Gateway.requestDecryption(cts, this.callbackUint256.selector, 0, block.timestamp + 100, false); + } + + function requestUint256NonTrivial(einput inputHandle, bytes calldata inputProof) public { + euint256 inputNonTrivial = TFHE.asEuint256(inputHandle, inputProof); + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(inputNonTrivial); + Gateway.requestDecryption(cts, this.callbackUint256.selector, 0, block.timestamp + 100, false); + } + + function callbackUint256(uint256, uint256 decryptedInput) public onlyGateway returns (uint256) { + yUint256 = decryptedInput; + return decryptedInput; + } + + function requestEbytes64NonTrivial(einput inputHandle, bytes calldata inputProof) public { + ebytes64 inputNonTrivial = TFHE.asEbytes64(inputHandle, inputProof); + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(inputNonTrivial); + Gateway.requestDecryption(cts, this.callbackBytes64.selector, 0, block.timestamp + 100, false); + } + + function requestEbytes64Trivial(bytes calldata value) public { + ebytes64 inputTrivial = TFHE.asEbytes64(TFHE.padToBytes64(value)); + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(inputTrivial); + Gateway.requestDecryption(cts, this.callbackBytes64.selector, 0, block.timestamp + 100, false); + } + + function callbackBytes64(uint256, bytes calldata decryptedInput) public onlyGateway returns (bytes memory) { + yBytes64 = decryptedInput; + return decryptedInput; + } + + function requestEbytes128NonTrivial(einput inputHandle, bytes calldata inputProof) public { + ebytes128 inputNonTrivial = TFHE.asEbytes128(inputHandle, inputProof); + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(inputNonTrivial); + Gateway.requestDecryption(cts, this.callbackBytes128.selector, 0, block.timestamp + 100, false); + } + + function requestEbytes128Trivial(bytes calldata value) public { + ebytes128 inputTrivial = TFHE.asEbytes128(TFHE.padToBytes128(value)); + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(inputTrivial); + Gateway.requestDecryption(cts, this.callbackBytes128.selector, 0, block.timestamp + 100, false); + } + + function callbackBytes128(uint256, bytes calldata decryptedInput) public onlyGateway returns (bytes memory) { + yBytes128 = decryptedInput; + return decryptedInput; + } + + function requestEbytes256Trivial(bytes calldata value) public { + ebytes256 inputTrivial = TFHE.asEbytes256(TFHE.padToBytes256(value)); + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(inputTrivial); + Gateway.requestDecryption(cts, this.callbackBytes256.selector, 0, block.timestamp + 100, false); + } + + function requestEbytes256NonTrivial(einput inputHandle, bytes calldata inputProof) public { + ebytes256 inputNonTrivial = TFHE.asEbytes256(inputHandle, inputProof); + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(inputNonTrivial); + Gateway.requestDecryption(cts, this.callbackBytes256.selector, 0, block.timestamp + 100, false); + } + + /// @notice Callback function for 256-bit encrypted bytes decryption + /// @param decryptedInput The decrypted 256-bit bytes + /// @return The decrypted value + function callbackBytes256(uint256, bytes calldata decryptedInput) public onlyGateway returns (bytes memory) { + yBytes256 = decryptedInput; + return decryptedInput; + } + + /// @notice Request decryption of an encrypted address + function requestAddress() public { + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(xAddress); + Gateway.requestDecryption(cts, this.callbackAddress.selector, 0, block.timestamp + 100, false); + } + + /// @notice Request decryption of multiple encrypted addresses + function requestSeveralAddresses() public { + uint256[] memory cts = new uint256[](2); + cts[0] = Gateway.toUint256(xAddress); + cts[1] = Gateway.toUint256(xAddress2); + Gateway.requestDecryption(cts, this.callbackAddresses.selector, 0, block.timestamp + 100, false); + } + + /// @notice Callback function for multiple address decryption + /// @param decryptedInput1 The first decrypted address + /// @param decryptedInput2 The second decrypted address + /// @return The first decrypted address + function callbackAddresses( + uint256 /*requestID*/, + address decryptedInput1, + address decryptedInput2 + ) public onlyGateway returns (address) { + yAddress = decryptedInput1; + yAddress2 = decryptedInput2; + return decryptedInput1; + } + + /// @notice Attempt to request decryption of a fake address (should revert) + function requestFakeAddress() public { + uint256[] memory cts = new uint256[](1); + cts[0] = uint256(0x4200000000000000000000000000000000000000000000000000000000000700); + /// @dev This should revert because the previous handle is not honestly obtained + Gateway.requestDecryption(cts, this.callbackAddress.selector, 0, block.timestamp + 100, false); + } + + /// @notice Callback function for address decryption + /// @param decryptedInput The decrypted address + /// @return The decrypted address + function callbackAddress(uint256, address decryptedInput) public onlyGateway returns (address) { + yAddress = decryptedInput; + return decryptedInput; + } + + /// @notice Request decryption of multiple encrypted data types + /// @dev This function demonstrates how to request decryption for various encrypted data types in a single call + /// @param input1 First additional input parameter for the callback function + /// @param input2 Second additional input parameter for the callback function + function requestMixed(uint32 input1, uint32 input2) public { + uint256[] memory cts = new uint256[](10); + cts[0] = Gateway.toUint256(xBool); + cts[1] = Gateway.toUint256(xBool); + cts[2] = Gateway.toUint256(xUint4); + cts[3] = Gateway.toUint256(xUint8); + cts[4] = Gateway.toUint256(xUint16); + cts[5] = Gateway.toUint256(xUint32); + cts[6] = Gateway.toUint256(xUint64); + cts[7] = Gateway.toUint256(xUint64); + cts[8] = Gateway.toUint256(xUint64); + cts[9] = Gateway.toUint256(xAddress); + uint256 requestID = Gateway.requestDecryption( + cts, + this.callbackMixed.selector, + 0, + block.timestamp + 100, + false + ); + addParamsUint256(requestID, input1); + addParamsUint256(requestID, input2); + } + + /// @notice Callback function for mixed data type decryption + /// @dev Processes the decrypted values and performs some basic checks + /// @param requestID The ID of the decryption request + /// @param decBool_1 First decrypted boolean + /// @param decBool_2 Second decrypted boolean + /// @param decUint4 Decrypted 4-bit unsigned integer + /// @param decUint8 Decrypted 8-bit unsigned integer + /// @param decUint16 Decrypted 16-bit unsigned integer + /// @param decUint32 Decrypted 32-bit unsigned integer + /// @param decUint64_1 First decrypted 64-bit unsigned integer + /// @param decUint64_2 Second decrypted 64-bit unsigned integer + /// @param decUint64_3 Third decrypted 64-bit unsigned integer + /// @param decAddress Decrypted address + /// @return The decrypted 4-bit unsigned integer + function callbackMixed( + uint256 requestID, + bool decBool_1, + bool decBool_2, + uint8 decUint4, + uint8 decUint8, + uint16 decUint16, + uint32 decUint32, + uint64 decUint64_1, + uint64 decUint64_2, + uint64 decUint64_3, + address decAddress + ) public onlyGateway returns (uint8) { + yBool = decBool_1; + require(decBool_1 == decBool_2, "Wrong decryption"); + yUint4 = decUint4; + yUint8 = decUint8; + yUint16 = decUint16; + uint256[] memory params = getParamsUint256(requestID); + unchecked { + uint32 result = uint32(params[0]) + uint32(params[1]) + decUint32; + yUint32 = result; + } + yUint64 = decUint64_1; + require(decUint64_1 == decUint64_2 && decUint64_2 == decUint64_3, "Wrong decryption"); + yAddress = decAddress; + return yUint4; + } + + /// @notice Request decryption of mixed data types including 256-bit encrypted bytes + /// @dev Demonstrates how to include encrypted bytes256 in a mixed decryption request + /// @param inputHandle The encrypted input handle for the bytes256 + /// @param inputProof The proof for the encrypted bytes256 + function requestMixedBytes256(einput inputHandle, bytes calldata inputProof) public { + ebytes256 xBytes256 = TFHE.asEbytes256(inputHandle, inputProof); + uint256[] memory cts = new uint256[](4); + cts[0] = Gateway.toUint256(xBool); + cts[1] = Gateway.toUint256(xAddress); + cts[2] = Gateway.toUint256(xBytes256); + ebytes64 input64Bytes = TFHE.asEbytes64(TFHE.padToBytes64(hex"aaff42")); + cts[3] = Gateway.toUint256(input64Bytes); + Gateway.requestDecryption(cts, this.callbackMixedBytes256.selector, 0, block.timestamp + 100, false); + } + + /// @notice Callback function for mixed data type decryption including 256-bit encrypted bytes + /// @dev Processes and stores the decrypted values + /// @param decBool Decrypted boolean + /// @param decAddress Decrypted address + /// @param bytesRes Decrypted 256-bit bytes + function callbackMixedBytes256( + uint256, + bool decBool, + address decAddress, + bytes memory bytesRes, + bytes memory bytesRes2 + ) public onlyGateway { + yBool = decBool; + yAddress = decAddress; + yBytes256 = bytesRes; + yBytes64 = bytesRes2; + } + + /// @notice Request trustless decryption of non-trivial 256-bit encrypted bytes + /// @dev Demonstrates how to request trustless decryption for complex encrypted bytes256 + /// @param inputHandle The encrypted input handle for the bytes256 + /// @param inputProof The proof for the encrypted bytes256 + function requestEbytes256NonTrivialTrustless(einput inputHandle, bytes calldata inputProof) public { + ebytes256 inputNonTrivial = TFHE.asEbytes256(inputHandle, inputProof); + uint256[] memory cts = new uint256[](1); + cts[0] = Gateway.toUint256(inputNonTrivial); + uint256 requestID = Gateway.requestDecryption( + cts, + this.callbackBytes256Trustless.selector, + 0, + block.timestamp + 100, + true + ); + latestRequestID = requestID; + saveRequestedHandles(requestID, cts); + } + + /// @notice Callback function for trustless decryption of 256-bit encrypted bytes + /// @dev Verifies the decryption result using KMS signatures + /// @param requestID The ID of the decryption request + /// @param decryptedInput The decrypted bytes256 value + /// @param signatures The signatures from the KMS for verification + /// @return The decrypted bytes256 value + function callbackBytes256Trustless( + uint256 requestID, + bytes calldata decryptedInput, + bytes[] memory signatures + ) public onlyGateway returns (bytes memory) { + require(latestRequestID == requestID, "wrong requestID passed by Gateway"); + uint256[] memory requestedHandles = loadRequestedHandles(latestRequestID); + bool isKMSVerified = Gateway.verifySignatures(requestedHandles, signatures); + require(isKMSVerified, "KMS did not verify this decryption result"); + yBytes256 = decryptedInput; + return decryptedInput; + } + + /// @notice Request trustless decryption of mixed data types including 256-bit encrypted bytes + /// @dev Demonstrates how to request trustless decryption for multiple data types + /// @param inputHandle The encrypted input handle for the bytes256 + /// @param inputProof The proof for the encrypted bytes256 + function requestMixedBytes256Trustless(einput inputHandle, bytes calldata inputProof) public { + ebytes256 xBytes256 = TFHE.asEbytes256(inputHandle, inputProof); + uint256[] memory cts = new uint256[](3); + cts[0] = Gateway.toUint256(xBool); + cts[1] = Gateway.toUint256(xBytes256); + cts[2] = Gateway.toUint256(xAddress); + uint256 requestID = Gateway.requestDecryption( + cts, + this.callbackMixedBytes256Trustless.selector, + 0, + block.timestamp + 100, + true + ); + latestRequestID = requestID; + saveRequestedHandles(requestID, cts); + } + + /// @notice Callback function for trustless decryption of mixed data types including 256-bit encrypted bytes + /// @dev Verifies and processes the decrypted values + /// @param requestID The ID of the decryption request + /// @param decBool Decrypted boolean + /// @param bytesRes Decrypted 256-bit bytes + /// @param decAddress Decrypted address + /// @param signatures The signatures from the KMS for verification + function callbackMixedBytes256Trustless( + uint256 requestID, + bool decBool, + bytes memory bytesRes, + address decAddress, + bytes[] memory signatures + ) public onlyGateway { + require(latestRequestID == requestID, "wrong requestID passed by Gateway"); + uint256[] memory requestedHandles = loadRequestedHandles(latestRequestID); + bool isKMSVerified = Gateway.verifySignatures(requestedHandles, signatures); + require(isKMSVerified, "KMS did not verify this decryption result"); + yBool = decBool; + yAddress = decAddress; + yBytes256 = bytesRes; + } +} diff --git a/e2e/contracts/E2EFHEVMConfig.sol b/e2e/contracts/E2EFHEVMConfig.sol index ed9aa56..9f98579 100644 --- a/e2e/contracts/E2EFHEVMConfig.sol +++ b/e2e/contracts/E2EFHEVMConfig.sol @@ -2,6 +2,9 @@ pragma solidity ^0.8.24; import {FHEVMConfig, TFHE} from "fhevm/lib/TFHE.sol"; +import { Gateway } from "fhevm/gateway/GatewayCaller.sol"; + +address constant gatewayAddress = 0x7455c89669cdE1f7Cb6D026DFB87263422D821ca; /** * @title ZamaFHEVMConfig. @@ -32,5 +35,6 @@ library DefaultFHEVMConfig { contract E2EFHEVMConfig { constructor() { TFHE.setFHEVM(DefaultFHEVMConfig.getConfig()); + Gateway.setGateway(gatewayAddress); } } diff --git a/e2e/contracts/Increment.sol b/e2e/contracts/Increment.sol deleted file mode 100644 index 3f4a004..0000000 --- a/e2e/contracts/Increment.sol +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear - -pragma solidity ^0.8.24; - -import { E2EFHEVMConfig } from "./E2EFHEVMConfig.sol"; -import "fhevm/lib/TFHE.sol"; -contract Increment is E2EFHEVMConfig { - euint8 public counter; - - constructor() { - - counter = TFHE.asEuint8(0); - TFHE.allow(counter, address(this)); - TFHE.allow(counter, msg.sender); - } - - function increment() public { - counter = TFHE.add(counter, 1); - TFHE.allow(counter, address(this)); - TFHE.allow(counter, msg.sender); - } -} diff --git a/e2e/package.json b/e2e/package.json index b161d05..2f24bef 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -27,6 +27,7 @@ "@types/node": "^18.11.9", "@typescript-eslint/eslint-plugin": "^8.0.1", "@typescript-eslint/parser": "^8.0.1", + "bigint-buffer": "^1.1.5", "chai": "^4.3.7", "cross-env": "^7.0.3", "dotenv": "^16.0.3", diff --git a/e2e/pnpm-lock.yaml b/e2e/pnpm-lock.yaml index 61c4a28..6757240 100644 --- a/e2e/pnpm-lock.yaml +++ b/e2e/pnpm-lock.yaml @@ -66,6 +66,9 @@ importers: '@typescript-eslint/parser': specifier: ^8.0.1 version: 8.10.0(eslint@9.13.0)(typescript@5.6.3) + bigint-buffer: + specifier: ^1.1.5 + version: 1.1.5 chai: specifier: ^4.3.7 version: 4.5.0 diff --git a/e2e/test/gateway/decrypt.ts b/e2e/test/gateway/decrypt.ts new file mode 100644 index 0000000..d9a01d0 --- /dev/null +++ b/e2e/test/gateway/decrypt.ts @@ -0,0 +1,359 @@ +import { expect } from "chai"; +import { ethers, network } from "hardhat"; +import { Context } from "mocha"; + +import { AsyncDecrypt } from "../../types"; +import { createInstance } from "../instance"; +import { getSigners } from "../signers"; +import { bigIntToBytes64, bigIntToBytes128, bigIntToBytes256, waitNBlocks } from "../utils"; + +interface AsyncDecryptContext extends Context { + contract: AsyncDecrypt; +} + +describe("TestAsyncDecrypt", function () { + before(async function (this: AsyncDecryptContext) { + this.signers = await getSigners(); + this.fhevm = await createInstance(); + + // very first request of decryption always fail at the moment due to a gateway bug + // TODO: remove following 8 lines when the gateway bug will be fixed + const contractFactory = await ethers.getContractFactory("AsyncDecrypt"); + this.contract = await contractFactory.connect(this.signers.alice).deploy(); + await this.contract.waitForDeployment(); + this.contractAddress = await this.contract.getAddress(); + + // const tx = await this.contract.connect(this.signers.carol).requestUint8({ gasLimit: 5_000_000 }); + // await tx.wait(); // this first request is here just to silence the current gateway bug at the moment + }); + + it("test async decrypt bool", async function () { + const tx = await this.contract.connect(this.signers.carol).requestBool({ gasLimit: 5_000_000 }); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yBool(); + expect(y).to.equal(true); + }); + + it("test async decrypt bool trustless", async function () { + const tx2 = await this.contract.requestBoolTrustless({ gasLimit: 5_000_000 }); + await tx2.wait(); + await waitNBlocks(5); + const y = await this.contract.yBool(); + expect(y).to.equal(true); + }); + + it("test async decrypt uint4", async function () { + const balanceBefore = await ethers.provider.getBalance(this.relayerAddress); + const tx2 = await this.contract.connect(this.signers.carol).requestUint4({ gasLimit: 5_000_000 }); + await tx2.wait(); + await waitNBlocks(5); + const y = await this.contract.yUint4(); + expect(y).to.equal(4); + const balanceAfter = await ethers.provider.getBalance(this.relayerAddress); + console.log(balanceBefore - balanceAfter); + }); + + it("test async decrypt uint8", async function () { + const tx2 = await this.contract.connect(this.signers.carol).requestUint8({ gasLimit: 5_000_000 }); + await tx2.wait(); + await waitNBlocks(5); + const y = await this.contract.yUint8(); + expect(y).to.equal(42); + }); + + it("test async decrypt uint16", async function () { + const tx2 = await this.contract.connect(this.signers.carol).requestUint16({ gasLimit: 5_000_000 }); + await tx2.wait(); + await waitNBlocks(5); + const y = await this.contract.yUint16(); + expect(y).to.equal(16); + }); + + it("test async decrypt uint32", async function () { + const tx2 = await this.contract.connect(this.signers.carol).requestUint32(5, 15, { gasLimit: 5_000_000 }); + await tx2.wait(); + await waitNBlocks(5); + const y = await this.contract.yUint32(); + expect(y).to.equal(52); // 5+15+32 + }); + + it("test async decrypt uint64", async function () { + const tx2 = await this.contract.connect(this.signers.carol).requestUint64({ gasLimit: 5_000_000 }); + await tx2.wait(); + await waitNBlocks(5); + const y = await this.contract.yUint64(); + expect(y).to.equal(18446744073709551600n); + }); + + it("test async decrypt uint128", async function () { + const tx2 = await this.contract.connect(this.signers.carol).requestUint128({ gasLimit: 5_000_000 }); + await tx2.wait(); + await waitNBlocks(5); + const y = await this.contract.yUint128(); + expect(y).to.equal(1267650600228229401496703205443n); + }); + + it("test async decrypt uint128 non-trivial", async function () { + const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + inputAlice.add128(184467440737095500429401496n); + const encryptedAmount = await inputAlice.encrypt(); + const tx = await this.contract.requestUint128NonTrivial(encryptedAmount.handles[0], encryptedAmount.inputProof, { + gasLimit: 5_000_000, + }); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yUint128(); + expect(y).to.equal(184467440737095500429401496n); + }); + + it("test async decrypt uint256", async function () { + const tx2 = await this.contract.connect(this.signers.carol).requestUint256({ gasLimit: 5_000_000 }); + await tx2.wait(); + await waitNBlocks(5); + const y = await this.contract.yUint256(); + expect(y).to.equal(27606985387162255149739023449108101809804435888681546220650096895197251n); + }); + + it("test async decrypt uint256 non-trivial", async function () { + const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + inputAlice.add256(6985387162255149739023449108101809804435888681546n); + const encryptedAmount = await inputAlice.encrypt(); + const tx = await this.contract.requestUint256NonTrivial(encryptedAmount.handles[0], encryptedAmount.inputProof, { + gasLimit: 5_000_000, + }); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yUint256(); + expect(y).to.equal(6985387162255149739023449108101809804435888681546n); + }); + + it("test async decrypt address", async function () { + const tx2 = await this.contract.connect(this.signers.carol).requestAddress({ gasLimit: 5_000_000 }); + await tx2.wait(); + await waitNBlocks(5); + const y = await this.contract.yAddress(); + expect(y).to.equal("0x8ba1f109551bD432803012645Ac136ddd64DBA72"); + }); + + it("test async decrypt several addresses", async function () { + const tx2 = await this.contract.connect(this.signers.carol).requestSeveralAddresses({ gasLimit: 5_000_000 }); + await tx2.wait(); + await waitNBlocks(5); + const y = await this.contract.yAddress(); + const y2 = await this.contract.yAddress2(); + expect(y).to.equal("0x8ba1f109551bD432803012645Ac136ddd64DBA72"); + expect(y2).to.equal("0xf48b8840387ba3809DAE990c930F3b4766A86ca3"); + }); + + it("test async decrypt mixed", async function () { + const tx2 = await this.contract.connect(this.signers.carol).requestMixed(5, 15, { gasLimit: 5_000_000 }); + await tx2.wait(); + await waitNBlocks(5); + let yB = await this.contract.yBool(); + expect(yB).to.equal(true); + let y = await this.contract.yUint4(); + expect(y).to.equal(4); + y = await this.contract.yUint8(); + expect(y).to.equal(42); + y = await this.contract.yUint16(); + expect(y).to.equal(16); + let yAdd = await this.contract.yAddress(); + expect(yAdd).to.equal("0x8ba1f109551bD432803012645Ac136ddd64DBA72"); + y = await this.contract.yUint32(); + expect(y).to.equal(52); // 5+15+32 + y = await this.contract.yUint64(); + expect(y).to.equal(18446744073709551600n); + }); + + it("test async decrypt uint64 non-trivial", async function () { + const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + inputAlice.add64(18446744073709550042n); + const encryptedAmount = await inputAlice.encrypt(); + const tx = await this.contract.requestUint64NonTrivial(encryptedAmount.handles[0], encryptedAmount.inputProof, { + gasLimit: 5_000_000, + }); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yUint64(); + expect(y).to.equal(18446744073709550042n); + }); + + it("test async decrypt ebytes64 trivial", async function () { + const tx = await this.contract.requestEbytes64Trivial("0x78685689"); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yBytes64(); + expect(y).to.equal(ethers.toBeHex(BigInt("0x78685689"), 64)); + }); + + it("test async decrypt ebytes64 non-trivial", async function () { + const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + inputAlice.addBytes64( + bigIntToBytes64(98870780878070870878787887072921111299111111000000292928818818818818221112111n), + ); + const encryptedAmount = await inputAlice.encrypt(); + const tx = await this.contract.requestEbytes64NonTrivial(encryptedAmount.handles[0], encryptedAmount.inputProof, { + gasLimit: 5_000_000, + }); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yBytes64(); + expect(y).to.equal( + ethers.toBeHex(98870780878070870878787887072921111299111111000000292928818818818818221112111n, 64), + ); + }); + + it("test async decrypt ebytes128 trivial", async function () { + const tx = await this.contract.requestEbytes128Trivial( + "0x8701d11594415047dfac2d9cb87e6631df5a735a2f364fba1511fa7b812dfad2972b809b80ff25ec19591a598081af357cba384cf5aa8e085678ff70bc55faee", + ); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yBytes128(); + expect(y).to.equal( + ethers.toBeHex( + BigInt( + "0x8701d11594415047dfac2d9cb87e6631df5a735a2f364fba1511fa7b812dfad2972b809b80ff25ec19591a598081af357cba384cf5aa8e085678ff70bc55faee", + ), + 128, + ), + ); + }); + + it("test async decrypt ebytes128 non-trivial", async function () { + const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + inputAlice.addBytes128( + bigIntToBytes128( + 9887078087807087087878788707292111129911111100000029292881881881881822111211198870780878070870878787887072921111299111111000000292928818818818818221112111n, + ), + ); + const encryptedAmount = await inputAlice.encrypt(); + const tx = await this.contract.requestEbytes128NonTrivial(encryptedAmount.handles[0], encryptedAmount.inputProof, { + gasLimit: 5_000_000, + }); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yBytes128(); + expect(y).to.equal( + ethers.toBeHex( + 9887078087807087087878788707292111129911111100000029292881881881881822111211198870780878070870878787887072921111299111111000000292928818818818818221112111n, + 128, + ), + ); + }); + + it("test async decrypt ebytes256 trivial", async function () { + const tx = await this.contract.requestEbytes256Trivial("0x78685689"); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yBytes256(); + expect(y).to.equal(ethers.toBeHex(BigInt("0x78685689"), 256)); + }); + + it("test async decrypt ebytes256 non-trivial", async function () { + const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + inputAlice.addBytes256(bigIntToBytes256(18446744073709550022n)); + const encryptedAmount = await inputAlice.encrypt(); + const tx = await this.contract.requestEbytes256NonTrivial(encryptedAmount.handles[0], encryptedAmount.inputProof, { + gasLimit: 5_000_000, + }); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yBytes256(); + expect(y).to.equal(ethers.toBeHex(18446744073709550022n, 256)); + }); + + it("test async decrypt ebytes256 non-trivial with snapshot [skip-on-coverage]", async function () { + if (network.name === "hardhat") { + this.snapshotId = await ethers.provider.send("evm_snapshot"); + const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + inputAlice.addBytes256(bigIntToBytes256(18446744073709550022n)); + const encryptedAmount = await inputAlice.encrypt(); + const tx = await this.contract.requestEbytes256NonTrivial( + encryptedAmount.handles[0], + encryptedAmount.inputProof, + { gasLimit: 5_000_000 }, + ); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yBytes256(); + expect(y).to.equal(ethers.toBeHex(18446744073709550022n, 256)); + + await ethers.provider.send("evm_revert", [this.snapshotId]); + const inputAlice2 = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + inputAlice2.addBytes256(bigIntToBytes256(424242n)); + const encryptedAmount2 = await inputAlice2.encrypt(); + const tx2 = await this.contract.requestEbytes256NonTrivial( + encryptedAmount2.handles[0], + encryptedAmount2.inputProof, + { gasLimit: 5_000_000 }, + ); + await tx2.wait(); + await waitNBlocks(5); + const y2 = await this.contract.yBytes256(); + expect(y2).to.equal(ethers.toBeHex(424242n, 256)); + } + }); + + it("test async decrypt mixed with ebytes256", async function () { + const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + inputAlice.addBytes256(bigIntToBytes256(18446744073709550032n)); + const encryptedAmount = await inputAlice.encrypt(); + const tx = await this.contract.requestMixedBytes256(encryptedAmount.handles[0], encryptedAmount.inputProof, { + gasLimit: 5_000_000, + }); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yBytes256(); + expect(y).to.equal(ethers.toBeHex(18446744073709550032n, 256)); + const y2 = await this.contract.yBytes64(); + expect(y2).to.equal(ethers.toBeHex(BigInt("0xaaff42"), 64)); + const yb = await this.contract.yBool(); + expect(yb).to.equal(true); + const yAdd = await this.contract.yAddress(); + expect(yAdd).to.equal("0x8ba1f109551bD432803012645Ac136ddd64DBA72"); + }); + + it("test async decrypt ebytes256 non-trivial trustless", async function () { + const inputAlice = this.instances.alice.createEncryptedInput( + await this.contract.getAddress(), + this.signers.alice.address, + ); + inputAlice.addBytes256(bigIntToBytes256(18446744073709550022n)); + const encryptedAmount = await inputAlice.encrypt(); + const tx = await this.contract.requestEbytes256NonTrivialTrustless( + encryptedAmount.handles[0], + encryptedAmount.inputProof, + { gasLimit: 5_000_000 }, + ); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yBytes256(); + expect(y).to.equal(ethers.toBeHex(18446744073709550022n, 256)); + }); + + it("test async decrypt mixed with ebytes256 trustless", async function () { + const inputAlice = this.instances.alice.createEncryptedInput( + await this.contract.getAddress(), + this.signers.alice.address, + ); + inputAlice.addBytes256(bigIntToBytes256(18446744073709550032n)); + const encryptedAmount = await inputAlice.encrypt(); + const tx = await this.contract.requestMixedBytes256Trustless( + encryptedAmount.handles[0], + encryptedAmount.inputProof, + { + gasLimit: 5_000_000, + }, + ); + await tx.wait(); + await waitNBlocks(5); + const y = await this.contract.yBytes256(); + expect(y).to.equal(ethers.toBeHex(18446744073709550032n, 256)); + const yb = await this.contract.yBool(); + expect(yb).to.equal(true); + const yAdd = await this.contract.yAddress(); + expect(yAdd).to.equal("0x8ba1f109551bD432803012645Ac136ddd64DBA72"); + }); +}); diff --git a/e2e/test/utils.ts b/e2e/test/utils.ts index 592504a..d9022ef 100644 --- a/e2e/test/utils.ts +++ b/e2e/test/utils.ts @@ -1,3 +1,4 @@ +import { toBufferBE } from "bigint-buffer"; import { ContractMethodArgs, Typed } from "ethers"; import { ethers, network } from "hardhat"; @@ -89,3 +90,15 @@ export const mineNBlocks = async (n: number) => { await ethers.provider.send("evm_mine"); } }; + +export const bigIntToBytes64 = (value: bigint) => { + return new Uint8Array(toBufferBE(value, 64)); +}; + +export const bigIntToBytes128 = (value: bigint) => { + return new Uint8Array(toBufferBE(value, 128)); +}; + +export const bigIntToBytes256 = (value: bigint) => { + return new Uint8Array(toBufferBE(value, 256)); +}; From 77bb14ffd8b42edb7ab386279e4323a1f73e99a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Fri, 22 Nov 2024 17:48:25 +0100 Subject: [PATCH 11/21] chore: add public key parameter --- e2e/.env.example | 1 + e2e/test/instance.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/e2e/.env.example b/e2e/.env.example index b374609..7562739 100644 --- a/e2e/.env.example +++ b/e2e/.env.example @@ -5,5 +5,6 @@ export ACL_CONTRACT_ADDRESS=0x9479B455904dCccCf8Bc4f7dF8e9A1105cBa2A8e export PAYMENT_CONTRACT_ADDRESS=0x25FE5d92Ae6f89AF37D177cF818bF27EDFe37F7c export KMS_VERIFIER_CONTRACT_ADDRESS=0x904Af2B61068f686838bD6257E385C2cE7a09195 export GATEWAY_CONTRACT_ADDRESS=0x7455c89669cdE1f7Cb6D026DFB87263422D821ca +export PUBLIC_KEY_ID=55729ddea48547ea837137d122e1c90043e94c41 export GATEWAY_URL="https://gateway-sepolia.kms-dev-v1.bc.zama.team/" \ No newline at end of file diff --git a/e2e/test/instance.ts b/e2e/test/instance.ts index 988a03a..a48ebe7 100644 --- a/e2e/test/instance.ts +++ b/e2e/test/instance.ts @@ -13,7 +13,7 @@ export const createInstance = async () => { gatewayUrl: parsedEnv.GATEWAY_URL, aclContractAddress: parsedEnv.ACL_CONTRACT_ADDRESS, kmsContractAddress: parsedEnv.KMS_VERIFIER_CONTRACT_ADDRESS, - publicKeyId: "55729ddea48547ea837137d122e1c90043e94c41", + publicKeyId: parsedEnv.PUBLIC_KEY_ID, }); return instance; }; From 548551fa760fe8052fda571182223c95200b8a4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Mon, 25 Nov 2024 19:22:03 +0100 Subject: [PATCH 12/21] fix: fix encrypted erc20 encrypt test --- e2e/test/encryptedERC20/EncryptedERC20.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/e2e/test/encryptedERC20/EncryptedERC20.ts b/e2e/test/encryptedERC20/EncryptedERC20.ts index f14634b..892ba50 100644 --- a/e2e/test/encryptedERC20/EncryptedERC20.ts +++ b/e2e/test/encryptedERC20/EncryptedERC20.ts @@ -50,7 +50,7 @@ describe("EncryptedERC20", function () { const input = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); input.add64(1337); - const encryptedTransferAmount = input.encrypt(); + const encryptedTransferAmount = await input.encrypt(); const tx = await this.erc20["transfer(address,bytes32,bytes)"]( this.signers.bob.address, encryptedTransferAmount.handles[0], @@ -122,7 +122,7 @@ describe("EncryptedERC20", function () { const input = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); input.add64(1337); - const encryptedTransferAmount = input.encrypt(); + const encryptedTransferAmount = await input.encrypt(); const tx = await this.erc20["transfer(address,bytes32,bytes)"]( this.signers.bob.address, encryptedTransferAmount.handles[0], @@ -177,7 +177,7 @@ describe("EncryptedERC20", function () { const inputAlice = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); inputAlice.add64(1337); - const encryptedAllowanceAmount = inputAlice.encrypt(); + const encryptedAllowanceAmount = await inputAlice.encrypt(); const tx = await this.erc20["approve(address,bytes32,bytes)"]( this.signers.bob.address, encryptedAllowanceAmount.handles[0], @@ -188,7 +188,7 @@ describe("EncryptedERC20", function () { const bobErc20 = this.erc20.connect(this.signers.bob); const inputBob1 = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.bob.address); inputBob1.add64(1338); // above allowance so next tx should actually not send any token - const encryptedTransferAmount = inputBob1.encrypt(); + const encryptedTransferAmount = await inputBob1.encrypt(); const tx2 = await bobErc20["transferFrom(address,address,bytes32,bytes)"]( this.signers.alice.address, this.signers.bob.address, @@ -237,7 +237,7 @@ describe("EncryptedERC20", function () { const inputBob2 = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.bob.address); inputBob2.add64(1337); // below allowance so next tx should send token - const encryptedTransferAmount2 = inputBob2.encrypt(); + const encryptedTransferAmount2 = await inputBob2.encrypt(); const tx3 = await bobErc20["transferFrom(address,address,bytes32,bytes)"]( this.signers.alice.address, this.signers.bob.address, From c3dffbf506c7da295c995ae7e4aca5bb7ae1dbfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Thu, 28 Nov 2024 13:11:01 +0100 Subject: [PATCH 13/21] chore: update fhevmjs --- e2e/package.json | 2 +- e2e/pnpm-lock.yaml | 183 +++++---------------------------------------- 2 files changed, 19 insertions(+), 166 deletions(-) diff --git a/e2e/package.json b/e2e/package.json index 2f24bef..6e9208c 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -36,7 +36,7 @@ "ethers": "^6.8.0", "fhevm": "0.6.0-0", "fhevm-core-contracts": "0.1.0-2", - "fhevmjs": "0.6.0-9", + "fhevmjs": "0.6.0-13", "fs-extra": "^10.1.0", "globals": "^15.9.0", "hardhat": "^2.22.8", diff --git a/e2e/pnpm-lock.yaml b/e2e/pnpm-lock.yaml index 6757240..7ae17a8 100644 --- a/e2e/pnpm-lock.yaml +++ b/e2e/pnpm-lock.yaml @@ -94,8 +94,8 @@ importers: specifier: 0.1.0-2 version: 0.1.0-2 fhevmjs: - specifier: 0.6.0-9 - version: 0.6.0-9 + specifier: 0.6.0-13 + version: 0.6.0-13 fs-extra: specifier: ^10.1.0 version: 10.1.0 @@ -721,9 +721,6 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/keccak@3.0.5': - resolution: {integrity: sha512-Mvu4StIJ9KyfPXDVRv3h0fWNBAjHPBQZ8EPcxhqA8FG6pLzxtytVXU5owB6J2/8xZ+ZspWTXJEUjAHt0pk0I1Q==} - '@types/lru-cache@5.1.1': resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} @@ -966,10 +963,6 @@ packages: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - axios@0.21.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} @@ -1052,9 +1045,6 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -1521,8 +1511,8 @@ packages: resolution: {integrity: sha512-Gvd7a5T7JTU3OFHy2eRrvRTTmXWwSalSSsBdE0X0C0nTnTow5sYsQYkQqIZcYZNpZq1dCcoCgp/gYbeNDHUDNw==} engines: {node: '>=20.0.0'} - fhevmjs@0.6.0-9: - resolution: {integrity: sha512-DUGeX0xk/pQC9gG1byljxwEinLADRaWV4tsp0Crk8sbbCTEGTJ1rr3NSxvMPNggGFIwoaOeKT99KueKGaPn2gg==} + fhevmjs@0.6.0-13: + resolution: {integrity: sha512-Yn4fiQB/LAWz0jVPl0iSFrdsMWZK1W9cg+wVI9Y6eBBVhmlDQTPJj1KVVxyDGTE3frgvWR90Ai9I6EEVVO1Tcw==} engines: {node: '>=20'} hasBin: true @@ -1572,9 +1562,6 @@ packages: debug: optional: true - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - form-data@2.5.2: resolution: {integrity: sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==} engines: {node: '>= 0.12'} @@ -1775,10 +1762,6 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} @@ -1886,10 +1869,6 @@ packages: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -1897,10 +1876,6 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - is-core-module@2.15.1: resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} engines: {node: '>= 0.4'} @@ -1917,10 +1892,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -1943,10 +1914,6 @@ packages: is-subset@0.1.1: resolution: {integrity: sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -2258,8 +2225,8 @@ packages: node-tfhe@0.9.1: resolution: {integrity: sha512-M2CbUVX4DQneaaK/4fygy9lW0zjOOzM8yGWAgbKGRt/Gd07zaloFEGGHW7dbmUaHo022q1uo7nzxyYhe4UgqCw==} - node-tkms@0.9.0-rc27: - resolution: {integrity: sha512-lRCgH5pHewK5IRkczX1zpDpU0BidGHKDtaN812Yh9fhR97aqKVDWdSidQrOqX7RSstDkHeJ1dDyN6fx2wkQ+4Q==} + node-tkms@0.9.0-rc5: + resolution: {integrity: sha512-6a8DiNHUsThhYDKVVjFLXCPm7hi6Rh4wHOjtpaZ0in2xqywGnYRSiMJntNoVdxtKhPDSKmTC3KLXXoWhNzBEOg==} nofilter@3.1.0: resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} @@ -2400,10 +2367,6 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - prebuild-install@7.1.2: resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} engines: {node: '>=10'} @@ -2456,9 +2419,6 @@ packages: pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -2630,9 +2590,6 @@ packages: sha1@1.1.1: resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} - sha3@2.1.4: - resolution: {integrity: sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==} - shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} @@ -2896,8 +2853,8 @@ packages: resolution: {integrity: sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==} engines: {node: '>=6.0.0'} - tkms@0.9.0-rc27: - resolution: {integrity: sha512-sSO1jb4/gw0FjS+AubW35/KnJfx1qBp2EuIb0gLg7247DS2VlsBh2iNlBtHKKBevhkgfvjdOt0YZT1J0y9Bv/Q==} + tkms@0.9.0-rc5: + resolution: {integrity: sha512-KA5oDCvKM+eJldJdikcKpPT8p8I1Q0dmRtmpAlqfxVthhK9GzkgljCrN/jpqwj989n+AlDYCDpLpCgsFxendPA==} tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} @@ -3060,19 +3017,12 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - url@0.11.4: - resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} - engines: {node: '>= 0.4'} - utf8@3.0.0: resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -3080,26 +3030,13 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - web3-errors@1.3.0: - resolution: {integrity: sha512-j5JkAKCtuVMbY3F5PYXBqg1vWrtF4jcyyMY1rlw8a4PV67AkqlepjGgpzWJZd56Mt+TvHy6DA1F/3Id8LatDSQ==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-types@1.8.0: - resolution: {integrity: sha512-Z51wFLPGhZM/1uDxrxE8gzju3t2aEdRGn+YmLX463id5UjTuMEmP/9in1GFjqrsPB3m86czs8RnGBUt3ovueMw==} - engines: {node: '>=14', npm: '>=6.12.0'} + wasm-feature-detect@1.8.0: + resolution: {integrity: sha512-zksaLKM2fVlnB5jQQDqKXXwYHLQUVH9es+5TOOHwGOVJOCeRBCiPjwSg+3tN2AdTCzjgli4jijCH290kXb/zWQ==} web3-utils@1.10.4: resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} engines: {node: '>=8.0.0'} - web3-validator@2.0.6: - resolution: {integrity: sha512-qn9id0/l1bWmvH4XfnG/JtGKKwut2Vokl6YXP5Kfg424npysmtRLe9DgiNBM9Op7QL/aSiaA0TVXibuIuWcizg==} - engines: {node: '>=14', npm: '>=6.12.0'} - - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -3206,9 +3143,6 @@ packages: peerDependencies: ethers: ~5.7.0 - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - snapshots: '@adraffy/ens-normalize@1.10.1': {} @@ -3994,10 +3928,6 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/keccak@3.0.5': - dependencies: - '@types/node': 18.19.57 - '@types/lru-cache@5.1.1': {} '@types/minimatch@5.1.2': {} @@ -4241,10 +4171,6 @@ snapshots: at-least-node@1.0.0: {} - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - axios@0.21.4(debug@4.3.7): dependencies: follow-redirects: 1.15.9(debug@4.3.7) @@ -4349,11 +4275,6 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - bytes@3.1.2: {} cacache@15.3.0: @@ -4959,19 +4880,17 @@ snapshots: - bluebird - supports-color - fhevmjs@0.6.0-9: + fhevmjs@0.6.0-13: dependencies: - '@types/keccak': 3.0.5 bigint-buffer: 1.1.5 commander: 11.1.0 fetch-mock: 11.1.5 + keccak: 3.0.4 node-tfhe: 0.9.1 - node-tkms: 0.9.0-rc27 - sha3: 2.1.4 + node-tkms: 0.9.0-rc5 tfhe: 0.9.1 - tkms: 0.9.0-rc27 - url: 0.11.4 - web3-validator: 2.0.6 + tkms: 0.9.0-rc5 + wasm-feature-detect: 1.8.0 transitivePeerDependencies: - node-fetch @@ -5015,10 +4934,6 @@ snapshots: optionalDependencies: debug: 4.3.7(supports-color@8.1.1) - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - form-data@2.5.2: dependencies: asynckit: 0.4.0 @@ -5334,10 +5249,6 @@ snapshots: has-symbols@1.0.3: {} - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.0.3 - has-unicode@2.0.1: optional: true @@ -5459,19 +5370,12 @@ snapshots: sprintf-js: 1.1.3 optional: true - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - is-arrayish@0.2.1: {} is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - is-callable@1.2.7: {} - is-core-module@2.15.1: dependencies: hasown: 2.0.2 @@ -5482,10 +5386,6 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.2 - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -5501,10 +5401,6 @@ snapshots: is-subset@0.1.1: {} - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - is-unicode-supported@0.1.0: {} isarray@1.0.0: {} @@ -5831,7 +5727,7 @@ snapshots: node-tfhe@0.9.1: {} - node-tkms@0.9.0-rc27: {} + node-tkms@0.9.0-rc5: {} nofilter@3.1.0: {} @@ -5961,8 +5857,6 @@ snapshots: pluralize@8.0.0: {} - possible-typed-array-names@1.0.0: {} - prebuild-install@7.1.2: dependencies: detect-libc: 2.0.3 @@ -6016,8 +5910,6 @@ snapshots: end-of-stream: 1.4.4 once: 1.4.0 - punycode@1.4.1: {} - punycode@2.3.1: {} qs@6.13.0: @@ -6200,10 +6092,6 @@ snapshots: charenc: 0.0.2 crypt: 0.0.2 - sha3@2.1.4: - dependencies: - buffer: 6.0.3 - shallowequal@1.1.0: {} shebang-command@2.0.0: @@ -6534,7 +6422,7 @@ snapshots: promise: 8.3.0 qs: 6.13.0 - tkms@0.9.0-rc27: {} + tkms@0.9.0-rc5: {} tmp@0.0.33: dependencies: @@ -6691,32 +6579,15 @@ snapshots: dependencies: punycode: 2.3.1 - url@0.11.4: - dependencies: - punycode: 1.4.1 - qs: 6.13.0 - utf8@3.0.0: {} util-deprecate@1.0.2: {} - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 - uuid@8.3.2: {} v8-compile-cache-lib@3.0.1: {} - web3-errors@1.3.0: - dependencies: - web3-types: 1.8.0 - - web3-types@1.8.0: {} + wasm-feature-detect@1.8.0: {} web3-utils@1.10.4: dependencies: @@ -6729,22 +6600,6 @@ snapshots: randombytes: 2.1.0 utf8: 3.0.0 - web3-validator@2.0.6: - dependencies: - ethereum-cryptography: 2.2.1 - util: 0.12.5 - web3-errors: 1.3.0 - web3-types: 1.8.0 - zod: 3.23.8 - - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - which@1.3.1: dependencies: isexe: 2.0.0 @@ -6817,5 +6672,3 @@ snapshots: zksync-ethers@5.9.2(ethers@5.7.2): dependencies: ethers: 5.7.2 - - zod@3.23.8: {} From 55fdf316710d737d72b600ef56b73a475ce6b2e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Fri, 29 Nov 2024 12:34:23 +0100 Subject: [PATCH 14/21] fix: readd signers --- e2e/test/gateway/decrypt.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/e2e/test/gateway/decrypt.ts b/e2e/test/gateway/decrypt.ts index d9a01d0..ffc48e2 100644 --- a/e2e/test/gateway/decrypt.ts +++ b/e2e/test/gateway/decrypt.ts @@ -4,7 +4,7 @@ import { Context } from "mocha"; import { AsyncDecrypt } from "../../types"; import { createInstance } from "../instance"; -import { getSigners } from "../signers"; +import { getSigners, initSigners } from "../signers"; import { bigIntToBytes64, bigIntToBytes128, bigIntToBytes256, waitNBlocks } from "../utils"; interface AsyncDecryptContext extends Context { @@ -13,18 +13,14 @@ interface AsyncDecryptContext extends Context { describe("TestAsyncDecrypt", function () { before(async function (this: AsyncDecryptContext) { + await initSigners(); this.signers = await getSigners(); this.fhevm = await createInstance(); - // very first request of decryption always fail at the moment due to a gateway bug - // TODO: remove following 8 lines when the gateway bug will be fixed const contractFactory = await ethers.getContractFactory("AsyncDecrypt"); this.contract = await contractFactory.connect(this.signers.alice).deploy(); await this.contract.waitForDeployment(); this.contractAddress = await this.contract.getAddress(); - - // const tx = await this.contract.connect(this.signers.carol).requestUint8({ gasLimit: 5_000_000 }); - // await tx.wait(); // this first request is here just to silence the current gateway bug at the moment }); it("test async decrypt bool", async function () { From c0193aa6120d0c41ba43eeef1dc429a86644bb3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Fri, 29 Nov 2024 16:07:49 +0100 Subject: [PATCH 15/21] e2e: update dependencies --- e2e/.env.example | 13 +- e2e/.gitignore | 2 +- e2e/contracts/E2EFHEVMConfig.sol | 10 +- e2e/package-lock.json | 11647 +++++++++++++++++++++++++++++ e2e/package.json | 2 +- e2e/pnpm-lock.yaml | 6674 ----------------- 6 files changed, 11660 insertions(+), 6688 deletions(-) create mode 100644 e2e/package-lock.json delete mode 100644 e2e/pnpm-lock.yaml diff --git a/e2e/.env.example b/e2e/.env.example index 7562739..fa3a2d4 100644 --- a/e2e/.env.example +++ b/e2e/.env.example @@ -1,10 +1,9 @@ export MNEMONIC="adapt mosquito move limb mobile illegal tree voyage juice mosquito burger raise father hope layer" -export TFHE_EXECUTOR_CONTRACT_ADDRESS=0x199fB61DFdfE46f9F90C9773769c28D9623Bb90e -export ACL_CONTRACT_ADDRESS=0x9479B455904dCccCf8Bc4f7dF8e9A1105cBa2A8e -export PAYMENT_CONTRACT_ADDRESS=0x25FE5d92Ae6f89AF37D177cF818bF27EDFe37F7c -export KMS_VERIFIER_CONTRACT_ADDRESS=0x904Af2B61068f686838bD6257E385C2cE7a09195 -export GATEWAY_CONTRACT_ADDRESS=0x7455c89669cdE1f7Cb6D026DFB87263422D821ca -export PUBLIC_KEY_ID=55729ddea48547ea837137d122e1c90043e94c41 +export TFHE_EXECUTOR_CONTRACT_ADDRESS=0x687408aB54661ba0b4aeF3a44156c616c6955E07 +export ACL_CONTRACT_ADDRESS=0xFee8407e2f5e3Ee68ad77cAE98c434e637f516e5 +export PAYMENT_CONTRACT_ADDRESS=0xFb03BE574d14C256D56F09a198B586bdfc0A9de2 +export KMS_VERIFIER_CONTRACT_ADDRESS=0x9D6891A6240D6130c54ae243d8005063D05fE14b +export GATEWAY_CONTRACT_ADDRESS=0x33347831500F1e73f0ccCBb95c9f86B94d7b1123 -export GATEWAY_URL="https://gateway-sepolia.kms-dev-v1.bc.zama.team/" \ No newline at end of file +export GATEWAY_URL="https://gateway-sepolia.kms-dev-v1.bc.zama.team/" diff --git a/e2e/.gitignore b/e2e/.gitignore index 8fe72ca..381d33b 100644 --- a/e2e/.gitignore +++ b/e2e/.gitignore @@ -22,5 +22,5 @@ abi/ .DS_Store .pnp.* coverage.json -package-lock.json +pnpm-lock.yaml yarn.lock diff --git a/e2e/contracts/E2EFHEVMConfig.sol b/e2e/contracts/E2EFHEVMConfig.sol index 9f98579..9f5601f 100644 --- a/e2e/contracts/E2EFHEVMConfig.sol +++ b/e2e/contracts/E2EFHEVMConfig.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.24; import {FHEVMConfig, TFHE} from "fhevm/lib/TFHE.sol"; import { Gateway } from "fhevm/gateway/GatewayCaller.sol"; -address constant gatewayAddress = 0x7455c89669cdE1f7Cb6D026DFB87263422D821ca; +address constant gatewayAddress = 0x33347831500F1e73f0ccCBb95c9f86B94d7b1123; /** * @title ZamaFHEVMConfig. @@ -17,10 +17,10 @@ library DefaultFHEVMConfig { function getConfig() internal pure returns (FHEVMConfig.FHEVMConfigStruct memory) { return FHEVMConfig.FHEVMConfigStruct({ - ACLAddress: 0x9479B455904dCccCf8Bc4f7dF8e9A1105cBa2A8e, - TFHEExecutorAddress: 0x199fB61DFdfE46f9F90C9773769c28D9623Bb90e, - FHEPaymentAddress: 0x25FE5d92Ae6f89AF37D177cF818bF27EDFe37F7c, - KMSVerifierAddress: 0x904Af2B61068f686838bD6257E385C2cE7a09195 + ACLAddress: 0xFee8407e2f5e3Ee68ad77cAE98c434e637f516e5, + TFHEExecutorAddress: 0x687408aB54661ba0b4aeF3a44156c616c6955E07, + FHEPaymentAddress: 0xFb03BE574d14C256D56F09a198B586bdfc0A9de2, + KMSVerifierAddress: 0x9D6891A6240D6130c54ae243d8005063D05fE14b }); } } diff --git a/e2e/package-lock.json b/e2e/package-lock.json new file mode 100644 index 0000000..b17fbef --- /dev/null +++ b/e2e/package-lock.json @@ -0,0 +1,11647 @@ +{ + "name": "@zama-ai/fhevm-hardhat-template", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@zama-ai/fhevm-hardhat-template", + "version": "1.0.0", + "hasInstallScript": true, + "dependencies": { + "extra-bigint": "^1.1.18", + "sqlite3": "^5.1.7" + }, + "devDependencies": { + "@eslint/js": "^9.9.0", + "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.6", + "@nomicfoundation/hardhat-toolbox": "^3.0.0", + "@nomicfoundation/hardhat-verify": "^1.0.0", + "@openzeppelin/contracts": "^5.0.2", + "@trivago/prettier-plugin-sort-imports": "^4.0.0", + "@typechain/ethers-v6": "^0.4.0", + "@typechain/hardhat": "^8.0.0", + "@types/chai": "^4.3.4", + "@types/eslint__js": "^8.42.3", + "@types/fs-extra": "^9.0.13", + "@types/mocha": "^10.0.0", + "@types/node": "^18.11.9", + "@typescript-eslint/eslint-plugin": "^8.0.1", + "@typescript-eslint/parser": "^8.0.1", + "bigint-buffer": "^1.1.5", + "chai": "^4.3.7", + "cross-env": "^7.0.3", + "dotenv": "^16.0.3", + "eslint": "^9.9.0", + "eslint-config-prettier": "^8.5.0", + "ethers": "^6.8.0", + "fhevm": "0.6.0-0", + "fhevm-core-contracts": "0.1.0-2", + "fhevmjs": "^0.6.0-16", + "fs-extra": "^10.1.0", + "globals": "^15.9.0", + "hardhat": "^2.22.8", + "hardhat-deploy": "^0.12.4", + "hardhat-gas-reporter": "^1.0.9", + "hardhat-ignore-warnings": "^0.2.11", + "hardhat-preprocessor": "^0.1.5", + "lodash": "^4.17.21", + "mocha": "^10.1.0", + "prettier": "^2.8.4", + "prettier-plugin-solidity": "^1.1.2", + "rimraf": "^4.1.2", + "solhint": "^3.4.0", + "solhint-plugin-prettier": "^0.0.5", + "solidity-coverage": "0.8.12", + "ts-generator": "^0.1.1", + "ts-node": "^10.9.1", + "typechain": "^8.2.0", + "typescript": "^5.5.4", + "typescript-eslint": "^8.0.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor/node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name/node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/parser/node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/traverse/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", + "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/core": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", + "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", + "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "dev": true, + "license": "MPL-2.0", + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/json-wallets/node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "license": "MIT", + "optional": true + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@metamask/eth-sig-util/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/secp256k1": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nomicfoundation/edr": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.6.5.tgz", + "integrity": "sha512-tAqMslLP+/2b2sZP4qe9AuGxG3OkQ5gGgHE4isUuq6dUVjwCRPFhAOhpdFl+OjY5P3yEv3hmq9HjUGRa2VNjng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nomicfoundation/edr-darwin-arm64": "0.6.5", + "@nomicfoundation/edr-darwin-x64": "0.6.5", + "@nomicfoundation/edr-linux-arm64-gnu": "0.6.5", + "@nomicfoundation/edr-linux-arm64-musl": "0.6.5", + "@nomicfoundation/edr-linux-x64-gnu": "0.6.5", + "@nomicfoundation/edr-linux-x64-musl": "0.6.5", + "@nomicfoundation/edr-win32-x64-msvc": "0.6.5" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-darwin-arm64": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.6.5.tgz", + "integrity": "sha512-A9zCCbbNxBpLgjS1kEJSpqxIvGGAX4cYbpDYCU2f3jVqOwaZ/NU761y1SvuCRVpOwhoCXqByN9b7HPpHi0L4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-darwin-x64": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.6.5.tgz", + "integrity": "sha512-x3zBY/v3R0modR5CzlL6qMfFMdgwd6oHrWpTkuuXnPFOX8SU31qq87/230f4szM+ukGK8Hi+mNq7Ro2VF4Fj+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.6.5.tgz", + "integrity": "sha512-HGpB8f1h8ogqPHTyUpyPRKZxUk2lu061g97dOQ/W4CxevI0s/qiw5DB3U3smLvSnBHKOzYS1jkxlMeGN01ky7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-arm64-musl": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.6.5.tgz", + "integrity": "sha512-ESvJM5Y9XC03fZg9KaQg3Hl+mbx7dsSkTIAndoJS7X2SyakpL9KZpOSYrDk135o8s9P9lYJdPOyiq+Sh+XoCbQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-x64-gnu": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.6.5.tgz", + "integrity": "sha512-HCM1usyAR1Ew6RYf5AkMYGvHBy64cPA5NMbaeY72r0mpKaH3txiMyydcHibByOGdQ8iFLWpyUdpl1egotw+Tgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-x64-musl": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.6.5.tgz", + "integrity": "sha512-nB2uFRyczhAvWUH7NjCsIO6rHnQrof3xcCe6Mpmnzfl2PYcGyxN7iO4ZMmRcQS7R1Y670VH6+8ZBiRn8k43m7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-win32-x64-msvc": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.6.5.tgz", + "integrity": "sha512-B9QD/4DSSCFtWicO8A3BrsnitO1FPv7axB62wq5Q+qeJ50yJlTmyeGY3cw62gWItdvy2mh3fRM6L1LpnHiB77A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", + "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nomicfoundation/ethereumjs-util": "9.0.4" + } + }, + "node_modules/@nomicfoundation/ethereumjs-rlp": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", + "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", + "dev": true, + "license": "MPL-2.0", + "bin": { + "rlp": "bin/rlp.cjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz", + "integrity": "sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "c-kzg": "^2.1.2" + }, + "peerDependenciesMeta": { + "c-kzg": { + "optional": true + } + } + }, + "node_modules/@nomicfoundation/ethereumjs-util": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz", + "integrity": "sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "c-kzg": "^2.1.2" + }, + "peerDependenciesMeta": { + "c-kzg": { + "optional": true + } + } + }, + "node_modules/@nomicfoundation/hardhat-chai-matchers": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.8.tgz", + "integrity": "sha512-Z5PiCXH4xhNLASROlSUOADfhfpfhYO6D7Hn9xp8PddmHey0jq704cr6kfU8TRrQ4PUZbpfsZadPj+pCfZdjPIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" + }, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "chai": "^4.2.0", + "ethers": "^6.1.0", + "hardhat": "^2.9.4" + } + }, + "node_modules/@nomicfoundation/hardhat-ethers": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.8.tgz", + "integrity": "sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "lodash.isequal": "^4.5.0" + }, + "peerDependencies": { + "ethers": "^6.1.0", + "hardhat": "^2.0.0" + } + }, + "node_modules/@nomicfoundation/hardhat-network-helpers": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.12.tgz", + "integrity": "sha512-xTNQNI/9xkHvjmCJnJOTyqDSl8uq1rKb2WOVmixQxFtRd7Oa3ecO8zM0cyC2YmOK+jHB9WPZ+F/ijkHg1CoORA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ethereumjs-util": "^7.1.4" + }, + "peerDependencies": { + "hardhat": "^2.9.5" + } + }, + "node_modules/@nomicfoundation/hardhat-toolbox": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-3.0.0.tgz", + "integrity": "sha512-MsteDXd0UagMksqm9KvcFG6gNKYNa3GGNCy73iQ6bEasEgg2v8Qjl6XA5hjs8o5UD5A3153B6W2BIVJ8SxYUtA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.0", + "@nomicfoundation/hardhat-verify": "^1.0.0", + "@typechain/ethers-v6": "^0.4.0", + "@typechain/hardhat": "^8.0.0", + "@types/chai": "^4.2.0", + "@types/mocha": ">=9.1.0", + "@types/node": ">=12.0.0", + "chai": "^4.2.0", + "ethers": "^6.4.0", + "hardhat": "^2.11.0", + "hardhat-gas-reporter": "^1.0.8", + "solidity-coverage": "^0.8.1", + "ts-node": ">=8.0.0", + "typechain": "^8.2.0", + "typescript": ">=4.5.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-1.1.1.tgz", + "integrity": "sha512-9QsTYD7pcZaQFEA3tBb/D/oCStYDiEVDN7Dxeo/4SCyHRSm86APypxxdOMEPlGmXsAvd+p1j/dTODcpxb8aztA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@ethersproject/address": "^5.0.2", + "cbor": "^8.1.0", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "lodash.clonedeep": "^4.5.0", + "semver": "^6.3.0", + "table": "^6.8.0", + "undici": "^5.14.0" + }, + "peerDependencies": { + "hardhat": "^2.0.4" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz", + "integrity": "sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + }, + "optionalDependencies": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.2", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.2", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.2" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz", + "integrity": "sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz", + "integrity": "sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz", + "integrity": "sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz", + "integrity": "sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz", + "integrity": "sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz", + "integrity": "sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz", + "integrity": "sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "license": "MIT", + "optional": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@npmcli/move-file/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/move-file/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@openzeppelin/contracts": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.1.0.tgz", + "integrity": "sha512-p1ULhl7BXzjjbha5aqst+QMLY+4/LCWADXOCsmLHRM77AqiPjnd9vvUN9sosUfhL9JGKpZ0TjEGxgvnizmWGSA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@solidity-parser/parser": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz", + "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/generator": "7.17.7", + "@babel/parser": "^7.20.5", + "@babel/traverse": "7.23.2", + "@babel/types": "7.17.0", + "javascript-natural-sort": "0.7.1", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "@vue/compiler-sfc": "3.x", + "prettier": "2.x - 3.x" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + } + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typechain/ethers-v6": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.4.3.tgz", + "integrity": "sha512-TrxBsyb4ryhaY9keP6RzhFCviWYApcLCIRMPyWaKp2cZZrfaM3QBoxXTnw/eO4+DAY3l+8O0brNW0WgeQeOiDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + }, + "peerDependencies": { + "ethers": "6.x", + "typechain": "^8.3.1", + "typescript": ">=4.7.0" + } + }, + "node_modules/@typechain/hardhat": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-8.0.3.tgz", + "integrity": "sha512-MytSmJJn+gs7Mqrpt/gWkTCOpOQ6ZDfRrRT2gtZL0rfGe4QrU4x9ZdW15fFbVM/XTa+5EsKiOMYXhRABibNeng==", + "dev": true, + "license": "MIT", + "dependencies": { + "fs-extra": "^9.1.0" + }, + "peerDependencies": { + "@typechain/ethers-v6": "^0.4.3", + "ethers": "^6.1.0", + "hardhat": "^2.9.9", + "typechain": "^8.3.1" + } + }, + "node_modules/@typechain/hardhat/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@types/bn.js": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", + "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai-as-promised": { + "version": "7.1.8", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", + "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint__js": { + "version": "8.42.3", + "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", + "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/glob-to-regexp": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@types/glob-to-regexp/-/glob-to-regexp-0.4.4.tgz", + "integrity": "sha512-nDKoaKJYbnn1MZxUY0cA1bPmmgZbg0cTq7Rh13d0KWYNOiKbqoR+2d89SnRPszGh7ROzSwZ/GOjZ4jPbmmZ6Eg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mkdirp": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz", + "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "18.19.67", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.67.tgz", + "integrity": "sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.17", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", + "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/secp256k1": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz", + "integrity": "sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/type-utils": "8.16.0", + "@typescript-eslint/utils": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.16.0.tgz", + "integrity": "sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/typescript-estree": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz", + "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz", + "integrity": "sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.16.0", + "@typescript-eslint/utils": "8.16.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz", + "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz", + "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz", + "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/typescript-estree": "8.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz", + "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.16.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "license": "MIT", + "optional": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true, + "license": "BSD-3-Clause OR MIT", + "optional": true, + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/antlr4": { + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.2.tgz", + "integrity": "sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=16" + } + }, + "node_modules/antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "license": "ISC", + "optional": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/ast-parents": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz", + "integrity": "sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bigint-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", + "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "bindings": "^1.3.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/boxen/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/boxen/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/cbor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", + "dev": true, + "license": "MIT", + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", + "dev": true, + "license": "WTFPL", + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 6" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cipher-base": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/cli-table3/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "optional": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC", + "optional": true + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/death": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT", + "optional": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", + "dev": true, + "dependencies": { + "heap": ">= 0.2.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", + "dev": true, + "license": "MIT" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "license": "MIT", + "optional": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=0.12.0" + }, + "optionalDependencies": { + "source-map": "~0.2.0" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "dev": true, + "optional": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", + "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.15.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.5", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eth-gas-reporter": { + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@solidity-parser/parser": "^0.14.0", + "axios": "^1.5.1", + "cli-table3": "^0.5.0", + "colors": "1.4.0", + "ethereum-cryptography": "^1.0.3", + "ethers": "^5.7.2", + "fs-readdir-recursive": "^1.1.0", + "lodash": "^4.17.14", + "markdown-table": "^1.1.3", + "mocha": "^10.2.0", + "req-cwd": "^2.0.0", + "sha1": "^1.1.1", + "sync-request": "^6.0.0" + }, + "peerDependencies": { + "@codechecks/client": "^0.1.0" + }, + "peerDependenciesMeta": { + "@codechecks/client": { + "optional": true + } + } + }, + "node_modules/eth-gas-reporter/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/eth-gas-reporter/node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/axios": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz", + "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/eth-gas-reporter/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz", + "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.4.0" + } + }, + "node_modules/ethereum-bloom-filters/node_modules/@noble/hashes": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", + "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "deprecated": "This library has been deprecated and usage is discouraged.", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-abi/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ethers": { + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/ethers/node_modules/@types/node": { + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/ethers/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/extra-bigint": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/extra-bigint/-/extra-bigint-1.2.0.tgz", + "integrity": "sha512-F9T/pcT5xPZTjlFMKGCZgBY2/jKqEPxXHT4kLSwsa7gp7D05nQq8z9NzRTzVy5Z4AOO1E/iD9r9OBz4csGD7nw==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-mock": { + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-11.1.5.tgz", + "integrity": "sha512-KHmZDnZ1ry0pCTrX4YG5DtThHi0MH+GNI9caESnzX/nMJBrvppUHMvLx47M0WY9oAtKOMiPfZDRpxhlHg89BOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/glob-to-regexp": "^0.4.4", + "dequal": "^2.0.3", + "glob-to-regexp": "^0.4.1", + "is-subset": "^0.1.1", + "regexparam": "^3.0.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependenciesMeta": { + "node-fetch": { + "optional": true + } + } + }, + "node_modules/fhevm": { + "version": "0.6.0-0", + "resolved": "https://registry.npmjs.org/fhevm/-/fhevm-0.6.0-0.tgz", + "integrity": "sha512-Gvd7a5T7JTU3OFHy2eRrvRTTmXWwSalSSsBdE0X0C0nTnTow5sYsQYkQqIZcYZNpZq1dCcoCgp/gYbeNDHUDNw==", + "dev": true, + "license": "BSD-3-Clause-Clear", + "dependencies": { + "@openzeppelin/contracts": "^5.0.1", + "extra-bigint": "^1.1.18", + "sqlite3": "^5.1.7" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/fhevm-core-contracts": { + "version": "0.1.0-2", + "resolved": "https://registry.npmjs.org/fhevm-core-contracts/-/fhevm-core-contracts-0.1.0-2.tgz", + "integrity": "sha512-lTUodggGV4+pZVFRKRb22t3rWyfR8iFZLgNxRBozgAEUSsIDe16PI9vn8PkfJzJJdOlPk9XsTY6/s1pACDbwfA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/fhevmjs": { + "version": "0.6.0-16", + "resolved": "https://registry.npmjs.org/fhevmjs/-/fhevmjs-0.6.0-16.tgz", + "integrity": "sha512-SWteSWQ0qVLHzwVzLcxdpeIRXw4kX5qJmcGHYUjV6CtwMIlphyoMZKt2Dg5K7TMb+K8PMLF3/MnAnjO5O49jvQ==", + "dev": true, + "license": "BSD-3-Clause-Clear", + "dependencies": { + "bigint-buffer": "^1.1.5", + "commander": "^11.0.0", + "fetch-mock": "^11.1.3", + "keccak": "^3.0.4", + "node-tfhe": "^0.9.1", + "node-tkms": "0.9.0-rc36", + "tfhe": "^0.9.1", + "tkms": "0.9.0-rc36", + "wasm-feature-detect": "^1.8.0" + }, + "bin": { + "fhevm": "bin/fhevm.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" + }, + "node_modules/fmix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", + "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "imul": "^1.0.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true, + "license": "MIT" + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ghost-testrpc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" + }, + "bin": { + "testrpc-sc": "index.js" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "15.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", + "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globby/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/globby/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globby/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hardhat": { + "version": "2.22.16", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.16.tgz", + "integrity": "sha512-d52yQZ09u0roL6GlgJSvtknsBtIuj9JrJ/U8VMzr/wue+gO5v2tQayvOX6llerlR57Zw2EOTQjLAt6RpHvjwHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/edr": "^0.6.4", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "boxen": "^5.1.2", + "chokidar": "^4.0.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^5.0.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "json-stream-stringify": "^3.1.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "picocolors": "^1.1.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.8.26", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tinyglobby": "^0.2.6", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + }, + "bin": { + "hardhat": "internal/cli/bootstrap.js" + }, + "peerDependencies": { + "ts-node": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/hardhat-deploy": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.12.4.tgz", + "integrity": "sha512-bYO8DIyeGxZWlhnMoCBon9HNZb6ji0jQn7ngP1t5UmGhC8rQYhji7B73qETMOFhzt5ECZPr+U52duj3nubsqdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/contracts": "^5.7.0", + "@ethersproject/providers": "^5.7.2", + "@ethersproject/solidity": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wallet": "^5.7.0", + "@types/qs": "^6.9.7", + "axios": "^0.21.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "ethers": "^5.7.0", + "form-data": "^4.0.0", + "fs-extra": "^10.0.0", + "match-all": "^1.2.6", + "murmur-128": "^0.2.1", + "qs": "^6.9.4", + "zksync-ethers": "^5.0.0" + } + }, + "node_modules/hardhat-deploy/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/hardhat-deploy/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/hardhat-deploy/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/hardhat-deploy/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/hardhat-deploy/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/hardhat-deploy/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/hardhat-deploy/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hardhat-deploy/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hardhat-deploy/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/hardhat-deploy/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/hardhat-gas-reporter": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz", + "integrity": "sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.25", + "sha1": "^1.1.1" + }, + "peerDependencies": { + "hardhat": "^2.0.2" + } + }, + "node_modules/hardhat-ignore-warnings": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/hardhat-ignore-warnings/-/hardhat-ignore-warnings-0.2.12.tgz", + "integrity": "sha512-SaxCLKzYBMk3Rd1275TnanUmmxwgU+bu4Ekf2MKcqXxxt6xTGcPTtTaM+USrLgmejZHC4Itg/PaWITlOp4RL3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^5.1.0", + "node-interval-tree": "^2.0.1", + "solidity-comments": "^0.0.2" + } + }, + "node_modules/hardhat-ignore-warnings/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hardhat-preprocessor": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/hardhat-preprocessor/-/hardhat-preprocessor-0.1.5.tgz", + "integrity": "sha512-j8m44mmPxpxAAd0G8fPHRHOas/INZdzptSur0TNJvMEGcFdLDhbHHxBcqZVQ/bmiW42q4gC60AP4CXn9EF018g==", + "dev": true, + "license": "MIT", + "dependencies": { + "murmur-128": "^0.2.1" + }, + "peerDependencies": { + "hardhat": "^2.0.5" + } + }, + "node_modules/hardhat/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/hardhat/node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/hardhat/node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/hardhat/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/hardhat/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/hardhat/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/hardhat/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/hardhat/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC", + "optional": true + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true, + "license": "MIT" + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "license": "BSD-2-Clause", + "optional": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "^10.0.3" + } + }, + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true, + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imul": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", + "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "license": "ISC", + "optional": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "devOptional": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fp-ts": "^1.0.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", + "optional": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "license": "MIT", + "optional": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT", + "optional": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stream-stringify": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz", + "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=7.10.1" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "license": "ISC", + "optional": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/match-all": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", + "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", + "dev": true, + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true, + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "obliterator": "^2.0.0" + } + }, + "node_modules/mocha": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/murmur-128": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz", + "integrity": "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "encode-utf8": "^1.0.2", + "fmix": "^0.1.0", + "imul": "^1.0.0" + } + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-abi": { + "version": "3.71.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz", + "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-abi/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "license": "MIT", + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "dev": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/node-gyp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-interval-tree": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-interval-tree/-/node-interval-tree-2.1.2.tgz", + "integrity": "sha512-bJ9zMDuNGzVQg1xv0bCPzyEDxHgbrx7/xGj6CDokvizZZmastPsOh0JJLuY8wA5q2SfX1TLNMk7XNV8WxbGxzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shallowequal": "^1.1.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/node-tfhe": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/node-tfhe/-/node-tfhe-0.9.1.tgz", + "integrity": "sha512-M2CbUVX4DQneaaK/4fygy9lW0zjOOzM8yGWAgbKGRt/Gd07zaloFEGGHW7dbmUaHo022q1uo7nzxyYhe4UgqCw==", + "dev": true, + "license": "BSD-3-Clause-Clear" + }, + "node_modules/node-tkms": { + "version": "0.9.0-rc36", + "resolved": "https://registry.npmjs.org/node-tkms/-/node-tkms-0.9.0-rc36.tgz", + "integrity": "sha512-oGqJfjvb/igd9VgQaqYbzKc+CmrnQ/eY0ShmdE3JDKXL3C4Re/tBswT0KkWmlT1aM+Lxt5ihRNOs2oHtrPqr5w==", + "dev": true, + "license": "BSD-3-Clause-Clear" + }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.19" + } + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ordinal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", + "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", + "dev": true + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/prettier-plugin-solidity": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.4.1.tgz", + "integrity": "sha512-Mq8EtfacVZ/0+uDKTtHZGW3Aa7vEbX/BNx63hmVg6YTiTXSiuKP0amj0G6pGwjmLaOfymWh3QgXEZkjQbU8QRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@solidity-parser/parser": "^0.18.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "prettier": ">=2.3.0" + } + }, + "node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/parser": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", + "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==", + "dev": true, + "license": "MIT" + }, + "node_modules/prettier-plugin-solidity/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "license": "ISC", + "optional": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "license": "MIT", + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", + "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/recursive-readdir/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/recursive-readdir/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/regexparam": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-3.0.0.tgz", + "integrity": "sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/req-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "req-from": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/req-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/req-from/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/sc-istanbul": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "istanbul": "lib/cli.js" + } + }, + "node_modules/sc-istanbul/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/sc-istanbul/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/sc-istanbul/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sc-istanbul/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sc-istanbul/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sc-istanbul/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sc-istanbul/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/sc-istanbul/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/sc-istanbul/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true, + "license": "MIT" + }, + "node_modules/secp256k1": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz", + "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/secp256k1/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/secp256k1/node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/secp256k1/node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC", + "optional": true + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shelljs/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/shelljs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/shelljs/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC", + "optional": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "license": "MIT", + "optional": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/solc": { + "version": "0.8.26", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.26.tgz", + "integrity": "sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "command-exists": "^1.2.8", + "commander": "^8.1.0", + "follow-redirects": "^1.12.1", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solc.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/solc/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/solc/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solhint": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/solhint/-/solhint-3.6.2.tgz", + "integrity": "sha512-85EeLbmkcPwD+3JR7aEMKsVC9YrRSxd4qkXuMzrlf7+z2Eqdfm1wHWq1ffTuo5aDhoZxp2I9yF3QkxZOxOL7aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@solidity-parser/parser": "^0.16.0", + "ajv": "^6.12.6", + "antlr4": "^4.11.0", + "ast-parents": "^0.0.1", + "chalk": "^4.1.2", + "commander": "^10.0.0", + "cosmiconfig": "^8.0.0", + "fast-diff": "^1.2.0", + "glob": "^8.0.3", + "ignore": "^5.2.4", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "pluralize": "^8.0.0", + "semver": "^7.5.2", + "strip-ansi": "^6.0.1", + "table": "^6.8.1", + "text-table": "^0.2.0" + }, + "bin": { + "solhint": "solhint.js" + }, + "optionalDependencies": { + "prettier": "^2.8.3" + } + }, + "node_modules/solhint-plugin-prettier": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/solhint-plugin-prettier/-/solhint-plugin-prettier-0.0.5.tgz", + "integrity": "sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "peerDependencies": { + "prettier": "^1.15.0 || ^2.0.0", + "prettier-plugin-solidity": "^1.0.0-alpha.14" + } + }, + "node_modules/solhint/node_modules/@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "node_modules/solhint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/solhint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/solhint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/solhint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/solhint/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/solhint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/solhint/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/solhint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/solidity-comments": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/solidity-comments/-/solidity-comments-0.0.2.tgz", + "integrity": "sha512-G+aK6qtyUfkn1guS8uzqUeua1dURwPlcOjoTYW/TwmXAcE7z/1+oGCfZUdMSe4ZMKklNbVZNiG5ibnF8gkkFfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + }, + "optionalDependencies": { + "solidity-comments-darwin-arm64": "0.0.2", + "solidity-comments-darwin-x64": "0.0.2", + "solidity-comments-freebsd-x64": "0.0.2", + "solidity-comments-linux-arm64-gnu": "0.0.2", + "solidity-comments-linux-arm64-musl": "0.0.2", + "solidity-comments-linux-x64-gnu": "0.0.2", + "solidity-comments-linux-x64-musl": "0.0.2", + "solidity-comments-win32-arm64-msvc": "0.0.2", + "solidity-comments-win32-ia32-msvc": "0.0.2", + "solidity-comments-win32-x64-msvc": "0.0.2" + } + }, + "node_modules/solidity-comments-darwin-arm64": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/solidity-comments-darwin-arm64/-/solidity-comments-darwin-arm64-0.0.2.tgz", + "integrity": "sha512-HidWkVLSh7v+Vu0CA7oI21GWP/ZY7ro8g8OmIxE8oTqyMwgMbE8F1yc58Sj682Hj199HCZsjmtn1BE4PCbLiGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/solidity-comments-darwin-x64": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/solidity-comments-darwin-x64/-/solidity-comments-darwin-x64-0.0.2.tgz", + "integrity": "sha512-Zjs0Ruz6faBTPT6fBecUt6qh4CdloT8Bwoc0+qxRoTn9UhYscmbPQkUgQEbS0FQPysYqVzzxJB4h1Ofbf4wwtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/solidity-comments-freebsd-x64": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/solidity-comments-freebsd-x64/-/solidity-comments-freebsd-x64-0.0.2.tgz", + "integrity": "sha512-8Qe4mpjuAxFSwZJVk7B8gAoLCdbtS412bQzBwk63L8dmlHogvE39iT70aAk3RHUddAppT5RMBunlPUCFYJ3ZTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/solidity-comments-linux-arm64-gnu": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/solidity-comments-linux-arm64-gnu/-/solidity-comments-linux-arm64-gnu-0.0.2.tgz", + "integrity": "sha512-spkb0MZZnmrP+Wtq4UxP+nyPAVRe82idOjqndolcNR0S9Xvu4ebwq+LvF4HiUgjTDmeiqYiFZQ8T9KGdLSIoIg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/solidity-comments-linux-arm64-musl": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/solidity-comments-linux-arm64-musl/-/solidity-comments-linux-arm64-musl-0.0.2.tgz", + "integrity": "sha512-guCDbHArcjE+JDXYkxx5RZzY1YF6OnAKCo+sTC5fstyW/KGKaQJNPyBNWuwYsQiaEHpvhW1ha537IvlGek8GqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/solidity-comments-linux-x64-gnu": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/solidity-comments-linux-x64-gnu/-/solidity-comments-linux-x64-gnu-0.0.2.tgz", + "integrity": "sha512-zIqLehBK/g7tvrFmQljrfZXfkEeLt2v6wbe+uFu6kH/qAHZa7ybt8Vc0wYcmjo2U0PeBm15d79ee3AkwbIjFdQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/solidity-comments-linux-x64-musl": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/solidity-comments-linux-x64-musl/-/solidity-comments-linux-x64-musl-0.0.2.tgz", + "integrity": "sha512-R9FeDloVlFGTaVkOlELDVC7+1Tjx5WBPI5L8r0AGOPHK3+jOcRh6sKYpI+VskSPDc3vOO46INkpDgUXrKydlIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/solidity-comments-win32-arm64-msvc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/solidity-comments-win32-arm64-msvc/-/solidity-comments-win32-arm64-msvc-0.0.2.tgz", + "integrity": "sha512-QnWJoCQcJj+rnutULOihN9bixOtYWDdF5Rfz9fpHejL1BtNjdLW1om55XNVHGAHPqBxV4aeQQ6OirKnp9zKsug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/solidity-comments-win32-ia32-msvc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/solidity-comments-win32-ia32-msvc/-/solidity-comments-win32-ia32-msvc-0.0.2.tgz", + "integrity": "sha512-vUg4nADtm/NcOtlIymG23NWJUSuMsvX15nU7ynhGBsdKtt8xhdP3C/zA6vjDk8Jg+FXGQL6IHVQ++g/7rSQi0w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/solidity-comments-win32-x64-msvc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/solidity-comments-win32-x64-msvc/-/solidity-comments-win32-x64-msvc-0.0.2.tgz", + "integrity": "sha512-36j+KUF4V/y0t3qatHm/LF5sCUCBx2UndxE1kq5bOzh/s+nQgatuyB+Pd5BfuPQHdWu2KaExYe20FlAa6NL7+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/solidity-coverage": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.12.tgz", + "integrity": "sha512-8cOB1PtjnjFRqOgwFiD8DaUsYJtVJ6+YdXQtSZDrLGf8cdhhh8xzTtGzVTGeBf15kTv0v7lYPJlV/az7zLEPJw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.18.0", + "chalk": "^2.4.2", + "death": "^1.1.0", + "difflib": "^0.2.4", + "fs-extra": "^8.1.0", + "ghost-testrpc": "^0.0.2", + "global-modules": "^2.0.0", + "globby": "^10.0.1", + "jsonschema": "^1.2.4", + "lodash": "^4.17.21", + "mocha": "^10.2.0", + "node-emoji": "^1.10.0", + "pify": "^4.0.1", + "recursive-readdir": "^2.2.2", + "sc-istanbul": "^0.4.5", + "semver": "^7.3.4", + "shelljs": "^0.8.3", + "web3-utils": "^1.3.6" + }, + "bin": { + "solidity-coverage": "plugins/bin.js" + }, + "peerDependencies": { + "hardhat": "^2.11.0" + } + }, + "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", + "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==", + "dev": true, + "license": "MIT" + }, + "node_modules/solidity-coverage/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/solidity-coverage/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/solidity-coverage/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/solidity-coverage/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/sqlite3": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", + "integrity": "sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^7.0.0", + "prebuild-install": "^7.1.1", + "tar": "^6.1.11" + }, + "optionalDependencies": { + "node-gyp": "8.x" + }, + "peerDependencies": { + "node-gyp": "8.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/sqlite3/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT" + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true, + "license": "WTFPL OR MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sync-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-port": "^3.1.0" + } + }, + "node_modules/table": { + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tfhe": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/tfhe/-/tfhe-0.9.1.tgz", + "integrity": "sha512-kmtl7KfCCZJaFhm9lUYsTtat+yT0qzOiO6bOidM2Pt7/7jptkbS2/myeGHxb9qi2/aJ30g2joo1euKZPa207tg==", + "dev": true, + "license": "BSD-3-Clause-Clear" + }, + "node_modules/then-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/then-request/node_modules/@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/then-request/node_modules/form-data": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.2.tgz", + "integrity": "sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", + "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tkms": { + "version": "0.9.0-rc36", + "resolved": "https://registry.npmjs.org/tkms/-/tkms-0.9.0-rc36.tgz", + "integrity": "sha512-8IoRi6mYgnrmwTNBe/ejvHOFRhs5M6o2Ls2RVXCgAzSVBBBWJC1O8hquqlciHfME/VooUD4iokzEaBfADvoXZw==", + "dev": true, + "license": "BSD-3-Clause-Clear" + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-command-line-args": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "dev": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "bin": { + "write-markdown": "dist/write-markdown.js" + } + }, + "node_modules/ts-command-line-args/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-command-line-args/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-command-line-args/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-command-line-args/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ts-command-line-args/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-command-line-args/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "typescript": ">=3.7.0" + } + }, + "node_modules/ts-generator": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ts-generator/-/ts-generator-0.1.1.tgz", + "integrity": "sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mkdirp": "^0.5.2", + "@types/prettier": "^2.1.1", + "@types/resolve": "^0.0.8", + "chalk": "^2.4.1", + "glob": "^7.1.2", + "mkdirp": "^0.5.1", + "prettier": "^2.1.2", + "resolve": "^1.8.1", + "ts-essentials": "^1.0.0" + }, + "bin": { + "ts-generator": "dist/cli/run.js" + } + }, + "node_modules/ts-generator/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/ts-generator/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ts-generator/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ts-generator/node_modules/ts-essentials": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz", + "integrity": "sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typechain": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "bin": { + "typechain": "dist/cli/cli.js" + }, + "peerDependencies": { + "typescript": ">=4.3.0" + } + }, + "node_modules/typechain/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/typechain/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/typechain/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typechain/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/typechain/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/typechain/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/typechain/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.16.0.tgz", + "integrity": "sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.16.0", + "@typescript-eslint/parser": "8.16.0", + "@typescript-eslint/utils": "8.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, + "license": "MIT" + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "license": "ISC", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/wasm-feature-detect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/wasm-feature-detect/-/wasm-feature-detect-1.8.0.tgz", + "integrity": "sha512-zksaLKM2fVlnB5jQQDqKXXwYHLQUVH9es+5TOOHwGOVJOCeRBCiPjwSg+3tN2AdTCzjgli4jijCH290kXb/zWQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/web3-utils": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz", + "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", + "dev": true, + "license": "LGPL-3.0", + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereum-cryptography": "^2.1.2", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "license": "MIT", + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zksync-ethers": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/zksync-ethers/-/zksync-ethers-5.10.0.tgz", + "integrity": "sha512-OAjTGAHF9wbdkRGkj7XZuF/a1Sk/FVbwH4pmLjAKlR7mJ7sQtQhBhrPU2dCc67xLaNvEESPfwil19ES5wooYFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ethers": "~5.7.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "ethers": "~5.7.0" + } + }, + "node_modules/zksync-ethers/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + } + } +} diff --git a/e2e/package.json b/e2e/package.json index 6e9208c..8b951aa 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -36,7 +36,7 @@ "ethers": "^6.8.0", "fhevm": "0.6.0-0", "fhevm-core-contracts": "0.1.0-2", - "fhevmjs": "0.6.0-13", + "fhevmjs": "^0.6.0-16", "fs-extra": "^10.1.0", "globals": "^15.9.0", "hardhat": "^2.22.8", diff --git a/e2e/pnpm-lock.yaml b/e2e/pnpm-lock.yaml deleted file mode 100644 index 7ae17a8..0000000 --- a/e2e/pnpm-lock.yaml +++ /dev/null @@ -1,6674 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - extra-bigint: - specifier: ^1.1.18 - version: 1.2.0 - sqlite3: - specifier: ^5.1.7 - version: 5.1.7 - devDependencies: - '@eslint/js': - specifier: ^9.9.0 - version: 9.13.0 - '@nomicfoundation/hardhat-chai-matchers': - specifier: ^2.0.0 - version: 2.0.8(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)))(chai@4.5.0)(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - '@nomicfoundation/hardhat-ethers': - specifier: ^3.0.0 - version: 3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - '@nomicfoundation/hardhat-network-helpers': - specifier: ^1.0.6 - version: 1.0.12(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - '@nomicfoundation/hardhat-toolbox': - specifier: ^3.0.0 - version: 3.0.0(fjzr5sm4cyfazeo2vaqmv3tkyy) - '@nomicfoundation/hardhat-verify': - specifier: ^1.0.0 - version: 1.1.1(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - '@openzeppelin/contracts': - specifier: ^5.0.2 - version: 5.1.0 - '@trivago/prettier-plugin-sort-imports': - specifier: ^4.0.0 - version: 4.3.0(prettier@2.8.8) - '@typechain/ethers-v6': - specifier: ^0.4.0 - version: 0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3) - '@typechain/hardhat': - specifier: ^8.0.0 - version: 8.0.3(@typechain/ethers-v6@0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3))(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))(typechain@8.3.2(typescript@5.6.3)) - '@types/chai': - specifier: ^4.3.4 - version: 4.3.20 - '@types/eslint__js': - specifier: ^8.42.3 - version: 8.42.3 - '@types/fs-extra': - specifier: ^9.0.13 - version: 9.0.13 - '@types/mocha': - specifier: ^10.0.0 - version: 10.0.9 - '@types/node': - specifier: ^18.11.9 - version: 18.19.57 - '@typescript-eslint/eslint-plugin': - specifier: ^8.0.1 - version: 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/parser': - specifier: ^8.0.1 - version: 8.10.0(eslint@9.13.0)(typescript@5.6.3) - bigint-buffer: - specifier: ^1.1.5 - version: 1.1.5 - chai: - specifier: ^4.3.7 - version: 4.5.0 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 - dotenv: - specifier: ^16.0.3 - version: 16.4.5 - eslint: - specifier: ^9.9.0 - version: 9.13.0 - eslint-config-prettier: - specifier: ^8.5.0 - version: 8.10.0(eslint@9.13.0) - ethers: - specifier: ^6.8.0 - version: 6.13.4 - fhevm: - specifier: 0.6.0-0 - version: 0.6.0-0 - fhevm-core-contracts: - specifier: 0.1.0-2 - version: 0.1.0-2 - fhevmjs: - specifier: 0.6.0-13 - version: 0.6.0-13 - fs-extra: - specifier: ^10.1.0 - version: 10.1.0 - globals: - specifier: ^15.9.0 - version: 15.11.0 - hardhat: - specifier: ^2.22.8 - version: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) - hardhat-deploy: - specifier: ^0.12.4 - version: 0.12.4 - hardhat-gas-reporter: - specifier: ^1.0.9 - version: 1.0.10(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - hardhat-ignore-warnings: - specifier: ^0.2.11 - version: 0.2.11 - hardhat-preprocessor: - specifier: ^0.1.5 - version: 0.1.5(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - lodash: - specifier: ^4.17.21 - version: 4.17.21 - mocha: - specifier: ^10.1.0 - version: 10.7.3 - prettier: - specifier: ^2.8.4 - version: 2.8.8 - prettier-plugin-solidity: - specifier: ^1.1.2 - version: 1.4.1(prettier@2.8.8) - rimraf: - specifier: ^4.1.2 - version: 4.4.1 - solhint: - specifier: ^3.4.0 - version: 3.6.2(typescript@5.6.3) - solhint-plugin-prettier: - specifier: ^0.0.5 - version: 0.0.5(prettier-plugin-solidity@1.4.1(prettier@2.8.8))(prettier@2.8.8) - solidity-coverage: - specifier: 0.8.12 - version: 0.8.12(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - ts-generator: - specifier: ^0.1.1 - version: 0.1.1 - ts-node: - specifier: ^10.9.1 - version: 10.9.2(@types/node@18.19.57)(typescript@5.6.3) - typechain: - specifier: ^8.2.0 - version: 8.3.2(typescript@5.6.3) - typescript: - specifier: ^5.5.4 - version: 5.6.3 - typescript-eslint: - specifier: ^8.0.1 - version: 8.10.0(eslint@9.13.0)(typescript@5.6.3) - -packages: - - '@adraffy/ens-normalize@1.10.1': - resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} - - '@babel/code-frame@7.25.7': - resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.17.7': - resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.25.7': - resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-environment-visitor@7.24.7': - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.24.7': - resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-hoist-variables@7.24.7': - resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-split-export-declaration@7.24.7': - resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.25.7': - resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.7': - resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.25.7': - resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.25.8': - resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/template@7.25.7': - resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.23.2': - resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.17.0': - resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.25.8': - resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} - engines: {node: '>=6.9.0'} - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.11.1': - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.18.0': - resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.7.0': - resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.1.0': - resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.13.0': - resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.4': - resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.2.1': - resolution: {integrity: sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@ethereumjs/rlp@4.0.1': - resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} - engines: {node: '>=14'} - hasBin: true - - '@ethereumjs/util@8.1.0': - resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} - engines: {node: '>=14'} - - '@ethersproject/abi@5.7.0': - resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} - - '@ethersproject/abstract-provider@5.7.0': - resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} - - '@ethersproject/abstract-signer@5.7.0': - resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} - - '@ethersproject/address@5.7.0': - resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} - - '@ethersproject/base64@5.7.0': - resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} - - '@ethersproject/basex@5.7.0': - resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} - - '@ethersproject/bignumber@5.7.0': - resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} - - '@ethersproject/bytes@5.7.0': - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} - - '@ethersproject/constants@5.7.0': - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} - - '@ethersproject/contracts@5.7.0': - resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} - - '@ethersproject/hash@5.7.0': - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} - - '@ethersproject/hdnode@5.7.0': - resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} - - '@ethersproject/json-wallets@5.7.0': - resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} - - '@ethersproject/keccak256@5.7.0': - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} - - '@ethersproject/logger@5.7.0': - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - - '@ethersproject/networks@5.7.1': - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} - - '@ethersproject/pbkdf2@5.7.0': - resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} - - '@ethersproject/properties@5.7.0': - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} - - '@ethersproject/providers@5.7.2': - resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} - - '@ethersproject/random@5.7.0': - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} - - '@ethersproject/rlp@5.7.0': - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} - - '@ethersproject/sha2@5.7.0': - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} - - '@ethersproject/signing-key@5.7.0': - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} - - '@ethersproject/solidity@5.7.0': - resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} - - '@ethersproject/strings@5.7.0': - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} - - '@ethersproject/transactions@5.7.0': - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} - - '@ethersproject/units@5.7.0': - resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} - - '@ethersproject/wallet@5.7.0': - resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} - - '@ethersproject/web@5.7.1': - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} - - '@ethersproject/wordlists@5.7.0': - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} - - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - - '@gar/promisify@1.1.3': - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - - '@humanfs/core@0.19.0': - resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.5': - resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@metamask/eth-sig-util@4.0.1': - resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} - engines: {node: '>=12.0.0'} - - '@noble/curves@1.2.0': - resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} - - '@noble/curves@1.4.2': - resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} - - '@noble/hashes@1.2.0': - resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} - - '@noble/hashes@1.3.2': - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} - - '@noble/hashes@1.4.0': - resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} - engines: {node: '>= 16'} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@noble/secp256k1@1.7.1': - resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@nomicfoundation/edr-darwin-arm64@0.6.4': - resolution: {integrity: sha512-QNQErISLgssV9+qia8sIjRANqtbW8snSDvjspixT/kSQ5ZSGxxctTg7x72wPSrcu8+EBEveIe5uqENIp5GH8HQ==} - engines: {node: '>= 18'} - - '@nomicfoundation/edr-darwin-x64@0.6.4': - resolution: {integrity: sha512-cjVmREiwByyc9+oGfvAh49IAw+oVJHF9WWYRD+Tm/ZlSpnEVWxrGNBak2bd/JSYjn+mZE7gmWS4SMRi4nKaLUg==} - engines: {node: '>= 18'} - - '@nomicfoundation/edr-linux-arm64-gnu@0.6.4': - resolution: {integrity: sha512-96o9kRIVD6W5VkgKvUOGpWyUGInVQ5BRlME2Fa36YoNsRQMaKtmYJEU0ACosYES6ZTpYC8U5sjMulvPtVoEfOA==} - engines: {node: '>= 18'} - - '@nomicfoundation/edr-linux-arm64-musl@0.6.4': - resolution: {integrity: sha512-+JVEW9e5plHrUfQlSgkEj/UONrIU6rADTEk+Yp9pbe+mzNkJdfJYhs5JYiLQRP4OjxH4QOrXI97bKU6FcEbt5Q==} - engines: {node: '>= 18'} - - '@nomicfoundation/edr-linux-x64-gnu@0.6.4': - resolution: {integrity: sha512-nzYWW+fO3EZItOeP4CrdMgDXfaGBIBkKg0Y/7ySpUxLqzut40O4Mb0/+quqLAFkacUSWMlFp8nsmypJfOH5zoA==} - engines: {node: '>= 18'} - - '@nomicfoundation/edr-linux-x64-musl@0.6.4': - resolution: {integrity: sha512-QFRoE9qSQ2boRrVeQ1HdzU+XN7NUgwZ1SIy5DQt4d7jCP+5qTNsq8LBNcqhRBOATgO63nsweNUhxX/Suj5r1Sw==} - engines: {node: '>= 18'} - - '@nomicfoundation/edr-win32-x64-msvc@0.6.4': - resolution: {integrity: sha512-2yopjelNkkCvIjUgBGhrn153IBPLwnsDeNiq6oA0WkeM8tGmQi4td+PGi9jAriUDAkc59Yoi2q9hYA6efiY7Zw==} - engines: {node: '>= 18'} - - '@nomicfoundation/edr@0.6.4': - resolution: {integrity: sha512-YgrSuT3yo5ZQkbvBGqQ7hG+RDvz3YygSkddg4tb1Z0Y6pLXFzwrcEwWaJCFAVeeZxdxGfCgGMUYgRVneK+WXkw==} - engines: {node: '>= 18'} - - '@nomicfoundation/ethereumjs-common@4.0.4': - resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} - - '@nomicfoundation/ethereumjs-rlp@5.0.4': - resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} - engines: {node: '>=18'} - hasBin: true - - '@nomicfoundation/ethereumjs-tx@5.0.4': - resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} - engines: {node: '>=18'} - peerDependencies: - c-kzg: ^2.1.2 - peerDependenciesMeta: - c-kzg: - optional: true - - '@nomicfoundation/ethereumjs-util@9.0.4': - resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} - engines: {node: '>=18'} - peerDependencies: - c-kzg: ^2.1.2 - peerDependenciesMeta: - c-kzg: - optional: true - - '@nomicfoundation/hardhat-chai-matchers@2.0.8': - resolution: {integrity: sha512-Z5PiCXH4xhNLASROlSUOADfhfpfhYO6D7Hn9xp8PddmHey0jq704cr6kfU8TRrQ4PUZbpfsZadPj+pCfZdjPIg==} - peerDependencies: - '@nomicfoundation/hardhat-ethers': ^3.0.0 - chai: ^4.2.0 - ethers: ^6.1.0 - hardhat: ^2.9.4 - - '@nomicfoundation/hardhat-ethers@3.0.8': - resolution: {integrity: sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA==} - peerDependencies: - ethers: ^6.1.0 - hardhat: ^2.0.0 - - '@nomicfoundation/hardhat-network-helpers@1.0.12': - resolution: {integrity: sha512-xTNQNI/9xkHvjmCJnJOTyqDSl8uq1rKb2WOVmixQxFtRd7Oa3ecO8zM0cyC2YmOK+jHB9WPZ+F/ijkHg1CoORA==} - peerDependencies: - hardhat: ^2.9.5 - - '@nomicfoundation/hardhat-toolbox@3.0.0': - resolution: {integrity: sha512-MsteDXd0UagMksqm9KvcFG6gNKYNa3GGNCy73iQ6bEasEgg2v8Qjl6XA5hjs8o5UD5A3153B6W2BIVJ8SxYUtA==} - peerDependencies: - '@nomicfoundation/hardhat-chai-matchers': ^2.0.0 - '@nomicfoundation/hardhat-ethers': ^3.0.0 - '@nomicfoundation/hardhat-network-helpers': ^1.0.0 - '@nomicfoundation/hardhat-verify': ^1.0.0 - '@typechain/ethers-v6': ^0.4.0 - '@typechain/hardhat': ^8.0.0 - '@types/chai': ^4.2.0 - '@types/mocha': '>=9.1.0' - '@types/node': '>=12.0.0' - chai: ^4.2.0 - ethers: ^6.4.0 - hardhat: ^2.11.0 - hardhat-gas-reporter: ^1.0.8 - solidity-coverage: ^0.8.1 - ts-node: '>=8.0.0' - typechain: ^8.2.0 - typescript: '>=4.5.0' - - '@nomicfoundation/hardhat-verify@1.1.1': - resolution: {integrity: sha512-9QsTYD7pcZaQFEA3tBb/D/oCStYDiEVDN7Dxeo/4SCyHRSm86APypxxdOMEPlGmXsAvd+p1j/dTODcpxb8aztA==} - peerDependencies: - hardhat: ^2.0.4 - - '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': - resolution: {integrity: sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==} - engines: {node: '>= 12'} - - '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2': - resolution: {integrity: sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==} - engines: {node: '>= 12'} - - '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2': - resolution: {integrity: sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==} - engines: {node: '>= 12'} - - '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2': - resolution: {integrity: sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==} - engines: {node: '>= 12'} - - '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2': - resolution: {integrity: sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==} - engines: {node: '>= 12'} - - '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2': - resolution: {integrity: sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==} - engines: {node: '>= 12'} - - '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2': - resolution: {integrity: sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==} - engines: {node: '>= 12'} - - '@nomicfoundation/solidity-analyzer@0.1.2': - resolution: {integrity: sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==} - engines: {node: '>= 12'} - - '@npmcli/fs@1.1.1': - resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} - - '@npmcli/move-file@1.1.2': - resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} - engines: {node: '>=10'} - deprecated: This functionality has been moved to @npmcli/fs - - '@openzeppelin/contracts@5.1.0': - resolution: {integrity: sha512-p1ULhl7BXzjjbha5aqst+QMLY+4/LCWADXOCsmLHRM77AqiPjnd9vvUN9sosUfhL9JGKpZ0TjEGxgvnizmWGSA==} - - '@scure/base@1.1.9': - resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} - - '@scure/bip32@1.1.5': - resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} - - '@scure/bip32@1.4.0': - resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} - - '@scure/bip39@1.1.1': - resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} - - '@scure/bip39@1.3.0': - resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} - - '@sentry/core@5.30.0': - resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} - engines: {node: '>=6'} - - '@sentry/hub@5.30.0': - resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} - engines: {node: '>=6'} - - '@sentry/minimal@5.30.0': - resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} - engines: {node: '>=6'} - - '@sentry/node@5.30.0': - resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} - engines: {node: '>=6'} - - '@sentry/tracing@5.30.0': - resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} - engines: {node: '>=6'} - - '@sentry/types@5.30.0': - resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} - engines: {node: '>=6'} - - '@sentry/utils@5.30.0': - resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} - engines: {node: '>=6'} - - '@solidity-parser/parser@0.14.5': - resolution: {integrity: sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==} - - '@solidity-parser/parser@0.16.2': - resolution: {integrity: sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==} - - '@solidity-parser/parser@0.18.0': - resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==} - - '@tootallnate/once@1.1.2': - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} - - '@trivago/prettier-plugin-sort-imports@4.3.0': - resolution: {integrity: sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==} - peerDependencies: - '@vue/compiler-sfc': 3.x - prettier: 2.x - 3.x - peerDependenciesMeta: - '@vue/compiler-sfc': - optional: true - - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@typechain/ethers-v6@0.4.3': - resolution: {integrity: sha512-TrxBsyb4ryhaY9keP6RzhFCviWYApcLCIRMPyWaKp2cZZrfaM3QBoxXTnw/eO4+DAY3l+8O0brNW0WgeQeOiDA==} - peerDependencies: - ethers: 6.x - typechain: ^8.3.1 - typescript: '>=4.7.0' - - '@typechain/hardhat@8.0.3': - resolution: {integrity: sha512-MytSmJJn+gs7Mqrpt/gWkTCOpOQ6ZDfRrRT2gtZL0rfGe4QrU4x9ZdW15fFbVM/XTa+5EsKiOMYXhRABibNeng==} - peerDependencies: - '@typechain/ethers-v6': ^0.4.3 - ethers: ^6.1.0 - hardhat: ^2.9.9 - typechain: ^8.3.1 - - '@types/bn.js@4.11.6': - resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} - - '@types/bn.js@5.1.6': - resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} - - '@types/chai-as-promised@7.1.8': - resolution: {integrity: sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/concat-stream@1.6.1': - resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - - '@types/eslint__js@8.42.3': - resolution: {integrity: sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - - '@types/form-data@0.0.33': - resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==} - - '@types/fs-extra@9.0.13': - resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - - '@types/glob-to-regexp@0.4.4': - resolution: {integrity: sha512-nDKoaKJYbnn1MZxUY0cA1bPmmgZbg0cTq7Rh13d0KWYNOiKbqoR+2d89SnRPszGh7ROzSwZ/GOjZ4jPbmmZ6Eg==} - - '@types/glob@7.2.0': - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/lru-cache@5.1.1': - resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} - - '@types/minimatch@5.1.2': - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - - '@types/mkdirp@0.5.2': - resolution: {integrity: sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==} - - '@types/mocha@10.0.9': - resolution: {integrity: sha512-sicdRoWtYevwxjOHNMPTl3vSfJM6oyW8o1wXeI7uww6b6xHg8eBznQDNSGBCDJmsE8UMxP05JgZRtsKbTqt//Q==} - - '@types/node@10.17.60': - resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} - - '@types/node@18.19.57': - resolution: {integrity: sha512-I2ioBd/IPrYDMv9UNR5NlPElOZ68QB7yY5V2EsLtSrTO0LM0PnCEFF9biLWHf5k+sIy4ohueCV9t4gk1AEdlVA==} - - '@types/node@22.7.5': - resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} - - '@types/node@8.10.66': - resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} - - '@types/pbkdf2@3.1.2': - resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} - - '@types/prettier@2.7.3': - resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - - '@types/qs@6.9.16': - resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} - - '@types/resolve@0.0.8': - resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==} - - '@types/secp256k1@4.0.6': - resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} - - '@typescript-eslint/eslint-plugin@8.10.0': - resolution: {integrity: sha512-phuB3hoP7FFKbRXxjl+DRlQDuJqhpOnm5MmtROXyWi3uS/Xg2ZXqiQfcG2BJHiN4QKyzdOJi3NEn/qTnjUlkmQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@8.10.0': - resolution: {integrity: sha512-E24l90SxuJhytWJ0pTQydFT46Nk0Z+bsLKo/L8rtQSL93rQ6byd1V/QbDpHUTdLPOMsBCcYXZweADNCfOCmOAg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@8.10.0': - resolution: {integrity: sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@8.10.0': - resolution: {integrity: sha512-PCpUOpyQSpxBn230yIcK+LeCQaXuxrgCm2Zk1S+PTIRJsEfU6nJ0TtwyH8pIwPK/vJoA+7TZtzyAJSGBz+s/dg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@8.10.0': - resolution: {integrity: sha512-k/E48uzsfJCRRbGLapdZgrX52csmWJ2rcowwPvOZ8lwPUv3xW6CcFeJAXgx4uJm+Ge4+a4tFOkdYvSpxhRhg1w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.10.0': - resolution: {integrity: sha512-3OE0nlcOHaMvQ8Xu5gAfME3/tWVDpb/HxtpUZ1WeOAksZ/h/gwrBzCklaGzwZT97/lBbbxJ16dMA98JMEngW4w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@8.10.0': - resolution: {integrity: sha512-Oq4uZ7JFr9d1ZunE/QKy5egcDRXT/FrS2z/nlxzPua2VHFtmMvFNDvpq1m/hq0ra+T52aUezfcjGRIB7vNJF9w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - - '@typescript-eslint/visitor-keys@8.10.0': - resolution: {integrity: sha512-k8nekgqwr7FadWk548Lfph6V3r9OVqjzAIVskE7orMZR23cGJjAOVazsZSJW+ElyjfTM4wx/1g88Mi70DDtG9A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - abbrev@1.0.9: - resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} - - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - - acorn@8.13.0: - resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} - engines: {node: '>=0.4.0'} - hasBin: true - - adm-zip@0.4.16: - resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} - engines: {node: '>=0.3.0'} - - aes-js@3.0.0: - resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - - aes-js@4.0.0-beta.5: - resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - - amdefine@1.0.1: - resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} - engines: {node: '>=0.4.2'} - - ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - antlr4@4.13.2: - resolution: {integrity: sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==} - engines: {node: '>=16'} - - antlr4ts@0.5.0-alpha.4: - resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - array-back@3.1.0: - resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} - engines: {node: '>=6'} - - array-back@4.0.2: - resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} - engines: {node: '>=8'} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array-uniq@1.0.3: - resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} - engines: {node: '>=0.10.0'} - - asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - ast-parents@0.0.1: - resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} - - astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - - async@1.5.2: - resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - - axios@0.21.4: - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} - - axios@1.7.7: - resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bech32@1.1.4: - resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - blakejs@1.2.1: - resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} - - bn.js@4.11.6: - resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} - - bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - boxen@5.1.2: - resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} - engines: {node: '>=10'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - bs58check@2.1.2: - resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - cacache@15.3.0: - resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} - engines: {node: '>= 10'} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - caseless@0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - - cbor@8.1.0: - resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} - engines: {node: '>=12.19'} - - chai-as-promised@7.1.2: - resolution: {integrity: sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==} - peerDependencies: - chai: '>= 2.1.2 < 6' - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chokidar@4.0.1: - resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} - engines: {node: '>= 14.16.0'} - - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - - cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - cli-boxes@2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - - cli-table3@0.5.1: - resolution: {integrity: sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==} - engines: {node: '>=6'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - - colors@1.4.0: - resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} - engines: {node: '>=0.1.90'} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - - command-line-args@5.2.1: - resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} - engines: {node: '>=4.0.0'} - - command-line-usage@6.1.3: - resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} - engines: {node: '>=8.0.0'} - - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - - cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - - create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - crypt@0.0.2: - resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} - - death@1.1.0: - resolution: {integrity: sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==} - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - difflib@0.2.4: - resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - - elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - - elliptic@6.5.7: - resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - encode-utf8@1.0.3: - resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} - - encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - - err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escodegen@1.8.1: - resolution: {integrity: sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==} - engines: {node: '>=0.12.0'} - hasBin: true - - eslint-config-prettier@8.10.0: - resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-scope@8.1.0: - resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.1.0: - resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@9.13.0: - resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.2.0: - resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - esprima@2.7.3: - resolution: {integrity: sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==} - engines: {node: '>=0.10.0'} - hasBin: true - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@1.9.3: - resolution: {integrity: sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==} - engines: {node: '>=0.10.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - eth-gas-reporter@0.2.27: - resolution: {integrity: sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==} - peerDependencies: - '@codechecks/client': ^0.1.0 - peerDependenciesMeta: - '@codechecks/client': - optional: true - - ethereum-bloom-filters@1.2.0: - resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} - - ethereum-cryptography@0.1.3: - resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} - - ethereum-cryptography@1.2.0: - resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} - - ethereum-cryptography@2.2.1: - resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} - - ethereumjs-abi@0.6.8: - resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} - - ethereumjs-util@6.2.1: - resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} - - ethereumjs-util@7.1.5: - resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} - engines: {node: '>=10.0.0'} - - ethers@5.7.2: - resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} - - ethers@6.13.4: - resolution: {integrity: sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==} - engines: {node: '>=14.0.0'} - - ethjs-unit@0.1.6: - resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} - engines: {node: '>=6.5.0', npm: '>=3'} - - ethjs-util@0.1.6: - resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} - engines: {node: '>=6.5.0', npm: '>=3'} - - evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - - extra-bigint@1.2.0: - resolution: {integrity: sha512-F9T/pcT5xPZTjlFMKGCZgBY2/jKqEPxXHT4kLSwsa7gp7D05nQq8z9NzRTzVy5Z4AOO1E/iD9r9OBz4csGD7nw==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-uri@3.0.3: - resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fetch-mock@11.1.5: - resolution: {integrity: sha512-KHmZDnZ1ry0pCTrX4YG5DtThHi0MH+GNI9caESnzX/nMJBrvppUHMvLx47M0WY9oAtKOMiPfZDRpxhlHg89BOA==} - engines: {node: '>=8.0.0'} - peerDependencies: - node-fetch: '*' - peerDependenciesMeta: - node-fetch: - optional: true - - fhevm-core-contracts@0.1.0-2: - resolution: {integrity: sha512-lTUodggGV4+pZVFRKRb22t3rWyfR8iFZLgNxRBozgAEUSsIDe16PI9vn8PkfJzJJdOlPk9XsTY6/s1pACDbwfA==} - - fhevm@0.6.0-0: - resolution: {integrity: sha512-Gvd7a5T7JTU3OFHy2eRrvRTTmXWwSalSSsBdE0X0C0nTnTow5sYsQYkQqIZcYZNpZq1dCcoCgp/gYbeNDHUDNw==} - engines: {node: '>=20.0.0'} - - fhevmjs@0.6.0-13: - resolution: {integrity: sha512-Yn4fiQB/LAWz0jVPl0iSFrdsMWZK1W9cg+wVI9Y6eBBVhmlDQTPJj1KVVxyDGTE3frgvWR90Ai9I6EEVVO1Tcw==} - engines: {node: '>=20'} - hasBin: true - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-replace@3.0.0: - resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} - engines: {node: '>=4.0.0'} - - find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - - fmix@0.1.0: - resolution: {integrity: sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==} - - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - form-data@2.5.2: - resolution: {integrity: sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==} - engines: {node: '>= 0.12'} - - form-data@4.0.1: - resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} - engines: {node: '>= 6'} - - fp-ts@1.19.3: - resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} - - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs-readdir-recursive@1.1.0: - resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - - get-port@3.2.0: - resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} - engines: {node: '>=4'} - - ghost-testrpc@0.0.2: - resolution: {integrity: sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==} - hasBin: true - - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@5.0.15: - resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - - glob@9.3.5: - resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} - engines: {node: '>=16 || 14 >=14.17'} - - global-modules@2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} - - global-prefix@3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} - engines: {node: '>=6'} - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@15.11.0: - resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} - engines: {node: '>=18'} - - globby@10.0.2: - resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} - engines: {node: '>=8'} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true - - hardhat-deploy@0.12.4: - resolution: {integrity: sha512-bYO8DIyeGxZWlhnMoCBon9HNZb6ji0jQn7ngP1t5UmGhC8rQYhji7B73qETMOFhzt5ECZPr+U52duj3nubsqdQ==} - - hardhat-gas-reporter@1.0.10: - resolution: {integrity: sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==} - peerDependencies: - hardhat: ^2.0.2 - - hardhat-ignore-warnings@0.2.11: - resolution: {integrity: sha512-+nHnRbP6COFZaXE7HAY7TZNE3au5vHe5dkcnyq0XaP07ikT2fJ3NhFY0vn7Deh4Qbz0Z/9Xpnj2ki6Ktgk61pg==} - - hardhat-preprocessor@0.1.5: - resolution: {integrity: sha512-j8m44mmPxpxAAd0G8fPHRHOas/INZdzptSur0TNJvMEGcFdLDhbHHxBcqZVQ/bmiW42q4gC60AP4CXn9EF018g==} - peerDependencies: - hardhat: ^2.0.5 - - hardhat@2.22.13: - resolution: {integrity: sha512-psVJX4FSXDpSXwsU8OcKTJN04pQEj9cFBMX5OPko+OFwbIoiOpvRmafa954/UaA1934npTj8sV3gaTSdx9bPbA==} - hasBin: true - peerDependencies: - ts-node: '*' - typescript: '*' - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true - - has-flag@1.0.0: - resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} - engines: {node: '>=0.10.0'} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - - hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} - - hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - heap@0.2.7: - resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} - - hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - - http-basic@8.1.3: - resolution: {integrity: sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==} - engines: {node: '>=6.0.0'} - - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http-proxy-agent@4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} - engines: {node: '>= 6'} - - http-response-object@3.0.2: - resolution: {integrity: sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - immutable@4.3.7: - resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - imul@1.0.1: - resolution: {integrity: sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==} - engines: {node: '>=0.10.0'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - - io-ts@1.10.4: - resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} - - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hex-prefixed@1.0.0: - resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} - engines: {node: '>=6.5.0', npm: '>=3'} - - is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-subset@0.1.1: - resolution: {integrity: sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - javascript-natural-sort@0.7.1: - resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} - - js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json-stream-stringify@3.1.6: - resolution: {integrity: sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==} - engines: {node: '>=7.10.1'} - - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonschema@1.4.1: - resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} - - keccak@3.0.4: - resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} - engines: {node: '>=10.0.0'} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.clonedeep@4.5.0: - resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} - - lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lru_map@0.3.3: - resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - make-fetch-happen@9.1.0: - resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} - engines: {node: '>= 10'} - - markdown-table@1.1.3: - resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} - - match-all@1.2.6: - resolution: {integrity: sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==} - - md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - - memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micro-ftch@0.3.1: - resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@8.0.4: - resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - - minipass-fetch@1.4.1: - resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} - engines: {node: '>=8'} - - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mnemonist@0.38.5: - resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} - - mocha@10.7.3: - resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} - engines: {node: '>= 14.0.0'} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - murmur-128@0.2.1: - resolution: {integrity: sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==} - - napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - node-abi@3.71.0: - resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} - engines: {node: '>=10'} - - node-addon-api@2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - - node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - - node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - - node-emoji@1.11.0: - resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} - - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} - hasBin: true - - node-gyp@8.4.1: - resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} - engines: {node: '>= 10.12.0'} - hasBin: true - - node-interval-tree@2.1.2: - resolution: {integrity: sha512-bJ9zMDuNGzVQg1xv0bCPzyEDxHgbrx7/xGj6CDokvizZZmastPsOh0JJLuY8wA5q2SfX1TLNMk7XNV8WxbGxzA==} - engines: {node: '>= 14.0.0'} - - node-tfhe@0.9.1: - resolution: {integrity: sha512-M2CbUVX4DQneaaK/4fygy9lW0zjOOzM8yGWAgbKGRt/Gd07zaloFEGGHW7dbmUaHo022q1uo7nzxyYhe4UgqCw==} - - node-tkms@0.9.0-rc5: - resolution: {integrity: sha512-6a8DiNHUsThhYDKVVjFLXCPm7hi6Rh4wHOjtpaZ0in2xqywGnYRSiMJntNoVdxtKhPDSKmTC3KLXXoWhNzBEOg==} - - nofilter@3.1.0: - resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} - engines: {node: '>=12.19'} - - nopt@3.0.6: - resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} - hasBin: true - - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - - number-to-bn@1.7.0: - resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} - engines: {node: '>=6.5.0', npm: '>=3'} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} - - obliterator@2.0.4: - resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - ordinal@1.0.3: - resolution: {integrity: sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - p-try@1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-cache-control@1.0.1: - resolution: {integrity: sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - - prebuild-install@7.1.2: - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} - engines: {node: '>=10'} - hasBin: true - - prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier-plugin-solidity@1.4.1: - resolution: {integrity: sha512-Mq8EtfacVZ/0+uDKTtHZGW3Aa7vEbX/BNx63hmVg6YTiTXSiuKP0amj0G6pGwjmLaOfymWh3QgXEZkjQbU8QRg==} - engines: {node: '>=16'} - peerDependencies: - prettier: '>=2.3.0' - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - - promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - - promise@8.3.0: - resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - readdirp@4.0.2: - resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} - engines: {node: '>= 14.16.0'} - - rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - - recursive-readdir@2.2.3: - resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} - engines: {node: '>=6.0.0'} - - reduce-flatten@2.0.0: - resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} - engines: {node: '>=6'} - - regexparam@3.0.0: - resolution: {integrity: sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==} - engines: {node: '>=8'} - - req-cwd@2.0.0: - resolution: {integrity: sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==} - engines: {node: '>=4'} - - req-from@2.0.0: - resolution: {integrity: sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==} - engines: {node: '>=4'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve@1.1.7: - resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} - - resolve@1.17.0: - resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@4.4.1: - resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} - engines: {node: '>=14'} - hasBin: true - - ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - - rlp@2.2.7: - resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sc-istanbul@0.4.6: - resolution: {integrity: sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==} - hasBin: true - - scrypt-js@3.0.1: - resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - - secp256k1@4.0.4: - resolution: {integrity: sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==} - engines: {node: '>=18.0.0'} - - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - - sha1@1.1.1: - resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} - - shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - - socks-proxy-agent@6.2.1: - resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} - engines: {node: '>= 10'} - - socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - - solc@0.8.26: - resolution: {integrity: sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==} - engines: {node: '>=10.0.0'} - hasBin: true - - solhint-plugin-prettier@0.0.5: - resolution: {integrity: sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA==} - peerDependencies: - prettier: ^1.15.0 || ^2.0.0 - prettier-plugin-solidity: ^1.0.0-alpha.14 - - solhint@3.6.2: - resolution: {integrity: sha512-85EeLbmkcPwD+3JR7aEMKsVC9YrRSxd4qkXuMzrlf7+z2Eqdfm1wHWq1ffTuo5aDhoZxp2I9yF3QkxZOxOL7aQ==} - hasBin: true - - solidity-comments-darwin-arm64@0.0.2: - resolution: {integrity: sha512-HidWkVLSh7v+Vu0CA7oI21GWP/ZY7ro8g8OmIxE8oTqyMwgMbE8F1yc58Sj682Hj199HCZsjmtn1BE4PCbLiGA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solidity-comments-darwin-x64@0.0.2: - resolution: {integrity: sha512-Zjs0Ruz6faBTPT6fBecUt6qh4CdloT8Bwoc0+qxRoTn9UhYscmbPQkUgQEbS0FQPysYqVzzxJB4h1Ofbf4wwtA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solidity-comments-freebsd-x64@0.0.2: - resolution: {integrity: sha512-8Qe4mpjuAxFSwZJVk7B8gAoLCdbtS412bQzBwk63L8dmlHogvE39iT70aAk3RHUddAppT5RMBunlPUCFYJ3ZTw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - - solidity-comments-linux-arm64-gnu@0.0.2: - resolution: {integrity: sha512-spkb0MZZnmrP+Wtq4UxP+nyPAVRe82idOjqndolcNR0S9Xvu4ebwq+LvF4HiUgjTDmeiqYiFZQ8T9KGdLSIoIg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - solidity-comments-linux-arm64-musl@0.0.2: - resolution: {integrity: sha512-guCDbHArcjE+JDXYkxx5RZzY1YF6OnAKCo+sTC5fstyW/KGKaQJNPyBNWuwYsQiaEHpvhW1ha537IvlGek8GqA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - solidity-comments-linux-x64-gnu@0.0.2: - resolution: {integrity: sha512-zIqLehBK/g7tvrFmQljrfZXfkEeLt2v6wbe+uFu6kH/qAHZa7ybt8Vc0wYcmjo2U0PeBm15d79ee3AkwbIjFdQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solidity-comments-linux-x64-musl@0.0.2: - resolution: {integrity: sha512-R9FeDloVlFGTaVkOlELDVC7+1Tjx5WBPI5L8r0AGOPHK3+jOcRh6sKYpI+VskSPDc3vOO46INkpDgUXrKydlIw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solidity-comments-win32-arm64-msvc@0.0.2: - resolution: {integrity: sha512-QnWJoCQcJj+rnutULOihN9bixOtYWDdF5Rfz9fpHejL1BtNjdLW1om55XNVHGAHPqBxV4aeQQ6OirKnp9zKsug==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - solidity-comments-win32-ia32-msvc@0.0.2: - resolution: {integrity: sha512-vUg4nADtm/NcOtlIymG23NWJUSuMsvX15nU7ynhGBsdKtt8xhdP3C/zA6vjDk8Jg+FXGQL6IHVQ++g/7rSQi0w==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - solidity-comments-win32-x64-msvc@0.0.2: - resolution: {integrity: sha512-36j+KUF4V/y0t3qatHm/LF5sCUCBx2UndxE1kq5bOzh/s+nQgatuyB+Pd5BfuPQHdWu2KaExYe20FlAa6NL7+Q==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - solidity-comments@0.0.2: - resolution: {integrity: sha512-G+aK6qtyUfkn1guS8uzqUeua1dURwPlcOjoTYW/TwmXAcE7z/1+oGCfZUdMSe4ZMKklNbVZNiG5ibnF8gkkFfw==} - engines: {node: '>= 12'} - - solidity-coverage@0.8.12: - resolution: {integrity: sha512-8cOB1PtjnjFRqOgwFiD8DaUsYJtVJ6+YdXQtSZDrLGf8cdhhh8xzTtGzVTGeBf15kTv0v7lYPJlV/az7zLEPJw==} - hasBin: true - peerDependencies: - hardhat: ^2.11.0 - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.2.0: - resolution: {integrity: sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==} - engines: {node: '>=0.8.0'} - - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - - sqlite3@5.1.7: - resolution: {integrity: sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==} - - ssri@8.0.1: - resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} - engines: {node: '>= 8'} - - stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - string-format@2.0.0: - resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==} - - string-width@2.1.1: - resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} - engines: {node: '>=4'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - strip-ansi@4.0.0: - resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} - engines: {node: '>=4'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-hex-prefix@1.0.0: - resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} - engines: {node: '>=6.5.0', npm: '>=3'} - - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - supports-color@3.2.3: - resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} - engines: {node: '>=0.8.0'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - sync-request@6.1.0: - resolution: {integrity: sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==} - engines: {node: '>=8.0.0'} - - sync-rpc@1.3.6: - resolution: {integrity: sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==} - - table-layout@1.0.2: - resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} - engines: {node: '>=8.0.0'} - - table@6.8.2: - resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} - engines: {node: '>=10.0.0'} - - tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - tfhe@0.9.1: - resolution: {integrity: sha512-kmtl7KfCCZJaFhm9lUYsTtat+yT0qzOiO6bOidM2Pt7/7jptkbS2/myeGHxb9qi2/aJ30g2joo1euKZPa207tg==} - - then-request@6.0.2: - resolution: {integrity: sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==} - engines: {node: '>=6.0.0'} - - tkms@0.9.0-rc5: - resolution: {integrity: sha512-KA5oDCvKM+eJldJdikcKpPT8p8I1Q0dmRtmpAlqfxVthhK9GzkgljCrN/jpqwj989n+AlDYCDpLpCgsFxendPA==} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - ts-command-line-args@2.5.1: - resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==} - hasBin: true - - ts-essentials@1.0.4: - resolution: {integrity: sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ==} - - ts-essentials@7.0.3: - resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} - peerDependencies: - typescript: '>=3.7.0' - - ts-generator@0.1.1: - resolution: {integrity: sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ==} - hasBin: true - - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - - tsort@0.0.1: - resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} - - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - - tweetnacl-util@0.15.1: - resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} - - tweetnacl@1.0.3: - resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - - type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - - typechain@8.3.2: - resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} - hasBin: true - peerDependencies: - typescript: '>=4.3.0' - - typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - - typescript-eslint@8.10.0: - resolution: {integrity: sha512-YIu230PeN7z9zpu/EtqCIuRVHPs4iSlqW6TEvjbyDAE3MZsSl2RXBo+5ag+lbABCG8sFM1WVKEXhlQ8Ml8A3Fw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - typical@4.0.0: - resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} - engines: {node: '>=8'} - - typical@5.2.0: - resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} - engines: {node: '>=8'} - - uglify-js@3.19.3: - resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} - engines: {node: '>=0.8.0'} - hasBin: true - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - undici@5.28.4: - resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} - engines: {node: '>=14.0'} - - unique-filename@1.1.1: - resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} - - unique-slug@2.0.2: - resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} - - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - utf8@3.0.0: - resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - wasm-feature-detect@1.8.0: - resolution: {integrity: sha512-zksaLKM2fVlnB5jQQDqKXXwYHLQUVH9es+5TOOHwGOVJOCeRBCiPjwSg+3tN2AdTCzjgli4jijCH290kXb/zWQ==} - - web3-utils@1.10.4: - resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} - engines: {node: '>=8.0.0'} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - - widest-line@3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - - wordwrapjs@4.0.1: - resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} - engines: {node: '>=8.0.0'} - - workerpool@6.5.1: - resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - zksync-ethers@5.9.2: - resolution: {integrity: sha512-Y2Mx6ovvxO6UdC2dePLguVzvNToOY8iLWeq5ne+jgGSJxAi/f4He/NF6FNsf6x1aWX0o8dy4Df8RcOQXAkj5qw==} - engines: {node: '>=16.0.0'} - peerDependencies: - ethers: ~5.7.0 - -snapshots: - - '@adraffy/ens-normalize@1.10.1': {} - - '@babel/code-frame@7.25.7': - dependencies: - '@babel/highlight': 7.25.7 - picocolors: 1.1.1 - - '@babel/generator@7.17.7': - dependencies: - '@babel/types': 7.17.0 - jsesc: 2.5.2 - source-map: 0.5.7 - - '@babel/generator@7.25.7': - dependencies: - '@babel/types': 7.25.8 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.0.2 - - '@babel/helper-environment-visitor@7.24.7': - dependencies: - '@babel/types': 7.25.8 - - '@babel/helper-function-name@7.24.7': - dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.8 - - '@babel/helper-hoist-variables@7.24.7': - dependencies: - '@babel/types': 7.25.8 - - '@babel/helper-split-export-declaration@7.24.7': - dependencies: - '@babel/types': 7.25.8 - - '@babel/helper-string-parser@7.25.7': {} - - '@babel/helper-validator-identifier@7.25.7': {} - - '@babel/highlight@7.25.7': - dependencies: - '@babel/helper-validator-identifier': 7.25.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/parser@7.25.8': - dependencies: - '@babel/types': 7.25.8 - - '@babel/template@7.25.7': - dependencies: - '@babel/code-frame': 7.25.7 - '@babel/parser': 7.25.8 - '@babel/types': 7.25.8 - - '@babel/traverse@7.23.2': - dependencies: - '@babel/code-frame': 7.25.7 - '@babel/generator': 7.25.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-hoist-variables': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/parser': 7.25.8 - '@babel/types': 7.25.8 - debug: 4.3.7(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.17.0': - dependencies: - '@babel/helper-validator-identifier': 7.25.7 - to-fast-properties: 2.0.0 - - '@babel/types@7.25.8': - dependencies: - '@babel/helper-string-parser': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - to-fast-properties: 2.0.0 - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@eslint-community/eslint-utils@4.4.0(eslint@9.13.0)': - dependencies: - eslint: 9.13.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.11.1': {} - - '@eslint/config-array@0.18.0': - dependencies: - '@eslint/object-schema': 2.1.4 - debug: 4.3.7(supports-color@8.1.1) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/core@0.7.0': {} - - '@eslint/eslintrc@3.1.0': - dependencies: - ajv: 6.12.6 - debug: 4.3.7(supports-color@8.1.1) - espree: 10.2.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.13.0': {} - - '@eslint/object-schema@2.1.4': {} - - '@eslint/plugin-kit@0.2.1': - dependencies: - levn: 0.4.1 - - '@ethereumjs/rlp@4.0.1': {} - - '@ethereumjs/util@8.1.0': - dependencies: - '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 2.2.1 - micro-ftch: 0.3.1 - - '@ethersproject/abi@5.7.0': - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@ethersproject/abstract-provider@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - - '@ethersproject/abstract-signer@5.7.0': - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - - '@ethersproject/address@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/rlp': 5.7.0 - - '@ethersproject/base64@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - - '@ethersproject/basex@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/properties': 5.7.0 - - '@ethersproject/bignumber@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - bn.js: 5.2.1 - - '@ethersproject/bytes@5.7.0': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/constants@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - - '@ethersproject/contracts@5.7.0': - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - - '@ethersproject/hash@5.7.0': - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@ethersproject/hdnode@5.7.0': - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 - - '@ethersproject/json-wallets@5.7.0': - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - aes-js: 3.0.0 - scrypt-js: 3.0.1 - - '@ethersproject/keccak256@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - js-sha3: 0.8.0 - - '@ethersproject/logger@5.7.0': {} - - '@ethersproject/networks@5.7.1': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/pbkdf2@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/sha2': 5.7.0 - - '@ethersproject/properties@5.7.0': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/providers@5.7.2': - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - bech32: 1.1.4 - ws: 7.4.6 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@ethersproject/random@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/rlp@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/sha2@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - hash.js: 1.1.7 - - '@ethersproject/signing-key@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - bn.js: 5.2.1 - elliptic: 6.5.4 - hash.js: 1.1.7 - - '@ethersproject/solidity@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@ethersproject/strings@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/transactions@5.7.0': - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - - '@ethersproject/units@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/wallet@5.7.0': - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/json-wallets': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 - - '@ethersproject/web@5.7.1': - dependencies: - '@ethersproject/base64': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@ethersproject/wordlists@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@fastify/busboy@2.1.1': {} - - '@gar/promisify@1.1.3': - optional: true - - '@humanfs/core@0.19.0': {} - - '@humanfs/node@0.16.5': - dependencies: - '@humanfs/core': 0.19.0 - '@humanwhocodes/retry': 0.3.1 - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.1': {} - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@metamask/eth-sig-util@4.0.1': - dependencies: - ethereumjs-abi: 0.6.8 - ethereumjs-util: 6.2.1 - ethjs-util: 0.1.6 - tweetnacl: 1.0.3 - tweetnacl-util: 0.15.1 - - '@noble/curves@1.2.0': - dependencies: - '@noble/hashes': 1.3.2 - - '@noble/curves@1.4.2': - dependencies: - '@noble/hashes': 1.4.0 - - '@noble/hashes@1.2.0': {} - - '@noble/hashes@1.3.2': {} - - '@noble/hashes@1.4.0': {} - - '@noble/hashes@1.5.0': {} - - '@noble/secp256k1@1.7.1': {} - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@nomicfoundation/edr-darwin-arm64@0.6.4': {} - - '@nomicfoundation/edr-darwin-x64@0.6.4': {} - - '@nomicfoundation/edr-linux-arm64-gnu@0.6.4': {} - - '@nomicfoundation/edr-linux-arm64-musl@0.6.4': {} - - '@nomicfoundation/edr-linux-x64-gnu@0.6.4': {} - - '@nomicfoundation/edr-linux-x64-musl@0.6.4': {} - - '@nomicfoundation/edr-win32-x64-msvc@0.6.4': {} - - '@nomicfoundation/edr@0.6.4': - dependencies: - '@nomicfoundation/edr-darwin-arm64': 0.6.4 - '@nomicfoundation/edr-darwin-x64': 0.6.4 - '@nomicfoundation/edr-linux-arm64-gnu': 0.6.4 - '@nomicfoundation/edr-linux-arm64-musl': 0.6.4 - '@nomicfoundation/edr-linux-x64-gnu': 0.6.4 - '@nomicfoundation/edr-linux-x64-musl': 0.6.4 - '@nomicfoundation/edr-win32-x64-msvc': 0.6.4 - - '@nomicfoundation/ethereumjs-common@4.0.4': - dependencies: - '@nomicfoundation/ethereumjs-util': 9.0.4 - transitivePeerDependencies: - - c-kzg - - '@nomicfoundation/ethereumjs-rlp@5.0.4': {} - - '@nomicfoundation/ethereumjs-tx@5.0.4': - dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.4 - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - ethereum-cryptography: 0.1.3 - - '@nomicfoundation/ethereumjs-util@9.0.4': - dependencies: - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - ethereum-cryptography: 0.1.3 - - '@nomicfoundation/hardhat-chai-matchers@2.0.8(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)))(chai@4.5.0)(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))': - dependencies: - '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - '@types/chai-as-promised': 7.1.8 - chai: 4.5.0 - chai-as-promised: 7.1.2(chai@4.5.0) - deep-eql: 4.1.4 - ethers: 6.13.4 - hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) - ordinal: 1.0.3 - - '@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))': - dependencies: - debug: 4.3.7(supports-color@8.1.1) - ethers: 6.13.4 - hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) - lodash.isequal: 4.5.0 - transitivePeerDependencies: - - supports-color - - '@nomicfoundation/hardhat-network-helpers@1.0.12(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))': - dependencies: - ethereumjs-util: 7.1.5 - hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) - - '@nomicfoundation/hardhat-toolbox@3.0.0(fjzr5sm4cyfazeo2vaqmv3tkyy)': - dependencies: - '@nomicfoundation/hardhat-chai-matchers': 2.0.8(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)))(chai@4.5.0)(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - '@nomicfoundation/hardhat-network-helpers': 1.0.12(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - '@nomicfoundation/hardhat-verify': 1.1.1(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - '@typechain/ethers-v6': 0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3) - '@typechain/hardhat': 8.0.3(@typechain/ethers-v6@0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3))(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))(typechain@8.3.2(typescript@5.6.3)) - '@types/chai': 4.3.20 - '@types/mocha': 10.0.9 - '@types/node': 18.19.57 - chai: 4.5.0 - ethers: 6.13.4 - hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) - hardhat-gas-reporter: 1.0.10(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - solidity-coverage: 0.8.12(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)) - ts-node: 10.9.2(@types/node@18.19.57)(typescript@5.6.3) - typechain: 8.3.2(typescript@5.6.3) - typescript: 5.6.3 - - '@nomicfoundation/hardhat-verify@1.1.1(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))': - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/address': 5.7.0 - cbor: 8.1.0 - chalk: 2.4.2 - debug: 4.3.7(supports-color@8.1.1) - hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) - lodash.clonedeep: 4.5.0 - semver: 6.3.1 - table: 6.8.2 - undici: 5.28.4 - transitivePeerDependencies: - - supports-color - - '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': - optional: true - - '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2': - optional: true - - '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2': - optional: true - - '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2': - optional: true - - '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2': - optional: true - - '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2': - optional: true - - '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2': - optional: true - - '@nomicfoundation/solidity-analyzer@0.1.2': - optionalDependencies: - '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.2 - '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.2 - '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.2 - '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.2 - '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.2 - '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.2 - '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.2 - - '@npmcli/fs@1.1.1': - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.6.3 - optional: true - - '@npmcli/move-file@1.1.2': - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - optional: true - - '@openzeppelin/contracts@5.1.0': {} - - '@scure/base@1.1.9': {} - - '@scure/bip32@1.1.5': - dependencies: - '@noble/hashes': 1.2.0 - '@noble/secp256k1': 1.7.1 - '@scure/base': 1.1.9 - - '@scure/bip32@1.4.0': - dependencies: - '@noble/curves': 1.4.2 - '@noble/hashes': 1.4.0 - '@scure/base': 1.1.9 - - '@scure/bip39@1.1.1': - dependencies: - '@noble/hashes': 1.2.0 - '@scure/base': 1.1.9 - - '@scure/bip39@1.3.0': - dependencies: - '@noble/hashes': 1.4.0 - '@scure/base': 1.1.9 - - '@sentry/core@5.30.0': - dependencies: - '@sentry/hub': 5.30.0 - '@sentry/minimal': 5.30.0 - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - tslib: 1.14.1 - - '@sentry/hub@5.30.0': - dependencies: - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - tslib: 1.14.1 - - '@sentry/minimal@5.30.0': - dependencies: - '@sentry/hub': 5.30.0 - '@sentry/types': 5.30.0 - tslib: 1.14.1 - - '@sentry/node@5.30.0': - dependencies: - '@sentry/core': 5.30.0 - '@sentry/hub': 5.30.0 - '@sentry/tracing': 5.30.0 - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - cookie: 0.4.2 - https-proxy-agent: 5.0.1 - lru_map: 0.3.3 - tslib: 1.14.1 - transitivePeerDependencies: - - supports-color - - '@sentry/tracing@5.30.0': - dependencies: - '@sentry/hub': 5.30.0 - '@sentry/minimal': 5.30.0 - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - tslib: 1.14.1 - - '@sentry/types@5.30.0': {} - - '@sentry/utils@5.30.0': - dependencies: - '@sentry/types': 5.30.0 - tslib: 1.14.1 - - '@solidity-parser/parser@0.14.5': - dependencies: - antlr4ts: 0.5.0-alpha.4 - - '@solidity-parser/parser@0.16.2': - dependencies: - antlr4ts: 0.5.0-alpha.4 - - '@solidity-parser/parser@0.18.0': {} - - '@tootallnate/once@1.1.2': - optional: true - - '@trivago/prettier-plugin-sort-imports@4.3.0(prettier@2.8.8)': - dependencies: - '@babel/generator': 7.17.7 - '@babel/parser': 7.25.8 - '@babel/traverse': 7.23.2 - '@babel/types': 7.17.0 - javascript-natural-sort: 0.7.1 - lodash: 4.17.21 - prettier: 2.8.8 - transitivePeerDependencies: - - supports-color - - '@tsconfig/node10@1.0.11': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - - '@typechain/ethers-v6@0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3)': - dependencies: - ethers: 6.13.4 - lodash: 4.17.21 - ts-essentials: 7.0.3(typescript@5.6.3) - typechain: 8.3.2(typescript@5.6.3) - typescript: 5.6.3 - - '@typechain/hardhat@8.0.3(@typechain/ethers-v6@0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3))(ethers@6.13.4)(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3))(typechain@8.3.2(typescript@5.6.3))': - dependencies: - '@typechain/ethers-v6': 0.4.3(ethers@6.13.4)(typechain@8.3.2(typescript@5.6.3))(typescript@5.6.3) - ethers: 6.13.4 - fs-extra: 9.1.0 - hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) - typechain: 8.3.2(typescript@5.6.3) - - '@types/bn.js@4.11.6': - dependencies: - '@types/node': 18.19.57 - - '@types/bn.js@5.1.6': - dependencies: - '@types/node': 18.19.57 - - '@types/chai-as-promised@7.1.8': - dependencies: - '@types/chai': 4.3.20 - - '@types/chai@4.3.20': {} - - '@types/concat-stream@1.6.1': - dependencies: - '@types/node': 18.19.57 - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - - '@types/eslint__js@8.42.3': - dependencies: - '@types/eslint': 9.6.1 - - '@types/estree@1.0.6': {} - - '@types/form-data@0.0.33': - dependencies: - '@types/node': 18.19.57 - - '@types/fs-extra@9.0.13': - dependencies: - '@types/node': 18.19.57 - - '@types/glob-to-regexp@0.4.4': {} - - '@types/glob@7.2.0': - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 18.19.57 - - '@types/json-schema@7.0.15': {} - - '@types/lru-cache@5.1.1': {} - - '@types/minimatch@5.1.2': {} - - '@types/mkdirp@0.5.2': - dependencies: - '@types/node': 18.19.57 - - '@types/mocha@10.0.9': {} - - '@types/node@10.17.60': {} - - '@types/node@18.19.57': - dependencies: - undici-types: 5.26.5 - - '@types/node@22.7.5': - dependencies: - undici-types: 6.19.8 - - '@types/node@8.10.66': {} - - '@types/pbkdf2@3.1.2': - dependencies: - '@types/node': 18.19.57 - - '@types/prettier@2.7.3': {} - - '@types/qs@6.9.16': {} - - '@types/resolve@0.0.8': - dependencies: - '@types/node': 18.19.57 - - '@types/secp256k1@4.0.6': - dependencies: - '@types/node': 18.19.57 - - '@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3)': - dependencies: - '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 8.10.0(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.10.0 - '@typescript-eslint/type-utils': 8.10.0(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/utils': 8.10.0(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.10.0 - eslint: 9.13.0 - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.10.0(eslint@9.13.0)(typescript@5.6.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.10.0 - '@typescript-eslint/types': 8.10.0 - '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.10.0 - debug: 4.3.7(supports-color@8.1.1) - eslint: 9.13.0 - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.10.0': - dependencies: - '@typescript-eslint/types': 8.10.0 - '@typescript-eslint/visitor-keys': 8.10.0 - - '@typescript-eslint/type-utils@8.10.0(eslint@9.13.0)(typescript@5.6.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.10.0(eslint@9.13.0)(typescript@5.6.3) - debug: 4.3.7(supports-color@8.1.1) - ts-api-utils: 1.3.0(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - eslint - - supports-color - - '@typescript-eslint/types@8.10.0': {} - - '@typescript-eslint/typescript-estree@8.10.0(typescript@5.6.3)': - dependencies: - '@typescript-eslint/types': 8.10.0 - '@typescript-eslint/visitor-keys': 8.10.0 - debug: 4.3.7(supports-color@8.1.1) - fast-glob: 3.3.2 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.10.0(eslint@9.13.0)(typescript@5.6.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0) - '@typescript-eslint/scope-manager': 8.10.0 - '@typescript-eslint/types': 8.10.0 - '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) - eslint: 9.13.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/visitor-keys@8.10.0': - dependencies: - '@typescript-eslint/types': 8.10.0 - eslint-visitor-keys: 3.4.3 - - abbrev@1.0.9: {} - - abbrev@1.1.1: - optional: true - - acorn-jsx@5.3.2(acorn@8.13.0): - dependencies: - acorn: 8.13.0 - - acorn-walk@8.3.4: - dependencies: - acorn: 8.13.0 - - acorn@8.13.0: {} - - adm-zip@0.4.16: {} - - aes-js@3.0.0: {} - - aes-js@4.0.0-beta.5: {} - - agent-base@6.0.2: - dependencies: - debug: 4.3.7(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - optional: true - - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - - amdefine@1.0.1: - optional: true - - ansi-align@3.0.1: - dependencies: - string-width: 4.2.3 - - ansi-colors@4.1.3: {} - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - ansi-regex@3.0.1: {} - - ansi-regex@5.0.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - antlr4@4.13.2: {} - - antlr4ts@0.5.0-alpha.4: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - aproba@2.0.0: - optional: true - - are-we-there-yet@3.0.1: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - optional: true - - arg@4.1.3: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - argparse@2.0.1: {} - - array-back@3.1.0: {} - - array-back@4.0.2: {} - - array-union@2.1.0: {} - - array-uniq@1.0.3: {} - - asap@2.0.6: {} - - assertion-error@1.1.0: {} - - ast-parents@0.0.1: {} - - astral-regex@2.0.0: {} - - async@1.5.2: {} - - asynckit@0.4.0: {} - - at-least-node@1.0.0: {} - - axios@0.21.4(debug@4.3.7): - dependencies: - follow-redirects: 1.15.9(debug@4.3.7) - transitivePeerDependencies: - - debug - - axios@1.7.7: - dependencies: - follow-redirects: 1.15.9(debug@4.3.7) - form-data: 4.0.1 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base64-js@1.5.1: {} - - bech32@1.1.4: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - - blakejs@1.2.1: {} - - bn.js@4.11.6: {} - - bn.js@4.12.0: {} - - bn.js@5.2.1: {} - - boxen@5.1.2: - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 2.2.1 - string-width: 4.2.3 - type-fest: 0.20.2 - widest-line: 3.1.0 - wrap-ansi: 7.0.0 - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - brorand@1.1.0: {} - - browser-stdout@1.3.1: {} - - browserify-aes@1.2.0: - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.4 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - bs58check@2.1.2: - dependencies: - bs58: 4.0.1 - create-hash: 1.2.0 - safe-buffer: 5.2.1 - - buffer-from@1.1.2: {} - - buffer-xor@1.0.3: {} - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bytes@3.1.2: {} - - cacache@15.3.0: - dependencies: - '@npmcli/fs': 1.1.1 - '@npmcli/move-file': 1.1.2 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 7.2.3 - infer-owner: 1.0.4 - lru-cache: 6.0.0 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1 - rimraf: 3.0.2 - ssri: 8.0.1 - tar: 6.2.1 - unique-filename: 1.1.1 - transitivePeerDependencies: - - bluebird - optional: true - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - - callsites@3.1.0: {} - - camelcase@6.3.0: {} - - caseless@0.12.0: {} - - cbor@8.1.0: - dependencies: - nofilter: 3.1.0 - - chai-as-promised@7.1.2(chai@4.5.0): - dependencies: - chai: 4.5.0 - check-error: 1.0.3 - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - charenc@0.0.2: {} - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chokidar@4.0.1: - dependencies: - readdirp: 4.0.2 - - chownr@1.1.4: {} - - chownr@2.0.0: {} - - ci-info@2.0.0: {} - - cipher-base@1.0.4: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - clean-stack@2.2.0: {} - - cli-boxes@2.2.1: {} - - cli-table3@0.5.1: - dependencies: - object-assign: 4.1.1 - string-width: 2.1.1 - optionalDependencies: - colors: 1.4.0 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - color-support@1.1.3: - optional: true - - colors@1.4.0: {} - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - command-exists@1.2.9: {} - - command-line-args@5.2.1: - dependencies: - array-back: 3.1.0 - find-replace: 3.0.0 - lodash.camelcase: 4.3.0 - typical: 4.0.0 - - command-line-usage@6.1.3: - dependencies: - array-back: 4.0.2 - chalk: 2.4.2 - table-layout: 1.0.2 - typical: 5.2.0 - - commander@10.0.1: {} - - commander@11.1.0: {} - - commander@8.3.0: {} - - concat-map@0.0.1: {} - - concat-stream@1.6.2: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - - console-control-strings@1.1.0: - optional: true - - cookie@0.4.2: {} - - core-util-is@1.0.3: {} - - cosmiconfig@8.3.6(typescript@5.6.3): - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.6.3 - - create-hash@1.2.0: - dependencies: - cipher-base: 1.0.4 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - - create-hmac@1.1.7: - dependencies: - cipher-base: 1.0.4 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - - create-require@1.1.1: {} - - cross-env@7.0.3: - dependencies: - cross-spawn: 7.0.3 - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - crypt@0.0.2: {} - - death@1.1.0: {} - - debug@4.3.7(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - deep-extend@0.6.0: {} - - deep-is@0.1.4: {} - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - - delayed-stream@1.0.0: {} - - delegates@1.0.0: - optional: true - - depd@2.0.0: {} - - dequal@2.0.3: {} - - detect-libc@2.0.3: {} - - diff@4.0.2: {} - - diff@5.2.0: {} - - difflib@0.2.4: - dependencies: - heap: 0.2.7 - - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - dotenv@16.4.5: {} - - elliptic@6.5.4: - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - elliptic@6.5.7: - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - emoji-regex@8.0.0: {} - - encode-utf8@1.0.3: {} - - encoding@0.1.13: - dependencies: - iconv-lite: 0.6.3 - optional: true - - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - - enquirer@2.4.1: - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - - env-paths@2.2.1: {} - - err-code@2.0.3: - optional: true - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - escalade@3.2.0: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@4.0.0: {} - - escodegen@1.8.1: - dependencies: - esprima: 2.7.3 - estraverse: 1.9.3 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.2.0 - - eslint-config-prettier@8.10.0(eslint@9.13.0): - dependencies: - eslint: 9.13.0 - - eslint-scope@8.1.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.1.0: {} - - eslint@9.13.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0) - '@eslint-community/regexpp': 4.11.1 - '@eslint/config-array': 0.18.0 - '@eslint/core': 0.7.0 - '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.13.0 - '@eslint/plugin-kit': 0.2.1 - '@humanfs/node': 0.16.5 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.1 - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.7(supports-color@8.1.1) - escape-string-regexp: 4.0.0 - eslint-scope: 8.1.0 - eslint-visitor-keys: 4.1.0 - espree: 10.2.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - espree@10.2.0: - dependencies: - acorn: 8.13.0 - acorn-jsx: 5.3.2(acorn@8.13.0) - eslint-visitor-keys: 4.1.0 - - esprima@2.7.3: {} - - esprima@4.0.1: {} - - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@1.9.3: {} - - estraverse@5.3.0: {} - - esutils@2.0.3: {} - - eth-gas-reporter@0.2.27: - dependencies: - '@solidity-parser/parser': 0.14.5 - axios: 1.7.7 - cli-table3: 0.5.1 - colors: 1.4.0 - ethereum-cryptography: 1.2.0 - ethers: 5.7.2 - fs-readdir-recursive: 1.1.0 - lodash: 4.17.21 - markdown-table: 1.1.3 - mocha: 10.7.3 - req-cwd: 2.0.0 - sha1: 1.1.1 - sync-request: 6.1.0 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - ethereum-bloom-filters@1.2.0: - dependencies: - '@noble/hashes': 1.5.0 - - ethereum-cryptography@0.1.3: - dependencies: - '@types/pbkdf2': 3.1.2 - '@types/secp256k1': 4.0.6 - blakejs: 1.2.1 - browserify-aes: 1.2.0 - bs58check: 2.1.2 - create-hash: 1.2.0 - create-hmac: 1.1.7 - hash.js: 1.1.7 - keccak: 3.0.4 - pbkdf2: 3.1.2 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - scrypt-js: 3.0.1 - secp256k1: 4.0.4 - setimmediate: 1.0.5 - - ethereum-cryptography@1.2.0: - dependencies: - '@noble/hashes': 1.2.0 - '@noble/secp256k1': 1.7.1 - '@scure/bip32': 1.1.5 - '@scure/bip39': 1.1.1 - - ethereum-cryptography@2.2.1: - dependencies: - '@noble/curves': 1.4.2 - '@noble/hashes': 1.4.0 - '@scure/bip32': 1.4.0 - '@scure/bip39': 1.3.0 - - ethereumjs-abi@0.6.8: - dependencies: - bn.js: 4.12.0 - ethereumjs-util: 6.2.1 - - ethereumjs-util@6.2.1: - dependencies: - '@types/bn.js': 4.11.6 - bn.js: 4.12.0 - create-hash: 1.2.0 - elliptic: 6.5.7 - ethereum-cryptography: 0.1.3 - ethjs-util: 0.1.6 - rlp: 2.2.7 - - ethereumjs-util@7.1.5: - dependencies: - '@types/bn.js': 5.1.6 - bn.js: 5.2.1 - create-hash: 1.2.0 - ethereum-cryptography: 0.1.3 - rlp: 2.2.7 - - ethers@5.7.2: - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/contracts': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/json-wallets': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/providers': 5.7.2 - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/solidity': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/units': 5.7.0 - '@ethersproject/wallet': 5.7.0 - '@ethersproject/web': 5.7.1 - '@ethersproject/wordlists': 5.7.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - ethers@6.13.4: - dependencies: - '@adraffy/ens-normalize': 1.10.1 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@types/node': 22.7.5 - aes-js: 4.0.0-beta.5 - tslib: 2.7.0 - ws: 8.17.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - ethjs-unit@0.1.6: - dependencies: - bn.js: 4.11.6 - number-to-bn: 1.7.0 - - ethjs-util@0.1.6: - dependencies: - is-hex-prefixed: 1.0.0 - strip-hex-prefix: 1.0.0 - - evp_bytestokey@1.0.3: - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - - expand-template@2.0.3: {} - - extra-bigint@1.2.0: {} - - fast-deep-equal@3.1.3: {} - - fast-diff@1.3.0: {} - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fast-uri@3.0.3: {} - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - fetch-mock@11.1.5: - dependencies: - '@types/glob-to-regexp': 0.4.4 - dequal: 2.0.3 - glob-to-regexp: 0.4.1 - is-subset: 0.1.1 - regexparam: 3.0.0 - - fhevm-core-contracts@0.1.0-2: {} - - fhevm@0.6.0-0: - dependencies: - '@openzeppelin/contracts': 5.1.0 - extra-bigint: 1.2.0 - sqlite3: 5.1.7 - transitivePeerDependencies: - - bluebird - - supports-color - - fhevmjs@0.6.0-13: - dependencies: - bigint-buffer: 1.1.5 - commander: 11.1.0 - fetch-mock: 11.1.5 - keccak: 3.0.4 - node-tfhe: 0.9.1 - node-tkms: 0.9.0-rc5 - tfhe: 0.9.1 - tkms: 0.9.0-rc5 - wasm-feature-detect: 1.8.0 - transitivePeerDependencies: - - node-fetch - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-replace@3.0.0: - dependencies: - array-back: 3.1.0 - - find-up@2.1.0: - dependencies: - locate-path: 2.0.0 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@4.0.1: - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - - flat@5.0.2: {} - - flatted@3.3.1: {} - - fmix@0.1.0: - dependencies: - imul: 1.0.1 - - follow-redirects@1.15.9(debug@4.3.7): - optionalDependencies: - debug: 4.3.7(supports-color@8.1.1) - - form-data@2.5.2: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - safe-buffer: 5.2.1 - - form-data@4.0.1: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - fp-ts@1.19.3: {} - - fs-constants@1.0.0: {} - - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@7.0.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@8.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@9.1.0: - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - - fs-readdir-recursive@1.1.0: {} - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - gauge@4.0.4: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - optional: true - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - - get-port@3.2.0: {} - - ghost-testrpc@0.0.2: - dependencies: - chalk: 2.4.2 - node-emoji: 1.11.0 - - github-from-package@0.0.0: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob-to-regexp@0.4.1: {} - - glob@5.0.15: - dependencies: - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@7.1.7: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@7.2.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - - glob@9.3.5: - dependencies: - fs.realpath: 1.0.0 - minimatch: 8.0.4 - minipass: 4.2.8 - path-scurry: 1.11.1 - - global-modules@2.0.0: - dependencies: - global-prefix: 3.0.0 - - global-prefix@3.0.0: - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - - globals@11.12.0: {} - - globals@14.0.0: {} - - globals@15.11.0: {} - - globby@10.0.2: - dependencies: - '@types/glob': 7.2.0 - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - glob: 7.2.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - - graceful-fs@4.2.11: {} - - graphemer@1.4.0: {} - - handlebars@4.7.8: - dependencies: - minimist: 1.2.8 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.19.3 - - hardhat-deploy@0.12.4: - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/contracts': 5.7.0 - '@ethersproject/providers': 5.7.2 - '@ethersproject/solidity': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wallet': 5.7.0 - '@types/qs': 6.9.16 - axios: 0.21.4(debug@4.3.7) - chalk: 4.1.2 - chokidar: 3.6.0 - debug: 4.3.7(supports-color@8.1.1) - enquirer: 2.4.1 - ethers: 5.7.2 - form-data: 4.0.1 - fs-extra: 10.1.0 - match-all: 1.2.6 - murmur-128: 0.2.1 - qs: 6.13.0 - zksync-ethers: 5.9.2(ethers@5.7.2) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - hardhat-gas-reporter@1.0.10(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)): - dependencies: - array-uniq: 1.0.3 - eth-gas-reporter: 0.2.27 - hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) - sha1: 1.1.1 - transitivePeerDependencies: - - '@codechecks/client' - - bufferutil - - debug - - utf-8-validate - - hardhat-ignore-warnings@0.2.11: - dependencies: - minimatch: 5.1.6 - node-interval-tree: 2.1.2 - solidity-comments: 0.0.2 - - hardhat-preprocessor@0.1.5(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)): - dependencies: - hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) - murmur-128: 0.2.1 - - hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3): - dependencies: - '@ethersproject/abi': 5.7.0 - '@metamask/eth-sig-util': 4.0.1 - '@nomicfoundation/edr': 0.6.4 - '@nomicfoundation/ethereumjs-common': 4.0.4 - '@nomicfoundation/ethereumjs-tx': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - '@nomicfoundation/solidity-analyzer': 0.1.2 - '@sentry/node': 5.30.0 - '@types/bn.js': 5.1.6 - '@types/lru-cache': 5.1.1 - adm-zip: 0.4.16 - aggregate-error: 3.1.0 - ansi-escapes: 4.3.2 - boxen: 5.1.2 - chalk: 2.4.2 - chokidar: 4.0.1 - ci-info: 2.0.0 - debug: 4.3.7(supports-color@8.1.1) - enquirer: 2.4.1 - env-paths: 2.2.1 - ethereum-cryptography: 1.2.0 - ethereumjs-abi: 0.6.8 - find-up: 2.1.0 - fp-ts: 1.19.3 - fs-extra: 7.0.1 - glob: 7.2.0 - immutable: 4.3.7 - io-ts: 1.10.4 - json-stream-stringify: 3.1.6 - keccak: 3.0.4 - lodash: 4.17.21 - mnemonist: 0.38.5 - mocha: 10.7.3 - p-map: 4.0.0 - raw-body: 2.5.2 - resolve: 1.17.0 - semver: 6.3.1 - solc: 0.8.26(debug@4.3.7) - source-map-support: 0.5.21 - stacktrace-parser: 0.1.10 - tsort: 0.0.1 - undici: 5.28.4 - uuid: 8.3.2 - ws: 7.5.10 - optionalDependencies: - ts-node: 10.9.2(@types/node@18.19.57)(typescript@5.6.3) - typescript: 5.6.3 - transitivePeerDependencies: - - bufferutil - - c-kzg - - supports-color - - utf-8-validate - - has-flag@1.0.0: {} - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - - has-unicode@2.0.1: - optional: true - - hash-base@3.1.0: - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - - hash.js@1.1.7: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - he@1.2.0: {} - - heap@0.2.7: {} - - hmac-drbg@1.0.1: - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - http-basic@8.1.3: - dependencies: - caseless: 0.12.0 - concat-stream: 1.6.2 - http-response-object: 3.0.2 - parse-cache-control: 1.0.1 - - http-cache-semantics@4.1.1: - optional: true - - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - - http-proxy-agent@4.0.1: - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.7(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - optional: true - - http-response-object@3.0.2: - dependencies: - '@types/node': 10.17.60 - - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.3.7(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - optional: true - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - optional: true - - ieee754@1.2.1: {} - - ignore@5.3.2: {} - - immutable@4.3.7: {} - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - imul@1.0.1: {} - - imurmurhash@0.1.4: {} - - indent-string@4.0.0: {} - - infer-owner@1.0.4: - optional: true - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - ini@1.3.8: {} - - interpret@1.4.0: {} - - io-ts@1.10.4: - dependencies: - fp-ts: 1.19.3 - - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - optional: true - - is-arrayish@0.2.1: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-core-module@2.15.1: - dependencies: - hasown: 2.0.2 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@2.0.0: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-hex-prefixed@1.0.0: {} - - is-lambda@1.0.1: - optional: true - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-subset@0.1.1: {} - - is-unicode-supported@0.1.0: {} - - isarray@1.0.0: {} - - isexe@2.0.0: {} - - javascript-natural-sort@0.7.1: {} - - js-sha3@0.8.0: {} - - js-tokens@4.0.0: {} - - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - jsbn@1.1.0: - optional: true - - jsesc@2.5.2: {} - - jsesc@3.0.2: {} - - json-buffer@3.0.1: {} - - json-parse-even-better-errors@2.3.1: {} - - json-schema-traverse@0.4.1: {} - - json-schema-traverse@1.0.0: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json-stream-stringify@3.1.6: {} - - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonschema@1.4.1: {} - - keccak@3.0.4: - dependencies: - node-addon-api: 2.0.2 - node-gyp-build: 4.8.2 - readable-stream: 3.6.2 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - kind-of@6.0.3: {} - - levn@0.3.0: - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lines-and-columns@1.2.4: {} - - locate-path@2.0.0: - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.camelcase@4.3.0: {} - - lodash.clonedeep@4.5.0: {} - - lodash.isequal@4.5.0: {} - - lodash.merge@4.6.2: {} - - lodash.truncate@4.4.2: {} - - lodash@4.17.21: {} - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - lru-cache@10.4.3: {} - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - optional: true - - lru_map@0.3.3: {} - - make-error@1.3.6: {} - - make-fetch-happen@9.1.0: - dependencies: - agentkeepalive: 4.5.0 - cacache: 15.3.0 - http-cache-semantics: 4.1.1 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 6.0.0 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-fetch: 1.4.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.4 - promise-retry: 2.0.1 - socks-proxy-agent: 6.2.1 - ssri: 8.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - optional: true - - markdown-table@1.1.3: {} - - match-all@1.2.6: {} - - md5.js@1.3.5: - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - memorystream@0.3.1: {} - - merge2@1.4.1: {} - - micro-ftch@0.3.1: {} - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mimic-response@3.1.0: {} - - minimalistic-assert@1.0.1: {} - - minimalistic-crypto-utils@1.0.1: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimatch@8.0.4: - dependencies: - brace-expansion: 2.0.1 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - minipass-collect@1.0.2: - dependencies: - minipass: 3.3.6 - optional: true - - minipass-fetch@1.4.1: - dependencies: - minipass: 3.3.6 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - optional: true - - minipass-flush@1.0.5: - dependencies: - minipass: 3.3.6 - optional: true - - minipass-pipeline@1.2.4: - dependencies: - minipass: 3.3.6 - optional: true - - minipass-sized@1.0.3: - dependencies: - minipass: 3.3.6 - optional: true - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@4.2.8: {} - - minipass@5.0.0: {} - - minipass@7.1.2: {} - - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - - mkdirp-classic@0.5.3: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mkdirp@1.0.4: {} - - mnemonist@0.38.5: - dependencies: - obliterator: 2.0.4 - - mocha@10.7.3: - dependencies: - ansi-colors: 4.1.3 - browser-stdout: 1.3.1 - chokidar: 3.6.0 - debug: 4.3.7(supports-color@8.1.1) - diff: 5.2.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 8.1.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.1.6 - ms: 2.1.3 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.5.1 - yargs: 16.2.0 - yargs-parser: 20.2.9 - yargs-unparser: 2.0.0 - - ms@2.1.3: {} - - murmur-128@0.2.1: - dependencies: - encode-utf8: 1.0.3 - fmix: 0.1.0 - imul: 1.0.1 - - napi-build-utils@1.0.2: {} - - natural-compare@1.4.0: {} - - negotiator@0.6.4: - optional: true - - neo-async@2.6.2: {} - - node-abi@3.71.0: - dependencies: - semver: 7.6.3 - - node-addon-api@2.0.2: {} - - node-addon-api@5.1.0: {} - - node-addon-api@7.1.1: {} - - node-emoji@1.11.0: - dependencies: - lodash: 4.17.21 - - node-gyp-build@4.8.2: {} - - node-gyp@8.4.1: - dependencies: - env-paths: 2.2.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - make-fetch-happen: 9.1.0 - nopt: 5.0.0 - npmlog: 6.0.2 - rimraf: 3.0.2 - semver: 7.6.3 - tar: 6.2.1 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - optional: true - - node-interval-tree@2.1.2: - dependencies: - shallowequal: 1.1.0 - - node-tfhe@0.9.1: {} - - node-tkms@0.9.0-rc5: {} - - nofilter@3.1.0: {} - - nopt@3.0.6: - dependencies: - abbrev: 1.0.9 - - nopt@5.0.0: - dependencies: - abbrev: 1.1.1 - optional: true - - normalize-path@3.0.0: {} - - npmlog@6.0.2: - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - optional: true - - number-to-bn@1.7.0: - dependencies: - bn.js: 4.11.6 - strip-hex-prefix: 1.0.0 - - object-assign@4.1.1: {} - - object-inspect@1.13.2: {} - - obliterator@2.0.4: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - optionator@0.8.3: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.5 - - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - ordinal@1.0.3: {} - - os-tmpdir@1.0.2: {} - - p-limit@1.3.0: - dependencies: - p-try: 1.0.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@2.0.0: - dependencies: - p-limit: 1.3.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - - p-try@1.0.0: {} - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-cache-control@1.0.1: {} - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.25.7 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - path-exists@3.0.0: {} - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-type@4.0.0: {} - - pathval@1.1.1: {} - - pbkdf2@3.1.2: - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - pify@4.0.1: {} - - pluralize@8.0.0: {} - - prebuild-install@7.1.2: - dependencies: - detect-libc: 2.0.3 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.71.0 - pump: 3.0.2 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - - prelude-ls@1.1.2: {} - - prelude-ls@1.2.1: {} - - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.3.0 - - prettier-plugin-solidity@1.4.1(prettier@2.8.8): - dependencies: - '@solidity-parser/parser': 0.18.0 - prettier: 2.8.8 - semver: 7.6.3 - - prettier@2.8.8: {} - - process-nextick-args@2.0.1: {} - - promise-inflight@1.0.1: - optional: true - - promise-retry@2.0.1: - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - optional: true - - promise@8.3.0: - dependencies: - asap: 2.0.6 - - proxy-from-env@1.1.0: {} - - pump@3.0.2: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - punycode@2.3.1: {} - - qs@6.13.0: - dependencies: - side-channel: 1.0.6 - - queue-microtask@1.2.3: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - - rc@1.2.8: - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - readdirp@4.0.2: {} - - rechoir@0.6.2: - dependencies: - resolve: 1.22.8 - - recursive-readdir@2.2.3: - dependencies: - minimatch: 3.1.2 - - reduce-flatten@2.0.0: {} - - regexparam@3.0.0: {} - - req-cwd@2.0.0: - dependencies: - req-from: 2.0.0 - - req-from@2.0.0: - dependencies: - resolve-from: 3.0.0 - - require-directory@2.1.1: {} - - require-from-string@2.0.2: {} - - resolve-from@3.0.0: {} - - resolve-from@4.0.0: {} - - resolve@1.1.7: {} - - resolve@1.17.0: - dependencies: - path-parse: 1.0.7 - - resolve@1.22.8: - dependencies: - is-core-module: 2.15.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - retry@0.12.0: - optional: true - - reusify@1.0.4: {} - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - optional: true - - rimraf@4.4.1: - dependencies: - glob: 9.3.5 - - ripemd160@2.0.2: - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - - rlp@2.2.7: - dependencies: - bn.js: 5.2.1 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} - - safer-buffer@2.1.2: {} - - sc-istanbul@0.4.6: - dependencies: - abbrev: 1.0.9 - async: 1.5.2 - escodegen: 1.8.1 - esprima: 2.7.3 - glob: 5.0.15 - handlebars: 4.7.8 - js-yaml: 3.14.1 - mkdirp: 0.5.6 - nopt: 3.0.6 - once: 1.4.0 - resolve: 1.1.7 - supports-color: 3.2.3 - which: 1.3.1 - wordwrap: 1.0.0 - - scrypt-js@3.0.1: {} - - secp256k1@4.0.4: - dependencies: - elliptic: 6.5.7 - node-addon-api: 5.1.0 - node-gyp-build: 4.8.2 - - semver@5.7.2: {} - - semver@6.3.1: {} - - semver@7.6.3: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - set-blocking@2.0.0: - optional: true - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - - setimmediate@1.0.5: {} - - setprototypeof@1.2.0: {} - - sha.js@2.4.11: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - sha1@1.1.1: - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - - shallowequal@1.1.0: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - shelljs@0.8.5: - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - - side-channel@1.0.6: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.2 - - signal-exit@3.0.7: - optional: true - - simple-concat@1.0.1: {} - - simple-get@4.0.1: - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - - slash@3.0.0: {} - - slice-ansi@4.0.0: - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - - smart-buffer@4.2.0: - optional: true - - socks-proxy-agent@6.2.1: - dependencies: - agent-base: 6.0.2 - debug: 4.3.7(supports-color@8.1.1) - socks: 2.8.3 - transitivePeerDependencies: - - supports-color - optional: true - - socks@2.8.3: - dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 - optional: true - - solc@0.8.26(debug@4.3.7): - dependencies: - command-exists: 1.2.9 - commander: 8.3.0 - follow-redirects: 1.15.9(debug@4.3.7) - js-sha3: 0.8.0 - memorystream: 0.3.1 - semver: 5.7.2 - tmp: 0.0.33 - transitivePeerDependencies: - - debug - - solhint-plugin-prettier@0.0.5(prettier-plugin-solidity@1.4.1(prettier@2.8.8))(prettier@2.8.8): - dependencies: - prettier: 2.8.8 - prettier-linter-helpers: 1.0.0 - prettier-plugin-solidity: 1.4.1(prettier@2.8.8) - - solhint@3.6.2(typescript@5.6.3): - dependencies: - '@solidity-parser/parser': 0.16.2 - ajv: 6.12.6 - antlr4: 4.13.2 - ast-parents: 0.0.1 - chalk: 4.1.2 - commander: 10.0.1 - cosmiconfig: 8.3.6(typescript@5.6.3) - fast-diff: 1.3.0 - glob: 8.1.0 - ignore: 5.3.2 - js-yaml: 4.1.0 - lodash: 4.17.21 - pluralize: 8.0.0 - semver: 7.6.3 - strip-ansi: 6.0.1 - table: 6.8.2 - text-table: 0.2.0 - optionalDependencies: - prettier: 2.8.8 - transitivePeerDependencies: - - typescript - - solidity-comments-darwin-arm64@0.0.2: - optional: true - - solidity-comments-darwin-x64@0.0.2: - optional: true - - solidity-comments-freebsd-x64@0.0.2: - optional: true - - solidity-comments-linux-arm64-gnu@0.0.2: - optional: true - - solidity-comments-linux-arm64-musl@0.0.2: - optional: true - - solidity-comments-linux-x64-gnu@0.0.2: - optional: true - - solidity-comments-linux-x64-musl@0.0.2: - optional: true - - solidity-comments-win32-arm64-msvc@0.0.2: - optional: true - - solidity-comments-win32-ia32-msvc@0.0.2: - optional: true - - solidity-comments-win32-x64-msvc@0.0.2: - optional: true - - solidity-comments@0.0.2: - optionalDependencies: - solidity-comments-darwin-arm64: 0.0.2 - solidity-comments-darwin-x64: 0.0.2 - solidity-comments-freebsd-x64: 0.0.2 - solidity-comments-linux-arm64-gnu: 0.0.2 - solidity-comments-linux-arm64-musl: 0.0.2 - solidity-comments-linux-x64-gnu: 0.0.2 - solidity-comments-linux-x64-musl: 0.0.2 - solidity-comments-win32-arm64-msvc: 0.0.2 - solidity-comments-win32-ia32-msvc: 0.0.2 - solidity-comments-win32-x64-msvc: 0.0.2 - - solidity-coverage@0.8.12(hardhat@2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3)): - dependencies: - '@ethersproject/abi': 5.7.0 - '@solidity-parser/parser': 0.18.0 - chalk: 2.4.2 - death: 1.1.0 - difflib: 0.2.4 - fs-extra: 8.1.0 - ghost-testrpc: 0.0.2 - global-modules: 2.0.0 - globby: 10.0.2 - hardhat: 2.22.13(ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3))(typescript@5.6.3) - jsonschema: 1.4.1 - lodash: 4.17.21 - mocha: 10.7.3 - node-emoji: 1.11.0 - pify: 4.0.1 - recursive-readdir: 2.2.3 - sc-istanbul: 0.4.6 - semver: 7.6.3 - shelljs: 0.8.5 - web3-utils: 1.10.4 - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.2.0: - dependencies: - amdefine: 1.0.1 - optional: true - - source-map@0.5.7: {} - - source-map@0.6.1: {} - - sprintf-js@1.0.3: {} - - sprintf-js@1.1.3: - optional: true - - sqlite3@5.1.7: - dependencies: - bindings: 1.5.0 - node-addon-api: 7.1.1 - prebuild-install: 7.1.2 - tar: 6.2.1 - optionalDependencies: - node-gyp: 8.4.1 - transitivePeerDependencies: - - bluebird - - supports-color - - ssri@8.0.1: - dependencies: - minipass: 3.3.6 - optional: true - - stacktrace-parser@0.1.10: - dependencies: - type-fest: 0.7.1 - - statuses@2.0.1: {} - - string-format@2.0.0: {} - - string-width@2.1.1: - dependencies: - is-fullwidth-code-point: 2.0.0 - strip-ansi: 4.0.0 - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - strip-ansi@4.0.0: - dependencies: - ansi-regex: 3.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-hex-prefix@1.0.0: - dependencies: - is-hex-prefixed: 1.0.0 - - strip-json-comments@2.0.1: {} - - strip-json-comments@3.1.1: {} - - supports-color@3.2.3: - dependencies: - has-flag: 1.0.0 - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - sync-request@6.1.0: - dependencies: - http-response-object: 3.0.2 - sync-rpc: 1.3.6 - then-request: 6.0.2 - - sync-rpc@1.3.6: - dependencies: - get-port: 3.2.0 - - table-layout@1.0.2: - dependencies: - array-back: 4.0.2 - deep-extend: 0.6.0 - typical: 5.2.0 - wordwrapjs: 4.0.1 - - table@6.8.2: - dependencies: - ajv: 8.17.1 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - tar-fs@2.1.1: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.2 - tar-stream: 2.2.0 - - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - text-table@0.2.0: {} - - tfhe@0.9.1: {} - - then-request@6.0.2: - dependencies: - '@types/concat-stream': 1.6.1 - '@types/form-data': 0.0.33 - '@types/node': 8.10.66 - '@types/qs': 6.9.16 - caseless: 0.12.0 - concat-stream: 1.6.2 - form-data: 2.5.2 - http-basic: 8.1.3 - http-response-object: 3.0.2 - promise: 8.3.0 - qs: 6.13.0 - - tkms@0.9.0-rc5: {} - - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - - to-fast-properties@2.0.0: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - toidentifier@1.0.1: {} - - ts-api-utils@1.3.0(typescript@5.6.3): - dependencies: - typescript: 5.6.3 - - ts-command-line-args@2.5.1: - dependencies: - chalk: 4.1.2 - command-line-args: 5.2.1 - command-line-usage: 6.1.3 - string-format: 2.0.0 - - ts-essentials@1.0.4: {} - - ts-essentials@7.0.3(typescript@5.6.3): - dependencies: - typescript: 5.6.3 - - ts-generator@0.1.1: - dependencies: - '@types/mkdirp': 0.5.2 - '@types/prettier': 2.7.3 - '@types/resolve': 0.0.8 - chalk: 2.4.2 - glob: 7.2.3 - mkdirp: 0.5.6 - prettier: 2.8.8 - resolve: 1.22.8 - ts-essentials: 1.0.4 - - ts-node@10.9.2(@types/node@18.19.57)(typescript@5.6.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 18.19.57 - acorn: 8.13.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.6.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - - tslib@1.14.1: {} - - tslib@2.7.0: {} - - tsort@0.0.1: {} - - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - - tweetnacl-util@0.15.1: {} - - tweetnacl@1.0.3: {} - - type-check@0.3.2: - dependencies: - prelude-ls: 1.1.2 - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-detect@4.1.0: {} - - type-fest@0.20.2: {} - - type-fest@0.21.3: {} - - type-fest@0.7.1: {} - - typechain@8.3.2(typescript@5.6.3): - dependencies: - '@types/prettier': 2.7.3 - debug: 4.3.7(supports-color@8.1.1) - fs-extra: 7.0.1 - glob: 7.1.7 - js-sha3: 0.8.0 - lodash: 4.17.21 - mkdirp: 1.0.4 - prettier: 2.8.8 - ts-command-line-args: 2.5.1 - ts-essentials: 7.0.3(typescript@5.6.3) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - typedarray@0.0.6: {} - - typescript-eslint@8.10.0(eslint@9.13.0)(typescript@5.6.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/parser': 8.10.0(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/utils': 8.10.0(eslint@9.13.0)(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - eslint - - supports-color - - typescript@5.6.3: {} - - typical@4.0.0: {} - - typical@5.2.0: {} - - uglify-js@3.19.3: - optional: true - - undici-types@5.26.5: {} - - undici-types@6.19.8: {} - - undici@5.28.4: - dependencies: - '@fastify/busboy': 2.1.1 - - unique-filename@1.1.1: - dependencies: - unique-slug: 2.0.2 - optional: true - - unique-slug@2.0.2: - dependencies: - imurmurhash: 0.1.4 - optional: true - - universalify@0.1.2: {} - - universalify@2.0.1: {} - - unpipe@1.0.0: {} - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - utf8@3.0.0: {} - - util-deprecate@1.0.2: {} - - uuid@8.3.2: {} - - v8-compile-cache-lib@3.0.1: {} - - wasm-feature-detect@1.8.0: {} - - web3-utils@1.10.4: - dependencies: - '@ethereumjs/util': 8.1.0 - bn.js: 5.2.1 - ethereum-bloom-filters: 1.2.0 - ethereum-cryptography: 2.2.1 - ethjs-unit: 0.1.6 - number-to-bn: 1.7.0 - randombytes: 2.1.0 - utf8: 3.0.0 - - which@1.3.1: - dependencies: - isexe: 2.0.0 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - optional: true - - widest-line@3.1.0: - dependencies: - string-width: 4.2.3 - - word-wrap@1.2.5: {} - - wordwrap@1.0.0: {} - - wordwrapjs@4.0.1: - dependencies: - reduce-flatten: 2.0.0 - typical: 5.2.0 - - workerpool@6.5.1: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.4.6: {} - - ws@7.5.10: {} - - ws@8.17.1: {} - - y18n@5.0.8: {} - - yallist@4.0.0: {} - - yargs-parser@20.2.9: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yn@3.1.1: {} - - yocto-queue@0.1.0: {} - - zksync-ethers@5.9.2(ethers@5.7.2): - dependencies: - ethers: 5.7.2 From d1e8cdc4ad37f62ede7733a57236b9470cb51305 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Fri, 29 Nov 2024 16:10:40 +0100 Subject: [PATCH 16/21] fix: instance --- e2e/test/gateway/decrypt.ts | 80 +++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 43 deletions(-) diff --git a/e2e/test/gateway/decrypt.ts b/e2e/test/gateway/decrypt.ts index ffc48e2..92f18dc 100644 --- a/e2e/test/gateway/decrypt.ts +++ b/e2e/test/gateway/decrypt.ts @@ -26,7 +26,7 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt bool", async function () { const tx = await this.contract.connect(this.signers.carol).requestBool({ gasLimit: 5_000_000 }); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yBool(); expect(y).to.equal(true); }); @@ -34,7 +34,7 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt bool trustless", async function () { const tx2 = await this.contract.requestBoolTrustless({ gasLimit: 5_000_000 }); await tx2.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yBool(); expect(y).to.equal(true); }); @@ -43,7 +43,7 @@ describe("TestAsyncDecrypt", function () { const balanceBefore = await ethers.provider.getBalance(this.relayerAddress); const tx2 = await this.contract.connect(this.signers.carol).requestUint4({ gasLimit: 5_000_000 }); await tx2.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yUint4(); expect(y).to.equal(4); const balanceAfter = await ethers.provider.getBalance(this.relayerAddress); @@ -53,7 +53,7 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt uint8", async function () { const tx2 = await this.contract.connect(this.signers.carol).requestUint8({ gasLimit: 5_000_000 }); await tx2.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yUint8(); expect(y).to.equal(42); }); @@ -61,7 +61,7 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt uint16", async function () { const tx2 = await this.contract.connect(this.signers.carol).requestUint16({ gasLimit: 5_000_000 }); await tx2.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yUint16(); expect(y).to.equal(16); }); @@ -69,7 +69,7 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt uint32", async function () { const tx2 = await this.contract.connect(this.signers.carol).requestUint32(5, 15, { gasLimit: 5_000_000 }); await tx2.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yUint32(); expect(y).to.equal(52); // 5+15+32 }); @@ -77,7 +77,7 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt uint64", async function () { const tx2 = await this.contract.connect(this.signers.carol).requestUint64({ gasLimit: 5_000_000 }); await tx2.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yUint64(); expect(y).to.equal(18446744073709551600n); }); @@ -85,20 +85,20 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt uint128", async function () { const tx2 = await this.contract.connect(this.signers.carol).requestUint128({ gasLimit: 5_000_000 }); await tx2.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yUint128(); expect(y).to.equal(1267650600228229401496703205443n); }); it("test async decrypt uint128 non-trivial", async function () { - const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + const inputAlice = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); inputAlice.add128(184467440737095500429401496n); const encryptedAmount = await inputAlice.encrypt(); const tx = await this.contract.requestUint128NonTrivial(encryptedAmount.handles[0], encryptedAmount.inputProof, { gasLimit: 5_000_000, }); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yUint128(); expect(y).to.equal(184467440737095500429401496n); }); @@ -106,20 +106,20 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt uint256", async function () { const tx2 = await this.contract.connect(this.signers.carol).requestUint256({ gasLimit: 5_000_000 }); await tx2.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yUint256(); expect(y).to.equal(27606985387162255149739023449108101809804435888681546220650096895197251n); }); it("test async decrypt uint256 non-trivial", async function () { - const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + const inputAlice = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); inputAlice.add256(6985387162255149739023449108101809804435888681546n); const encryptedAmount = await inputAlice.encrypt(); const tx = await this.contract.requestUint256NonTrivial(encryptedAmount.handles[0], encryptedAmount.inputProof, { gasLimit: 5_000_000, }); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yUint256(); expect(y).to.equal(6985387162255149739023449108101809804435888681546n); }); @@ -127,7 +127,7 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt address", async function () { const tx2 = await this.contract.connect(this.signers.carol).requestAddress({ gasLimit: 5_000_000 }); await tx2.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yAddress(); expect(y).to.equal("0x8ba1f109551bD432803012645Ac136ddd64DBA72"); }); @@ -135,7 +135,7 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt several addresses", async function () { const tx2 = await this.contract.connect(this.signers.carol).requestSeveralAddresses({ gasLimit: 5_000_000 }); await tx2.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yAddress(); const y2 = await this.contract.yAddress2(); expect(y).to.equal("0x8ba1f109551bD432803012645Ac136ddd64DBA72"); @@ -145,7 +145,7 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt mixed", async function () { const tx2 = await this.contract.connect(this.signers.carol).requestMixed(5, 15, { gasLimit: 5_000_000 }); await tx2.wait(); - await waitNBlocks(5); + await waitNBlocks(20); let yB = await this.contract.yBool(); expect(yB).to.equal(true); let y = await this.contract.yUint4(); @@ -163,14 +163,14 @@ describe("TestAsyncDecrypt", function () { }); it("test async decrypt uint64 non-trivial", async function () { - const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + const inputAlice = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); inputAlice.add64(18446744073709550042n); const encryptedAmount = await inputAlice.encrypt(); const tx = await this.contract.requestUint64NonTrivial(encryptedAmount.handles[0], encryptedAmount.inputProof, { gasLimit: 5_000_000, }); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yUint64(); expect(y).to.equal(18446744073709550042n); }); @@ -178,13 +178,13 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt ebytes64 trivial", async function () { const tx = await this.contract.requestEbytes64Trivial("0x78685689"); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yBytes64(); expect(y).to.equal(ethers.toBeHex(BigInt("0x78685689"), 64)); }); it("test async decrypt ebytes64 non-trivial", async function () { - const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + const inputAlice = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); inputAlice.addBytes64( bigIntToBytes64(98870780878070870878787887072921111299111111000000292928818818818818221112111n), ); @@ -193,7 +193,7 @@ describe("TestAsyncDecrypt", function () { gasLimit: 5_000_000, }); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yBytes64(); expect(y).to.equal( ethers.toBeHex(98870780878070870878787887072921111299111111000000292928818818818818221112111n, 64), @@ -205,7 +205,7 @@ describe("TestAsyncDecrypt", function () { "0x8701d11594415047dfac2d9cb87e6631df5a735a2f364fba1511fa7b812dfad2972b809b80ff25ec19591a598081af357cba384cf5aa8e085678ff70bc55faee", ); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yBytes128(); expect(y).to.equal( ethers.toBeHex( @@ -218,7 +218,7 @@ describe("TestAsyncDecrypt", function () { }); it("test async decrypt ebytes128 non-trivial", async function () { - const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + const inputAlice = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); inputAlice.addBytes128( bigIntToBytes128( 9887078087807087087878788707292111129911111100000029292881881881881822111211198870780878070870878787887072921111299111111000000292928818818818818221112111n, @@ -229,7 +229,7 @@ describe("TestAsyncDecrypt", function () { gasLimit: 5_000_000, }); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yBytes128(); expect(y).to.equal( ethers.toBeHex( @@ -242,20 +242,20 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt ebytes256 trivial", async function () { const tx = await this.contract.requestEbytes256Trivial("0x78685689"); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yBytes256(); expect(y).to.equal(ethers.toBeHex(BigInt("0x78685689"), 256)); }); it("test async decrypt ebytes256 non-trivial", async function () { - const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + const inputAlice = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); inputAlice.addBytes256(bigIntToBytes256(18446744073709550022n)); const encryptedAmount = await inputAlice.encrypt(); const tx = await this.contract.requestEbytes256NonTrivial(encryptedAmount.handles[0], encryptedAmount.inputProof, { gasLimit: 5_000_000, }); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yBytes256(); expect(y).to.equal(ethers.toBeHex(18446744073709550022n, 256)); }); @@ -263,7 +263,7 @@ describe("TestAsyncDecrypt", function () { it("test async decrypt ebytes256 non-trivial with snapshot [skip-on-coverage]", async function () { if (network.name === "hardhat") { this.snapshotId = await ethers.provider.send("evm_snapshot"); - const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + const inputAlice = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); inputAlice.addBytes256(bigIntToBytes256(18446744073709550022n)); const encryptedAmount = await inputAlice.encrypt(); const tx = await this.contract.requestEbytes256NonTrivial( @@ -272,12 +272,12 @@ describe("TestAsyncDecrypt", function () { { gasLimit: 5_000_000 }, ); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yBytes256(); expect(y).to.equal(ethers.toBeHex(18446744073709550022n, 256)); await ethers.provider.send("evm_revert", [this.snapshotId]); - const inputAlice2 = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + const inputAlice2 = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); inputAlice2.addBytes256(bigIntToBytes256(424242n)); const encryptedAmount2 = await inputAlice2.encrypt(); const tx2 = await this.contract.requestEbytes256NonTrivial( @@ -286,21 +286,21 @@ describe("TestAsyncDecrypt", function () { { gasLimit: 5_000_000 }, ); await tx2.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y2 = await this.contract.yBytes256(); expect(y2).to.equal(ethers.toBeHex(424242n, 256)); } }); it("test async decrypt mixed with ebytes256", async function () { - const inputAlice = this.instances.alice.createEncryptedInput(this.contractAddress, this.signers.alice.address); + const inputAlice = this.fhevm.createEncryptedInput(this.contractAddress, this.signers.alice.address); inputAlice.addBytes256(bigIntToBytes256(18446744073709550032n)); const encryptedAmount = await inputAlice.encrypt(); const tx = await this.contract.requestMixedBytes256(encryptedAmount.handles[0], encryptedAmount.inputProof, { gasLimit: 5_000_000, }); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yBytes256(); expect(y).to.equal(ethers.toBeHex(18446744073709550032n, 256)); const y2 = await this.contract.yBytes64(); @@ -312,10 +312,7 @@ describe("TestAsyncDecrypt", function () { }); it("test async decrypt ebytes256 non-trivial trustless", async function () { - const inputAlice = this.instances.alice.createEncryptedInput( - await this.contract.getAddress(), - this.signers.alice.address, - ); + const inputAlice = this.fhevm.createEncryptedInput(await this.contract.getAddress(), this.signers.alice.address); inputAlice.addBytes256(bigIntToBytes256(18446744073709550022n)); const encryptedAmount = await inputAlice.encrypt(); const tx = await this.contract.requestEbytes256NonTrivialTrustless( @@ -324,16 +321,13 @@ describe("TestAsyncDecrypt", function () { { gasLimit: 5_000_000 }, ); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yBytes256(); expect(y).to.equal(ethers.toBeHex(18446744073709550022n, 256)); }); it("test async decrypt mixed with ebytes256 trustless", async function () { - const inputAlice = this.instances.alice.createEncryptedInput( - await this.contract.getAddress(), - this.signers.alice.address, - ); + const inputAlice = this.fhevm.createEncryptedInput(await this.contract.getAddress(), this.signers.alice.address); inputAlice.addBytes256(bigIntToBytes256(18446744073709550032n)); const encryptedAmount = await inputAlice.encrypt(); const tx = await this.contract.requestMixedBytes256Trustless( @@ -344,7 +338,7 @@ describe("TestAsyncDecrypt", function () { }, ); await tx.wait(); - await waitNBlocks(5); + await waitNBlocks(20); const y = await this.contract.yBytes256(); expect(y).to.equal(ethers.toBeHex(18446744073709550032n, 256)); const yb = await this.contract.yBool(); From e0448eb048a0f9a9ff0872c5583bff3ec86e8d0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Fri, 29 Nov 2024 16:15:35 +0100 Subject: [PATCH 17/21] docs: update with npm --- e2e/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/e2e/README.md b/e2e/README.md index a6dec46..7994ecf 100644 --- a/e2e/README.md +++ b/e2e/README.md @@ -3,7 +3,7 @@ ## Install ```bash -pnpm install +npm install ``` ## Configuration @@ -14,16 +14,16 @@ pnpm install 4. Edit `hardhat.config.ts` to set the `defaultNetwork`. By default, it is set to Sepolia, but you can a different one or add your own L1 address. 4. Fund your wallet 5. Fund the primary wallet derived from your mnemomic. If you don't know what is the public address, run - `pnpm run task:accounts` + `npm run task:accounts` ## Run ```bash -pnpm run test +npm run test ``` or if you want to run only one test ```bash -pnpm run test test/encryptedERC20/EncryptedERC20.ts +npm run test test/encryptedERC20/EncryptedERC20.ts ``` From 3e930c00f72dd02f58a1f2dea3f1085bbead6004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Fri, 29 Nov 2024 19:20:18 +0100 Subject: [PATCH 18/21] chore: update package name --- e2e/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e/package.json b/e2e/package.json index 8b951aa..914ac76 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -1,6 +1,6 @@ { - "name": "@zama-ai/fhevm-hardhat-template", - "description": "fhEVM hardhat template", + "name": "e2e", + "description": "fhEVM e2e tests", "version": "1.0.0", "engines": { "node": ">=20.0.0" From e50cea30680a50efd07a7822081c36095728e6e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Fri, 29 Nov 2024 19:21:26 +0100 Subject: [PATCH 19/21] chore: update licence --- e2e/LICENSE.md | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/e2e/LICENSE.md b/e2e/LICENSE.md index 88a2b87..13ab90e 100644 --- a/e2e/LICENSE.md +++ b/e2e/LICENSE.md @@ -1,16 +1,24 @@ -MIT License +BSD 3-Clause Clear License -Copyright (c) 2023 Paul Razvan Berg +Copyright © 2024 ZAMA. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the +following conditions are met: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the -Software. +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following + disclaimer. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of ZAMA nor the names of its contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY +THE ZAMA AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ZAMA OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. From 289b9fa1e0d369bab97eab9438ec76bfa0217cb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Fri, 29 Nov 2024 19:21:48 +0100 Subject: [PATCH 20/21] chore: remove Makefile --- e2e/Makefile | 50 -------------------------------------------------- 1 file changed, 50 deletions(-) delete mode 100644 e2e/Makefile diff --git a/e2e/Makefile b/e2e/Makefile deleted file mode 100644 index 26c1727..0000000 --- a/e2e/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/make -f - -include .env - -KEY_GEN = false -BINDIR ?= $(GOPATH)/bin -ETHERMINT_BINARY = ethermintd -ETHERMINT_DIR = ethermint - - -# This version must the same as in docker-compose-full.yml -# TODO add check -KMS_DEV_VERSION ?= v0.7.1 - -export GO111MODULE = on - -# Default target executed when no arguments are given to make. -default_target: all - -.PHONY: default_target - -# process build tags - -############################################################################### -### Single validator ### -############################################################################### - - - -generate-fhe-keys: - @bash ./scripts/copy_fhe_keys.sh $(KMS_DEV_VERSION) $(PWD)/network-fhe-keys $(PWD)/kms-fhe-keys - -run-full: - $(MAKE) generate-fhe-keys - @docker compose --env-file .env.docker -f docker-compose/docker-compose-full.yml up --detach - @echo 'sleep a little to let the docker start up' - sleep 5 - -stop-full: - @docker compose --env-file .env.docker -f docker-compose/docker-compose-full.yml down - - -clean: - $(MAKE) stop-full - rm -rf network-fhe-keys - rm -rf kms-fhe-keys - - -print-info: - @echo 'KMS_DEV_VERSION: $(KMS_DEV_VERSION) for KEY_GEN---extracted from Makefile' From dca92f223aa9cda57b95b4902217b8b52dc2894e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20=27birdy=27=20Danjou?= Date: Mon, 2 Dec 2024 15:02:46 +0100 Subject: [PATCH 21/21] fix: use alice instead of relayeraddress --- e2e/test/gateway/decrypt.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/e2e/test/gateway/decrypt.ts b/e2e/test/gateway/decrypt.ts index 92f18dc..21f2556 100644 --- a/e2e/test/gateway/decrypt.ts +++ b/e2e/test/gateway/decrypt.ts @@ -39,14 +39,14 @@ describe("TestAsyncDecrypt", function () { expect(y).to.equal(true); }); - it("test async decrypt uint4", async function () { - const balanceBefore = await ethers.provider.getBalance(this.relayerAddress); + it.only("test async decrypt uint4", async function () { + const balanceBefore = await ethers.provider.getBalance(this.signers.alice); const tx2 = await this.contract.connect(this.signers.carol).requestUint4({ gasLimit: 5_000_000 }); await tx2.wait(); await waitNBlocks(20); const y = await this.contract.yUint4(); expect(y).to.equal(4); - const balanceAfter = await ethers.provider.getBalance(this.relayerAddress); + const balanceAfter = await ethers.provider.getBalance(this.signers.alice); console.log(balanceBefore - balanceAfter); });