diff --git a/.env.example b/.env.example index 083809493..d87a07581 100644 --- a/.env.example +++ b/.env.example @@ -7,4 +7,5 @@ SNOWTRACE_API_KEY=00000000000000000000000000000000 ARBISCAN_API_KEY=00000000000000000000000000000000 LINEASCAN_API_KEY=00000000000000000000000000000000 BLOCKSCOUT_API_KEY=abc -MULTISIG_OWNER=0xf8bB149F9525875Fa47B8CC632d368EB600FAba3 \ No newline at end of file +MULTISIG_OWNER=0xf8bB149F9525875Fa47B8CC632d368EB600FAba3 +REPORT_GAS=true \ No newline at end of file diff --git a/.eslintrc b/.eslintrc index e1391109b..8d1c0fa01 100644 --- a/.eslintrc +++ b/.eslintrc @@ -28,6 +28,7 @@ "@typescript-eslint/camelcase": 0, "@typescript-eslint/explicit-function-return-type": 0, "@typescript-eslint/no-var-requires": 0, - "@typescript-eslint/ban-ts-comment": 0 + "@typescript-eslint/ban-ts-comment": 0, + "prefer-const": 1 } } diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c37b51ab3..c63dde877 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,7 +15,7 @@ jobs: node-version: '18.x' - run: yarn install - run: lerna run compile --concurrency=1 - - run: lerna run test:unit --concurrency=1 + - run: lerna run test:ci --concurrency=1 env: MNEMONIC: ${{ secrets.MNEMONIC }} - name: Success ✅ diff --git a/.prettierrc b/.prettierrc index ef189772d..7fe7f1b51 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,9 +1,9 @@ { + "bracketSpacing": true, "printWidth": 80, - "tabWidth": 2, "semi": false, "singleQuote": true, - "bracketSpacing": true, + "tabWidth": 2, "trailingComma": "es5", "overrides": [ { diff --git a/hardhat.config.js b/hardhat.config.js index 08c25ae73..4190c8f7b 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -3,6 +3,7 @@ require('@typechain/hardhat') require('@nomiclabs/hardhat-ethers') require('@nomiclabs/hardhat-waffle') require('@nomiclabs/hardhat-etherscan') +require('hardhat-gas-reporter') require('solidity-coverage') const { @@ -147,6 +148,9 @@ module.exports = { }, ], }, + gasReporter: { + enabled: process.env.REPORT_GAS === 'true' ? true : false, + }, paths: { artifacts: './build', }, diff --git a/package.json b/package.json index 68465fbc1..cd6628095 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "compile": "lerna run compile", "lint:check": "yarn eslint . --ext .js,.ts", "lint:fix": "yarn eslint . --ext .js,.ts --fix", - "test": "lerna run test:unit", + "test": "lerna run test", + "test:ci": "lerna run test:ci", "ownership:check": "node ./scripts/ownership.js check", "prepare": "husky install", "pretty:check": "prettier --check \"./**/*.sol\" \"./**/*.ts\" \"./**/*.js\" \"./**/*.json\"", @@ -38,13 +39,14 @@ "eslint": "^8.20.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.2.1", - "ethereum-waffle": "^3.4.4", + "ethereum-waffle": "^4.0.10", "ethers": "^5.6.9", "hardhat": "^2.12.7", + "hardhat-gas-reporter": "^1.0.9", "husky": "^8.0.1", "lerna": "^7.3.0", "mocha": "^10.2.0", - "nx": "^15.9.2", + "nx": "^16.5.5", "prettier": "^2.8.4", "prettier-plugin-solidity": "^1.1.2", "solidity-coverage": "^0.8.2", diff --git a/source/balances/package.json b/source/balances/package.json index 3c27e1330..6c37d9973 100644 --- a/source/balances/package.json +++ b/source/balances/package.json @@ -20,7 +20,7 @@ "typechain": "tsc -b", "coverage": "hardhat coverage", "test": "hardhat test", - "test:unit": "hardhat test", + "test:ci": "hardhat test", "deploy": "hardhat run ./scripts/deploy.js", "verify": "hardhat run ./scripts/verify.js" }, @@ -28,7 +28,7 @@ "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "^4.0.10", + "@airswap/constants": "^4.1.0", "@airswap/utils": "^4.0.8", "prompt-confirm": "^2.0.4" }, diff --git a/source/balances/scripts/deploy.js b/source/balances/scripts/deploy.js index 61f71c4c8..2fe077159 100644 --- a/source/balances/scripts/deploy.js +++ b/source/balances/scripts/deploy.js @@ -2,7 +2,7 @@ const fs = require('fs') const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') -const { ChainIds, chainNames } = require('@airswap/constants') +const { ChainIds, chainNames, chainLabels } = require('@airswap/constants') const { getReceiptUrl } = require('@airswap/utils') const balancesDeploys = require('../deploys.js') @@ -40,7 +40,7 @@ async function main() { console.log('Updated deploys.js') console.log( - `\nVerify with "yarn verify --network ${chainNames[ + `\nVerify with "yarn verify --network ${chainLabels[ chainId ].toLowerCase()}"\n` ) diff --git a/source/pool/README.md b/source/pool/README.md index 47f5a0954..37de1296a 100644 --- a/source/pool/README.md +++ b/source/pool/README.md @@ -28,7 +28,7 @@ Environment variables are set in an `.env` file in the repository root. | `yarn compile` | Compile all contracts to `build` folder | | `yarn coverage` | Report test coverage | | `yarn test` | Run all tests in `test` folder | -| `yarn test:unit` | Run unit tests in `test` folder | +| `yarn test:ci` | Run CI tests in `test` folder | | `yarn deploy` | Deploy on a network using --network flag | | `yarn verify` | Verify on a network using --network flag | diff --git a/source/pool/contracts/Pool.sol b/source/pool/contracts/Pool.sol index b0e403a26..7ad0f0f6f 100644 --- a/source/pool/contracts/Pool.sol +++ b/source/pool/contracts/Pool.sol @@ -1,405 +1,245 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.17; -import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/access/Ownable2Step.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@airswap/staking/contracts/interfaces/IStaking.sol"; +import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; import "./interfaces/IPool.sol"; /** - * @title AirSwap: Rewards Pool + * @title AirSwap: Withdrawable Token Pool * @notice https://www.airswap.io/ */ -contract Pool is IPool, Ownable { +contract Pool is IPool, Ownable2Step { using SafeERC20 for IERC20; - bytes32 public constant DOMAIN_TYPEHASH = - keccak256( - abi.encodePacked( - "EIP712Domain(", - "string name,", - "string version,", - "uint256 chainId,", - "address verifyingContract", - ")" - ) - ); - - bytes32 public constant CLAIM_TYPEHASH = - keccak256( - abi.encodePacked( - "Claim(", - "uint256 nonce,", - "uint256 expiry,", - "address participant,", - "uint256 score", - ")" - ) - ); - - bytes32 public constant DOMAIN_NAME = keccak256("POOL"); - bytes32 public constant DOMAIN_VERSION = keccak256("1"); - uint256 public immutable DOMAIN_CHAIN_ID; - bytes32 public immutable DOMAIN_SEPARATOR; - - uint256 internal constant MAX_PERCENTAGE = 100; + uint256 internal constant MAX_MAX = 100; uint256 internal constant MAX_SCALE = 77; // Larger the scale, lower the output for a claim uint256 public scale; - // Max percentage for a claim with infinite score + // Max percentage for a claim with infinite value uint256 public max; - // Mapping of address to boolean to enable admin accounts + // Mapping of address to boolean for admin accounts mapping(address => bool) public admins; - /** - * @notice Double mapping of signers to nonce groups to nonce states - * @dev The nonce group is computed as nonce / 256, so each group of 256 sequential nonces uses the same key - * @dev The nonce states are encoded as 256 bits, for each nonce in the group 0 means available and 1 means used - */ - mapping(address => mapping(uint256 => uint256)) internal noncesClaimed; - - // Staking contract address - address public stakingContract; + // Mapping of tree to account to claim status + mapping(bytes32 => mapping(address => bool)) public claimed; - // Staking token address - address public stakingToken; + // Mapping of tree to root + mapping(bytes32 => bytes32) public rootsByTree; /** * @notice Constructor - * @param _scale uint256 - * @param _max uint256 - * @param _stakingContract address - * @param _stakingToken address + * @param _scale uint256 scale to calculate withdrawal amount + * @param _max uint256 max to calculate withdrawal amount */ - constructor( - uint256 _scale, - uint256 _max, - address _stakingContract, - address _stakingToken - ) { - require(_max <= MAX_PERCENTAGE, "MAX_TOO_HIGH"); - require(_scale <= MAX_SCALE, "SCALE_TOO_HIGH"); - scale = _scale; + constructor(uint256 _scale, uint256 _max) { + if (_max > MAX_MAX) revert MaxTooHigh(_max); + if (_scale > MAX_SCALE) revert ScaleTooHigh(_scale); max = _max; - stakingContract = _stakingContract; - stakingToken = _stakingToken; - admins[msg.sender] = true; + scale = _scale; + } - uint256 currentChainId = getChainId(); - DOMAIN_CHAIN_ID = currentChainId; - DOMAIN_SEPARATOR = keccak256( - abi.encode( - DOMAIN_TYPEHASH, - DOMAIN_NAME, - DOMAIN_VERSION, - currentChainId, - this - ) - ); + /** + * @dev Revert if called by non admin account + */ + modifier multiAdmin() { + if (!admins[msg.sender]) revert Unauthorized(); + _; + } - IERC20(stakingToken).safeApprove(stakingContract, 2 ** 256 - 1); + /** + * @notice Transfer out token balances for migrations + * @param _tokens address[] token balances to transfer + * @param _dest address destination + * @dev Only owner + */ + function drainTo( + address[] calldata _tokens, + address _dest + ) external override onlyOwner { + for (uint256 i = 0; i < _tokens.length; i++) { + uint256 _bal = IERC20(_tokens[i]).balanceOf(address(this)); + IERC20(_tokens[i]).safeTransfer(_dest, _bal); + } + emit DrainTo(_tokens, _dest); } /** - * @notice Set scale + * @notice Set withdrawal scale + * @param _scale uint256 scale to calculate withdrawal amount * @dev Only owner - * @param _scale uint256 */ function setScale(uint256 _scale) external override onlyOwner { - require(_scale <= MAX_SCALE, "SCALE_TOO_HIGH"); + if (_scale > MAX_SCALE) revert ScaleTooHigh(_scale); scale = _scale; emit SetScale(scale); } /** - * @notice Set max + * @notice Set withdrawal max + * @param _max uint256 max to calculate withdrawal amount * @dev Only owner - * @param _max uint256 */ function setMax(uint256 _max) external override onlyOwner { - require(_max <= MAX_PERCENTAGE, "MAX_TOO_HIGH"); + if (_max > MAX_MAX) revert MaxTooHigh(_max); max = _max; emit SetMax(max); } /** - * @notice Add admin address + * @notice Set an admin + * @param _admin address to set as admin * @dev Only owner - * @param _admin address */ - function addAdmin(address _admin) external override onlyOwner { - require(_admin != address(0), "INVALID_ADDRESS"); + function setAdmin(address _admin) external override onlyOwner { + if (_admin == address(0)) revert AddressInvalid(_admin); admins[_admin] = true; - emit AddAdmin(_admin); + emit SetAdmin(_admin); } /** - * @notice Remove admin address + * @notice Unset an admin + * @param _admin address to unset as admin * @dev Only owner - * @param _admin address */ - function removeAdmin(address _admin) external override onlyOwner { - require(admins[_admin] == true, "ADMIN_NOT_SET"); + function unsetAdmin(address _admin) external override onlyOwner { + if (admins[_admin] != true) revert AdminNotSet(_admin); admins[_admin] = false; - emit RemoveAdmin(_admin); - } - - /** - * @notice Set staking contract address - * @dev Only owner - * @param _stakingContract address - */ - function setStakingContract( - address _stakingContract - ) external override onlyOwner { - require(_stakingContract != address(0), "INVALID_ADDRESS"); - // set allowance on old staking contract to zero - IERC20(stakingToken).safeApprove(stakingContract, 0); - stakingContract = _stakingContract; - IERC20(stakingToken).safeApprove(stakingContract, 2 ** 256 - 1); + emit UnsetAdmin(_admin); } /** - * @notice Set staking token address - * @dev Only owner - * @param _stakingToken address + * @notice Enable claims for a merkle tree + * @param _tree bytes32 a tree identifier + * @param _root bytes32 a tree root */ - function setStakingToken(address _stakingToken) external override onlyOwner { - require(_stakingToken != address(0), "INVALID_ADDRESS"); - // set allowance on old staking token to zero - IERC20(stakingToken).safeApprove(stakingContract, 0); - stakingToken = _stakingToken; - IERC20(stakingToken).safeApprove(stakingContract, 2 ** 256 - 1); + function enable(bytes32 _tree, bytes32 _root) external override multiAdmin { + rootsByTree[_tree] = _root; + emit Enable(_tree, _root); } /** - * @notice Admin function to migrate funds + * @notice Set previous claims for migrations + * @param _tree bytes32 + * @param _root bytes32 + * @param _accounts address[] * @dev Only owner - * @param tokens address[] - * @param dest address */ - function drainTo( - address[] calldata tokens, - address dest - ) external override onlyOwner { - for (uint256 i = 0; i < tokens.length; i++) { - uint256 bal = IERC20(tokens[i]).balanceOf(address(this)); - IERC20(tokens[i]).safeTransfer(dest, bal); + function enableAndSetClaimed( + bytes32 _tree, + bytes32 _root, + address[] memory _accounts + ) external override multiAdmin { + // Enable the tree if not yet enabled + if (rootsByTree[_tree] == 0) { + rootsByTree[_tree] = _root; + emit Enable(_tree, _root); + } + // Iterate and set as claimed if not yet claimed + for (uint256 i = 0; i < _accounts.length; i++) { + if (claimed[_tree][_accounts[i]] == false) { + claimed[_tree][_accounts[i]] = true; + emit UseClaim(_accounts[i], _tree); + } } - emit DrainTo(tokens, dest); } /** - * @notice Withdraw tokens from the pool using a signed claim - * @param recipient address - * @param minimum uint256 - * @param token address - * @param nonce uint256 - * @param expiry uint256 - * @param score uint256 - * @param v uint8 "v" value of the ECDSA signature - * @param r bytes32 "r" value of the ECDSA signature - * @param s bytes32 "s" value of the ECDSA signature + * @notice Withdraw tokens using claims + * @param _claims Claim[] a set of claims + * @param _token address of a token to withdraw + * @param _minimum uint256 minimum expected amount + * @param _recipient address to receive withdrawal */ function withdraw( - address recipient, - uint256 minimum, - address token, - uint256 nonce, - uint256 expiry, - uint256 score, - uint8 v, - bytes32 r, - bytes32 s - ) external override returns (uint256) { - _checkValidClaim(nonce, expiry, score, v, r, s); - uint256 amount = _withdrawCheck(score, token, minimum); - IERC20(token).safeTransfer(recipient, amount); - emit Withdraw(nonce, expiry, msg.sender, token, amount, score); - return amount; - } + Claim[] memory _claims, + address _token, + uint256 _minimum, + address _recipient + ) public override returns (uint256 _amount) { + if (_claims.length <= 0) revert ClaimsNotProvided(); + + Claim memory _claim; + bytes32 _root; + uint256 _totalValue = 0; + + // Iterate through claims to determine total value + for (uint256 i = 0; i < _claims.length; i++) { + _claim = _claims[i]; + _root = rootsByTree[_claim.tree]; + + if (_root == 0) revert TreeNotEnabled(_claim.tree); + if (claimed[_claim.tree][msg.sender]) revert ClaimAlreadyUsed(); + if (!verify(msg.sender, _root, _claim.value, _claim.proof)) + revert ProofInvalid(_claim.tree, _root); + + _totalValue = _totalValue + _claim.value; + claimed[_claim.tree][msg.sender] = true; + emit UseClaim(msg.sender, _claim.tree); + } - /** - * @notice Withdraw tokens from the pool using signature and stake for a recipient - * @param recipient address - * @param minimum uint256 - * @param token address - * @param nonce uint256 - * @param expiry uint256 - * @param score uint256 - * @param v uint8 "v" value of the ECDSA signature - * @param r bytes32 "r" value of the ECDSA signature - * @param s bytes32 "s" value of the ECDSA signature - */ - function withdrawAndStake( - address recipient, - uint256 minimum, - address token, - uint256 nonce, - uint256 expiry, - uint256 score, - uint8 v, - bytes32 r, - bytes32 s - ) external override returns (uint256) { - require(token == address(stakingToken), "INVALID_TOKEN"); - _checkValidClaim(nonce, expiry, score, v, r, s); - uint256 amount = _withdrawCheck(score, token, minimum); - IStaking(stakingContract).stakeFor(recipient, amount); - emit Withdraw(nonce, expiry, msg.sender, token, amount, score); - return amount; + // Determine withdrawable amount given total value + _amount = calculate(_totalValue, _token); + if (_amount < _minimum) revert AmountInsufficient(_amount); + + // Transfer withdrawable amount to recipient + IERC20(_token).safeTransfer(_recipient, _amount); + emit Withdraw(msg.sender, _recipient, _token, _amount); } /** - * @notice Calculate output amount for an input score - * @param score uint256 - * @param token address - * @return amount uint256 amount to claim based on balance, scale, and max + * @notice Calculate amount for a value and token + * @param _value uint256 claim value + * @param _token address claim token + * @return uint256 amount withdrawable */ function calculate( - uint256 score, - address token - ) public view override returns (uint256 amount) { - uint256 balance = IERC20(token).balanceOf(address(this)); - uint256 divisor = (uint256(10) ** scale) + score; - return (max * score * balance) / divisor / 100; + uint256 _value, + address _token + ) public view override returns (uint256) { + uint256 _balance = IERC20(_token).balanceOf(address(this)); + uint256 _divisor = (uint256(10) ** scale) + _value; + return (max * _value * _balance) / _divisor / MAX_MAX; } /** - * @notice Verify a signature - * @param nonce uint256 - * @param expiry uint256 - * @param participant address - * @param score uint256 - * @param v uint8 "v" value of the ECDSA signature - * @param r bytes32 "r" value of the ECDSA signature - * @param s bytes32 "s" value of the ECDSA signature + * @notice Verify a merkle proof + * @param _claimant address of the claimant + * @param _root bytes32 merkle root + * @param _value uint256 merkle value + * @param _proof bytes32[] merkle proof + * @return bool whether verified */ function verify( - uint256 nonce, - uint256 expiry, - address participant, - uint256 score, - uint8 v, - bytes32 r, - bytes32 s - ) public view override returns (bool valid) { - require(DOMAIN_CHAIN_ID == getChainId(), "CHAIN_ID_CHANGED"); - require(expiry > block.timestamp, "EXPIRY_PASSED"); - bytes32 claimHash = keccak256( - abi.encode(CLAIM_TYPEHASH, nonce, expiry, participant, score) - ); - address signatory = ecrecover( - keccak256(abi.encodePacked("\x19\x01", DOMAIN_SEPARATOR, claimHash)), - v, - r, - s - ); - admins[signatory] && !nonceUsed(participant, nonce) - ? valid = true - : valid = false; - } - - /** - * @notice Returns true if the nonce has been used - * @param participant address - * @param nonce uint256 - */ - function nonceUsed( - address participant, - uint256 nonce - ) public view override returns (bool) { - uint256 groupKey = nonce / 256; - uint256 indexInGroup = nonce % 256; - return (noncesClaimed[participant][groupKey] >> indexInGroup) & 1 == 1; - } - - /** - * @notice Returns the current chainId using the chainid opcode - * @return id uint256 The chain id - */ - function getChainId() public view returns (uint256 id) { - // no-inline-assembly - assembly { - id := chainid() - } - } - - /** - * @notice Checks Claim Nonce, Expiry, Participant, Score, Signature - * @param nonce uint256 - * @param expiry uint256 - * @param score uint256 - * @param v uint8 "v" value of the ECDSA signature - * @param r bytes32 "r" value of the ECDSA signature - * @param s bytes32 "s" value of the ECDSA signature - */ - function _checkValidClaim( - uint256 nonce, - uint256 expiry, - uint256 score, - uint8 v, - bytes32 r, - bytes32 s - ) internal { - require(DOMAIN_CHAIN_ID == getChainId(), "CHAIN_ID_CHANGED"); - require(expiry > block.timestamp, "EXPIRY_PASSED"); - bytes32 claimHash = keccak256( - abi.encode(CLAIM_TYPEHASH, nonce, expiry, msg.sender, score) - ); - address signatory = ecrecover( - keccak256(abi.encodePacked("\x19\x01", DOMAIN_SEPARATOR, claimHash)), - v, - r, - s - ); - require(admins[signatory], "UNAUTHORIZED"); - require(_markNonceAsUsed(msg.sender, nonce), "NONCE_ALREADY_USED"); - } - - /** - * @notice Marks a nonce as used for the given participant - * @param participant address - * @param nonce uint256 - * @return bool True if nonce was not marked as used already - */ - function _markNonceAsUsed( - address participant, - uint256 nonce - ) internal returns (bool) { - uint256 groupKey = nonce / 256; - uint256 indexInGroup = nonce % 256; - uint256 group = noncesClaimed[participant][groupKey]; - - // If it is already used, return false - if ((group >> indexInGroup) & 1 == 1) { - return false; + address _claimant, + bytes32 _root, + uint256 _value, + bytes32[] memory _proof + ) public pure override returns (bool) { + bytes32 _leaf = keccak256(abi.encodePacked(_claimant, _value)); + return MerkleProof.verify(_proof, _root, _leaf); + } + + /** + * @notice Get claim status for an account and set of trees + * @param _account address to check + * @param _trees bytes32[] an array of tree identifiers + * @return statuses bool[] an array of claim statuses + */ + function getStatus( + address _account, + bytes32[] calldata _trees + ) external view returns (bool[] memory) { + bool[] memory statuses = new bool[](_trees.length); + for (uint256 i = 0; i < _trees.length; i++) { + statuses[i] = claimed[_trees[i]][_account]; } - - noncesClaimed[participant][groupKey] = group | (uint256(1) << indexInGroup); - - return true; - } - - /** - * @notice Withdraw tokens from the pool using a score - * @param score uint256 - * @param token address - * @param minimumAmount uint256 - */ - function _withdrawCheck( - uint256 score, - address token, - uint256 minimumAmount - ) internal view returns (uint256) { - require(score > 0, "SCORE_MUST_BE_PROVIDED"); - uint256 amount = calculate(score, token); - require(amount >= minimumAmount, "INSUFFICIENT_AMOUNT"); - return amount; + return statuses; } } diff --git a/source/pool/contracts/interfaces/IPool.sol b/source/pool/contracts/interfaces/IPool.sol index 5db18f8e7..99d504c33 100644 --- a/source/pool/contracts/interfaces/IPool.sol +++ b/source/pool/contracts/interfaces/IPool.sol @@ -1,59 +1,64 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.17; interface IPool { + struct Claim { + bytes32 tree; + uint256 value; + bytes32[] proof; + } + + event DrainTo(address[] tokens, address dest); + event Enable(bytes32 tree, bytes32 root); + event SetAdmin(address admin); + event SetMax(uint256 max); + event SetScale(uint256 scale); + event UnsetAdmin(address admin); + + event UseClaim(address account, bytes32 tree); event Withdraw( - uint256 indexed nonce, - uint256 indexed expiry, - address indexed account, + address account, + address recipient, address token, - uint256 amount, - uint256 score + uint256 amount ); - event SetScale(uint256 scale); - event SetMax(uint256 max); - event AddAdmin(address admin); - event RemoveAdmin(address admin); - event DrainTo(address[] tokens, address dest); + + error AddressInvalid(address); + error AdminNotSet(address); + error AmountInsufficient(uint256); + error ClaimAlreadyUsed(); + error ClaimsNotProvided(); + error MaxTooHigh(uint256); + error ProofInvalid(bytes32, bytes32); + error TreeNotEnabled(bytes32); + error ScaleTooHigh(uint256); + error Unauthorized(); + + function drainTo(address[] calldata tokens, address dest) external; function setScale(uint256 _scale) external; function setMax(uint256 _max) external; - function addAdmin(address _admin) external; - - function removeAdmin(address _admin) external; + function setAdmin(address _admin) external; - function setStakingContract(address _stakingContract) external; + function unsetAdmin(address _admin) external; - function setStakingToken(address _stakingToken) external; + function enable(bytes32 _tree, bytes32 _root) external; - function drainTo(address[] calldata tokens, address dest) external; + function enableAndSetClaimed( + bytes32 _tree, + bytes32 _root, + address[] memory _accounts + ) external; function withdraw( - address recipient, - uint256 minimum, + Claim[] memory claims, address token, - uint256 nonce, - uint256 expiry, - uint256 score, - uint8 v, - bytes32 r, - bytes32 s - ) external returns (uint256); - - function withdrawAndStake( - address recipient, uint256 minimum, - address token, - uint256 nonce, - uint256 expiry, - uint256 score, - uint8 v, - bytes32 r, - bytes32 s - ) external returns (uint256); + address recipient + ) external returns (uint256 amount); function calculate( uint256 score, @@ -61,17 +66,14 @@ interface IPool { ) external view returns (uint256 amount); function verify( - uint256 nonce, - uint256 expiry, address participant, + bytes32 root, uint256 score, - uint8 v, - bytes32 r, - bytes32 s - ) external view returns (bool valid); + bytes32[] memory proof + ) external pure returns (bool valid); - function nonceUsed( - address participant, - uint256 nonce - ) external view returns (bool); + function getStatus( + address _account, + bytes32[] calldata _trees + ) external returns (bool[] memory statuses); } diff --git a/source/pool/deploys-blocks.js b/source/pool/deploys-blocks.js new file mode 100644 index 000000000..c4c7801e9 --- /dev/null +++ b/source/pool/deploys-blocks.js @@ -0,0 +1,4 @@ +module.exports = { + 1: 18262813, + 5: 9774330, +} diff --git a/source/pool/deploys.js b/source/pool/deploys.js index 3460c83a5..4e90d98ea 100644 --- a/source/pool/deploys.js +++ b/source/pool/deploys.js @@ -1,14 +1,4 @@ module.exports = { - 1: '0xe2E7AE67E7ee6d4D90dfef945aB6dE6A14dB4c17', - 5: '0x62069Ff3b5127742B0D86b5fF5C6c21cF5e44154', - 30: '0x9e9c21C4747B078712D2bb49A279A043973BE9a0', - 31: '0xb1B586AfA8a2AaB42826Fb2Ab9896CD0c686d0F4', - 56: '0x16B57a5958271C479f64BC5F830DfC4f30ba2235', - 97: '0x64888583E676368390D6eB573bC2AC3bCE9002B3', - 137: '0xb1b586afa8a2aab42826fb2ab9896cd0c686d0f4', - 42161: '0xb1B586AfA8a2AaB42826Fb2Ab9896CD0c686d0F4', - 43113: '0x1CfA1b1809b9fF6bDCE1d4c5fCc842eAA31a836d', - 43114: '0xd3B6279cD6b21e92A6c53476E59a2C819018D6fE', - 80001: '0xC32a3c867aBAd28d977e1724f92D9684fF3d2976', - 421613: '0x5E5A433cdfB14aB228c45E23251Ad83F7b1E3302', + 1: '0xEEcD248D977Fd4D392915b4AdeF8154BA3aE9c02', + 5: '0xa55CDCe4F6300D57831b2792c45E55a899D8e2a4', } diff --git a/source/pool/deploys.js.d.ts b/source/pool/deploys.js.d.ts index fe65925fc..31683c18a 100644 --- a/source/pool/deploys.js.d.ts +++ b/source/pool/deploys.js.d.ts @@ -1 +1,2 @@ declare module '@airswap/pool/deploys.js' +declare module '@airswap/pool/deploys-blocks.js' diff --git a/source/pool/package.json b/source/pool/package.json index 0830b4dc6..39419bde4 100644 --- a/source/pool/package.json +++ b/source/pool/package.json @@ -1,7 +1,7 @@ { "name": "@airswap/pool", - "version": "4.0.2", - "description": "AirSwap: Rewards Pool", + "version": "4.1.0", + "description": "AirSwap: Withdrawable Token Pool", "license": "MIT", "repository": { "type": "git", @@ -20,17 +20,16 @@ "typechain": "tsc -b", "coverage": "hardhat coverage", "test": "hardhat test", - "test:unit": "hardhat test", + "test:ci": "hardhat test", "deploy": "hardhat run ./scripts/deploy.js", "verify": "hardhat run ./scripts/verify.js" }, "dependencies": { - "@airswap/staking": "4.0.3", "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "^4.0.10", - "@airswap/types": "^4.0.0", + "@airswap/constants": "^4.1.0", + "@airswap/types": "^4.1.0", "@airswap/utils": "^4.0.8", "prompt-confirm": "^2.0.4" }, diff --git a/source/pool/scripts/deploy.js b/source/pool/scripts/deploy.js index b1d2d1dcd..de5630b28 100644 --- a/source/pool/scripts/deploy.js +++ b/source/pool/scripts/deploy.js @@ -1,14 +1,17 @@ /* eslint-disable no-console */ const fs = require('fs') +const prettier = require('prettier') const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') -const stakingDeploys = require('@airswap/staking/deploys.js') -const { chainNames, stakingTokenAddresses } = require('@airswap/constants') +const { chainLabels, chainNames, ChainIds } = require('@airswap/constants') const { getReceiptUrl } = require('@airswap/utils') const poolDeploys = require('../deploys.js') +const poolBlocks = require('../deploys-blocks.js') async function main() { await run('compile') + const config = await prettier.resolveConfig('../deploys.js') + const [deployer] = await ethers.getSigners() const gasPrice = await deployer.getGasPrice() const chainId = await deployer.getChainId() @@ -22,38 +25,39 @@ async function main() { const scale = 10 const max = 100 - const stakingContract = stakingDeploys[chainId] - const stakingToken = stakingTokenAddresses[chainId] - - console.log(`Staking token: ${stakingToken}`) - console.log(`Staking contract: ${stakingContract}`) - console.log(`Gas price: ${gasPrice / 10 ** 9} gwei`) const prompt = new Confirm('Proceed to deploy?') if (await prompt.run()) { const poolFactory = await ethers.getContractFactory('Pool') - const poolContract = await poolFactory.deploy( - scale, - max, - stakingContract, - stakingToken - ) + const poolContract = await poolFactory.deploy(scale, max) console.log( 'Deploying...', getReceiptUrl(chainId, poolContract.deployTransaction.hash) ) await poolContract.deployed() - console.log(`Deployed: ${poolContract.address}`) poolDeploys[chainId] = poolContract.address fs.writeFileSync( './deploys.js', - `module.exports = ${JSON.stringify(poolDeploys, null, '\t')}` + prettier.format( + `module.exports = ${JSON.stringify(poolDeploys, null, '\t')}`, + { ...config, parser: 'babel' } + ) + ) + poolBlocks[chainId] = ( + await poolContract.deployTransaction.wait() + ).blockNumber + fs.writeFileSync( + './deploys-blocks.js', + prettier.format( + `module.exports = ${JSON.stringify(poolBlocks, null, '\t')}`, + { ...config, parser: 'babel' } + ) ) - console.log('Updated deploys.js') + console.log(`Deployed: ${poolDeploys[chainId]} @ ${poolBlocks[chainId]}`) console.log( - `\nVerify with "yarn verify --network ${chainNames[ + `\nVerify with "yarn verify --network ${chainLabels[ chainId ].toLowerCase()}"\n` ) diff --git a/source/pool/scripts/verify.js b/source/pool/scripts/verify.js index 2b9140d68..4613111b2 100644 --- a/source/pool/scripts/verify.js +++ b/source/pool/scripts/verify.js @@ -1,8 +1,7 @@ /* eslint-disable no-console */ const { ethers, run } = require('hardhat') -const stakingDeploys = require('@airswap/staking/deploys.js') const poolDeploys = require('../deploys.js') -const { chainNames, stakingTokenAddresses } = require('@airswap/constants') +const { chainNames } = require('@airswap/constants') async function main() { await run('compile') @@ -12,13 +11,11 @@ async function main() { const chainId = await deployer.getChainId() const scale = 10 const max = 100 - const stakingContract = stakingDeploys[chainId] - const stakingToken = stakingTokenAddresses[chainId] console.log(`Verifying on ${chainNames[chainId].toUpperCase()}`) await run('verify:verify', { address: poolDeploys[chainId], - constructorArguments: [scale, max, stakingContract, stakingToken], + constructorArguments: [scale, max], }) } diff --git a/source/pool/test/Pool.js b/source/pool/test/Pool.js index 52fc31cf9..73586076d 100644 --- a/source/pool/test/Pool.js +++ b/source/pool/test/Pool.js @@ -1,6 +1,7 @@ const { expect } = require('chai') const { toAtomicString } = require('@airswap/utils') -const { createClaim, createClaimSignature } = require('@airswap/utils') +const { generateTreeFromData, getRoot, getProof } = require('@airswap/merkle') +const { soliditySha3 } = require('web3-utils') const { ethers, waffle } = require('hardhat') const { deployMockContract } = waffle @@ -16,31 +17,32 @@ describe('Pool Unit', () => { let deployer let alice let bob - let stakeContract + let stakingContract + + const TREE = + '0x0000000000000000000000000000000000000000000000000000000000000000' + const NEW_TREE = + '0x0000000000000000000000000000000000000000000000000000000000000001' - const CHAIN_ID = 31337 const CLAIM_SCALE = 10 const CLAIM_MAX = 50 const ALICE_SCORE = toWei(10000, 4) const BOB_SCORE = toWei(100000, 4) + const CAROL_SCORE = toWei(1000000, 4) + + const BOB_NEW_SCORE = toWei(200000, 4) + + const WITHDRAW_MINIMUM = 0 - let nonce + let tree + let newTree let score let feeToken let feeToken2 let pool let snapshotId - async function createUnsignedClaim(params) { - const unsignedClaim = createClaim({ - participant: alice.address, - score: ALICE_SCORE, - ...params, - }) - return unsignedClaim - } - beforeEach(async () => { snapshotId = await ethers.provider.send('evm_snapshot') }) @@ -56,453 +58,306 @@ describe('Pool Unit', () => { await feeToken.mock.approve.returns(true) await feeToken.mock.allowance.returns(0) feeToken2 = await deployMockContract(deployer, IERC20.abi) + await feeToken2.mock.approve.returns(true) + await feeToken2.mock.allowance.returns(0) - stakeContract = await ( + stakingContract = await ( await ethers.getContractFactory(STAKING.abi, STAKING.bytecode) ).deploy('StakedAST', 'sAST', feeToken.address, 100, 10) - await stakeContract.deployed() + await stakingContract.deployed() pool = await ( await ethers.getContractFactory('Pool') - ).deploy(CLAIM_SCALE, CLAIM_MAX, stakeContract.address, feeToken.address) + ).deploy(CLAIM_SCALE, CLAIM_MAX) await pool.deployed() + + tree = generateTreeFromData({ + [alice.address]: ALICE_SCORE, + [bob.address]: BOB_SCORE, + [carol.address]: CAROL_SCORE, + }) + + newTree = generateTreeFromData({ + [alice.address]: ALICE_SCORE, + [bob.address]: BOB_NEW_SCORE, + [carol.address]: CAROL_SCORE, + }) }) - describe('Test constructor', async () => { + describe('constructor', async () => { it('constructor sets values', async () => { const storedScale = await pool.scale() const storedMax = await pool.max() - const stakingContract = await pool.stakingContract() - const stakingToken = await pool.stakingToken() - const adminOwner = await pool.admins(deployer.address) expect(storedScale).to.equal(CLAIM_SCALE) expect(storedMax).to.equal(CLAIM_MAX) - expect(stakingContract).to.equal(stakeContract.address) - expect(stakingToken).to.equal(feeToken.address) - expect(adminOwner).to.equal(true) }) it('constructor reverts when percentage is too high', async () => { + const max = 101 await expect( - ( - await ethers.getContractFactory('Pool') - ).deploy(CLAIM_SCALE, 101, stakeContract.address, feeToken.address) - ).to.be.revertedWith('MAX_TOO_HIGH') + (await ethers.getContractFactory('Pool')).deploy(CLAIM_SCALE, max) + ) + .to.be.revertedWith(`MaxTooHigh`) + .withArgs(max) }) it('constructor reverts when scale is too high', async () => { + const scale = 78 await expect( - ( - await ethers.getContractFactory('Pool') - ).deploy(78, CLAIM_MAX, stakeContract.address, feeToken.address) - ).to.be.revertedWith('SCALE_TOO_HIGH') + (await ethers.getContractFactory('Pool')).deploy(scale, CLAIM_MAX) + ) + .to.be.revertedWith(`ScaleTooHigh`) + .withArgs(scale) }) - }) - describe('Test staking variables', async () => { - it('set stake contract successful', async () => { - await pool.connect(deployer).setStakingContract(stakeContract.address) - expect(await pool.stakingContract()).to.equal(stakeContract.address) + it('constructor reverts when missing an argument', async () => { + await expect((await ethers.getContractFactory('Pool')).deploy(CLAIM_MAX)) + .to.be.reverted }) + }) - it('set stake contract reverts', async () => { - await expect( - pool.connect(deployer).setStakingContract(ADDRESS_ZERO) - ).to.be.revertedWith('INVALID_ADDRESS') + describe('admin functions', async () => { + it('enable a claim for a merkle root suceeds', async () => { + const root = getRoot(tree) + await pool.setAdmin(alice.address) + expect(await pool.connect(alice).enable(TREE, root)).to.emit( + pool, + 'Enable' + ) }) - it('set stake token successful', async () => { - await feeToken2.mock.approve.returns(true) - await feeToken2.mock.allowance.returns(0) - await pool.connect(deployer).setStakingToken(feeToken2.address) - expect(await pool.stakingToken()).to.equal(feeToken2.address) + it('enable a claim for a merkle root fails when not admin', async () => { + const root = getRoot(tree) + await expect(pool.connect(bob).enable(TREE, root)).to.be.revertedWith( + 'Unauthorized' + ) }) - it('set stake token reverts', async () => { - await expect( - pool.connect(deployer).setStakingToken(ADDRESS_ZERO) - ).to.be.revertedWith('INVALID_ADDRESS') + it('enable a with the same tree overrwrites the previous root', async () => { + const root = getRoot(tree) + await pool.setAdmin(alice.address) + await pool.connect(alice).enable(TREE, root) + const newRoot = getRoot(newTree) + await expect(pool.connect(alice).enable(TREE, newRoot)).to.be.emit( + pool, + `Enable` + ) }) }) - describe('Test withdraw', async () => { + describe('withdraw', async () => { it('withdraw success', async () => { await feeToken.mock.balanceOf.returns('100000') await feeToken.mock.transfer.returns(true) - nonce = 1 - - const block = await ethers.provider.getBlock() - const expiry = block.timestamp + 60 - - const claim = await createUnsignedClaim({ nonce: nonce, expiry: expiry }) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) + await pool.setAdmin(alice.address) + const root = getRoot(tree) + await pool.connect(alice).enable(TREE, root) + const proof = getProof(tree, soliditySha3(bob.address, BOB_SCORE)) await expect( - pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) + pool.connect(bob).withdraw( + [ + { + tree: TREE, + value: BOB_SCORE, + proof, + }, + ], + feeToken.address, + WITHDRAW_MINIMUM, + bob.address + ) ).to.emit(pool, 'Withdraw') - const isClaimed = await pool.nonceUsed(alice.address, nonce) + const isClaimed = await pool.claimed(TREE, bob.address) expect(isClaimed).to.equal(true) }) - it('withdraw reverts with claim already made', async () => { + it('withdraw reverts with no claim provided', async () => { await feeToken.mock.balanceOf.returns('100000') await feeToken.mock.transfer.returns(true) - nonce = 1 - - const block = await ethers.provider.getBlock() - const expiry = block.timestamp + 60 - - const claim = await createUnsignedClaim({ nonce: nonce, expiry: expiry }) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) + await pool.setAdmin(alice.address) + const root = getRoot(tree) + await pool.connect(alice).enable(TREE, root) await expect( pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.emit(pool, 'Withdraw') + .connect(bob) + .withdraw([], feeToken.address, WITHDRAW_MINIMUM, bob.address) + ).to.be.revertedWith(`ClaimsNotProvided`) - await expect( - pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('NONCE_ALREADY_USED') + const isClaimed = await pool.claimed(TREE, bob.address) + expect(isClaimed).to.equal(false) }) - it('withdraw reverts with score of zero', async () => { - score = 0 + it('withdraw reverts with no root enabled', async () => { + await feeToken.mock.balanceOf.returns('100000') + await feeToken.mock.transfer.returns(true) - const claim = await createUnsignedClaim({ score: score }) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) + await pool.setAdmin(alice.address) + const proof = getProof(tree, soliditySha3(bob.address, BOB_SCORE)) await expect( - pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('SCORE_MUST_BE_PROVIDED') - }) - - it('withdraw reverts with invalid signatory signing', async () => { - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - bob, - pool.address, - CHAIN_ID + pool.connect(bob).withdraw( + [ + { + tree: TREE, + value: BOB_SCORE, + proof, + }, + ], + feeToken.address, + WITHDRAW_MINIMUM, + bob.address + ) ) + .to.be.revertedWith(`TreeNotEnabled`) + .withArgs(TREE) - await expect( - pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('UNAUTHORIZED') - }) - - it('withdraw with different recipient success', async () => { + const isClaimed = await pool.claimed(TREE, bob.address) + expect(isClaimed).to.equal(false) + }) + + it('withdraw reverts with claim already made', async () => { await feeToken.mock.balanceOf.returns('100000') await feeToken.mock.transfer.returns(true) - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) + await pool.setAdmin(alice.address) + const root = getRoot(tree) + await pool.connect(alice).enable(TREE, root) + const proof = getProof(tree, soliditySha3(bob.address, BOB_SCORE)) - const withdrawMinimum = 0 await expect( - pool - .connect(alice) - .withdraw( - bob.address, - withdrawMinimum, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) + pool.connect(bob).withdraw( + [ + { + tree: TREE, + value: BOB_SCORE, + proof, + }, + ], + feeToken.address, + WITHDRAW_MINIMUM, + bob.address + ) ).to.emit(pool, 'Withdraw') - const isClaimed = await pool.nonceUsed(alice.address, claim.nonce) + await expect( + pool.connect(bob).withdraw( + [ + { + tree: TREE, + value: BOB_SCORE, + proof, + }, + ], + feeToken.address, + WITHDRAW_MINIMUM, + bob.address + ) + ).to.be.revertedWith(`ClaimAlreadyUsed`) + + const isClaimed = await pool.claimed(TREE, bob.address) expect(isClaimed).to.equal(true) }) - it('withdraw with different recipient reverts with minimumAmount not met', async () => { - await feeToken.mock.balanceOf.returns('100000') - - const withdrawMinimum = 496 + it('withdraw reverts with score of zero', async () => { + score = 0 - const claim = await createUnsignedClaim({}) + await pool.setAdmin(alice.address) + const root = getRoot(tree) + await pool.connect(alice).enable(TREE, root) + const proof = getProof(tree, soliditySha3(bob.address, BOB_SCORE)) - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID + await expect( + pool.connect(bob).withdraw( + [ + { + tree: TREE, + value: score, + proof, + }, + ], + feeToken.address, + WITHDRAW_MINIMUM, + bob.address + ) ) + .to.be.revertedWith(`ProofInvalid`) + .withArgs(TREE, root) - await expect( - pool - .connect(alice) - .withdraw( - bob.address, - withdrawMinimum, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('INSUFFICIENT_AMOUNT') - }) - - it('withdraw with different recipient reverts if caller not participant', async () => { - await feeToken.mock.balanceOf.returns('100000') + const isClaimed = await pool.claimed(TREE, bob.address) + expect(isClaimed).to.equal(false) + }) + it('withdraw reverts with minimum not met', async () => { + await feeToken.mock.balanceOf.returns('100000') + ;(await feeToken.mock.transfer.returns(true)) - + (await pool.setAdmin(alice.address)) + const root = getRoot(tree) + await pool.connect(alice).enable(TREE, root) + const proof = getProof(tree, soliditySha3(alice.address, ALICE_SCORE)) const withdrawMinimum = 496 - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) + const amount = await pool + .connect(alice) + .calculate(ALICE_SCORE, feeToken.address) await expect( - pool - .connect(bob) - .withdraw( - bob.address, - withdrawMinimum, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('UNAUTHORIZED') - }) - - it('withdrawAndStake success', async () => { - await feeToken.mock.balanceOf.returns('100000') - await feeToken.mock.transferFrom.returns(true) - - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID + pool.connect(alice).withdraw( + [ + { + tree: TREE, + value: ALICE_SCORE, + proof, + }, + ], + feeToken.address, + withdrawMinimum, + bob.address + ) ) + .to.be.revertedWith(`AmountInsufficient`) + .withArgs(amount) - const withdrawMinimum = 0 - await expect( - pool - .connect(alice) - .withdrawAndStake( - alice.address, - withdrawMinimum, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.emit(pool, 'Withdraw') - - const isClaimed = await pool.nonceUsed(alice.address, claim.nonce) - expect(isClaimed).to.equal(true) - - const balance = await stakeContract - .connect(alice) - .balanceOf(alice.address) - expect(balance).to.equal('495') + const isClaimed = await pool.claimed(TREE, alice.address) + expect(isClaimed).to.equal(false) }) - it('withdrawAndStake reverts with wrong token', async () => { - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - - const withdrawMinimum = 0 - await expect( - pool - .connect(alice) - .withdrawAndStake( - alice.address, - withdrawMinimum, - feeToken2.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('INVALID_TOKEN') - }) - - it('withdrawAndStake for a recipient success', async () => { + it('withdraw marks tree for address as claimed', async () => { await feeToken.mock.balanceOf.returns('100000') - await feeToken.mock.approve.returns(true) - await feeToken.mock.allowance.returns(0) - await feeToken.mock.transferFrom.returns(true) - - const claim = await createUnsignedClaim({}) + await feeToken.mock.transfer.returns(true) - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID + await pool.setAdmin(alice.address) + const root = getRoot(tree) + const newRoot = getRoot(newTree) + await pool.connect(alice).enable(TREE, root) + await pool.connect(alice).enable(NEW_TREE, newRoot) + const proof = getProof(tree, soliditySha3(bob.address, BOB_SCORE)) + + await pool.connect(bob).withdraw( + [ + { + tree: TREE, + value: BOB_SCORE, + proof, + }, + ], + feeToken.address, + WITHDRAW_MINIMUM, + bob.address ) - const withdrawMinimum = 0 - await expect( - pool - .connect(alice) - .withdrawAndStake( - bob.address, - withdrawMinimum, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.emit(pool, 'Withdraw') - - const isClaimed = await pool.nonceUsed(alice.address, claim.nonce) - expect(isClaimed).to.equal(true) - - const balance = await stakeContract.connect(bob).balanceOf(bob.address) - expect(balance).to.equal('495') - }) - - it('withdrawAndStake for a recipient reverts with wrong token', async () => { - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - const withdrawMinimum = 0 - await expect( - pool - .connect(alice) - .withdrawAndStake( - bob.address, - withdrawMinimum, - feeToken2.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('INVALID_TOKEN') + const isClaimed = await pool.getStatus(bob.address, [TREE, NEW_TREE]) + expect(await isClaimed[0]).to.equal(true) + expect(await isClaimed[1]).to.equal(false) }) }) - describe('Test Calculate', async () => { - it('Test calculation input and output', async () => { + describe('Calculate', async () => { + it('calculation input and output', async () => { await feeToken.mock.balanceOf.returns('100000') const amount = await pool.calculate(ALICE_SCORE, feeToken.address) @@ -510,137 +365,155 @@ describe('Pool Unit', () => { }) }) - describe('Test Verify', async () => { - it('Test verification is valid', async () => { - const claim = await createUnsignedClaim({}) + describe('Verify', async () => { + it('verification is valid', async () => { + await pool.setAdmin(alice.address) + const root = getRoot(tree) + await pool.connect(alice).enable(TREE, root) + const proof = getProof(tree, soliditySha3(alice.address, ALICE_SCORE)) - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - const isValid = await pool.verify( - claim.nonce, - claim.expiry, - alice.address, - ALICE_SCORE, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) + const isValid = await pool.verify(alice.address, root, ALICE_SCORE, proof) expect(isValid).to.be.equal(true) }) - it('Test verification is invalid', async () => { - const claim = await createUnsignedClaim({}) + it('verification is invalid with wrong participant', async () => { + await pool.setAdmin(alice.address) + const root = getRoot(tree) + await pool.connect(alice).enable(TREE, root) + const proof = getProof(tree, soliditySha3(alice.address, ALICE_SCORE)) - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - const isValid = await pool.verify( - claim.nonce, - claim.expiry, - alice.address, - BOB_SCORE, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) + const isValid = await pool.verify(bob.address, root, ALICE_SCORE, proof) expect(isValid).to.be.equal(false) }) - it('Test verification fails with expiry passed', async () => { - const claim = await createUnsignedClaim({}) + it('verification is invalid with wrong scroe', async () => { + await pool.setAdmin(alice.address) + const root = getRoot(tree) + await pool.connect(alice).enable(TREE, root) + const proof = getProof(tree, soliditySha3(alice.address, ALICE_SCORE)) - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - - await ethers.provider.send('evm_mine', [parseFloat(claim.expiry)]) - - await expect( - pool.verify( - claim.nonce, - claim.expiry, - alice.address, - BOB_SCORE, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('EXPIRY_PASSED') + const isValid = await pool.verify(alice.address, root, BOB_SCORE, proof) + expect(isValid).to.be.equal(false) }) }) - describe('Test setting Scale', async () => { - it('Test setScale is successful', async () => { - await expect(pool.setScale(77)).to.emit(pool, 'SetScale') - expect(await pool.scale()).to.be.equal('77') + describe('setting Scale', async () => { + it('setScale is successful', async () => { + const scale = 77 + await expect(pool.setScale(scale)).to.emit(pool, 'SetScale') + expect(await pool.scale()).to.be.equal(`${scale}`) + }) + + it('setScale reverts when not owner', async () => { + const scale = 77 + await expect(pool.connect(alice).setScale(scale)).to.be.revertedWith( + 'Ownable: caller is not the owner' + ) }) - it('Test setScale reverts', async () => { - await expect(pool.setScale(1000)).to.be.revertedWith('SCALE_TOO_HIGH') + it('setScale reverts', async () => { + const scale = 1000 + await expect(pool.setScale(scale)) + .to.be.revertedWith(`ScaleTooHigh`) + .withArgs(scale) }) }) - describe('Test setting Max', async () => { - it('Test setMax is successful', async () => { - await expect(pool.setMax(10)).to.emit(pool, 'SetMax') - expect(await pool.scale()).to.be.equal('10') + describe('setting Max', async () => { + it('setMax is successful', async () => { + const max = 10 + await expect(pool.setMax(max)).to.emit(pool, 'SetMax') + expect(await pool.scale()).to.be.equal(`${max}`) }) - it('Test setMax reverts', async () => { - await expect(pool.setMax(101)).to.be.revertedWith('MAX_TOO_HIGH') + it('setMax reverts when not owner', async () => { + const max = 10 + await expect(pool.connect(alice).setMax(max)).to.be.revertedWith( + 'Ownable: caller is not the owner' + ) + }) + + it('setMax reverts', async () => { + const max = 101 + await expect(pool.setMax(max)) + .to.be.revertedWith(`MaxTooHigh`) + .withArgs(max) }) }) - describe('Test setting admin', async () => { - it('Test addAdmin is successful', async () => { - await expect(pool.addAdmin(alice.address)).to.emit(pool, 'AddAdmin') + describe('setting admin', async () => { + it('setAdmin is successful', async () => { + await expect(pool.setAdmin(alice.address)).to.emit(pool, 'SetAdmin') expect(await pool.admins(alice.address)).to.be.equal(true) }) - it('Test addAdmin reverts', async () => { + it('setAdmin reverts', async () => { await expect( - pool.connect(alice).addAdmin(alice.address) + pool.connect(alice).setAdmin(alice.address) ).to.be.revertedWith('Ownable: caller is not the owner') }) - it('Test addAdmin reverts with zero address', async () => { - await expect( - pool.connect(deployer).addAdmin(ADDRESS_ZERO) - ).to.be.revertedWith('INVALID_ADDRESS') + it('setAdmin reverts with zero address', async () => { + await expect(pool.connect(deployer).setAdmin(ADDRESS_ZERO)) + .to.be.revertedWith(`AddressInvalid`) + .withArgs(ADDRESS_ZERO) }) - it('Test removeAdmin is successful', async () => { - await expect(pool.addAdmin(alice.address)).to.emit(pool, 'AddAdmin') - await expect(pool.removeAdmin(alice.address)).to.emit(pool, 'RemoveAdmin') + it('unsetAdmin is successful', async () => { + await expect(pool.setAdmin(alice.address)).to.emit(pool, 'SetAdmin') + await expect(pool.unsetAdmin(alice.address)).to.emit(pool, 'UnsetAdmin') expect(await pool.admins(alice.address)).to.be.equal(false) }) - it('Test removeAdmin reverts', async () => { - await expect(pool.addAdmin(alice.address)).to.emit(pool, 'AddAdmin') + it('unsetAdmin reverts', async () => { + await expect(pool.setAdmin(alice.address)).to.emit(pool, 'SetAdmin') await expect( - pool.connect(alice).removeAdmin(alice.address) + pool.connect(alice).unsetAdmin(alice.address) ).to.be.revertedWith('Ownable: caller is not the owner') }) - it('Test removeAdmin executed by non-admin reverts', async () => { - await expect( - pool.connect(deployer).removeAdmin(alice.address) - ).to.be.revertedWith('ADMIN_NOT_SET') + it('unsetAdmin executed by non-admin reverts', async () => { + await expect(pool.connect(deployer).unsetAdmin(alice.address)) + .to.be.revertedWith(`AdminNotSet`) + .withArgs(alice.address) }) }) - describe('Test drain to', async () => { - it('Test drain to is successful', async () => { + describe('migration functions', async () => { + it('set claimed as owner is successful', async () => { + await feeToken.mock.balanceOf.returns('100000') + await await pool.connect(deployer).setAdmin(alice.address) + + const root = getRoot(tree) + await pool.connect(alice).enableAndSetClaimed(TREE, root, [bob.address]) + + const proof = getProof(tree, soliditySha3(bob.address, BOB_SCORE)) + await expect( + pool.connect(bob).withdraw( + [ + { + tree: TREE, + value: BOB_SCORE, + proof, + }, + ], + feeToken.address, + WITHDRAW_MINIMUM, + bob.address + ) + ).to.be.revertedWith(`ClaimAlreadyUsed`) + }) + + it('set claimed with non-owner reverts', async () => { + await feeToken.mock.balanceOf.returns('100000') + + const root = getRoot(tree) + await expect( + pool.connect(bob).enableAndSetClaimed(TREE, root, [bob.address]) + ).to.be.revertedWith('Unauthorized') + }) + + it('drain to is successful', async () => { await feeToken.mock.balanceOf.returns('10') await feeToken.mock.transfer.returns(true) await feeToken2.mock.balanceOf.returns('10') @@ -653,7 +526,7 @@ describe('Pool Unit', () => { ).to.emit(pool, 'DrainTo') }) - it('Test drain to is only callable by owner', async () => { + it('drain to is only callable by owner', async () => { await expect( pool .connect(alice) diff --git a/source/pool/test/PoolIntegration.js b/source/pool/test/PoolIntegration.js index b9be4ebe9..d3face25d 100644 --- a/source/pool/test/PoolIntegration.js +++ b/source/pool/test/PoolIntegration.js @@ -1,9 +1,10 @@ const { expect } = require('chai') const { toAtomicString } = require('@airswap/utils') -const { createClaim, createClaimSignature } = require('@airswap/utils') +const { generateTreeFromData, getRoot, getProof } = require('@airswap/merkle') +const { soliditySha3 } = require('web3-utils') const { ethers } = require('hardhat') -const ERC20 = require('@openzeppelin/contracts/build/contracts/ERC20PresetMinterPauser.json') +const ERC20PresetFixedSupply = require('@openzeppelin/contracts/build/contracts/ERC20PresetFixedSupply.json') const STAKING = require('@airswap/staking/build/contracts/Staking.sol/Staking.json') function toWei(value, places) { @@ -14,30 +15,26 @@ describe('Pool Integration', () => { let deployer let alice let bob - let carol - let stakeContract + let stakingContract + + const TREE_ID = + '0x0000000000000000000000000000000000000000000000000000000000000000' - const CHAIN_ID = 31337 const CLAIM_SCALE = 10 const CLAIM_MAX = 50 const ALICE_SCORE = toWei(10000, 4) const BOB_SCORE = toWei(100000, 4) + const CAROL_SCORE = toWei(1000000, 4) + + const WITHDRAW_MINIMUM = 0 + let tree let feeToken let feeToken2 let pool let snapshotId - async function createUnsignedClaim(params) { - const unsignedClaim = createClaim({ - participant: alice.address, - score: ALICE_SCORE, - ...params, - }) - return unsignedClaim - } - beforeEach(async () => { snapshotId = await ethers.provider.send('evm_snapshot') }) @@ -49,536 +46,63 @@ describe('Pool Integration', () => { before(async () => { ;[deployer, alice, bob, carol] = await ethers.getSigners() - feeToken = await ( - await ethers.getContractFactory(ERC20.abi, ERC20.bytecode) - ).deploy('A', 'A') - await feeToken.deployed() - - feeToken2 = await ( - await ethers.getContractFactory(ERC20.abi, ERC20.bytecode) - ).deploy('B', 'B') - await feeToken2.deployed() - - stakeContract = await ( - await ethers.getContractFactory(STAKING.abi, STAKING.bytecode) - ).deploy('StakedAST', 'sAST', feeToken.address, 100, 1) - await stakeContract.deployed() - pool = await ( await ethers.getContractFactory('Pool') - ).deploy(CLAIM_SCALE, CLAIM_MAX, stakeContract.address, feeToken.address) + ).deploy(CLAIM_SCALE, CLAIM_MAX) await pool.deployed() - feeToken.mint(pool.address, 100000) - feeToken2.mint(pool.address, 10000) - }) - - describe('Test withdraw', async () => { - it('withdraw success', async () => { - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - await expect( - await pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - claim.nonce, - claim.expiry, - ALICE_SCORE, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.emit(pool, 'Withdraw') - - const isClaimed = await pool.nonceUsed(alice.address, claim.nonce) - expect(isClaimed).to.equal(true) - }) - - it('withdraw success with claims by different participants', async () => { - const nonce = 1 - - const block = await ethers.provider.getBlock() - const expiry = block.timestamp + 60 - - const claimAlice = await createUnsignedClaim({ - nonce: nonce, - expiry: expiry, - }) - const claimAliceSignature = await createClaimSignature( - claimAlice, - deployer, - pool.address, - CHAIN_ID + feeToken = await ( + await ethers.getContractFactory( + ERC20PresetFixedSupply.abi, + ERC20PresetFixedSupply.bytecode ) - - const participant = bob.address - const claimBob = await createUnsignedClaim({ - participant: participant, - score: BOB_SCORE, - nonce: nonce, - expiry: expiry, - }) - const claimBobSignature = await createClaimSignature( - claimBob, - deployer, - pool.address, - CHAIN_ID + ).deploy('TestERC20', 'TERC20', '10000', pool.address) + await feeToken.deployed() + feeToken2 = await ( + await ethers.getContractFactory( + ERC20PresetFixedSupply.abi, + ERC20PresetFixedSupply.bytecode ) + ).deploy('TestERC20_2', 'TERC20_2', '10000', pool.address) + await feeToken2.deployed() - await expect( - pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - nonce, - claimAlice.expiry, - ALICE_SCORE, - claimAliceSignature.v, - claimAliceSignature.r, - claimAliceSignature.s - ) - ).to.emit(pool, 'Withdraw') - - await expect( - pool - .connect(bob) - .withdraw( - bob.address, - 0, - feeToken.address, - nonce, - claimBob.expiry, - BOB_SCORE, - claimBobSignature.v, - claimBobSignature.r, - claimBobSignature.s - ) - ).to.emit(pool, 'Withdraw') - - expect(await pool.nonceUsed(alice.address, nonce)).to.equal(true) - expect(await pool.nonceUsed(bob.address, nonce)).to.equal(true) - }) - - it('withdraw success with new admin', async () => { - await expect(pool.connect(deployer).addAdmin(carol.address)).to.emit( - pool, - 'AddAdmin' - ) - const claim = await createUnsignedClaim({}) + stakingContract = await ( + await ethers.getContractFactory(STAKING.abi, STAKING.bytecode) + ).deploy('StakedAST', 'sAST', feeToken.address, 100, 10) + await stakingContract.deployed() - const claimSignature = await createClaimSignature( - claim, - carol, - pool.address, - CHAIN_ID - ) - await expect( - pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - claim.nonce, - claim.expiry, - ALICE_SCORE, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.emit(pool, 'Withdraw') + await pool.setAdmin(deployer.address) - const isClaimed = await pool.nonceUsed(alice.address, claim.nonce) - expect(isClaimed).to.equal(true) + tree = generateTreeFromData({ + [alice.address]: ALICE_SCORE, + [bob.address]: BOB_SCORE, + [carol.address]: CAROL_SCORE, }) + }) - it('withdraw reverts when admin is removed', async () => { - await expect(pool.connect(deployer).addAdmin(carol.address)).to.emit( - pool, - 'AddAdmin' - ) - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - carol, - pool.address, - CHAIN_ID - ) - await expect(pool.connect(deployer).removeAdmin(carol.address)).to.emit( + describe('withdraw increase the staker balance', async () => { + it('transfers the claimed funds to the staker', async () => { + const root = getRoot(tree) + expect(await pool.connect(deployer).enable(TREE_ID, root)).to.emit( pool, - 'RemoveAdmin' - ) - await expect( - pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - claim.nonce, - claim.expiry, - ALICE_SCORE, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('UNAUTHORIZED') - - const isClaimed = await pool.nonceUsed(alice.address, claim.nonce) - expect(isClaimed).to.equal(false) - }) - - it('withdraw reverts with score of zero', async () => { - const score = 0 - - const claim = await createUnsignedClaim({ score: score }) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - - await expect( - pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('SCORE_MUST_BE_PROVIDED') - }) - - it('withdraw reverts with claim already made', async () => { - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - - await expect( - pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - claim.nonce, - claim.expiry, - ALICE_SCORE, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.emit(pool, 'Withdraw') - - await expect( - pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - claim.nonce, - claim.expiry, - ALICE_SCORE, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('NONCE_ALREADY_USED') - }) - - it('withdraw reverts with expiry passed', async () => { - const block = await ethers.provider.getBlock() - const expiry = block.timestamp + 60 - - const claim = await createUnsignedClaim({ expiry: expiry }) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - - await ethers.provider.send('evm_mine', [expiry]) - - await expect( - pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - claim.nonce, - claim.expiry, - ALICE_SCORE, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('EXPIRY_PASSED') - }) - - it('withdraw reverts with invalid signatory signing', async () => { - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - bob, - pool.address, - CHAIN_ID - ) - - await expect( - pool - .connect(alice) - .withdraw( - alice.address, - 0, - feeToken.address, - claim.nonce, - claim.expiry, - ALICE_SCORE, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('UNAUTHORIZED') - }) - - it('withdraw with different recipient success', async () => { - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - - const withdrawMinimum = 0 - await expect( - pool - .connect(alice) - .withdraw( - bob.address, - withdrawMinimum, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.emit(pool, 'Withdraw') - - const isClaimed = await pool.nonceUsed(alice.address, claim.nonce) - expect(isClaimed).to.equal(true) - }) - - it('withdraw with different recipient reverts with minimumAmount not met', async () => { - const withdrawMinimum = 496 - - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - - await expect( - pool - .connect(alice) - .withdraw( - bob.address, - withdrawMinimum, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('INSUFFICIENT_AMOUNT') - }) - - it('withdrawAndStake success', async () => { - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - - const withdrawMinimum = 0 - await expect( - pool - .connect(alice) - .withdrawAndStake( - alice.address, - withdrawMinimum, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.emit(pool, 'Withdraw') - - const isClaimed = await pool.nonceUsed(alice.address, claim.nonce) - expect(isClaimed).to.equal(true) - - const balance = await stakeContract - .connect(alice) - .balanceOf(alice.address) - expect(balance).to.equal('495') - }) - - it('withdrawAndStake reverts with wrong token', async () => { - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - - const withdrawMinimum = 0 - await expect( - pool - .connect(alice) - .withdrawAndStake( - alice.address, - withdrawMinimum, - feeToken2.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('INVALID_TOKEN') - }) - - it('withdrawAndStake for a recipient success', async () => { - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - - const withdrawMinimum = 0 - await expect( - pool - .connect(alice) - .withdrawAndStake( - bob.address, - withdrawMinimum, - feeToken.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.emit(pool, 'Withdraw') - - const isClaimed = await pool.nonceUsed(alice.address, claim.nonce) + 'Enable' + ) + const proof = getProof(tree, soliditySha3(bob.address, BOB_SCORE)) + await pool.connect(bob).withdraw( + [ + { + tree: TREE_ID, + value: BOB_SCORE, + proof, + }, + ], + feeToken.address, + WITHDRAW_MINIMUM, + bob.address + ) + await expect(await feeToken.balanceOf(bob.address)).to.be.equal('454') + const isClaimed = await pool.claimed(TREE_ID, bob.address) expect(isClaimed).to.equal(true) - - const balance = await stakeContract.connect(bob).balanceOf(bob.address) - expect(balance).to.equal('495') - }) - - it('withdrawAndStake for a recipient reverts with wrong token', async () => { - const claim = await createUnsignedClaim({}) - - const claimSignature = await createClaimSignature( - claim, - deployer, - pool.address, - CHAIN_ID - ) - const withdrawMinimum = 0 - await expect( - pool - .connect(alice) - .withdrawAndStake( - bob.address, - withdrawMinimum, - feeToken2.address, - claim.nonce, - claim.expiry, - claim.score, - claimSignature.v, - claimSignature.r, - claimSignature.s - ) - ).to.be.revertedWith('INVALID_TOKEN') - }) - }) - - describe('Test Calculate', async () => { - it('Test calculation input and output', async () => { - const amount = await pool.calculate(ALICE_SCORE, feeToken.address) - expect(amount).to.equal('495') - }) - }) - - describe('Test drain to', async () => { - it('Test drain to is successful', async () => { - await expect( - pool - .connect(deployer) - .drainTo([feeToken.address, feeToken2.address], carol.address) - ).to.emit(pool, 'DrainTo') - }) - - it('Test drain to is only callable by owner', async () => { - await expect( - pool - .connect(alice) - .drainTo([feeToken.address, feeToken2.address], carol.address) - ).to.be.revertedWith('Ownable: caller is not the owner') }) }) }) diff --git a/source/registry/README.md b/source/registry/README.md index c4987eaa3..1ab1a5f2d 100644 --- a/source/registry/README.md +++ b/source/registry/README.md @@ -28,7 +28,7 @@ Environment variables are set in an `.env` file in the repository root. | `yarn compile` | Compile all contracts to `build` folder | | `yarn coverage` | Report test coverage | | `yarn test` | Run all tests in `test` folder | -| `yarn test:unit` | Run unit tests in `test` folder | +| `yarn test:ci` | Run unit tests in `test` folder | | `yarn deploy` | Deploy on a network using --network flag | | `yarn verify` | Verify on a network using --network flag | diff --git a/source/registry/contracts/Registry.sol b/source/registry/contracts/Registry.sol index f5911896e..dcd168c28 100644 --- a/source/registry/contracts/Registry.sol +++ b/source/registry/contracts/Registry.sol @@ -16,200 +16,120 @@ contract Registry { using EnumerableSet for EnumerableSet.Bytes32Set; IERC20 public immutable stakingToken; - uint256 public immutable obligationCost; - uint256 public immutable tokenCost; - mapping(address => EnumerableSet.AddressSet) internal tokensByStaker; + uint256 public immutable stakingCost; + uint256 public immutable supportCost; + + mapping(address => string) public stakerServerURLs; mapping(address => EnumerableSet.Bytes32Set) internal protocolsByStaker; - mapping(address => EnumerableSet.AddressSet) internal stakersByToken; mapping(bytes4 => EnumerableSet.AddressSet) internal stakersByProtocol; - mapping(address => string) public stakerServerURLs; + mapping(address => EnumerableSet.AddressSet) internal tokensByStaker; + mapping(address => EnumerableSet.AddressSet) internal stakersByToken; - event InitialStake(address indexed account); - event FullUnstake(address indexed account); - event AddTokens(address indexed account, address[] tokens); - event RemoveTokens(address indexed account, address[] tokens); - event AddProtocols(address indexed account, bytes4[] protocols); - event RemoveProtocols(address indexed account, bytes4[] protocols); - event SetServerURL(address indexed account, string url); + event SetServerURL(address indexed staker, string url); + event AddProtocols(address indexed staker, bytes4[] protocols); + event AddTokens(address indexed staker, address[] tokens); + event RemoveProtocols(address indexed staker, bytes4[] protocols); + event RemoveTokens(address indexed staker, address[] tokens); + event UnsetServer( + address indexed staker, + string url, + bytes4[] protocols, + address[] tokens + ); - error NoProtocolsToAdd(); - error NoProtocolsToRemove(); + error ArgumentInvalid(); + error NoServerURLSet(); error ProtocolDoesNotExist(bytes4); error ProtocolExists(bytes4); - error NoTokensToAdd(); - error NoTokensToRemove(); error TokenDoesNotExist(address); error TokenExists(address); + error ServerURLInvalid(); /** * @notice Constructor * @param _stakingToken address of token used for staking - * @param _obligationCost base amount required to stake - * @param _tokenCost amount required to stake per protocol + * @param _stakingCost base amount required to stake + * @param _supportCost amount required per token or protocol */ constructor( IERC20 _stakingToken, - uint256 _obligationCost, - uint256 _tokenCost + uint256 _stakingCost, + uint256 _supportCost ) { stakingToken = _stakingToken; - obligationCost = _obligationCost; - tokenCost = _tokenCost; + stakingCost = _stakingCost; + supportCost = _supportCost; } /** - * @notice Set the server URL for a staker - * @param _url string value of the ServerURL + * @notice Set a server URL + * @param _url string URL */ function setServerURL(string calldata _url) external { + if (bytes(_url).length == 0) revert ServerURLInvalid(); + if (bytes(stakerServerURLs[msg.sender]).length == 0 && stakingCost > 0) { + stakingToken.safeTransferFrom(msg.sender, address(this), stakingCost); + } stakerServerURLs[msg.sender] = _url; emit SetServerURL(msg.sender, _url); } /** - * @notice Add tokens supported by the caller - * @param _tokens array of token addresses + * @notice Unset server URL, all protocols, and all tokens */ - function addTokens(address[] calldata _tokens) external { - uint256 _length = _tokens.length; - if (_length <= 0) revert NoTokensToAdd(); - EnumerableSet.AddressSet storage tokenList = tokensByStaker[msg.sender]; + function unsetServer() external { + if (bytes(stakerServerURLs[msg.sender]).length == 0) + revert NoServerURLSet(); - uint256 _transferAmount = 0; - if (tokenList.length() == 0) { - _transferAmount = obligationCost; - emit InitialStake(msg.sender); - } - for (uint256 i = 0; i < _length; i++) { - address _token = _tokens[i]; - if (!tokenList.add(_token)) revert TokenExists(_token); - stakersByToken[_token].add(msg.sender); - } - _transferAmount += tokenCost * _length; - emit AddTokens(msg.sender, _tokens); - if (_transferAmount > 0) { - stakingToken.safeTransferFrom(msg.sender, address(this), _transferAmount); - } - } + EnumerableSet.Bytes32Set storage supportedProtocolList = protocolsByStaker[ + msg.sender + ]; + uint256 _protocolListLength = supportedProtocolList.length(); + bytes4[] memory _protocolList = new bytes4[](_protocolListLength); - /** - * @notice Remove tokens supported by the caller - * @param _tokens array of token addresses - */ - function removeTokens(address[] calldata _tokens) external { - uint256 _length = _tokens.length; - if (_length <= 0) revert NoTokensToRemove(); - EnumerableSet.AddressSet storage tokenList = tokensByStaker[msg.sender]; - for (uint256 i = 0; i < _length; i++) { - address token = _tokens[i]; - if (!tokenList.remove(token)) revert TokenDoesNotExist(token); - stakersByToken[token].remove(msg.sender); - } - uint256 _transferAmount = tokenCost * _length; - if (tokenList.length() == 0) { - _transferAmount += obligationCost; - emit FullUnstake(msg.sender); - } - emit RemoveTokens(msg.sender, _tokens); - if (_transferAmount > 0) { - stakingToken.safeTransfer(msg.sender, _transferAmount); + for (uint256 i = _protocolListLength; i > 0; ) { + i--; + bytes4 _protocol = bytes4(supportedProtocolList.at(i)); + _protocolList[i] = _protocol; + supportedProtocolList.remove(_protocol); + stakersByProtocol[_protocol].remove(msg.sender); } - } - - /** - * @notice Remove all tokens supported by the caller - */ - function removeAllTokens() external { EnumerableSet.AddressSet storage supportedTokenList = tokensByStaker[ msg.sender ]; - uint256 _length = supportedTokenList.length(); - if (_length <= 0) revert NoTokensToRemove(); - address[] memory _tokenList = new address[](_length); + uint256 _tokenListLength = supportedTokenList.length(); + address[] memory _tokenList = new address[](_tokenListLength); - for (uint256 i = _length; i > 0; ) { + for (uint256 i = _tokenListLength; i > 0; ) { i--; address _token = supportedTokenList.at(i); _tokenList[i] = _token; supportedTokenList.remove(_token); stakersByToken[_token].remove(msg.sender); } - uint256 _transferAmount = obligationCost + tokenCost * _length; - emit FullUnstake(msg.sender); - emit RemoveTokens(msg.sender, _tokenList); + + uint256 _transferAmount = stakingCost + + (supportCost * _protocolListLength) + + (supportCost * _tokenListLength); if (_transferAmount > 0) { stakingToken.safeTransfer(msg.sender, _transferAmount); } - } - /** - * @notice Return a list of all server URLs supporting a given token - * @param _token address of the token - * @return urls array of staker server URLs supporting the token - */ - function getServerURLsForToken( - address _token - ) external view returns (string[] memory urls) { - EnumerableSet.AddressSet storage stakers = stakersByToken[_token]; - uint256 _length = stakers.length(); - urls = new string[](_length); - for (uint256 i = 0; i < _length; i++) { - urls[i] = stakerServerURLs[address(stakers.at(i))]; - } + emit UnsetServer( + msg.sender, + stakerServerURLs[msg.sender], + _protocolList, + _tokenList + ); } /** - * @notice Return whether a staker supports a given token - * @param _staker account address used to stake - * @param _token address of the token - * @return true if the staker supports the token - */ - function supportsToken( - address _staker, - address _token - ) external view returns (bool) { - return tokensByStaker[_staker].contains(_token); - } - - /** - * @notice Return a list of all supported tokens for a given staker - * @param _staker account address of the staker - * @return tokenList array of all the supported tokens - */ - function getTokensForStaker( - address _staker - ) external view returns (address[] memory tokenList) { - EnumerableSet.AddressSet storage tokens = tokensByStaker[_staker]; - uint256 _length = tokens.length(); - tokenList = new address[](_length); - for (uint256 i = 0; i < _length; i++) { - tokenList[i] = tokens.at(i); - } - } - - /** - * @notice Return a list of all stakers supporting a given token - * @param _token address of the token - * @return _stakers array of all stakers that support a given token - */ - function getStakersForToken( - address _token - ) external view returns (address[] memory _stakers) { - EnumerableSet.AddressSet storage stakerList = stakersByToken[_token]; - uint256 _length = stakerList.length(); - _stakers = new address[](_length); - for (uint256 i = 0; i < _length; i++) { - _stakers[i] = stakerList.at(i); - } - } - - /** - * @notice Add protocols supported by the caller - * @param _protocols array of protocol addresses + * @notice Add protocols supported by the sender + * @param _protocols array of protocol identifiers */ function addProtocols(bytes4[] calldata _protocols) external { uint256 _length = _protocols.length; - if (_length <= 0) revert NoProtocolsToAdd(); + if (_length <= 0) revert ArgumentInvalid(); EnumerableSet.Bytes32Set storage _protocolList = protocolsByStaker[ msg.sender ]; @@ -219,16 +139,22 @@ contract Registry { if (!_protocolList.add(protocol)) revert ProtocolExists(protocol); stakersByProtocol[protocol].add(msg.sender); } + + uint256 _transferAmount = supportCost * _length; + if (_transferAmount > 0) { + stakingToken.safeTransferFrom(msg.sender, address(this), _transferAmount); + } + emit AddProtocols(msg.sender, _protocols); } /** - * @notice Remove protocols supported by the caller - * @param _protocols array of protocol addresses + * @notice Remove protocols supported by the sender + * @param _protocols array of protocol identifiers */ function removeProtocols(bytes4[] calldata _protocols) external { uint256 _length = _protocols.length; - if (_length <= 0) revert NoProtocolsToRemove(); + if (_length <= 0) revert ArgumentInvalid(); EnumerableSet.Bytes32Set storage protocolList = protocolsByStaker[ msg.sender ]; @@ -238,34 +164,19 @@ contract Registry { revert ProtocolDoesNotExist(_protocol); stakersByProtocol[_protocol].remove(msg.sender); } - emit RemoveProtocols(msg.sender, _protocols); - } - /** - * @notice Remove all protocols supported by the caller - */ - function removeAllProtocols() external { - EnumerableSet.Bytes32Set storage _supportedProtocolList = protocolsByStaker[ - msg.sender - ]; - uint256 _length = _supportedProtocolList.length(); - if (_length <= 0) revert NoProtocolsToRemove(); - bytes4[] memory protocolList = new bytes4[](_length); + uint256 _transferAmount = supportCost * _length; + emit RemoveProtocols(msg.sender, _protocols); - for (uint256 i = _length; i > 0; ) { - i--; - bytes4 _protocol = bytes4(_supportedProtocolList.at(i)); - protocolList[i] = _protocol; - _supportedProtocolList.remove(_protocol); - stakersByProtocol[_protocol].remove(msg.sender); + if (_transferAmount > 0) { + stakingToken.safeTransfer(msg.sender, _transferAmount); } - emit RemoveProtocols(msg.sender, protocolList); } /** - * @notice Return a list of all server URLs supporting a given protocol - * @param _protocol address of the protocol - * @return _urls array of staker server URLs supporting the protocol + * @notice Get all server URLs supporting a protocol + * @param _protocol bytes4 of a protocol identifier + * @return _urls array of URLs supporting the protocol */ function getServerURLsForProtocol( bytes4 _protocol @@ -279,24 +190,9 @@ contract Registry { } /** - * @notice Get the ServerURLs for an array of stakers - * @param _stakers array of staker addresses - * @return _urls array of staker ServerURLs in the same order - */ - function getServerURLsForStakers( - address[] calldata _stakers - ) external view returns (string[] memory _urls) { - uint256 stakersLength = _stakers.length; - _urls = new string[](stakersLength); - for (uint256 i = 0; i < stakersLength; i++) { - _urls[i] = stakerServerURLs[_stakers[i]]; - } - } - - /** - * @notice Return whether a staker supports a given protocol - * @param _staker account address used to stake - * @param _protocol address of the protocol + * @notice Return whether a staker supports a protocol + * @param _staker account address of a staker + * @param _protocol bytes4 of a protocol identifier * @return true if the staker supports the protocol */ function supportsProtocol( @@ -307,9 +203,9 @@ contract Registry { } /** - * @notice Return a list of all supported protocols for a given staker + * @notice Get all supported protocols for a staker * @param _staker account address of the staker - * @return _protocolList array of all the supported protocols + * @return _protocolList array of supported protocol identifiers */ function getProtocolsForStaker( address _staker @@ -323,9 +219,9 @@ contract Registry { } /** - * @notice Return a list of all stakers supporting a given protocol - * @param _protocol address of the protocol - * @return _stakers array of all stakers that support a given protocol + * @notice Get all stakers supporting a protocol + * @param _protocol bytes4 of the protocol identifier + * @return _stakers array of all stakers that support the protocol */ function getStakersForProtocol( bytes4 _protocol @@ -339,15 +235,136 @@ contract Registry { } /** - * @notice Return the staking balance of a given staker - * @param _staker address of the account used to stake + * @notice Add tokens supported by the sender + * @param _tokens array of token addresses + */ + function addTokens(address[] calldata _tokens) external { + uint256 _length = _tokens.length; + if (_length <= 0) revert ArgumentInvalid(); + EnumerableSet.AddressSet storage tokenList = tokensByStaker[msg.sender]; + + for (uint256 i = 0; i < _length; i++) { + address _token = _tokens[i]; + if (!tokenList.add(_token)) revert TokenExists(_token); + stakersByToken[_token].add(msg.sender); + } + uint256 _transferAmount = supportCost * _length; + emit AddTokens(msg.sender, _tokens); + if (_transferAmount > 0) { + stakingToken.safeTransferFrom(msg.sender, address(this), _transferAmount); + } + } + + /** + * @notice Remove tokens supported by the sender + * @param _tokens array of token addresses + */ + function removeTokens(address[] calldata _tokens) external { + uint256 _length = _tokens.length; + if (_length <= 0) revert ArgumentInvalid(); + EnumerableSet.AddressSet storage tokenList = tokensByStaker[msg.sender]; + for (uint256 i = 0; i < _length; i++) { + address token = _tokens[i]; + if (!tokenList.remove(token)) revert TokenDoesNotExist(token); + stakersByToken[token].remove(msg.sender); + } + uint256 _transferAmount = supportCost * _length; + emit RemoveTokens(msg.sender, _tokens); + if (_transferAmount > 0) { + stakingToken.safeTransfer(msg.sender, _transferAmount); + } + } + + /** + * @notice Get all server URLs supporting a token + * @param _token address of a token + * @return urls array of URLs supporting the token + */ + function getServerURLsForToken( + address _token + ) external view returns (string[] memory urls) { + EnumerableSet.AddressSet storage stakers = stakersByToken[_token]; + uint256 _length = stakers.length(); + urls = new string[](_length); + for (uint256 i = 0; i < _length; i++) { + urls[i] = stakerServerURLs[address(stakers.at(i))]; + } + } + + /** + * @notice Return whether a staker supports a token + * @param _staker account address of a staker + * @param _token address of a token identifier + * @return true if the staker supports the token + */ + function supportsToken( + address _staker, + address _token + ) external view returns (bool) { + return tokensByStaker[_staker].contains(_token); + } + + /** + * @notice Return a list of all supported tokens for a given staker + * @param _staker account address of the staker + * @return tokenList array of all supported tokens + */ + function getTokensForStaker( + address _staker + ) external view returns (address[] memory tokenList) { + EnumerableSet.AddressSet storage tokens = tokensByStaker[_staker]; + uint256 _length = tokens.length(); + tokenList = new address[](_length); + for (uint256 i = 0; i < _length; i++) { + tokenList[i] = tokens.at(i); + } + } + + /** + * @notice Get all stakers supporting a token + * @param _token address of the token + * @return _stakers array of all stakers that support the token + */ + function getStakersForToken( + address _token + ) external view returns (address[] memory _stakers) { + EnumerableSet.AddressSet storage stakerList = stakersByToken[_token]; + uint256 _length = stakerList.length(); + _stakers = new address[](_length); + for (uint256 i = 0; i < _length; i++) { + _stakers[i] = stakerList.at(i); + } + } + + /** + * @notice Get the URLs for an array of stakers + * @param _stakers array of staker addresses + * @return _urls array of staker URLs in the same order + */ + function getServerURLsForStakers( + address[] calldata _stakers + ) external view returns (string[] memory _urls) { + uint256 stakersLength = _stakers.length; + _urls = new string[](stakersLength); + for (uint256 i = 0; i < stakersLength; i++) { + _urls[i] = stakerServerURLs[_stakers[i]]; + } + } + + /** + * @notice Get the staking balance of a staker + * @param _staker address of a staker account * @return balance of the staker account */ function balanceOf(address _staker) external view returns (uint256) { + uint256 _stakingBalance = 0; + if (bytes(stakerServerURLs[_staker]).length > 0) + _stakingBalance = stakingCost; + uint256 _protocolCount = protocolsByStaker[_staker].length(); uint256 _tokenCount = tokensByStaker[_staker].length(); - if (_tokenCount == 0) { - return 0; - } - return obligationCost + tokenCost * _tokenCount; + return + _stakingBalance + + (supportCost * _protocolCount) + + (supportCost * _tokenCount); } } diff --git a/source/registry/deploys-blocks.js b/source/registry/deploys-blocks.js new file mode 100644 index 000000000..f28f44f17 --- /dev/null +++ b/source/registry/deploys-blocks.js @@ -0,0 +1,4 @@ +module.exports = { + 1: 18262901, + 5: 9774339, +} diff --git a/source/registry/deploys.js b/source/registry/deploys.js index 087314c62..bf1cb7da2 100644 --- a/source/registry/deploys.js +++ b/source/registry/deploys.js @@ -1,5 +1,4 @@ module.exports = { - 1: '0xf5E6730c5A915b6f47AeAB0952655036aE2e73E9', - 5: '0x6787cD07B0E6934BA9c3D1eBf3866eF091697128', - 59140: '0xAa7fC83C31db055261cb88e5cAa02CAFe12c8dCD', + 1: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', + 5: '0x33Cded9D1C082AA57439FB7a6784913321e17316', } diff --git a/source/registry/deploys.js.d.ts b/source/registry/deploys.js.d.ts index 13ee47dbe..adcadf673 100644 --- a/source/registry/deploys.js.d.ts +++ b/source/registry/deploys.js.d.ts @@ -1 +1,2 @@ declare module '@airswap/registry/deploys.js' +declare module '@airswap/registry/deploys-blocks.js' diff --git a/source/registry/package.json b/source/registry/package.json index d4e473afc..b75be1ad3 100644 --- a/source/registry/package.json +++ b/source/registry/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/registry", - "version": "4.0.3", + "version": "4.1.0", "description": "AirSwap: Server URL Registry", "license": "MIT", "repository": { @@ -20,7 +20,7 @@ "typechain": "tsc -b", "coverage": "hardhat coverage", "test": "hardhat test", - "test:unit": "hardhat test ./test/unit.js", + "test:ci": "hardhat test", "deploy": "hardhat run ./scripts/deploy.js", "verify": "hardhat run ./scripts/verify.js" }, @@ -31,7 +31,7 @@ "access": "public" }, "devDependencies": { - "@airswap/constants": "^4.0.10", + "@airswap/constants": "^4.1.0", "@airswap/utils": "^4.0.8", "prompt-confirm": "^2.0.4" } diff --git a/source/registry/scripts/deploy.js b/source/registry/scripts/deploy.js index 132c63be6..d6098b895 100644 --- a/source/registry/scripts/deploy.js +++ b/source/registry/scripts/deploy.js @@ -1,13 +1,22 @@ /* eslint-disable no-console */ const fs = require('fs') +const prettier = require('prettier') const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') -const { chainNames, stakingTokenAddresses } = require('@airswap/constants') +const { + ChainIds, + chainLabels, + chainNames, + stakingTokenAddresses, +} = require('@airswap/constants') const { getReceiptUrl } = require('@airswap/utils') const registryDeploys = require('../deploys.js') +const registryBlocks = require('../deploys-blocks.js') async function main() { await run('compile') + const config = await prettier.resolveConfig('../deploys.js') + const [deployer] = await ethers.getSigners() const gasPrice = await deployer.getGasPrice() const chainId = await deployer.getChainId() @@ -20,37 +29,51 @@ async function main() { console.log(`Gas price: ${gasPrice / 10 ** 9} gwei\n`) const stakingToken = stakingTokenAddresses[chainId] - const obligationCost = 1000000000 - const tokenCost = 1000000 + const stakingCost = 1000000000 + const supportCost = 1000000 console.log(`\nstakingToken: ${stakingToken}`) - console.log(`obligationCost: ${obligationCost}`) - console.log(`tokenCost: ${tokenCost}\n`) + console.log(`stakingCost: ${stakingCost}`) + console.log(`supportCost: ${supportCost}\n`) const prompt = new Confirm('Proceed to deploy?') if (await prompt.run()) { const registryFactory = await ethers.getContractFactory('Registry') const registryContract = await registryFactory.deploy( stakingToken, - obligationCost, - tokenCost + stakingCost, + supportCost ) console.log( 'Deploying...', getReceiptUrl(chainId, registryContract.deployTransaction.hash) ) await registryContract.deployed() - console.log(`Deployed: ${registryContract.address}`) registryDeploys[chainId] = registryContract.address fs.writeFileSync( './deploys.js', - `module.exports = ${JSON.stringify(registryDeploys, null, '\t')}` + prettier.format( + `module.exports = ${JSON.stringify(registryDeploys, null, '\t')}`, + { ...config, parser: 'babel' } + ) + ) + registryBlocks[chainId] = ( + await registryContract.deployTransaction.wait() + ).blockNumber + fs.writeFileSync( + './deploys-blocks.js', + prettier.format( + `module.exports = ${JSON.stringify(registryBlocks, null, '\t')}`, + { ...config, parser: 'babel' } + ) + ) + console.log( + `Deployed: ${registryDeploys[chainId]} @ ${registryBlocks[chainId]}` ) - console.log('Updated deploys.js') console.log( - `\nVerify with "yarn verify --network ${chainNames[ + `\nVerify with "yarn verify --network ${chainLabels[ chainId ].toLowerCase()}"\n` ) diff --git a/source/registry/scripts/verify.js b/source/registry/scripts/verify.js index e2e8f274f..2fff1111b 100644 --- a/source/registry/scripts/verify.js +++ b/source/registry/scripts/verify.js @@ -10,13 +10,13 @@ async function main() { const chainId = await deployer.getChainId() const stakingToken = stakingTokenAddresses[chainId] - const obligationCost = 1000000000 - const tokenCost = 1000000 + const stakingCost = 1000000000 + const supportCost = 1000000 console.log(`Verifying on ${chainNames[chainId].toUpperCase()}`) await run('verify:verify', { address: registryDeploys[chainId], - constructorArguments: [stakingToken, obligationCost, tokenCost], + constructorArguments: [stakingToken, stakingCost, supportCost], }) } diff --git a/source/registry/test/unit.js b/source/registry/test/Registry.js similarity index 66% rename from source/registry/test/unit.js rename to source/registry/test/Registry.js index a82fae862..0e42ebf0e 100644 --- a/source/registry/test/unit.js +++ b/source/registry/test/Registry.js @@ -8,9 +8,9 @@ describe('Registry Unit', () => { let deployer let account1 let account2 - let protocol1 - let protocol2 - let protocol3 + const protocol1 = '0x00000001' + const protocol2 = '0x00000002' + const protocol3 = '0x00000003' let token1 let token2 let token3 @@ -18,8 +18,8 @@ describe('Registry Unit', () => { let registryFactory let registry let registryZeroCost - const OBLIGATION_COST = 1000 - const TOKEN_COST = 10 + const STAKING_COST = 1000 + const SUPPORT_COST = 10 beforeEach(async () => { snapshotId = await ethers.provider.send('evm_snapshot') @@ -32,38 +32,133 @@ describe('Registry Unit', () => { before(async () => { ;[deployer, account1, account2, token1, token2, token3] = await ethers.getSigners() - protocol1 = '0x00000001' - protocol2 = '0x00000002' - protocol3 = '0x00000003' stakingToken = await deployMockContract(deployer, IERC20.abi) registryFactory = await ethers.getContractFactory('Registry') registry = await registryFactory.deploy( stakingToken.address, - OBLIGATION_COST, - TOKEN_COST + STAKING_COST, + SUPPORT_COST ) await registry.deployed() }) - describe('Default Values', async () => { - it('constructor set default values', async () => { + describe('constructor values', async () => { + it('constructor set correct values', async () => { const tokenAddress = await registry.stakingToken() - const obligationCost = await registry.obligationCost() - const tokenCost = await registry.tokenCost() + const stakingCost = await registry.stakingCost() + const supportCost = await registry.supportCost() expect(tokenAddress).to.equal(stakingToken.address) - expect(obligationCost).to.equal(OBLIGATION_COST) - expect(tokenCost).to.equal(TOKEN_COST) + expect(stakingCost).to.equal(STAKING_COST) + expect(supportCost).to.equal(SUPPORT_COST) }) }) - describe('Add Protocols', async () => { - it('add an empty list of protocols fails', async () => { + describe('stake for a server', async () => { + it('fails for bad url', async () => { + await expect( + registry.connect(account1).setServerURL('') + ).to.be.revertedWith('ServerURLInvalid') + }) + + it('successful setting of url', async () => { + await stakingToken.mock.transferFrom.returns(true) + await expect(registry.connect(account1).setServerURL('maker1.com')) + .to.emit(registry, 'SetServerURL') + .withArgs(account1.address, 'maker1.com') + + const urls = await registry.getServerURLsForStakers([account1.address]) + expect(urls.length).to.equal(1) + expect(urls[0]).to.equal('maker1.com') + }) + + it('successful changing of url, check by staker', async () => { + await stakingToken.mock.transferFrom.returns(true) + await registry.connect(account1).setServerURL('maker1.com') + await registry.connect(account1).setServerURL('maker2.com') + + const urls = await registry.getServerURLsForStakers([account1.address]) + expect(urls.length).to.equal(1) + expect(urls[0]).to.equal('maker2.com') + }) + + it('successful changing of url, check by token', async () => { + await stakingToken.mock.transferFrom.returns(true) + await registry.connect(account1).setServerURL('maker1.com') + await registry.connect(account1).setServerURL('maker2.com') + + await stakingToken.mock.transferFrom.returns(true) + await expect( + registry + .connect(account1) + .addTokens([token1.address, token2.address, token3.address]) + ) + .to.emit(registry, 'AddTokens') + .withArgs(account1.address, [ + token1.address, + token2.address, + token3.address, + ]) + + const urls = await registry.getServerURLsForToken(token3.address) + expect(urls.length).to.equal(1) + expect(urls[0]).to.equal('maker2.com') + }) + + it('successful changing of url, check by protocol', async () => { + await stakingToken.mock.transferFrom.returns(true) + await registry.connect(account1).setServerURL('maker1.com') + await registry.connect(account1).setServerURL('maker2.com') + + await expect( + registry + .connect(account1) + .addProtocols([protocol1, protocol2, protocol3]) + ) + .to.emit(registry, 'AddProtocols') + .withArgs(account1.address, [protocol1, protocol2, protocol3]) + + const urls = await registry.getServerURLsForProtocol(protocol3) + expect(urls.length).to.equal(1) + expect(urls[0]).to.equal('maker2.com') + }) + + it('successful fetching of multiple urls', async () => { + await stakingToken.mock.transferFrom.returns(true) + await registry.connect(account1).setServerURL('maker1.com') + await registry.connect(account2).setServerURL('maker2.com') + + const urls = await registry.getServerURLsForStakers([ + account1.address, + account2.address, + ]) + expect(urls.length).to.equal(2) + expect(urls[0]).to.equal('maker1.com') + expect(urls[1]).to.equal('maker2.com') + }) + + it('successful fetching of multiple urls where one address has an empty url', async () => { + await stakingToken.mock.transferFrom.returns(true) + await registry.connect(account1).setServerURL('maker1.com') + + const urls = await registry.getServerURLsForStakers([ + account1.address, + account2.address, + ]) + expect(urls.length).to.equal(2) + expect(urls[0]).to.equal('maker1.com') + expect(urls[1]).to.equal('') + }) + }) + + describe('supported protocols', async () => { + it('fails to add an empty list of protocols', async () => { await expect( registry.connect(account1).addProtocols([]) - ).to.be.revertedWith('NoProtocolsToAdd()') + ).to.be.revertedWith('ArgumentInvalid') }) it('add a list of protocols', async () => { + await stakingToken.mock.transferFrom.returns(true) await expect( registry .connect(account1) @@ -105,30 +200,33 @@ describe('Registry Unit', () => { expect(protocol3Supported).to.equal(true) }) - it('add a list of duplicate protocols fails', async () => { + it('fails to add a list of duplicate protocols', async () => { await expect( registry .connect(account1) .addProtocols([protocol1, protocol2, protocol1]) - ).to.be.revertedWith(`ProtocolExists("${protocol1}")`) + ) + .to.be.revertedWith(`ProtocolExists`) + .withArgs(protocol1) }) - it('add a duplicate token', async () => { + it('fails to add a duplicate protocol', async () => { + await stakingToken.mock.transferFrom.returns(true) await registry.connect(account1).addProtocols([protocol1, protocol2]) - await expect( - registry.connect(account1).addProtocols([protocol1]) - ).to.be.revertedWith(`ProtocolExists("${protocol1}")`) + await expect(registry.connect(account1).addProtocols([protocol1])) + .to.be.revertedWith(`ProtocolExists`) + .withArgs(protocol1) }) - }) - describe('Remove Protocols', async () => { - it('remove an empty list of protocols fails', async () => { + it('fails to remove an empty list of protocols', async () => { await expect( registry.connect(account1).removeProtocols([]) - ).to.be.revertedWith('NoProtocolsToRemove()') + ).to.be.revertedWith('ArgumentInvalid') }) it('remove a list of protocols', async () => { + await stakingToken.mock.transfer.returns(true) + await stakingToken.mock.transferFrom.returns(true) await registry .connect(account1) .addProtocols([protocol1, protocol2, protocol3]) @@ -168,34 +266,8 @@ describe('Registry Unit', () => { expect(protocol3Supported).to.equal(false) }) - it('remove all protocols for a staker fails when there are no protocols to remove', async () => { - await expect( - registry.connect(account1).removeAllProtocols() - ).to.be.revertedWith('NoProtocolsToRemove()') - }) - - it('remove all protocols for a staker', async () => { - await registry - .connect(account1) - .addProtocols([protocol1, protocol2, protocol3]) - await expect(registry.connect(account1).removeAllProtocols()) - .to.emit(registry, 'RemoveProtocols') - .withArgs(account1.address, [protocol1, protocol2, protocol3]) - - //NOTE: Note that there are no guarantees on the ordering of values inside the array, and it may change when more values are added or removed. - // this is why protocol1, protocol2, protocol3 are in the above order - const protocols = await registry.getProtocolsForStaker(account1.address) - expect(protocols.length).to.equal(0) - - const protocol1Stakers = await registry.getStakersForProtocol(protocol1) - const protocol2Stakers = await registry.getStakersForProtocol(protocol2) - const protocol3Stakers = await registry.getStakersForProtocol(protocol3) - expect(protocol1Stakers.length).to.equal(0) - expect(protocol2Stakers.length).to.equal(0) - expect(protocol3Stakers.length).to.equal(0) - }) - - it('remove a list of duplicate protocols fails', async () => { + it('fails to remove a list of duplicate protocols', async () => { + await stakingToken.mock.transferFrom.returns(true) await registry .connect(account1) .addProtocols([protocol1, protocol2, protocol3]) @@ -204,10 +276,14 @@ describe('Registry Unit', () => { registry .connect(account1) .removeProtocols([protocol1, protocol2, protocol1]) - ).to.be.revertedWith(`ProtocolDoesNotExist("${protocol1}")`) + ) + .to.be.revertedWith(`ProtocolDoesNotExist`) + .withArgs(protocol1) }) - it('remove a token already removed fails', async () => { + it('fails to remove a protocol already removed', async () => { + await stakingToken.mock.transfer.returns(true) + await stakingToken.mock.transferFrom.returns(true) await registry .connect(account1) .addProtocols([protocol1, protocol2, protocol3]) @@ -216,16 +292,16 @@ describe('Registry Unit', () => { .connect(account1) .removeProtocols([protocol1, protocol2, protocol3]) - await expect( - registry.connect(account1).removeProtocols([protocol1]) - ).to.be.revertedWith(`ProtocolDoesNotExist("${protocol1}")`) + await expect(registry.connect(account1).removeProtocols([protocol1])) + .to.be.revertedWith(`ProtocolDoesNotExist`) + .withArgs(protocol1) }) }) - describe('Add Tokens', async () => { - it('add an empty list of tokens fails', async () => { + describe('supported tokens', async () => { + it('fails to add an empty list of tokens', async () => { await expect(registry.connect(account1).addTokens([])).to.be.revertedWith( - 'NoTokensToAdd()' + 'ArgumentInvalid' ) }) @@ -285,31 +361,31 @@ describe('Registry Unit', () => { ).to.be.revertedWith('SafeERC20: ERC20 operation did not succeed') }) - it('add a list of duplicate tokens fails', async () => { + it('fails to add a list of duplicate tokens', async () => { await stakingToken.mock.transferFrom.returns(true) await expect( registry .connect(account1) .addTokens([token1.address, token2.address, token1.address]) - ).to.be.revertedWith(`TokenExists("${token1.address}")`) + ) + .to.be.revertedWith(`TokenExists`) + .withArgs(token1.address) }) - it('add a duplicate token', async () => { + it('fails to add a duplicate token', async () => { await stakingToken.mock.transferFrom.returns(true) await registry .connect(account1) .addTokens([token1.address, token2.address]) - await expect( - registry.connect(account1).addTokens([token1.address]) - ).to.be.revertedWith(`TokenExists("${token1.address}")`) + await expect(registry.connect(account1).addTokens([token1.address])) + .to.be.revertedWith(`TokenExists`) + .withArgs(token1.address) }) - }) - describe('Remove Tokens', async () => { - it('remove an empty list of tokens fails', async () => { + it('fails to remove an empty list of tokens', async () => { await expect( registry.connect(account1).removeTokens([]) - ).to.be.revertedWith('NoTokensToRemove()') + ).to.be.revertedWith('ArgumentInvalid') }) it('remove a list of tokens', async () => { @@ -358,28 +434,41 @@ describe('Registry Unit', () => { expect(token3Supported).to.equal(false) }) - it('remove all tokens for a staker fails when there are no tokens to remove', async () => { - await expect( - registry.connect(account1).removeAllTokens() - ).to.be.revertedWith('NoTokensToRemove()') + it('fails to remove a server without a url set', async () => { + await expect(registry.connect(account1).unsetServer()).to.be.revertedWith( + 'NoServerURLSet' + ) }) - it('remove all tokens for a staker', async () => { + it('successfully remove a server', async () => { await stakingToken.mock.transfer.returns(true) await stakingToken.mock.transferFrom.returns(true) + await registry.connect(account1).setServerURL('maker1.com') + await registry + .connect(account1) + .addProtocols([protocol1, protocol2, protocol3]) await registry .connect(account1) .addTokens([token1.address, token2.address, token3.address]) - await expect(registry.connect(account1).removeAllTokens()) - .to.emit(registry, 'RemoveTokens') - .withArgs(account1.address, [ - token1.address, - token2.address, - token3.address, - ]) + await expect(registry.connect(account1).unsetServer()) + .to.emit(registry, 'UnsetServer') + .withArgs( + account1.address, + 'maker1.com', + [protocol1, protocol2, protocol3], + [token1.address, token2.address, token3.address] + ) + + const protocols = await registry.getProtocolsForStaker(account1.address) + expect(protocols.length).to.equal(0) + + const protocol1Stakers = await registry.getStakersForProtocol(protocol1) + const protocol2Stakers = await registry.getStakersForProtocol(protocol2) + const protocol3Stakers = await registry.getStakersForProtocol(protocol3) + expect(protocol1Stakers.length).to.equal(0) + expect(protocol2Stakers.length).to.equal(0) + expect(protocol3Stakers.length).to.equal(0) - //NOTE: Note that there are no guarantees on the ordering of values inside the array, and it may change when more values are added or removed. - // this is why token1, token3, token2 are in the above order const tokens = await registry.getTokensForStaker(account1.address) expect(tokens.length).to.equal(0) @@ -391,7 +480,7 @@ describe('Registry Unit', () => { expect(token3Stakers.length).to.equal(0) }) - it('remove a list of duplicate tokens fails', async () => { + it('fails to remove a list of duplicate tokens', async () => { await stakingToken.mock.transfer.returns(true) await stakingToken.mock.transferFrom.returns(true) await registry @@ -402,10 +491,12 @@ describe('Registry Unit', () => { registry .connect(account1) .removeTokens([token1.address, token2.address, token1.address]) - ).to.be.revertedWith(`TokenDoesNotExist("${token1.address}")`) + ) + .to.be.revertedWith(`TokenDoesNotExist`) + .withArgs(token1.address) }) - it('remove a token already removed fails', async () => { + it('fails to remove a token already removed', async () => { await stakingToken.mock.transfer.returns(true) await stakingToken.mock.transferFrom.returns(true) await registry @@ -416,15 +507,15 @@ describe('Registry Unit', () => { .connect(account1) .removeTokens([token1.address, token2.address, token3.address]) - await expect( - registry.connect(account1).removeTokens([token1.address]) - ).to.be.revertedWith(`TokenDoesNotExist("${token1.address}")`) + await expect(registry.connect(account1).removeTokens([token1.address])) + .to.be.revertedWith(`TokenDoesNotExist`) + .withArgs(token1.address) }) }) - describe('Test Zero Amount Transfer', async () => { + describe('zero amount transfers', async () => { beforeEach(async () => { - let zero_cost = '0' + const zero_cost = '0' registryZeroCost = await registryFactory.deploy( stakingToken.address, zero_cost, @@ -440,7 +531,22 @@ describe('Registry Unit', () => { .to.emit(registryZeroCost, 'AddTokens') .withArgs(account1.address, [token1.address]) }) - it('zero transfer amount when removing token', async () => { + it('when removing protocol', async () => { + await registryZeroCost.connect(account1).addProtocols([protocol1]) + await expect( + registryZeroCost.connect(account1).removeProtocols([protocol1]) + ) + .to.emit(registryZeroCost, 'RemoveProtocols') + .withArgs(account1.address, [protocol1]) + }) + it('when removing all protocols', async () => { + await registryZeroCost.connect(account1).setServerURL('maker1.com') + await registryZeroCost.connect(account1).addProtocols([protocol1]) + await expect(registryZeroCost.connect(account1).unsetServer()) + .to.emit(registryZeroCost, 'UnsetServer') + .withArgs(account1.address, 'maker1.com', [protocol1], []) + }) + it('when removing token', async () => { await registryZeroCost.connect(account1).addTokens([token1.address]) await expect( registryZeroCost.connect(account1).removeTokens([token1.address]) @@ -448,121 +554,57 @@ describe('Registry Unit', () => { .to.emit(registryZeroCost, 'RemoveTokens') .withArgs(account1.address, [token1.address]) }) - it('zero transfer amount when removing all tokens', async () => { - await registryZeroCost - .connect(account1) - .addTokens([token1.address, token2.address, token3.address]) - await expect(registryZeroCost.connect(account1).removeAllTokens()) - .to.emit(registryZeroCost, 'FullUnstake') - .withArgs(account1.address) + it('when removing all tokens', async () => { + await registryZeroCost.connect(account1).setServerURL('maker1.com') + await registryZeroCost.connect(account1).addTokens([token1.address]) + await expect(registryZeroCost.connect(account1).unsetServer()) + .to.emit(registryZeroCost, 'UnsetServer') + .withArgs(account1.address, 'maker1.com', [], [token1.address]) }) }) - describe('Set URL', async () => { - it('successful setting of url', async () => { - await expect(registry.connect(account1).setServerURL('www.noneURL.com')) - .to.emit(registry, 'SetServerURL') - .withArgs(account1.address, 'www.noneURL.com') - - const urls = await registry.getServerURLsForStakers([account1.address]) - expect(urls.length).to.equal(1) - expect(urls[0]).to.equal('www.noneURL.com') - }) - - it('successful changing of url, check by staker', async () => { - await registry.connect(account1).setServerURL('www.noneURL.com') - await registry.connect(account1).setServerURL('www.TheCatsMeow.com') - - const urls = await registry.getServerURLsForStakers([account1.address]) - expect(urls.length).to.equal(1) - expect(urls[0]).to.equal('www.TheCatsMeow.com') + describe('balance of', async () => { + it('verify balance without a staked server', async () => { + const balance = await registry.balanceOf(account1.address) + expect(balance).to.equal(0) }) - it('successful changing of url, check by token', async () => { - await registry.connect(account1).setServerURL('www.noneURL.com') - await registry.connect(account1).setServerURL('www.TheCatsMeow.com') - + it('verify balance after adding protocols', async () => { await stakingToken.mock.transferFrom.returns(true) - await expect( - registry - .connect(account1) - .addTokens([token1.address, token2.address, token3.address]) - ) - .to.emit(registry, 'AddTokens') - .withArgs(account1.address, [ - token1.address, - token2.address, - token3.address, - ]) + await registry.connect(account1).setServerURL('maker1.com') + await registry.connect(account1).addProtocols([protocol1, protocol2]) - const urls = await registry.getServerURLsForToken(token3.address) - expect(urls.length).to.equal(1) - expect(urls[0]).to.equal('www.TheCatsMeow.com') + const balance = await registry.balanceOf(account1.address) + expect(balance).to.equal(STAKING_COST + SUPPORT_COST * 2) }) - it('successful changing of url, check by protocol', async () => { - await registry.connect(account1).setServerURL('www.noneURL.com') - await registry.connect(account1).setServerURL('www.TheCatsMeow.com') - + it('verify balance after removing protocols', async () => { + await stakingToken.mock.transfer.returns(true) await stakingToken.mock.transferFrom.returns(true) - await expect( - registry - .connect(account1) - .addProtocols([protocol1, protocol2, protocol3]) - ) - .to.emit(registry, 'AddProtocols') - .withArgs(account1.address, [protocol1, protocol2, protocol3]) - - const urls = await registry.getServerURLsForProtocol(protocol3) - expect(urls.length).to.equal(1) - expect(urls[0]).to.equal('www.TheCatsMeow.com') - }) - - it('successful fetching of multiple urls', async () => { - await registry.connect(account1).setServerURL('www.noneURL.com') - await registry.connect(account2).setServerURL('www.TheCatsMeow.com') - - const urls = await registry.getServerURLsForStakers([ - account1.address, - account2.address, - ]) - expect(urls.length).to.equal(2) - expect(urls[0]).to.equal('www.noneURL.com') - expect(urls[1]).to.equal('www.TheCatsMeow.com') - }) - - it('successful fetching of multiple urls where one address has an empty url', async () => { - await registry.connect(account1).setServerURL('www.noneURL.com') + await registry.connect(account1).setServerURL('maker1.com') + await registry.connect(account1).addProtocols([protocol1, protocol2]) - const urls = await registry.getServerURLsForStakers([ - account1.address, - account2.address, - ]) - expect(urls.length).to.equal(2) - expect(urls[0]).to.equal('www.noneURL.com') - expect(urls[1]).to.equal('') - }) - }) + await registry.connect(account1).removeProtocols([protocol1]) - describe('Balance Of', async () => { - it('verify expected balance when a user has no tokens', async () => { const balance = await registry.balanceOf(account1.address) - expect(balance).to.equal(0) + expect(balance).to.equal(STAKING_COST + SUPPORT_COST) }) - it('verify expected staking balance after a user has added tokens', async () => { + it('verify balance after adding tokens', async () => { await stakingToken.mock.transferFrom.returns(true) + await registry.connect(account1).setServerURL('maker1.com') await registry .connect(account1) .addTokens([token1.address, token2.address, token3.address]) const balance = await registry.balanceOf(account1.address) - expect(balance).to.equal(OBLIGATION_COST + TOKEN_COST * 3) + expect(balance).to.equal(STAKING_COST + SUPPORT_COST * 3) }) - it('verify expected staking balance after a user has removed tokens', async () => { + it('verify balance after removing tokens', async () => { await stakingToken.mock.transfer.returns(true) await stakingToken.mock.transferFrom.returns(true) + await registry.connect(account1).setServerURL('maker1.com') await registry .connect(account1) .addTokens([token1.address, token2.address, token3.address]) @@ -570,7 +612,7 @@ describe('Registry Unit', () => { await registry.connect(account1).removeTokens([token2.address]) const balance = await registry.balanceOf(account1.address) - expect(balance).to.equal(OBLIGATION_COST + TOKEN_COST * 2) + expect(balance).to.equal(STAKING_COST + SUPPORT_COST * 2) }) }) }) diff --git a/source/registry/test/RegistryIntegration.js b/source/registry/test/RegistryIntegration.js new file mode 100644 index 000000000..fc277ab2d --- /dev/null +++ b/source/registry/test/RegistryIntegration.js @@ -0,0 +1,268 @@ +const { expect } = require('chai') +const { ethers } = require('hardhat') +const ERC20PresetFixedSupply = require('@openzeppelin/contracts/build/contracts/ERC20PresetFixedSupply.json') + +describe('Registry Integration', () => { + let snapshotId + let deployer + let account1 + const protocol1 = '0x00000001' + const protocol2 = '0x00000002' + const protocol3 = '0x00000003' + let token1 + let token2 + let token3 + let stakingToken + let registryFactory + let registry + const STAKING_COST = 1000 + const SUPPORT_COST = 10 + + beforeEach(async () => { + snapshotId = await ethers.provider.send('evm_snapshot') + }) + + afterEach(async () => { + await ethers.provider.send('evm_revert', [snapshotId]) + }) + + before(async () => { + ;[deployer, account1, token1, token2, token3] = await ethers.getSigners() + stakingToken = await ( + await ethers.getContractFactory( + ERC20PresetFixedSupply.abi, + ERC20PresetFixedSupply.bytecode + ) + ).deploy('TestERC20', 'TERC20', '10000', account1.address) + + await stakingToken.deployed() + + registryFactory = await ethers.getContractFactory('Registry') + registry = await registryFactory + .connect(deployer) + .deploy(stakingToken.address, STAKING_COST, SUPPORT_COST) + await registry.deployed() + stakingToken.connect(account1).approve(registry.address, '10000') + }) + + describe('constructor values', async () => { + it('constructor set correct values', async () => { + const tokenAddress = await registry.stakingToken() + const stakingCost = await registry.stakingCost() + const supportCost = await registry.supportCost() + expect(tokenAddress).to.equal(stakingToken.address) + expect(stakingCost).to.equal(STAKING_COST) + expect(supportCost).to.equal(SUPPORT_COST) + }) + }) + + describe('staking cost transfers', async () => { + it('staking cost is always transferred when a URL is set', async () => { + await expect(registry.connect(account1).setServerURL('maker1.com')) + .to.emit(registry, 'SetServerURL') + .withArgs(account1.address, 'maker1.com') + + const urls = await registry.getServerURLsForStakers([account1.address]) + expect(urls.length).to.equal(1) + expect(urls[0]).to.equal('maker1.com') + expect(await stakingToken.balanceOf(registry.address)).to.equal( + STAKING_COST + ) + }) + + it('staking cost is always retruned when a URL is unset', async () => { + await registry.connect(account1).setServerURL('maker1.com') + await expect(registry.connect(account1).unsetServer()) + .to.emit(registry, 'UnsetServer') + .withArgs(account1.address, 'maker1.com', [], []) + + expect(await stakingToken.balanceOf(registry.address)).to.equal(0) + }) + }) + + describe('support costs transfers', async () => { + it('support cost is always transferred for every protocol added.', async () => { + await expect( + registry + .connect(account1) + .addProtocols([protocol1, protocol2, protocol3]) + ) + .to.emit(registry, 'AddProtocols') + .withArgs(account1.address, [protocol1, protocol2, protocol3]) + + const protocols = await registry.getProtocolsForStaker(account1.address) + expect(protocols.length).to.equal(3) + expect(protocols[0]).to.equal(protocol1) + expect(protocols[1]).to.equal(protocol2) + expect(protocols[2]).to.equal(protocol3) + + const protocol1Stakers = await registry.getStakersForProtocol(protocol1) + const protocol2Stakers = await registry.getStakersForProtocol(protocol2) + const protocol3Stakers = await registry.getStakersForProtocol(protocol3) + expect(protocol1Stakers.length).to.equal(1) + expect(protocol2Stakers.length).to.equal(1) + expect(protocol3Stakers.length).to.equal(1) + expect(protocol1Stakers[0]).to.equal(account1.address) + expect(protocol2Stakers[0]).to.equal(account1.address) + expect(protocol3Stakers[0]).to.equal(account1.address) + + const protocol1Supported = await registry.supportsProtocol( + account1.address, + protocol1 + ) + const protocol2Supported = await registry.supportsProtocol( + account1.address, + protocol2 + ) + const protocol3Supported = await registry.supportsProtocol( + account1.address, + protocol3 + ) + expect(protocol1Supported).to.equal(true) + expect(protocol2Supported).to.equal(true) + expect(protocol3Supported).to.equal(true) + + expect(await stakingToken.balanceOf(registry.address)).to.equal( + SUPPORT_COST * 3 + ) + }) + + it('support cost is always returned for every protocol removed', async () => { + await registry + .connect(account1) + .addProtocols([protocol1, protocol2, protocol3]) + + await expect( + registry + .connect(account1) + .removeProtocols([protocol1, protocol2, protocol3]) + ) + .to.emit(registry, 'RemoveProtocols') + .withArgs(account1.address, [protocol1, protocol2, protocol3]) + + const protocols = await registry.getProtocolsForStaker(account1.address) + expect(protocols.length).to.equal(0) + + const protocol1Stakers = await registry.getStakersForProtocol(protocol1) + const protocol2Stakers = await registry.getStakersForProtocol(protocol2) + const protocol3Stakers = await registry.getStakersForProtocol(protocol3) + expect(protocol1Stakers.length).to.equal(0) + expect(protocol2Stakers.length).to.equal(0) + expect(protocol3Stakers.length).to.equal(0) + + const protocol1Supported = await registry.supportsProtocol( + account1.address, + protocol1 + ) + const protocol2Supported = await registry.supportsProtocol( + account1.address, + protocol2 + ) + const protocol3Supported = await registry.supportsProtocol( + account1.address, + protocol3 + ) + expect(protocol1Supported).to.equal(false) + expect(protocol2Supported).to.equal(false) + expect(protocol3Supported).to.equal(false) + + expect(await stakingToken.balanceOf(registry.address)).to.equal(0) + }) + }) + + it('support cost is always transferred for every token added', async () => { + await expect( + registry + .connect(account1) + .addTokens([token1.address, token2.address, token3.address]) + ) + .to.emit(registry, 'AddTokens') + .withArgs(account1.address, [ + token1.address, + token2.address, + token3.address, + ]) + + const tokens = await registry.getTokensForStaker(account1.address) + expect(tokens.length).to.equal(3) + expect(tokens[0]).to.equal(token1.address) + expect(tokens[1]).to.equal(token2.address) + expect(tokens[2]).to.equal(token3.address) + + const token1Stakers = await registry.getStakersForToken(token1.address) + const token2Stakers = await registry.getStakersForToken(token2.address) + const token3Stakers = await registry.getStakersForToken(token3.address) + expect(token1Stakers.length).to.equal(1) + expect(token2Stakers.length).to.equal(1) + expect(token3Stakers.length).to.equal(1) + expect(token1Stakers[0]).to.equal(account1.address) + expect(token2Stakers[0]).to.equal(account1.address) + expect(token3Stakers[0]).to.equal(account1.address) + + const token1Supported = await registry.supportsToken( + account1.address, + token1.address + ) + const token2Supported = await registry.supportsToken( + account1.address, + token2.address + ) + const token3Supported = await registry.supportsToken( + account1.address, + token3.address + ) + expect(token1Supported).to.equal(true) + expect(token2Supported).to.equal(true) + expect(token3Supported).to.equal(true) + + expect(await stakingToken.balanceOf(registry.address)).to.equal( + SUPPORT_COST * 3 + ) + }) + + it('support cost is always returned for every token removed', async () => { + await registry + .connect(account1) + .addTokens([token1.address, token2.address, token3.address]) + + await expect( + registry + .connect(account1) + .removeTokens([token1.address, token2.address, token3.address]) + ) + .to.emit(registry, 'RemoveTokens') + .withArgs(account1.address, [ + token1.address, + token2.address, + token3.address, + ]) + + const tokens = await registry.getTokensForStaker(account1.address) + expect(tokens.length).to.equal(0) + + const token1Stakers = await registry.getStakersForToken(token1.address) + const token2Stakers = await registry.getStakersForToken(token2.address) + const token3Stakers = await registry.getStakersForToken(token3.address) + expect(token1Stakers.length).to.equal(0) + expect(token2Stakers.length).to.equal(0) + expect(token3Stakers.length).to.equal(0) + + const token1Supported = await registry.supportsToken( + account1.address, + token1.address + ) + const token2Supported = await registry.supportsToken( + account1.address, + token2.address + ) + const token3Supported = await registry.supportsToken( + account1.address, + token3.address + ) + expect(token1Supported).to.equal(false) + expect(token2Supported).to.equal(false) + expect(token3Supported).to.equal(false) + + expect(await stakingToken.balanceOf(registry.address)).to.equal(0) + }) +}) diff --git a/source/staking/README.md b/source/staking/README.md index 0f7e3356b..5711d6e38 100644 --- a/source/staking/README.md +++ b/source/staking/README.md @@ -28,7 +28,7 @@ Environment variables are set in an `.env` file in the repository root. | `yarn compile` | Compile all contracts to `build` folder | | `yarn coverage` | Report test coverage | | `yarn test` | Run all tests in `test` folder | -| `yarn test:unit` | Run unit tests in `test` folder | +| `yarn test:ci` | Run ci tests in `test` folder | | `yarn deploy` | Deploy on a network using --network flag | | `yarn verify` | Verify on a network using --network flag | diff --git a/source/staking/package.json b/source/staking/package.json index fffc42793..365bec8ce 100644 --- a/source/staking/package.json +++ b/source/staking/package.json @@ -20,7 +20,7 @@ "typechain": "tsc -b", "coverage": "hardhat coverage", "test": "hardhat test", - "test:unit": "hardhat test ./test/Staking.js", + "test:ci": "hardhat test", "deploy": "hardhat run ./scripts/deploy.js", "verify": "hardhat run ./scripts/verify.js" }, diff --git a/source/staking/scripts/deploy.js b/source/staking/scripts/deploy.js index 98a4ef40e..ad7c0d25f 100644 --- a/source/staking/scripts/deploy.js +++ b/source/staking/scripts/deploy.js @@ -2,7 +2,11 @@ const fs = require('fs') const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') -const { chainNames, stakingTokenAddresses } = require('@airswap/constants') +const { + chainNames, + chainLabels, + stakingTokenAddresses, +} = require('@airswap/constants') const { getReceiptUrl } = require('@airswap/utils') const stakingDeploys = require('../deploys.js') @@ -56,7 +60,7 @@ async function main() { console.log('Updated deploys.js') console.log( - `\nVerify with "yarn verify --network ${chainNames[ + `\nVerify with "yarn verify --network ${chainLabels[ chainId ].toLowerCase()}"\n` ) diff --git a/source/staking/test/Staking.js b/source/staking/test/Staking.js index 05a97091e..642fa2182 100644 --- a/source/staking/test/Staking.js +++ b/source/staking/test/Staking.js @@ -100,7 +100,7 @@ describe('Staking Unit', () => { await expect( staking.connect(deployer).setDuration(DEFAULTDURATION) - ).to.be.revertedWith('Timelocked()') + ).to.be.revertedWith('Timelocked') }) it('owner can set unstaking duration', async () => { @@ -121,9 +121,9 @@ describe('Staking Unit', () => { }) it('owner cannot set timelock to be less than minimum delay', async () => { - await expect( - staking.connect(deployer).scheduleDurationChange(0) - ).to.be.revertedWith('DelayInvalid(0)') + await expect(staking.connect(deployer).scheduleDurationChange(0)) + .to.be.revertedWith('DelayInvalid') + .withArgs(0) }) it('owner cannot reschedule timelock duration change', async () => { @@ -133,7 +133,7 @@ describe('Staking Unit', () => { await expect( staking.connect(deployer).scheduleDurationChange(DEFAULTDELAY) - ).to.be.revertedWith('TimelockActive()') + ).to.be.revertedWith('TimelockActive') }) it('Owner cannot set unstaking duration to zero', async () => { @@ -143,9 +143,9 @@ describe('Staking Unit', () => { await ethers.provider.send('evm_increaseTime', [10]) await ethers.provider.send('evm_mine') - await expect(staking.connect(deployer).setDuration(0)).to.be.revertedWith( - 'DurationInvalid(0)' - ) + await expect(staking.connect(deployer).setDuration(0)) + .to.be.revertedWith('DurationInvalid') + .withArgs(0) }) it('Owner cannot set unstaking duration with canceled timelock', async () => { @@ -162,7 +162,7 @@ describe('Staking Unit', () => { await expect( staking.connect(deployer).setDuration(DEFAULTDURATION * 2) - ).to.be.revertedWith('TimelockInactive()') + ).to.be.revertedWith('TimelockInactive') }) it('Non-owner cannot cancel a duration change', async () => { @@ -174,7 +174,7 @@ describe('Staking Unit', () => { it('Owner cannot cancel timelock before it is set', async () => { expect( staking.connect(deployer).cancelDurationChange() - ).to.be.revertedWith('TimelockInactive()') + ).to.be.revertedWith('TimelockInactive') }) }) @@ -210,17 +210,17 @@ describe('Staking Unit', () => { }) it('unsuccessful staking when amount is 0', async () => { - await expect(staking.connect(account1).stake('0')).to.be.revertedWith( - 'AmountInvalid(0)' - ) + await expect(staking.connect(account1).stake('0')) + .to.be.revertedWith('AmountInvalid') + .withArgs(0) }) it('unsuccessful extend stake when amount is 0', async () => { await token.mock.transferFrom.returns(true) await staking.connect(account1).stake('100') - await expect(staking.connect(account1).stake('0')).to.be.revertedWith( - 'AmountInvalid(0)' - ) + await expect(staking.connect(account1).stake('0')) + .to.be.revertedWith('AmountInvalid') + .withArgs(0) }) it('successful extend stake when stake has been made', async () => { @@ -269,9 +269,9 @@ describe('Staking Unit', () => { }) it('unsuccessful stakeFor when user staking for with an amount of 0', async () => { - await expect( - staking.connect(account1).stakeFor(account2.address, '0') - ).to.be.revertedWith('AmountInvalid(0)') + await expect(staking.connect(account1).stakeFor(account2.address, '0')) + .to.be.revertedWith('AmountInvalid') + .withArgs(0) }) it('successful stakeFor when existing stake is not fully unstakeable', async () => { @@ -317,9 +317,9 @@ describe('Staking Unit', () => { const block = await ethers.provider.getBlock() await ethers.provider.send('evm_mine', [block['timestamp'] + 10]) - await expect(staking.connect(account1).unstake('12')).to.be.revertedWith( - 'AmountInvalid(12)' - ) + await expect(staking.connect(account1).unstake('12')) + .to.be.revertedWith('AmountInvalid') + .withArgs(12) }) it('successful unstaking', async () => { @@ -398,7 +398,7 @@ describe('Staking Unit', () => { await token.mock.transfer.returns(true) await staking.connect(account1).stake('100') - let block = await ethers.provider.getBlock() + const block = await ethers.provider.getBlock() await ethers.provider.send('evm_mine', [block['timestamp'] + 10]) await staking.connect(account1).unstake('10') @@ -411,7 +411,7 @@ describe('Staking Unit', () => { await token.mock.transfer.returns(true) await staking.connect(account1).stake('100') - let block = await ethers.provider.getBlock() + const block = await ethers.provider.getBlock() // With a duration of 100, increasing the timestamp by 10 will unlock 10% of the staked balance await ethers.provider.send('evm_mine', [block['timestamp'] + 10]) @@ -449,51 +449,49 @@ describe('Staking Unit', () => { it('unsuccessful delegate set if already a delegate', async () => { await staking.connect(account1).proposeDelegate(account2.address) await staking.connect(account2).setDelegate(account1.address) - await expect( - staking.connect(deployer).proposeDelegate(account2.address) - ).to.be.revertedWith(`DelegateTaken("${account2.address}")`) + await expect(staking.connect(deployer).proposeDelegate(account2.address)) + .to.be.revertedWith(`DelegateTaken`) + .withArgs(account2.address) }) it('unsuccessful delegate proposed if already delegating', async () => { await staking.connect(account1).proposeDelegate(account2.address) await staking.connect(account2).setDelegate(account1.address) - await expect( - staking.connect(account1).proposeDelegate(deployer.address) - ).to.be.revertedWith( - `SenderHasDelegate("${account1.address}", "${deployer.address}")` - ) + await expect(staking.connect(account1).proposeDelegate(deployer.address)) + .to.be.revertedWith(`SenderHasDelegate`) + .withArgs(account1.address, deployer.address) }) it('unsuccessful delegate set if already delegating', async () => { await staking.connect(account1).proposeDelegate(account2.address) await staking.connect(deployer).proposeDelegate(account2.address) await staking.connect(account2).setDelegate(account1.address) - await expect( - staking.connect(account2).setDelegate(deployer.address) - ).to.be.revertedWith(`DelegateTaken("${deployer.address}")`) + await expect(staking.connect(account2).setDelegate(deployer.address)) + .to.be.revertedWith(`DelegateTaken`) + .withArgs(deployer.address) }) it('unsuccessful delegate set if delegate already staking', async () => { await token.mock.transferFrom.returns(true) await staking.connect(account2).stake('100') - await expect( - staking.connect(account1).proposeDelegate(account2.address) - ).to.be.revertedWith(`DelegateStaked("${account2.address}")`) + await expect(staking.connect(account1).proposeDelegate(account2.address)) + .to.be.revertedWith(`DelegateStaked`) + .withArgs(account2.address) }) it('unsuccessful delegate set if delegate stakes after proposal', async () => { await token.mock.transferFrom.returns(true) staking.connect(account1).proposeDelegate(account2.address) await staking.connect(account2).stake('100') - await expect( - staking.connect(account2).setDelegate(account1.address) - ).to.be.revertedWith(`DelegateStaked("${account1.address}")`) + await expect(staking.connect(account2).setDelegate(account1.address)) + .to.be.revertedWith(`DelegateStaked`) + .withArgs(account1.address) }) it('unsuccessful delegate set if not proposed', async () => { - await expect( - staking.connect(account2).setDelegate(account1.address) - ).to.be.revertedWith(`DelegateNotProposed("${account1.address}")`) + await expect(staking.connect(account2).setDelegate(account1.address)) + .to.be.revertedWith(`DelegateNotProposed`) + .withArgs(account1.address) }) it('delegate can be removed', async () => { @@ -510,9 +508,9 @@ describe('Staking Unit', () => { }) it('unsuccessful delegate removed if not set as delegate', async () => { - await expect( - staking.connect(account1).unsetDelegate(account2.address) - ).to.be.revertedWith(`DelegateNotSet("${account2.address}")`) + await expect(staking.connect(account1).unsetDelegate(account2.address)) + .to.be.revertedWith(`DelegateNotSet`) + .withArgs(account2.address) }) it('successful staking with delegate', async () => { diff --git a/source/swap-erc20/README.md b/source/swap-erc20/README.md index 78d87ff2d..37bbe12ba 100644 --- a/source/swap-erc20/README.md +++ b/source/swap-erc20/README.md @@ -28,7 +28,7 @@ Environment variables are set in an `.env` file in the repository root. | `yarn compile` | Compile all contracts to `build` folder | | `yarn coverage` | Report test coverage | | `yarn test` | Run all tests in `test` folder | -| `yarn test:unit` | Run unit tests in `test` folder | +| `yarn test:ci` | Run ci tests in `test` folder | | `yarn deploy` | Deploy on a network using --network flag | | `yarn verify` | Verify on a network using --network flag | diff --git a/source/swap-erc20/contracts/SwapERC20.sol b/source/swap-erc20/contracts/SwapERC20.sol index e700486c2..dc39ac2b4 100644 --- a/source/swap-erc20/contracts/SwapERC20.sol +++ b/source/swap-erc20/contracts/SwapERC20.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.17; -import "@openzeppelin/contracts/access/Ownable2Step.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/cryptography/EIP712.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "./interfaces/ISwapERC20.sol"; @@ -10,7 +10,7 @@ import "./interfaces/ISwapERC20.sol"; * @title AirSwap: Atomic ERC20 Token Swap * @notice https://www.airswap.io/ */ -contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { +contract SwapERC20 is ISwapERC20, Ownable, EIP712 { using SafeERC20 for IERC20; bytes32 public constant ORDER_TYPEHASH = @@ -23,14 +23,14 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { // Domain name and version for use in EIP712 signatures string public constant DOMAIN_NAME = "SWAP_ERC20"; - string public constant DOMAIN_VERSION = "4"; + string public constant DOMAIN_VERSION = "4.1"; uint256 public immutable DOMAIN_CHAIN_ID; bytes32 public immutable DOMAIN_SEPARATOR; uint256 public constant FEE_DIVISOR = 10000; - uint256 internal constant MAX_PERCENTAGE = 100; + uint256 internal constant MAX_MAX = 100; uint256 internal constant MAX_SCALE = 77; - uint256 internal constant MAX_ERROR_COUNT = 9; + uint256 internal constant MAX_ERROR_COUNT = 10; /** * @notice Double mapping of signers to nonce groups to nonce states @@ -45,8 +45,8 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { uint256 public protocolFee; uint256 public protocolFeeLight; address public protocolFeeWallet; - uint256 public rebateScale; - uint256 public rebateMax; + uint256 public discountScale; + uint256 public discountMax; address public staking; /** @@ -54,23 +54,23 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { * @dev Sets domain and version for EIP712 signatures * @param _protocolFee uin256 fee to be assessed on swaps * @param _protocolFeeWallet address destination for fees - * @param _rebateScale uin256 scale factor for rebate - * @param _rebateMax uint256 max rebate percentage + * @param _discountScale uin256 scale factor for discount + * @param _discountMax uint256 max discount percentage * @param _staking address staking contract address */ constructor( uint256 _protocolFee, uint256 _protocolFeeLight, address _protocolFeeWallet, - uint256 _rebateScale, - uint256 _rebateMax, + uint256 _discountScale, + uint256 _discountMax, address _staking ) EIP712(DOMAIN_NAME, DOMAIN_VERSION) { if (_protocolFee >= FEE_DIVISOR) revert InvalidFee(); if (_protocolFeeLight >= FEE_DIVISOR) revert InvalidFeeLight(); if (_protocolFeeWallet == address(0)) revert InvalidFeeWallet(); - if (_rebateScale > MAX_SCALE) revert ScaleTooHigh(); - if (_rebateMax > MAX_PERCENTAGE) revert MaxTooHigh(); + if (_discountMax > MAX_MAX) revert MaxTooHigh(); + if (_discountScale > MAX_SCALE) revert ScaleTooHigh(); if (_staking == address(0)) revert InvalidStaking(); DOMAIN_CHAIN_ID = block.chainid; @@ -79,8 +79,8 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { protocolFee = _protocolFee; protocolFeeLight = _protocolFeeLight; protocolFeeWallet = _protocolFeeWallet; - rebateScale = _rebateScale; - rebateMax = _rebateMax; + discountMax = _discountMax; + discountScale = _discountScale; staking = _staking; } @@ -111,7 +111,7 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { bytes32 r, bytes32 s ) external override { - // Ensure the order is valid for signer and sender + // Ensure the order is valid _check( nonce, expiry, @@ -136,20 +136,11 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { // Transfer token from signer to recipient IERC20(signerToken).safeTransferFrom(signerWallet, recipient, signerAmount); - // Calculate and transfer protocol fee and any rebate + // Calculate and transfer protocol fee and any discount _transferProtocolFee(signerToken, signerWallet, signerAmount); - // Emit a Swap event - emit SwapERC20( - nonce, - signerWallet, - signerToken, - signerAmount, - protocolFee, - msg.sender, - senderToken, - senderAmount - ); + // Emit event + emit SwapERC20(nonce, signerWallet); } /** @@ -204,20 +195,11 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { // Transfer token from signer to recipient IERC20(signerToken).safeTransferFrom(signerWallet, recipient, signerAmount); - // Calculate and transfer protocol fee and any rebate + // Calculate and transfer protocol fee and any discount _transferProtocolFee(signerToken, signerWallet, signerAmount); - // Emit a Swap event - emit SwapERC20( - nonce, - signerWallet, - signerToken, - signerAmount, - protocolFee, - msg.sender, - senderToken, - senderAmount - ); + // Emit event + emit SwapERC20(nonce, signerWallet); } /** @@ -245,13 +227,11 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { bytes32 r, bytes32 s ) external override { - if (DOMAIN_CHAIN_ID != block.chainid) revert ChainIdChanged(); - // Ensure the expiry is not passed if (expiry <= block.timestamp) revert OrderExpired(); // Recover the signatory from the hash and signature - (address signatory, ) = ECDSA.tryRecover( + address signatory = ecrecover( keccak256( abi.encodePacked( "\x19\x01", // EIP191: Indicates EIP712 @@ -293,37 +273,20 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { } // Transfer token from sender to signer - IERC20(senderToken).safeTransferFrom( - msg.sender, - signerWallet, - senderAmount - ); + IERC20(senderToken).transferFrom(msg.sender, signerWallet, senderAmount); - // Transfer token from signer to recipient - IERC20(signerToken).safeTransferFrom( - signerWallet, - msg.sender, - signerAmount - ); + // Transfer token from signer to sender + IERC20(signerToken).transferFrom(signerWallet, msg.sender, signerAmount); - // Transfer fee from signer to feeWallet - IERC20(signerToken).safeTransferFrom( + // Transfer protocol fee from signer to fee wallet + IERC20(signerToken).transferFrom( signerWallet, protocolFeeWallet, (signerAmount * protocolFeeLight) / FEE_DIVISOR ); - // Emit a Swap event - emit SwapERC20( - nonce, - signerWallet, - signerToken, - signerAmount, - protocolFeeLight, - msg.sender, - senderToken, - senderAmount - ); + // Emit event + emit SwapERC20(nonce, signerWallet); } /** @@ -360,25 +323,25 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { } /** - * @notice Set scale + * @notice Set max * @dev Only owner - * @param _rebateScale uint256 + * @param _discountMax uint256 */ - function setRebateScale(uint256 _rebateScale) external onlyOwner { - if (_rebateScale > MAX_SCALE) revert ScaleTooHigh(); - rebateScale = _rebateScale; - emit SetRebateScale(_rebateScale); + function setDiscountMax(uint256 _discountMax) external onlyOwner { + if (_discountMax > MAX_MAX) revert MaxTooHigh(); + discountMax = _discountMax; + emit SetDiscountMax(_discountMax); } /** - * @notice Set max + * @notice Set scale * @dev Only owner - * @param _rebateMax uint256 + * @param _discountScale uint256 */ - function setRebateMax(uint256 _rebateMax) external onlyOwner { - if (_rebateMax > MAX_PERCENTAGE) revert MaxTooHigh(); - rebateMax = _rebateMax; - emit SetRebateMax(_rebateMax); + function setDiscountScale(uint256 _discountScale) external onlyOwner { + if (_discountScale > MAX_SCALE) revert ScaleTooHigh(); + discountScale = _discountScale; + emit SetDiscountScale(_discountScale); } /** @@ -458,8 +421,14 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { bytes32 s ) public view returns (uint256, bytes32[] memory) { bytes32[] memory errors = new bytes32[](MAX_ERROR_COUNT); - OrderERC20 memory order; uint256 errCount; + + if (DOMAIN_CHAIN_ID != block.chainid) { + errors[errCount] = "ChainIdChanged"; + errCount++; + } + + OrderERC20 memory order; order.nonce = nonce; order.expiry = expiry; order.signerWallet = signerWallet; @@ -561,7 +530,7 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { } /** - * @notice Calculate output amount for an input score + * @notice Calculate discount from staking balance * @param stakingBalance uint256 * @param feeAmount uint256 */ @@ -569,8 +538,8 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { uint256 stakingBalance, uint256 feeAmount ) public view returns (uint256) { - uint256 divisor = (uint256(10) ** rebateScale) + stakingBalance; - return (rebateMax * stakingBalance * feeAmount) / divisor / 100; + uint256 divisor = (uint256(10) ** discountScale) + stakingBalance; + return (discountMax * stakingBalance * feeAmount) / divisor / MAX_MAX; } /** @@ -742,7 +711,7 @@ contract SwapERC20 is ISwapERC20, Ownable2Step, EIP712 { } /** - * @notice Calculates and transfers protocol fee and rebate + * @notice Calculates and transfers protocol fee and discount * @param sourceToken address * @param sourceWallet address * @param amount uint256 diff --git a/source/swap-erc20/contracts/interfaces/ISwapERC20.sol b/source/swap-erc20/contracts/interfaces/ISwapERC20.sol index a94793bb9..32b6cf6a4 100644 --- a/source/swap-erc20/contracts/interfaces/ISwapERC20.sol +++ b/source/swap-erc20/contracts/interfaces/ISwapERC20.sol @@ -16,24 +16,16 @@ interface ISwapERC20 { bytes32 s; } - event SwapERC20( - uint256 indexed nonce, - address indexed signerWallet, - address signerToken, - uint256 signerAmount, - uint256 protocolFee, - address indexed senderWallet, - address senderToken, - uint256 senderAmount - ); + event SwapERC20(uint256 indexed nonce, address indexed signerWallet); + event Cancel(uint256 indexed nonce, address indexed signerWallet); event Authorize(address indexed signer, address indexed signerWallet); event Revoke(address indexed signer, address indexed signerWallet); event SetProtocolFee(uint256 protocolFee); event SetProtocolFeeLight(uint256 protocolFeeLight); event SetProtocolFeeWallet(address indexed feeWallet); - event SetRebateScale(uint256 rebateScale); - event SetRebateMax(uint256 rebateMax); + event SetDiscountScale(uint256 discountScale); + event SetDiscountMax(uint256 discountMax); event SetStaking(address indexed staking); error ChainIdChanged(); diff --git a/source/swap-erc20/deploys-blocks.js b/source/swap-erc20/deploys-blocks.js index 61e216ae2..6dc364b60 100644 --- a/source/swap-erc20/deploys-blocks.js +++ b/source/swap-erc20/deploys-blocks.js @@ -1,16 +1,4 @@ module.exports = { - 1: 16776806, - 5: 8613798, - 30: 5113768, - 31: 3642941, - 56: 26260582, - 97: 27862913, - 137: 40074273, - 42161: 67890619, - 43113: 19641038, - 43114: 27131744, - 59140: 464512, - 59144: 1945, - 80001: 32858133, - 421613: 10431281, + 1: 18262981, + 5: 9775062, } diff --git a/source/swap-erc20/deploys.js b/source/swap-erc20/deploys.js index 619ee359a..af217b315 100644 --- a/source/swap-erc20/deploys.js +++ b/source/swap-erc20/deploys.js @@ -1,16 +1,4 @@ module.exports = { - 1: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', - 5: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', - 30: '0x51F372bE64F0612532F28142cECF8F204B272622', - 31: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', - 56: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', - 97: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', - 137: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', - 42161: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', - 43113: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', - 43114: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', - 59140: '0x1E92FFC1c39a0a982c462f521a135a0407b21B71', - 59144: '0xb1B586AfA8a2AaB42826Fb2Ab9896CD0c686d0F4', - 80001: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', - 421613: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', + 1: '0x0A655E762238Fee539338F433087A3B9dAdD798b', + 5: '0x1E6EBD18B5Ee1C31DcB3fc6AD23f32a35a8FF8e4', } diff --git a/source/swap-erc20/package.json b/source/swap-erc20/package.json index bed0cf3b8..36b3a5de5 100644 --- a/source/swap-erc20/package.json +++ b/source/swap-erc20/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/swap-erc20", - "version": "4.0.6", + "version": "4.1.0", "description": "AirSwap: Atomic ERC20 Token Swap", "license": "MIT", "repository": { @@ -20,7 +20,7 @@ "typechain": "tsc -b", "coverage": "hardhat coverage", "test": "hardhat test", - "test:unit": "hardhat test ./test/SwapERC20.js", + "test:ci": "hardhat test", "deploy": "hardhat run ./scripts/deploy.js", "verify": "hardhat run ./scripts/verify.js" }, @@ -28,8 +28,9 @@ "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "^4.0.10", - "@airswap/types": "^4.0.0", + "@airswap/constants": "^4.1.0", + "@airswap/staking": "4.0.3", + "@airswap/types": "^4.1.0", "@airswap/utils": "^4.0.8", "prompt-confirm": "^2.0.4" }, diff --git a/source/swap-erc20/scripts/deploy.js b/source/swap-erc20/scripts/deploy.js index 1df110839..5348ff286 100644 --- a/source/swap-erc20/scripts/deploy.js +++ b/source/swap-erc20/scripts/deploy.js @@ -1,15 +1,24 @@ /* eslint-disable no-console */ const fs = require('fs') +const prettier = require('prettier') const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') const poolDeploys = require('@airswap/pool/deploys.js') const stakingDeploys = require('@airswap/staking/deploys.js') -const { ChainIds, chainNames } = require('@airswap/constants') +const { + ChainIds, + chainLabels, + chainNames, + protocolFeeReceiverAddresses, +} = require('@airswap/constants') const { getReceiptUrl } = require('@airswap/utils') const swapERC20Deploys = require('../deploys.js') +const swapERC20Blocks = require('../deploys-blocks.js') async function main() { await run('compile') + const config = await prettier.resolveConfig('../deploys.js') + const [deployer] = await ethers.getSigners() const gasPrice = await deployer.getGasPrice() const chainId = await deployer.getChainId() @@ -21,16 +30,18 @@ async function main() { console.log(`Network: ${chainNames[chainId].toUpperCase()}`) console.log(`Gas price: ${gasPrice / 10 ** 9} gwei\n`) - const protocolFeeWallet = poolDeploys[chainId] + let protocolFeeReceiver = poolDeploys[chainId] + if (protocolFeeReceiverAddresses[chainId]) { + protocolFeeReceiver = protocolFeeReceiverAddresses[chainId] + } const stakingContract = stakingDeploys[chainId] const protocolFee = 7 const protocolFeeLight = 7 - const rebateScale = 10 - const rebateMax = 100 + const discountScale = 10 + const discountMax = 100 - console.log(`Fee recipient: ${protocolFeeWallet}`) + console.log(`Fee receiver: ${protocolFeeReceiver}`) console.log(`Staking contract: ${stakingContract}`) - console.log(`Gas price: ${gasPrice / 10 ** 9} gwei`) const prompt = new Confirm('Proceed to deploy?') if (await prompt.run()) { @@ -38,9 +49,9 @@ async function main() { const swapContract = await swapFactory.deploy( protocolFee, protocolFeeLight, - protocolFeeWallet, - rebateScale, - rebateMax, + protocolFeeReceiver, + discountScale, + discountMax, stakingContract ) console.log( @@ -48,17 +59,31 @@ async function main() { getReceiptUrl(chainId, swapContract.deployTransaction.hash) ) await swapContract.deployed() - console.log(`Deployed: ${swapContract.address}`) swapERC20Deploys[chainId] = swapContract.address fs.writeFileSync( './deploys.js', - `module.exports = ${JSON.stringify(swapERC20Deploys, null, '\t')}` + prettier.format( + `module.exports = ${JSON.stringify(swapERC20Deploys, null, '\t')}`, + { ...config, parser: 'babel' } + ) + ) + swapERC20Blocks[chainId] = ( + await swapContract.deployTransaction.wait() + ).blockNumber + fs.writeFileSync( + './deploys-blocks.js', + prettier.format( + `module.exports = ${JSON.stringify(swapERC20Blocks, null, '\t')}`, + { ...config, parser: 'babel' } + ) + ) + console.log( + `Deployed: ${swapERC20Deploys[chainId]} @ ${swapERC20Blocks[chainId]}` ) - console.log('Updated deploys.js') console.log( - `\nVerify with "yarn verify --network ${chainNames[ + `\nVerify with "yarn verify --network ${chainLabels[ chainId ].toLowerCase()}"\n` ) diff --git a/source/swap-erc20/scripts/verify.js b/source/swap-erc20/scripts/verify.js index 674d62490..82ba09930 100644 --- a/source/swap-erc20/scripts/verify.js +++ b/source/swap-erc20/scripts/verify.js @@ -2,7 +2,10 @@ const { ethers, run } = require('hardhat') const stakingDeploys = require('@airswap/staking/deploys.js') const poolDeploys = require('@airswap/pool/deploys.js') -const { chainNames } = require('@airswap/constants') +const { + chainNames, + protocolFeeReceiverAddresses, +} = require('@airswap/constants') const swapERC20Deploys = require('../deploys.js') async function main() { @@ -11,12 +14,16 @@ async function main() { console.log(`Deployer: ${deployer.address}`) const chainId = await deployer.getChainId() - const protocolFeeWallet = poolDeploys[chainId] + + let protocolFeeReceiver = poolDeploys[chainId] + if (protocolFeeReceiverAddresses[chainId]) { + protocolFeeReceiver = protocolFeeReceiverAddresses[chainId] + } const stakingContract = stakingDeploys[chainId] const protocolFee = 7 const protocolFeeLight = 7 - const rebateScale = 10 - const rebateMax = 100 + const discountScale = 10 + const discountMax = 100 console.log(`Verifying on ${chainNames[chainId].toUpperCase()}`) await run('verify:verify', { @@ -24,9 +31,9 @@ async function main() { constructorArguments: [ protocolFee, protocolFeeLight, - protocolFeeWallet, - rebateScale, - rebateMax, + protocolFeeReceiver, + discountScale, + discountMax, stakingContract, ], }) diff --git a/source/swap-erc20/test/SwapERC20.js b/source/swap-erc20/test/SwapERC20.js index a279ec2d9..4b46cd46f 100644 --- a/source/swap-erc20/test/SwapERC20.js +++ b/source/swap-erc20/test/SwapERC20.js @@ -152,7 +152,7 @@ describe('SwapERC20 Unit', () => { REBATE_MAX, staking.address ) - ).to.be.revertedWith('InvalidFeeWallet()') + ).to.be.revertedWith('InvalidFeeWallet') }) it('test invalid fee', async () => { @@ -167,7 +167,7 @@ describe('SwapERC20 Unit', () => { REBATE_MAX, staking.address ) - ).to.be.revertedWith('InvalidFee()') + ).to.be.revertedWith('InvalidFee') }) it('test invalid fee light', async () => { @@ -182,10 +182,10 @@ describe('SwapERC20 Unit', () => { REBATE_MAX, staking.address ) - ).to.be.revertedWith('InvalidFeeLight()') + ).to.be.revertedWith('InvalidFeeLight') }) - it('test invalid rebate scale', async () => { + it('test invalid discount scale', async () => { await expect( ( await ethers.getContractFactory('SwapERC20') @@ -197,10 +197,10 @@ describe('SwapERC20 Unit', () => { REBATE_MAX, staking.address ) - ).to.be.revertedWith('ScaleTooHigh()') + ).to.be.revertedWith('ScaleTooHigh') }) - it('test invalid rebate maximum', async () => { + it('test invalid discount maximum', async () => { await expect( ( await ethers.getContractFactory('SwapERC20') @@ -212,10 +212,10 @@ describe('SwapERC20 Unit', () => { REBATE_MAX + 1, staking.address ) - ).to.be.revertedWith('MaxTooHigh()') + ).to.be.revertedWith('MaxTooHigh') }) - it('test invalid rebate maximum', async () => { + it('test invalid discount maximum', async () => { await expect( ( await ethers.getContractFactory('SwapERC20') @@ -227,7 +227,7 @@ describe('SwapERC20 Unit', () => { REBATE_MAX, ADDRESS_ZERO ) - ).to.be.revertedWith('InvalidStaking()') + ).to.be.revertedWith('InvalidStaking') }) }) @@ -241,7 +241,7 @@ describe('SwapERC20 Unit', () => { it('test setProtocolFee with invalid input', async () => { await expect( swap.connect(deployer).setProtocolFee(FEE_DIVISOR) - ).to.be.revertedWith('InvalidFee()') + ).to.be.revertedWith('InvalidFee') }) it('test setProtocolFee as non-owner', async () => { await expect( @@ -256,7 +256,7 @@ describe('SwapERC20 Unit', () => { it('test setProtocolFeeLight with invalid input', async () => { await expect( swap.connect(deployer).setProtocolFeeLight(FEE_DIVISOR) - ).to.be.revertedWith('InvalidFeeLight()') + ).to.be.revertedWith('InvalidFeeLight') }) it('test setProtocolFeeLight as non-owner', async () => { await expect( @@ -268,35 +268,34 @@ describe('SwapERC20 Unit', () => { swap.connect(deployer).setProtocolFeeWallet(protocolFeeWallet.address) ).to.emit(swap, 'SetProtocolFeeWallet') }) - it('test setRebateScale', async () => { - await expect(swap.connect(deployer).setRebateScale(REBATE_SCALE)).to.emit( - swap, - 'SetRebateScale' - ) + it('test setDiscountScale', async () => { + await expect( + swap.connect(deployer).setDiscountScale(REBATE_SCALE) + ).to.emit(swap, 'SetDiscountScale') }) - it('test setRebateScale with invalid input', async () => { + it('test setDiscountScale with invalid input', async () => { await expect( - swap.connect(deployer).setRebateScale(REBATE_SCALE + 1) - ).to.be.revertedWith('ScaleTooHigh()') + swap.connect(deployer).setDiscountScale(REBATE_SCALE + 1) + ).to.be.revertedWith('ScaleTooHigh') }) - it('test setRebateScale as non-owner', async () => { + it('test setDiscountScale as non-owner', async () => { await expect( - swap.connect(anyone).setRebateScale(REBATE_SCALE) + swap.connect(anyone).setDiscountScale(REBATE_SCALE) ).to.be.revertedWith('Ownable: caller is not the owner') }) - it('test setRebateMax', async () => { + it('test setDiscountMax', async () => { await expect( - await swap.connect(deployer).setRebateMax(REBATE_MAX) - ).to.emit(swap, 'SetRebateMax') + await swap.connect(deployer).setDiscountMax(REBATE_MAX) + ).to.emit(swap, 'SetDiscountMax') }) - it('test setRebateMax with invalid input', async () => { + it('test setDiscountMax with invalid input', async () => { await expect( - swap.connect(deployer).setRebateMax(REBATE_MAX + 1) - ).to.be.revertedWith('MaxTooHigh()') + swap.connect(deployer).setDiscountMax(REBATE_MAX + 1) + ).to.be.revertedWith('MaxTooHigh') }) - it('test setRebateMax as non-owner', async () => { + it('test setDiscountMax as non-owner', async () => { await expect( - swap.connect(anyone).setRebateMax(REBATE_MAX) + swap.connect(anyone).setDiscountMax(REBATE_MAX) ).to.be.revertedWith('Ownable: caller is not the owner') }) it('test setStaking', async () => { @@ -308,7 +307,7 @@ describe('SwapERC20 Unit', () => { it('test setStaking with zero address', async () => { await expect( swap.connect(deployer).setStaking(ADDRESS_ZERO) - ).to.be.revertedWith('InvalidStaking()') + ).to.be.revertedWith('InvalidStaking') }) }) @@ -379,7 +378,7 @@ describe('SwapERC20 Unit', () => { await expect( swap.connect(sender).swap(sender.address, ...order) - ).to.be.revertedWith('SignatoryUnauthorized()') + ).to.be.revertedWith('SignatoryUnauthorized') }) it('test when signer not authorized', async () => { @@ -392,7 +391,7 @@ describe('SwapERC20 Unit', () => { await expect( swap.connect(sender).swap(sender.address, ...order) - ).to.be.revertedWith('Unauthorized()') + ).to.be.revertedWith('Unauthorized') }) it('test when order is expired', async () => { @@ -404,7 +403,7 @@ describe('SwapERC20 Unit', () => { ) await expect( swap.connect(sender).swap(sender.address, ...order) - ).to.be.revertedWith('OrderExpired()') + ).to.be.revertedWith('OrderExpired') }) it('test when nonce has already been used', async () => { @@ -415,9 +414,9 @@ describe('SwapERC20 Unit', () => { signer ) await swap.connect(sender).swap(sender.address, ...order) - await expect( - swap.connect(sender).swap(sender.address, ...order) - ).to.be.revertedWith('NonceAlreadyUsed(0)') + await expect(swap.connect(sender).swap(sender.address, ...order)) + .to.be.revertedWith('NonceAlreadyUsed') + .withArgs(0) }) it('test when nonce has been cancelled', async () => { @@ -428,9 +427,9 @@ describe('SwapERC20 Unit', () => { signer ) await swap.connect(signer).cancel([1]) - await expect( - swap.connect(sender).swap(sender.address, ...order) - ).to.be.revertedWith('NonceAlreadyUsed(1)') + await expect(swap.connect(sender).swap(sender.address, ...order)) + .to.be.revertedWith('NonceAlreadyUsed') + .withArgs(1) }) it('test invalid signature', async () => { @@ -438,7 +437,7 @@ describe('SwapERC20 Unit', () => { order[7] = '29' // Change "v" of signature await expect( swap.connect(sender).swap(sender.address, ...order) - ).to.be.revertedWith('SignatureInvalid()') + ).to.be.revertedWith('SignatureInvalid') }) it('test when signer is zero address', async () => { @@ -451,7 +450,7 @@ describe('SwapERC20 Unit', () => { await expect( swap.connect(sender).swap(sender.address, ...order) - ).to.be.revertedWith('Unauthorized()') + ).to.be.revertedWith('Unauthorized') }) }) @@ -491,7 +490,7 @@ describe('SwapERC20 Unit', () => { await expect( swap.connect(sender).swapAnySender(sender.address, ...order) - ).to.be.revertedWith('Unauthorized()') + ).to.be.revertedWith('Unauthorized') }) it('test when order is expired', async () => { @@ -503,7 +502,7 @@ describe('SwapERC20 Unit', () => { ) await expect( swap.connect(sender).swapAnySender(sender.address, ...order) - ).to.be.revertedWith('OrderExpired()') + ).to.be.revertedWith('OrderExpired') }) it('test when nonce has already been used', async () => { @@ -514,9 +513,9 @@ describe('SwapERC20 Unit', () => { signer ) await swap.connect(sender).swapAnySender(sender.address, ...order) - await expect( - swap.connect(sender).swapAnySender(sender.address, ...order) - ).to.be.revertedWith('NonceAlreadyUsed(0)') + await expect(swap.connect(sender).swapAnySender(sender.address, ...order)) + .to.be.revertedWith('NonceAlreadyUsed') + .withArgs(0) }) it('test when nonce has been cancelled', async () => { @@ -527,9 +526,9 @@ describe('SwapERC20 Unit', () => { signer ) await swap.connect(signer).cancel([1]) - await expect( - swap.connect(sender).swapAnySender(sender.address, ...order) - ).to.be.revertedWith('NonceAlreadyUsed(1)') + await expect(swap.connect(sender).swapAnySender(sender.address, ...order)) + .to.be.revertedWith('NonceAlreadyUsed') + .withArgs(1) }) it('test invalid signature', async () => { @@ -537,7 +536,7 @@ describe('SwapERC20 Unit', () => { order[7] = '29' // Change "v" of signature await expect( swap.connect(sender).swapAnySender(sender.address, ...order) - ).to.be.revertedWith('SignatureInvalid()') + ).to.be.revertedWith('SignatureInvalid') }) }) @@ -555,6 +554,7 @@ describe('SwapERC20 Unit', () => { 'SwapERC20' ) }) + it('test light swaps with authorized', async () => { const order = await createSignedOrderERC20( { @@ -587,7 +587,7 @@ describe('SwapERC20 Unit', () => { .withArgs(signer.address, anyone.address) await expect(swap.connect(sender).swapLight(...order)).to.be.revertedWith( - 'SignatoryUnauthorized()' + 'SignatoryUnauthorized' ) }) it('test when expiration has passed', async () => { @@ -600,14 +600,14 @@ describe('SwapERC20 Unit', () => { const block = await ethers.provider.getBlock() await ethers.provider.send('evm_mine', [block.timestamp + SECONDS_IN_DAY]) await expect(swap.connect(sender).swapLight(...order)).to.be.revertedWith( - 'OrderExpired()' + 'OrderExpired' ) }) it('test when signatory is invalid', async () => { const order = await createSignedOrderERC20({}, signer) order[7] = '29' // Change "v" of signature await expect(swap.connect(sender).swapLight(...order)).to.be.revertedWith( - 'SignatureInvalid()' + 'SignatureInvalid' ) }) it('test when nonce has already been used', async () => { @@ -619,9 +619,9 @@ describe('SwapERC20 Unit', () => { signer ) await swap.connect(sender).swapLight(...order) - await expect(swap.connect(sender).swapLight(...order)).to.be.revertedWith( - 'NonceAlreadyUsed(0)' - ) + await expect(swap.connect(sender).swapLight(...order)) + .to.be.revertedWith('NonceAlreadyUsed') + .withArgs(0) }) it('test when signer not authorized', async () => { const order = await createSignedOrderERC20( @@ -632,9 +632,24 @@ describe('SwapERC20 Unit', () => { anyone ) await expect(swap.connect(sender).swapLight(...order)).to.be.revertedWith( - 'Unauthorized()' + 'Unauthorized' ) }) + + it('test swaps gas consumption', async () => { + const order = await createSignedOrderERC20( + { + protocolFee: PROTOCOL_FEE_LIGHT, + }, + signer + ) + + const transaction = await swap.connect(sender).swapLight(...order) + const swapReceipt = await transaction.wait() + const swapCost = swapReceipt.gasUsed + console.log(swapCost) + expect(Number(swapCost)).to.be.lessThanOrEqual(129246) + }) }) describe('Test fees', async () => { @@ -654,7 +669,7 @@ describe('SwapERC20 Unit', () => { it('test invalid fee wallet', async () => { await expect( swap.connect(deployer).setProtocolFeeWallet(ADDRESS_ZERO) - ).to.be.revertedWith('InvalidFeeWallet()') + ).to.be.revertedWith('InvalidFeeWallet') }) it('test changing fee', async () => { @@ -687,7 +702,7 @@ describe('SwapERC20 Unit', () => { it('test invalid fee', async () => { await expect( swap.connect(deployer).setProtocolFee(FEE_DIVISOR + 1) - ).to.be.revertedWith('InvalidFee()') + ).to.be.revertedWith('InvalidFee') }) it('test when signed with incorrect fee', async () => { @@ -699,7 +714,7 @@ describe('SwapERC20 Unit', () => { ) await expect( swap.connect(sender).swap(sender.address, ...order) - ).to.be.revertedWith('Unauthorized()') + ).to.be.revertedWith('Unauthorized') }) }) @@ -727,7 +742,7 @@ describe('SwapERC20 Unit', () => { it('test authorize with zero address', async () => { await expect( swap.connect(deployer).authorize(ADDRESS_ZERO) - ).to.be.revertedWith('SignatoryInvalid()') + ).to.be.revertedWith('SignatoryInvalid') }) it('test revoke', async () => { diff --git a/source/swap-erc20/test/SwapERC20Integration.js b/source/swap-erc20/test/SwapERC20Integration.js index cd85d2a6d..2356ec378 100644 --- a/source/swap-erc20/test/SwapERC20Integration.js +++ b/source/swap-erc20/test/SwapERC20Integration.js @@ -63,24 +63,24 @@ describe('SwapERC20 Integration', () => { await ethers.getContractFactory(ERC20.abi, ERC20.bytecode) ).deploy('Staking', 'STAKE') await stakingToken.deployed() - stakingToken.mint(sender.address, 10000000000) + await stakingToken.mint(sender.address, 10000000000) staking = await ( await ethers.getContractFactory(STAKING.abi, STAKING.bytecode) - ).deploy(stakingToken.address, 'Staking', 'STAKING', 100, 100) + ).deploy('Staking', 'STAKING', stakingToken.address, 100, 100) await staking.deployed() signerToken = await ( await ethers.getContractFactory(ERC20.abi, ERC20.bytecode) ).deploy('A', 'A') await signerToken.deployed() - signerToken.mint(signer.address, 1000000) + await signerToken.mint(signer.address, 1000000) senderToken = await ( await ethers.getContractFactory(ERC20.abi, ERC20.bytecode) ).deploy('B', 'B') await senderToken.deployed() - senderToken.mint(sender.address, 1000000) + await senderToken.mint(sender.address, 1000000) swap = await ( await ethers.getContractFactory('SwapERC20') diff --git a/source/swap/README.md b/source/swap/README.md index e8d2b8016..3e92cc4f6 100644 --- a/source/swap/README.md +++ b/source/swap/README.md @@ -28,7 +28,7 @@ Environment variables are set in an `.env` file in the repository root. | `yarn compile` | Compile all contracts to `build` folder | | `yarn coverage` | Report test coverage | | `yarn test` | Run all tests in `test` folder | -| `yarn test:unit` | Run unit tests in `test` folder | +| `yarn test:ci` | Run ci tests in `test` folder | | `yarn deploy` | Deploy on a network using --network flag | | `yarn verify` | Verify on a network using --network flag | diff --git a/source/swap/package.json b/source/swap/package.json index 550957789..342761198 100644 --- a/source/swap/package.json +++ b/source/swap/package.json @@ -21,7 +21,7 @@ "typechain": "tsc -b", "coverage": "hardhat coverage", "test": "hardhat test", - "test:unit": "hardhat test", + "test:ci": "hardhat test", "deploy": "hardhat run ./scripts/deploy.js", "verify": "hardhat run ./scripts/verify.js", "deploy-adapters": "hardhat run ./scripts/deploy-adapters.js", @@ -32,8 +32,8 @@ "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "^4.0.10", - "@airswap/types": "^4.0.0", + "@airswap/constants": "^4.1.0", + "@airswap/types": "^4.1.0", "@airswap/utils": "^4.0.8", "@nomicfoundation/hardhat-network-helpers": "^1.0.7" }, diff --git a/source/swap/scripts/deploy-adapters.js b/source/swap/scripts/deploy-adapters.js index 730976662..c8be77001 100644 --- a/source/swap/scripts/deploy-adapters.js +++ b/source/swap/scripts/deploy-adapters.js @@ -2,7 +2,7 @@ const fs = require('fs') const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') -const { chainNames, ChainIds } = require('@airswap/constants') +const { chainNames, chainLabels, ChainIds } = require('@airswap/constants') const { getReceiptUrl } = require('@airswap/utils') const adapterDeploys = require('../deploys-adapters.js') @@ -44,7 +44,7 @@ async function main() { console.log('Updated deploys-adapters.js') console.log( - `\nVerify with "yarn verify-adapters --network ${chainNames[ + `\nVerify with "yarn verify-adapters --network ${chainLabels[ chainId ].toLowerCase()}"\n` ) diff --git a/source/swap/scripts/deploy.js b/source/swap/scripts/deploy.js index 395d7d429..5b93976e3 100644 --- a/source/swap/scripts/deploy.js +++ b/source/swap/scripts/deploy.js @@ -3,7 +3,12 @@ const fs = require('fs') const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') const poolDeploys = require('@airswap/pool/deploys.js') -const { chainNames, ChainIds, TokenKinds } = require('@airswap/constants') +const { + chainNames, + chainLabels, + ChainIds, + TokenKinds, +} = require('@airswap/constants') const { getReceiptUrl } = require('@airswap/utils') const swapDeploys = require('../deploys.js') const adapterDeploys = require('../deploys-adapters.js') @@ -54,7 +59,7 @@ async function main() { console.log('Updated deploys.js') console.log( - `\nVerify with "yarn verify --network ${chainNames[ + `\nVerify with "yarn verify --network ${chainLabels[ chainId ].toLowerCase()}"\n` ) diff --git a/source/swap/test/ERC20Adapter.js b/source/swap/test/ERC20Adapter.js index 0179b3f73..300a156a1 100644 --- a/source/swap/test/ERC20Adapter.js +++ b/source/swap/test/ERC20Adapter.js @@ -74,6 +74,8 @@ describe('ERC20Adapter Unit', () => { adapter .connect(anyone) .transfer(party.wallet, anyone.address, party.amount, '1', party.token) - ).to.be.revertedWith('InvalidArgument("id")') + ) + .to.be.revertedWith('InvalidArgument') + .withArgs('id') }) }) diff --git a/source/swap/test/ERC721Adapter.js b/source/swap/test/ERC721Adapter.js index 6e4e062a7..be17b4845 100644 --- a/source/swap/test/ERC721Adapter.js +++ b/source/swap/test/ERC721Adapter.js @@ -67,6 +67,8 @@ describe('ERC721Adapter Unit', () => { adapter .connect(anyone) .transfer(party.wallet, anyone.address, '1', party.id, party.token) - ).to.be.revertedWith('InvalidArgument("amount")') + ) + .to.be.revertedWith('InvalidArgument') + .withArgs('amount') }) }) diff --git a/source/swap/test/Swap.js b/source/swap/test/Swap.js index b90c3e90d..12c3b942f 100644 --- a/source/swap/test/Swap.js +++ b/source/swap/test/Swap.js @@ -105,7 +105,7 @@ describe('Swap Unit', () => { ( await ethers.getContractFactory('Swap') ).deploy([], TokenKinds.ERC20, PROTOCOL_FEE, protocolFeeWallet.address) - ).to.be.revertedWith('AdaptersInvalid()') + ).to.be.revertedWith('AdaptersInvalid') }) it('an invalid protocolFeeWallet (non-null) is rejected by constructor', async () => { @@ -113,13 +113,13 @@ describe('Swap Unit', () => { ( await ethers.getContractFactory('Swap') ).deploy([], TokenKinds.ERC20, PROTOCOL_FEE, ADDRESS_ZERO) - ).to.be.revertedWith('FeeWalletInvalid()') + ).to.be.revertedWith('FeeWalletInvalid') }) it('protocolFeeWallet can only be updated with a valid value (non-null)', async () => { await expect( swap.connect(deployer).setProtocolFeeWallet(ADDRESS_ZERO) - ).to.be.revertedWith('FeeWalletInvalid()') + ).to.be.revertedWith('FeeWalletInvalid') }) it('protocolFeeWallet can only be updated by owner', async () => { @@ -141,13 +141,13 @@ describe('Swap Unit', () => { ( await ethers.getContractFactory('Swap') ).deploy([], TokenKinds.ERC20, INVALID_FEE, protocolFeeWallet.address) - ).to.be.revertedWith('FeeInvalid()') + ).to.be.revertedWith('FeeInvalid') }) it('protocolFee can only be updated with a valid value (less than divisor)', async () => { await expect( swap.connect(deployer).setProtocolFee(INVALID_FEE) - ).to.be.revertedWith('FeeInvalid()') + ).to.be.revertedWith('FeeInvalid') }) it('protocolFee can only be updated by owner', async () => { @@ -187,7 +187,7 @@ describe('Swap Unit', () => { ) await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith('Unauthorized()') + ).to.be.revertedWith('Unauthorized') }) it('an order with a higher-than-max royalty is rejected', async () => { @@ -211,7 +211,9 @@ describe('Swap Unit', () => { ) await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith(`RoyaltyExceedsMax(${Number(MAX_ROYALTY) + 1}`) + ) + .to.be.revertedWith(`RoyaltyExceedsMax`) + .withArgs(Number(MAX_ROYALTY) + 1) }) it('an order with a royalty equal to max is accepted', async () => { @@ -305,7 +307,9 @@ describe('Swap Unit', () => { ).to.equal(true) await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith(`NonceAlreadyUsed(${order.nonce})`) + ) + .to.be.revertedWith(`NonceAlreadyUsed`) + .withArgs(Number(order.nonce)) }) it('an order with an already canceled nonce is rejected', async () => { @@ -316,7 +320,9 @@ describe('Swap Unit', () => { ) await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith(`NonceAlreadyUsed(${order.nonce})`) + ) + .to.be.revertedWith(`NonceAlreadyUsed`) + .withArgs(Number(order.nonce)) }) it('an order signatory can cancel up to a minimum nonce', async () => { @@ -347,7 +353,7 @@ describe('Swap Unit', () => { signer ) ) - ).to.be.revertedWith('OrderExpired()') + ).to.be.revertedWith('OrderExpired') }) it('an order with an invalid expiry (before current block timestamp) is rejected', async () => { @@ -364,7 +370,7 @@ describe('Swap Unit', () => { signer ) ) - ).to.be.revertedWith('OrderExpired()') + ).to.be.revertedWith('OrderExpired') }) }) @@ -381,7 +387,7 @@ describe('Swap Unit', () => { order.v = 1 await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith('SignatureInvalid()') + ).to.be.revertedWith('SignatureInvalid') }) it('a signer may authorize another signatory to sign orders on its behalf', async () => { @@ -405,7 +411,7 @@ describe('Swap Unit', () => { it('a signer may not authorize a signatory with null address', async () => { await expect( swap.connect(signer).authorize(ADDRESS_ZERO) - ).to.be.revertedWith('SignatoryInvalid()') + ).to.be.revertedWith('SignatoryInvalid') }) it('a signer may only authorize one (1) other signatory at a time', async () => { @@ -427,7 +433,7 @@ describe('Swap Unit', () => { ) await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith('SignatoryUnauthorized()') + ).to.be.revertedWith('SignatoryUnauthorized') }) it('if set, order signatory must be authorized signatory', async () => { @@ -445,7 +451,7 @@ describe('Swap Unit', () => { ) await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith('SignatoryUnauthorized()') + ).to.be.revertedWith('SignatoryUnauthorized') }) it('a signer may revoke an authorized signatory', async () => { @@ -464,7 +470,7 @@ describe('Swap Unit', () => { ) await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith('Unauthorized()') + ).to.be.revertedWith('Unauthorized') }) it('a sender may not take an order specified for another sender', async () => { @@ -481,7 +487,7 @@ describe('Swap Unit', () => { ) await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith('SenderInvalid()') + ).to.be.revertedWith('SenderInvalid') }) it('a sender may take an order not specified for another sender (public order)', async () => { @@ -521,7 +527,7 @@ describe('Swap Unit', () => { ) await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith('AffiliateAmountInvalid()') + ).to.be.revertedWith('AffiliateAmountInvalid') }) it('an order with an invalid kind is rejected', async () => { @@ -549,7 +555,7 @@ describe('Swap Unit', () => { ) await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith('SenderTokenInvalid()') + ).to.be.revertedWith('SenderTokenInvalid') }) it('an order with underlying signer token issue reverts', async () => { @@ -569,9 +575,9 @@ describe('Swap Unit', () => { ) await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith( - `TransferFailed("${signer.address}", "${sender.address}")` ) + .to.be.revertedWith(`TransferFailed`) + .withArgs(signer.address, sender.address) }) }) diff --git a/source/swap/test/SwapIntegration.js b/source/swap/test/SwapIntegration.js index e9b41fc82..b52efe754 100644 --- a/source/swap/test/SwapIntegration.js +++ b/source/swap/test/SwapIntegration.js @@ -319,7 +319,7 @@ describe('Swap Integration', () => { expect(await erc721token.ownerOf('1')).to.be.equal(signer.address) await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith('SenderTokenInvalid()') + ).to.be.revertedWith('SenderTokenInvalid') expect(await erc721token.ownerOf('1')).to.be.equal(signer.address) }) @@ -351,7 +351,7 @@ describe('Swap Integration', () => { ) await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) - ).to.be.revertedWith('SenderTokenInvalid()') + ).to.be.revertedWith('SenderTokenInvalid') }) }) diff --git a/source/wrapper/README.md b/source/wrapper/README.md index 7b4fe8f74..868f01dce 100644 --- a/source/wrapper/README.md +++ b/source/wrapper/README.md @@ -28,7 +28,7 @@ Environment variables are set in an `.env` file in the repository root. | `yarn compile` | Compile all contracts to `build` folder | | `yarn coverage` | Report test coverage | | `yarn test` | Run all tests in `test` folder | -| `yarn test:unit` | Run unit tests in `test` folder | +| `yarn test:ci` | Run ci tests in `test` folder | | `yarn deploy` | Deploy on a network using --network flag | | `yarn verify` | Verify on a network using --network flag | diff --git a/source/wrapper/deploys-blocks.js b/source/wrapper/deploys-blocks.js index b8e957243..3f5f228ec 100644 --- a/source/wrapper/deploys-blocks.js +++ b/source/wrapper/deploys-blocks.js @@ -1,5 +1,5 @@ module.exports = { - 1: 16776818, + 1: 18263024, 5: 8613803, 30: 5113775, 31: 3642943, diff --git a/source/wrapper/deploys.js b/source/wrapper/deploys.js index 1183961dc..d6d7135a8 100644 --- a/source/wrapper/deploys.js +++ b/source/wrapper/deploys.js @@ -1,5 +1,5 @@ module.exports = { - 1: '0x99568Ce6c9901097150403B7629CF426B859BC22', + 1: '0x600ECFFE21cE7D047F3462c2A30E1cA3599dF1A5', 5: '0x99568Ce6c9901097150403B7629CF426B859BC22', 30: '0x66bb3d0909FCAEB4316D57981e7BBBB31F502858', 31: '0x99568Ce6c9901097150403B7629CF426B859BC22', diff --git a/source/wrapper/package.json b/source/wrapper/package.json index 36b14ca81..93b5aff78 100644 --- a/source/wrapper/package.json +++ b/source/wrapper/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/wrapper", - "version": "4.0.8", + "version": "4.1.0-beta.0", "description": "AirSwap: Wrap and Unwrap Native Tokens", "license": "MIT", "repository": { @@ -22,18 +22,18 @@ "typechain": "tsc -b", "coverage": "hardhat coverage", "test": "hardhat test", - "test:unit": "hardhat test ./test/Wrapper.js", + "test:ci": "hardhat", "deploy": "hardhat run ./scripts/deploy.js", "verify": "hardhat run ./scripts/verify.js" }, "dependencies": { - "@airswap/swap-erc20": "4.0.6", + "@airswap/swap-erc20": "4.1.0", "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "^4.0.10", + "@airswap/constants": "^4.1.0", "@airswap/utils": "^4.0.8", - "@airswap/types": "^4.0.0", + "@airswap/types": "^4.1.0", "@uniswap/v2-periphery": "^1.1.0-beta.0", "prompt-confirm": "^2.0.4" }, diff --git a/source/wrapper/scripts/deploy.js b/source/wrapper/scripts/deploy.js index d66930141..c250a12a3 100644 --- a/source/wrapper/scripts/deploy.js +++ b/source/wrapper/scripts/deploy.js @@ -4,12 +4,15 @@ const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') const swapDeploys = require('@airswap/swap-erc20/deploys.js') const wrapperDeploys = require('../deploys.js') +const wrapperBlocks = require('../deploys-blocks.js') const wethDeploys = require('../deploys-weth.js') -const { ChainIds, chainNames } = require('@airswap/constants') +const { ChainIds, chainNames, chainLabels } = require('@airswap/constants') const { getReceiptUrl } = require('@airswap/utils') async function main() { await run('compile') + const config = await prettier.resolveConfig('../deploys.js') + const [deployer] = await ethers.getSigners() const gasPrice = await deployer.getGasPrice() const chainId = await deployer.getChainId() @@ -21,18 +24,17 @@ async function main() { console.log(`Network: ${chainNames[chainId].toUpperCase()}`) console.log(`Gas price: ${gasPrice / 10 ** 9} gwei\n`) - const swapAddress = swapDeploys[chainId] + const swapERC20Address = swapDeploys[chainId] const wrappedTokenAddress = wethDeploys[chainId] - console.log(`Swap: ${swapAddress}`) + console.log(`SwapERC20: ${swapERC20Address}`) console.log(`Wrapped: ${wrappedTokenAddress}`) - console.log(`Gas price: ${gasPrice / 10 ** 9} gwei`) const prompt = new Confirm('Proceed to deploy?') if (await prompt.run()) { const wrapperFactory = await ethers.getContractFactory('Wrapper') const wrapperContract = await wrapperFactory.deploy( - swapAddress, + swapERC20Address, wrappedTokenAddress ) console.log( @@ -40,17 +42,31 @@ async function main() { getReceiptUrl(chainId, wrapperContract.deployTransaction.hash) ) await wrapperContract.deployed() - console.log(`Deployed: ${wrapperContract.address}`) wrapperDeploys[chainId] = wrapperContract.address fs.writeFileSync( './deploys.js', - `module.exports = ${JSON.stringify(wrapperDeploys, null, '\t')}` + prettier.format( + `module.exports = ${JSON.stringify(wrapperDeploys, null, '\t')}`, + { ...config, parser: 'babel' } + ) + ) + wrapperBlocks[chainId] = ( + await wrapperContract.deployTransaction.wait() + ).blockNumber + fs.writeFileSync( + './deploys-blocks.js', + prettier.format( + `module.exports = ${JSON.stringify(wrapperBlocks, null, '\t')}`, + { ...config, parser: 'babel' } + ) + ) + console.log( + `Deployed: ${wrapperDeploys[chainId]} @ ${wrapperBlocks[chainId]}` ) - console.log('Updated deploys.js') console.log( - `\nVerify with "yarn verify --network ${chainNames[ + `\nVerify with "yarn verify --network ${chainLabels[ chainId ].toLowerCase()}"\n` ) diff --git a/source/wrapper/scripts/verify.js b/source/wrapper/scripts/verify.js index 5305805cf..594118571 100644 --- a/source/wrapper/scripts/verify.js +++ b/source/wrapper/scripts/verify.js @@ -1,6 +1,6 @@ /* eslint-disable no-console */ const { ethers, run } = require('hardhat') -const swapDeploys = require('@airswap/swap-erc20/deploys.js') +const swapERC20Deploys = require('@airswap/swap-erc20/deploys.js') const wrapperDeploys = require('../deploys.js') const wethDeploys = require('../deploys-weth.js') const { chainNames } = require('@airswap/constants') @@ -11,13 +11,13 @@ async function main() { console.log(`Deployer: ${deployer.address}`) const chainId = await deployer.getChainId() - const swapAddress = swapDeploys[chainId] + const swapERC20Address = swapERC20Deploys[chainId] const wrappedTokenAddress = wethDeploys[chainId] console.log(`Verifying on ${chainNames[chainId].toUpperCase()}`) await run('verify:verify', { address: wrapperDeploys[chainId], - constructorArguments: [swapAddress, wrappedTokenAddress], + constructorArguments: [swapERC20Address, wrappedTokenAddress], }) } diff --git a/source/wrapper/test/Wrapper.js b/source/wrapper/test/Wrapper.js index ba567bd55..9c6b10180 100644 --- a/source/wrapper/test/Wrapper.js +++ b/source/wrapper/test/Wrapper.js @@ -127,7 +127,7 @@ describe('Wrapper Unit Tests', () => { it('test changing swap-erc20 contract by non-owner', async () => { await expect( wrapper.connect(sender).setSwapERC20Contract(swapERC20.address) - ).to.be.revertedWith('owner') + ).to.be.revertedWith('Ownable: caller is not the owner') }) it('test changing swap-erc20 contract', async () => { await wrapper.connect(deployer).setSwapERC20Contract(anyone.address) diff --git a/tools/constants/index.ts b/tools/constants/index.ts index 84058f78c..45894ca45 100644 --- a/tools/constants/index.ts +++ b/tools/constants/index.ts @@ -1,9 +1,7 @@ export const DOMAIN_NAME_SWAP_ERC20 = 'SWAP_ERC20' -export const DOMAIN_VERSION_SWAP_ERC20 = '4' +export const DOMAIN_VERSION_SWAP_ERC20 = '4.1' export const DOMAIN_NAME_SWAP = 'SWAP' export const DOMAIN_VERSION_SWAP = '4' -export const DOMAIN_NAME_POOL = 'POOL' -export const DOMAIN_VERSION_POOL = '1' export const ADDRESS_ZERO = '0x0000000000000000000000000000000000000000' export const MAX_APPROVAL_AMOUNT = '90071992547409910000000000' export const MIN_CONFIRMATIONS = 2 @@ -48,6 +46,24 @@ export const testnets: number[] = [ ChainIds.LINEAGOERLI, ] +export const chainLabels: Record = { + [ChainIds.MAINNET]: 'MAINNET', + [ChainIds.GOERLI]: 'GOERLI', + [ChainIds.RSK]: 'RSK', + [ChainIds.RSKTESTNET]: 'RSKTESTNET', + [ChainIds.BSC]: 'BSC', + [ChainIds.BSCTESTNET]: 'BSCTESTNET', + [ChainIds.POLYGON]: 'POLYGON', + [ChainIds.HARDHAT]: 'HARDHAT', + [ChainIds.ARBITRUM]: 'ARBITRUM', + [ChainIds.FUJI]: 'FUJI', + [ChainIds.AVALANCHE]: 'AVALANCHE', + [ChainIds.LINEAGOERLI]: 'LINEAGOERLI', + [ChainIds.LINEA]: 'LINEA', + [ChainIds.MUMBAI]: 'MUMBAI', + [ChainIds.ARBITRUMGOERLI]: 'ARBITRUMGOERLI', +} + export const chainNames: Record = { [ChainIds.MAINNET]: 'Ethereum', [ChainIds.GOERLI]: 'Goerli', @@ -152,13 +168,17 @@ export const ownerAddresses: Record = { [ChainIds.LINEA]: '0xed669F5fe2A37Ef204DB178c7a982717B9f03Ec2', } +export const protocolFeeReceiverAddresses: Record = { + [ChainIds.MAINNET]: '0xaD30f7EEBD9Bd5150a256F47DA41d4403033CdF0', +} + export enum Protocols { Discovery = '0xf3713ede', - RequestForQuoteERC20 = '0x57bb3622', + RequestForQuoteERC20 = '0x02ad05d3', PricingERC20 = '0x8beb22c2', - LastLookERC20 = '0x2ca4c820', - StorageERC20 = '0x3fb72f4e', - Storage = '0x9c6974be', + LastLookERC20 = '0xb2b78b33', + StorageERC20 = '0xfdd616a7', + Storage = '0xd8b0f31f', } export const protocolInterfaces: Record = { @@ -169,25 +189,27 @@ export const protocolInterfaces: Record = { 'function setTokens(array(string tokenContractAddress))', ], [Protocols.RequestForQuoteERC20]: [ - 'function getSignerSideOrderERC20(string chainId,string swapContractAddress,string senderAmount,string signerToken,string senderToken,string senderWallet,string proxyingFor)', - 'function getSenderSideOrderERC20(string chainId,string swapContractAddress,string signerAmount,string signerToken,string senderToken,string senderWallet,string proxyingFor)', - 'function getPricingERC20(array((string baseToken,string quoteToken)))', - 'function getAllPricingERC20()', + 'function getSignerSideOrderERC20(string chainId,string swapContractAddress,string senderAmount,string signerToken,string senderToken,string senderWallet,string minExpiry,string proxyingFor)', + 'function getSenderSideOrderERC20(string chainId,string swapContractAddress,string signerAmount,string signerToken,string senderToken,string senderWallet,string minExpiry,string proxyingFor)', + 'function getPricingERC20(array((string baseToken,string quoteToken)),string minExpiry)', + 'function getAllPricingERC20(string minExpiry)', ], - [Protocols.LastLookERC20]: [ + [Protocols.PricingERC20]: [ 'function subscribePricingERC20(array((string baseToken,string quoteToken)))', 'function subscribeAllPricingERC20()', 'function unsubscribePricingERC20(array((string baseToken,string quoteToken)))', 'function unsubscribeAllPricingERC20()', 'function setPricingERC20(array(string baseToken,string quoteToken,string minimum,array(array((string level,string price))),array(array((string level,string price)))))', - 'function considerOrderERC20(string nonce,string expiry,string signerWallet,string signerToken,string signerAmount,string senderToken,string senderAmount,string v,string r,string s)', + ], + [Protocols.LastLookERC20]: [ + 'function considerOrderERC20(string chainId,string swapContractAddress,string nonce,string expiry,string signerWallet,string signerToken,string signerAmount,string senderToken,string senderAmount,string v,string r,string s)', ], [Protocols.StorageERC20]: [ - 'function addOrderERC20(string nonce,string expiry,string signerWallet,string signerToken,string signerAmount,string senderToken,string senderAmount,string v,string r,string s)', + 'function addOrderERC20(string chainId,string swapContractAddress,string nonce,string expiry,string signerWallet,string signerToken,string signerAmount,string senderToken,string senderAmount,string v,string r,string s)', 'function getOrdersERC20((string signerWallet,array(string signerToken),string signerMinAmount,string signerMaxAmount,string senderWallet,array(string senderToken),string senderMinAmount,string senderMaxAmount,string sortField,string sortOrder,string offset,string limit))', ], [Protocols.Storage]: [ - 'function addOrder(uint256 nonce,uint256 expiry,uint256 protocolFee,(address wallet,address token,bytes4 kind,uint256 id,uint256 amount),(address wallet,address token,bytes4 kind,uint256 id,uint256 amount),address affiliateWallet,uint256 affiliateAmount)', + 'function addOrder(string chainId,string swapContractAddress,uint256 nonce,uint256 expiry,uint256 protocolFee,(address wallet,address token,bytes4 kind,uint256 id,uint256 amount),(address wallet,address token,bytes4 kind,uint256 id,uint256 amount),address affiliateWallet,uint256 affiliateAmount)', 'function getOrders((string signerWallet,array(string signerToken),string signerMinAmount,string signerMaxAmount,string senderWallet,array(string senderToken),string senderMinAmount,string senderMaxAmount,string sortField,string sortOrder,string offset,string limit))', ], } diff --git a/tools/constants/package.json b/tools/constants/package.json index 14abedd35..61f6da6ee 100644 --- a/tools/constants/package.json +++ b/tools/constants/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/constants", - "version": "4.0.10", + "version": "4.1.0", "description": "AirSwap: Constants for Developers", "repository": { "type": "git", @@ -16,7 +16,9 @@ ], "scripts": { "clean": "rm -rf ./build", - "compile": "yarn clean && tsc -b" + "compile": "yarn clean && tsc -b", + "test": "TS_NODE_COMPILER_OPTIONS='{\"strict\":false}' yarn mocha -r ts-node/esm test/*.ts", + "test:ci": "yarn test" }, "publishConfig": { "access": "public" diff --git a/tools/constants/test/utils.ts b/tools/constants/test/utils.ts new file mode 100644 index 000000000..150e09eb5 --- /dev/null +++ b/tools/constants/test/utils.ts @@ -0,0 +1,14 @@ +import { expect } from 'chai' +import { protocolInterfaces } from '../index' + +import { getInterfaceId } from '@airswap/utils' + +describe('Constants', async () => { + it('InterfaceIds are correct', async () => { + for (const interfaceId in protocolInterfaces) { + expect(getInterfaceId(protocolInterfaces[interfaceId])).to.be.equal( + interfaceId + ) + } + }) +}) diff --git a/tools/libraries/README.md b/tools/libraries/README.md index 9306f9051..d7c1b5c1c 100644 --- a/tools/libraries/README.md +++ b/tools/libraries/README.md @@ -34,3 +34,4 @@ import { Indexer, Server, Swap } from '@airswap/libraries'; | `yarn` | Install dependencies | | `yarn clean` | Delete the contract `build` folder | | `yarn compile` | Compile all contracts to `build` folder | +| `yarn test` | Run all tests in the `test` folder | diff --git a/tools/libraries/package.json b/tools/libraries/package.json index 8e85c5de7..ce185cb7a 100644 --- a/tools/libraries/package.json +++ b/tools/libraries/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/libraries", - "version": "4.0.22", + "version": "4.1.0", "description": "AirSwap: Libraries for Developers", "repository": { "type": "git", @@ -22,21 +22,22 @@ "lint:fix": "yarn eslint . --ext .js,.ts --fix", "pretty:check": "prettier --check \"./**/*.ts\" \"./**/*.js\"", "pretty:fix": "prettier --write \"./**/*.ts\" \"./**/*.js\"", - "test": "yarn test:unit", - "test:unit": "TS_NODE_COMPILER_OPTIONS='{\"strict\":false}' yarn mocha -r ts-node/esm test/*.ts" + "test": "TS_NODE_COMPILER_OPTIONS='{\"strict\":false}' yarn mocha -r ts-node/esm test/*.ts", + "test:ci": "yarn test" }, "dependencies": { "@airswap/balances": "4.0.2", - "@airswap/constants": "4.0.10", + "@airswap/constants": "4.1.0", "@airswap/jsonrpc-client-websocket": "0.0.1", - "@airswap/registry": "4.0.3", + "@airswap/registry": "4.1.0", "@airswap/maker-registry": "4.0.4", + "@airswap/pool": "4.1.0", "@airswap/staking": "4.0.3", "@airswap/swap": "4.0.4", - "@airswap/swap-erc20": "4.0.6", - "@airswap/types": "4.0.6", + "@airswap/swap-erc20": "4.1.0", + "@airswap/types": "4.1.0", "@airswap/utils": "4.0.8", - "@airswap/wrapper": "4.0.8", + "@airswap/wrapper": "4.1.0-beta.0", "browser-or-node": "^2.1.1", "ethers": "^5.6.9", "jayson": "^4.0.0", diff --git a/tools/libraries/src/Contracts.ts b/tools/libraries/src/Contracts.ts index 3662f5c4f..7800f046c 100644 --- a/tools/libraries/src/Contracts.ts +++ b/tools/libraries/src/Contracts.ts @@ -1,18 +1,21 @@ import { ethers } from 'ethers' import { ChainIds } from '@airswap/constants' +import { Pool__factory } from '@airswap/pool/typechain/factories/contracts' import { Staking__factory } from '@airswap/staking/typechain/factories/contracts' import { Swap__factory } from '@airswap/swap/typechain/factories/contracts' import { SwapERC20__factory } from '@airswap/swap-erc20/typechain/factories/contracts' import { Wrapper__factory } from '@airswap/wrapper/typechain/factories/contracts' import { WETH9__factory } from '@airswap/wrapper/typechain/factories/contracts' +import poolDeploys from '@airswap/pool/deploys.js' import stakingDeploys from '@airswap/staking/deploys.js' import swapERC20Deploys from '@airswap/swap-erc20/deploys.js' import swapDeploys from '@airswap/swap/deploys.js' import wrapperDeploys from '@airswap/wrapper/deploys.js' import wethDeploys from '@airswap/wrapper/deploys-weth.js' +import poolBlocks from '@airswap/pool/deploys-blocks.js' import stakingBlocks from '@airswap/staking/deploys-blocks.js' import swapERC20Blocks from '@airswap/swap-erc20/deploys-blocks.js' import wrapperBlocks from '@airswap/wrapper/deploys-blocks.js' @@ -54,6 +57,7 @@ export class Contract { } } +export const Pool = new Contract('Pool', poolDeploys, poolBlocks, Pool__factory) export const Staking = new Contract( 'Staking', stakingDeploys, diff --git a/tools/libraries/src/RegistryV4.ts b/tools/libraries/src/RegistryV4.ts index 7d8bec427..e7f607675 100644 --- a/tools/libraries/src/RegistryV4.ts +++ b/tools/libraries/src/RegistryV4.ts @@ -2,13 +2,14 @@ import { ethers } from 'ethers' import { ServerOptions } from '@airswap/types' import { Registry__factory } from '@airswap/registry/typechain/factories/contracts' import registryDeploys from '@airswap/registry/deploys.js' +import registryBlocks from '@airswap/registry/deploys-blocks.js' import { Server } from './Server' import { Contract, SwapERC20 } from './Contracts' class ServerRegistry extends Contract { public constructor() { - super('Registry', registryDeploys, {}, Registry__factory) + super('Registry', registryDeploys, registryBlocks, Registry__factory) } public async getServerURLs( providerOrSigner: ethers.providers.Provider | ethers.Signer, diff --git a/tools/merkle/LICENSE b/tools/merkle/LICENSE new file mode 100644 index 000000000..25fb212c5 --- /dev/null +++ b/tools/merkle/LICENSE @@ -0,0 +1,19 @@ +Copyright 2023 AirSwap + +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/tools/merkle/README.md b/tools/merkle/README.md new file mode 100644 index 000000000..067be1a04 --- /dev/null +++ b/tools/merkle/README.md @@ -0,0 +1,37 @@ +# Merkle + +Merkle Tree Utilities + +[![Discord](https://img.shields.io/discord/590643190281928738.svg)](https://discord.gg/ecQbV7H) +[![License](https://img.shields.io/badge/License-MIT-blue)](https://opensource.org/licenses/MIT) +![Twitter Follow](https://img.shields.io/twitter/follow/airswap?style=social) + +## Resources + +- About → https://about.airswap.io/ +- Website → https://www.airswap.io/ +- Twitter → https://twitter.com/airswap +- Chat → https://chat.airswap.io/ + +## Usage + +Add the package to your project: + +```console +yarn add @airswap/merkle +``` + +Import into your application: + +```TypeScript +import { generateTreeFromData, generateTreeFromElements, getRoot, getProof } from '@airswap/merkle'; +``` + +## Commands + +| Command | Description | +| :------------- | :-------------------------------------- | +| `yarn` | Install dependencies | +| `yarn clean` | Delete the contract `build` folder | +| `yarn compile` | Compile all contracts to `build` folder | +| `yarn test` | Run all tests in the `test` folder | diff --git a/tools/merkle/index.ts b/tools/merkle/index.ts new file mode 100644 index 000000000..1edbc58b8 --- /dev/null +++ b/tools/merkle/index.ts @@ -0,0 +1,27 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ +export * from './src/merkle' + +import { soliditySha3 } from 'web3-utils' +import { MerkleTree } from './src/merkle' + +export function generateTreeFromElements(elements: Array): MerkleTree { + return new MerkleTree(elements) +} + +export function generateTreeFromData(data: { + [id: string]: string +}): MerkleTree { + const elements: string[] = [] + for (const idx in data) { + elements.push(soliditySha3(idx, data[idx])!) + } + return new MerkleTree(elements) +} + +export function getRoot(tree: MerkleTree): string { + return tree.getHexRoot() +} + +export function getProof(tree: MerkleTree, element: string): Array { + return tree.getHexProof(element) +} diff --git a/tools/merkle/package.json b/tools/merkle/package.json new file mode 100644 index 000000000..b45f19acb --- /dev/null +++ b/tools/merkle/package.json @@ -0,0 +1,42 @@ +{ + "name": "@airswap/merkle", + "version": "0.0.3", + "description": "Merkle Tree Tools Adapted from OpenZeppelin", + "contributors": [ + "Don Mosites" + ], + "repository": { + "type": "git", + "url": "https://github.com/airswap/airswap-protocols" + }, + "homepage": "https://github.com/airswap/airswap-protocols/tree/main/tools/merkle", + "keywords": [ + "airswap" + ], + "license": "MIT", + "main": "build/index.js", + "files": [ + "/build" + ], + "scripts": { + "clean": "rm -rf ./build", + "compile": "yarn clean && tsc -b", + "test": "TS_NODE_COMPILER_OPTIONS='{\"strict\":false}' yarn mocha -r ts-node/esm test/*.ts", + "test:ci": "yarn test" + }, + "dependencies": { + "@types/ethereumjs-util": "^6.1.0", + "ethereumjs-util": "^7.0.7", + "web3-utils": "^1.3.1" + }, + "devDependencies": { + "@types/mocha": "^9.0.0", + "chai": "^4.3.4", + "mocha": "^9.1.3", + "ts-node": "^10.4.0", + "typescript": "^4.5.2" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/tools/merkle/src/merkle.ts b/tools/merkle/src/merkle.ts new file mode 100644 index 000000000..ba309cc02 --- /dev/null +++ b/tools/merkle/src/merkle.ts @@ -0,0 +1,151 @@ +// Adapted from OpenZeppelin +// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/test/helpers/merkleTree.js + +import { keccak256, keccakFromString, bufferToHex } from 'ethereumjs-util' +import { hexToBytes } from 'web3-utils' + +// Merkle tree called with 32 byte hex values +export class MerkleTree { + public elements: any + public layers: any + public id: any + + public constructor(elements: Array) { + this.elements = elements + .filter((el) => el) + .map((el) => Buffer.from(hexToBytes(el))) + + // Sort elements + this.elements.sort(Buffer.compare) + // Deduplicate elements + this.elements = this.bufDedup(this.elements) + + // Create layers + this.layers = this.getLayers(this.elements) + } + + public getLayers(elements: Array): Array> { + if (elements.length === 0) { + return [['']] + } + + const layers: any = [] + layers.push(elements) + + // Get next layer until we reach the root + while (layers[layers.length - 1].length > 1) { + layers.push(this.getNextLayer(layers[layers.length - 1])) + } + + return layers + } + + public getNextLayer(elements: Array): Array { + return elements.reduce( + (layer: Buffer[], el: Buffer, idx: number, arr: Buffer[]) => { + if (idx % 2 === 0) { + // Hash the current element with its pair element + layer.push(this.combinedHash(el, arr[idx + 1])) + } + + return layer + }, + [] + ) + } + + public combinedHash(first: Buffer, second: Buffer): Buffer { + if (!first) { + return second + } + if (!second) { + return first + } + + return keccak256(this.sortAndConcat(first, second)) + } + + public getRoot(): Buffer { + return this.layers[this.layers.length - 1][0] + } + + public getHexRoot(): string { + return bufferToHex(this.getRoot()) + } + + public getProof(el: Buffer): Array { + let idx = this.bufIndexOf(el, this.elements) + + if (idx === -1) { + throw new Error('Element does not exist in Merkle tree') + } + + return this.layers.reduce((proof: string[], layer: any) => { + const pairElement = this.getPairElement(idx, layer) + + if (pairElement) { + proof.push(pairElement) + } + + idx = Math.floor(idx / 2) + + return proof + }, []) + } + + // external call - convert to buffer + public getHexProof(_el: string): Array { + const el = Buffer.from(hexToBytes(_el)) + + const proof = this.getProof(el) + + return this.bufArrToHexArr(proof) + } + + public getPairElement(idx: number, layer: string): string | null { + const pairIdx = idx % 2 === 0 ? idx + 1 : idx - 1 + + if (pairIdx < layer.length) { + return layer[pairIdx] + } else { + return null + } + } + + public bufIndexOf(el: Buffer | string, arr: Array): number { + let hash + + // Convert element to 32 byte hash if it is not one already + if (el.length !== 32 || !Buffer.isBuffer(el)) { + hash = keccakFromString(String(el)) + } else { + hash = el + } + + for (let i = 0; i < arr.length; i++) { + if (hash.equals(Buffer.from(arr[i]))) { + return i + } + } + + return -1 + } + + public bufDedup(elements: Array): Array { + return elements.filter((el, idx) => { + return idx === 0 || !elements[idx - 1].equals(el) + }) + } + + public bufArrToHexArr(arr: Array): Array { + if (arr.some((el) => !Buffer.isBuffer(el))) { + throw new Error('Array is not an array of buffers') + } + + return arr.map((el) => '0x' + el.toString('hex')) + } + + public sortAndConcat(...args: Array): Buffer { + return Buffer.concat([...args].sort(Buffer.compare)) + } +} diff --git a/tools/merkle/test/merkle.ts b/tools/merkle/test/merkle.ts new file mode 100644 index 000000000..f924c26c2 --- /dev/null +++ b/tools/merkle/test/merkle.ts @@ -0,0 +1,28 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ +import { expect } from 'chai' +import { soliditySha3 } from 'web3-utils' +import { generateTreeFromData, getRoot, getProof } from '../index' + +describe('Merkle', async () => { + let tree: any + const treeRoot = + '0xad519504d6845f9f2529e80a2247d751af56af868ed9f23398705a1ec1bd9fc4' + const proof = [ + '0xc361555652533965d9a3cda90060cb77c14bbaec689e062a4ca8ce8976836719', + '0xe2ad42ca8c17510e58dca1ba6f472caafa90b9fee56f679b0e000881096562f6', + ] + + it('Creates and validates tree', async () => { + tree = generateTreeFromData({ + a: '1', + b: '2', + c: '3', + }) + expect(getRoot(tree)).to.equal(treeRoot) + }) + + it('Validates proof', async () => { + const element: string = soliditySha3('a', '1')! + expect(getProof(tree, element).join()).to.equal(proof.join()) + }) +}) diff --git a/tools/merkle/tsconfig.json b/tools/merkle/tsconfig.json new file mode 100644 index 000000000..433db29c9 --- /dev/null +++ b/tools/merkle/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./build" + } +} diff --git a/tools/metadata/README.md b/tools/metadata/README.md index db253568a..9912e57d8 100644 --- a/tools/metadata/README.md +++ b/tools/metadata/README.md @@ -36,3 +36,4 @@ const { errors, tokens } = await getKnownTokens(ChainIds.MAINNET) | `yarn` | Install dependencies | | `yarn clean` | Delete the contract `build` folder | | `yarn compile` | Compile all contracts to `build` folder | +| `yarn test` | Run all tests in the `test` folder | diff --git a/tools/metadata/defaults.ts b/tools/metadata/defaults.ts index c26f0a1b8..8ac2805c5 100644 --- a/tools/metadata/defaults.ts +++ b/tools/metadata/defaults.ts @@ -25,28 +25,4 @@ export default [ symbol: 'DAI', chainId: 5, }, - /* - * Linea-Goerli Defaults - */ - { - name: 'Dai', - address: '0x8741ba6225a6bf91f9d73531a98a89807857a2b3', - decimals: 18, - symbol: 'DAI', - chainId: 59140, - }, - { - name: 'Tether USD', - address: '0x1990BC6dfe2ef605Bfc08f5A23564dB75642Ad73', - decimals: 6, - symbol: 'USDT', - chainId: 59140, - }, - { - name: 'USDC', - address: '0xf56dc6695cF1f5c364eDEbC7Dc7077ac9B586068', - decimals: 6, - symbol: 'USDC', - chainId: 59140, - }, ] as TokenInfo[] diff --git a/tools/metadata/package.json b/tools/metadata/package.json index 8430b6e1d..1dc50cec3 100644 --- a/tools/metadata/package.json +++ b/tools/metadata/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/metadata", - "version": "4.0.11", + "version": "4.0.12", "description": "AirSwap: Token Metadata for Developers", "repository": { "type": "git", @@ -20,13 +20,12 @@ "test": "TS_NODE_COMPILER_OPTIONS='{\"strict\":false}' yarn mocha -r ts-node/esm test/*.ts" }, "dependencies": { - "@airswap/constants": "^4.0.10", - "@airswap/types": "^4.0.0", - "@airswap/wrapper": "4.0.8", + "@airswap/constants": "^4.1.0", + "@airswap/types": "^4.1.0", + "@airswap/wrapper": "4.1.0-beta.0", "@openzeppelin/contracts": "^4.8.3", "@uniswap/token-lists": "^1.0.0-beta.24", "axios": "^0.21.4", - "ethereumjs-abi": "^0.6.8", "ethers": "^5.6.9", "valid-url": "^1.0.9" }, diff --git a/tools/metadata/test/metadata.ts b/tools/metadata/test/metadata.ts index ef66cca53..789ed5f3b 100644 --- a/tools/metadata/test/metadata.ts +++ b/tools/metadata/test/metadata.ts @@ -18,7 +18,7 @@ describe('Metadata: Goerli', async () => { let result: any it('fetches all known tokens', async () => { - result = await getKnownTokens(ChainIds.MAINNET) + result = await getKnownTokens(ChainIds.GOERLI) expect(result.tokens.length).to.not.equal(0) }) it('checks that ETH does not exist', async () => { diff --git a/tools/metadata/tokenlists.ts b/tools/metadata/tokenlists.ts index b7f922459..5b1f040b6 100644 --- a/tools/metadata/tokenlists.ts +++ b/tools/metadata/tokenlists.ts @@ -33,4 +33,10 @@ export default { 'https://raw.githubusercontent.com/pangolindex/tokenlists/main/ab.tokenlist.json', 'https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/joe.tokenlist.json', ], + [ChainIds.LINEAGOERLI]: [ + 'https://raw.githubusercontent.com/Consensys/linea-token-list/main/json/linea-goerli-token-shortlist.json', + ], + [ChainIds.LINEA]: [ + 'https://raw.githubusercontent.com/Consensys/linea-token-list/main/json/linea-mainnet-token-shortlist.json', + ], } as Record diff --git a/tools/types/package.json b/tools/types/package.json index a89357f79..a71edd3d2 100644 --- a/tools/types/package.json +++ b/tools/types/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/types", - "version": "4.0.6", + "version": "4.1.0", "description": "AirSwap: Types for Developers", "repository": { "type": "git", diff --git a/tools/types/src/eip712.ts b/tools/types/src/eip712.ts index 5aa0f2cfa..9a353b686 100644 --- a/tools/types/src/eip712.ts +++ b/tools/types/src/eip712.ts @@ -52,18 +52,3 @@ export const EIP712Swap = { { name: 'amount', type: 'uint256' }, ], } - -export const EIP712Claim = { - EIP712Domain: [ - { name: 'name', type: 'string' }, - { name: 'version', type: 'string' }, - { name: 'chainId', type: 'uint256' }, - { name: 'verifyingContract', type: 'address' }, - ], - Claim: [ - { name: 'nonce', type: 'uint256' }, - { name: 'expiry', type: 'uint256' }, - { name: 'participant', type: 'address' }, - { name: 'score', type: 'uint256' }, - ], -} diff --git a/tools/types/src/typescript.ts b/tools/types/src/typescript.ts index 825320a5d..0d51180be 100644 --- a/tools/types/src/typescript.ts +++ b/tools/types/src/typescript.ts @@ -103,12 +103,3 @@ export type CollectionTokenInfo = { id: number uri: string } & CollectionTokenMetadata - -export type UnsignedClaim = { - nonce: string - expiry: string - participant: string - score: string -} - -export type Claim = UnsignedClaim & Signature diff --git a/tools/utils/index.ts b/tools/utils/index.ts index 27f4f850c..90e272840 100644 --- a/tools/utils/index.ts +++ b/tools/utils/index.ts @@ -2,7 +2,6 @@ import { ethers, BigNumber as BigNumberEthers } from 'ethers' import * as url from 'url' import { explorerUrls } from '@airswap/constants' -export * from './src/pool' export * from './src/pricing' export * from './src/swap' export * from './src/swapERC20' diff --git a/tools/utils/package.json b/tools/utils/package.json index 9c16454b4..25c78a2be 100644 --- a/tools/utils/package.json +++ b/tools/utils/package.json @@ -17,11 +17,11 @@ "scripts": { "clean": "rm -rf ./build", "compile": "yarn clean && tsc -b", - "test": "yarn test:unit", - "test:unit": "TS_NODE_COMPILER_OPTIONS='{\"strict\":false}' yarn mocha -r ts-node/esm test/*.ts" + "test": "TS_NODE_COMPILER_OPTIONS='{\"strict\":false}' yarn mocha -r ts-node/esm test/*.ts", + "test:ci": "yarn test" }, "dependencies": { - "@airswap/constants": "^4.0.10", + "@airswap/constants": "^4.1.0", "@airswap/types": "^4.0.4", "@metamask/eth-sig-util": "^5.0.2", "bignumber.js": "^9.0.1", diff --git a/tools/utils/src/pool.ts b/tools/utils/src/pool.ts deleted file mode 100644 index 4e5d8d4a7..000000000 --- a/tools/utils/src/pool.ts +++ /dev/null @@ -1,133 +0,0 @@ -import { ethers } from 'ethers' -import { toBuffer } from 'ethereumjs-util' -import { - signTypedData, - recoverTypedSignature, - SignTypedDataVersion, -} from '@metamask/eth-sig-util' - -import { - ADDRESS_ZERO, - DOMAIN_VERSION_POOL, - DOMAIN_NAME_POOL, -} from '@airswap/constants' - -import { UnsignedClaim, Claim, Signature, EIP712Claim } from '@airswap/types' - -export function createClaim({ - nonce = Date.now().toString(), - expiry = nonce + 60, - participant = ADDRESS_ZERO, - score = '0', -}: any): UnsignedClaim { - return { - nonce: String(nonce), - expiry: String(expiry), - participant, - score: String(score), - } -} - -export async function createClaimSignature( - unsignedClaim: UnsignedClaim, - signer: ethers.VoidSigner | string, - poolContract: string, - chainId: number -): Promise { - let sig - if (typeof signer === 'string') { - sig = signTypedData({ - version: SignTypedDataVersion.V4, - privateKey: toBuffer(signer), - data: { - types: EIP712Claim, - domain: { - name: DOMAIN_NAME_POOL, - version: DOMAIN_VERSION_POOL, - chainId, - verifyingContract: poolContract, - }, - primaryType: 'Claim', - message: unsignedClaim, - }, - }) - } else { - sig = await signer._signTypedData( - { - name: DOMAIN_NAME_POOL, - version: DOMAIN_VERSION_POOL, - chainId, - verifyingContract: poolContract, - }, - { Claim: EIP712Claim.Claim }, - unsignedClaim - ) - } - const { r, s, v } = ethers.utils.splitSignature(sig) - return { r, s, v: String(v) } -} - -export function getSignerFromClaimSignature( - claim: UnsignedClaim, - poolContract: string, - chainId: number, - v: string, - r: string, - s: string -): string { - const sig = `${r}${s.slice(2)}${ethers.BigNumber.from(v) - .toHexString() - .slice(2)}` - return recoverTypedSignature({ - version: SignTypedDataVersion.V4, - signature: sig, - data: { - types: EIP712Claim, - domain: { - name: DOMAIN_NAME_POOL, - version: DOMAIN_VERSION_POOL, - chainId, - verifyingContract: poolContract, - }, - primaryType: 'Claim', - message: claim, - }, - }) -} - -export function isValidClaim(claim: Claim): boolean { - return ( - claim && - 'nonce' in claim && - 'expiry' in claim && - 'participant' in claim && - 'score' in claim && - 'r' in claim && - 's' in claim && - 'v' in claim - ) -} - -export function claimToParams(claim: Claim): Array { - return [ - claim.nonce, - claim.expiry, - claim.participant, - claim.score, - claim.v, - claim.r, - claim.s, - ] -} - -export function claimPropsToStrings(obj: any): Claim { - return { - nonce: String(obj.nonce), - expiry: String(obj.expiry), - participant: String(obj.participant), - score: String(obj.score), - v: String(obj.v), - r: String(obj.r), - s: String(obj.s), - } -} diff --git a/tools/utils/test/utils.ts b/tools/utils/test/utils.ts index 5714576e4..6dec020cd 100644 --- a/tools/utils/test/utils.ts +++ b/tools/utils/test/utils.ts @@ -10,11 +10,8 @@ import { Levels, FullOrderERC20, UnsignedOrderERC20 } from '@airswap/types' import { isValidFullOrderERC20, isValidOrderERC20, - isValidClaim, createOrderERC20Signature, - createClaimSignature, getSignerFromOrderERC20Signature, - getSignerFromClaimSignature, compressFullOrderERC20, decompressFullOrderERC20, calculateCostFromLevels, @@ -127,31 +124,6 @@ describe('Utils', async () => { ).to.equal(true) }) - it('Signs and validates a claim', async () => { - const unsignedClaim = { - nonce: Date.now().toString(), - expiry: Math.round(Date.now() / 1000 + SECONDS_IN_DAY).toString(), - participant: ADDRESS_ZERO, - score: '300', - } - const { v, r, s } = await createClaimSignature( - unsignedClaim, - wallet.privateKey, - ADDRESS_ZERO, - 1 - ) - const signerWallet = getSignerFromClaimSignature( - unsignedClaim, - ADDRESS_ZERO, - 1, - v, - r, - s - ) - expect(isValidClaim({ ...unsignedClaim, v, r, s })).to.equal(true) - expect(signerWallet.toLowerCase()).to.equal(wallet.address.toLowerCase()) - }) - const levels: Levels = [ ['250', '0.5'], ['500', '0.6'], diff --git a/yarn.lock b/yarn.lock index 3dc3a0840..36183fec3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -80,22 +80,6 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@ensdomains/ens@^0.4.4": - version "0.4.5" - resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" - integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== - dependencies: - bluebird "^3.5.2" - eth-ens-namehash "^2.0.8" - solc "^0.4.20" - testrpc "0.0.1" - web3-utils "^1.0.0-beta.31" - -"@ensdomains/resolver@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" - integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== - "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -128,64 +112,120 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.38.0.tgz#73a8a0d8aa8a8e6fe270431c5e72ae91b5337892" integrity sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g== -"@ethereum-waffle/chai@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.4.4.tgz#16c4cc877df31b035d6d92486dfdf983df9138ff" - integrity sha512-/K8czydBtXXkcM9X6q29EqEkc5dN3oYenyH2a9hF7rGAApAJUpH8QBtojxOY/xQ2up5W332jqgxwp0yPiYug1g== +"@ethereum-waffle/chai@4.0.10": + version "4.0.10" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-4.0.10.tgz#6f600a40b6fdaed331eba42b8625ff23f3a0e59a" + integrity sha512-X5RepE7Dn8KQLFO7HHAAe+KeGaX/by14hn90wePGBhzL54tq4Y8JscZFu+/LCwCl6TnkAAy5ebiMoqJ37sFtWw== dependencies: - "@ethereum-waffle/provider" "^3.4.4" - ethers "^5.5.2" + "@ethereum-waffle/provider" "4.0.5" + debug "^4.3.4" + json-bigint "^1.0.0" -"@ethereum-waffle/compiler@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-3.4.4.tgz#d568ee0f6029e68b5c645506079fbf67d0dfcf19" - integrity sha512-RUK3axJ8IkD5xpWjWoJgyHclOeEzDLQFga6gKpeGxiS/zBu+HB0W2FvsrrLalTFIaPw/CGYACRBSIxqiCqwqTQ== +"@ethereum-waffle/compiler@4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-4.0.3.tgz#069e2df24b879b8a7b78857bad6f8bf6ebc8a5b1" + integrity sha512-5x5U52tSvEVJS6dpCeXXKvRKyf8GICDwiTwUvGD3/WD+DpvgvaoHOL82XqpTSUHgV3bBq6ma5/8gKUJUIAnJCw== dependencies: "@resolver-engine/imports" "^0.3.3" "@resolver-engine/imports-fs" "^0.3.3" - "@typechain/ethers-v5" "^2.0.0" + "@typechain/ethers-v5" "^10.0.0" "@types/mkdirp" "^0.5.2" - "@types/node-fetch" "^2.5.5" - ethers "^5.0.1" + "@types/node-fetch" "^2.6.1" mkdirp "^0.5.1" - node-fetch "^2.6.1" - solc "^0.6.3" - ts-generator "^0.1.1" - typechain "^3.0.0" - -"@ethereum-waffle/ens@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-3.4.4.tgz#db97ea2c9decbb70b9205d53de2ccbd6f3182ba1" - integrity sha512-0m4NdwWxliy3heBYva1Wr4WbJKLnwXizmy5FfSSr5PMbjI7SIGCdCB59U7/ZzY773/hY3bLnzLwvG5mggVjJWg== - dependencies: - "@ensdomains/ens" "^0.4.4" - "@ensdomains/resolver" "^0.2.4" - ethers "^5.5.2" - -"@ethereum-waffle/mock-contract@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-3.4.4.tgz#fc6ffa18813546f4950a69f5892d4dd54b2c685a" - integrity sha512-Mp0iB2YNWYGUV+VMl5tjPsaXKbKo8MDH9wSJ702l9EBjdxFf/vBvnMBAC1Fub1lLtmD0JHtp1pq+mWzg/xlLnA== - dependencies: - "@ethersproject/abi" "^5.5.0" - ethers "^5.5.2" - -"@ethereum-waffle/provider@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-3.4.4.tgz#398fc1f7eb91cc2df7d011272eacba8af0c7fffb" - integrity sha512-GK8oKJAM8+PKy2nK08yDgl4A80mFuI8zBkE0C9GqTRYQqvuxIyXoLmJ5NZU9lIwyWVv5/KsoA11BgAv2jXE82g== - dependencies: - "@ethereum-waffle/ens" "^3.4.4" - ethers "^5.5.2" - ganache-core "^2.13.2" - patch-package "^6.2.2" - postinstall-postinstall "^2.1.0" + node-fetch "^2.6.7" + +"@ethereum-waffle/ens@4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-4.0.3.tgz#4a46ac926414f3c83b4e8cc2562c8e2aee06377a" + integrity sha512-PVLcdnTbaTfCrfSOrvtlA9Fih73EeDvFS28JQnT5M5P4JMplqmchhcZB1yg/fCtx4cvgHlZXa0+rOCAk2Jk0Jw== + +"@ethereum-waffle/mock-contract@4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-4.0.4.tgz#f13fea29922d87a4d2e7c4fc8fe72ea04d2c13de" + integrity sha512-LwEj5SIuEe9/gnrXgtqIkWbk2g15imM/qcJcxpLyAkOj981tQxXmtV4XmQMZsdedEsZ/D/rbUAOtZbgwqgUwQA== + +"@ethereum-waffle/provider@4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-4.0.5.tgz#8a65dbf0263f4162c9209608205dee1c960e716b" + integrity sha512-40uzfyzcrPh+Gbdzv89JJTMBlZwzya1YLDyim8mVbEqYLP5VRYWoGp0JMyaizgV3hMoUFRqJKVmIUw4v7r3hYw== + dependencies: + "@ethereum-waffle/ens" "4.0.3" + "@ganache/ethereum-options" "0.1.4" + debug "^4.3.4" + ganache "7.4.3" + +"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.0", "@ethereumjs/block@^3.6.2": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.6.3.tgz#d96cbd7af38b92ebb3424223dbf773f5ccd27f84" + integrity sha512-CegDeryc2DVKnDkg5COQrE0bJfw/p0v3GBk2W5/Dj5dOVfEmb50Ux0GLnSPypooLnfqjwFaorGuT9FokWB3GRg== + dependencies: + "@ethereumjs/common" "^2.6.5" + "@ethereumjs/tx" "^3.5.2" + ethereumjs-util "^7.1.5" + merkle-patricia-tree "^4.2.4" + +"@ethereumjs/blockchain@^5.5.0": + version "5.5.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.5.3.tgz#aa49a6a04789da6b66b5bcbb0d0b98efc369f640" + integrity sha512-bi0wuNJ1gw4ByNCV56H0Z4Q7D+SxUbwyG12Wxzbvqc89PXLRNR20LBcSUZRKpN0+YCPo6m0XZL/JLio3B52LTw== + dependencies: + "@ethereumjs/block" "^3.6.2" + "@ethereumjs/common" "^2.6.4" + "@ethereumjs/ethash" "^1.1.0" + debug "^4.3.3" + ethereumjs-util "^7.1.5" + level-mem "^5.0.1" + lru-cache "^5.1.1" + semaphore-async-await "^1.5.1" + +"@ethereumjs/common@2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.0.tgz#feb96fb154da41ee2cc2c5df667621a440f36348" + integrity sha512-Cq2qS0FTu6O2VU1sgg+WyU9Ps0M6j/BEMHN+hRaECXCV/r0aI78u4N6p52QW/BDVhwWZpCdrvG8X7NJdzlpNUA== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.3" + +"@ethereumjs/common@^2.6.0", "@ethereumjs/common@^2.6.4", "@ethereumjs/common@^2.6.5": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" + integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.5" + +"@ethereumjs/ethash@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/ethash/-/ethash-1.1.0.tgz#7c5918ffcaa9cb9c1dc7d12f77ef038c11fb83fb" + integrity sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA== + dependencies: + "@ethereumjs/block" "^3.5.0" + "@types/levelup" "^4.3.0" + buffer-xor "^2.0.1" + ethereumjs-util "^7.1.1" + miller-rabin "^4.0.0" "@ethereumjs/rlp@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== +"@ethereumjs/tx@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.4.0.tgz#7eb1947eefa55eb9cf05b3ca116fb7a3dbd0bce7" + integrity sha512-WWUwg1PdjHKZZxPPo274ZuPsJCWV3SqATrEKQP1n2DrVYVP1aZIYpo/mFaA0BDoE0tIQmBeimRCEA0Lgil+yYw== + dependencies: + "@ethereumjs/common" "^2.6.0" + ethereumjs-util "^7.1.3" + +"@ethereumjs/tx@^3.4.0", "@ethereumjs/tx@^3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" + integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== + dependencies: + "@ethereumjs/common" "^2.6.4" + ethereumjs-util "^7.1.5" + "@ethereumjs/util@^8.0.0": version "8.0.5" resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.0.5.tgz#b9088fc687cc13f0c1243d6133d145dfcf3fe446" @@ -195,22 +235,25 @@ "@ethereumjs/rlp" "^4.0.1" ethereum-cryptography "^1.1.2" -"@ethersproject/abi@5.0.0-beta.153": - version "5.0.0-beta.153" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" - integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== - dependencies: - "@ethersproject/address" ">=5.0.0-beta.128" - "@ethersproject/bignumber" ">=5.0.0-beta.130" - "@ethersproject/bytes" ">=5.0.0-beta.129" - "@ethersproject/constants" ">=5.0.0-beta.128" - "@ethersproject/hash" ">=5.0.0-beta.128" - "@ethersproject/keccak256" ">=5.0.0-beta.127" - "@ethersproject/logger" ">=5.0.0-beta.129" - "@ethersproject/properties" ">=5.0.0-beta.131" - "@ethersproject/strings" ">=5.0.0-beta.130" - -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.7.0": +"@ethereumjs/vm@5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.6.0.tgz#e0ca62af07de820143674c30b776b86c1983a464" + integrity sha512-J2m/OgjjiGdWF2P9bj/4LnZQ1zRoZhY8mRNVw/N3tXliGI8ai1sI1mlDPkLpeUUM4vq54gH6n0ZlSpz8U/qlYQ== + dependencies: + "@ethereumjs/block" "^3.6.0" + "@ethereumjs/blockchain" "^5.5.0" + "@ethereumjs/common" "^2.6.0" + "@ethereumjs/tx" "^3.4.0" + async-eventemitter "^0.2.4" + core-js-pure "^3.0.1" + debug "^2.2.0" + ethereumjs-util "^7.1.3" + functional-red-black-tree "^1.0.1" + mcl-wasm "^0.7.1" + merkle-patricia-tree "^4.2.2" + rustbn.js "~0.2.0" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== @@ -249,7 +292,7 @@ "@ethersproject/logger" "^5.7.0" "@ethersproject/properties" "^5.7.0" -"@ethersproject/address@5.7.0", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.7.0": +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== @@ -275,7 +318,7 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/properties" "^5.7.0" -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.7.0": +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== @@ -284,14 +327,14 @@ "@ethersproject/logger" "^5.7.0" bn.js "^5.2.1" -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.7.0": +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/constants@5.7.0", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.7.0": +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== @@ -314,7 +357,7 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/transactions" "^5.7.0" -"@ethersproject/hash@5.7.0", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.7.0": +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== @@ -366,7 +409,7 @@ aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.7.0": +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== @@ -374,7 +417,7 @@ "@ethersproject/bytes" "^5.7.0" js-sha3 "0.8.0" -"@ethersproject/logger@5.7.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.7.0": +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== @@ -394,7 +437,7 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/sha2" "^5.7.0" -"@ethersproject/properties@5.7.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.7.0": +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== @@ -476,7 +519,7 @@ "@ethersproject/sha2" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/strings@5.7.0", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.7.0": +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== @@ -485,7 +528,7 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.7.0": +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== @@ -552,6 +595,68 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@ganache/ethereum-address@0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@ganache/ethereum-address/-/ethereum-address-0.1.4.tgz#0e6d66f4a24f64bf687cb3ff7358fb85b9d9005e" + integrity sha512-sTkU0M9z2nZUzDeHRzzGlW724xhMLXo2LeX1hixbnjHWY1Zg1hkqORywVfl+g5uOO8ht8T0v+34IxNxAhmWlbw== + dependencies: + "@ganache/utils" "0.1.4" + +"@ganache/ethereum-options@0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@ganache/ethereum-options/-/ethereum-options-0.1.4.tgz#6a559abb44225e2b8741a8f78a19a46714a71cd6" + integrity sha512-i4l46taoK2yC41FPkcoDlEVoqHS52wcbHPqJtYETRWqpOaoj9hAg/EJIHLb1t6Nhva2CdTO84bG+qlzlTxjAHw== + dependencies: + "@ganache/ethereum-address" "0.1.4" + "@ganache/ethereum-utils" "0.1.4" + "@ganache/options" "0.1.4" + "@ganache/utils" "0.1.4" + bip39 "3.0.4" + seedrandom "3.0.5" + +"@ganache/ethereum-utils@0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@ganache/ethereum-utils/-/ethereum-utils-0.1.4.tgz#fae4b5b9e642e751ff1fa0cd7316c92996317257" + integrity sha512-FKXF3zcdDrIoCqovJmHLKZLrJ43234Em2sde/3urUT/10gSgnwlpFmrv2LUMAmSbX3lgZhW/aSs8krGhDevDAg== + dependencies: + "@ethereumjs/common" "2.6.0" + "@ethereumjs/tx" "3.4.0" + "@ethereumjs/vm" "5.6.0" + "@ganache/ethereum-address" "0.1.4" + "@ganache/rlp" "0.1.4" + "@ganache/utils" "0.1.4" + emittery "0.10.0" + ethereumjs-abi "0.6.8" + ethereumjs-util "7.1.3" + +"@ganache/options@0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@ganache/options/-/options-0.1.4.tgz#325b07e6de85094667aaaaf3d653e32404a04b78" + integrity sha512-zAe/craqNuPz512XQY33MOAG6Si1Xp0hCvfzkBfj2qkuPcbJCq6W/eQ5MB6SbXHrICsHrZOaelyqjuhSEmjXRw== + dependencies: + "@ganache/utils" "0.1.4" + bip39 "3.0.4" + seedrandom "3.0.5" + +"@ganache/rlp@0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@ganache/rlp/-/rlp-0.1.4.tgz#f4043afda83e1a14a4f80607b103daf166a9b374" + integrity sha512-Do3D1H6JmhikB+6rHviGqkrNywou/liVeFiKIpOBLynIpvZhRCgn3SEDxyy/JovcaozTo/BynHumfs5R085MFQ== + dependencies: + "@ganache/utils" "0.1.4" + rlp "2.2.6" + +"@ganache/utils@0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@ganache/utils/-/utils-0.1.4.tgz#25d60d7689e3dda6a8a7ad70e3646f07c2c39a1f" + integrity sha512-oatUueU3XuXbUbUlkyxeLLH3LzFZ4y5aSkNbx6tjSIhVTPeh+AuBKYt4eQ73FFcTB3nj/gZoslgAh5CN7O369w== + dependencies: + emittery "0.10.0" + keccak "3.0.1" + seedrandom "3.0.5" + optionalDependencies: + "@trufflesuite/bigint-buffer" "1.1.9" + "@gar/promisify@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" @@ -1072,13 +1177,6 @@ read-package-json-fast "^3.0.0" which "^3.0.0" -"@nrwl/cli@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.9.2.tgz#82537d3d85410b0143d37a3b4fade09675356084" - integrity sha512-QoCmyrcGakHAYTJaNBbOerRQAmqJHMYGCdqtQidV+aP9p1Dy33XxDELfhd+IYmGqngutXuEWChNpWNhPloLnoA== - dependencies: - nx "15.9.2" - "@nrwl/devkit@*": version "16.9.0" resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.9.0.tgz#5f47580f9f4950b85cc1606ede5772e43e591119" @@ -1086,51 +1184,6 @@ dependencies: "@nx/devkit" "16.9.0" -"@nrwl/nx-darwin-arm64@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.2.tgz#612d8d714ec876cafd6f1483bf5565704d1b75be" - integrity sha512-Yv+OVsQt3C/hmWOC+YhJZQlsyph5w1BHfbp4jyCvV1ZXBbb8NdvwxgDHPWXxKPTc1EXuB7aEX3qzxM3/OWEUJg== - -"@nrwl/nx-darwin-x64@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.2.tgz#3f77bd90dbabf4782d81f773cfb2739a443e595f" - integrity sha512-qHfdluHlPzV0UHOwj1ZJ+qNEhzfLGiBuy1cOth4BSzDlvMnkuqBWoprfaXoztzYcus2NSILY1/7b3Jw4DAWmMw== - -"@nrwl/nx-linux-arm-gnueabihf@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.2.tgz#3374a5a1692b222ce18f2213a47b4d68fb509e70" - integrity sha512-0GzwbablosnYnnJDCJvAeZv8LlelSrNwUnGhe43saeoZdAew35Ay1E34zBrg/GCGTASuz+knEEYFM+gDD9Mc6A== - -"@nrwl/nx-linux-arm64-gnu@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.2.tgz#e3ec95c6ee3285c77422886cf4cbec1f04804460" - integrity sha512-3mFIY7iUTPG45hSIRaM2DmraCy8W6hNoArAGRrTgYw40BIJHtLrW+Rt7DLyvVXaYCvrKugWOKtxC+jG7kpIZVA== - -"@nrwl/nx-linux-arm64-musl@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.2.tgz#72ce601d256083ded7380c598f1b3eb4dc2a3472" - integrity sha512-FNBnXEtockwxZa4I3NqggrJp0YIbNokJvt/clrICP+ijOacdUDkv8mJedavobkFsRsNq9gzCbRbUScKymrOLrg== - -"@nrwl/nx-linux-x64-gnu@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.2.tgz#2da6bb50cd80d699310e91c7331baa6cfc8ce197" - integrity sha512-gHWsP5lbe4FNQCa1Q/VLxIuik+BqAOcSzyPjdUa4gCDcbxPa8xiE57PgXB5E1XUzOWNnDTlXa/Ll07/TIuKuog== - -"@nrwl/nx-linux-x64-musl@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.2.tgz#39b3bda5868a53b722f1d42700dce71c5ff3f6b9" - integrity sha512-EaFUukCbmoHsYECX2AS4pxXH933yesBFVvBgD38DkoFDxDoJMVt6JqYwm+d5R7S4R2P9U3l++aurljQTRq567Q== - -"@nrwl/nx-win32-arm64-msvc@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.2.tgz#bc350be5cb7d0bfa6c2c5ced40c5af163a457a2c" - integrity sha512-PGAe7QMr51ivx1X3avvs8daNlvv1wGo3OFrobjlu5rSyjC1Y3qHwT9+wdlwzNZ93FIqWOq09s+rE5gfZRfpdAg== - -"@nrwl/nx-win32-x64-msvc@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.2.tgz#3e46c3f7af196bdbf0deb336ec4f9448c54e4a9f" - integrity sha512-Q8onNzhuAZ0l9DNkm8D4Z1AEIzJr8JiT4L2fVBLYrV/R75C2HS3q7lzvfo6oqMY6mXge1cFPcrTtg3YXBQaSWA== - "@nrwl/tao@*": version "16.9.0" resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.9.0.tgz#0a99a0cac3822c074f60391860caafc663a259b1" @@ -1139,12 +1192,12 @@ nx "16.9.0" tslib "^2.3.0" -"@nrwl/tao@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.9.2.tgz#e970efa8b3fb828007b02286e9e505247032b5b3" - integrity sha512-+LqNC37w9c6q6Ukdpf0z0tt1PQFNi4gwhHpJvkYQiKRETHjyrrlyqTNEPEyA7PI62RuYC6VrpVw2gzI7ufqZEA== +"@nrwl/tao@16.5.5": + version "16.5.5" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.5.5.tgz#8279e0ebf1ccfb5bb615b9bb63000e36a7255725" + integrity sha512-6SYG3rlKkYvy/wauPwoUXQuN0PTJi95hCEC7lGfCEGye2Y/61UwJQf2xixMxafUM2X84WdEStEz3Jty85gVqkQ== dependencies: - nx "15.9.2" + nx "16.5.5" "@nx/devkit@16.9.0", "@nx/devkit@>=16.5.1 < 17": version "16.9.0" @@ -1159,51 +1212,101 @@ tmp "~0.2.1" tslib "^2.3.0" +"@nx/nx-darwin-arm64@16.5.5": + version "16.5.5" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.5.5.tgz#e8e9a0552954f8333912383da4dea99ba7fee8c3" + integrity sha512-Zzwy7pkSDFTiWcBk78qDe4VzygO9kemtz/kbbLvpisZkUlZX9nIQnLHT80Ms++iqA0enIQAwdTcJiaIHLVd5JQ== + "@nx/nx-darwin-arm64@16.9.0": version "16.9.0" resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.9.0.tgz#26fc149f14c867d130dd06dea8cf89f8ff4e754b" integrity sha512-I+045kSIQgdHMfqpJ/bplWzTc82DM/c7VOM/XlrBUwaM9nsDchIC2mo1F93HDe/oJ+oxz9awHbED4GUzS6uc5g== +"@nx/nx-darwin-x64@16.5.5": + version "16.5.5" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.5.5.tgz#0c3c299228920f3f2dd6fd78d03cd301ba8401c5" + integrity sha512-d5O8BD5HFI2hJnMgVVV1pl2A+hlUmn4GxCZTmx2Tr329TYGdpvyXm8NnDFEAigZ77QVMHwFN6vqS07HARu+uVA== + "@nx/nx-darwin-x64@16.9.0": version "16.9.0" resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.9.0.tgz#806fb83384fa01a7ebe8993a53d2b2dfe3e6a87e" integrity sha512-Yop/nZlJ+j4RIDB5bfuse583lWLiHtyL7bRPj2IsXAWiQHvXfrNnJJwYH7cGHgtR4ctSAZdOi7SZWlmgHO7Hyw== +"@nx/nx-freebsd-x64@16.5.5": + version "16.5.5" + resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.5.5.tgz#e30781a315ebea5b6aecb12f8c3c7685ddc55ab7" + integrity sha512-SqTvbz21iUc8DHKgisX9pPuXc7/DngbiZxInlEHPXi8zUtyUOqZI3yQk4NVj3dqLBMLwEOZDgvXs0XxzB5nn+g== + "@nx/nx-freebsd-x64@16.9.0": version "16.9.0" resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.9.0.tgz#2865cd20e309c21880def9b05a6c66af834c53e3" integrity sha512-qDg7Sd4V6edRuqR4Y+eEPec0J0Nf5ebGGGDegKjV7X4OfgagOb7k8o3cAGiKkKXuaAUg1OnqVw5nF7JysAmrLQ== +"@nx/nx-linux-arm-gnueabihf@16.5.5": + version "16.5.5" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.5.5.tgz#9e10b77a9d91fa5b907186cd8881fc9f0fa2d81d" + integrity sha512-8C2KVFHqcyGViEgUicYo1frEgQARbD+CicIos6A5WRYLaxS+upb9FDblKU0eGYIwDp8oCagVjUjNX8d1WHLX7w== + "@nx/nx-linux-arm-gnueabihf@16.9.0": version "16.9.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.9.0.tgz#819bf24fc493d053711502a3bebe95c7eeae3c80" integrity sha512-eyG4PP5jSyDkO8Hm3zrchjm/coVY2L66/ExalfO8j+FSqwlipFIWwkpQM3Tw2fYrrMZpWXa7VlHj10Eu2xF5pQ== +"@nx/nx-linux-arm64-gnu@16.5.5": + version "16.5.5" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.5.5.tgz#867ca9057bfc5dabb1b684eceb62b1db318e8fcd" + integrity sha512-AGq4wp3Wn8bE0h2c7/bHj2wQWfp08DYJemwTNLkwLcoJWkUidLOBQePRvLxqPeo42Zmt3GYMi+fi5XtKCmvcjg== + "@nx/nx-linux-arm64-gnu@16.9.0": version "16.9.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.9.0.tgz#ee064ab6f7a2fe747844ee73a51c9eac8abf27f2" integrity sha512-oJBf2J1qwfACoSN+Hutb6iq0XvIllRdR+52HUXriCWLe6At4kaDW/p+sBcmtlsdgVY3BRs32rqTgYb8qJ1CJRA== +"@nx/nx-linux-arm64-musl@16.5.5": + version "16.5.5" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.5.5.tgz#d02403945cd9b21a11bf54671c42f68ca3feb51b" + integrity sha512-xPTYjDCPnXLPXZThAzugiithZaIHk42rTxussMZA00Cx0iEkh5zohqtC0vGBnaAPNcMv0uyCiWABhL4RRUVp2w== + "@nx/nx-linux-arm64-musl@16.9.0": version "16.9.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.9.0.tgz#f2b071ea4ac4e3d31c79cd9d41b214f7e1e8edac" integrity sha512-RxAI0ls5Zy/HyL51PMmbaTX+tbZklgAeMqtQhziyjD/awao/9Jt783IqVPFfKoWTNmDq6/bjOG8obcnQlLKsaw== +"@nx/nx-linux-x64-gnu@16.5.5": + version "16.5.5" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.5.5.tgz#e54b44498212f363b8aeddd4313cb5d1fc840af2" + integrity sha512-Rq55OWD4SObfo4sWpjvaijWg33dm+cOf8e2cO06t2EmLMdOyyVnpNdtpjXh6A9tSi3EU5xPfYiy3I9O6gWOnuw== + "@nx/nx-linux-x64-gnu@16.9.0": version "16.9.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.9.0.tgz#f3c58d41a8e8ffe5b54414dc5c5a3a5031da530f" integrity sha512-xFaA3lOQn1hZ4mzXdCUe/CCioEjRJ0E18AekD2g0r9mMRVyrxEk0KH71jMQwbbVYzkvG9a2Vjiptp8hjmEejAw== +"@nx/nx-linux-x64-musl@16.5.5": + version "16.5.5" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.5.5.tgz#4f7d352e385ecd69f25d569547413f46408203a8" + integrity sha512-fnkSPv+VIKmQQOEQxFrGx5DlkHGxeH9Fzme6jwuDwmsvs+8Vv/uUnfcxkDZfJxKK+p27w37q3PQCfZGrFXE1cw== + "@nx/nx-linux-x64-musl@16.9.0": version "16.9.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.9.0.tgz#0c7fdcf459d10dc17d8b489724ab72fe4145b4ca" integrity sha512-8tfqvCajTOH5Tt/NFMNJRePwkoUbGYUK7qHJU2LDAazDUsjvpawdvEM8FkJWsNgIsQBej+zcSYA16+sffjsY2g== +"@nx/nx-win32-arm64-msvc@16.5.5": + version "16.5.5" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.5.5.tgz#652da52a3eddb0c716ad0ccb1c288c7dca0ec425" + integrity sha512-9nWm+d+tlbxFMLvTLJqIfpTLDuSVDXfSBCSBampyeoI1mUALvq/6CVvWVBDlNqjmrZsYm0sudNqI4Ss7w3BUCQ== + "@nx/nx-win32-arm64-msvc@16.9.0": version "16.9.0" resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.9.0.tgz#0ba710f46ac64028a13288c6a414379fec55e3b3" integrity sha512-tUCu1rg76zHdCmov25K2uHUK2rZBTnzbe58r8Wieytmywijp6vGW53RZzYT86YIvInvPJsH7tULdbZpPW56Ruw== +"@nx/nx-win32-x64-msvc@16.5.5": + version "16.5.5" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.5.5.tgz#86ef12c1180fb7a1c7fdc93f5de31c683818f31a" + integrity sha512-fB8miPr887GIGBDhyT6VX7MWX5aC40izEi+4GGSk38oh5dOUK9TLwjAEW/3vBE01fj5Hjcy0CPN7RA45fh/WUw== + "@nx/nx-win32-x64-msvc@16.9.0": version "16.9.0" resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.9.0.tgz#495a46e64f7c33377f9e8417ade50b9d9a823a79" @@ -1340,9 +1443,9 @@ "@octokit/openapi-types" "^18.0.0" "@openzeppelin/contracts@^4.8.1", "@openzeppelin/contracts@^4.8.3": - version "4.8.3" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.8.3.tgz#cbef3146bfc570849405f59cba18235da95a252a" - integrity sha512-bQHV8R9Me8IaJoJ2vPG4rXcL7seB7YVuskr4f+f5RyOStSZetwzkWtoqDMl5erkBJy0lDRUnIR2WIkPiC0GJlg== + version "4.9.3" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.3.tgz#00d7a8cf35a475b160b3f0293a6403c511099364" + integrity sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg== "@parcel/watcher@2.0.4": version "2.0.4" @@ -1526,16 +1629,6 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@sindresorhus/is@^4.0.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" - integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== - "@sinonjs/commons@^1.7.0": version "1.8.6" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" @@ -1578,7 +1671,7 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== -"@solidity-parser/parser@^0.14.1": +"@solidity-parser/parser@^0.14.0", "@solidity-parser/parser@^0.14.1": version "0.14.5" resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.5.tgz#87bc3cc7b068e08195c219c91cd8ddff5ef1a804" integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== @@ -1592,25 +1685,25 @@ dependencies: antlr4ts "^0.5.0-alpha.4" -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@szmarczak/http-timer@^4.0.5": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" - integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== - dependencies: - defer-to-connect "^2.0.0" - "@tootallnate/once@2": version "2.0.0" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== +"@trufflesuite/bigint-buffer@1.1.10": + version "1.1.10" + resolved "https://registry.yarnpkg.com/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz#a1d9ca22d3cad1a138b78baaf15543637a3e1692" + integrity sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw== + dependencies: + node-gyp-build "4.4.0" + +"@trufflesuite/bigint-buffer@1.1.9": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.9.tgz#e2604d76e1e4747b74376d68f1312f9944d0d75d" + integrity sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw== + dependencies: + node-gyp-build "4.3.0" + "@tsconfig/node10@^1.0.7": version "1.0.9" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" @@ -1644,6 +1737,14 @@ "@tufjs/canonical-json" "1.0.0" minimatch "^9.0.0" +"@typechain/ethers-v5@^10.0.0": + version "10.2.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz#50241e6957683281ecfa03fb5a6724d8a3ce2391" + integrity sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + "@typechain/ethers-v5@^10.2.0": version "10.2.0" resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.0.tgz#68f5963efb5214cb2d881477228e4b5b315473e1" @@ -1652,13 +1753,6 @@ lodash "^4.17.15" ts-essentials "^7.0.1" -"@typechain/ethers-v5@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz#cd3ca1590240d587ca301f4c029b67bfccd08810" - integrity sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw== - dependencies: - ethers "^5.0.2" - "@typechain/hardhat@^6.1.5": version "6.1.5" resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-6.1.5.tgz#caad58a1d3e9cd88061a584eb4f4fa763d5dcad1" @@ -1666,7 +1760,12 @@ dependencies: fs-extra "^9.1.0" -"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": +"@types/abstract-leveldown@*": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-7.2.1.tgz#bb16403c17754b0c4d5772d71d03b924a03d4c80" + integrity sha512-YK8irIC+eMrrmtGx0H4ISn9GgzLd9dojZWJaMbjp1YHLl2VqqNFBNrL5Q3KjGf4VE3sf/4hmq6EhQZ7kZp1NoQ== + +"@types/bn.js@^4.11.3": version "4.11.6" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== @@ -1680,21 +1779,18 @@ dependencies: "@types/node" "*" -"@types/cacheable-request@^6.0.1": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" - integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== - dependencies: - "@types/http-cache-semantics" "*" - "@types/keyv" "^3.1.4" - "@types/node" "*" - "@types/responselike" "^1.0.0" - "@types/chai@*": version "4.3.4" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.4.tgz#e913e8175db8307d78b4e8fa690408ba6b65dee4" integrity sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw== +"@types/concat-stream@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.1.tgz#24bcfc101ecf68e886aaedce60dfd74b632a1b74" + integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== + dependencies: + "@types/node" "*" + "@types/connect@^3.4.33": version "3.4.35" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" @@ -1702,6 +1798,20 @@ dependencies: "@types/node" "*" +"@types/ethereumjs-util@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz#9dabd7302ec9728a7d99be15f4143977c33cd5ac" + integrity sha512-5N0RJldhKCKwDksdnuNHbEJuwO5pjEdtwdHj/kZLxaS84s5R1NLgYfAuDF/VZ4whYABJJvv+o0O8TXLm+F/Byw== + dependencies: + ethereumjs-util "*" + +"@types/form-data@0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" + integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== + dependencies: + "@types/node" "*" + "@types/glob@^7.1.1": version "7.2.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" @@ -1710,21 +1820,23 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/http-cache-semantics@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" - integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== - "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@types/keyv@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" - integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== +"@types/level-errors@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/level-errors/-/level-errors-3.0.0.tgz#15c1f4915a5ef763b51651b15e90f6dc081b96a8" + integrity sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ== + +"@types/levelup@^4.3.0": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-4.3.3.tgz#4dc2b77db079b1cf855562ad52321aa4241b8ef4" + integrity sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA== dependencies: + "@types/abstract-leveldown" "*" + "@types/level-errors" "*" "@types/node" "*" "@types/lodash@*": @@ -1732,7 +1844,7 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== -"@types/lru-cache@^5.1.0": +"@types/lru-cache@5.1.1", "@types/lru-cache@^5.1.0": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== @@ -1764,6 +1876,11 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.1.tgz#2f4f65bb08bc368ac39c96da7b2f09140b26851b" integrity sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q== +"@types/mocha@^9.0.0": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" + integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== + "@types/mock-require@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/mock-require/-/mock-require-2.0.1.tgz#1546819af1d8d5b124f5f70aff130cc77c53573e" @@ -1771,10 +1888,10 @@ dependencies: "@types/node" "*" -"@types/node-fetch@^2.5.5": - version "2.6.3" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.3.tgz#175d977f5e24d93ad0f57602693c435c57ad7e80" - integrity sha512-ETTL1mOEdq/sxUtgtOhKjyB2Irra4cjxksvcMUR5Zr4n+PxVhsCD9WS46oPbHL3et9Zde7CNRr+WUNlcHvsX+w== +"@types/node-fetch@^2.6.1": + version "2.6.4" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.4.tgz#1bc3a26de814f6bf466b25aeb1473fa1afe6a660" + integrity sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg== dependencies: "@types/node" "*" form-data "^3.0.0" @@ -1784,11 +1901,26 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== -"@types/node@^12.12.54", "@types/node@^12.12.6": +"@types/node@11.11.6": + version "11.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" + integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== + +"@types/node@^10.0.3": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^12.12.54": version "12.20.55" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== +"@types/node@^8.0.0": + version "8.10.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" @@ -1806,6 +1938,11 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== +"@types/qs@^6.2.31": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + "@types/readable-stream@^2.3.13": version "2.3.15" resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.15.tgz#3d79c9ceb1b6a57d5f6e6976f489b9b5384321ae" @@ -1814,20 +1951,6 @@ "@types/node" "*" safe-buffer "~5.1.1" -"@types/resolve@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/responselike@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== - dependencies: - "@types/node" "*" - "@types/secp256k1@^4.0.1": version "4.0.3" resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" @@ -1835,6 +1958,11 @@ dependencies: "@types/node" "*" +"@types/seedrandom@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.1.tgz#1254750a4fec4aff2ebec088ccd0bb02e91fedb4" + integrity sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw== + "@types/semver@^7.3.12": version "7.3.13" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" @@ -1943,6 +2071,11 @@ "@typescript-eslint/types" "5.58.0" eslint-visitor-keys "^3.3.0" +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + "@uniswap/lib@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@uniswap/lib/-/lib-1.1.1.tgz#0afd29601846c16e5d082866cbb24a9e0758e6bc" @@ -1979,14 +2112,6 @@ js-yaml "^3.10.0" tslib "^2.4.0" -"@yarnpkg/parsers@^3.0.0-rc.18": - version "3.0.0-rc.42" - resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.42.tgz#3814e90a81bb1f9c06cc83c6a009139c55efe94d" - integrity sha512-eW9Mbegmb5bJjwawJM9ghjUjUqciNMhC6L7XrQPF/clXS5bbP66MstsgCT5hy9VlfUh/CfBT+0Wucf531dMjHA== - dependencies: - js-yaml "^3.10.0" - tslib "^2.4.0" - "@zkochan/js-yaml@0.0.6": version "0.0.6" resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" @@ -2032,32 +2157,38 @@ abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: module-error "^1.0.1" queue-microtask "^1.2.3" -abstract-leveldown@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz#5cb89f958a44f526779d740d1440e743e0c30a57" - integrity sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@^2.4.1, abstract-leveldown@~2.7.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" - integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== +abstract-leveldown@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a" + integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== dependencies: + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" xtend "~4.0.0" -abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz#f7128e1f86ccabf7d2893077ce5d06d798e386c6" - integrity sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A== +abstract-leveldown@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#08d19d4e26fb5be426f7a57004851b39e1795a2e" + integrity sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ== dependencies: - xtend "~4.0.0" + buffer "^6.0.3" + catering "^2.0.0" + is-buffer "^2.0.5" + level-concat-iterator "^3.0.0" + level-supports "^2.0.1" + queue-microtask "^1.2.3" -abstract-leveldown@~2.6.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" - integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== +abstract-leveldown@~6.2.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" + integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== dependencies: + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" xtend "~4.0.0" accepts@~1.3.8: @@ -2103,11 +2234,6 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== -aes-js@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" - integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== - agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -2359,11 +2485,6 @@ ansi-red@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - ansi-regex@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" @@ -2398,11 +2519,6 @@ ansi-strikethrough@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== - ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -2496,11 +2612,6 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" @@ -2513,25 +2624,6 @@ arr-swap@^1.0.1: dependencies: is-number "^3.0.0" -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - -array-back@^1.0.3, array-back@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b" - integrity sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw== - dependencies: - typical "^2.6.0" - -array-back@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" - integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== - dependencies: - typical "^2.6.1" - array-back@^3.0.1, array-back@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" @@ -2570,10 +2662,10 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== +array-uniq@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== array.prototype.reduce@^1.0.5: version "1.0.5" @@ -2596,15 +2688,10 @@ arrify@^2.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== asn1@~0.2.3: version "0.2.6" @@ -2623,41 +2710,24 @@ assertion-error@^1.1.0: resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async-eventemitter@^0.2.2: +async-eventemitter@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== dependencies: async "^2.4.0" -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@1.x, async@^1.4.2: +async@1.x: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== -async@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== - dependencies: - lodash "^4.17.11" - -async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: +async@^2.4.0: version "2.6.4" resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== @@ -2679,11 +2749,6 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" @@ -2715,538 +2780,12 @@ axios@^1.0.0: form-data "^4.0.0" proxy-from-env "^1.1.0" -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.0.14, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - integrity sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q== - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - integrity sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ== - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - integrity sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg== - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - integrity sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ== - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - integrity sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ== - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - integrity sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw== - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - integrity sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ== - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-preset-env@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" - integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babelify@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" - integrity sha512-vID8Fz6pPN5pJMdlUnNFSfrlcx5MUule4k9aKs/zbZPyXxMTcRrB0M4Tarw22L8afr8eYSWxDPYCob3TdrqtlA== - dependencies: - babel-core "^6.0.14" - object-assign "^4.0.0" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -backoff@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" - integrity sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA== - dependencies: - precond "0.2" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-x@^3.0.2, base-x@^3.0.8: +base-x@^3.0.2: version "3.0.9" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== @@ -3258,19 +2797,6 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" @@ -3303,16 +2829,15 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bip39@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.5.0.tgz#51cbd5179460504a63ea3c000db3f787ca051235" - integrity sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA== +bip39@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.4.tgz#5b11fed966840b5e1b8539f0f54ab6392969b2a0" + integrity sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw== dependencies: + "@types/node" "11.11.6" create-hash "^1.1.0" pbkdf2 "^3.0.9" randombytes "^2.0.1" - safe-buffer "^5.0.1" - unorm "^1.3.3" bl@^4.0.3, bl@^4.1.0: version "4.1.0" @@ -3328,22 +2853,17 @@ blakejs@^1.1.0: resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== -bluebird@^3.5.0, bluebird@^3.5.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - bn.js@4.11.6: version "4.11.6" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.8.0: +bn.js@^4.0.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== @@ -3366,7 +2886,7 @@ body-parser@1.20.1: type-is "~1.6.18" unpipe "1.0.0" -body-parser@^1.16.0, body-parser@^1.20.1: +body-parser@^1.20.1: version "1.20.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== @@ -3399,22 +2919,6 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -3447,7 +2951,7 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: +browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== @@ -3459,56 +2963,6 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: inherits "^2.0.1" safe-buffer "^5.0.1" -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserslist@^3.2.6: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== - dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - bs58@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" @@ -3535,11 +2989,6 @@ buffer-to-arraybuffer@0.0.6: resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.6.tgz#7aaef87ce8441146b4874142c1197e34f9a9c995" integrity sha512-i/ndmmCF5QC1D75QCO1EPwYRPIVRVs2yLwkl2bc8R5P1ORHGZZAbTwmYM/vpXt7KzCe+Y57E8YPGTJywgWBNRw== -buffer-to-arraybuffer@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" - integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== - buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -3552,7 +3001,7 @@ buffer-xor@^2.0.1: dependencies: safe-buffer "^5.1.1" -buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: +buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -3568,6 +3017,13 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" +bufferutil@4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.5.tgz#da9ea8166911cc276bf677b8aed2d02d31f59028" + integrity sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A== + dependencies: + node-gyp-build "^4.3.0" + bufferutil@^4.0.1: version "4.0.7" resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" @@ -3604,21 +3060,6 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -bytewise-core@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/bytewise-core/-/bytewise-core-1.2.3.tgz#3fb410c7e91558eb1ab22a82834577aa6bd61d42" - integrity sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA== - dependencies: - typewise-core "^1.2" - -bytewise@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/bytewise/-/bytewise-1.1.0.tgz#1d13cbff717ae7158094aa881b35d081b387253e" - integrity sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ== - dependencies: - bytewise-core "^1.2.2" - typewise "^1.0.3" - cacache@^16.1.0: version "16.1.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" @@ -3662,61 +3103,7 @@ cacache@^17.0.0: tar "^6.1.11" unique-filename "^3.0.0" -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -cacheable-request@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" - integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^4.0.0" - lowercase-keys "^2.0.0" - normalize-url "^6.0.1" - responselike "^2.0.0" - -cachedown@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cachedown/-/cachedown-1.0.0.tgz#d43f036e4510696b31246d7db31ebf0f7ac32d15" - integrity sha512-t+yVk82vQWCJF3PsWHMld+jhhjkkWjcAzz8NbFx1iULOXWl8Tm/FdM4smZNVw3MRr0X+lVTx9PKzvEn4Ng19RQ== - dependencies: - abstract-leveldown "^2.4.1" - lru-cache "^3.2.0" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: +call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== @@ -3738,11 +3125,6 @@ camelcase-keys@^6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== - camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -3753,22 +3135,17 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30000844: - version "1.0.30001478" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001478.tgz#0ef8a1cf8b16be47a0f9fc4ecfc952232724b32a" - integrity sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw== - case@^1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== -caseless@~0.12.0: +caseless@^0.12.0, caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -catering@^2.1.0, catering@^2.1.1: +catering@^2.0.0, catering@^2.1.0, catering@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== @@ -3780,7 +3157,7 @@ cbor@^8.1.0: dependencies: nofilter "^3.1.0" -chai@^4.3.6: +chai@^4.3.4, chai@^4.3.6: version "4.3.7" resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== @@ -3801,18 +3178,7 @@ chalk@4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3821,7 +3187,7 @@ chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -3834,18 +3200,16 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +"charenc@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== -checkpoint-store@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" - integrity sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg== - dependencies: - functional-red-black-tree "^1.0.1" - choices-separator@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/choices-separator/-/choices-separator-2.0.0.tgz#92fd1763182d79033f5c5c51d0ba352e5567c696" @@ -3885,11 +3249,6 @@ chokidar@3.5.3, chokidar@^3.4.0: optionalDependencies: fsevents "~2.3.2" -chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - chownr@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" @@ -3905,17 +3264,6 @@ ci-info@^3.2.0, ci-info@^3.6.1: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== -cids@^0.7.1: - version "0.7.5" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" - integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== - dependencies: - buffer "^5.5.0" - class-is "^1.1.0" - multibase "~0.6.0" - multicodec "^1.0.0" - multihashes "~0.4.15" - cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -3924,21 +3272,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -class-is@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" - integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - classic-level@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.3.0.tgz#5e36680e01dc6b271775c093f2150844c5edd5c8" @@ -3972,20 +3305,21 @@ cli-spinners@^2.5.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.8.0.tgz#e97a3e2bd00e6d85aa0c13d7f9e3ce236f7787fc" integrity sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ== +cli-table3@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -4032,18 +3366,6 @@ clone-deep@^1.0.0: kind-of "^5.0.0" shallow-clone "^1.0.0" -clone-response@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" - integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== - dependencies: - mimic-response "^1.0.0" - -clone@2.1.2, clone@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -4054,11 +3376,6 @@ cmd-shim@6.0.1: resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.1.tgz#a65878080548e1dca760b3aea1e21ed05194da9d" integrity sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q== -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -4096,6 +3413,11 @@ color-support@^1.1.3: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +colors@1.4.0, colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + columnify@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" @@ -4116,15 +3438,6 @@ command-exists@^1.2.8: resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== -command-line-args@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-4.0.7.tgz#f8d1916ecb90e9e121eda6428e41300bfb64cc46" - integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== - dependencies: - array-back "^2.0.0" - find-replace "^1.0.3" - typical "^2.6.1" - command-line-args@^5.1.1: version "5.2.1" resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" @@ -4155,6 +3468,11 @@ commander@^2.20.3: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^8.1.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + compare-func@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" @@ -4173,7 +3491,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.5.1: +concat-stream@^1.6.0, concat-stream@^1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -4205,15 +3523,6 @@ content-disposition@0.5.4: dependencies: safe-buffer "5.2.1" -content-hash@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" - integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== - dependencies: - cids "^0.7.1" - multicodec "^0.5.5" - multihashes "^0.4.15" - content-type@~1.0.4, content-type@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" @@ -4292,11 +3601,6 @@ conventional-recommended-bump@7.0.1: git-semver-tags "^5.0.0" meow "^8.1.2" -convert-source-map@^1.5.1: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -4312,11 +3616,6 @@ cookie@^0.4.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -cookiejar@^2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" - integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== - copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -4327,11 +3626,6 @@ core-js-pure@^3.0.1: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.30.1.tgz#7d93dc89e7d47b8ef05d7e79f507b0e99ea77eec" integrity sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg== -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -4342,14 +3636,6 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cors@^2.8.1: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - cosmiconfig@^8.2.0: version "8.3.6" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" @@ -4365,14 +3651,6 @@ crc-32@^1.2.0: resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" @@ -4384,7 +3662,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: +create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -4401,25 +3679,6 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-fetch@^2.1.0, cross-fetch@^2.1.1: - version "2.2.6" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.6.tgz#2ef0bb39a24ac034787965c457368a28730e220a" - integrity sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA== - dependencies: - node-fetch "^2.6.7" - whatwg-fetch "^2.0.4" - -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -4429,22 +3688,10 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" +"crypt@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== d@1, d@^1.0.1: version "1.0.1" @@ -4476,7 +3723,7 @@ death@^1.1.0: resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.6.6, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -4497,6 +3744,13 @@ debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, de dependencies: ms "2.1.2" +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + debug@^3.0.1, debug@^3.1.0: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -4512,7 +3766,7 @@ decamelize-keys@^1.1.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: +decamelize@^1.1.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== @@ -4522,25 +3776,6 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -decode-uri-component@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== - dependencies: - mimic-response "^1.0.0" - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - dedent@0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -4553,18 +3788,6 @@ deep-eql@^4.1.2: dependencies: type-detect "^4.0.0" -deep-equal@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - deep-extend@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -4582,29 +3805,12 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -defer-to-connect@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - -deferred-leveldown@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" - integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== - dependencies: - abstract-leveldown "~2.6.0" - -deferred-leveldown@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz#0b0570087827bf480a23494b398f04c128c19a20" - integrity sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww== +deferred-leveldown@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" + integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== dependencies: - abstract-leveldown "~5.0.0" + abstract-leveldown "~6.2.1" inherits "^2.0.3" define-lazy-prop@^2.0.0: @@ -4642,11 +3848,6 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -defined@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" - integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== - delay@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" @@ -4672,26 +3873,11 @@ deprecation@^2.0.0: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== - dependencies: - repeating "^2.0.0" - detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -4730,15 +3916,6 @@ diff@^5.0.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - difflib@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/difflib/-/difflib-0.2.4.tgz#b5e30361a6db023176d562892db85940a718f47e" @@ -4760,11 +3937,6 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - dot-prop@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -4792,18 +3964,6 @@ dotenv@~16.3.1: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== -dotignore@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" - integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== - dependencies: - minimatch "^3.0.4" - -duplexer3@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" - integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== - duplexer@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -4834,12 +3994,7 @@ ejs@^3.1.7: dependencies: jake "^10.8.5" -electron-to-chromium@^1.3.47: - version "1.4.363" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.363.tgz#a3d51d16169d8f212f00bafb78cf0667e24c3647" - integrity sha512-ReX5qgmSU7ybhzMuMdlJAdYnRhT90UB3k9M05O5nF5WH3wR5wgdJjXw0uDeFyKNhmglmQiOxkAbzrP0hMKM59g== - -elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: +elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -4852,6 +4007,11 @@ elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5 minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" +emittery@0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.0.tgz#bb373c660a9d421bb44706ec4967ed50c02a8026" + integrity sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -4872,25 +4032,24 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -encoding-down@5.0.4, encoding-down@~5.0.0: - version "5.0.4" - resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-5.0.4.tgz#1e477da8e9e9d0f7c8293d320044f8b2cd8e9614" - integrity sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw== +encoding-down@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b" + integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw== dependencies: - abstract-leveldown "^5.0.0" + abstract-leveldown "^6.2.1" inherits "^2.0.3" level-codec "^9.0.0" level-errors "^2.0.0" - xtend "^4.0.1" -encoding@^0.1.11, encoding@^0.1.13: +encoding@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -4926,7 +4085,7 @@ errno@~0.1.1: dependencies: prr "~1.0.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -5049,7 +4208,7 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== @@ -5208,130 +4367,26 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -eth-block-tracker@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz#95cd5e763c7293e0b1b2790a2a39ac2ac188a5e1" - integrity sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug== - dependencies: - eth-query "^2.1.0" - ethereumjs-tx "^1.3.3" - ethereumjs-util "^5.1.3" - ethjs-util "^0.1.3" - json-rpc-engine "^3.6.0" - pify "^2.3.0" - tape "^4.6.3" - -eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" - integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== - dependencies: - idna-uts46-hx "^2.3.1" - js-sha3 "^0.5.7" - -eth-json-rpc-infura@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz#26702a821067862b72d979c016fd611502c6057f" - integrity sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw== - dependencies: - cross-fetch "^2.1.1" - eth-json-rpc-middleware "^1.5.0" - json-rpc-engine "^3.4.0" - json-rpc-error "^2.0.0" - -eth-json-rpc-middleware@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz#5c9d4c28f745ccb01630f0300ba945f4bef9593f" - integrity sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q== - dependencies: - async "^2.5.0" - eth-query "^2.1.2" - eth-tx-summary "^3.1.2" - ethereumjs-block "^1.6.0" - ethereumjs-tx "^1.3.3" - ethereumjs-util "^5.1.2" - ethereumjs-vm "^2.1.0" - fetch-ponyfill "^4.0.0" - json-rpc-engine "^3.6.0" - json-rpc-error "^2.0.0" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - tape "^4.6.3" - -eth-lib@0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" - integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - xhr-request-promise "^0.1.2" - -eth-lib@^0.1.26: - version "0.1.29" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" - integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - nano-json-stream-parser "^0.1.2" - servify "^0.1.12" - ws "^3.0.0" - xhr-request-promise "^0.1.2" - -eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" - integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== - dependencies: - json-rpc-random-id "^1.0.0" - xtend "^4.0.1" - -eth-sig-util@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.0.tgz#75133b3d7c20a5731af0690c385e184ab942b97e" - integrity sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ== - dependencies: - buffer "^5.2.1" - elliptic "^6.4.0" - ethereumjs-abi "0.6.5" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.0" - tweetnacl-util "^0.15.0" - -eth-sig-util@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" - integrity sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw== - dependencies: - ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" - ethereumjs-util "^5.1.1" - -eth-tx-summary@^3.1.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz#e10eb95eb57cdfe549bf29f97f1e4f1db679035c" - integrity sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg== - dependencies: - async "^2.1.2" - clone "^2.0.0" - concat-stream "^1.5.1" - end-of-stream "^1.1.0" - eth-query "^2.0.2" - ethereumjs-block "^1.4.1" - ethereumjs-tx "^1.1.1" - ethereumjs-util "^5.0.1" - ethereumjs-vm "^2.6.0" - through2 "^2.0.3" - -ethashjs@~0.0.7: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ethashjs/-/ethashjs-0.0.8.tgz#227442f1bdee409a548fb04136e24c874f3aa6f9" - integrity sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw== +eth-gas-reporter@^0.2.25: + version "0.2.25" + resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz#546dfa946c1acee93cb1a94c2a1162292d6ff566" + integrity sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ== dependencies: - async "^2.1.2" - buffer-xor "^2.0.1" - ethereumjs-util "^7.0.2" - miller-rabin "^4.0.0" + "@ethersproject/abi" "^5.0.0-beta.146" + "@solidity-parser/parser" "^0.14.0" + cli-table3 "^0.5.0" + colors "1.4.0" + ethereum-cryptography "^1.0.3" + ethers "^4.0.40" + fs-readdir-recursive "^1.1.0" + lodash "^4.17.14" + markdown-table "^1.1.3" + mocha "^7.1.1" + req-cwd "^2.0.0" + request "^2.88.0" + request-promise-native "^1.0.5" + sha1 "^1.1.1" + sync-request "^6.0.0" ethereum-bloom-filters@^1.0.6: version "1.0.10" @@ -5340,16 +4395,6 @@ ethereum-bloom-filters@^1.0.6: dependencies: js-sha3 "^0.8.0" -ethereum-common@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" - integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== - -ethereum-common@^0.0.18: - version "0.0.18" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" - integrity sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ== - ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" @@ -5381,24 +4426,17 @@ ethereum-cryptography@^1.0.3, ethereum-cryptography@^1.1.2: "@scure/bip32" "1.1.5" "@scure/bip39" "1.1.1" -ethereum-waffle@^3.4.4: - version "3.4.4" - resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz#1378b72040697857b7f5e8f473ca8f97a37b5840" - integrity sha512-PA9+jCjw4WC3Oc5ocSMBj5sXvueWQeAbvCA+hUlb6oFgwwKyq5ka3bWQ7QZcjzIX+TdFkxP4IbFmoY2D8Dkj9Q== - dependencies: - "@ethereum-waffle/chai" "^3.4.4" - "@ethereum-waffle/compiler" "^3.4.4" - "@ethereum-waffle/mock-contract" "^3.4.4" - "@ethereum-waffle/provider" "^3.4.4" - ethers "^5.0.1" - -ethereumjs-abi@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" - integrity sha512-rCjJZ/AE96c/AAZc6O3kaog4FhOsAViaysBxqJNy2+LHP0ttH0zkZ7nXdVHOAyt6lFwLO0nlCwWszysG/ao1+g== +ethereum-waffle@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-4.0.10.tgz#f1ef1564c0155236f1a66c6eae362a5d67c9f64c" + integrity sha512-iw9z1otq7qNkGDNcMoeNeLIATF9yKl1M8AIeu42ElfNBplq0e+5PeasQmm8ybY/elkZ1XyRO0JBQxQdVRb8bqQ== dependencies: - bn.js "^4.10.0" - ethereumjs-util "^4.3.0" + "@ethereum-waffle/chai" "4.0.10" + "@ethereum-waffle/compiler" "4.0.3" + "@ethereum-waffle/mock-contract" "4.0.4" + "@ethereum-waffle/provider" "4.0.5" + solc "0.8.15" + typechain "^8.0.0" ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: version "0.6.8" @@ -5408,96 +4446,29 @@ ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: bn.js "^4.11.8" ethereumjs-util "^6.0.0" -"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": - version "0.6.8" - resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0" - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - -ethereumjs-account@3.0.0, ethereumjs-account@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz#728f060c8e0c6e87f1e987f751d3da25422570a9" - integrity sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA== - dependencies: - ethereumjs-util "^6.0.0" - rlp "^2.2.1" - safe-buffer "^5.1.1" - -ethereumjs-account@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" - integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== - dependencies: - ethereumjs-util "^5.0.0" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-block@2.2.2, ethereumjs-block@^2.2.2, ethereumjs-block@~2.2.0, ethereumjs-block@~2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" - integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== - dependencies: - async "^2.0.1" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.1" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0: - version "1.7.1" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f" - integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== - dependencies: - async "^2.0.1" - ethereum-common "0.2.0" - ethereumjs-tx "^1.2.2" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-blockchain@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz#30f2228dc35f6dcf94423692a6902604ae34960f" - integrity sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ== - dependencies: - async "^2.6.1" - ethashjs "~0.0.7" - ethereumjs-block "~2.2.2" - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.1.0" - flow-stoplight "^1.0.0" - level-mem "^3.0.1" - lru-cache "^5.1.1" - rlp "^2.2.2" - semaphore "^1.1.0" - -ethereumjs-common@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz#d3e82fc7c47c0cef95047f431a99485abc9bb1cd" - integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== - -ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" - integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== - -ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" - integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== +ethereumjs-util@*, ethereumjs-util@^7.0.7, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.3, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== dependencies: - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.0.0" + "@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" -ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" - integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== +ethereumjs-util@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.3.tgz#b55d7b64dde3e3e45749e4c41288238edec32d23" + integrity sha512-y+82tEbyASO0K0X1/SRhbJJoAlfcvq8JbrG4a5cjrOks7HS/36efU/0j2flxCPOUM++HFahk33kr/ZxyC4vNuw== dependencies: - ethereum-common "^0.0.18" - ethereumjs-util "^5.0.0" + "@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" -ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0, ethereumjs-util@^6.2.1: +ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== @@ -5510,95 +4481,22 @@ ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumj ethjs-util "0.1.6" rlp "^2.2.3" -ethereumjs-util@^4.3.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz#f4bf9b3b515a484e3cc8781d61d9d980f7c83bd0" - integrity sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w== - dependencies: - bn.js "^4.8.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - rlp "^2.0.0" - -ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" - integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "^0.1.3" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: - version "7.1.5" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" - integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== - 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" - -ethereumjs-vm@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz#e885e861424e373dbc556278f7259ff3fca5edab" - integrity sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - core-js-pure "^3.0.1" - ethereumjs-account "^3.0.0" - ethereumjs-block "^2.2.2" - ethereumjs-blockchain "^4.0.3" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.2" - ethereumjs-util "^6.2.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - util.promisify "^1.0.0" - -ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" - integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - ethereumjs-account "^2.0.3" - ethereumjs-block "~2.2.0" - ethereumjs-common "^1.1.0" - ethereumjs-util "^6.0.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - -ethereumjs-wallet@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz#685e9091645cee230ad125c007658833991ed474" - integrity sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA== +ethers@^4.0.40: + version "4.0.49" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" + integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== dependencies: - aes-js "^3.1.1" - bs58check "^2.1.2" - ethereum-cryptography "^0.1.3" - ethereumjs-util "^6.0.0" - randombytes "^2.0.6" - safe-buffer "^5.1.2" - scryptsy "^1.2.1" - utf8 "^3.0.0" - uuid "^3.3.2" - -ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2, ethers@^5.6.9, ethers@^5.7.1: + aes-js "3.0.0" + bn.js "^4.11.9" + elliptic "6.5.4" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.4" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + +ethers@^5.6.9, ethers@^5.7.1: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== @@ -5642,7 +4540,7 @@ ethjs-unit@0.1.6: bn.js "4.11.6" number-to-bn "1.7.0" -ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: +ethjs-util@0.1.6, ethjs-util@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== @@ -5655,22 +4553,12 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter3@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: +evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== @@ -5708,20 +4596,7 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -express@^4.14.0, express@^4.18.2: +express@^4.18.2: version "4.18.2" resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== @@ -5772,14 +4647,6 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -5794,20 +4661,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -5823,13 +4676,6 @@ eyes@^0.1.8: resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== -fake-merkle-patricia-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" - integrity sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA== - dependencies: - checkpoint-store "^1.1.0" - fancy-test@^1.4.7: version "1.4.10" resolved "https://registry.yarnpkg.com/fancy-test/-/fancy-test-1.4.10.tgz#310be93d4aa45d788bce56a573ae4d1b92b2e1a0" @@ -5893,13 +4739,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fetch-ponyfill@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" - integrity sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g== - dependencies: - node-fetch "~1.7.1" - figures@3.2.0, figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -5921,16 +4760,6 @@ filelist@^1.0.1: dependencies: minimatch "^5.0.1" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -5951,14 +4780,6 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-replace@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-1.0.3.tgz#b88e7364d2d9c959559f388c66670d6130441fa0" - integrity sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA== - dependencies: - array-back "^1.0.4" - test-value "^2.1.0" - find-replace@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" @@ -5981,14 +4802,6 @@ find-up@5.0.0, find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -6004,21 +4817,6 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-yarn-workspace-root@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" - integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== - dependencies: - fs-extra "^4.0.3" - micromatch "^3.1.4" - -find-yarn-workspace-root@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" - integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== - dependencies: - micromatch "^4.0.2" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -6044,17 +4842,12 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -flow-stoplight@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" - integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== - follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.15.0: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== -for-each@^0.3.3, for-each@~0.3.3: +for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== @@ -6066,7 +4859,7 @@ for-in@^0.1.3: resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" integrity sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g== -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== @@ -6091,6 +4884,15 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== +form-data@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + form-data@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" @@ -6133,13 +4935,6 @@ fp-ts@^1.0.0: resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -6170,15 +4965,6 @@ fs-extra@^11.1.0, fs-extra@^11.1.1: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^4.0.2, fs-extra@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -6197,7 +4983,7 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.1.0: +fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -6207,13 +4993,6 @@ fs-extra@^9.0.0, fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -6228,6 +5007,11 @@ fs-minipass@^3.0.0: dependencies: minipass "^4.0.0" +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -6268,42 +5052,22 @@ functions-have-names@^1.2.2: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -ganache-core@^2.13.2: - version "2.13.2" - resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.13.2.tgz#27e6fc5417c10e6e76e2e646671869d7665814a3" - integrity sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw== +ganache@7.4.3: + version "7.4.3" + resolved "https://registry.yarnpkg.com/ganache/-/ganache-7.4.3.tgz#e995f1250697264efbb34d4241c374a2b0271415" + integrity sha512-RpEDUiCkqbouyE7+NMXG26ynZ+7sGiODU84Kz+FVoXUnQ4qQM4M8wif3Y4qUCt+D/eM1RVeGq0my62FPD6Y1KA== dependencies: - abstract-leveldown "3.0.0" - async "2.6.2" - bip39 "2.5.0" - cachedown "1.0.0" - clone "2.1.2" - debug "3.2.6" - encoding-down "5.0.4" - eth-sig-util "3.0.0" - ethereumjs-abi "0.6.8" - ethereumjs-account "3.0.0" - ethereumjs-block "2.2.2" - ethereumjs-common "1.5.0" - ethereumjs-tx "2.1.2" - ethereumjs-util "6.2.1" - ethereumjs-vm "4.2.0" - heap "0.2.6" - keccak "3.0.1" - level-sublevel "6.6.4" - levelup "3.1.1" - lodash "4.17.20" - lru-cache "5.1.1" - merkle-patricia-tree "3.0.0" - patch-package "6.2.2" - seedrandom "3.0.1" - source-map-support "0.5.12" - tmp "0.1.0" - web3-provider-engine "14.2.1" - websocket "1.0.32" + "@trufflesuite/bigint-buffer" "1.1.10" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "5.1.1" + "@types/seedrandom" "3.0.1" + emittery "0.10.0" + keccak "3.0.2" + leveldown "6.1.0" + secp256k1 "4.0.3" optionalDependencies: - ethereumjs-wallet "0.6.5" - web3 "1.2.11" + bufferutil "4.0.5" + utf-8-validate "5.0.7" gauge@^4.0.3: version "4.0.4" @@ -6319,7 +5083,7 @@ gauge@^4.0.3: strip-ansi "^6.0.1" wide-align "^1.1.5" -get-caller-file@^1.0.1, get-caller-file@^1.0.2: +get-caller-file@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== @@ -6330,9 +5094,9 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: version "1.2.0" @@ -6363,25 +5127,16 @@ get-port@5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + get-stream@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -6395,11 +5150,6 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -6546,7 +5296,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.2.3: +glob@^7.0.0, glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -6595,14 +5345,6 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -global@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - globals@^13.19.0: version "13.20.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" @@ -6610,11 +5352,6 @@ globals@^13.19.0: dependencies: type-fest "^0.20.2" -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - globalthis@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" @@ -6655,40 +5392,6 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -got@9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -got@^11.8.5: - version "11.8.6" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" - integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== - dependencies: - "@sindresorhus/is" "^4.0.0" - "@szmarczak/http-timer" "^4.0.5" - "@types/cacheable-request" "^6.0.1" - "@types/responselike" "^1.0.0" - cacheable-lookup "^5.0.3" - cacheable-request "^7.0.2" - decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.2" - lowercase-keys "^2.0.0" - p-cancelable "^2.0.0" - responselike "^2.0.0" - graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -6734,6 +5437,15 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== +hardhat-gas-reporter@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz#9a2afb354bc3b6346aab55b1c02ca556d0e16450" + integrity sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg== + dependencies: + array-uniq "1.0.3" + eth-gas-reporter "^0.2.25" + sha1 "^1.1.1" + hardhat@^2.12.7: version "2.13.1" resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.13.1.tgz#12380aef6aa8ce67517e8ee166998be5ced8970e" @@ -6790,13 +5502,6 @@ hardhat@^2.12.7: uuid "^8.3.2" ws "^7.4.6" -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== - dependencies: - ansi-regex "^2.0.0" - has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" @@ -6829,7 +5534,7 @@ has-proto@^1.0.1: resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== -has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^1.0.0, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== @@ -6846,38 +5551,7 @@ has-unicode@2.0.1, has-unicode@^2.0.1: resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3, has@~1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -6893,6 +5567,14 @@ hash-base@^3.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" +hash.js@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" @@ -6906,11 +5588,6 @@ he@1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -heap@0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" - integrity sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ== - "heap@>= 0.2.0": version "0.2.7" resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc" @@ -6925,14 +5602,6 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -6959,7 +5628,17 @@ hosted-git-info@^6.0.0: dependencies: lru-cache "^7.5.1" -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: +http-basic@^8.1.1: + version "8.1.3" + resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" + integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== + dependencies: + caseless "^0.12.0" + concat-stream "^1.6.2" + http-response-object "^3.0.1" + parse-cache-control "^1.0.1" + +http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== @@ -6975,11 +5654,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-https@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" - integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== - http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" @@ -6989,6 +5663,13 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" +http-response-object@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" + integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== + dependencies: + "@types/node" "^10.0.3" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -6998,14 +5679,6 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -http2-wrapper@^1.0.0-beta.5.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" - integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.0.0" - https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -7045,13 +5718,6 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -idna-uts46-hx@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" - integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== - dependencies: - punycode "2.1.0" - ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -7135,7 +5801,7 @@ info-symbol@^0.1.0: resolved "https://registry.yarnpkg.com/info-symbol/-/info-symbol-0.1.0.tgz#27841d72867ddb4242cd612d79c10633881c6a78" integrity sha512-qkc9wjLDQ+dYYZnY5uJXGNNHyZ0UOMDUnhvy0SEZGVVYmQ5s4i8cPAin2MbU6OxJgi8dfj/AnwqPx0CJE6+Lsw== -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -7193,18 +5859,6 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== - io-ts@1.10.4: version "1.10.4" resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" @@ -7236,14 +5890,6 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" @@ -7302,13 +5948,6 @@ is-ci@3.0.1: dependencies: ci-info "^3.2.0" -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.8.1: version "2.12.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" @@ -7365,35 +6004,11 @@ is-extendable@^0.1.0, is-extendable@^0.1.1: resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" - integrity sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -7404,11 +6019,6 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-function@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== - is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -7480,7 +6090,7 @@ is-plain-obj@^2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== @@ -7492,7 +6102,7 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.4: +is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -7519,11 +6129,6 @@ is-stream@2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-stream@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -7576,11 +6181,6 @@ is-url@^1.2.4: resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== - is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -7588,12 +6188,12 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.1.1, is-wsl@^2.2.0: +is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -7605,7 +6205,7 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== -isarray@1.0.0, isarray@~1.0.0: +isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== @@ -7615,13 +6215,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" @@ -7694,26 +6287,21 @@ js-sdsl@^4.1.4: resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== +js-sha3@0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== -js-sha3@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== - js-yaml@3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" @@ -7742,25 +6330,12 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== +json-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" + integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== + dependencies: + bignumber.js "^9.0.0" json-parse-better-errors@^1.0.1: version "1.0.2" @@ -7777,30 +6352,6 @@ json-parse-even-better-errors@^3.0.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz#2cb2ee33069a78870a0c7e3da560026b89669cf7" integrity sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA== -json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz#9d4ff447241792e1d0a232f6ef927302bb0c62a9" - integrity sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA== - dependencies: - async "^2.0.1" - babel-preset-env "^1.7.0" - babelify "^7.3.0" - json-rpc-error "^2.0.0" - promise-to-callback "^1.0.0" - safe-event-emitter "^1.0.1" - -json-rpc-error@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" - integrity sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug== - dependencies: - inherits "^2.0.1" - -json-rpc-random-id@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" - integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -7821,23 +6372,11 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json-stable-stringify@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" - integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== - dependencies: - jsonify "^0.0.1" - json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== - json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -7871,11 +6410,6 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonify@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" - integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== - jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" @@ -7909,6 +6443,15 @@ keccak@3.0.1: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" +keccak@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" + integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + keccak@^3.0.0, keccak@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" @@ -7918,34 +6461,13 @@ keccak@^3.0.0, keccak@^3.0.2: node-gyp-build "^4.2.0" readable-stream "^3.6.0" -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -keyv@^4.0.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" - integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== - dependencies: - json-buffer "3.0.1" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: +kind-of@^3.0.2, kind-of@^3.0.3: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: is-buffer "^1.1.5" -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - kind-of@^5.0.0, kind-of@^5.0.2: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" @@ -7956,13 +6478,6 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -klaw-sync@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" - integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== - dependencies: - graceful-fs "^4.1.11" - klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -7982,13 +6497,6 @@ lazy-cache@^2.0.1: dependencies: set-getter "^0.1.0" -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== - dependencies: - invert-kv "^1.0.0" - lerna@^7.3.0: version "7.3.0" resolved "https://registry.yarnpkg.com/lerna/-/lerna-7.3.0.tgz#efecafbdce15694e2f6841256e073a3a2061053e" @@ -8077,17 +6585,17 @@ level-codec@^9.0.0: dependencies: buffer "^5.6.0" -level-codec@~7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" - integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== - -level-errors@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" - integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== +level-concat-iterator@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf" + integrity sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ== dependencies: - errno "~0.1.1" + catering "^2.1.0" + +level-concat-iterator@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263" + integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== level-errors@^2.0.0, level-errors@~2.0.0: version "2.0.1" @@ -8096,85 +6604,48 @@ level-errors@^2.0.0, level-errors@~2.0.0: dependencies: errno "~0.1.1" -level-errors@~1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" - integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== - dependencies: - errno "~0.1.1" - -level-iterator-stream@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz#ccfff7c046dcf47955ae9a86f46dfa06a31688b4" - integrity sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.5" - xtend "^4.0.0" - -level-iterator-stream@~1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" - integrity sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw== - dependencies: - inherits "^2.0.1" - level-errors "^1.0.3" - readable-stream "^1.0.33" - xtend "^4.0.0" - -level-iterator-stream@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz#2c98a4f8820d87cdacab3132506815419077c730" - integrity sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g== - dependencies: - inherits "^2.0.1" - readable-stream "^2.3.6" - xtend "^4.0.0" - -level-mem@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-3.0.1.tgz#7ce8cf256eac40f716eb6489654726247f5a89e5" - integrity sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg== +level-iterator-stream@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" + integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== dependencies: - level-packager "~4.0.0" - memdown "~3.0.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + xtend "^4.0.2" -level-packager@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-4.0.1.tgz#7e7d3016af005be0869bc5fa8de93d2a7f56ffe6" - integrity sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q== +level-mem@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-5.0.1.tgz#c345126b74f5b8aa376dc77d36813a177ef8251d" + integrity sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg== dependencies: - encoding-down "~5.0.0" - levelup "^3.0.0" + level-packager "^5.0.3" + memdown "^5.0.0" -level-post@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/level-post/-/level-post-1.0.7.tgz#19ccca9441a7cc527879a0635000f06d5e8f27d0" - integrity sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew== +level-packager@^5.0.3: + version "5.1.1" + resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939" + integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== dependencies: - ltgt "^2.1.2" + encoding-down "^6.3.0" + levelup "^4.3.2" -level-sublevel@6.6.4: - version "6.6.4" - resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-6.6.4.tgz#f7844ae893919cd9d69ae19d7159499afd5352ba" - integrity sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA== - dependencies: - bytewise "~1.1.0" - level-codec "^9.0.0" - level-errors "^2.0.0" - level-iterator-stream "^2.0.3" - ltgt "~2.1.1" - pull-defer "^0.2.2" - pull-level "^2.0.3" - pull-stream "^3.6.8" - typewiselite "~1.0.0" - xtend "~4.0.0" +level-supports@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" + integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== level-supports@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== +level-supports@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" + integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== + dependencies: + xtend "^4.0.2" + level-transcoder@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" @@ -8183,21 +6654,13 @@ level-transcoder@^1.0.1: buffer "^6.0.3" module-error "^1.0.1" -level-ws@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" - integrity sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw== - dependencies: - readable-stream "~1.0.15" - xtend "~2.1.1" - -level-ws@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-1.0.0.tgz#19a22d2d4ac57b18cc7c6ecc4bd23d899d8f603b" - integrity sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q== +level-ws@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-2.0.0.tgz#207a07bcd0164a0ec5d62c304b4615c54436d339" + integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA== dependencies: inherits "^2.0.3" - readable-stream "^2.2.8" + readable-stream "^3.1.0" xtend "^4.0.1" level@^8.0.0: @@ -8208,27 +6671,24 @@ level@^8.0.0: browser-level "^1.0.1" classic-level "^1.2.0" -levelup@3.1.1, levelup@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-3.1.1.tgz#c2c0b3be2b4dc316647c53b42e2f559e232d2189" - integrity sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg== +leveldown@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.0.tgz#7ab1297706f70c657d1a72b31b40323aa612b9ee" + integrity sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w== dependencies: - deferred-leveldown "~4.0.0" - level-errors "~2.0.0" - level-iterator-stream "~3.0.0" - xtend "~4.0.0" + abstract-leveldown "^7.2.0" + napi-macros "~2.0.0" + node-gyp-build "^4.3.0" -levelup@^1.2.1: - version "1.3.9" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" - integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== +levelup@^4.3.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6" + integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== dependencies: - deferred-leveldown "~1.2.1" - level-codec "~7.0.0" - level-errors "~1.0.3" - level-iterator-stream "~1.3.0" - prr "~1.0.1" - semver "~5.4.1" + deferred-leveldown "~5.3.0" + level-errors "~2.0.0" + level-iterator-stream "~4.0.0" + level-supports "~1.0.0" xtend "~4.0.0" levn@^0.4.1: @@ -8289,17 +6749,6 @@ load-json-file@6.2.0: strip-bom "^4.0.0" type-fest "^0.6.0" -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -8340,11 +6789,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.assign@^4.0.3, lodash.assign@^4.0.6: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== - lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -8370,12 +6814,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== -lodash@4.17.20: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16, lodash@^4.17.21, lodash@^4.17.4: +lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16, lodash@^4.17.19, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -8416,23 +6855,6 @@ log-utils@^0.2.1: time-stamp "^1.0.1" warning-symbol "^0.1.0" -looper@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" - integrity sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ== - -looper@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" - integrity sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg== - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - loupe@^2.3.1: version "2.3.6" resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" @@ -8440,30 +6862,13 @@ loupe@^2.3.1: dependencies: get-func-name "^2.0.0" -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@5.1.1, lru-cache@^5.1.1: +lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" -lru-cache@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" - integrity sha512-91gyOKTc2k66UG6kHiH4h3S2eltcPwE1STVfMYC/NG+nZwf8IIuiamfmpGZjpbbxzSyEJaLC0tNSmhjlQUTJow== - dependencies: - pseudomap "^1.0.1" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -8491,16 +6896,11 @@ lru_map@^0.3.3: resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== -ltgt@^2.1.2, ltgt@~2.2.0: +ltgt@~2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== -ltgt@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" - integrity sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw== - lz-string@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" @@ -8590,11 +6990,6 @@ make-fetch-happen@^11.1.1: socks-proxy-agent "^7.0.0" ssri "^10.0.0" -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -8612,6 +7007,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-table@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== + mcl-wasm@^0.7.1: version "0.7.9" resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" @@ -8631,29 +7031,17 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -memdown@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" - integrity sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w== - dependencies: - abstract-leveldown "~2.7.1" - functional-red-black-tree "^1.0.1" - immediate "^3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" - -memdown@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-3.0.0.tgz#93aca055d743b20efc37492e9e399784f2958309" - integrity sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA== +memdown@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-5.1.0.tgz#608e91a9f10f37f5b5fe767667a8674129a833cb" + integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw== dependencies: - abstract-leveldown "~5.0.0" + abstract-leveldown "~6.2.1" functional-red-black-tree "~1.0.1" immediate "~3.2.3" inherits "~2.0.1" ltgt "~2.2.0" - safe-buffer "~5.1.1" + safe-buffer "~5.2.0" memory-level@^1.0.0: version "1.0.0" @@ -8701,58 +7089,24 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -merkle-patricia-tree@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz#448d85415565df72febc33ca362b8b614f5a58f8" - integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== - dependencies: - async "^2.6.1" - ethereumjs-util "^5.2.0" - level-mem "^3.0.1" - level-ws "^1.0.0" - readable-stream "^3.0.6" - rlp "^2.0.0" - semaphore ">=1.0.1" - -merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" - integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== - dependencies: - async "^1.4.2" - ethereumjs-util "^5.0.0" - level-ws "0.0.0" - levelup "^1.2.1" - memdown "^1.0.0" - readable-stream "^2.0.0" - rlp "^2.0.0" - semaphore ">=1.0.1" +merkle-patricia-tree@^4.2.2, merkle-patricia-tree@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz#ff988d045e2bf3dfa2239f7fabe2d59618d57413" + integrity sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w== + dependencies: + "@types/levelup" "^4.3.0" + ethereumjs-util "^7.1.4" + level-mem "^5.0.1" + level-ws "^2.0.0" + readable-stream "^3.6.0" + semaphore-async-await "^1.5.1" methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2, micromatch@^4.0.4: +micromatch@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -8773,7 +7127,7 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -8790,23 +7144,6 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== - dependencies: - dom-walk "^0.1.0" - min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" @@ -8843,6 +7180,13 @@ minimatch@3.0.5: dependencies: brace-expansion "^1.1.7" +minimatch@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + dependencies: + brace-expansion "^1.1.7" + minimatch@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" @@ -8887,7 +7231,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.7: +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -8950,14 +7294,6 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: version "3.3.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" @@ -8980,13 +7316,6 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.3.tgz#05ea638da44e475037ed94d1c7efcc76a25e1974" integrity sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg== -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -8995,14 +7324,6 @@ minizlib@^2.1.1, minizlib@^2.1.2: minipass "^3.0.0" yallist "^4.0.0" -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - mixin-object@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" @@ -9011,18 +7332,6 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp-promise@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" - integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== - dependencies: - mkdirp "*" - -mkdirp@*: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.0.tgz#758101231418bda24435c0888a91d9bd91f1372d" - integrity sha512-7+JDnNsyCvZXoUJdkMR0oUE2AmAdsNXGTmRbiOjYIwQ6q+bL6NwrozGQdPcmYaNcrhH37F50HHBUzoaBV6FITQ== - mkdirp@0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -9030,7 +7339,7 @@ mkdirp@0.5.5: dependencies: minimist "^1.2.5" -mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.5: +mkdirp@0.5.x, mkdirp@^0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -9049,10 +7358,67 @@ mnemonist@^0.38.0: dependencies: obliterator "^2.0.0" -mocha@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.1.2.tgz#8e40d198acf91a52ace122cd7599c9ab857b29e6" - integrity sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA== +mocha@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.1.2.tgz#8e40d198acf91a52ace122cd7599c9ab857b29e6" + integrity sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + chokidar "3.3.0" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "3.0.0" + minimatch "3.0.4" + mkdirp "0.5.5" + ms "2.1.1" + node-environment-flags "1.0.6" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "1.6.0" + +mocha@^10.0.0, mocha@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== + dependencies: + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +mocha@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" + integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== dependencies: ansi-colors "3.2.3" browser-stdout "1.3.1" @@ -9079,38 +7445,36 @@ mocha@7.1.2: yargs-parser "13.1.2" yargs-unparser "1.6.0" -mocha@^10.0.0, mocha@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" - integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== +mocha@^9.1.3: + version "9.2.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== dependencies: + "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" chokidar "3.5.3" - debug "4.3.4" + debug "4.3.3" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" glob "7.2.0" + growl "1.10.5" he "1.2.0" js-yaml "4.1.0" log-symbols "4.1.0" - minimatch "5.0.1" + minimatch "4.2.1" ms "2.1.3" - nanoid "3.3.3" + nanoid "3.3.1" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" - workerpool "6.2.1" + which "2.0.2" + workerpool "6.2.0" yargs "16.2.0" yargs-parser "20.2.4" yargs-unparser "2.0.0" -mock-fs@^4.1.0: - version "4.14.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" - integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== - mock-require@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/mock-require/-/mock-require-3.0.3.tgz#ccd544d9eae81dd576b3f219f69ec867318a1946" @@ -9159,46 +7523,6 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multibase@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" - integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multibase@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" - integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multicodec@^0.5.5: - version "0.5.7" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" - integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== - dependencies: - varint "^5.0.0" - -multicodec@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" - integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== - dependencies: - buffer "^5.6.0" - varint "^5.0.0" - -multihashes@^0.4.15, multihashes@~0.4.15: - version "0.4.21" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" - integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== - dependencies: - buffer "^5.5.0" - multibase "^0.7.0" - varint "^5.0.0" - multimatch@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" @@ -9225,38 +7549,26 @@ mute-stream@~1.0.0: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== -nano-json-stream-parser@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" - integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== +nanoid@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== nanoid@3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - napi-macros@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== +napi-macros@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" + integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== + natural-compare-lite@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" @@ -9282,11 +7594,6 @@ next-tick@^1.1.0: resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - nise@^5.1.2: version "5.1.4" resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.4.tgz#491ce7e7307d4ec546f5a659b2efe94a18b4bbc0" @@ -9350,20 +7657,22 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" -node-fetch@^2.6.1, node-fetch@^2.6.7: +node-fetch@^2.6.7: version "2.6.9" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== dependencies: whatwg-url "^5.0.0" -node-fetch@~1.7.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" +node-gyp-build@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" + integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== + +node-gyp-build@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" + integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: version "4.6.0" @@ -9452,16 +7761,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - npm-bundled@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" @@ -9582,11 +7881,6 @@ npmlog@^6.0.0, npmlog@^6.0.2: gauge "^4.0.3" set-blocking "^2.0.0" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - number-to-bn@1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" @@ -9595,16 +7889,15 @@ number-to-bn@1.7.0: bn.js "4.11.6" strip-hex-prefix "1.0.0" -nx@15.9.2, nx@^15.9.2: - version "15.9.2" - resolved "https://registry.yarnpkg.com/nx/-/nx-15.9.2.tgz#d7ace1e5ae64a47f1b553dc5da08dbdd858bde96" - integrity sha512-wtcs+wsuplSckvgk+bV+/XuGlo+sVWzSG0RpgWBjQYeqA3QsVFEAPVY66Z5cSoukDbTV77ddcAjEw+Rz8oOR1A== +nx@16.5.5, nx@^16.5.5: + version "16.5.5" + resolved "https://registry.yarnpkg.com/nx/-/nx-16.5.5.tgz#2b67150b72637647e10562b40a74d1ca62bd07a0" + integrity sha512-DHwoUtkirI52JIlCtRK78UI/Ik/VgCtM6FlkfPnFsy8PVyTYMQ40KoG6aZLHjqj5qxoGG2CUjcsbFjGXYrjDbw== dependencies: - "@nrwl/cli" "15.9.2" - "@nrwl/tao" "15.9.2" + "@nrwl/tao" "16.5.5" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" - "@yarnpkg/parsers" "^3.0.0-rc.18" + "@yarnpkg/parsers" "3.0.0-rc.46" "@zkochan/js-yaml" "0.0.6" axios "^1.0.0" chalk "^4.1.0" @@ -9625,7 +7918,7 @@ nx@15.9.2, nx@^15.9.2: minimatch "3.0.5" npm-run-path "^4.0.1" open "^8.4.0" - semver "7.3.4" + semver "7.5.3" string-width "^4.2.3" strong-log-transformer "^2.1.0" tar-stream "~2.2.0" @@ -9636,15 +7929,16 @@ nx@15.9.2, nx@^15.9.2: yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nrwl/nx-darwin-arm64" "15.9.2" - "@nrwl/nx-darwin-x64" "15.9.2" - "@nrwl/nx-linux-arm-gnueabihf" "15.9.2" - "@nrwl/nx-linux-arm64-gnu" "15.9.2" - "@nrwl/nx-linux-arm64-musl" "15.9.2" - "@nrwl/nx-linux-x64-gnu" "15.9.2" - "@nrwl/nx-linux-x64-musl" "15.9.2" - "@nrwl/nx-win32-arm64-msvc" "15.9.2" - "@nrwl/nx-win32-x64-msvc" "15.9.2" + "@nx/nx-darwin-arm64" "16.5.5" + "@nx/nx-darwin-x64" "16.5.5" + "@nx/nx-freebsd-x64" "16.5.5" + "@nx/nx-linux-arm-gnueabihf" "16.5.5" + "@nx/nx-linux-arm64-gnu" "16.5.5" + "@nx/nx-linux-arm64-musl" "16.5.5" + "@nx/nx-linux-x64-gnu" "16.5.5" + "@nx/nx-linux-x64-musl" "16.5.5" + "@nx/nx-win32-arm64-msvc" "16.5.5" + "@nx/nx-win32-x64-msvc" "16.5.5" nx@16.9.0, "nx@>=16.5.1 < 17": version "16.9.0" @@ -9704,7 +7998,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4, object-assign@^4.0.0, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -9718,29 +8012,16 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.12.3, object-inspect@^1.9.0, object-inspect@~1.12.3: +object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - object-keys@^1.0.11, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -9768,7 +8049,7 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1: +object.getownpropertydescriptors@^2.0.3: version "2.1.5" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz#db5a9002489b64eef903df81d6623c07e5b4b4d3" integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== @@ -9778,25 +8059,11 @@ object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1 define-properties "^1.1.4" es-abstract "^1.20.4" -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - obliterator@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== -oboe@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" - integrity sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ== - dependencies: - http-https "^1.0.0" - on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -9804,7 +8071,7 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@1.x, once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -9818,14 +8085,6 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@^7.4.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - open@^8.4.0: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" @@ -9874,33 +8133,11 @@ ora@^5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== - dependencies: - lcid "^1.0.0" - -os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -10040,28 +8277,10 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-headers@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" - integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== - dependencies: - error-ex "^1.2.0" +parse-cache-control@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" + integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== parse-json@^4.0.0: version "4.0.0" @@ -10100,61 +8319,11 @@ parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - -patch-package@6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.2.tgz#71d170d650c65c26556f0d0fbbb48d92b6cc5f39" - integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^2.4.2" - cross-spawn "^6.0.5" - find-yarn-workspace-root "^1.2.1" - fs-extra "^7.0.1" - is-ci "^2.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.0" - rimraf "^2.6.3" - semver "^5.6.0" - slash "^2.0.0" - tmp "^0.0.33" - -patch-package@^6.2.2: - version "6.5.1" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.5.1.tgz#3e5d00c16997e6160291fee06a521c42ac99b621" - integrity sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^4.1.2" - cross-spawn "^6.0.5" - find-yarn-workspace-root "^2.0.0" - fs-extra "^9.0.0" - is-ci "^2.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.6" - open "^7.4.2" - rimraf "^2.6.3" - semver "^5.6.0" - slash "^2.0.0" - tmp "^0.0.33" - yaml "^1.10.2" - path-browserify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== - dependencies: - pinkie-promise "^2.0.0" - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -10165,16 +8334,11 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -10213,15 +8377,6 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -10239,7 +8394,7 @@ pathval@^1.1.1: resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== -pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: +pbkdf2@^3.0.17, pbkdf2@^3.0.9: version "3.1.2" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== @@ -10265,7 +8420,7 @@ pify@5.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== -pify@^2.0.0, pify@^2.3.0: +pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== @@ -10280,18 +8435,6 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== - pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -10304,21 +8447,6 @@ pointer-symbol@^1.0.0: resolved "https://registry.yarnpkg.com/pointer-symbol/-/pointer-symbol-1.0.0.tgz#60f9110204ea7a929b62644a21315543cbb3d447" integrity sha512-pozTTFO3kG9HQWXCSTJkCgq4fBF8lUQf+5bLddTEW6v4zdjQhcBVfLmKzABEMJMA7s8jhzi0sgANIwdrf4kq+A== -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - -postinstall-postinstall@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" - integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== - -precond@0.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" - integrity sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ== - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -10329,11 +8457,6 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== - prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -10350,7 +8473,7 @@ prettier-plugin-solidity@^1.1.2: semver "^7.3.8" solidity-comments-extractor "^0.0.7" -prettier@^2.1.2, prettier@^2.3.1, prettier@^2.8.4: +prettier@^2.3.1, prettier@^2.8.4: version "2.8.7" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== @@ -10364,11 +8487,6 @@ pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" -private@^0.1.6, private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - proc-log@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" @@ -10379,11 +8497,6 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -10397,13 +8510,12 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -promise-to-callback@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" - integrity sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA== +promise@^8.0.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== dependencies: - is-fn "^1.0.0" - set-immediate-shim "^1.0.1" + asap "~2.0.6" prompt-actions@^3.0.2: version "3.0.2" @@ -10505,94 +8617,16 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== - psl@^1.1.28: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pull-cat@^1.1.9: - version "1.1.11" - resolved "https://registry.yarnpkg.com/pull-cat/-/pull-cat-1.1.11.tgz#b642dd1255da376a706b6db4fa962f5fdb74c31b" - integrity sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg== - -pull-defer@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/pull-defer/-/pull-defer-0.2.3.tgz#4ee09c6d9e227bede9938db80391c3dac489d113" - integrity sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA== - -pull-level@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pull-level/-/pull-level-2.0.4.tgz#4822e61757c10bdcc7cf4a03af04c92734c9afac" - integrity sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg== - dependencies: - level-post "^1.0.7" - pull-cat "^1.1.9" - pull-live "^1.0.1" - pull-pushable "^2.0.0" - pull-stream "^3.4.0" - pull-window "^2.1.4" - stream-to-pull-stream "^1.7.1" - -pull-live@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/pull-live/-/pull-live-1.0.1.tgz#a4ecee01e330155e9124bbbcf4761f21b38f51f5" - integrity sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA== - dependencies: - pull-cat "^1.1.9" - pull-stream "^3.4.0" - -pull-pushable@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/pull-pushable/-/pull-pushable-2.2.0.tgz#5f2f3aed47ad86919f01b12a2e99d6f1bd776581" - integrity sha512-M7dp95enQ2kaHvfCt2+DJfyzgCSpWVR2h2kWYnVsW6ZpxQBx5wOu0QWOvQPVoPnBLUZYitYP2y7HyHkLQNeGXg== - -pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8: - version "3.7.0" - resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.7.0.tgz#85de0e44ff38a4d2ad08cc43fc458e1922f9bf0b" - integrity sha512-Eco+/R004UaCK2qEDE8vGklcTG2OeZSVm1kTUQNrykEjDwcFXDZhygFDsW49DbXyJMEhHeRL3z5cRVqPAhXlIw== - -pull-window@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/pull-window/-/pull-window-2.1.4.tgz#fc3b86feebd1920c7ae297691e23f705f88552f0" - integrity sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg== - dependencies: - looper "^2.0.0" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== -punycode@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" - integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== - punycode@^2.1.0, punycode@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" @@ -10605,6 +8639,13 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +qs@^6.4.0: + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + qs@^6.7.0: version "6.11.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f" @@ -10617,15 +8658,6 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" @@ -10641,11 +8673,6 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - radio-symbol@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/radio-symbol/-/radio-symbol-2.0.0.tgz#7aa9bfc50485636d52dd76d6a8e631b290799ae1" @@ -10655,21 +8682,13 @@ radio-symbol@^2.0.0: ansi-green "^0.1.1" is-windows "^1.0.1" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: +randombytes@^2.0.1, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -10733,14 +8752,6 @@ read-package-json@^6.0.0: normalize-package-data "^5.0.0" npm-normalize-package-bin "^3.0.0" -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" @@ -10758,15 +8769,6 @@ read-pkg-up@^7.0.1: read-pkg "^5.2.0" type-fest "^0.8.1" -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -10793,17 +8795,7 @@ read@^2.0.0: dependencies: mute-stream "~1.0.0" -readable-stream@^1.0.33: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -10816,7 +8808,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -10825,16 +8817,6 @@ readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@~1.0.15: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readdirp@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" @@ -10901,34 +8883,7 @@ reduce-flatten@^2.0.0: resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== -regenerate@^1.2.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: +regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== @@ -10937,50 +8892,42 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ== - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw== - dependencies: - jsesc "~0.5.0" - remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== +req-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-cwd/-/req-cwd-2.0.0.tgz#d4082b4d44598036640fb73ddea01ed53db49ebc" + integrity sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ== + dependencies: + req-from "^2.0.0" -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== +req-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-from/-/req-from-2.0.0.tgz#d74188e47f93796f4aa71df6ee35ae689f3e0e70" + integrity sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA== + dependencies: + resolve-from "^3.0.0" -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== dependencies: - is-finite "^1.0.0" + lodash "^4.17.19" -request@^2.79.0, request@^2.85.0: +request-promise-native@^1.0.5: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.85.0, request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -11011,31 +8958,16 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -require-from-string@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== - require-from-string@^2.0.0, require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -resolve-alpn@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -11048,16 +8980,16 @@ resolve-from@5.0.0, resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -11070,7 +9002,7 @@ resolve@1.17.0: dependencies: path-parse "^1.0.6" -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.8.1, resolve@~1.22.1: +resolve@^1.1.6, resolve@^1.10.0: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -11079,20 +9011,6 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.8.1, resolve@~1.22.1: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== - dependencies: - lowercase-keys "^1.0.0" - -responselike@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" - integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== - dependencies: - lowercase-keys "^2.0.0" - restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -11101,18 +9019,6 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -resumer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w== - dependencies: - through "~2.3.4" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" @@ -11123,7 +9029,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^2.2.8, rimraf@^2.6.3: +rimraf@^2.2.8: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -11152,7 +9058,14 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: +rlp@2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c" + integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== + dependencies: + bn.js "^4.11.1" + +rlp@^2.2.3, rlp@^2.2.4: version "2.2.7" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== @@ -11190,7 +9103,7 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -11200,13 +9113,6 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-event-emitter@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" - integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== - dependencies: - events "^3.0.0" - safe-regex-test@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" @@ -11216,13 +9122,6 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -11248,19 +9147,17 @@ sc-istanbul@^0.4.5: which "^1.1.1" wordwrap "^1.0.0" -scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: +scrypt-js@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" + integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== + +scrypt-js@3.0.1, scrypt-js@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== -scryptsy@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" - integrity sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw== - dependencies: - pbkdf2 "^3.0.3" - -secp256k1@^4.0.1: +secp256k1@4.0.3, secp256k1@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== @@ -11269,27 +9166,20 @@ secp256k1@^4.0.1: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -seedrandom@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.1.tgz#eb3dde015bcf55df05a233514e5df44ef9dce083" - integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== - -semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" - integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== +seedrandom@3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" + integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semaphore-async-await@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz#857bef5e3644601ca4b9570b87e9df5ca12974fa" + integrity sha512-b/ptP11hETwYWpeilHXXQiV5UJNJl7ZWWooKRE5eBIYWoom6dZ0SluCIdCtKycsMtZgKWE01/qAw6jblw1YVhg== -semver@7.3.4: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - dependencies: - lru-cache "^6.0.0" +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0, semver@^5.7.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@7.5.3: version "7.5.3" @@ -11303,25 +9193,13 @@ semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: - version "7.4.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.4.0.tgz#8481c92feffc531ab1e012a8ffc15bdd3a0f4318" - integrity sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw== - dependencies: - lru-cache "^6.0.0" - -semver@^7.5.3: +semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" -semver@~5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== - send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -11358,17 +9236,6 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -servify@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" - integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== - dependencies: - body-parser "^1.16.0" - cors "^2.8.1" - express "^4.14.0" - request "^2.79.0" - xhr "^2.3.3" - set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -11381,21 +9248,6 @@ set-getter@^0.1.0: dependencies: to-object-path "^0.3.0" -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ== - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - set-value@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-3.0.3.tgz#178e190d29cec6c086167222177b2fcb92f7ad56" @@ -11403,6 +9255,11 @@ set-value@^3.0.0: dependencies: is-plain-object "^2.0.4" +setimmediate@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" + integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== + setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -11421,6 +9278,14 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +sha1@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" + integrity sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA== + dependencies: + charenc ">= 0.0.1" + crypt ">= 0.0.1" + shallow-clone@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" @@ -11437,13 +9302,6 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -11451,11 +9309,6 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" @@ -11500,20 +9353,6 @@ sigstore@^1.3.0, sigstore@^1.4.0: "@sigstore/tuf" "^1.0.3" make-fetch-happen "^11.0.1" -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^2.7.0: - version "2.8.2" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" - integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== - dependencies: - decompress-response "^3.3.0" - once "^1.3.1" - simple-concat "^1.0.0" - sinon-chai@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.7.0.tgz#cfb7dec1c50990ed18c153f1840721cf13139783" @@ -11536,16 +9375,6 @@ slash@3.0.0, slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -11560,36 +9389,6 @@ smart-buffer@^4.2.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - socks-proxy-agent@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" @@ -11622,28 +9421,16 @@ solc@0.7.3: semver "^5.5.0" tmp "0.0.33" -solc@^0.4.20: - version "0.4.26" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.26.tgz#5390a62a99f40806b86258c737c1cf653cc35cb5" - integrity sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== - dependencies: - fs-extra "^0.30.0" - memorystream "^0.3.1" - require-from-string "^1.1.0" - semver "^5.3.0" - yargs "^4.7.1" - -solc@^0.6.3: - version "0.6.12" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.6.12.tgz#48ac854e0c729361b22a7483645077f58cba080e" - integrity sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g== +solc@0.8.15: + version "0.8.15" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.8.15.tgz#d274dca4d5a8b7d3c9295d4cbdc9291ee1c52152" + integrity sha512-Riv0GNHNk/SddN/JyEuFKwbcWcEeho15iyupTSHw5Np6WuXA5D8kEHbyzDHi6sqmvLzu2l+8b1YmL8Ytple+8w== dependencies: command-exists "^1.2.8" - commander "3.0.2" - fs-extra "^0.30.0" + commander "^8.1.0" + follow-redirects "^1.12.1" js-sha3 "0.8.0" memorystream "^0.3.1" - require-from-string "^2.0.0" semver "^5.5.0" tmp "0.0.33" @@ -11685,32 +9472,6 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@0.5.12: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - source-map-support@^0.5.13: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -11719,16 +9480,6 @@ source-map-support@^0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -11767,13 +9518,6 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - split2@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" @@ -11829,7 +9573,7 @@ stacktrace-parser@^0.1.10: dependencies: type-fest "^0.7.1" -static-extend@^0.1.1, static-extend@^0.1.2: +static-extend@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== @@ -11850,24 +9594,16 @@ stdout-stderr@^0.1.9: debug "^4.1.1" strip-ansi "^6.0.0" -stream-to-pull-stream@^1.7.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" - integrity sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg== - dependencies: - looper "^3.0.0" - pull-stream "^3.2.3" +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== - string-format@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" @@ -11882,16 +9618,7 @@ string-format@^2.0.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.0.0: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -11917,7 +9644,7 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.trim@^1.2.7, string.prototype.trim@~1.2.7: +string.prototype.trim@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== @@ -11951,11 +9678,6 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -11970,13 +9692,6 @@ string_decoder@~1.1.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" @@ -11998,13 +9713,6 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== - dependencies: - is-utf8 "^0.2.0" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -12077,11 +9785,6 @@ supports-color@8.1.1: dependencies: has-flag "^4.0.0" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== - supports-color@^3.1.0: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" @@ -12108,22 +9811,21 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -swarm-js@^0.1.40: - version "0.1.42" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979" - integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ== - dependencies: - bluebird "^3.5.0" - buffer "^5.0.5" - eth-lib "^0.1.26" - fs-extra "^4.0.2" - got "^11.8.5" - mime-types "^2.1.16" - mkdirp-promise "^5.0.1" - mock-fs "^4.1.0" - setimmediate "^1.0.5" - tar "^4.0.2" - xhr-request "^1.0.1" +sync-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" + integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== + dependencies: + http-response-object "^3.0.1" + sync-rpc "^1.2.1" + then-request "^6.0.0" + +sync-rpc@^1.2.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== + dependencies: + get-port "^3.1.0" table-layout@^1.0.2: version "1.0.2" @@ -12146,27 +9848,6 @@ table@^6.8.0: string-width "^4.2.3" strip-ansi "^6.0.1" -tape@^4.6.3: - version "4.16.2" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.16.2.tgz#7565e6af20426565557266e9dda7215869b297b6" - integrity sha512-TUChV+q0GxBBCEbfCYkGLkv8hDJYjMdSWdE0/Lr331sB389dsvFUHNV9ph5iQqKzt8Ss9drzcda/YeexclBFqg== - dependencies: - call-bind "~1.0.2" - deep-equal "~1.1.1" - defined "~1.0.1" - dotignore "~0.1.2" - for-each "~0.3.3" - glob "~7.2.3" - has "~1.0.3" - inherits "~2.0.4" - is-regex "~1.1.4" - minimist "~1.2.7" - object-inspect "~1.12.3" - resolve "~1.22.1" - resumer "~0.0.0" - string.prototype.trim "~1.2.7" - through "~2.3.8" - tar-stream@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" @@ -12190,19 +9871,6 @@ tar@6.1.11: mkdirp "^1.0.3" yallist "^4.0.0" -tar@^4.0.2: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== - dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" - tar@^6.1.11, tar@^6.1.2: version "6.1.13" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" @@ -12229,19 +9897,6 @@ terminal-paginator@^2.0.2: extend-shallow "^2.0.1" log-utils "^0.2.1" -test-value@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291" - integrity sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w== - dependencies: - array-back "^1.0.3" - typical "^2.6.0" - -testrpc@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/testrpc/-/testrpc-0.0.1.tgz#83e2195b1f5873aec7be1af8cbe6dcf39edb7aed" - integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== - text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" @@ -12252,7 +9907,24 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -through2@^2.0.0, through2@^2.0.3: +then-request@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" + integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== + 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" + +through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -12260,7 +9932,7 @@ through2@^2.0.0, through2@^2.0.3: readable-stream "~2.3.6" xtend "~4.0.1" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3.4, through@~2.3.8: +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== @@ -12270,11 +9942,6 @@ time-stamp@^1.0.1: resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" integrity sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw== -timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== - tiny-typed-emitter@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" @@ -12287,13 +9954,6 @@ tmp@0.0.33, tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmp@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" - integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== - dependencies: - rimraf "^2.6.3" - tmp@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -12301,11 +9961,6 @@ tmp@~0.2.1: dependencies: rimraf "^3.0.0" -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== - to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -12313,19 +9968,6 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -12333,16 +9975,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - toggle-array@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toggle-array/-/toggle-array-1.0.1.tgz#cbf5840792bd5097f33117ae824c932affe87d58" @@ -12355,7 +9987,7 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -tough-cookie@~2.5.0: +tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -12373,11 +10005,6 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== - ts-command-line-args@^2.2.0: version "2.5.0" resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.0.tgz#7eeed3a6937b2612ea08a0794cf9d43fbbea89c4" @@ -12389,37 +10016,12 @@ ts-command-line-args@^2.2.0: command-line-usage "^6.1.0" string-format "^2.0.0" -ts-essentials@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" - integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== - -ts-essentials@^6.0.3: - version "6.0.7" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-6.0.7.tgz#5f4880911b7581a873783740ce8b94da163d18a6" - integrity sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw== - ts-essentials@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== -ts-generator@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" - integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== - 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" - -ts-node@^10.9.1: +ts-node@^10.4.0, ts-node@^10.9.1: version "10.9.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== @@ -12485,7 +10087,7 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tweetnacl-util@^0.15.0, tweetnacl-util@^0.15.1: +tweetnacl-util@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== @@ -12495,7 +10097,7 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== -tweetnacl@^1.0.0, tweetnacl@^1.0.3: +tweetnacl@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== @@ -12572,18 +10174,21 @@ type@^2.7.2: resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== -typechain@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-3.0.0.tgz#d5a47700831f238e43f7429b987b4bb54849b92e" - integrity sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg== +typechain@^8.0.0: + version "8.3.1" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.1.tgz#dccbc839b94877997536c356380eff7325395cfb" + integrity sha512-fA7clol2IP/56yq6vkMTR+4URF1nGjV82Wx6Rf09EsqD4tkzMAvEaqYxVFCavJm/1xaRga/oD55K+4FtuXwQOQ== dependencies: - command-line-args "^4.0.7" - debug "^4.1.1" + "@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" - ts-essentials "^6.0.3" - ts-generator "^0.1.1" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" typechain@^8.1.1: version "8.1.1" @@ -12627,33 +10232,16 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== +typescript@^4.5.2: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + typescript@^5.0.4: version "5.0.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== -typewise-core@^1.2, typewise-core@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195" - integrity sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg== - -typewise@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/typewise/-/typewise-1.0.3.tgz#1067936540af97937cc5dcf9922486e9fa284651" - integrity sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ== - dependencies: - typewise-core "^1.2.0" - -typewiselite@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typewiselite/-/typewiselite-1.0.0.tgz#c8882fa1bb1092c06005a97f34ef5c8508e3664e" - integrity sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw== - -typical@^2.6.0, typical@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" - integrity sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg== - typical@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" @@ -12669,11 +10257,6 @@ uglify-js@^3.1.4: resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -12684,11 +10267,6 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -underscore@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" - integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== - undici@^5.14.0: version "5.21.2" resolved "https://registry.yarnpkg.com/undici/-/undici-5.21.2.tgz#329f628aaea3f1539a28b9325dccc72097d29acd" @@ -12696,16 +10274,6 @@ undici@^5.14.0: dependencies: busboy "^1.6.0" -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - unique-filename@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" @@ -12749,24 +10317,11 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unorm@^1.3.3: - version "1.6.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" - integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - upath@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" @@ -12779,23 +10334,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== - dependencies: - prepend-http "^2.0.0" - -url-set-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" - integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -12804,10 +10342,12 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +utf-8-validate@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.7.tgz#c15a19a6af1f7ad9ec7ddc425747ca28c3644922" + integrity sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q== + dependencies: + node-gyp-build "^4.3.0" utf-8-validate@^5.0.2: version "5.0.10" @@ -12816,7 +10356,7 @@ utf-8-validate@^5.0.2: dependencies: node-gyp-build "^4.3.0" -utf8@3.0.0, utf8@^3.0.0: +utf8@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== @@ -12826,26 +10366,15 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util.promisify@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" - integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - for-each "^0.3.3" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.1" - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" + integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== uuid@^3.3.2: version "3.4.0" @@ -12904,12 +10433,7 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" -varint@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" - integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== - -vary@^1, vary@~1.1.2: +vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== @@ -12935,259 +10459,20 @@ wcwidth@^1.0.0, wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -web3-bzz@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" - integrity sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg== - dependencies: - "@types/node" "^12.12.6" - got "9.6.0" - swarm-js "^0.1.40" - underscore "1.9.1" - -web3-core-helpers@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz#84c681ed0b942c0203f3b324a245a127e8c67a99" - integrity sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.11" - web3-utils "1.2.11" - -web3-core-method@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" - integrity sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw== - dependencies: - "@ethersproject/transactions" "^5.0.0-beta.135" - underscore "1.9.1" - web3-core-helpers "1.2.11" - web3-core-promievent "1.2.11" - web3-core-subscriptions "1.2.11" - web3-utils "1.2.11" - -web3-core-promievent@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" - integrity sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA== - dependencies: - eventemitter3 "4.0.4" - -web3-core-requestmanager@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" - integrity sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.11" - web3-providers-http "1.2.11" - web3-providers-ipc "1.2.11" - web3-providers-ws "1.2.11" - -web3-core-subscriptions@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" - integrity sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - -web3-core@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" - integrity sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ== - dependencies: - "@types/bn.js" "^4.11.5" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-requestmanager "1.2.11" - web3-utils "1.2.11" - -web3-eth-abi@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" - integrity sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg== - dependencies: - "@ethersproject/abi" "5.0.0-beta.153" - underscore "1.9.1" - web3-utils "1.2.11" - -web3-eth-accounts@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" - integrity sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw== - dependencies: - crypto-browserify "3.12.0" - eth-lib "0.2.8" - ethereumjs-common "^1.3.2" - ethereumjs-tx "^2.1.1" - scrypt-js "^3.0.1" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-utils "1.2.11" - -web3-eth-contract@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz#917065902bc27ce89da9a1da26e62ef663663b90" - integrity sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow== - dependencies: - "@types/bn.js" "^4.11.5" - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-promievent "1.2.11" - web3-core-subscriptions "1.2.11" - web3-eth-abi "1.2.11" - web3-utils "1.2.11" - -web3-eth-ens@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" - integrity sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-promievent "1.2.11" - web3-eth-abi "1.2.11" - web3-eth-contract "1.2.11" - web3-utils "1.2.11" - -web3-eth-iban@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz#f5f73298305bc7392e2f188bf38a7362b42144ef" - integrity sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ== - dependencies: - bn.js "^4.11.9" - web3-utils "1.2.11" - -web3-eth-personal@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" - integrity sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-net "1.2.11" - web3-utils "1.2.11" - -web3-eth@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.11.tgz#4c81fcb6285b8caf544058fba3ae802968fdc793" - integrity sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ== - dependencies: - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-subscriptions "1.2.11" - web3-eth-abi "1.2.11" - web3-eth-accounts "1.2.11" - web3-eth-contract "1.2.11" - web3-eth-ens "1.2.11" - web3-eth-iban "1.2.11" - web3-eth-personal "1.2.11" - web3-net "1.2.11" - web3-utils "1.2.11" - -web3-net@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.11.tgz#eda68ef25e5cdb64c96c39085cdb74669aabbe1b" - integrity sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg== - dependencies: - web3-core "1.2.11" - web3-core-method "1.2.11" - web3-utils "1.2.11" - -web3-provider-engine@14.2.1: - version "14.2.1" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz#ef351578797bf170e08d529cb5b02f8751329b95" - integrity sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw== - dependencies: - async "^2.5.0" - backoff "^2.5.0" - clone "^2.0.0" - cross-fetch "^2.1.0" - eth-block-tracker "^3.0.0" - eth-json-rpc-infura "^3.1.0" - eth-sig-util "^1.4.2" - ethereumjs-block "^1.2.2" - ethereumjs-tx "^1.2.0" - ethereumjs-util "^5.1.5" - ethereumjs-vm "^2.3.4" - json-rpc-error "^2.0.0" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - readable-stream "^2.2.9" - request "^2.85.0" - semaphore "^1.0.3" - ws "^5.1.1" - xhr "^2.2.0" - xtend "^4.0.1" - -web3-providers-http@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" - integrity sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA== - dependencies: - web3-core-helpers "1.2.11" - xhr2-cookies "1.1.0" - -web3-providers-ipc@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" - integrity sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ== - dependencies: - oboe "2.1.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - -web3-providers-ws@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" - integrity sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - websocket "^1.0.31" - -web3-shh@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" - integrity sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg== - dependencies: - web3-core "1.2.11" - web3-core-method "1.2.11" - web3-core-subscriptions "1.2.11" - web3-net "1.2.11" - -web3-utils@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" - integrity sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ== +web3-utils@^1.3.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.0.tgz#ca4c1b431a765c14ac7f773e92e0fd9377ccf578" + integrity sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg== dependencies: - bn.js "^4.11.9" - eth-lib "0.2.8" + bn.js "^5.2.1" ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" ethjs-unit "0.1.6" number-to-bn "1.7.0" randombytes "^2.1.0" - underscore "1.9.1" utf8 "3.0.0" -web3-utils@^1.0.0-beta.31, web3-utils@^1.3.6: +web3-utils@^1.3.6: version "1.9.0" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.9.0.tgz#7c5775a47586cefb4ad488831be8f6627be9283d" integrity sha512-p++69rCNNfu2jM9n5+VD/g26l+qkEOQ1m6cfRQCbH8ZRrtquTmrirJMgTmyOoax5a5XRYOuws14aypCOs51pdQ== @@ -13200,37 +10485,12 @@ web3-utils@^1.0.0-beta.31, web3-utils@^1.3.6: randombytes "^2.1.0" utf8 "3.0.0" -web3@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" - integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== - dependencies: - web3-bzz "1.2.11" - web3-core "1.2.11" - web3-eth "1.2.11" - web3-eth-personal "1.2.11" - web3-net "1.2.11" - web3-shh "1.2.11" - web3-utils "1.2.11" - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -websocket@1.0.32: - version "1.0.32" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" - integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== - dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" - -websocket@^1.0.31, websocket@^1.0.34: +websocket@^1.0.34: version "1.0.34" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== @@ -13242,11 +10502,6 @@ websocket@^1.0.31, websocket@^1.0.34: utf-8-validate "^5.0.2" yaeti "^0.0.6" -whatwg-fetch@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" - integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -13266,11 +10521,6 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -13288,14 +10538,14 @@ which-typed-array@^1.1.9: has-tostringtag "^1.0.0" is-typed-array "^1.1.10" -which@1.3.1, which@^1.1.1, which@^1.2.9, which@^1.3.1: +which@1.3.1, which@^1.1.1, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@2.0.2, which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -13323,11 +10573,6 @@ wide-align@^1.1.5: dependencies: string-width "^1.0.2 || 2 || 3 || 4" -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" - integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== - window-size@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/window-size/-/window-size-1.1.1.tgz#9858586580ada78ab26ecd6978a6e03115c1af20" @@ -13337,9 +10582,9 @@ window-size@^1.1.0: is-number "^3.0.0" word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + version "1.2.4" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" + integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== wordwrap@^1.0.0: version "1.0.0" @@ -13354,6 +10599,11 @@ wordwrapjs@^4.0.0: reduce-flatten "^2.0.0" typical "^5.2.0" +workerpool@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== + workerpool@6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" @@ -13368,14 +10618,6 @@ workerpool@6.2.1: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -13442,22 +10684,6 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^3.0.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -ws@^5.1.1: - version "5.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" - integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== - dependencies: - async-limiter "~1.0.0" - ws@^7.4.1, ws@^7.4.5, ws@^7.4.6: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" @@ -13468,60 +10694,16 @@ ws@^8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== -xhr-request-promise@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" - integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== - dependencies: - xhr-request "^1.1.0" - -xhr-request@^1.0.1, xhr-request@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" - integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== - dependencies: - buffer-to-arraybuffer "^0.0.5" - object-assign "^4.1.1" - query-string "^5.0.1" - simple-get "^2.7.0" - timed-out "^4.0.1" - url-set-query "^1.0.0" - xhr "^2.0.4" - -xhr2-cookies@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" - integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== - dependencies: - cookiejar "^2.1.1" - -xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: - version "2.6.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" - integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== - dependencies: - global "~4.4.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" +xmlhttprequest@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -xtend@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== - dependencies: - object-keys "~0.4.0" - -y18n@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" - integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" @@ -13537,7 +10719,7 @@ yaeti@^0.0.6: resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -13547,11 +10729,6 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - yargs-parser@13.1.2, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" @@ -13570,14 +10747,6 @@ yargs-parser@21.1.1, yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-parser@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" - integrity sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA== - dependencies: - camelcase "^3.0.0" - lodash.assign "^4.0.6" - yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" @@ -13644,26 +10813,6 @@ yargs@^17.6.2: y18n "^5.0.5" yargs-parser "^21.1.1" -yargs@^4.7.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" - integrity sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA== - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - lodash.assign "^4.0.3" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.1" - which-module "^1.0.0" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^2.4.1" - yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"